Rmengdi 11 kuukautta sitten
vanhempi
sitoutus
e528f2924c

+ 21 - 0
src/api/als/personnelAllocation.js

@@ -0,0 +1,21 @@
+import { get, put, post, deletes } from '@/http/index'
+
+// 查询飞机构型列表
+export const getPersonnelAllocation = async (data) => {
+  return await get('/als/personnelAllocation/list', data)
+}
+
+// 新增飞机构型
+export const addPersonnelAllocation = async (data) => {
+  return await post('/als/personnelAllocation', data)
+}
+
+// 修改飞机构型
+export const updatePersonnelAllocation = async (data) => {
+  return await put('/als/personnelAllocation', data)
+}
+
+// 删除飞机构型
+export const removePersonnelAllocation = async (id) => {
+  return await deletes('/als/personnelAllocation/' + id)
+}

+ 21 - 0
src/api/als/resourceAllocation.js

@@ -0,0 +1,21 @@
+import { get, put, post, deletes } from '@/http/index'
+
+// 查询飞机构型列表
+export const getResourceAllocation = async (data) => {
+  return await get('/als/resourceAllocation/list', data)
+}
+
+// 新增飞机构型
+export const addResourceAllocation = async (data) => {
+  return await post('/als/resourceAllocation', data)
+}
+
+// 修改飞机构型
+export const updateResourceAllocation = async (data) => {
+  return await put('/als/resourceAllocation', data)
+}
+
+// 删除飞机构型
+export const removeResourceAllocation = async (id) => {
+  return await deletes('/als/resourceAllocation/' + id)
+}

+ 39 - 1
src/router/modules/als/dataManage.js

@@ -112,13 +112,22 @@ export const maintenanceask = {
       meta: {
         title: '维修任务'
       }
+    },
+    {
+      path: '/dataManage/maintenanceask/viewDetails',
+      component: () => import('@/views/als/maintenanceask/viewDetails.vue'),
+      name: 'ViewDetails',
+      meta: {
+        title: '任务分配',
+        hide: true
+      }
     }
   ]
 }
 export const smTask = {
   path: '/dataManage',
   redirect: '/dataManage/smTask',
-  name: 'MaintenanceRecord',
+  name: 'SmTask',
   component: Layout,
   meta: {
     title: '业务数据管理',
@@ -131,6 +140,15 @@ export const smTask = {
       meta: {
         title: '定检任务'
       }
+    },
+    {
+      path: '/dataManage/smTask/SMTaskDetails',
+      component: () => import('@/views/als/smTask/SMTaskDetails.vue'),
+      name: 'SMTaskDetails',
+      meta: {
+        title: '任务分配',
+        hide: true
+      }
     }
   ]
 }
@@ -153,6 +171,26 @@ export const partReplacement = {
     }
   ]
 }
+
+export const warning = {
+  path: '/dataManage',
+  redirect: '/dataManage/warning',
+  name: 'warning',
+  component: Layout,
+  meta: {
+    title: '业务数据管理',
+    icon: 'el-icon-s-platform'
+  },
+  children: [
+    {
+      path: '/dataManage/warning',
+      component: () => import('@/views/als/warning/index.vue'),
+      meta: {
+        title: '警告列表'
+      }
+    }
+  ]
+}
 export const airConfiguration = {
   path: '/dataManage',
   redirect: '/dataManage/airConfiguration',

+ 1 - 1
src/views/als/MDCData/index.vue

@@ -218,7 +218,7 @@ export default {
       const { data: data2 } = await getAircaftCatalogAll(getAircaftCatalogAllParams)
       this.aircaftCatalogAll = data2
       if (data.length) {
-        this.currentNodeKey = data[0].value
+        this.currentNodeKey = data[0].id
         this.currentNode = data[0]
         this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children)
           .map((e) => e.id)

+ 1 - 1
src/views/als/airInstall/index.vue

@@ -400,7 +400,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/aircraft/index.vue

@@ -311,7 +311,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/dataImport/index.vue

@@ -323,7 +323,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 119 - 67
src/views/als/falseAlarm/index.vue

@@ -5,7 +5,10 @@
     </div>
     <div class="view-dataSpecies-right">
       <div class="view-dataType-title">
-        <div class="view-dataType-title-btn"></div>
+        <div class="view-dataType-title-btn">
+          <el-button type="success" @click="openDialog()" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)">新增</el-button>
+          <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
+        </div>
         <div class="view-dataType-title-search">
           <el-input placeholder="请输入关键字" v-model="keyWordData" class="input1">
             <el-button slot="append" icon="el-icon-search" @click="searchClick" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)"></el-button>
@@ -16,19 +19,39 @@
         <LTable ref="table" @selection-change="selection" :defaultFetch="false" :fetch="fetch" :columns="columns" :dataSource="tableData" :options="options" :pagination="tableRequset"></LTable>
       </div>
       <!-- 添加或修改虚警抑制对话框 -->
-      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
+      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800px" :before-close="handleClose">
         <el-form ref="form" :model="form" label-width="80px">
+          <el-form-item label="编目" prop="aircraftId">
+            <el-select v-model="form.aircraftId" placeholder="请选择编目" @change="changeAircraftId(form.aircraftId)">
+              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="架次号" prop="sortieNo">
-            <el-input v-model="form.sortieNo" placeholder="请输入架次号" />
+            <el-select v-model="form.sortieNo" @change="changeSortieNo(form.sortieNo)" placeholder="请选择架次号">
+              <el-option v-for="item in sortieNoList" :key="item.id" :label="item.sortieNo" :value="item.id"> </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="虚警类型" prop="falseAlarmType">
+            <el-select v-model="form.falseAlarmType" placeholder="请选择虚警类型">
+              <el-option v-for="item in falseAlarmTypeList" :key="item.id" :label="item.name" :value="item.id"> </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="模型类型">
+            <el-select v-model="form.modelType" placeholder="请选择模型类型" @change="changeModelType(form.modelType)">
+              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
           </el-form-item>
-          <el-form-item label="机号" prop="aircraftId">
-            <el-input v-model="form.aircraftId" placeholder="请输入机号" />
+          <el-form-item label="模型名称">
+            <el-select v-model="form.modelName" placeholder="模型名称">
+              <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
           </el-form-item>
           <el-form-item label="参数" prop="param">
             <el-input v-model="form.param" placeholder="请输入参数" />
           </el-form-item>
           <el-form-item label="数据列" prop="columnData">
-            <el-input v-model="form.columnData" placeholder="请输入数据列" />
+            <!-- <el-input v-model="form.columnData" placeholder="请输入数据列" /> -->
+            <el-transfer v-model="form.columnData" :data="transferData"></el-transfer>
           </el-form-item>
           <el-form-item label="文件Id" prop="ossId">
             <el-input v-model="form.ossId" placeholder="请输入文件Id" />
@@ -40,42 +63,28 @@
           <el-button type="primary" @click="submit">确 定</el-button>
         </span>
       </el-dialog>
-      <!-- 算法执行页面 -->
-      <el-dialog title="选择算法" :visible.sync="executeVisible" width="800px" :before-close="handleClose">
-        <el-form :inline="true" :model="agloForm" class="demo-form-inline">
-          <el-form-item label="算法类型">
-            <el-select v-model="agloForm.agloType" placeholder="请选择算法类型" @change="changeAgloType(agloForm.agloType)">
-              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="算法名称">
-            <el-select v-model="agloForm.agloName" placeholder="算法名称">
-              <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="选择参数">
-            <el-transfer v-model="agloForm.paramsList" :data="transferData"></el-transfer>
-          </el-form-item>
-        </el-form>
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="handleClose">取 消</el-button>
-          <el-button type="primary" @click="beginExecute">开始执行</el-button>
-        </span>
-      </el-dialog>
       <el-dialog title="执行进度" :visible.sync="progressVisible" width="800px" :before-close="handleClose">
         <el-progress :text-inside="true" :stroke-width="24" :percentage="percentage" status="success"></el-progress>
       </el-dialog>
+      <el-dialog title="结果展示" :visible.sync="resultVisible" width="800px">
+        展示结果
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="resultVisible = false">取 消</el-button>
+          <el-button type="primary" @click="resultVisible = false">确 定</el-button>
+        </span>
+      </el-dialog>
     </div>
   </div>
 </template>
 
 <script>
 import { getFalseAlarm, addFalseAlarm, updateFalseAlarm, removeFalseAlarm } from '@/api/als/falseAlarm'
-import { getAircaftCatalogTree, getAircaftTypeAndModelTree } from '@/api/als/sideTree'
+import { getAircaftCatalogTree } from '@/api/als/sideTree'
 import { getAircaftCatalogAll } from '@/api/als/aircraft'
 import { getDataImport } from '@/api/als/dataImport'
 import { getModel } from '@/api/als/model'
 import { deepClone, debounce } from '@/utils/index'
+import { getWarning } from '@/api/als/warning'
 export default {
   name: 'FalseAlarm',
   components: {},
@@ -84,8 +93,8 @@ export default {
     return {
       dialogTitle: '新增',
       dialogVisible: false,
-      executeVisible: false,
       progressVisible: false,
+      resultVisible: false,
       keyWordData: '',
       aircaftModelIdList: [],
       currentNodeKey: '',
@@ -208,7 +217,7 @@ export default {
         aircraftId: '',
         modelType: '',
         param: '',
-        columnData: '',
+        columnData: [],
         ossId: '',
         status: '',
         tenantId: '',
@@ -224,7 +233,9 @@ export default {
       transferData: [],
       algoTypeList: [{ id: 4, name: '虚警抑制' }],
       algoNameList: [],
-      percentage: 0
+      percentage: 0,
+      sortieNoList: [],
+      falseAlarmTypeList: []
     }
   },
   watch: {
@@ -247,10 +258,14 @@ export default {
       const { data: data2 } = await getAircaftCatalogAll(getAircaftCatalogAllParams)
       this.aircaftCatalogAll = data2
       if (data.length) {
-        this.currentNodeKey = data[0].value
+        this.currentNodeKey = data[0].id
         this.currentNode = data[0]
+        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children)
+          .map((e) => e.id)
+          .toString()
+        this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
         // this.getFalseAlarmAPI()
-        this.getDataImportAPI()
+        // this.getDataImportAPI()
       }
     },
 
@@ -262,7 +277,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          await this.getFalseAlarmAPI(this.currentNodeKey)
+          await this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
           this.handleClose()
         }
       } catch (error) {}
@@ -290,7 +305,7 @@ export default {
       const { pageSize, pageIndex } = this.tableRequset
       const {
         data: { list, totalCount }
-      } = await getFalseAlarm({ pageSize, pageIndex, aircraftId: params })
+      } = await getFalseAlarm({ pageSize, pageIndex, ...params })
       this.tableData = list
       this.tableRequset.total = totalCount
     },
