فهرست منبع

Merge branch 'master' of http://101.126.133.7:9001/Rmengdi/LQBZ_web into dev-rmd2

Rmengdi 6 ماه پیش
والد
کامیت
f806361f62
5فایلهای تغییر یافته به همراه595 افزوده شده و 197 حذف شده
  1. 65 0
      src/api/als/communication.js
  2. 1 5
      src/api/als/faultCase.js
  3. 69 3
      src/router/modules/system.js
  4. 108 189
      src/views/als/faultCase/index.vue
  5. 352 0
      src/views/als/systemCommunication/index.vue

+ 65 - 0
src/api/als/communication.js

@@ -0,0 +1,65 @@
+import { get, post, put, deletes } from '@/http/index'
+
+export const getCommunication = async (data) => {
+  return await get('/als/communication/list', data)
+}
+
+export const addCommunication = async (data) => {
+  return await post('/als/communication', data)
+}
+
+export const updateCommunication = async (data) => {
+  return await put('/als/communication', data)
+}
+
+export const removeCommunication = async (data) => {
+  return await deletes('/als/communication/' + data)
+}
+
+//下载模板
+export const downLoadFile = async (data) => {
+  window.open(process.env.VUE_APP_BASE_API + '/basicdata/aircaftModel/downLoadFile')
+}
+//导出
+export const exportExcel = async (data) => {
+  window.open(process.env.VUE_APP_BASE_API + `/basicdata/aircaftModel/exportExcel?aircaftTypeId=${data.aircaftTypeId}&queryParam=${data.queryParam}`)
+}
+
+// --------------------------
+export const addAircaftType = async (data) => {
+  return await post('/basicdata/aircaftType/addAircaftType', data)
+}
+
+export const updateAircaftType = async (data) => {
+  return await post('/basicdata/aircaftType/updateAircaftType', data)
+}
+
+export const removeAircaftType = async (data) => {
+  return await post('/basicdata/aircaftType/removeAircaftType', data)
+}
+
+//下载模板
+export const downLoadAircaftTypeFile = async (data) => {
+  window.open(process.env.VUE_APP_BASE_API + '/basicdata/aircaftType/downLoadFile')
+}
+//导出
+export const exportAircaftTypeExcel = async (data) => {
+  window.open(process.env.VUE_APP_BASE_API + `/basicdata/aircaftType/exportExcel?queryParam=${data.queryParam}`)
+}
+
+// --------------------------------------------------------------------------------------------
+export const getAvmatCategoriesTree = async (data) => {
+  return await get('/basicdata/avmatcategories/getAvmatCategoriesTree', data)
+}
+
+export const getAvmatCatalog = async (data) => {
+  return await post('/basicdata/avmatCatalog/getAvmatCatalog', data)
+}
+
+export const queryByCodeOrName = async (data) => {
+  return await post('/basicdata/avmatCatalog/queryByCodeOrName', data)
+}
+
+export const getAircaftType = async (data) => {
+  return await get('/basicdata/aircaftType/getAircaftType', data)
+}

+ 1 - 5
src/api/als/faultCase.js

