Rmengdi 7 сар өмнө
parent
commit
86140d7ef7

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

@@ -0,0 +1,21 @@
+import { get, put, post, deletes } from '@/http/index'
+
+// 获取数据列
+export const getColumnDataAPI = async (ossId) => {
+  return await get('/als/algorithm/' + ossId)
+}
+
+// 执行预处理算法
+export const executePreProcessing = async (data) => {
+  return await post('/als/algorithm/execute/pro', data)
+}
+
+// 执行虚警算法
+export const executeFalseAlarm = async (data) => {
+  return await post('/als/algorithm/execute/falseAlarm', data)
+}
+
+// 执行故障诊断算法
+export const executeFault = async (data) => {
+  return await post('/als/algorithm/execute/fault', data)
+}

+ 23 - 4
src/api/als/dataImport.js

@@ -25,7 +25,26 @@ export const getAircaftTypeAndModelTree = async (data) => {
   return await get('/basicdata/aircaftCatalog/getAircaftTypeAndModelTree', data)
 }
 
-// 导出下载数据
-// export const exportDownApi = (data) => {
-//   return http.downloadPost('/system/user/export', data, { loading: false })
-// }
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.downloadPost('/als/dataImport/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataImportDataApi = (data) => {
+  return http.post('/als/dataImport/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportDataImportApi = (data) => {
+  return http.post('/als/dataImport/export', data)
+}

+ 5 - 0
src/api/als/maintenanceask.js

@@ -5,6 +5,11 @@ export const getMaintenanceask = async (data) => {
   return await get('/als/maintenanceask/list', data)
 }
 
+// 查询维修任务详情
+export const getMaintenanceaskInfo = async (id) => {
+  return await get('/als/maintenanceask/' + id)
+}
+
 // 新增维修任务
 export const addMaintenanceask = async (data) => {
   return await post('/als/maintenanceask', data)

+ 1 - 0
src/main.js

@@ -13,6 +13,7 @@ import './pemission'
 import { resolveBlob } from '@/utils'
 // 文件上传组件
 import FileUpload from '@/views/als/components/FileUpload'
+import '@/views/als/utils/enum-data'
 
 // 全局设置消息框 点击屏幕外部不能关闭
 ElementUI.MessageBox.setDefaults({ closeOnClickModal: false })

+ 54 - 44
src/router/modules/als/dataManage.js

@@ -15,7 +15,7 @@ export const flightData = {
       component: () => import('@/views/als/flightData/index.vue'),
       meta: {
         title: '飞参数据',
-        noCache: true
+        sort: 2
       }
     }
   ]
@@ -34,7 +34,8 @@ export const MDCData = {
       path: '/dataManage/MDCData',
       component: () => import('@/views/als/MDCData/index.vue'),
       meta: {
-        title: 'MDC数据'
+        title: 'MDC数据',
+        sort: 1
       }
     }
   ]
@@ -53,7 +54,8 @@ export const trainingData = {
       path: '/dataManage/trainingData',
       component: () => import('@/views/als/trainingData/index.vue'),
       meta: {
-        title: '作训数据'
+        title: '作训数据',
+        sort: 3
       }
     }
   ]