@@ -299,26 +314,17 @@ export default {
       const { pageSize, pageIndex } = this.tableRequset
       const {
         data: { list, totalCount }
-      } = await getDataImport({ pageSize, pageIndex, aircraftId: params })
+      } = await getDataImport({ pageSize, pageIndex, ...params })
       this.tableData = list
       this.tableRequset.total = totalCount
     },
 
     fetch() {
-      this.getFalseAlarmAPI(this.currentNodeKey)
+      this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     async searchClick() {
-      // this.getFalseAlarmAPI(this.currentNodeKey)
-      if (this.keyWordData && this.currentNodeKey !== 'quanbu') {
-        const {
-          data: { list, totalCount }
-        } = await getDataImport({ aircraftId: this.currentNodeKey, sortieNo: this.keyWordData })
-        this.tableData = list
-        this.tableRequset.total = totalCount
-      } else {
-        this.getDataImportAPI(this.currentNodeKey)
-      }
+      this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList, sortieNo: this.keyWordData })
     },
 
     async addFalseAlarmAPI() {
@@ -330,7 +336,21 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getFalseAlarmAPI(this.currentNodeKey)
+          this.dialogVisible = false
+          this.progressVisible = true
+          const myTimer = setInterval(() => {
+            if (this.percentage < 100) {
+              this.percentage += 1
+            } else {
+              this.progressVisible = false
+              this.percentage = 0
+              clearInterval(myTimer)
+              // this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+              this.handleClose()
+              this.resultVisible = true
+            }
+          }, 30)
+          this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
@@ -343,31 +363,49 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getFalseAlarmAPI(this.currentNodeKey)
+          this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
 
     treeNodeClick(data) {
       this.$refs.table.clearSelection()
-      this.currentNodeKey = data.id
+      this.currentNodeKey = this.form.aircraftId = data.id
       this.currentNode = data
-      this.getDataImportAPI(this.currentNodeKey)
+      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
+        .map((e) => e.id)
+        .toString()
+      this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircaftModelName = this.currentNode.label
-      this.form.aircaftModelId = this.currentNode.id
+      // this.form.aircaftModelName = this.currentNode.label
+      // this.form.aircaftModelId = this.currentNode.id
+      if (this.form.aircraftId !== '') {
+        this.changeAircraftId(this.form.aircraftId)
+      }
     },
 
     handleClose() {
-      this.executeVisible = false
-      this.agloForm = {
-        agloType: '',
-        agloName: '',
-        paramsList: []
+      this.dialogVisible = false
+      this.form = {
+        id: '',
+        sortieNo: '',
+        aircraftId: '',
+        modelType: '',
+        param: '',
+        columnData: '',
+        ossId: '',
+        status: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
       }
     },
 
@@ -377,19 +415,21 @@ export default {
       this.dialogVisible = true
     },
     checkResultList(row) {
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
+      this.form = deepClone(row)
+      this.resultVisible = true
+      // this.agloForm.sortieNo = row.sortieNo
+      // this.agloForm.aircraftId = row.aircraftId
       // this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
     },
     executeAglo(row) {
-      this.executeVisible = true
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
+      // this.executeVisible = true
+      // this.agloForm.sortieNo = row.sortieNo
+      // this.agloForm.aircraftId = row.aircraftId
     },
     beginExecute() {
-      // 调用算法接口
+      // 调用模型接口
 
-      this.executeVisible = false
+      // this.executeVisible = false
       this.progressVisible = true
       const myTimer = setInterval(() => {
         if (this.percentage < 100) {
@@ -409,6 +449,18 @@ export default {
       } = await getModel({ type })
       this.algoNameList = list
     },
+    async changeAircraftId(aircraftId) {
+      const {
+        data: { list }
+      } = await getDataImport({ aircraftId })
+      this.sortieNoList = list
+    },
+    async changeSortieNo(sortieNo) {
+      const {
+        data: { list }
+      } = await getWarning({ aircraftId: this.form.aircraftId, sortieNo })
+      this.falseAlarmTypeList = list
+    },
     submit() {
       switch (this.dialogTitle) {
         case '编辑':
@@ -427,7 +479,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/falseAlarmResult/index.vue

@@ -332,7 +332,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/faultConsumable/index.vue

@@ -308,7 +308,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 109 - 93
src/views/als/faultDiagnosis/index.vue

@@ -5,7 +5,10 @@
     </div>
     <div class="view-dataSpecies-right">
       <div class="view-dataType-title">
-        <div class="view-dataType-title-btn"></div>
+        <div class="view-dataType-title-btn">
+          <el-button type="success" @click="openDialog()" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)">新增</el-button>
+          <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
+        </div>
         <div class="view-dataType-title-search">
           <el-input placeholder="请输入架次号" v-model="keyWordData" class="input1">
             <el-button slot="append" icon="el-icon-search" @click="searchClick" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)"></el-button>
@@ -16,73 +19,64 @@
         <LTable ref="table" @selection-change="selection" :defaultFetch="false" :fetch="fetch" :columns="columns" :dataSource="tableData" :options="options" :pagination="tableRequset"></LTable>
       </div>
       <!-- 添加或修改故障诊断对话框 -->
-      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
+      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800px" :before-close="handleClose">
         <el-form ref="form" :model="form" label-width="80px">
+          <el-form-item label="编目" prop="aircraftId">
+            <el-select v-model="form.aircraftId" placeholder="请选择编目" @change="changeAircraftId(form.aircraftId)">
+              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="架次号" prop="sortieNo">
-            <el-input v-model="form.sortieNo" placeholder="请输入架次号" />
+            <el-select v-model="form.sortieNo" placeholder="请选择架次号">
+              <el-option v-for="item in sortieNoList" :key="item.id" :label="item.sortieNo" :value="item.id"> </el-option>
+            </el-select>
           </el-form-item>
-          <el-form-item label="机号" prop="aircraftId">
-            <el-input v-model="form.aircraftId" placeholder="请输入机号" />
+          <el-form-item label="模型类型">
+            <el-select v-model="form.modelType" placeholder="请选择模型类型" @change="changeModelType(form.modelType)">
+              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="模型名称">
+            <el-select v-model="form.modelName" placeholder="模型名称">
+              <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
           </el-form-item>
           <el-form-item label="参数" prop="param">
             <el-input v-model="form.param" placeholder="请输入参数" />
           </el-form-item>
           <el-form-item label="数据列" prop="columnData">
-            <el-input v-model="form.columnData" placeholder="请输入数据列" />
+            <!-- <el-input v-model="form.columnData" placeholder="请输入数据列" /> -->
+            <el-transfer v-model="form.columnData" :data="transferData"></el-transfer>
           </el-form-item>
           <el-form-item label="文件Id" prop="ossId">
             <el-input v-model="form.ossId" placeholder="请输入文件Id" />
           </el-form-item>
           <el-form-item label="结果">
-            <editor v-model="form.resultContent" :min-height="192" />
-          </el-form-item>
-          <el-form-item label="模型类型" prop="modelType1">
-            <el-input v-model="form.modelType1" placeholder="请输入模型类型" />
-          </el-form-item>
-          <el-form-item label="参数" prop="param1">
-            <el-input v-model="form.param1" placeholder="请输入参数" />
-          </el-form-item>
-          <el-form-item label="数据列" prop="columnData1">
-            <el-input v-model="form.columnData1" placeholder="请输入数据列" />
+            <!-- <editor v-model="form.resultContent" :min-height="192" /> -->
           </el-form-item>
         </el-form>
-
         <span slot="footer" class="dialog-footer">
           <el-button @click="handleClose">取 消</el-button>
           <el-button type="primary" @click="submit">确 定</el-button>
         </span>
       </el-dialog>
-      <el-dialog title="选择算法" :visible.sync="executeVisible" width="800px" :before-close="handleClose">
-        <el-form :inline="true" :model="agloForm" class="demo-form-inline">
-          <el-form-item label="算法类型">
-            <el-select v-model="agloForm.agloType" placeholder="请选择算法类型" @change="changeAgloType(agloForm.agloType)">
-              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="算法名称">
-            <el-select v-model="agloForm.agloName" placeholder="算法名称">
-              <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="选择参数">
-            <el-transfer v-model="agloForm.paramsList" :data="transferData"></el-transfer>
-          </el-form-item>
-        </el-form>
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="handleClose">取 消</el-button>
-          <el-button type="primary" @click="beginExecute">开始执行</el-button>
-        </span>
-      </el-dialog>
       <el-dialog title="执行进度" :visible.sync="progressVisible" width="800px" :before-close="handleClose">
         <el-progress :text-inside="true" :stroke-width="24" :percentage="percentage" status="success"></el-progress>
       </el-dialog>
+      <el-dialog title="结果展示" :visible.sync="resultVisible" width="800px">
+        展示结果
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="resultVisible = false">取 消</el-button>
+          <el-button type="primary" @click="resultVisible = false">确 定</el-button>
+        </span>
+      </el-dialog>
     </div>
   </div>
 </template>
 
 <script>
 import { getFaultDiagnosis, addFaultDiagnosis, updateFaultDiagnosis, removeFaultDiagnosis } from '@/api/als/faultDiagnosis'
-import { getAircaftCatalogTree, getAircaftTypeAndModelTree } from '@/api/als/sideTree'
+import { getAircaftCatalogTree } from '@/api/als/sideTree'
 import { deepClone, debounce } from '@/utils/index'
 import { getAircaftCatalogAll } from '@/api/als/aircraft'
 import { getDataImport } from '@/api/als/dataImport'
@@ -95,7 +89,7 @@ export default {
     return {
       dialogTitle: '新增',
       dialogVisible: false,
-      executeVisible: false,
+      resultVisible: false,
       progressVisible: false,
       keyWordData: '',
       aircaftModelIdList: [],
@@ -228,7 +222,7 @@ export default {
         aircraftId: '',
         modelType: '',
         param: '',
-        columnData: '',
+        columnData: [],
         ossId: '',
         resultContent: '',
         status: '',
@@ -238,10 +232,7 @@ export default {
         createBy: '',
         createTime: '',
         updateBy: '',
-        updateTime: '',
-        modelType1: '',
-        param1: '',
-        columnData1: ''
+        updateTime: ''
       },
       debounceFn: debounce(this.fetch, 500),
       agloForm: {
@@ -255,7 +246,8 @@ export default {
       transferData: [],
       algoTypeList: [{ id: 5, name: '故障诊断' }],
       algoNameList: [],
-      percentage: 0
+      percentage: 0,
+      sortieNoList: []
     }
   },
   watch: {
@@ -278,10 +270,13 @@ export default {
       const { data: data2 } = await getAircaftCatalogAll(getAircaftCatalogAllParams)
       this.aircaftCatalogAll = data2
       if (data.length) {
-        this.currentNodeKey = data[0].value
+        this.currentNodeKey = data[0].id
         this.currentNode = data[0]
-        // this.getFaultDiagnosisAPI()
-        this.getDataImportAPI()
+        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children)
+          .map((e) => e.id)
+          .toString()
+        this.getFaultDiagnosisAPI({ aircraftId: this.aircaftModelIdList })
+        // this.getDataImportAPI()
       }
     },
 
@@ -293,7 +288,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          await this.getFaultDiagnosisAPI(this.currentNodeKey)
+          await this.getFaultDiagnosisAPI({ aircraftId: this.aircaftModelIdList })
           this.handleClose()
         }
       } catch (error) {}
@@ -321,16 +316,7 @@ export default {
       const { pageSize, pageIndex } = this.tableRequset
       const {
         data: { list, totalCount }
-      } = await getFaultDiagnosis({ pageSize, pageIndex, aircraftId: params })
-      this.tableData = list
-      this.tableRequset.total = totalCount
-    },
-    async getDataImportAPI(params) {
-      if (this.$refs.table) this.$refs.table.clearSelection()
-      const { pageSize, pageIndex } = this.tableRequset
-      const {
-        data: { list, totalCount }
-      } = await getDataImport({ pageSize, pageIndex, aircraftId: params })
+      } = await getFaultDiagnosis({ pageSize, pageIndex, ...params })
       this.tableData = list
       this.tableRequset.total = totalCount
     },
@@ -339,17 +325,8 @@ export default {
       this.getFaultDiagnosisAPI(this.currentNodeKey)
     },
 
-    async searchClick() {
-      // this.getFaultDiagnosisAPI(this.currentNodeKey)
-      if (this.keyWordData && this.currentNodeKey !== 'quanbu') {
-        const {
-          data: { list, totalCount }
-        } = await getDataImport({ aircraftId: this.currentNodeKey, sortieNo: this.keyWordData })
-        this.tableData = list
-        this.tableRequset.total = totalCount
-      } else {
-        this.getDataImportAPI(this.currentNodeKey)
-      }
+    searchClick() {
+      this.getFaultDiagnosisAPI({ aircraftId: this.aircaftModelIdList, sortieNo: this.keyWordData })
     },
 
     async addFaultDiagnosisAPI() {
@@ -361,7 +338,22 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getFaultDiagnosisAPI(this.currentNodeKey)
+          this.dialogVisible = false
+          this.progressVisible = true
+          const myTimer = setInterval(() => {
+            if (this.percentage < 100) {
+              this.percentage += 1
+            } else {
+              this.progressVisible = false
+              this.percentage = 0
+              clearInterval(myTimer)
+              this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+              this.handleClose()
+              // 调用完数据再展示
+              this.resultVisible = true
+            }
+          }, 30)
+          this.getFaultDiagnosisAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
@@ -374,31 +366,49 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getFaultDiagnosisAPI(this.currentNodeKey)
+          this.getFaultDiagnosisAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
 
     treeNodeClick(data) {
       this.$refs.table.clearSelection()
-      this.currentNodeKey = data.id
+      this.currentNodeKey = this.form.aircraftId = data.id
       this.currentNode = data
-      this.getDataImportAPI(this.currentNodeKey)
+      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
+        .map((e) => e.id)
+        .toString()
+      this.getFaultDiagnosisAPI({ aircraftId: this.aircaftModelIdList })
+      // this.getDataImportAPI(this.currentNodeKey)
     },
 
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircaftModelName = this.currentNode.label
-      this.form.aircaftModelId = this.currentNode.id
+      if (this.form.aircraftId !== '') {
+        this.changeAircraftId(this.form.aircraftId)
+      }
     },
 
     handleClose() {
-      this.executeVisible = false
-      this.agloForm = {
-        agloType: '',
-        agloName: '',
-        paramsList: []
+      this.dialogVisible = false
+      this.form = {
+        id: '',
+        sortieNo: '',
+        aircraftId: '',
+        modelType: '',
+        param: '',
+        columnData: [],
+        ossId: '',
+        resultContent: '',
+        status: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
       }
     },
 
@@ -409,19 +419,18 @@ export default {
     },
 
     checkResultList(row) {
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
-      this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+      this.form = deepClone(row)
+      this.resultVisible = true
     },
     executeAglo(row) {
-      this.executeVisible = true
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
+      // this.executeVisible = true
+      // this.agloForm.sortieNo = row.sortieNo
+      // this.agloForm.aircraftId = row.aircraftId
     },
     beginExecute() {
-      // 调用算法接口
+      // 调用模型接口
 
-      this.executeVisible = false
+      // this.executeVisible = false
       this.progressVisible = true
       const myTimer = setInterval(() => {
         if (this.percentage < 100) {
@@ -430,18 +439,25 @@ export default {
           this.progressVisible = false
           this.percentage = 0
           clearInterval(myTimer)
-          this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+          // this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
           this.handleClose()
         }
       }, 30)
     },
-    async changeAgloType(type) {
+    async changeModelType(type) {
       const {
         data: { list }
       } = await getModel({ type })
       this.algoNameList = list
     },
 
+    async changeAircraftId(aircraftId) {
+      const {
+        data: { list }
+      } = await getDataImport({ aircraftId })
+      this.sortieNoList = list
+    },
+
     submit() {
       switch (this.dialogTitle) {
         case '编辑':
@@ -460,7 +476,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/faultDiagnosisResult/index.vue

@@ -305,7 +305,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 72 - 80
src/views/als/lifePrediction/index.vue

@@ -5,7 +5,12 @@
     </div>
     <div class="view-dataSpecies-right">
       <div class="view-dataType-title">
-        <div class="view-dataType-title-btn"></div>
+        <div class="view-dataType-title-btn">
+          <div class="view-dataType-title-btn">
+            <el-button type="success" @click="openDialog()" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)">新增</el-button>
+            <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
+          </div>
+        </div>
         <div class="view-dataType-title-search">
           <el-input placeholder="请输入关键字" v-model="keyWordData" class="input1">
             <el-button slot="append" icon="el-icon-search" @click="searchClick" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)"></el-button>
@@ -18,8 +23,10 @@
       <!-- 添加或修改寿命预测对话框 -->
       <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
         <el-form ref="form" :model="form" label-width="80px">
-          <el-form-item label="机号" prop="aircraftId">
-            <el-input v-model="form.aircraftId" placeholder="请输入机号" />
+          <el-form-item label="编目" prop="aircraftId">
+            <el-select v-model="form.aircraftId" placeholder="请选择编目">
+              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="部件名称" prop="name">
             <el-input v-model="form.name" placeholder="请输入部件名称" />
@@ -30,9 +37,10 @@
           <el-form-item label="所属系统" prop="system">
             <el-input v-model="form.system" placeholder="请输入所属系统" />
           </el-form-item>
-          <el-form-item label="剩余时长" prop="remainTiem">
+
+          <!-- <el-form-item label="剩余时长" prop="remainTiem">
             <el-input v-model="form.remainTiem" placeholder="请输入剩余时长" />
-          </el-form-item>
+          </el-form-item> -->
         </el-form>
 
         <span slot="footer" class="dialog-footer">
@@ -40,38 +48,23 @@
           <el-button type="primary" @click="submit">确 定</el-button>
         </span>
       </el-dialog>
-
-      <el-dialog title="选择算法" :visible.sync="executeVisible" width="800px" :before-close="handleClose">
-        <el-form :inline="true" :model="agloForm" class="demo-form-inline">
-          <el-form-item label="算法类型">
-            <el-select v-model="agloForm.agloType" placeholder="请选择算法类型" @change="changeAgloType(agloForm.agloType)">
-              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="算法名称">
-            <el-select v-model="agloForm.agloName" placeholder="算法名称">
-              <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="选择参数">
-            <el-transfer v-model="agloForm.paramsList" :data="transferData"></el-transfer>
-          </el-form-item>
-        </el-form>
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="handleClose">取 消</el-button>
-          <el-button type="primary" @click="beginExecute">开始执行</el-button>
-        </span>
-      </el-dialog>
       <el-dialog title="执行进度" :visible.sync="progressVisible" width="800px" :before-close="handleClose">
         <el-progress :text-inside="true" :stroke-width="24" :percentage="percentage" status="success"></el-progress>
       </el-dialog>
+      <el-dialog title="结果展示" :visible.sync="resultVisible" width="800px">
+        展示结果
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="resultVisible = false">取 消</el-button>
+          <el-button type="primary" @click="resultVisible = false">确 定</el-button>
+        </span>
+      </el-dialog>
     </div>
   </div>
 </template>
 
 <script>
 import { getLifePrediction, addLifePrediction, updateLifePrediction, removeLifePrediction } from '@/api/als/lifePrediction'
-import { getAircaftCatalogTree, getAircaftTypeAndModelTree } from '@/api/als/sideTree'
+import { getAircaftCatalogTree } from '@/api/als/sideTree'
 import { deepClone, debounce } from '@/utils/index'
 import { getDataImport } from '@/api/als/dataImport'
 import { getModel } from '@/api/als/model'
@@ -84,7 +77,7 @@ export default {
     return {
       dialogTitle: '新增',
       dialogVisible: false,
-      executeVisible: false,
+      resultVisible: false,
       progressVisible: false,
       keyWordData: '',
       aircaftModelIdList: [],
@@ -251,10 +244,14 @@ export default {
       const { data: data2 } = await getAircaftCatalogAll(getAircaftCatalogAllParams)
       this.aircaftCatalogAll = data2
       if (data.length) {
-        this.currentNodeKey = data[0].value
+        this.currentNodeKey = data[0].id
         this.currentNode = data[0]
+        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children)
+          .map((e) => e.id)
+          .toString()
+        this.getLifePredictionAPI({ aircraftId: this.aircaftModelIdList })
         // this.getLifePredictionAPI()
-        this.getDataImportAPI()
+        // this.getDataImportAPI()
       }
     },
 
@@ -266,7 +263,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          await this.getLifePredictionAPI(this.currentNodeKey)
+          await this.getLifePredictionAPI({ aircraftId: this.aircaftModelIdList })
           this.handleClose()
         }
       } catch (error) {}
@@ -294,36 +291,17 @@ export default {
       const { pageSize, pageIndex } = this.tableRequset
       const {
         data: { list, totalCount }
-      } = await getLifePrediction({ pageSize, pageIndex, aircraftId: params })
-      this.tableData = list
-      this.tableRequset.total = totalCount
-    },
-
-    async getDataImportAPI(params) {
-      if (this.$refs.table) this.$refs.table.clearSelection()
-      const { pageSize, pageIndex } = this.tableRequset
-      const {
-        data: { list, totalCount }
-      } = await getDataImport({ pageSize, pageIndex, aircraftId: params })
+      } = await getLifePrediction({ pageSize, pageIndex, ...params })
       this.tableData = list
       this.tableRequset.total = totalCount
     },
 
     fetch() {
-      this.getLifePredictionAPI(this.currentNodeKey)
+      this.getLifePredictionAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     async searchClick() {
-      // this.getLifePredictionAPI(this.currentNodeKey)
-      if (this.keyWordData && this.currentNodeKey !== 'quanbu') {
-        const {
-          data: { list, totalCount }
-        } = await getDataImport({ aircraftId: this.currentNodeKey, sortieNo: this.keyWordData })
-        this.tableData = list
-        this.tableRequset.total = totalCount
-      } else {
-        this.getDataImportAPI(this.currentNodeKey)
-      }
+      this.getLifePredictionAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     async addLifePredictionAPI() {
@@ -335,7 +313,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getLifePredictionAPI(this.currentNodeKey)
+          this.getLifePredictionAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
@@ -348,48 +326,68 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getLifePredictionAPI(this.currentNodeKey)
+          this.getLifePredictionAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
 
     treeNodeClick(data) {
       this.$refs.table.clearSelection()
-      this.currentNodeKey = data.id
+      this.currentNodeKey = this.form.aircraftId = data.id
       this.currentNode = data
-      this.getDataImportAPI(this.currentNodeKey)
+      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
+        .map((e) => e.id)
+        .toString()
+      this.getLifePredictionAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircaftModelName = this.currentNode.label
-      this.form.aircaftModelId = this.currentNode.id
+      this.form.aircraftId = this.currentNodeKey
+      // if (this.form.aircraftId !== '') {
+      //   this.changeAircraftId(this.form.aircraftId)
+      // }
     },
 
     handleClose() {
-      this.executeVisible = false
-      this.agloForm = {
-        agloType: '',
-        agloName: '',
-        paramsList: []
+      this.dialogVisible = false
+      this.form = {
+        id: '',
+        aircraftId: '',
+        name: '',
+        model: '',
+        system: '',
+        methodType: '',
+        remainTiem: '',
+        status: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
       }
     },
-
+    handUpdate(row) {
+      this.dialogTitle = '编辑'
+      this.form = deepClone(row)
+      this.dialogVisible = true
+    },
     checkResultList(row) {
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
-      this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+      this.form = deepClone(row)
+      this.resultVisible = true
     },
     executeAglo(row) {
-      this.executeVisible = true
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
+      // this.executeVisible = true
+      // this.agloForm.sortieNo = row.sortieNo
+      // this.agloForm.aircraftId = row.aircraftId
     },
     beginExecute() {
       // 调用算法接口
 
-      this.executeVisible = false
+      // this.executeVisible = false
       this.progressVisible = true
       const myTimer = setInterval(() => {
         if (this.percentage < 100) {
@@ -404,12 +402,6 @@ export default {
       }, 30)
     },
 
-    handUpdate(row) {
-      this.dialogTitle = '编辑'
-      this.form = deepClone(row)
-      this.dialogVisible = true
-    },
-
     submit() {
       switch (this.dialogTitle) {
         case '编辑':
@@ -428,7 +420,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/lifePredictionResult/index.vue

@@ -338,7 +338,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/maintainRecord/index.vue

@@ -523,7 +523,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 1 - 1
src/views/als/maintenance/index.vue

@@ -440,7 +440,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 113 - 65
src/views/als/maintenanceDecision/index.vue

@@ -5,10 +5,13 @@
     </div>
     <div class="view-dataSpecies-right">
       <div class="view-dataType-title">
-        <div class="view-dataType-title-btn"></div>
+        <div class="view-dataType-title-btn">
+          <el-button type="success" @click="openDialog()" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)">新增</el-button>
+          <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
+        </div>
         <div class="view-dataType-title-search">
           <el-input placeholder="请输入架次号" v-model="keyWordData" class="input1">
-            <el-button slot="append" icon="el-icon-search" @click="searchClick"></el-button>
+            <el-button slot="append" icon="el-icon-search" @click="searchClick" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)"></el-button>
           </el-input>
         </div>
       </div>
@@ -16,15 +19,29 @@
         <LTable ref="table" @selection-change="selection" :defaultFetch="false" :fetch="fetch" :columns="columns" :dataSource="tableData" :options="options" :pagination="tableRequset"></LTable>
       </div>
       <!-- 添加或修改辅助维修决策对话框 -->
-      <el-dialog :title="dialogTitle" :visible.sync="resultVisible" width="1000px" :before-close="handleClose">
-        <el-form ref="form" :model="form" :inline="true" label-width="80px">
+      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
+        <el-form ref="form" :model="form" label-width="80px">
+          <el-form-item label="编目" prop="aircraftId">
+            <el-select v-model="form.aircraftId" placeholder="请选择编目" @change="changeAircraftId(form.aircraftId)">
+              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="架次号" prop="sortieNo">
-            <el-input v-model="form.sortieNo" placeholder="请输入架次号" />
+            <el-select v-model="form.sortieNo" placeholder="请选择架次号">
+              <el-option v-for="item in sortieNoList" :key="item.id" :label="item.sortieNo" :value="item.id"> </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="模型类型">
+            <el-select v-model="form.modelType" placeholder="请选择模型类型" @change="changeModelType(form.modelType)">
+              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
           </el-form-item>
-          <el-form-item label="机号" prop="aircraftId">
-            <el-input v-model="form.aircraftId" placeholder="请输入机号" />
+          <el-form-item label="模型名称">
+            <el-select v-model="form.modelName" placeholder="模型名称">
+              <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
           </el-form-item>
-          <el-form-item label="诊断结果" prop="resultId">
+          <!-- <el-form-item label="诊断结果" prop="resultId">
             <el-input v-model="form.resultId" placeholder="请输入诊断结果" />
           </el-form-item>
           <el-form-item label="故障代码" prop="code">
@@ -41,24 +58,35 @@
           </el-form-item>
           <el-form-item label="维修建议" prop="proposal">
             <el-input v-model="form.proposal" placeholder="请输入维修建议" />
-          </el-form-item>
+          </el-form-item> -->
         </el-form>
-        <div style="height: 200px">维修决策结果及派遣内容</div>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="handleClose">取 消</el-button>
+          <el-button type="primary" @click="submit">确 定</el-button>
+        </span>
+        <!-- <div style="height: 200px">维修决策结果及派遣内容</div>
         <span slot="footer" class="dialog-footer">
           <el-button @click="handleClose">派 遣</el-button>
           <el-button type="primary" @click="handleDispatch">确 定</el-button>
-        </span>
+        </span> -->
       </el-dialog>
       <el-dialog title="执行进度" :visible.sync="progressVisible" width="800px" :before-close="handleClose">
         <el-progress :text-inside="true" :stroke-width="24" :percentage="percentage" status="success"></el-progress>
       </el-dialog>
+      <el-dialog title="结果展示" :visible.sync="resultVisible" width="800px">
+        展示结果
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="resultVisible = false">取 消</el-button>
+          <el-button type="primary" @click="resultVisible = false">确 定</el-button>
+        </span>
+      </el-dialog>
     </div>
   </div>
 </template>
 
 <script>
 import { getMaintenanceDecision, addMaintenanceDecision, updateMaintenanceDecision, removeMaintenanceDecision } from '@/api/als/maintenanceDecision'
-import { getAircaftCatalogTree, getAircaftTypeAndModelTree } from '@/api/als/sideTree'
+import { getAircaftCatalogTree } from '@/api/als/sideTree'
 import { deepClone, debounce } from '@/utils/index'
 import { getAircaftCatalogAll } from '@/api/als/aircraft'
 import { getDataImport } from '@/api/als/dataImport'
@@ -152,15 +180,15 @@ export default {
                 this.checkResult(row)
               }
             },
-            {
-              name: '执行',
-              type: 'text',
-              round: false,
-              plain: false,
-              onClick: (row, index, scope) => {
-                this.executeAglo(row)
-              }
-            },
+            // {
+            //   name: '执行',
+            //   type: 'text',
+            //   round: false,
+            //   plain: false,
+            //   onClick: (row, index, scope) => {
+            //     this.executeAglo(row)
+            //   }
+            // },
             {
               name: '删除',
               type: 'text',
@@ -221,7 +249,8 @@ export default {
       transferData: [],
       algoTypeList: [{ id: 5, name: '故障诊断' }],
       algoNameList: [],
-      percentage: 0
+      percentage: 0,
+      sortieNoList: []
     }
   },
   watch: {
@@ -246,8 +275,11 @@ export default {
       if (data.length) {
         this.currentNodeKey = data[0].value
         this.currentNode = data[0]
-        // this.getMaintenanceDecisionAPI(this.currentNodeKey)
-        this.getDataImportAPI()
+        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children)
+          .map((e) => e.id)
+          .toString()
+        this.getMaintenanceDecisionAPI({ aircraftId: this.aircaftModelIdList })
+        // this.getDataImportAPI()
       }
     },
 
@@ -259,7 +291,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          await this.getMaintenanceDecisionAPI(this.currentNodeKey)
+          await this.getMaintenanceDecisionAPI({ aircraftId: this.aircaftModelIdList })
           this.handleClose()
         }
       } catch (error) {}
@@ -287,7 +319,7 @@ export default {
       const { pageSize, pageIndex } = this.tableRequset
       const {
         data: { list, totalCount }
-      } = await getMaintenanceDecision({ pageSize, pageIndex, aircraftId: params })
+      } = await getMaintenanceDecision({ pageSize, pageIndex, ...params })
       this.tableData = list
       this.tableRequset.total = totalCount
     },
@@ -302,20 +334,11 @@ export default {
     },
 
     fetch() {
-      this.getMaintenanceDecisionAPI(this.currentNodeKey)
+      this.getMaintenanceDecisionAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     async searchClick() {
-      // this.getMaintenanceDecisionAPI(this.currentNodeKey)
-      if (this.keyWordData && this.currentNodeKey !== 'quanbu') {
-        const {
-          data: { list, totalCount }
-        } = await getDataImport({ aircraftId: this.currentNodeKey, sortieNo: this.keyWordData })
-        this.tableData = list
-        this.tableRequset.total = totalCount
-      } else {
-        this.getDataImportAPI(this.currentNodeKey)
-      }
+      this.getMaintenanceDecisionAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     async addMaintenanceDecisionAPI() {
@@ -327,7 +350,22 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getMaintenanceDecisionAPI(this.currentNodeKey)
+          this.dialogVisible = false
+          this.progressVisible = true
+          const myTimer = setInterval(() => {
+            if (this.percentage < 100) {
+              this.percentage += 1
+            } else {
+              this.progressVisible = false
+              this.percentage = 0
+              clearInterval(myTimer)
+              this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+              this.handleClose()
+              // 调用完数据再展示
+              this.resultVisible = true
+            }
+          }, 30)
+          this.getMaintenanceDecisionAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
@@ -340,35 +378,52 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getMaintenanceDecisionAPI(this.currentNodeKey)
+          this.getMaintenanceDecisionAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
 
     treeNodeClick(data) {
       this.$refs.table.clearSelection()
-      this.currentNodeKey = data.id
+      this.currentNodeKey = this.form.aircraftId = data.id
       this.currentNode = data
+      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
+        .map((e) => e.id)
+        .toString()
+      this.getMaintenanceDecisionAPI({ aircraftId: this.aircaftModelIdList })
       // this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data]).map((e) => e.id)
       // this.getMaintenanceDecisionAPI(this.currentNodeKey)
-      this.getDataImportAPI(this.currentNodeKey)
+      // this.getDataImportAPI(this.currentNodeKey)
     },
 
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircaftModelName = this.currentNode.label
-      this.form.aircaftModelId = this.currentNode.id
+      if (this.form.aircraftId !== '') {
+        this.changeAircraftId(this.form.aircraftId)
+      }
     },
 
     handleClose() {
-      this.resultVisible = false
-      this.agloForm = {
+      this.dialogVisible = false
+      this.form = {
+        id: '',
         sortieNo: '',
         aircraftId: '',
-        agloType: '',
-        agloName: '',
-        paramsList: []
+        resultId: '',
+        code: '',
+        systemName: '',
+        unitName: '',
+        faultPart: '',
+        proposal: '',
+        status: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
       }
     },
 
@@ -379,25 +434,11 @@ export default {
     },
 
     checkResult(row) {
-      this.dialogTitle = '维修决策'
+      // this.dialogTitle = '维修决策'
       this.form = deepClone(row)
       this.resultVisible = true
     },
-    executeAglo(row) {
-      this.resultVisible = false
-      this.progressVisible = true
-      const myTimer = setInterval(() => {
-        if (this.percentage < 100) {
-          this.percentage += 1
-        } else {
-          this.progressVisible = false
-          this.percentage = 0
-          clearInterval(myTimer)
-          this.resultVisible = true
-          // this.handleClose()
-        }
-      }, 30)
-    },
+    executeAglo(row) {},
     async changeAgloType(type) {
       const {
         data: { list }
@@ -405,6 +446,13 @@ export default {
       this.algoNameList = list
     },
 
+    async changeAircraftId(aircraftId) {
+      const {
+        data: { list }
+      } = await getDataImport({ aircraftId })
+      this.sortieNoList = list
+    },
+
     submit() {
       switch (this.dialogTitle) {
         case '编辑':
@@ -423,7 +471,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 53 - 77
src/views/als/maintenanceask/index.vue

@@ -20,73 +20,56 @@
       <div class="view-dataType-table">
         <LTable ref="table" @selection-change="selection" :defaultFetch="false" :fetch="fetch" :columns="columns" :dataSource="tableData" :options="options" :pagination="tableRequset"></LTable>
       </div>
-      <!-- 添加或修改维修任务对话框 -->
-      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
-        <el-form ref="form" :model="form" label-width="80px">
-          <el-form-item label="机型" prop="aircraftType">
-            <el-select v-model="form.aircraftType" placeholder="请选择机型">
-              <el-option v-for="item in aircaftModelAll" :key="item.aircaftModelId" :label="item.aircaftModelName" :value="item.aircaftModelId"> </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="机号" prop="aircraftCode">
-            <el-select v-model="form.aircraftCode" placeholder="请选择编目">
-              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="数据来源" prop="dataType">
-            <el-select v-model="form.dataType" placeholder="请输入数据来源">
-              <el-option v-for="item in dataTypeList" :key="item.id" :label="item.label" :value="item.label"> </el-option>
-            </el-select>
-            <!-- <el-input v-model="form.dataType" placeholder="请输入所属系统" /> -->
-          </el-form-item>
-          <el-form-item label="故障代码" prop="faultCode">
-            <el-input v-model="form.faultCode" placeholder="请输入故障代码" />
-          </el-form-item>
-          <el-form-item label="故障描述" prop="faultDescription">
-            <el-input v-model="form.faultDescription" placeholder="请输入故障描述" />
-          </el-form-item>
-          <el-form-item label="故障位置" prop="location">
-            <el-input v-model="form.location" placeholder="请输入故障位置" />
-          </el-form-item>
-          <el-form-item label="故障等级" prop="level">
-            <el-select v-model="form.level" placeholder="请输入故障等级">
-              <el-option v-for="item in levelList" :key="item.id" :label="item.label" :value="item.label"> </el-option>
-            </el-select>
-          </el-form-item>
-          <!-- <el-form-item label="故障发生时间" prop="flightDate">
+    </div>
+    <!-- 添加或修改维修任务对话框 -->
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
+      <el-form ref="form" :model="form" label-width="80px">
+        <el-form-item label="机型" prop="aircraftType">
+          <el-select v-model="form.aircraftType" placeholder="请选择机型">
+            <el-option v-for="item in aircaftModelAll" :key="item.aircaftModelId" :label="item.aircaftModelName" :value="item.aircaftModelId"> </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="编目" prop="aircraftCode">
+          <el-select v-model="form.aircraftCode" placeholder="请选择编目">
+            <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="数据来源" prop="dataType">
+          <el-select v-model="form.dataType" placeholder="请输入数据来源">
+            <el-option v-for="item in dataTypeList" :key="item.id" :label="item.label" :value="item.label"> </el-option>
+          </el-select>
+          <!-- <el-input v-model="form.dataType" placeholder="请输入所属系统" /> -->
+        </el-form-item>
+        <el-form-item label="故障代码" prop="faultCode">
+          <el-input v-model="form.faultCode" placeholder="请输入故障代码" />
+        </el-form-item>
+        <el-form-item label="故障描述" prop="faultDescription">
+          <el-input v-model="form.faultDescription" placeholder="请输入故障描述" />
+        </el-form-item>
+        <el-form-item label="故障位置" prop="location">
+          <el-input v-model="form.location" placeholder="请输入故障位置" />
+        </el-form-item>
+        <el-form-item label="故障等级" prop="level">
+          <el-select v-model="form.level" placeholder="请输入故障等级">
+            <el-option v-for="item in levelList" :key="item.id" :label="item.label" :value="item.label"> </el-option>
+          </el-select>
+        </el-form-item>
+        <!-- <el-form-item label="故障发生时间" prop="flightDate">
             <el-date-picker v-model="form.flightDate" type="date" value-format="yyyy-MM-dd" placement="bottom-start" placeholder="请选择故障发生时间"> </el-date-picker>
           </el-form-item> -->
-          <el-form-item label="故障现象" prop="symptoms">
-            <el-input v-model="form.symptoms" placeholder="请输入故障现象" />
-          </el-form-item>
-          <el-form-item label="故障原因" prop="faultCause">
-            <el-input type="textarea" :rows="2" v-model="form.faultCause" placeholder="请输入故障原因" />
-          </el-form-item>
-        </el-form>
-
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="handleClose">取 消</el-button>
-          <el-button type="primary" @click="submit">确 定</el-button>
-        </span>
-      </el-dialog>
-      <el-dialog title="任务分配" :visible.sync="detailVisible" width="1000px" :show-close="false">
-        <el-descriptions size="medium" border>
-          <el-descriptions-item label="机型">{{ detailAircraftType }}</el-descriptions-item>
-          <el-descriptions-item label="机号">{{ detailAircraftCode }}</el-descriptions-item>
-          <el-descriptions-item label="数据来源">{{ form.dataType }}</el-descriptions-item>
-          <el-descriptions-item label="故障代码">{{ form.faultCode }}</el-descriptions-item>
-          <el-descriptions-item label="故障描述">{{ form.faultDescription }}</el-descriptions-item>
-          <el-descriptions-item label="故障位置">{{ form.location }}</el-descriptions-item>
-          <el-descriptions-item :span="1" label="故障等级">{{ form.level }}</el-descriptions-item>
-          <el-descriptions-item :span="2" label="故障现象">{{ form.symptoms }}</el-descriptions-item>
-          <el-descriptions-item :span="3" label="故障原因">{{ form.faultCause }}</el-descriptions-item>
-        </el-descriptions>
+        <el-form-item label="故障现象" prop="symptoms">
+          <el-input v-model="form.symptoms" placeholder="请输入故障现象" />
+        </el-form-item>
+        <el-form-item label="故障原因" prop="faultCause">
+          <el-input type="textarea" :rows="2" v-model="form.faultCause" placeholder="请输入故障原因" />
+        </el-form-item>
+      </el-form>
 
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="detailVisible = false">确 定</el-button>
-        </span>
-      </el-dialog>
-    </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="handleClose">取 消</el-button>
+        <el-button type="primary" @click="submit">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -139,7 +122,7 @@ export default {
         },
         {
           prop: 'aircraftCode',
-          label: '机号',
+          label: '编目',
           render: (h, params) => {
             const matchedItem = this.aircaftCatalogAll.find((item) => params.row.aircraftCode.trim() === item.aircaftCatalogId.trim())
             if (matchedItem) {
@@ -255,9 +238,7 @@ export default {
         { id: 1, label: '一般故障' },
         { id: 2, label: '较大故障' },
         { id: 3, label: '重大故障' }
-      ],
-      detailAircraftType: '',
-      detailAircraftCode: ''
+      ]
     }
   },
   watch: {
@@ -298,7 +279,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          await this.getMaintenanceaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+          await this.getMaintenanceaskAPI({ aircraftType: this.aircaftModelIdList })
           this.handleClose()
         }
       } catch (error) {}
@@ -436,7 +417,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
@@ -446,13 +427,8 @@ export default {
         })
         .catch(() => {})
     },
-    async checkDetails(row) {
-      this.form = deepClone(row)
-      const aircraftTypeItem = this.aircaftModelAll.find((item) => row.aircraftType === item.aircaftModelId)
-      const aircraftCodeItem = this.aircaftCatalogAll.find((item) => row.aircraftCode === item.aircaftCatalogId)
-      this.detailAircraftType = aircraftTypeItem.aircaftModelName
-      this.detailAircraftCode = aircraftCodeItem.aircaftCatalogCode
-      this.detailVisible = true
+    checkDetails(row) {
+      this.$router.push({ name: 'ViewDetails', params: { maintenanceaskId: row.id } })
     }
   }
 }

+ 547 - 0
src/views/als/maintenanceask/viewDetails.vue

@@ -0,0 +1,547 @@
+<template>
+  <div class="view-table-content">
+    <div style="width: 80%; margin: auto">
+      <el-descriptions size="medium" border>
+        <el-descriptions-item label="机型">{{ maintenanceaskForm.aircraftType }}</el-descriptions-item>
+        <el-descriptions-item label="机号">{{ maintenanceaskForm.aircraftCode }}</el-descriptions-item>
+        <el-descriptions-item label="数据来源">{{ maintenanceaskForm.dataType }}</el-descriptions-item>
+        <el-descriptions-item label="故障代码">{{ maintenanceaskForm.faultCode }}</el-descriptions-item>
+        <el-descriptions-item label="故障描述">{{ maintenanceaskForm.faultDescription }}</el-descriptions-item>
+        <el-descriptions-item label="故障位置">{{ maintenanceaskForm.location }}</el-descriptions-item>
+        <el-descriptions-item :span="1" label="故障等级">{{ maintenanceaskForm.level }}</el-descriptions-item>
+        <el-descriptions-item :span="2" label="故障现象">{{ maintenanceaskForm.symptoms }}</el-descriptions-item>
+        <el-descriptions-item :span="3" label="故障原因">{{ maintenanceaskForm.faultCause }}</el-descriptions-item>
+      </el-descriptions>
+      <el-tabs type="card" v-model="tabActiveName" style="margin-top: 30px">
+        <el-tab-pane label="资源分配" name="first">
+          <div class="view-dataType-title">
+            <div class="view-dataType-title-btn">
+              <el-button type="success" @click="openDialog()">新增</el-button>
+              <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
+            </div>
+          </div>
+          <div class="view-dataType-table">
+            <LTable ref="table" @selection-change="selection" :defaultFetch="false" :fetch="fetch" :columns="columns" :dataSource="tableData" :options="options" :pagination="tableRequset"></LTable>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane label="任务派遣" name="second">
+          <div class="view-dataType-title">
+            <div class="view-dataType-title-btn">
+              <el-button type="success" @click="openDialog2()">新增</el-button>
+              <el-button type="warning" @click="remove(tableCheckItems2)" :disabled="tableCheckItems2.length == 0">删除</el-button>
+            </div>
+          </div>
+          <div class="view-dataType-table">
+            <LTable ref="table2" @selection-change="selection2" :defaultFetch="false" :fetch="fetch2" :columns="columns2" :dataSource="tableData2" :options="options" :pagination="tableRequset2"></LTable>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+
+      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
+        <el-form ref="form" :model="form" label-width="80px" style="height: 50vh; overflow-y: scroll">
+          <!-- <el-form-item label="任务" prop="taskId">
+            <el-input v-model="form.taskId" placeholder="请输入任务" />
+          </el-form-item> -->
+          <el-form-item label="设备名称" prop="deviceName">
+            <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
+          </el-form-item>
+          <el-form-item label="型号" prop="modelNumber">
+            <el-input v-model="form.modelNumber" placeholder="请输入型号" />
+          </el-form-item>
+          <el-form-item label="设备编码" prop="deviceCode">
+            <el-input v-model="form.deviceCode" placeholder="请输入设备编码" />
+          </el-form-item>
+          <el-form-item label="类型" prop="type">
+            <el-input v-model="form.type" placeholder="请输入类型" />
+          </el-form-item>
+          <el-form-item label="数量" prop="quantity">
+            <el-input v-model="form.quantity" placeholder="请输入数量" />
+          </el-form-item>
+          <el-form-item label="备注" prop="remarks">
+            <el-input v-model="form.remarks" placeholder="请输入备注" />
+          </el-form-item>
+        </el-form>
+
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="handleClose">取 消</el-button>
+          <el-button type="primary" @click="submit">确 定</el-button>
+        </span>
+      </el-dialog>
+
+      <el-dialog :title="dialogTitle2" :visible.sync="dialogVisible2" width="600px" :before-close="handleClose2">
+        <el-form ref="form2" :model="form2" label-width="80px" style="height: 50vh; overflow-y: scroll">
+          <!-- <el-form-item label="任务" prop="taskId">
+            <el-input v-model="form.taskId" placeholder="请输入任务" />
+          </el-form-item> -->
+          <el-form-item label="人员" prop="deviceName">
+            <el-input v-model="form2.personnel" placeholder="请输入人员" />
+          </el-form-item>
+          <el-form-item label="岗位" prop="position">
+            <el-input v-model="form2.position" placeholder="请输入岗位" />
+          </el-form-item>
+          <el-form-item label="数量" prop="quantity">
+            <el-input v-model="form2.quantity" placeholder="请输入数量" />
+          </el-form-item>
+          <el-form-item label="职责" prop="duties">
+            <el-input v-model="form2.duties" placeholder="请输入职责" />
+          </el-form-item>
+          <el-form-item label="备注" prop="remarks">
+            <el-input v-model="form2.remarks" placeholder="请输入备注" />
+          </el-form-item>
+        </el-form>
+
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="handleClose2">取 消</el-button>
+          <el-button type="primary" @click="submit2">确 定</el-button>
+        </span>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getResourceAllocation, addResourceAllocation, updateResourceAllocation, removeResourceAllocation } from '@/api/als/resourceAllocation'
+import { getPersonnelAllocation, addPersonnelAllocation, updatePersonnelAllocation, removePersonnelAllocation } from '@/api/als/personnelAllocation'
+import { getMaintenanceask } from '@/api/als/maintenanceask'
+import { deepClone, debounce } from '@/utils/index'
+export default {
+  name: 'ViewDetails',
+  components: {},
+  data() {
+    // 这里存放数据
+    return {
+      dialogTitle: '新增',
+      dialogTitle2: '新增',
+      dialogVisible: false,
+      dialogVisible2: false,
+      keyWord: '',
+      searchValue: '',
+      columns: [
+        { prop: 'id', label: '编号' },
+        {
+          prop: 'deviceName',
+          label: '名称'
+        },
+        {
+          prop: 'modelNumber',
+          label: '型号'
+        },
+        {
+          prop: 'deviceCode',
+          label: '设备编码'
+        },
+
+        {
+          prop: 'type',
+          label: '类型'
+        },
+        {
+          prop: 'quantity',
+          label: '数量'
+        },
+        {
+          prop: 'remarks',
+          label: '备注'
+        },
+
+        {
+          button: true,
+          label: '操作',
+          width: '240px',
+          group: [
+            {
+              name: '编辑',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.handUpdate(row)
+              }
+            },
+            {
+              name: '删除',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.remove([row])
+              }
+            }
+          ]
+        }
+      ],
+      columns2: [
+        { prop: 'id', label: '编号' },
+        {
+          prop: 'personnel',
+          label: '人员'
+        },
+        {
+          prop: 'position',
+          label: '岗位'
+        },
+        {
+          prop: 'quantity',
+          label: '数量'
+        },
+
+        {
+          prop: 'duties',
+          label: '职责'
+        },
+        {
+          prop: 'remarks',
+          label: '备注'
+        },
+
+        {
+          button: true,
+          label: '操作',
+          width: '240px',
+          group: [
+            {
+              name: '编辑',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.handUpdate2(row)
+              }
+            },
+            {
+              name: '删除',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.remove([row])
+              }
+            }
+          ]
+        }
+      ],
+      options: {
+        stripe: true, // 斑马纹
+        mutiSelect: true, // 多选框
+        index: false, // 显示序号, 多选则 mutiSelect
+        loading: false, // 表格动画
+        initTable: false, // 是否一挂载就加载数据
+        border: true,
+        height: 'calc(100vh - 550px)'
+      },
+      tableCheckItems: [],
+      tableCheckItems2: [],
+      tableData: [],
+      tableRequset: {
+        total: 0,
+        pageIndex: 1,
+        pageSize: 10,
+        searchValue: ''
+      },
+      tableRequset2: {
+        total: 0,
+        pageIndex: 1,
+        pageSize: 10,
+        searchValue: ''
+      },
+      tableData2: [],
+      form: {
+        id: '',
+        taskId: '',
+        deviceName: '',
+        serialNumber: '',
+        deviceCode: '',
+        type: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      },
+      form2: {
+        id: '',
+        taskId: '',
+        personnel: '',
+        position: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      },
+      debounceFn: debounce(this.fetch, 500),
+      maintenanceaskId: '',
+      maintenanceaskForm: [],
+      tabActiveName: 'first'
+    }
+  },
+  watch: {
+    keyWord() {
+      this.tableRequset.pageIndex = 1
+      this.debounceFn()
+    },
+    tabActiveName: {
+      handler(val) {
+        if (val === 'first') {
+          this.getResourceAllocationAPI({ taskId: this.maintenanceaskId })
+        } else {
+          this.getPersonnelAllocationAPI({ taskId: this.maintenanceaskId })
+        }
+      }
+    }
+  },
+  mounted() {
+    this.getMaintenanceaskAPI()
+  },
+  methods: {
+    async getMaintenanceaskAPI() {
+      this.maintenanceaskId = this.$route.params.maintenanceaskId
+      this.form.taskId = this.maintenanceaskId
+      const {
+        data: { list, totalCount }
+      } = await getMaintenanceask({ id: this.maintenanceaskId })
+      this.maintenanceaskForm = list
+      console.log('this.maintenanceaskForm', this.maintenanceaskForm)
+      this.getResourceAllocationAPI({ taskId: this.maintenanceaskId })
+    },
+
+    async removeResourceAllocationAPI(params) {
+      try {
+        const { code } = await removeResourceAllocation(params)
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          await this.getResourceAllocationAPI({ taskId: this.maintenanceaskId })
+          this.handleClose()
+        }
+      } catch (error) {}
+    },
+
+    async removePersonnelAllocationAPI(params) {
+      try {
+        const { code } = await removePersonnelAllocation(params)
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          await this.getPersonnelAllocationAPI({ taskId: this.maintenanceaskId })
+          this.handleClose()
+        }
+      } catch (error) {}
+    },
+
+    async getResourceAllocationAPI(params) {
+      if (this.$refs.table) this.$refs.table.clearSelection()
+      const { keyWord } = this
+      const { pageSize, pageIndex } = this.tableRequset
+      const {
+        data: { list, totalCount }
+      } = await getResourceAllocation({ pageSize, pageIndex, ...params })
+      this.tableData = list
+      this.tableRequset.total = totalCount
+    },
+
+    async getPersonnelAllocationAPI(params) {
+      if (this.$refs.table2) this.$refs.table2.clearSelection()
+      const { keyWord } = this
+      const { pageSize, pageIndex } = this.tableRequset2
+      const {
+        data: { list, totalCount }
+      } = await getPersonnelAllocation({ pageSize, pageIndex, ...params })
+      this.tableData2 = list
+      this.tableRequset2.total = totalCount
+    },
+
+    fetch() {
+      this.getResourceAllocationAPI({ taskId: this.maintenanceaskId })
+    },
+
+    fetch2() {
+      this.getPersonnelAllocationAPI({ taskId: this.maintenanceaskId })
+    },
+
+    async addResourceAllocationAPI() {
+      try {
+        delete this.form.aircaftModelName
+        const { code } = await addResourceAllocation({ ...this.form })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getResourceAllocationAPI({ taskId: this.maintenanceaskId })
+        }
+      } catch (error) {}
+    },
+
+    async addPersonnelAllocationAPI() {
+      try {
+        delete this.form.aircaftModelName
+        const { code } = await addPersonnelAllocation({ ...this.form2 })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getPersonnelAllocationAPI({ taskId: this.maintenanceaskId })
+        }
+      } catch (error) {}
+    },
+
+    async updateResourceAllocationAPI() {
+      try {
+        const { code } = await updateResourceAllocation({ ...this.form })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getResourceAllocationAPI({ taskId: this.maintenanceaskId })
+        }
+      } catch (error) {}
+    },
+
+    async updatePersonnelAllocationAPI() {
+      try {
+        const { code } = await updatePersonnelAllocation({ ...this.form2 })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getPersonnelAllocationAPI({ taskId: this.maintenanceaskId })
+        }
+      } catch (error) {}
+    },
+
+    openDialog() {
+      this.dialogTitle = '新增'
+      this.dialogVisible = true
+      this.form.taskId = this.maintenanceaskId
+      // this.form.aircraftId = { taskId: this.maintenanceaskId }
+      // this.form.aircraftType = this.currentNode.label
+    },
+
+    openDialog2() {
+      this.dialogTitle2 = '新增'
+      this.dialogVisible2 = true
+      this.form2.taskId = this.maintenanceaskId
+      // this.form.aircraftId = { taskId: this.maintenanceaskId }
+      // this.form.aircraftType = this.currentNode.label
+    },
+
+    handleClose() {
+      this.dialogVisible = false
+      this.form = {
+        id: '',
+        taskId: '',
+        deviceName: '',
+        serialNumber: '',
+        deviceCode: '',
+        type: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      }
+    },
+
+    handleClose2() {
+      this.dialogVisible2 = false
+      this.form2 = {
+        id: '',
+        taskId: '',
+        personnel: '',
+        position: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      }
+    },
+
+    handUpdate(row) {
+      this.dialogTitle = '编辑'
+      this.form = deepClone(row)
+      this.dialogVisible = true
+    },
+
+    handUpdate2(row) {
+      this.dialogTitle2 = '编辑'
+      this.form2 = deepClone(row)
+      this.dialogVisible2 = true
+    },
+
+    submit() {
+      switch (this.dialogTitle) {
+        case '编辑':
+          this.updateResourceAllocationAPI()
+          this.handleClose()
+          break
+        case '新增':
+          this.addResourceAllocationAPI()
+          this.handleClose()
+          break
+      }
+    },
+
+    submit2() {
+      switch (this.dialogTitle) {
+        case '编辑':
+          this.updatePersonnelAllocationAPI()
+          this.handleClose2()
+          break
+        case '新增':
+          this.addPersonnelAllocationAPI()
+          this.handleClose2()
+          break
+      }
+    },
+
+    selection(val) {
+      this.tableCheckItems = val
+    },
+
+    selection2(val) {
+      this.tableCheckItems2 = val
+    },
+
+    remove(row) {
+      this.$confirm('是否删除该数据', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          this.tabActiveName === 'first' ? this.removeResourceAllocationAPI(row.map((e) => e.id)) : this.removePersonnelAllocationAPI(row.map((e) => e.id))
+        })
+        .catch(() => {})
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '../index.scss';
+</style>

+ 45 - 58
src/views/als/preProcessing/index.vue

@@ -21,30 +21,30 @@
       <!-- 添加或修改预处理对话框 -->
       <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800px" :before-close="handleClose">
         <el-form ref="form" :model="form" label-width="80px">
-          <el-form-item label="机号" prop="aircraftId">
+          <el-form-item label="编目" prop="aircraftId">
             <el-select v-model="form.aircraftId" placeholder="请选择编目" @change="changeAircraftId(form.aircraftId)">
               <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="架次号" prop="sortieNo">
-            <el-select v-model="form.sortieNo" placeholder="请选择编目">
+            <el-select v-model="form.sortieNo" placeholder="请选择架次号">
               <el-option v-for="item in sortieNoList" :key="item.id" :label="item.sortieNo" :value="item.id"> </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="算法类型">
-            <el-select v-model="form.modelType" placeholder="请选择算法类型" @change="changeModelType(form.modelType)">
+          <el-form-item label="模型类型">
+            <el-select v-model="form.modelType" placeholder="请选择模型类型" @change="changeModelType(form.modelType)">
               <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
-          <el-form-item label="算法名称">
-            <el-select v-model="form.modelName" placeholder="算法名称">
+          <el-form-item label="模型名称">
+            <el-select v-model="form.modelName" placeholder="模型名称">
               <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
           <el-form-item label="参数" prop="param">
             <el-input v-model="form.param" placeholder="请输入参数" />
           </el-form-item>
-          <el-form-item label="选择数据列">
+          <el-form-item label="选择数据列" label-width="90px">
             <el-transfer v-model="form.columnData" :data="transferData"></el-transfer>
           </el-form-item>
 
@@ -58,31 +58,16 @@
           <el-button type="primary" @click="submit">确 定</el-button>
         </span>
       </el-dialog>
-      <!-- 算法执行页面 -->
-      <!-- <el-dialog title="选择算法" :visible.sync="executeVisible" width="800px" :before-close="handleClose">
-        <el-form :inline="true" :model="agloForm" class="demo-form-inline">
-          <el-form-item label="算法类型">
-            <el-select v-model="agloForm.agloType" placeholder="请选择算法类型" @change="changeAgloType(agloForm.agloType)">
-              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="算法名称">
-            <el-select v-model="agloForm.agloName" placeholder="算法名称">
-              <el-option v-for="item in algoNameList" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="选择参数">
-            <el-transfer v-model="agloForm.paramsList" :data="transferData"></el-transfer>
-          </el-form-item>
-        </el-form>
+      <el-dialog title="执行进度" :visible.sync="progressVisible" width="800px" :before-close="handleClose">
+        <el-progress :text-inside="true" :stroke-width="24" :percentage="percentage" status="success"></el-progress>
+      </el-dialog>
+      <el-dialog title="结果展示" :visible.sync="resultVisible" width="800px">
+        展示结果
         <span slot="footer" class="dialog-footer">
-          <el-button @click="handleClose">取 消</el-button>
-          <el-button type="primary" @click="beginExecute">开始执行</el-button>
+          <el-button @click="resultVisible = false">取 消</el-button>
+          <el-button type="primary" @click="resultVisible = false">确 定</el-button>
         </span>
       </el-dialog>
-      <el-dialog title="执行进度" :visible.sync="progressVisible" width="800px" :before-close="handleClose">
-        <el-progress :text-inside="true" :stroke-width="24" :percentage="percentage" status="success"></el-progress>
-      </el-dialog> -->
     </div>
   </div>
 </template>
@@ -93,7 +78,6 @@ import { getAircaftCatalogAll } from '@/api/als/aircraft'
 import { getAircaftCatalogTree } from '@/api/als/sideTree'
 import { getDataImport } from '@/api/als/dataImport'
 import { getModel } from '@/api/als/model'
-import { getAirConfiguration } from '@/api/als/airConfiguration'
 import { deepClone, debounce } from '@/utils/index'
 
 export default {
@@ -104,8 +88,8 @@ export default {
     return {
       dialogTitle: '新增',
       dialogVisible: false,
-      executeVisible: false,
       progressVisible: false,
+      resultVisible: false,
       keyWordData: '',
       aircaftModelIdList: [],
       currentNodeKey: '',
@@ -226,7 +210,7 @@ export default {
         modelType: '',
         modelName: '',
         param: '',
-        columnData: '',
+        columnData: [],
         ossId: '',
         result: '',
         status: '',
@@ -285,7 +269,6 @@ export default {
           .map((e) => e.id)
           .toString()
         this.getPreProcessingAPI({ aircraftId: this.aircaftModelIdList })
-        // this.getDataImportAPI({ aircraftId: this.aircaftModelIdList })
       }
     },
 
@@ -330,23 +313,12 @@ export default {
       this.tableRequset.total = totalCount
     },
 
-    async getDataImportAPI(params) {
-      if (this.$refs.table) this.$refs.table.clearSelection()
-      const { pageSize, pageIndex } = this.tableRequset
-      const {
-        data: { list, totalCount }
-      } = await getDataImport({ pageSize, pageIndex, ...params })
-      this.tableData = list
-      this.tableRequset.total = totalCount
-    },
-
     fetch() {
       this.getPreProcessingAPI({ aircraftId: this.aircaftModelIdList })
     },
 
-    async searchClick() {
+    searchClick() {
       this.getPreProcessingAPI({ aircraftId: this.aircaftModelIdList, sortieNo: this.keyWordData })
-      // this.getDataImportAPI({ aircraftId: this.aircaftModelIdList, sortieNo: this.keyWordData })
     },
 
     async addPreProcessingAPI() {
@@ -358,6 +330,21 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
+          this.dialogVisible = false
+          this.progressVisible = true
+          const myTimer = setInterval(() => {
+            if (this.percentage < 100) {
+              this.percentage += 1
+            } else {
+              this.progressVisible = false
+              this.percentage = 0
+              clearInterval(myTimer)
+              this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+              this.handleClose()
+              // 调用完数据再展示
+              this.resultVisible = true
+            }
+          }, 30)
           this.getPreProcessingAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
@@ -403,7 +390,7 @@ export default {
         modelType: '',
         modelName: '',
         param: '',
-        columnData: '',
+        columnData: [],
         ossId: '',
         result: '',
         status: '',
@@ -423,19 +410,21 @@ export default {
       this.dialogVisible = true
     },
     checkResultList(row) {
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
-      this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+      this.form = deepClone(row)
+      this.resultVisible = true
+      // this.agloForm.sortieNo = row.sortieNo
+      // this.agloForm.aircraftId = row.aircraftId
+      // this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
     },
     executeAglo(row) {
-      this.executeVisible = true
-      this.agloForm.sortieNo = row.sortieNo
-      this.agloForm.aircraftId = row.aircraftId
+      // this.executeVisible = true
+      // this.agloForm.sortieNo = row.sortieNo
+      // this.agloForm.aircraftId = row.aircraftId
     },
     beginExecute() {
-      // 调用算法接口
+      // 调用模型接口
 
-      this.executeVisible = false
+      // this.executeVisible = false
       this.progressVisible = true
       const myTimer = setInterval(() => {
         if (this.percentage < 100) {
@@ -444,7 +433,7 @@ export default {
           this.progressVisible = false
           this.percentage = 0
           clearInterval(myTimer)
-          this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
+          // this.$router.push({ name: 'PreResult', params: { agloForm: this.agloForm } })
           this.handleClose()
         }
       }, 30)
@@ -460,8 +449,6 @@ export default {
       const {
         data: { list }
       } = await getDataImport({ aircraftId })
-      debugger
-      console.log('list', list)
       this.sortieNoList = list
     },
 
@@ -483,7 +470,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'

+ 548 - 0
src/views/als/smTask/SMTaskDetails.vue

@@ -0,0 +1,548 @@
+<template>
+  <div class="view-table-content">
+    <div style="width: 80%; margin: auto">
+      <el-descriptions size="medium" border>
+        <el-descriptions-item label="机型">{{ smTaskForm.aircraftModel }}</el-descriptions-item>
+        <el-descriptions-item label="编目">{{ smTaskForm.aircraftId }}</el-descriptions-item>
+        <el-descriptions-item label="任务名称">{{ smTaskForm.name }}</el-descriptions-item>
+        <el-descriptions-item label="任务编码">{{ smTaskForm.code }}</el-descriptions-item>
+        <el-descriptions-item label="维修时间">{{ smTaskForm.endTime }}</el-descriptions-item>
+        <el-descriptions-item label="剩余时间">{{ smTaskForm.remainTime }}</el-descriptions-item>
+        <el-descriptions-item label="专业">{{ smTaskForm.specialty }}</el-descriptions-item>
+        <el-descriptions-item :span="1" label="负责人">{{ smTaskForm.headName }}</el-descriptions-item>
+        <el-descriptions-item :span="2" label="单位">{{ smTaskForm.unitName }}</el-descriptions-item>
+        <el-descriptions-item :span="3" label="维修内容">{{ smTaskForm.contents }}</el-descriptions-item>
+      </el-descriptions>
+      <el-tabs type="card" v-model="tabActiveName" style="margin-top: 30px">
+        <el-tab-pane label="资源分配" name="first">
+          <div class="view-dataType-title">
+            <div class="view-dataType-title-btn">
+              <el-button type="success" @click="openDialog()">新增</el-button>
+              <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
+            </div>
+          </div>
+          <div class="view-dataType-table">
+            <LTable ref="table" @selection-change="selection" :defaultFetch="false" :fetch="fetch" :columns="columns" :dataSource="tableData" :options="options" :pagination="tableRequset"></LTable>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane label="任务派遣" name="second">
+          <div class="view-dataType-title">
+            <div class="view-dataType-title-btn">
+              <el-button type="success" @click="openDialog2()">新增</el-button>
+              <el-button type="warning" @click="remove(tableCheckItems2)" :disabled="tableCheckItems2.length == 0">删除</el-button>
+            </div>
+          </div>
+          <div class="view-dataType-table">
+            <LTable ref="table2" @selection-change="selection2" :defaultFetch="false" :fetch="fetch2" :columns="columns2" :dataSource="tableData2" :options="options" :pagination="tableRequset2"></LTable>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+
+      <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
+        <el-form ref="form" :model="form" label-width="80px" style="height: 50vh; overflow-y: scroll">
+          <!-- <el-form-item label="任务" prop="taskId">
+            <el-input v-model="form.taskId" placeholder="请输入任务" />
+          </el-form-item> -->
+          <el-form-item label="设备名称" prop="deviceName">
+            <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
+          </el-form-item>
+          <el-form-item label="型号" prop="modelNumber">
+            <el-input v-model="form.modelNumber" placeholder="请输入型号" />
+          </el-form-item>
+          <el-form-item label="设备编码" prop="deviceCode">
+            <el-input v-model="form.deviceCode" placeholder="请输入设备编码" />
+          </el-form-item>
+          <el-form-item label="类型" prop="type">
+            <el-input v-model="form.type" placeholder="请输入类型" />
+          </el-form-item>
+          <el-form-item label="数量" prop="quantity">
+            <el-input v-model="form.quantity" placeholder="请输入数量" />
+          </el-form-item>
+          <el-form-item label="备注" prop="remarks">
+            <el-input v-model="form.remarks" placeholder="请输入备注" />
+          </el-form-item>
+        </el-form>
+
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="handleClose">取 消</el-button>
+          <el-button type="primary" @click="submit">确 定</el-button>
+        </span>
+      </el-dialog>
+
+      <el-dialog :title="dialogTitle2" :visible.sync="dialogVisible2" width="600px" :before-close="handleClose2">
+        <el-form ref="form2" :model="form2" label-width="80px" style="height: 50vh; overflow-y: scroll">
+          <!-- <el-form-item label="任务" prop="taskId">
+            <el-input v-model="form.taskId" placeholder="请输入任务" />
+          </el-form-item> -->
+          <el-form-item label="人员" prop="deviceName">
+            <el-input v-model="form2.personnel" placeholder="请输入人员" />
+          </el-form-item>
+          <el-form-item label="岗位" prop="position">
+            <el-input v-model="form2.position" placeholder="请输入岗位" />
+          </el-form-item>
+          <el-form-item label="数量" prop="quantity">
+            <el-input v-model="form2.quantity" placeholder="请输入数量" />
+          </el-form-item>
+          <el-form-item label="职责" prop="duties">
+            <el-input v-model="form2.duties" placeholder="请输入职责" />
+          </el-form-item>
+          <el-form-item label="备注" prop="remarks">
+            <el-input v-model="form2.remarks" placeholder="请输入备注" />
+          </el-form-item>
+        </el-form>
+
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="handleClose2">取 消</el-button>
+          <el-button type="primary" @click="submit2">确 定</el-button>
+        </span>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getResourceAllocation, addResourceAllocation, updateResourceAllocation, removeResourceAllocation } from '@/api/als/resourceAllocation'
+import { getPersonnelAllocation, addPersonnelAllocation, updatePersonnelAllocation, removePersonnelAllocation } from '@/api/als/personnelAllocation'
+import { getSmTask } from '@/api/als/smTask'
+import { deepClone, debounce } from '@/utils/index'
+export default {
+  name: 'SMTaskDetails',
+  components: {},
+  data() {
+    // 这里存放数据
+    return {
+      dialogTitle: '新增',
+      dialogTitle2: '新增',
+      dialogVisible: false,
+      dialogVisible2: false,
+      keyWord: '',
+      searchValue: '',
+      columns: [
+        { prop: 'id', label: '编号' },
+        {
+          prop: 'deviceName',
+          label: '名称'
+        },
+        {
+          prop: 'modelNumber',
+          label: '型号'
+        },
+        {
+          prop: 'deviceCode',
+          label: '设备编码'
+        },
+
+        {
+          prop: 'type',
+          label: '类型'
+        },
+        {
+          prop: 'quantity',
+          label: '数量'
+        },
+        {
+          prop: 'remarks',
+          label: '备注'
+        },
+
+        {
+          button: true,
+          label: '操作',
+          width: '240px',
+          group: [
+            {
+              name: '编辑',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.handUpdate(row)
+              }
+            },
+            {
+              name: '删除',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.remove([row])
+              }
+            }
+          ]
+        }
+      ],
+      columns2: [
+        { prop: 'id', label: '编号' },
+        {
+          prop: 'personnel',
+          label: '人员'
+        },
+        {
+          prop: 'position',
+          label: '岗位'
+        },
+        {
+          prop: 'quantity',
+          label: '数量'
+        },
+
+        {
+          prop: 'duties',
+          label: '职责'
+        },
+        {
+          prop: 'remarks',
+          label: '备注'
+        },
+
+        {
+          button: true,
+          label: '操作',
+          width: '240px',
+          group: [
+            {
+              name: '编辑',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.handUpdate2(row)
+              }
+            },
+            {
+              name: '删除',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.remove([row])
+              }
+            }
+          ]
+        }
+      ],
+      options: {
+        stripe: true, // 斑马纹
+        mutiSelect: true, // 多选框
+        index: false, // 显示序号, 多选则 mutiSelect
+        loading: false, // 表格动画
+        initTable: false, // 是否一挂载就加载数据
+        border: true,
+        height: 'calc(100vh - 550px)'
+      },
+      tableCheckItems: [],
+      tableCheckItems2: [],
+      tableData: [],
+      tableRequset: {
+        total: 0,
+        pageIndex: 1,
+        pageSize: 10,
+        searchValue: ''
+      },
+      tableRequset2: {
+        total: 0,
+        pageIndex: 1,
+        pageSize: 10,
+        searchValue: ''
+      },
+      tableData2: [],
+      form: {
+        id: '',
+        taskId: '',
+        deviceName: '',
+        serialNumber: '',
+        deviceCode: '',
+        type: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      },
+      form2: {
+        id: '',
+        taskId: '',
+        personnel: '',
+        position: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      },
+      debounceFn: debounce(this.fetch, 500),
+      smTaskId: '',
+      smTaskForm: [],
+      tabActiveName: 'first'
+    }
+  },
+  watch: {
+    keyWord() {
+      this.tableRequset.pageIndex = 1
+      this.debounceFn()
+    },
+    tabActiveName: {
+      handler(val) {
+        if (val === 'first') {
+          this.getResourceAllocationAPI({ taskId: this.smTaskId })
+        } else {
+          this.getPersonnelAllocationAPI({ taskId: this.smTaskId })
+        }
+      }
+    }
+  },
+  mounted() {
+    this.getSmTaskAPI()
+  },
+  methods: {
+    async getSmTaskAPI() {
+      this.smTaskId = this.$route.params.smTaskId
+      this.form.taskId = this.smTaskId
+      const {
+        data: { list, totalCount }
+      } = await getSmTask({ id: this.smTaskId })
+      this.smTaskForm = list
+      console.log('this.smTaskForm', this.smTaskForm)
+      this.getResourceAllocationAPI({ taskId: this.smTaskId })
+    },
+
+    async removeResourceAllocationAPI(params) {
+      try {
+        const { code } = await removeResourceAllocation(params)
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          await this.getResourceAllocationAPI({ taskId: this.smTaskId })
+          this.handleClose()
+        }
+      } catch (error) {}
+    },
+
+    async removePersonnelAllocationAPI(params) {
+      try {
+        const { code } = await removePersonnelAllocation(params)
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          await this.getPersonnelAllocationAPI({ taskId: this.smTaskId })
+          this.handleClose()
+        }
+      } catch (error) {}
+    },
+
+    async getResourceAllocationAPI(params) {
+      if (this.$refs.table) this.$refs.table.clearSelection()
+      const { keyWord } = this
+      const { pageSize, pageIndex } = this.tableRequset
+      const {
+        data: { list, totalCount }
+      } = await getResourceAllocation({ pageSize, pageIndex, ...params })
+      this.tableData = list
+      this.tableRequset.total = totalCount
+    },
+
+    async getPersonnelAllocationAPI(params) {
+      if (this.$refs.table2) this.$refs.table2.clearSelection()
+      const { keyWord } = this
+      const { pageSize, pageIndex } = this.tableRequset2
+      const {
+        data: { list, totalCount }
+      } = await getPersonnelAllocation({ pageSize, pageIndex, ...params })
+      this.tableData2 = list
+      this.tableRequset2.total = totalCount
+    },
+
+    fetch() {
+      this.getResourceAllocationAPI({ taskId: this.smTaskId })
+    },
+
+    fetch2() {
+      this.getPersonnelAllocationAPI({ taskId: this.smTaskId })
+    },
+
+    async addResourceAllocationAPI() {
+      try {
+        delete this.form.aircaftModelName
+        const { code } = await addResourceAllocation({ ...this.form })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getResourceAllocationAPI({ taskId: this.smTaskId })
+        }
+      } catch (error) {}
+    },
+
+    async addPersonnelAllocationAPI() {
+      try {
+        delete this.form.aircaftModelName
+        const { code } = await addPersonnelAllocation({ ...this.form2 })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getPersonnelAllocationAPI({ taskId: this.smTaskId })
+        }
+      } catch (error) {}
+    },
+
+    async updateResourceAllocationAPI() {
+      try {
+        const { code } = await updateResourceAllocation({ ...this.form })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getResourceAllocationAPI({ taskId: this.smTaskId })
+        }
+      } catch (error) {}
+    },
+
+    async updatePersonnelAllocationAPI() {
+      try {
+        const { code } = await updatePersonnelAllocation({ ...this.form2 })
+        if (code === 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.getPersonnelAllocationAPI({ taskId: this.smTaskId })
+        }
+      } catch (error) {}
+    },
+
+    openDialog() {
+      this.dialogTitle = '新增'
+      this.dialogVisible = true
+      this.form.taskId = this.smTaskId
+      // this.form.aircraftId = { taskId: this.smTaskId }
+      // this.form.aircraftType = this.currentNode.label
+    },
+
+    openDialog2() {
+      this.dialogTitle2 = '新增'
+      this.dialogVisible2 = true
+      this.form2.taskId = this.smTaskId
+      // this.form.aircraftId = { taskId: this.smTaskId }
+      // this.form.aircraftType = this.currentNode.label
+    },
+
+    handleClose() {
+      this.dialogVisible = false
+      this.form = {
+        id: '',
+        taskId: '',
+        deviceName: '',
+        serialNumber: '',
+        deviceCode: '',
+        type: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      }
+    },
+
+    handleClose2() {
+      this.dialogVisible2 = false
+      this.form2 = {
+        id: '',
+        taskId: '',
+        personnel: '',
+        position: '',
+        quantity: '',
+        remarks: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      }
+    },
+
+    handUpdate(row) {
+      this.dialogTitle = '编辑'
+      this.form = deepClone(row)
+      this.dialogVisible = true
+    },
+
+    handUpdate2(row) {
+      this.dialogTitle2 = '编辑'
+      this.form2 = deepClone(row)
+      this.dialogVisible2 = true
+    },
+
+    submit() {
+      switch (this.dialogTitle) {
+        case '编辑':
+          this.updateResourceAllocationAPI()
+          this.handleClose()
+          break
+        case '新增':
+          this.addResourceAllocationAPI()
+          this.handleClose()
+          break
+      }
+    },
+
+    submit2() {
+      switch (this.dialogTitle) {
+        case '编辑':
+          this.updatePersonnelAllocationAPI()
+          this.handleClose2()
+          break
+        case '新增':
+          this.addPersonnelAllocationAPI()
+          this.handleClose2()
+          break
+      }
+    },
+
+    selection(val) {
+      this.tableCheckItems = val
+    },
+
+    selection2(val) {
+      this.tableCheckItems2 = val
+    },
+
+    remove(row) {
+      this.$confirm('是否删除该数据', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          this.tabActiveName === 'first' ? this.removeResourceAllocationAPI(row.map((e) => e.id)) : this.removePersonnelAllocationAPI(row.map((e) => e.id))
+        })
+        .catch(() => {})
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '../index.scss';
+</style>

+ 121 - 60
src/views/als/smTask/index.vue

@@ -6,10 +6,10 @@
     <div class="view-dataSpecies-right">
       <div class="view-dataType-title">
         <div class="view-dataType-title-btn">
-          <el-button type="success" @click="openDialog()" :disabled="currentNode && currentNode.type == 0">新增</el-button>
+          <el-button type="success" @click="openDialog()" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)">新增</el-button>
           <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
-          <el-button type="primary">导入模板</el-button>
-          <el-button type="primary">导出模板</el-button>
+          <el-button type="primary">导入</el-button>
+          <el-button type="primary">导出</el-button>
         </div>
         <div class="view-dataType-title-search">
           <el-input placeholder="请输入关键字" v-model="keyWord" class="input1">
@@ -23,20 +23,26 @@
       <!-- 添加或修改定检任务对话框 -->
       <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
         <el-form ref="form" :model="form" label-width="80px">
-          <el-form-item label="机号" prop="aircraftId">
-            <el-input v-model="form.aircraftId" placeholder="请输入机号" />
-          </el-form-item>
           <el-form-item label="机型" prop="aircraftModel">
-            <el-input v-model="form.aircraftModel" placeholder="请输入机型" />
+            <el-select v-model="form.aircraftModel" placeholder="请选择机型" disabled>
+              <el-option v-for="item in aircaftModelAll" :key="item.aircaftModelId" :label="item.aircaftModelName" :value="item.aircaftModelId"> </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="编目" prop="aircraftId">
+            <el-select v-model="form.aircraftId" placeholder="请选择编目">
+              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
+            </el-select>
           </el-form-item>
+
           <el-form-item label="任务名称" prop="name">
-            <el-date-picker clearable v-model="form.name" type="date" value-format="YYYY-MM-DD" placeholder="请选择任务名称"> </el-date-picker>
+            <!-- <el-input v-model="form.name" placeholder="请输入任务名称" /> -->
+            <el-date-picker clearable v-model="form.name" type="date" value-format="yyyy-MM-dd" placement="bottom-start" placeholder="请选择维修时间"> </el-date-picker>
           </el-form-item>
           <el-form-item label="任务编码" prop="code">
             <el-input v-model="form.code" placeholder="请输入任务编码" />
           </el-form-item>
           <el-form-item label="维修时间" prop="endTime">
-            <el-date-picker clearable v-model="form.endTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择维修时间"> </el-date-picker>
+            <el-date-picker clearable v-model="form.endTime" type="date" value-format="yyyy-MM-dd" placement="bottom-start" placeholder="请选择维修时间"> </el-date-picker>
           </el-form-item>
           <el-form-item label="剩余时间" prop="remainTime">
             <el-input v-model="form.remainTime" placeholder="请输入剩余时间" />
@@ -44,12 +50,12 @@
           <el-form-item label="专业" prop="specialty">
             <el-input v-model="form.specialty" placeholder="请输入专业" />
           </el-form-item>
-          <el-form-item label="下发日期" prop="issueDate">
+          <!-- <el-form-item label="下发日期" prop="issueDate">
             <el-date-picker clearable v-model="form.issueDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择下发日期"> </el-date-picker>
           </el-form-item>
           <el-form-item label="完成日期" prop="finishDate">
             <el-date-picker clearable v-model="form.finishDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择完成日期"> </el-date-picker>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="负责人" prop="headName">
             <el-input v-model="form.headName" placeholder="请输入负责人" />
           </el-form-item>
@@ -59,12 +65,12 @@
           <el-form-item label="维修内容" prop="contents">
             <el-input v-model="form.contents" placeholder="请输入维修内容" />
           </el-form-item>
-          <el-form-item label="质检员" prop="qcBy">
+          <!-- <el-form-item label="质检员" prop="qcBy">
             <el-input v-model="form.qcBy" placeholder="请输入质检员" />
           </el-form-item>
           <el-form-item label="填写人" prop="fillBy">
             <el-input v-model="form.fillBy" placeholder="请输入填写人" />
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="备注" prop="remark">
             <el-input v-model="form.remark" placeholder="请输入备注" />
           </el-form-item>
@@ -80,10 +86,13 @@
 </template>
 
 <script>
-import { getSmTask, getAircaftTypeAndModelTree, addSmTask, updateSmTask, removeSmTask } from '@/api/als/smTask'
+import { getSmTask, addSmTask, updateSmTask, removeSmTask } from '@/api/als/smTask'
 import { deepClone, debounce } from '@/utils/index'
+import { getAircaftTypeAndModelTree } from '@/api/als/sideTree'
+import { getAircaftModelAll, getAircaftCatalogAll } from '@/api/als/aircraft'
 export default {
   name: 'SmTask',
+
   components: {},
   data() {
     // 这里存放数据
@@ -92,8 +101,8 @@ export default {
       dialogVisible: false,
       keyWord: '',
       aircaftModelIdList: [],
-      currentNodeKey: null,
-      currentNode: null,
+      currentNodeKey: '',
+      currentNode: {},
       menuTreeData: [],
       treeObj: {
         title: '所属机种',
@@ -113,11 +122,27 @@ export default {
         { prop: 'id', label: '编号' },
         {
           prop: 'aircraftId',
-          label: '机号'
+          label: '编目',
+          render: (h, params) => {
+            const matchedItem = this.aircaftCatalogAll.find((item) => params.row.aircraftId.trim() === item.aircaftCatalogId.trim())
+            if (matchedItem) {
+              return h('span', matchedItem.aircaftCatalogCode)
+            } else {
+              return h('span', {}, '')
+            }
+          }
         },
         {
           prop: 'aircraftModel',
-          label: '机型'
+          label: '机型',
+          render: (h, params) => {
+            const matchedItem = this.aircaftModelAll.find((item) => params.row.aircraftModel === item.aircaftModelId)
+            if (matchedItem) {
+              return h('span', matchedItem.aircaftModelName)
+            } else {
+              return h('span', {}, '')
+            }
+          }
         },
         {
           prop: 'name',
@@ -135,18 +160,15 @@ export default {
           prop: 'remainTime',
           label: '剩余时间'
         },
-        {
-          prop: 'specialty',
-          label: '专业'
-        },
-        {
-          prop: 'issueDate',
-          label: '下发日期'
-        },
-        {
-          prop: 'finishDate',
-          label: '完成日期'
-        },
+
+        // {
+        //   prop: 'issueDate',
+        //   label: '下发日期'
+        // },
+        // {
+        //   prop: 'finishDate',
+        //   label: '完成日期'
+        // },
         {
           prop: 'headName',
           label: '负责人'
@@ -159,21 +181,28 @@ export default {
           prop: 'contents',
           label: '维修内容'
         },
-        {
-          prop: 'qcBy',
-          label: '质检员'
-        },
-        {
-          prop: 'fillBy',
-          label: '填写人'
-        },
+        // {
+        //   prop: 'qcBy',
+        //   label: '质检员'
+        // },
+        // {
+        //   prop: 'fillBy',
+        //   label: '填写人'
+        // },
         {
           prop: 'status',
           label: '状态'
         },
         {
           prop: 'remark',
-          label: '备注'
+          label: '备注',
+          render: (h, params) => {
+            if (params.row.status == 0) {
+              return h('span', { class: 'warning-state' }, '未分配')
+            } else {
+              return h('span', { class: 'success-state' }, '已分配')
+            }
+          }
         },
         {
           button: true,
@@ -186,7 +215,16 @@ export default {
               round: false,
               plain: false,
               onClick: (row, index, scope) => {
-                _this.handUpdate(row)
+                this.handUpdate(row)
+              }
+            },
+            {
+              name: '查看',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.checkDetails(row)
               }
             },
             {
@@ -195,7 +233,7 @@ export default {
               round: false,
               plain: false,
               onClick: (row, index, scope) => {
-                _this.remove([row])
+                this.remove([row])
               }
             }
           ]
@@ -244,7 +282,9 @@ export default {
         updateBy: '',
         updateTime: ''
       },
-      debounceFn: debounce(this.fetch, 500)
+      debounceFn: debounce(this.fetch, 500),
+      aircaftModelAll: [],
+      aircaftCatalogAll: []
     }
   },
   watch: {
@@ -260,23 +300,32 @@ export default {
     async getAircaftTypeAndModelTreeAPI(params) {
       const { data } = await getAircaftTypeAndModelTree(params)
       this.menuTreeData = data
+      const getAircaftModelAllParams = {
+        aircaftTypeCode: '',
+        aircaftTypeId: '',
+        queryParam: ''
+      }
+      const { data: data1 } = await getAircaftModelAll(getAircaftModelAllParams)
+      this.aircaftModelAll = data1
       if (data.length) {
-        this.currentNodeKey = data[0].value
+        this.currentNodeKey = data[0].id
         this.currentNode = data[0]
-        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children).map((e) => e.id)
-        this.getSmTaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children)
+          .map((e) => e.id)
+          .toString()
+        this.getSmTaskAPI({ aircraftType: this.aircaftModelIdList })
       }
     },
 
     async removeSmTaskAPI(params) {
       try {
-        const { success } = await removeSmTask(params)
-        if (success) {
+        const { code } = await removeSmTask(params)
+        if (code == 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
           })
-          await this.getSmTaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+          await this.getSmTaskAPI({ aircraftType: this.aircaftModelIdList })
           this.handleClose()
         }
       } catch (error) {}
@@ -304,17 +353,17 @@ export default {
       const { pageSize, pageIndex } = this.tableRequset
       const {
         data: { list, totalCount }
-      } = await getSmTask({ pageSize, pageIndex, keyWord, ...params })
+      } = await getSmTask({ pageSize, pageIndex, ...params })
       this.tableData = list
       this.tableRequset.total = totalCount
     },
 
     fetch() {
-      this.getSmTaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+      this.getSmTaskAPI({ aircraftType: this.aircaftModelIdList })
     },
 
     searchClick() {
-      this.getSmTaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+      this.getSmTaskAPI({ aircraftType: this.aircaftModelIdList })
     },
 
     async addSmTaskAPI() {
@@ -326,7 +375,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getSmTaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+          this.getSmTaskAPI({ aircraftType: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
@@ -339,24 +388,32 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getSmTaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+          this.getSmTaskAPI({ aircraftType: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
 
-    treeNodeClick(data) {
+    async treeNodeClick(data) {
       this.$refs.table.clearSelection()
-      this.currentNodeKey = data.id
+      this.currentNodeKey = this.form.aircraftType = data.id
       this.currentNode = data
-      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data]).map((e) => e.id)
-      this.getSmTaskAPI({ aircaftModelIdList: this.aircaftModelIdList })
+      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
+        .map((e) => e.id)
+        .toString()
+      this.getSmTaskAPI({ aircraftType: this.aircaftModelIdList })
+      const getAircaftCatalogAllParams = {
+        keyWord: '',
+        aircaftModelIdList: [this.currentNodeKey]
+      }
+      const { data: data2 } = await getAircaftCatalogAll(getAircaftCatalogAllParams)
+      this.aircaftCatalogAll = data2
     },
 
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircaftModelName = this.currentNode.label
-      this.form.aircaftModelId = this.currentNode.id
+      this.form.aircraftModel = this.currentNode.id
+      this.form.status = 0
     },
 
     handleClose() {
@@ -413,7 +470,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
@@ -422,6 +479,10 @@ export default {
           this.removeSmTaskAPI(row.map((e) => e.id))
         })
         .catch(() => {})
+    },
+
+    checkDetails(row) {
+      this.$router.push({ name: 'SMTaskDetails', params: { maintenanceaskId: row.id } })
     }
   }
 }

+ 78 - 39
src/views/als/warning/index.vue

@@ -6,13 +6,13 @@
     <div class="view-dataSpecies-right">
       <div class="view-dataType-title">
         <div class="view-dataType-title-btn">
-          <el-button type="success" @click="openDialog()" :disabled="currentNode && currentNode.type == 0">新增</el-button>
+          <el-button type="success" @click="openDialog()" :disabled="!(currentNode.type == 1 && currentNode.children.length == 0)">新增</el-button>
           <el-button type="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
-          <el-button type="primary">导入模板</el-button>
-          <el-button type="primary">导出模板</el-button>
+          <el-button type="primary">导入</el-button>
+          <el-button type="primary">导出</el-button>
         </div>
         <div class="view-dataType-title-search">
-          <el-input placeholder="请输入关键字" v-model="keyWord" class="input1">
+          <el-input placeholder="请输入警告名称" v-model="keyWordData" class="input1">
             <el-button slot="append" icon="el-icon-search" @click="searchClick"></el-button>
           </el-input>
         </div>
@@ -23,11 +23,17 @@
       <!-- 添加或修改警告信息对话框 -->
       <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
         <el-form ref="form" :model="form" label-width="80px">
-          <el-form-item label="架次号" prop="sortieNo">
-            <el-input v-model="form.sortieNo" placeholder="请输入架次号" />
+          <el-form-item label="编目" prop="aircraftId">
+            <!-- <el-input v-model="form.aircraftId" placeholder="请输入机号" /> -->
+            <el-select v-model="form.aircraftId" placeholder="请选择编目" @change="changeAircraftId(form.aircraftId)">
+              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
+            </el-select>
           </el-form-item>
-          <el-form-item label="机号" prop="aircraftId">
-            <el-input v-model="form.aircraftId" placeholder="请输入机号" />
+          <el-form-item label="架次号" prop="sortieNo">
+            <!-- <el-input v-model="form.sortieNo" placeholder="请输入架次号" /> -->
+            <el-select v-model="form.sortieNo" placeholder="请选择架次号">
+              <el-option v-for="item in sortieNoList" :key="item.id" :label="item.sortieNo" :value="item.id"> </el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="警告代码" prop="code">
             <el-input v-model="form.code" placeholder="请输入警告代码" />
@@ -50,8 +56,11 @@
 </template>
 
 <script>
-import { getWarning, getAircaftTypeAndModelTree, addWarning, updateWarning, removeWarning } from '@/api/als/warning'
+import { getWarning, addWarning, updateWarning, removeWarning } from '@/api/als/warning'
+import { getAircaftCatalogTree } from '@/api/als/sideTree'
+import { getAircaftCatalogAll } from '@/api/als/aircraft'
 import { deepClone, debounce } from '@/utils/index'
+import { getDataImport } from '@/api/als/dataImport'
 export default {
   name: 'Warning',
   components: {},
@@ -60,10 +69,10 @@ export default {
     return {
       dialogTitle: '新增',
       dialogVisible: false,
-      keyWord: '',
+      keyWordData: '',
       aircaftModelIdList: [],
-      currentNodeKey: null,
-      currentNode: null,
+      currentNodeKey: '',
+      currentNode: {},
       menuTreeData: [],
       treeObj: {
         title: '所属机种',
@@ -87,7 +96,15 @@ export default {
         },
         {
           prop: 'aircraftId',
-          label: '机号'
+          label: '编目',
+          render: (h, params) => {
+            const matchedItem = this.aircaftCatalogAll.find((item) => params.row.aircraftId.trim() === item.aircaftCatalogId.trim())
+            if (matchedItem) {
+              return h('span', matchedItem.aircaftCatalogCode)
+            } else {
+              return h('span', {}, '')
+            }
+          }
         },
         {
           prop: 'code',
@@ -116,7 +133,7 @@ export default {
               round: false,
               plain: false,
               onClick: (row, index, scope) => {
-                _this.handUpdate(row)
+                this.handUpdate(row)
               }
             },
             {
@@ -125,7 +142,7 @@ export default {
               round: false,
               plain: false,
               onClick: (row, index, scope) => {
-                _this.remove([row])
+                this.remove([row])
               }
             }
           ]
@@ -164,7 +181,9 @@ export default {
         updateBy: '',
         updateTime: ''
       },
-      debounceFn: debounce(this.fetch, 500)
+      debounceFn: debounce(this.fetch, 500),
+      aircaftCatalogAll: [],
+      sortieNoList: []
     }
   },
   watch: {
@@ -174,29 +193,37 @@ export default {
     }
   },
   mounted() {
-    this.getAircaftTypeAndModelTreeAPI()
+    this.getAircaftCatalogTreeAPI()
   },
   methods: {
-    async getAircaftTypeAndModelTreeAPI(params) {
-      const { data } = await getAircaftTypeAndModelTree(params)
+    async getAircaftCatalogTreeAPI(params) {
+      const { data } = await getAircaftCatalogTree(params)
       this.menuTreeData = data
+      const getAircaftCatalogAllParams = {
+        keyWord: '',
+        aircaftModelIdList: []
+      }
+      const { data: data2 } = await getAircaftCatalogAll(getAircaftCatalogAllParams)
+      this.aircaftCatalogAll = data2
       if (data.length) {
-        this.currentNodeKey = data[0].value
+        this.currentNodeKey = data[0].id
         this.currentNode = data[0]
-        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children).map((e) => e.id)
-        this.getWarningAPI({ aircaftModelIdList: this.aircaftModelIdList })
+        this.aircaftModelIdList = this.getTreeLeafData(data[0]?.children)
+          .map((e) => e.id)
+          .toString()
+        this.getWarningAPI({ aircraftId: this.aircaftModelIdList })
       }
     },
 
     async removeWarningAPI(params) {
       try {
-        const { success } = await removeWarning(params)
-        if (success) {
+        const { code } = await removeWarning(params)
+        if (code === 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
           })
-          await this.getWarningAPI({ aircaftModelIdList: this.aircaftModelIdList })
+          await this.getWarningAPI({ aircraftId: this.aircaftModelIdList })
           this.handleClose()
         }
       } catch (error) {}
@@ -224,42 +251,42 @@ export default {
       const { pageSize, pageIndex } = this.tableRequset
       const {
         data: { list, totalCount }
-      } = await getWarning({ pageSize, pageIndex, keyWord, ...params })
+      } = await getWarning({ pageSize, pageIndex, ...params })
       this.tableData = list
       this.tableRequset.total = totalCount
     },
 
     fetch() {
-      this.getWarningAPI({ aircaftModelIdList: this.aircaftModelIdList })
+      this.getWarningAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     searchClick() {
-      this.getWarningAPI({ aircaftModelIdList: this.aircaftModelIdList })
+      this.getWarningAPI({ aircraftId: this.aircaftModelIdList, name: this.keyWordData })
     },
 
     async addWarningAPI() {
       try {
         delete this.form.aircaftModelName
-        const { success } = await addWarning({ ...this.form })
-        if (success) {
+        const { code } = await addWarning({ ...this.form })
+        if (code === 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
           })
-          this.getWarningAPI({ aircaftModelIdList: this.aircaftModelIdList })
+          this.getWarningAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
 
     async updateWarningAPI() {
       try {
-        const { success } = await updateWarning({ ...this.form })
-        if (success) {
+        const { code } = await updateWarning({ ...this.form })
+        if (code === 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
           })
-          this.getWarningAPI({ aircaftModelIdList: this.aircaftModelIdList })
+          this.getWarningAPI({ aircraftId: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
@@ -268,15 +295,19 @@ export default {
       this.$refs.table.clearSelection()
       this.currentNodeKey = data.id
       this.currentNode = data
-      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data]).map((e) => e.id)
-      this.getWarningAPI({ aircaftModelIdList: this.aircaftModelIdList })
+      this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
+        .map((e) => e.id)
+        .toString()
+      this.getWarningAPI({ aircraftId: this.aircaftModelIdList })
     },
 
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircaftModelName = this.currentNode.label
-      this.form.aircaftModelId = this.currentNode.id
+      this.form.aircraftId = this.currentNode.id
+      if (this.form.aircraftId !== '') {
+        this.changeAircraftId(this.form.aircraftId)
+      }
     },
 
     handleClose() {
@@ -302,6 +333,7 @@ export default {
     handUpdate(row) {
       this.dialogTitle = '编辑'
       this.form = deepClone(row)
+      this.form.aircraftId = this.currentNode.id
       this.dialogVisible = true
     },
 
@@ -323,7 +355,7 @@ export default {
     },
 
     remove(row) {
-      this.$confirm('是否删除该机种', '提示', {
+      this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
@@ -332,6 +364,13 @@ export default {
           this.removeWarningAPI(row.map((e) => e.id))
         })
         .catch(() => {})
+    },
+    async changeAircraftId(aircraftId) {
+      const {
+        data: { list }
+      } = await getDataImport({ aircraftId })
+      console.log('list', list)
+      this.sortieNoList = list
     }
   }
 }