@@ -7,6 +7,7 @@ export const getFaultCase = async (data) => {
 
 // 新增故障案例
 export const addFaultCase = async (data) => {
+  data.viewCount = '0'
   return await post('/als/faultCase', data)
 }
 
@@ -19,8 +20,3 @@ export const updateFaultCase = async (data) => {
 export const removeFaultCase = async (id) => {
   return await deletes('/als/faultCase/' + id)
 }
-
-//  获取机种和机型树
-export const getAircaftTypeAndModelTree = async (data) => {
-  return await get('/basicdata/aircaftCatalog/getAircaftTypeAndModelTree', data)
-}

+ 69 - 3
src/router/modules/system.js

@@ -349,6 +349,72 @@ export default [
           title: '系统备份'
         }
       }
-    ]
-  }
-]
+    }
+  ]
+
+
+export const systemRole = {
+  path: '/system',
+  redirect: '/system/program',
+  component: Layout,
+  name: 'SystemRole',
+  meta: {
+    title: '系统管理',
+    icon: 'el-icon-s-platform'
+  },
+  sort: 11,
+  children: [
+    {
+      path: '/system/role',
+      component: () => import('@/views/system/role/index.vue'),
+      meta: {
+        title: '角色管理'
+      },
+      sort: 5
+    }
+  ]
+}
+
+export const systemBackup = {
+  path: '/system',
+  redirect: '/system/program',
+  component: Layout,
+  name: 'SystemBackup',
+  meta: {
+    title: '系统管理',
+    icon: 'el-icon-s-platform'
+  },
+  sort: 11,
+  children: [
+    {
+      path: '/system/systemBackup',
+      component: () => import('@/views/system/systemBackup/index.vue'),
+      meta: {
+        title: '系统备份'
+      },
+      sort: 6
+    }
+  ]
+}
+
+export const systemCommunication = {
+  path: '/system',
+  redirect: '/system/program',
+  component: Layout,
+  name: 'systemCommunication',
+  meta: {
+    title: '系统管理',
+    icon: 'el-icon-s-platform'
+  },
+  sort: 11,
+  children: [
+    {
+      path: '/system/systemCommunication',
+      component: () => import('@/views/als/systemCommunication/index.vue'),
+      meta: {
+        title: '通讯管理'
+      },
+      sort: 6
+    }
+  ]
+}

+ 108 - 189
src/views/als/faultCase/index.vue

@@ -1,17 +1,14 @@
 <template>
   <div class="view-table-content">
-    <div class="view-dataSpecies-left">
-      <MenuTree :currentNodeKey="currentNodeKey" nodeKey="id" :treedata="menuTreeData" @TreeNodeclick="treeNodeClick" v-bind="treeObj"> </MenuTree>
-    </div>
     <div class="view-dataSpecies-right">
       <div class="view-dataType-title">
         <div class="view-dataType-title-btn">
-          <el-button type="success" @click="openDialog()" :disabled="!(currentNode.type == 2)">新增</el-button>
+          <el-button type="success" @click="openDialog()" :disabled="currentNode.type == 2">新增</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(keyWordData)"></el-button>
           </el-input>
         </div>
       </div>
@@ -21,62 +18,48 @@
       <!-- 添加或修改故障案例对话框 -->
       <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="请选择机型" disabled>
-              <el-option v-for="item in aircaftModelAll" :key="item.aircaftModelId" :label="item.aircaftModelName" :value="item.aircaftModelId"> </el-option>
-            </el-select>
+          <el-form-item label="序号" prop="id">
+            <el-input v-model="form.id" placeholder="请输入序号" />
           </el-form-item>
-          <el-form-item label="编目" prop="aircraftCode">
-            <el-select v-model="form.aircraftCode" placeholder="请选择编目" disabled>
-              <el-option v-for="item in aircaftCatalogAll" :key="item.aircaftCatalogId" :label="item.aircaftCatalogCode" :value="item.aircaftCatalogId"> </el-option>
-            </el-select>
+          <el-form-item label="飞机编号" prop="aircraftTypeId">
+            <el-input v-model="form.aircraftTypeId" placeholder="请输入飞机编号" />
           </el-form-item>
-          <el-form-item label="故障代码" prop="faultCode">
-            <el-input v-model="form.faultCode" placeholder="请输入故障代码" />
+          <el-form-item label="机型" prop="aircraftTypeName">
+            <el-input v-model="form.aircraftTypeName" placeholder="请输入机型" />
           </el-form-item>
-          <el-form-item label="故障名称" prop="faultName">
-            <el-input v-model="form.faultName" placeholder="请输入故障名称" />
+          <el-form-item label="系统编号" prop="aircraftSystemId">
+            <el-input v-model="form.aircraftSystemId" placeholder="请输入系统编号" />
           </el-form-item>
-
-          <el-form-item label="故障日期" prop="faultDate">
-            <el-date-picker v-model="form.faultDate" type="date" value-format="yyyy-MM-dd" placement="bottom-start" placeholder="请选择故障日期"> </el-date-picker>
+          <el-form-item label="系统" prop="aircraftSystemName">
+            <el-input v-model="form.aircraftSystemName" placeholder="请输入系统" />
           </el-form-item>