@@ -96,10 +98,10 @@ export const trainingData = {
 //     }
 //   ]
 // }
-export const maintenanceask = {
+export const smTask = {
   path: '/dataManage',
-  redirect: '/dataManage/maintenanceask',
-  name: 'MaintenanceRecord',
+  redirect: '/dataManage/smTask',
+  name: 'SmTask',
   component: Layout,
   meta: {
     title: '业务数据管理',
@@ -107,16 +109,17 @@ export const maintenanceask = {
   },
   children: [
     {
-      path: '/dataManage/maintenanceask',
-      component: () => import('@/views/als/maintenanceask/index.vue'),
+      path: '/dataManage/smTask',
+      component: () => import('@/views/als/smTask/index.vue'),
       meta: {
-        title: '维修任务'
+        title: '定检任务',
+        sort: 4
       }
     },
     {
-      path: '/dataManage/maintenanceask/viewDetails',
-      component: () => import('@/views/als/maintenanceask/viewDetails.vue'),
-      name: 'ViewDetails',
+      path: '/dataManage/smTask/SMTaskDetails',
+      component: () => import('@/views/als/smTask/SMTaskDetails.vue'),
+      name: 'SMTaskDetails',
       meta: {
         title: '任务分配',
         hide: true
@@ -124,10 +127,10 @@ export const maintenanceask = {
     }
   ]
 }
-export const smTask = {
+export const maintenanceask = {
   path: '/dataManage',
-  redirect: '/dataManage/smTask',
-  name: 'SmTask',
+  redirect: '/dataManage/maintenanceask',
+  name: 'MaintenanceRecord',
   component: Layout,
   meta: {
     title: '业务数据管理',
@@ -135,16 +138,17 @@ export const smTask = {
   },
   children: [
     {
-      path: '/dataManage/smTask',
-      component: () => import('@/views/als/smTask/index.vue'),
+      path: '/dataManage/maintenanceask',
+      component: () => import('@/views/als/maintenanceask/index.vue'),
       meta: {
-        title: '定检任务'
+        title: '维修任务',
+        sort: 5
       }
     },
     {
-      path: '/dataManage/smTask/SMTaskDetails',
-      component: () => import('@/views/als/smTask/SMTaskDetails.vue'),
-      name: 'SMTaskDetails',
+      path: '/dataManage/maintenanceask/viewDetails',
+      component: () => import('@/views/als/maintenanceask/viewDetails.vue'),
+      name: 'ViewDetails',
       meta: {
         title: '任务分配',
         hide: true
@@ -152,6 +156,7 @@ export const smTask = {
     }
   ]
 }
+
 export const partReplacement = {
   path: '/dataManage',
   redirect: '/dataManage/partReplacement',
@@ -166,31 +171,13 @@ export const partReplacement = {
       path: '/dataManage/partReplacement',
       component: () => import('@/views/als/partReplacement/index.vue'),
       meta: {
-        title: '换件记录'
+        title: '换件记录',
+        sort: 6
       }
     }
   ]
 }
 
-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',
@@ -205,7 +192,8 @@ export const airConfiguration = {
       path: '/dataManage/airConfiguration',
       component: () => import('@/views/als/airConfiguration/index.vue'),
       meta: {
-        title: '构型管理'
+        title: '构型管理',
+        sort: 7
       }
     }
   ]
@@ -224,7 +212,8 @@ export const faultCase = {
       path: '/dataManage/faultCase',
       component: () => import('@/views/als/faultCase/index.vue'),
       meta: {
-        title: '故障案例'
+        title: '故障案例',
+        sort: 8
       }
     }
   ]
@@ -243,7 +232,28 @@ export const airInstall = {
       path: '/dataManage/airInstall',
       component: () => import('@/views/als/airInstall/index.vue'),
       meta: {
-        title: '装机管理'
+        title: '装机管理',
+        sort: 9
+      }
+    }
+  ]
+}
+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: '警告列表',
+        sort: 10
       }
     }
   ]

+ 85 - 14
src/views/als/MDCData/index.vue

@@ -9,7 +9,8 @@
           <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" @click="downloadFile">导出</el-button>
+          <!--  @click="handleImport"  @click="handleExport"-->
+          <el-button type="primary">导出</el-button>
         </div>
         <div class="view-dataType-title-search">
           <el-input placeholder="请输入架次号" v-model="keyWordData" class="input1">
@@ -57,6 +58,22 @@
         </span>
       </el-dialog>
     </div>
+    <!-- <ImportExcel ref="dialogRef" /> -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip"><el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据</div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -65,9 +82,11 @@ import { getDataImport, addDataImport, updateDataImport, removeDataImport } from
 import { getAircaftCatalogTree, getAircaftTypeAndModelTree } from '@/api/als/sideTree'
 import { getAircaftModelAll, getAircaftCatalogAll } from '@/api/als/aircraft'
 import { deepClone, debounce } from '@/utils/index'
+import { getItem } from '@/utils/index'
+// import ImportExcel from '@/api/als/ImportExcel/index.vue'
 export default {
   name: 'MDCData',
-  components: {},
+  // components: { ImportExcel },
   data() {
     // 这里存放数据
     return {
@@ -188,7 +207,20 @@ export default {
       },
       debounceFn: debounce(this.fetch, 500),
       aircaftModelAll: [],
-      aircaftCatalogAll: []
+      aircaftCatalogAll: [],
+      upload: {
+        open: false,
+        title: '',
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        // headers: { Authorization: 'Bearer ' + getToken() },
+        headers: { Authorization: getItem('token') },
+        // 上传的地址
+        url: '/als' + '/dataImport/importData'
+      }
     }
   },
   watch: {
@@ -376,17 +408,56 @@ export default {
         })
         .catch(() => {})
     },
-    async downloadFile() {
-      this.$confirm('确认导出飞参数据?', '温馨提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      })
-        .then(() => {
-          //       exportDownApi(proTable.value?.searchParam)
-          // taskDialogRef.value?.openExportDialog()
-        })
-        .catch(() => {})
+    // async downloadFile() {
+    //   this.$confirm('确认导出飞参数据?', '温馨提示', {
+    //     confirmButtonText: '确定',
+    //     cancelButtonText: '取消',
+    //     type: 'warning'
+    //   })
+    //     .then(() => {
+    //       //       exportDownApi(proTable.value?.searchParam)
+    //       // taskDialogRef.value?.openExportDialog()
+    //     })
+    //     .catch(() => {})
+    // },
+    // handleImport() {
+    //   this.upload.title = '用户导入'
+    //   this.upload.open = true
+    // }
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        'dataImport/export',
+        {
+          ...this.queryParams
+        },
+        `user_${new Date().getTime()}.xlsx`
+      )
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '用户导入'
+      this.upload.open = true
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download('dataImport/importTemplate', {}, `user_template_${new Date().getTime()}.xlsx`)
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false
+      this.upload.isUploading = false
+      this.$refs.upload.clearFiles()
+      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + '</div>', '导入结果', { dangerouslyUseHTMLString: true })
+      // this.getList()
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit()
     }
   }
 }

+ 24 - 20
src/views/als/airConfiguration/index.vue

@@ -43,7 +43,7 @@
             <el-input v-model="form.supplier" placeholder="请输入供应商" />
           </el-form-item>
           <el-form-item label="描述" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入描述" />
+            <el-input type="textarea" :rows="2" v-model="form.remarks" placeholder="请输入描述" />
           </el-form-item>
         </el-form>
 
@@ -92,7 +92,17 @@ export default {
       },
       searchValue: '',
       columns: [
-        { prop: 'id', label: '唯一ID' },
+        // { prop: 'id', label: '唯一ID' },
+        {
+          prop: 'name',
+          label: '产品名称',
+          align: 'left'
+        },
+        {
+          prop: 'conCode',
+          label: '构型编码'
+        },
+
         {
           prop: 'aircraftType',
           label: '机型',
@@ -105,14 +115,7 @@ export default {
             }
           }
         },