-          <el-form-item label="所属系统" prop="systemItem">
-            <el-select v-model="form.systemItem" placeholder="请选择所属系统">
-              <el-option v-for="item in systemItemList" :key="item.id" :label="item.label" :value="item.label"> </el-option>
-            </el-select>
+          <el-form-item label="分系统编号" prop="aircraftSubsystemId">
+            <el-input v-model="form.aircraftSubsystemId" placeholder="请输入分系统编号" />
           </el-form-item>
-          <el-form-item label="专业" prop="specialty">
-            <el-input v-model="form.specialty" placeholder="请输入专业" />
+          <el-form-item label="分系统" prop="aircraftSubsystemName">
+            <el-input v-model="form.aircraftSubsystemName" placeholder="请输入分系统" />
           </el-form-item>
-          <el-form-item label="故障位置" prop="location">
-            <el-input v-model="form.location" placeholder="请输入故障位置" />
+          <el-form-item label="作者" prop="author">
+            <el-input v-model="form.author" 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 label="故障现象" prop="faultPhenomenon">
+            <el-input v-model="form.faultPhenomenon" placeholder="请输入故障现象" />
           </el-form-item>
-          <el-form-item label="故障现象" prop="symptoms">
-            <el-input type="textarea" :rows="2" v-model="form.symptoms" placeholder="请输入故障现象" />
+          <el-form-item label="故障原因" prop="faultCause">
+            <el-input v-model="form.faultCause" placeholder="请输入故障原因" />
           </el-form-item>
-          <el-form-item label="排除方法" prop="methodRectification">
-            <el-input v-model="form.methodRectification" placeholder="请输入排除方法" />
+          <el-form-item label="故障树" prop="faultTreePath">
+            <FileUpload v-model="form.faultTreePath" :limit="1" :fileSize="500" :fileType="['jpg', 'jpeg', 'png']" />
           </el-form-item>
-          <el-form-item label="故障原因分类" label-width="100px" prop="faultCauseType">
-            <el-select v-model="form.faultCauseType" placeholder="请输入故障原因分类">
-              <el-option v-for="item in faultCauseTypeList" :key="item.id" :label="item.label" :value="item.label"> </el-option>
-            </el-select>
+          <el-form-item label="故障图" prop="faultPicturePath">
+            <FileUpload v-model="form.faultPicturePath" :limit="1" :fileSize="500" :fileType="['jpg', 'jpeg', 'png']" />
           </el-form-item>
-          <el-form-item label="故障原因" prop="faultCause">
-            <el-input v-model="form.faultCause" placeholder="请输入故障原因" />
+          <el-form-item label="排故方法" prop="troubleshootingMethodPath">
+            <el-input v-model="form.troubleshootingMethodPath" placeholder="请输入排故方法" />
           </el-form-item>
-          <el-form-item label="故障文件" prop="ossId">
-            <FileUpload v-model="form.ossId" :limit="1" :fileSize="500" :fileType="['xls', 'xlsx']" />
+          <el-form-item label="排序" prop="orderBy">
+            <el-input v-model="form.orderBy" placeholder="请输入排序" />
           </el-form-item>
-          <!-- <el-form-item label="备注" prop="remarks">
-            <el-input v-model="form.remarks" type="textarea" :rows="2" placeholder="请输入备注" />
-          </el-form-item> -->
         </el-form>
 
         <span slot="footer" class="dialog-footer">
@@ -87,19 +70,18 @@
 
       <el-dialog title="故障案例详情" :visible.sync="detailVisible" width="1000px" :show-close="false">
         <el-descriptions border>
-          <el-descriptions-item label="飞机型号">{{ detailAircraftType }}</el-descriptions-item>
-          <el-descriptions-item label="编目">{{ detailAircraftCode }}</el-descriptions-item>
-          <el-descriptions-item label="故障名称">{{ form.faultName }}</el-descriptions-item>
-          <el-descriptions-item label="故障日期">{{ form.faultDate }}</el-descriptions-item>
-          <el-descriptions-item label="故障现象">{{ form.symptoms }}</el-descriptions-item>
-          <el-descriptions-item label="所属系统">{{ form.systemItem }}</el-descriptions-item>
-          <el-descriptions-item label="专业">{{ form.specialty }}</el-descriptions-item>
-          <el-descriptions-item label="故障位置">{{ form.location }}</el-descriptions-item>
-          <el-descriptions-item label="排除方法">{{ form.methodRectification }}</el-descriptions-item>
-          <el-descriptions-item :span="1" label="故障原因分类">{{ form.faultCauseType }}</el-descriptions-item>
-          <el-descriptions-item :span="2" label="故障性质">{{ form.level }}</el-descriptions-item>
-          <el-descriptions-item :span="3" label="故障原因">{{ form.faultCause }}</el-descriptions-item>
-          <el-descriptions-item label="故障文件">{{ detailOssId }}</el-descriptions-item>
+          <el-descriptions-item label="飞机编号">{{ form.aircraftTypeId }}</el-descriptions-item>
+          <el-descriptions-item label="机型">{{ form.aircraftTypeName }}</el-descriptions-item>
+          <el-descriptions-item label="系统编号">{{ form.aircraftSystemId }}</el-descriptions-item>
+          <el-descriptions-item label="系统">{{ form.aircraftSystemName }}</el-descriptions-item>
+          <el-descriptions-item label="分系统编号">{{ form.aircraftSubsystemId }}</el-descriptions-item>
+          <el-descriptions-item label="分系统">{{ form.aircraftSubsystemName }}</el-descriptions-item>
+          <el-descriptions-item label="作者">{{ form.author }}</el-descriptions-item>
+          <el-descriptions-item label="故障现象">{{ form.faultPhenomenon }}</el-descriptions-item>
+          <el-descriptions-item label="故障原因">{{ form.faultCause }}</el-descriptions-item>
+          <el-descriptions-item :span="1" label="排故方法">{{ form.troubleshootingMethodPath }}</el-descriptions-item>
+          <el-descriptions-item label="故障图"><img :src="faultPicturePathUrl" width="200px" /></el-descriptions-item>
+          <el-descriptions-item label="故障树"><img :src="faultPicturePathUrl" width="200px" /></el-descriptions-item>
         </el-descriptions>
         <span slot="footer" class="dialog-footer">
           <el-button @click="detailSubmit">确 定</el-button>
@@ -111,12 +93,9 @@
 
 <script>
 import { getFaultCase, addFaultCase, updateFaultCase, removeFaultCase } from '@/api/als/faultCase'
-import { getAircaftCatalogTree, getAircaftTypeAndModelTree } from '@/api/als/sideTree'
-import { getAircaftModelAll, getAircaftCatalogAll } from '@/api/als/aircraft'
 import { deepClone, debounce } from '@/utils/index'
 import { getListByIdsApi } from '@/api/als/oss'
 import FileUpload from '@/views/als/components/FileUpload'