-        {
-          prop: 'conCode',
-          label: '构型编码'
-        },
-        {
-          prop: 'name',
-          label: '产品名称'
-        },
+
         {
           prop: 'specsModel',
           label: '规格型号'
@@ -273,16 +276,16 @@ export default {
       if (this.$refs.table) this.$refs.table.clearSelection()
       const { keyWord } = this
       const { pageSize, pageIndex } = this.tableRequset
-      const { data } = await getAirConfiguration({ pageSize, pageIndex, ...params })
-      this.tableData = []
-      if (!(this.currentNode.type == 1 && this.currentNode.children.length == 0)) {
-        if (data?.length !== 0) {
-          const allData = handleTree(data, 'id')
-          this.tableData = allData
-        }
-      } else {
-        const menu = { id: 1, aircraftType: this.currentNode.id, name: '整机', children: [] }
-        if (data?.length !== 0) {
+      const { data, code } = await getAirConfiguration({ pageSize, pageIndex, ...params })
+      if (code === 200) {
+        this.tableData = []
+        if (!(this.currentNode.type == 1 && this.currentNode.children.length == 0)) {
+          if (data?.length !== 0) {
+            const allData = handleTree(data, 'id')
+            this.tableData = allData
+          }
+        } else {
+          const menu = { id: 1, aircraftType: this.currentNode.id, name: '整机', children: [] }
           menu.children = handleTree(data, 'id')
           this.tableData.push(menu)
         }
@@ -328,6 +331,7 @@ export default {
       this.$refs.table.clearSelection()
       this.currentNodeKey = data.id
       this.currentNode = data
+      console.log('this.currentNode', this.currentNode)
       this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
         .map((e) => e.id)
         .toString()

+ 96 - 49
src/views/als/airInstall/index.vue

@@ -26,11 +26,14 @@
       <!-- 添加或修改装机信息对话框 -->
       <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="materialCode">
-            <el-input v-model="form.materialCode" placeholder="请输入航材编码" />
+          <el-form-item label="器材编码" prop="devicesEncode">
+            <el-input v-model="form.devicesEncode" placeholder="请输入航材编码" />
           </el-form-item>
-          <el-form-item label="航材名称" prop="materialName">
-            <el-input v-model="form.materialName" placeholder="请输入航材名称" />
+          <el-form-item label="器材代码" prop="devicesCode">
+            <el-input v-model="form.devicesCode" placeholder="请输入航材代码" />
+          </el-form-item>
+          <el-form-item label="器材名称" prop="devicesName">
+            <el-input v-model="form.devicesName" placeholder="请输入器材名称" />
           </el-form-item>
           <el-form-item label="规格型号" prop="specsModel">
             <el-input v-model="form.specsModel" placeholder="请输入规格型号" />
@@ -45,23 +48,31 @@
             <el-input v-model="form.quantity" placeholder="请输入装机数量" />
           </el-form-item>
           <el-form-item label="装机时间" prop="installTime">
-            <!-- <el-input v-model="form.installTime" placeholder="请输入装机时间" /> -->
-            <el-date-picker v-model="form.installTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择装机时间"></el-date-picker>
+            <el-date-picker v-model="form.installTime" type="date" placement="bottom-start" value-format="yyyy-MM-dd" placeholder="请选择装机时间"></el-date-picker>
+          </el-form-item>
+          <el-form-item label="软件版本" prop="softwareVersion">
+            <el-input v-model="form.softwareVersion" placeholder="请输入软件版本" />
           </el-form-item>
           <el-form-item label="是否可修" prop="repairable">
-            <el-radio v-model="form.repairable" label="0">否</el-radio>
-            <el-radio v-model="form.repairable" label="1">是</el-radio>
+            <el-select v-model="form.repairable" placeholder="请选择是否可修">
+              <el-option label="是" value="1"></el-option>
+              <el-option label="否" value="0"></el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="是否成套" prop="completeSet">
-            <el-radio v-model="form.completeSet" label="0">否</el-radio>
-            <el-radio v-model="form.completeSet" label="1">是</el-radio>
+            <el-select v-model="form.completeSet" placeholder="请选择是否成套">
+              <el-option label="是" value="1"></el-option>
+              <el-option label="否" value="0"></el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="是否有寿" prop="serviceLife">
-            <el-radio v-model="form.serviceLife" label="0">否</el-radio>
-            <el-radio v-model="form.serviceLife" label="1">是</el-radio>
+            <el-select v-model="form.serviceLife" placeholder="请选择是否有寿">
+              <el-option label="是" value="1"></el-option>
+              <el-option label="否" value="0"></el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 
@@ -80,6 +91,7 @@ import { getAircaftCatalogTree, getAircaftTypeAndModelTree } from '@/api/als/sid
 import { getAircaftModelAll, getAircaftCatalogAll } from '@/api/als/aircraft'
 import { getAirConfiguration } from '@/api/als/airConfiguration'
 import { deepClone, debounce } from '@/utils/index'
+import { handleTree } from '../utils/common'
 export default {
   name: 'AirInstall',
   components: {},
@@ -89,7 +101,7 @@ export default {
       dialogTitle: '新增',
       dialogVisible: false,
       keyWord: '',
-      aircaftModelIdList: [],
+      aircaftConfigIdList: [],
       currentNodeKey: '',
       currentNode: {},
       currentConfigNodeKey: '',
@@ -120,14 +132,17 @@ export default {
       },
       searchValue: '',
       columns: [
-        { prop: 'id', label: '唯一ID' },
         {
-          prop: 'materialCode',
-          label: '航材编码'
+          prop: 'devicesEncode',
+          label: '器材编码'
+        },
+        {
+          prop: 'devicesCode',
+          label: '器材代码'
         },
         {
-          prop: 'materialName',
-          label: '航材名称'
+          prop: 'devicesName',
+          label: '材名称'
         },
         {
           prop: 'specsModel',
@@ -149,22 +164,47 @@ export default {
           prop: 'installTime',
           label: '装机时间'
         },
+        {
+          prop: 'softwareVersion',
+          label: '软件版本'
+        },
         {
           prop: 'repairable',
-          label: '是否可修'
+          label: '是否可修',
+          render: (h, params) => {
+            if (params.row.repairable == 1) {
+              return h('span', '是')
+            } else {
+              return h('span', '否')
+            }
+          }
         },
         {
           prop: 'completeSet',
-          label: '是否成套'
+          label: '是否成套',
+          render: (h, params) => {
+            if (params.row.completeSet == 1) {
+              return h('span', '是')
+            } else {
+              return h('span', '否')
+            }
+          }
         },
         {
           prop: 'serviceLife',
-          label: '是否有寿'
+          label: '是否有寿',
+          render: (h, params) => {
+            if (params.row.serviceLife == 1) {
+              return h('span', '是')
+            } else {
+              return h('span', '否')
+            }
+          }
         },
         {
           button: true,
           label: '操作',
-          width: '240px',
+          width: '200px',
           group: [
             {
               name: '编辑',
@@ -172,7 +212,7 @@ export default {
               round: false,
               plain: false,
               onClick: (row, index, scope) => {
-                _this.handUpdate(row)
+                this.handUpdate(row)
               }
             },
             {
@@ -181,7 +221,7 @@ export default {
               round: false,
               plain: false,
               onClick: (row, index, scope) => {
-                _this.remove([row])
+                this.remove([row])
               }
             }
           ]
@@ -189,8 +229,8 @@ export default {
       ],
       options: {
         stripe: true, // 斑马纹
-        mutiSelect: true, // 多选框
-        index: false, // 显示序号, 多选则 mutiSelect
+        mutiSelect: false, // 多选框
+        index: true, // 显示序号, 多选则 mutiSelect
         loading: false, // 表格动画
         initTable: false, // 是否一挂载就加载数据
         border: true,
@@ -206,16 +246,19 @@ export default {
       },
       form: {
         id: '',
-        materialCode: '',
-        materialName: '',
+        configId: '',
+        devicesEncode: '',
+        devicesCode: '',
+        devicesName: '',
         specsModel: '',
         drawingNumber: '',
         category: '',
         quantity: '',
         installTime: '',
-        repairable: '0',
-        completeSet: '0',
-        serviceLife: '0',
+        softwareVersion: '',
+        repairable: '',
+        completeSet: '',
+        serviceLife: '',
         remarks: '',
         tenantId: '',
         delFlag: '',
@@ -256,7 +299,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          await this.getAirInstallAPI({ airConfigurationId: this.currentConfigNodeKey })
+          await this.getAirInstallAPI({ configId: this.currentConfigNodeKey })
           this.handleClose()
         }
       } catch (error) {}
@@ -290,11 +333,11 @@ export default {
     },
 
     fetch() {
-      this.getAirInstallAPI({ airConfigurationId: this.currentConfigNodeKey })
+      this.getAirInstallAPI({ configId: this.currentConfigNodeKey })
     },
 
     searchClick() {
-      this.getAirInstallAPI({ airConfigurationId: this.currentConfigNodeKey })
+      this.getAirInstallAPI({ configId: this.currentConfigNodeKey })
     },
 
     async addAirInstallAPI() {
@@ -306,7 +349,8 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getAirInstallAPI({ airConfigurationId: this.currentConfigNodeKey })
+          this.handleClose()
+          this.getAirInstallAPI({ configId: this.currentConfigNodeKey })
         }
       } catch (error) {}
     },
@@ -319,7 +363,8 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          this.getAirInstallAPI({ airConfigurationId: this.currentConfigNodeKey })
+          this.handleClose()
+          this.getAirInstallAPI({ configId: this.currentConfigNodeKey })
         }
       } catch (error) {}
     },
@@ -330,41 +375,45 @@ export default {
       // this.currentNode = data
       // this.form.aircraftType = data.label
       // this.getAirInstallAPI(this.currentNodeKey)
+      console.log('data', data)
       this.configTreeData = []
       const { data: data1 } = await getAirConfiguration({ aircraftType: data.parentId })
       const topNode = { id: 1, name: '整机', children: [] }
-      topNode.children = data1
+      // topNode.children = data1
+      topNode.children = handleTree(data1, 'id')
       this.configTreeData.push(topNode)
     },
 
     treeConfigNodeClick(data) {
       this.$refs.table.clearSelection()
-      this.currentConfigNodeKey = data.id
+      this.currentConfigNodeKey = this.form.configId = data.id
       this.currentConfigNode = data
-      this.getAirInstallAPI({ airConfigurationId: this.currentConfigNodeKey })
+      this.getAirInstallAPI({ configId: this.currentConfigNodeKey })
     },
 
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircraftId = this.currentNodeKey
-      this.form.aircraftType = this.currentNode.label
+      this.form.configId = this.currentConfigNodeKey
     },
 
     handleClose() {
       this.dialogVisible = false
       this.form = {
         id: '',
-        materialCode: '',
-        materialName: '',
+        configId: '',
+        devicesEncode: '',
+        devicesCode: '',
+        devicesName: '',
         specsModel: '',
         drawingNumber: '',
         category: '',
         quantity: '',
         installTime: '',
-        repairable: '0',
-        completeSet: '0',
-        serviceLife: '0',
+        softwareVersion: '',
+        repairable: '',
+        completeSet: '',
+        serviceLife: '',
         remarks: '',
         tenantId: '',
         delFlag: '',
@@ -386,11 +435,9 @@ export default {
       switch (this.dialogTitle) {
         case '编辑':
           this.updateAirInstallAPI()
-          this.handleClose()
           break
         case '新增':
           this.addAirInstallAPI()
-          this.handleClose()
           break
       }
     },

+ 173 - 0
src/views/als/components/ImportExcel/index.vue

@@ -0,0 +1,173 @@
+<template>
+  <div>
+    <el-dialog v-model="dialogVisible" :width="width" :top="top" :title="`${title}`" :destroy-on-close="true" draggable>
+      <el-form class="drawer-multiColumn-form" label-width="100px">
+        <el-form-item label="文件上传">
+          <el-upload
+            ref="uploadRef"
+            action="#"
+            class="upload"
+            :drag="true"
+            :auto-upload="false"
+            :limit="limit"
+            :multiple="multiple"
+            :show-file-list="true"
+            :http-request="uploadExcel"
+            :before-upload="beforeExcelUpload"
+            :on-exceed="handleExceed"
+            :on-success="excelUploadSuccess"
+            :on-error="excelUploadError"
+            :accept="fileType.join(',')"
+          >
+            <slot name="empty">
+              <el-icon class="el-icon--upload">
+                <upload-filled />
+              </el-icon>
+              <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+            </slot>
+            <template #tip>
+              <slot name="tip">
+                <div class="el-upload__tip text-center">
+                  <el-checkbox v-model="isCover">是否更新已存在的数据</el-checkbox>
+                </div>
+                <div class="el-upload__tip text-center">
+                  请上传 .xls , .xlsx 标准格式文件,文件最大为 {{ fileSize }}M。
+                  <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="downloadTemp"> 模板下载 </el-link>
+                </div>
+              </slot>
+            </template>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button type="primary" @click="handleSubmit">确认</el-button>
+          <el-button @click="dialogVisible = false">取消</el-button>
+        </span>
+      </template>
+    </el-dialog>
+    <!-- <TaskDialog ref="taskDialogRef" /> -->
+  </div>
+</template>
+<script>
+export default {
+  name: 'ImportExcel',
+  components: {},
+  props: {
+    parameter: {
+      type: Object,
+      default: function () {
+        return {
+          // tempApi:
+        }
+      }
+    },
+    width: {
+      type: Number,
+      default: 500
+    },
+    // 离顶部距离
+    top: {
+      type: String,
+      default: '20vh'
+    },
+    // 数量限制
+    limit: {
+      type: Number,
+      default: 1
+    },
+    // 名称
+    title: {
+      type: String,
+      default: ''
+    },
+    multiple: {
+      type: Boolean,
+      default: false
+    },
+    // 大小限制(MB)
+    fileSize: {
+      type: Number,
+      default: 500
+    },
+    // 文件类型
+    fileType: {
+      type: Array,
+      default: ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      isCover: false
+    }
+  },
+  mounted() {},
+  methods: {
+    /**
+     * @description 文件上传之前判断
+     * @param file 上传的文件
+     * */
+    beforeExcelUpload(file) {
+      const isExcel = this.fileType?.includes(file.type)
+      const fileSize = file.size / 1024 / 1024 < this.fileSize
+      if (!isExcel)
+        ElNotification({
+          title: '温馨提示',
+          message: '上传文件只能是 xls / xlsx 格式!',
+          type: 'warning'
+        })
+      if (!fileSize)
+        setTimeout(() => {
+          ElNotification({
+            title: '温馨提示',
+            message: `上传文件大小不能超过 ${this.fileSize}MB!`,
+            type: 'warning'
+          })
+        }, 0)
+      return isExcel && fileSize
+    },
+
+    // 文件数超出提示
+    handleExceed() {
+      ElNotification({
+        title: '温馨提示',
+        message: '最多只能上传一个文件!',
+        type: 'warning'
+      })
+    },
+
+    // 上传错误提示
+    excelUploadError() {
+      ElNotification({
+        title: '温馨提示',
+        message: `批量添加${this.title}失败,请您重新上传!`,
+        type: 'error'
+      })
+    },
+
+    // 文件上传
+    async uploadExcel(param) {
+      let excelFormData = new FormData()
+      excelFormData.append('file', param.file)
+      excelFormData.append('updateSupport', isCover)
+      // await parameter.value.importApi?(excelFormData)
+      // parameter.value.getTableList && parameter.value.getTableList()
+      dialogVisible.value = false
+    },
+    excelUploadSuccess() {
+      this.dialogVisible = false
+      // taskDialogRef.value?.openImportDialog()
+    },
+
+    // Excel 导入模板下载
+    downloadTemp() {
+      if (!parameter.value.tempApi) return
+      useDownload(parameter.value.tempApi, `${parameter.value.title}_template_${new Date().getTime()}`)
+    },
+    handleSubmit() {
+      this.$refs.uploadRef.submit()
+    }
+  }
+}
+</script>

+ 186 - 72
src/views/als/falseAlarm/index.vue

@@ -20,41 +20,42 @@
       </div>
       <!-- 添加或修改虚警抑制对话框 -->
       <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800px" :before-close="handleClose">
-        <el-form ref="form" :model="form" label-width="80px">
+        <el-form ref="executeForm" :model="executeForm" label-width="80px">
           <el-form-item label="编目" prop="aircraftId">
-            <el-select v-model="form.aircraftId" placeholder="请选择编目" @change="changeAircraftId(form.aircraftId)">
+            <el-select v-model="executeForm.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" @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>
+            <LTable ref="sortieNoTableRef" @selection-change="sortieNoSelection" class="single-select-table" :columns="sortieNoColumns" :dataSource="sortieNoList" :options="sortieNoOptions" :pagination="SortieNoTableRequset"></LTable>
           </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 label="警告列表" prop="warningIds">
+            <el-table ref="warningTableRef" :data="warningIdsList" @selection-change="warningSelection" style="width: 100%; height: 200px">
+              <el-table-column type="selection" width="55"></el-table-column>
+              <el-table-column prop="id" label="警告ID"> </el-table-column>
+              <el-table-column prop="name" label="名称"> </el-table-column>
+              <el-table-column prop="describe" label="描述"> </el-table-column>
+            </el-table>
+            <!-- <el-select v-model="executeForm.warningIds" placeholder="请选择警告列表">
+              <el-option v-for="item in warningIdsList" :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-form-item label="模型类型" prop="modelType">
+            <el-select v-model="executeForm.modelType" placeholder="请选择模型类型" @change="changeModelType(executeForm.modelType)">
+              <el-option v-for="item in [$enumData.agloModelList[3]]" :key="item.key" :label="item.name" :value="item.key" />
             </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-form-item label="模型" prop="modelId">
+            <el-select v-model="executeForm.modelId" placeholder="模型" @change="changeModelId(executeForm.modelId)">
+              <el-option v-for="item in modelList" :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-input v-model="executeForm.param" type="textarea" :rows="2" placeholder="请输入参数" />
           </el-form-item>
           <el-form-item label="数据列" prop="columnData">
             <!-- <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-transfer v-model="transferRightData" :data="transferData" @change="changeColumnData"></el-transfer>
           </el-form-item>
         </el-form>
 
@@ -79,6 +80,8 @@
 
 <script>
 import { getFalseAlarm, addFalseAlarm, updateFalseAlarm, removeFalseAlarm } from '@/api/als/falseAlarm'
+import { getColumnDataAPI, executeFalseAlarm } from '@/api/als/algorithm'
+
 import { getAircaftCatalogTree } from '@/api/als/sideTree'
 import { getAircaftCatalogAll } from '@/api/als/aircraft'
 import { getDataImport } from '@/api/als/dataImport'
@@ -187,6 +190,20 @@ export default {
           ]
         }
       ],
+      sortieNoColumns: [
+        {
+          prop: 'sortieNo',
+          label: '架次号'
+        },
+        {
+          prop: 'source',
+          label: '数据来源'
+        },
+        {
+          prop: 'ossId',
+          label: '文件Id'
+        }
+      ],
       options: {
         stripe: true, // 斑马纹
         mutiSelect: true, // 多选框
@@ -196,20 +213,38 @@ export default {
         border: true,
         height: 'calc(100vh - 300px)'
       },
+      sortieNoOptions: {
+        stripe: true, // 斑马纹
+        mutiSelect: true, // 多选框
+        index: true, // 显示序号, 多选则 mutiSelect
+        loading: false, // 表格动画
+        initTable: false, // 是否一挂载就加载数据
+        border: true,
+        height: '250px'
+      },
       tableCheckItems: [],
       tableData: [],
+      SortieNoTableRequset: {
+        total: 0,
+        pageIndex: 1,
+        pageSize: 10,
+        searchValue: ''
+      },
       tableRequset: {
         total: 0,
         pageIndex: 1,
         pageSize: 10,
         searchValue: ''
       },
-      agloForm: {
-        sortieNo: '',
+      executeForm: {
+        modelId: '',
+        modelType: '',
+        ossId: '',
         aircraftId: '',
-        agloType: '',
-        agloName: '',
-        paramsList: []
+        sortieNo: '',
+        param: '',
+        columnData: [],
+        warningIds: []
       },
       form: {
         id: '',
@@ -231,11 +266,13 @@ export default {
       debounceFn: debounce(this.fetch, 500),
       aircaftCatalogAll: [],
       transferData: [],
+      transferRightData: [],
       algoTypeList: [{ id: 4, name: '虚警抑制' }],
-      algoNameList: [],
+      modelList: [],
       percentage: 0,
       sortieNoList: [],
-      falseAlarmTypeList: []
+      warningIdsList: [],
+      sortieNoTableCheck: []
     }
   },
   watch: {
@@ -271,8 +308,8 @@ export default {
 
     async removeFalseAlarmAPI(params) {
       try {
-        const { success } = await removeFalseAlarm(params)
-        if (success) {
+        const { code } = await removeFalseAlarm(params)
+        if (code === 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
@@ -309,15 +346,15 @@ export default {
       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, ...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, ...params })
+    //   this.tableData = list
+    //   this.tableRequset.total = totalCount
+    // },
 
     fetch() {
       this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
@@ -330,8 +367,8 @@ export default {
     async addFalseAlarmAPI() {
       try {
         delete this.form.aircaftModelName
-        const { success } = await addFalseAlarm({ ...this.form })
-        if (success) {
+        const { code } = await addFalseAlarm({ ...this.form })
+        if (code === 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
@@ -357,8 +394,8 @@ export default {
 
     async updateFalseAlarmAPI() {
       try {
-        const { success } = await updateFalseAlarm({ ...this.form })
-        if (success) {
+        const { code } = await updateFalseAlarm({ ...this.form })
+        if (code === 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
@@ -370,7 +407,7 @@ export default {
 
     treeNodeClick(data) {
       this.$refs.table.clearSelection()
-      this.currentNodeKey = this.form.aircraftId = data.id
+      this.currentNodeKey = this.executeForm.aircraftId = data.id
       this.currentNode = data
       this.aircaftModelIdList = this.getTreeLeafData(data.children.length ? data.children : [data])
         .map((e) => e.id)
@@ -378,14 +415,12 @@ export default {
       this.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
     },
 
-    openDialog() {
+    async openDialog() {
+      if (this.executeForm.aircraftId !== '') {
+        this.changeAircraftId(this.executeForm.aircraftId)
+      }
       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() {
@@ -396,7 +431,7 @@ export default {
         aircraftId: '',
         modelType: '',
         param: '',
-        columnData: '',
+        columnData: [],
         ossId: '',
         status: '',
         tenantId: '',
@@ -414,6 +449,17 @@ export default {
       this.form = deepClone(row)
       this.dialogVisible = true
     },
+    changeColumnData(value) {
+      const data = []
+      this.transferData.forEach((item) => {
+        value.forEach((rightData) => {
+          if (rightData === item.key) {
+            data.push(item.label)
+          }
+        })
+      })
+      this.executeForm.columnData = data
+    },
     checkResultList(row) {
       this.form = deepClone(row)
       this.resultVisible = true
@@ -426,41 +472,71 @@ export default {
       // this.agloForm.sortieNo = row.sortieNo
       // this.agloForm.aircraftId = row.aircraftId
     },
-    beginExecute() {
+    async beginExecute() {
       // 调用模型接口
-
-      // this.executeVisible = 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()
-        }
-      }, 30)
+      // if(this.executeForm.warningIds.isArray)
+      // this.executeForm.warningIds = [this.executeForm.warningIds]
+      const res = await executeFalseAlarm(this.executeForm)
+      const myTimer = setInterval(() => {}, 30)
+      console.log('res', res)
+      // 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.getFalseAlarmAPI({ aircraftId: this.aircaftModelIdList })
+      //   }
+      // }, 30)
     },
-    async changeAgloType(type) {
+    async changeModelType(type) {
       const {
         data: { list }
       } = await getModel({ type })
-      this.algoNameList = list
+      this.modelList = list
+    },
+
+    changeModelId(modelId) {
+      const modelColumnData = JSON.parse(
+        this.modelList.find((item) => {
+          return item.id === modelId
+        }).columnData
+      )
+
+      const labelToKeyMap = this.transferData.reduce((acc, item) => {
+        acc[item.label] = item.key
+        return acc
+      }, {})
+
+      modelColumnData.forEach((item) => {
+        if (labelToKeyMap.hasOwnProperty(item)) {
+          this.executeForm.columnData.push(item)
+          this.transferRightData.push(labelToKeyMap[item])
+        }
+      })
     },
+
     async changeAircraftId(aircraftId) {
       const {
-        data: { list }
+        data: { list, totalCount }
       } = await getDataImport({ aircraftId })
       this.sortieNoList = list
+      this.SortieNoTableRequset.total = totalCount
     },
+
     async changeSortieNo(sortieNo) {
       const {
         data: { list }
-      } = await getWarning({ aircraftId: this.form.aircraftId, sortieNo })
-      this.falseAlarmTypeList = list
+      } = await getWarning({ aircraftId: this.executeForm.aircraftId, sortieNo })
+      this.executeForm.sortieNo = sortieNo
+      this.warningIdsList = list
     },
+
     submit() {
       switch (this.dialogTitle) {
         case '编辑':
@@ -468,8 +544,10 @@ export default {
           this.handleClose()
           break
         case '新增':
-          this.addFalseAlarmAPI()
-          this.handleClose()
+          // this.addFalseAlarmAPI()
+          console.log('this.executeForm', this.executeForm)
+          this.beginExecute()
+          // this.handleClose()
           break
       }
     },
@@ -478,6 +556,39 @@ export default {
       this.tableCheckItems = val
     },
 
+    async sortieNoSelection(val) {
+      if (val.length > 1) {
+        this.$refs.sortieNoTableRef.clearSelection()
+        this.$refs.sortieNoTableRef.toggleRowSelection(val.pop())
+      }
+      // this.sortieNoTableCheck = val
+      this.executeForm.ossId = val[0].ossId
+      if (val[0].ossId) {
+        const res = await getColumnDataAPI(val[0].ossId)
+        if (res.code === 200) {
+          res.data.forEach((item, index) => {
+            this.transferData.push({
+              key: index,
+              label: item
+            })
+          })
+
+          this.changeSortieNo(val[0].sortieNo)
+        }
+      }
+    },
+
+    warningSelection(val) {
+      if (val.length > 1) {
+        this.$refs.warningTableRef.clearSelection()
+        this.$refs.warningTableRef.toggleRowSelection(val.pop())
+      }
+      console.log('val', val)
+      this.executeForm.warningIds = [val[0].id]
+      console.log('this.executeForm.warningIds', this.executeForm.warningIds)
+      // this.sortieNoTableCheck = val
+    },
+
     remove(row) {
       this.$confirm('是否删除该数据', '提示', {
         confirmButtonText: '确定',
@@ -495,4 +606,7 @@ export default {
 
 <style lang="scss" scoped>
 @import '../index.scss';
+::v-deep .single-select-table thead .el-table-column--selection .cell {
+  display: none;
+}
 </style>

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

@@ -72,7 +72,7 @@
             <FileUpload v-model="form.ossId" :limit="1" :fileSize="500" :fileType="['xls', 'xlsx']" />
           </el-form-item>
           <!-- <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item> -->
         </el-form>
 

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

@@ -33,7 +33,7 @@
             <el-input v-model="form.purpose" placeholder="请输入用途" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -39,7 +39,7 @@
             <el-input v-model="form.purpose" placeholder="请输入用途" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -30,7 +30,7 @@
             <image-upload v-model="form.image" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -36,7 +36,7 @@
             <el-input v-model="form.duties" placeholder="请输入职责" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -33,7 +33,7 @@
             <image-upload v-model="form.image" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -39,7 +39,7 @@
             <el-input v-model="form.purpose" placeholder="请输入用途" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -96,7 +96,7 @@
             <el-input v-model="form.rectificationNumber" placeholder="请输入排故人数" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -75,7 +75,7 @@
             <el-input v-model="form.quantity" placeholder="请输入更换数量" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -28,7 +28,7 @@
           </el-form-item>
           <el-form-item label="架次号" prop="sortieNo">
             <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-option v-for="item in sortieNoList" :key="item.sortieNo" :label="item.sortieNo" :value="item.sortieNo"> </el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="模型类型">

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

@@ -112,7 +112,7 @@
             <el-input v-model="form.rectificationNumber" placeholder="请输入排故人数" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

+ 6 - 8
src/views/als/maintenanceask/viewDetails.vue

@@ -58,7 +58,7 @@
             <el-input v-model="form.quantity" placeholder="请输入数量" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 
@@ -102,7 +102,7 @@
 <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 { getMaintenanceaskInfo } from '@/api/als/maintenanceask'
 import { deepClone, debounce } from '@/utils/index'
 export default {
   name: 'ViewDetails',
@@ -299,16 +299,14 @@ export default {
     }
   },
   mounted() {
-    this.getMaintenanceaskAPI()
+    this.getMaintenanceaskInfoAPI()
   },
   methods: {
-    async getMaintenanceaskAPI() {
+    async getMaintenanceaskInfoAPI() {
       this.maintenanceaskId = this.$route.params.maintenanceaskId
       this.form.taskId = this.maintenanceaskId
-      const {
-        data: { list, totalCount }
-      } = await getMaintenanceask({ id: this.maintenanceaskId })
-      this.maintenanceaskForm = list
+      const res = await getMaintenanceaskInfo(this.maintenanceaskId)
+      this.maintenanceaskForm = res.data
       console.log('this.maintenanceaskForm', this.maintenanceaskForm)
       this.getResourceAllocationAPI({ taskId: this.maintenanceaskId })
     },

+ 21 - 22
src/views/als/model/index.vue

@@ -23,26 +23,23 @@
           </el-form-item>
           <el-form-item label="模型类型" prop="type">
             <el-select v-model="form.type" placeholder="请选择模型类型">
-              <el-option v-for="item in algoTypeList" :key="item.id" :label="item.name" :value="item.id" />
+              <el-option v-for="item in $enumData.agloModelList" :key="item.key" :label="item.name" :value="item.key" />
             </el-select>
           </el-form-item>
           <el-form-item label="模型链接" prop="url">
             <el-input v-model="form.url" placeholder="请输入模型链接" />
           </el-form-item>
           <el-form-item label="参数" prop="param">
-            <el-input v-model="form.param" placeholder="请输入参数" />
+            <el-input type="textarea" :rows="2" v-model="form.param" placeholder="请输入参数" />
           </el-form-item>
           <el-form-item label="数据列" prop="columnData">
-            <el-input v-model="form.columnData" placeholder="请输入数据列" />
+            <el-input type="textarea" :rows="3" v-model="form.columnData" placeholder="请输入数据列" />
           </el-form-item>
           <el-form-item label="状态" prop="status">
-            <el-select v-model="form.status" placeholder="请选择状态">
-              <el-option label="成功" value="0"></el-option>
-              <el-option label="失败" value="1"></el-option>
-            </el-select>
+            <el-switch v-model="form.status" active-color="#13ce66" active-value="1" inactive-value="0"> </el-switch>
           </el-form-item>
           <el-form-item label="备注" prop="remark">
-            <el-input v-model="form.remark" placeholder="请输入备注" />
+            <el-input type="textarea" :rows="2" v-model="form.remark" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 
@@ -79,7 +76,7 @@ export default {
           prop: 'type',
           label: '模型类型',
           render: (h, params) => {
-            const matchedItem = this.algoTypeList.find((item) => params.row.type == item.id)
+            const matchedItem = this.$enumData.agloModelList.find((item) => params.row.type === item.key)
             if (matchedItem) {
               return h('span', matchedItem.name)
             } else {
@@ -104,9 +101,9 @@ export default {
           label: '状态',
           render: (h, params) => {
             if (params.row.status == 0) {
-              return h('span', { class: 'success-state' }, '成功')
+              return h('span', { class: 'warning-state' }, '禁用')
             } else {
-              return h('span', { class: 'warning-state' }, '失败')
+              return h('span', { class: 'success-state' }, '启用')
             }
           }
         },
@@ -174,15 +171,15 @@ export default {
         updateBy: '',
         updateTime: ''
       },
-      debounceFn: debounce(this.fetch, 500),
-      algoTypeList: [
-        { id: 1, name: '去噪' },
-        { id: 2, name: '扩充' },
-        { id: 3, name: '补全' },
-        { id: 4, name: '虚警抑制' },
-        { id: 5, name: '故障诊断' },
-        { id: 6, name: '寿命预测' }
-      ]
+      debounceFn: debounce(this.fetch, 500)
+      // algoTypeList: [
+      //   { key: '1', name: '去噪' },
+      //   { key: '2', name: '扩充' },
+      //   { key: '3', name: '补全' },
+      //   { key: '4', name: '虚警抑制' },
+      //   { key: '5', name: '故障诊断' },
+      //   { key: '6', name: '寿命预测' }
+      // ]
     }
   },
   watch: {
@@ -245,6 +242,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
+          this.handleClose()
           this.getModelAPI()
         }
       } catch (error) {}
@@ -258,6 +256,7 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
+          this.handleClose()
           this.getModelAPI()
         }
       } catch (error) {}
@@ -299,11 +298,11 @@ export default {
       switch (this.dialogTitle) {
         case '编辑':
           this.updateModelAPI()
-          this.handleClose()
+
           break
         case '新增':
           this.addModelAPI()
-          this.handleClose()
+
           break
       }
     },

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

@@ -53,7 +53,7 @@
             <el-input v-model="form.quantity" placeholder="请输入更换数量" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

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

@@ -28,7 +28,7 @@
           </el-form-item>
           <el-form-item label="架次号" prop="sortieNo">
             <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-option v-for="item in sortieNoList" :key="item.sortieNo" :label="item.sortieNo" :value="item.sortieNo"> </el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="模型类型">

+ 1 - 1
src/views/als/smTask/SMTaskDetails.vue

@@ -59,7 +59,7 @@
             <el-input v-model="form.quantity" placeholder="请输入数量" />
           </el-form-item>
           <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" placeholder="请输入备注" />
+            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
           </el-form-item>
         </el-form>
 

+ 2 - 2
src/views/als/smTask/index.vue

@@ -35,8 +35,8 @@
           </el-form-item>
 
           <el-form-item label="任务名称" prop="name">
-            <!-- <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-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="请输入任务编码" />

+ 19 - 0
src/views/als/utils/enum-data.js

@@ -0,0 +1,19 @@
+import Vue from 'vue'
+
+// 证件类型 columns
+export const agloModelList = [
+  { key: '1', name: '去噪' },
+  { key: '2', name: '扩充' },
+  { key: '3', name: '补全' },
+  { key: '4', name: '虚警抑制' },
+  { key: '5', name: '故障诊断' },
+  { key: '6', name: '寿命预测' }
+]
+
+const enumData = {
+  agloModelList
+}
+
+// 第一种方法: 集体导出 并注入到全局变量
+window.enumData = Vue.prototype.$enumData = enumData
+export default enumData

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

@@ -32,7 +32,7 @@
           <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-option v-for="item in sortieNoList" :key="item.sortieNo" :label="item.sortieNo" :value="item.sortieNo"> </el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="警告代码" prop="code">