-import { flattenTree } from '../utils/common'
 
 export default {
   name: 'FaultCase',
@@ -132,15 +111,6 @@ export default {
       currentNodeKey: '',
       currentNode: {},
       menuTreeData: [],
-      treeObj: {
-        title: '所属机种',
-        activityheight: '275px',
-        searchIcon: false,
-        configure: {
-          children: 'children',
-          label: 'label'
-        }
-      },
       typeTree: {
         children: 'children',
         label: 'label'
@@ -148,52 +118,52 @@ export default {
       searchValue: '',
       columns: [
         {
-          prop: 'aircraftType',
-          label: '机型',
-          render: (h, params) => {
-            const matchedItem = this.aircaftModelAll.find((item) => params.row.aircraftType === item.aircaftModelId)
-            if (matchedItem) {
-              return h('span', matchedItem.aircaftModelName)
-            } else {
-              return h('span', {}, '')
-            }
-          }
+          prop: 'aircraftTypeId',
+          label: '机型编号'
         },
         {
-          prop: 'aircraftCode',
-          label: '编目',
-          render: (h, params) => {
-            const matchedItem = this.aircaftCatalogAll.find((item) => params.row.aircraftCode === item.aircaftCatalogId)
-            if (matchedItem) {
-              return h('span', matchedItem.aircaftCatalogCode)
-            } else {
-              return h('span', {}, '')
-            }
-          }
+          prop: 'aircraftTypeName',
+          label: '机型'
         },
         {
-          prop: 'faultName',
-          label: '故障名称'
+          prop: 'aircraftSystemId',
+          label: '系统编号'
         },
         {
-          prop: 'faultDate',
-          label: '故障日期'
+          prop: 'aircraftSystemName',
+          label: '系统'
         },
         {
-          prop: 'systemItem',
-          label: '所属系统'
+          prop: 'aircraftSubsystemId',
+          label: '分系统编号'
         },
         {
-          prop: 'faultCauseType',
-          label: '故障原因分类'
+          prop: 'aircraftSubsystemName',
+          label: '分系统'
         },
         {
-          prop: 'level',
-          label: '故障性质'
+          prop: 'author',
+          label: '作者'
         },
         {
-          prop: 'ossId',
-          label: '文件编号'
+          prop: 'faultPhenomenon',
+          label: '故障现象'
+        },
+        {
+          prop: 'faultCause',
+          label: '故障原因'
+        },
+        // {
+        //   prop: 'faultTreePath',
+        //   label: '故障树'
+        // },
+        // {
+        //   prop: 'faultPicturePath',
+        //   label: '故障图'
+        // },
+        {
+          prop: 'troubleshootingMethodPath',
+          label: '排故方法'
         },
         {
           button: true,
@@ -250,21 +220,20 @@ export default {
       },
       form: {
         id: '',
-        aircraftType: '',
-        aircraftCode: '',
-        faultCode: '',
-        faultName: '',
-        ossId: '',
-        faultDate: '',
-        systemItem: '',
-        specialty: '',
-        faultCauseType: '',
-        location: '',
-        level: '',
-        methodRectification: '',
-        symptoms: '',
+        aircraftTypeId: '',
+        aircraftTypeName: '',
+        aircraftSystemId: '',
+        aircraftSystemName: '',
+        aircraftSubsystemId: '',
+        aircraftSubsystemName: '',
+        author: '',
+        faultPhenomenon: '',
         faultCause: '',
-        remarks: '',
+        faultTreePath: '',
+        faultPicturePath: '',
+        troubleshootingMethodPath: '',
+        viewCount: '1',
+        orderBy: '',
         tenantId: '',
         version: '',
         delFlag: '',
@@ -291,7 +260,8 @@ export default {
       ],
       detailAircraftType: '',
       detailAircraftCode: '',
-      detailOssId: ''
+      faultPicturePathUrl: '',
+      faultTreePathUrl: ''
     }
   },
   watch: {
@@ -301,34 +271,9 @@ export default {
     }
   },
   mounted() {
-    this.getAircaftCatalogTreeAPI()
+    this.getFaultCaseAPI()
   },
   methods: {
-    async getAircaftCatalogTreeAPI(params) {
-      try {
-        const { data } = await getAircaftCatalogTree(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].id
-          this.currentNode = data[0]
-          this.aircaftModelIdList = String(this.getTreeLeafData(data[0]?.children).map((e) => e.id))
-          this.getFaultCaseAPI({ aircraftCodes: this.aircaftModelIdList })
-        }
-        const { data: data2 } = await getAircaftCatalogAll({
-          keyWord: '',
-          aircaftModelIdList: []
-        })
-        this.aircaftCatalogAll = flattenTree(data2)
-      } catch (error) {}
-    },
-
     async removeFaultCaseAPI(params) {
       try {
         const { code } = await removeFaultCase(params)
@@ -337,28 +282,11 @@ export default {
             type: 'success',
             message: '操作成功!'
           })
-          await this.getFaultCaseAPI({ aircraftCodes: this.aircaftModelIdList })
+          await this.getFaultCaseAPI({ faultCaseCodes: this.faultCaseCodes })
           this.handleClose()
         }
       } catch (error) {}
     },
-
-    getTreeLeafData(list) {
-      const newArr = []
-      function getLeaf(data, arr) {
-        data.forEach((e) => {
-          if (e.type === 2) {
-            arr.push(e)
-          }
-          if (e.children.length) {
-            getLeaf(e.children, arr)
-          }
-        })
-      }
-      getLeaf(list, newArr)
-      return newArr
-    },
-
     async getFaultCaseAPI(params) {
       if (this.$refs.table) this.$refs.table.clearSelection()
       const { keyWord } = this
@@ -370,17 +298,20 @@ export default {
       this.tableRequset.total = total
     },
 
+    async getFaultCaseByEsAPI(keyWordData) {
+      console.log(keyWordData)
+    },
+
     fetch() {
-      this.getFaultCaseAPI({ aircraftCodes: this.aircaftModelIdList })
+      this.getFaultCaseAPI({ faultCaseCodes: this.aircaftModelIdList })
     },
 
-    async searchClick() {
-      this.getFaultCaseAPI({ aircraftCodes: this.aircaftModelIdList, faultName: this.keyWordData })
+    async searchClick(keyWordData) {
+      this.getFaultCaseByEsAPI(keyWordData)
     },
 
     async addFaultCaseAPI() {
       try {
-        delete this.form.aircaftModelName
         const { code } = await addFaultCase({ ...this.form })
         if (code === 200) {
           this.$message({
@@ -388,7 +319,7 @@ export default {
             message: '操作成功!'
           })
           this.handleClose()
-          this.getFaultCaseAPI({ aircraftCodes: this.aircaftModelIdList })
+          this.getFaultCaseAPI({ faultCaseCodes: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
@@ -402,24 +333,14 @@ export default {
             message: '操作成功!'
           })
           this.handleClose()
-          this.getFaultCaseAPI({ aircraftCodes: this.aircaftModelIdList })
+          this.getFaultCaseAPI({ faultCaseCodes: this.aircaftModelIdList })
         }
       } catch (error) {}
     },
 
-    async treeNodeClick(data) {
-      this.$refs.table.clearSelection()
-      this.currentNodeKey = this.form.aircraftCode = data.id
-      this.currentNode = data
-      this.aircaftModelIdList = String(this.getTreeLeafData(data.children.length ? data.children : [data]).map((e) => e.id))
-      this.getFaultCaseAPI({ aircraftCodes: this.aircaftModelIdList })
-    },
-
     openDialog() {
       this.dialogTitle = '新增'
       this.dialogVisible = true
-      this.form.aircraftType = this.currentNode.parentId
-      this.form.aircraftCode = this.currentNodeKey
     },
 
     handleClose() {
@@ -447,7 +368,6 @@ export default {
     handUpdate(row) {
       this.dialogTitle = '编辑'
       this.form = deepClone(row)
-      this.form.aircraftType = this.currentNode.parentId
       this.dialogVisible = true
     },
 
@@ -480,19 +400,18 @@ export default {
 
     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)
-      if (row.ossId) {
-        const res = await getListByIdsApi(row.ossId)
-        this.detailOssId = res.data[0].originalName
+      if (row.faultPicturePath) {
+        const res = await getListByIdsApi(row.faultPicturePath)
+        this.faultPicturePathUrl = res.data[0].url
+        const res2 = await getListByIdsApi(row.faultTreePath)
+        this.faultTreePathUrl = res.data[0].url
       } else {
-        this.detailOssId = row.ossId
+        this.faultPicturePathUrl = row.faultPicturePath
+        this.faultTreePathUrl = row.faultTreePathUrl
       }
-      this.detailAircraftType = aircraftTypeItem.aircaftModelName
-      this.detailAircraftCode = aircraftCodeItem.aircaftCatalogCode
       this.detailVisible = true
+      this.form = deepClone(row)
     },
-
     detailSubmit() {
       this.handleClose()
       this.detailVisible = false

+ 352 - 0
src/views/als/systemCommunication/index.vue

@@ -0,0 +1,352 @@
+<template>
+  <div class="view-table-content">
+    <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="warning" @click="remove(tableCheckItems)" :disabled="tableCheckItems.length == 0">删除</el-button>
+        </div>
+        <div class="view-dataType-title-search">
+          <el-input placeholder="请输入关键字" v-model="keyWord" class="input1">
+            <el-button slot="append" icon="el-icon-search" @click="searchClick"></el-button>
+          </el-input>
+        </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-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px" :before-close="handleClose">
+        <el-form ref="form" :model="form" label-width="80px">
+          <el-form-item label="id" prop="id">
+            <el-input v-model="form.id" placeholder="请输入名称" />
+          </el-form-item>
+          <el-form-item label="名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入名称" />
+          </el-form-item>
+          <el-form-item label="IP地址" prop="ipAddress">
+            <el-input v-model="form.ipAddress" placeholder="请输入IP地址" />
+          </el-form-item>
+          <el-form-item label="网段" prop="networkSegment">
+            <el-input v-model="form.networkSegment" placeholder="请输入网段" />
+          </el-form-item>
+          <el-form-item label="子网掩码" prop="subnetMask">
+            <el-input v-model="form.subnetMask" placeholder="请输入子网掩码" />
+          </el-form-item>
+          <el-form-item label="DNS" prop="dns">
+            <el-input v-model="form.dns" placeholder="请输入DNS" />
+          </el-form-item>
+          <el-form-item label="网关" prop="gateway">
+            <el-input v-model="form.gateway" placeholder="请输入网关" />
+          </el-form-item>
+          <el-form-item label="http" prop="http">
+            <el-input v-model="form.http" placeholder="请输入http" />
+          </el-form-item>
+          <el-form-item label="端口号" prop="port">
+            <el-input v-model="form.port" placeholder="请输入端口号" />
+          </el-form-item>
+          <el-form-item label="用户名" prop="userName">
+            <el-input v-model="form.userName" placeholder="请输入用户名" />
+          </el-form-item>
+          <el-form-item label="密码" prop="password">
+            <el-input v-model="form.password" 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>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getCommunication, addCommunication, updateCommunication, removeCommunication } from '@/api/als/communication'
+import { deepClone, debounce } from '@/utils/index'
+export default {
+  name: 'Aircraft',
+  components: {},
+  data() {
+    // 这里存放数据
+    return {
+      dialogTitle: '新增',
+      dialogVisible: false,
+      keyWord: '',
+      communicationModelIdList: [],
+      currentNodeKey: null,
+      currentNode: null,
+      menuTreeData: [],
+      treeObj: {
+        title: '所属机种',
+        activityheight: '275px',
+        searchIcon: false,
+        configure: {
+          children: 'children',
+          label: 'label'
+        }
+      },
+      typeTree: {
+        children: 'children',
+        label: 'label'
+      },
+      searchValue: '',
+      columns: [
+        { prop: 'id', label: '序号' },
+        {
+          prop: 'name',
+          label: '名称'
+        },
+        {
+          prop: 'ipAddress',
+          label: 'IP地址'
+        },
+        {
+          prop: 'networkSegment',
+          label: '网段'
+        },
+        {
+          prop: 'subnetMask',
+          label: '子网掩码'
+        },
+        {
+          prop: 'dns',
+          label: 'DNS'
+        },
+        {
+          prop: 'gateway',
+          label: '网关'
+        },
+        {
+          prop: 'http',
+          label: 'http'
+        },
+        {
+          prop: 'port',
+          label: '端口号'
+        },
+        {
+          prop: 'userName',
+          label: '用户名'
+        },
+        {
+          prop: 'password',
+          label: '密码'
+        },
+        {
+          button: true,
+          label: '操作',
+          width: '240px',
+          group: [
+            {
+              name: '编辑',
+              type: 'text',
+              round: false,
+              plain: false,
+              onClick: (row, index, scope) => {
+                this.handUpdate(row)
+              }
+            }
+          ]
+        }
+      ],
+      options: {
+        stripe: true, // 斑马纹
+        mutiSelect: true, // 多选框
+        index: false, // 显示序号, 多选则 mutiSelect
+        loading: false, // 表格动画
+        initTable: false, // 是否一挂载就加载数据
+        border: true,
+        height: 'calc(100vh - 300px)'
+      },
+      tableCheckItems: [],
+      tableData: [],
+      tableRequset: {
+        total: 0,
+        pageIndex: 1,
+        pageSize: 10,
+        searchValue: ''
+      },
+      form: {
+        id: '',
+        name: '',
+        ipAddress: '',
+        networkSegment: '',
+        subnetMask: '',
+        gateway: '',
+        http: '',
+        port: '',
+        userName: '',
+        password: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      },
+      debounceFn: debounce(this.fetch, 500)
+    }
+  },
+  watch: {
+    keyWord() {
+      this.tableRequset.pageIndex = 1
+      this.debounceFn()
+    }
+  },
+  mounted() {
+    this.getCommunicationAPI()
+  },
+  methods: {
+    async removeCommunicationAPI(params) {
+      try {
+        const { success } = await removeCommunication(params)
+        if (success != false) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          await this.getCommunicationAPI({ communicationModelIdList: this.communicationModelIdList })
+          this.handleClose()
+        }
+      } catch (error) {}
+    },
+
+    getTreeLeafData(list) {
+      const newArr = []
+      function getLeaf(data, arr) {
+        data.forEach((e) => {
+          if (e.type === 2) {
+            arr.push(e)
+          }
+          if (e.children.length) {
+            getLeaf(e.children, arr)
+          }
+        })
+      }
+      getLeaf(list, newArr)
+      return newArr
+    },
+
+    async getCommunicationAPI(params) {
+      if (this.$refs.table) this.$refs.table.clearSelection()
+      const { keyWord } = this
+      const { pageSize, pageIndex } = this.tableRequset
+      const {
+        data: { list, total }
+      } = await getCommunication({ pageSize, pageIndex, keyWord, ...params })
+      this.tableData = list
+      console.log(list)
+      this.tableRequset.total = total
+    },
+
+    fetch() {
+      this.getCommunicationAPI({ communicationModelIdList: this.communicationModelIdList })
+    },
+
+    searchClick() {
+      this.getCommunicationAPI({ communicationModelIdList: this.communicationModelIdList })
+    },
+
+    async addCommunicationAPI() {
+      try {
+        const { success } = await addCommunication({ ...this.form })
+        console.log(success)
+        if (success != false) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.handleClose()
+          this.getCommunicationAPI({ communicationModelIdList: this.communicationModelIdList })
+        }
+      } catch (error) {}
+    },
+
+    async updateCommunicationAPI() {
+      try {
+        const { success } = await updateCommunication({ ...this.form })
+        if (success != false) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          })
+          this.handleClose()
+          this.getCommunicationAPI({ communicationModelIdList: this.communicationModelIdList })
+        }
+      } catch (error) {}
+    },
+
+    treeNodeClick(data) {
+      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.getAircraftAPI({ aircaftModelIdList: this.aircaftModelIdList })
+    },
+
+    openDialog() {
+      this.dialogTitle = '新增'
+      this.dialogVisible = true
+    },
+
+    handleClose() {
+      this.dialogVisible = false
+      this.form = {
+        id: '',
+        parentId: '',
+        parentName: '',
+        name: '',
+        ancestors: '',
+        orderNum: '',
+        tenantId: '',
+        version: '',
+        delFlag: '',
+        createBy: '',
+        createTime: '',
+        updateBy: '',
+        updateTime: ''
+      }
+    },
+
+    handUpdate(row) {
+      this.dialogTitle = '编辑'
+      this.form = deepClone(row)
+      this.dialogVisible = true
+    },
+
+    submit() {
+      switch (this.dialogTitle) {
+        case '编辑':
+          this.updateCommunicationAPI()
+          break
+        case '新增':
+          this.addCommunicationAPI()
+          break
+      }
+    },
+
+    selection(val) {
+      this.tableCheckItems = val
+    },
+
+    remove(row) {
+      this.$confirm('是否删除该数据', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          this.removeCommunicationAPI(row.map((e) => e.id))
+        })
+        .catch(() => {})
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '../index.scss';
+</style>