zhaobao 2 rokov pred
rodič
commit
042659a114
52 zmenil súbory, kde vykonal 330 pridanie a 109 odobranie
  1. 2 1
      package.json
  2. 1 1
      src/api/system/docApi.js
  3. BIN
      src/assets/images/Navbar/goaf.png
  4. BIN
      src/assets/images/Navbar/goaf_selected.png
  5. BIN
      src/assets/images/common-hospital/common_default_picture.png
  6. BIN
      src/assets/images/common-hospital/common_dial_green.png
  7. BIN
      src/assets/images/common-hospital/common_dial_red.png
  8. BIN
      src/assets/images/common-hospital/satisfaction_bg1.png
  9. BIN
      src/assets/images/common-hospital/satisfaction_bg2.png
  10. BIN
      src/assets/images/common-hospital/satisfaction_bg3.png
  11. BIN
      src/assets/images/digitalPanorama/common_earlywarning.png
  12. BIN
      src/assets/images/digitalPanorama/common_headline_embellish.png
  13. BIN
      src/assets/images/digitalPanorama/common_ordinary.png
  14. BIN
      src/assets/images/digitalPanorama/common_routine.png
  15. BIN
      src/assets/images/digitalPanorama/common_temporary.png
  16. BIN
      src/assets/images/digitalPanorama/common_urgency.png
  17. BIN
      src/assets/images/digitalPanorama/daping_class.png
  18. BIN
      src/assets/images/digitalPanorama/daping_location.png
  19. BIN
      src/assets/images/digitalPanorama/daping_source.png
  20. BIN
      src/assets/images/digitalPanorama/daping_time.png
  21. BIN
      src/assets/images/economical-hospital/saving_each_icon.png
  22. BIN
      src/assets/images/health-hospital/health_each_icon.png
  23. BIN
      src/assets/images/overview/common_default_application.png
  24. BIN
      src/assets/images/overview/overview_health.png
  25. BIN
      src/assets/images/overview/overview_quality.png
  26. BIN
      src/assets/images/overview/overview_safety.png
  27. BIN
      src/assets/images/overview/overview_satisfaction.png
  28. BIN
      src/assets/images/overview/overview_saving.png
  29. BIN
      src/assets/images/overview/overview_wisdom.png
  30. BIN
      src/assets/images/pleased-hospital/satisfaction_each_bg1.png
  31. BIN
      src/assets/images/pleased-hospital/satisfaction_each_bg2.png
  32. BIN
      src/assets/images/pleased-hospital/satisfaction_each_icon.png
  33. BIN
      src/assets/images/qualityd-hospital/quality_each_icon.png
  34. BIN
      src/assets/images/safe-hospital/safety_right_bg.png
  35. BIN
      src/assets/images/safe-hospital/safety_total_icon1.png
  36. BIN
      src/assets/images/smart-hospital/wisdom_each_icon.png
  37. 75 2
      src/components/WorkFlow/index.vue
  38. 55 55
      src/router/modules/aqpt.js
  39. 43 1
      src/vendor/Export2Excel.js
  40. 7 6
      src/views/goaf/alert/activity/Submit.vue
  41. 6 0
      src/views/goaf/alert/rectify.vue
  42. 6 0
      src/views/goaf/checklist/config.vue
  43. 7 6
      src/views/goaf/danger/activity/Submit.vue
  44. 18 3
      src/views/goaf/info/components/GoafInfo.vue
  45. 2 2
      src/views/goaf/map/components/VisualEditor.vue
  46. 7 1
      src/views/goaf/qrcode/components/GoafInfo.vue
  47. 2 2
      src/views/goaf/sensor/CameraModel.vue
  48. 3 3
      src/views/goaf/sensor/Model.vue
  49. 1 1
      src/views/login/index.vue
  50. 3 3
      src/views/system/doc/components/Dir.vue
  51. 2 1
      vue.config.js
  52. 90 21
      yarn.lock

+ 2 - 1
package.json

@@ -55,7 +55,8 @@
     "vuedraggable": "2.20.0",
     "vuescroll": "^4.17.3",
     "vuex": "3.1.0",
-    "xlsx": "0.14.1"
+    "xlsx": "0.14.1",
+    "xlsx-style": "^0.8.13"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "4.4.4",

+ 1 - 1
src/api/system/docApi.js

@@ -7,7 +7,7 @@ import request from '@/utils/request'
  */
 export function getDirByList() {
   return request({
-    url: '/doc/dir/',
+    url: '/doc/dir',
     method: 'GET'
   })
 }

BIN
src/assets/images/Navbar/goaf.png


BIN
src/assets/images/Navbar/goaf_selected.png


BIN
src/assets/images/common-hospital/common_default_picture.png


BIN
src/assets/images/common-hospital/common_dial_green.png


BIN
src/assets/images/common-hospital/common_dial_red.png


BIN
src/assets/images/common-hospital/satisfaction_bg1.png


BIN
src/assets/images/common-hospital/satisfaction_bg2.png


BIN
src/assets/images/common-hospital/satisfaction_bg3.png


BIN
src/assets/images/digitalPanorama/common_earlywarning.png


BIN
src/assets/images/digitalPanorama/common_headline_embellish.png


BIN
src/assets/images/digitalPanorama/common_ordinary.png


BIN
src/assets/images/digitalPanorama/common_routine.png


BIN
src/assets/images/digitalPanorama/common_temporary.png


BIN
src/assets/images/digitalPanorama/common_urgency.png


BIN
src/assets/images/digitalPanorama/daping_class.png


BIN
src/assets/images/digitalPanorama/daping_location.png


BIN
src/assets/images/digitalPanorama/daping_source.png


BIN
src/assets/images/digitalPanorama/daping_time.png


BIN
src/assets/images/economical-hospital/saving_each_icon.png


BIN
src/assets/images/health-hospital/health_each_icon.png


BIN
src/assets/images/overview/common_default_application.png


BIN
src/assets/images/overview/overview_health.png


BIN
src/assets/images/overview/overview_quality.png


BIN
src/assets/images/overview/overview_safety.png


BIN
src/assets/images/overview/overview_satisfaction.png


BIN
src/assets/images/overview/overview_saving.png


BIN
src/assets/images/overview/overview_wisdom.png


BIN
src/assets/images/pleased-hospital/satisfaction_each_bg1.png


BIN
src/assets/images/pleased-hospital/satisfaction_each_bg2.png


BIN
src/assets/images/pleased-hospital/satisfaction_each_icon.png


BIN
src/assets/images/qualityd-hospital/quality_each_icon.png


BIN
src/assets/images/safe-hospital/safety_right_bg.png


BIN
src/assets/images/safe-hospital/safety_total_icon1.png


BIN
src/assets/images/smart-hospital/wisdom_each_icon.png


+ 75 - 2
src/components/WorkFlow/index.vue

@@ -13,7 +13,27 @@
       </el-form-item>
 
       <el-form-item v-if="handlerVisible" :label="handleUser" prop="accountIdTo">
-        <UserSelector :default-val="formData.accountIdTo" @setUserInfo="handleSelectUser" />
+        <div style="padding-bottom: 10px;">
+          <el-cascader
+            v-model="conditions.acceptGroupId"
+            :options="groupList"
+            :props="{ checkStrictly: true, emitPath: false }"
+            style="min-width: 160px"
+            filterable
+            clearable
+            placeholder="部门"
+            @change="handleChangeGroup"
+          >
+            <template slot-scope="{ node, data }">
+              <span>{{ data.label }}</span>
+              <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+            </template>
+          </el-cascader>
+          <el-select v-model="formData.accountIdTo" filterable clearable :placeholder="handleUser" style="margin-left: 10px;" @change="changeSelectUser">
+            <el-option v-for="item in userList" :key="item.accountId" :value="item.accountId" :label="item.accountName" />
+          </el-select>
+        </div>
+        <UserSelector v-if="false" :default-val="formData.accountIdTo" @setUserInfo="handleSelectUser" />
       </el-form-item>
 
       <el-form-item v-if="attachVisible" label="附件" prop="attachList">
@@ -28,6 +48,9 @@ import UserSelector from '../UserSelector/index'
 import FileUpload from '@/components/FileUpload/multiUpload'
 import { getUserData } from '@/utils/auth'
 import { mapGetters } from 'vuex'
+import { toTree } from '@/utils/build-tree'
+import { getGroupByList } from '@/api/system/groupApi'
+import { getUserByPage } from '@/api/system/userApi'
 export default {
   name: 'WorkFlow',
   components: { UserSelector, FileUpload },
@@ -73,6 +96,8 @@ export default {
         accountNameTo: undefined,
         attachList: []
       },
+      groupList: [],
+      userList: [],
       rules: {
         actionRemark: [
           { required: true, message: '请填写处理说明', trigger: 'blur' }
@@ -109,6 +134,10 @@ export default {
       }
     }
   },
+  created() {
+    this.getGroupByList()
+    this.getUserByPage()
+  },
   methods: {
 
     // 启动流程
@@ -256,7 +285,15 @@ export default {
         return false
       }
     },
-
+    changeSelectUser(accountId) {
+      const item = this.userList.filter(item => item.accountId === accountId)[0]
+      this.formData.accountIdTo = item.accountId
+      this.formData.groupIdTo = item.groupId
+      this.formData.positionIdTo = item.positionId
+      this.formData.accountNameTo = item.accountName
+      this.formData.groupNameTo = item.groupName
+      this.formData.positionNameTo = item.positionName
+    },
     // 用户选择
     handleSelectUser(item) {
       this.formData.accountIdTo = item.accountId
@@ -298,6 +335,42 @@ export default {
       if (val !== undefined && val !== 'undefined' && val !== null && val !== '' && val !== ' ') { return true } else {
         return false
       }
+    },
+    handleChangeGroup(groupId) {
+      this.formData.accountIdTo = ''
+      this.formData.accountNameTo = ''
+      this.getUserByPage(groupId)
+    },
+    getGroupByList() {
+      getGroupByList().then((resp) => {
+        const { code, data } = resp
+        if (code === 0) {
+          const temp = toTree(
+            data,
+            {
+              value: 'value',
+              name: 'label',
+              pValue: 'parentId'
+            },
+            {
+              value: 'groupId',
+              name: 'groupName',
+              pValue: 'parentId'
+            }
+          )
+          this.groupList = temp
+        }
+      })
+    },
+    getUserByPage(groupId) {
+      getUserByPage({
+        page: 1,
+        limit: 999999,
+        groupId
+      }).then((resp) => {
+        const { data } = resp
+        this.userList = data
+      })
     }
   }
 }

+ 55 - 55
src/router/modules/aqpt.js

@@ -461,40 +461,40 @@ const aqptRouter = [
       permit: 'aqpt_setting'
     },
     children: [
-      {
-        path: 'groupCat',
-        component: () => import('@/views/system/setting/groupCat/index'),
-        name: 'aqpt_setting_group_cat',
-        meta: { title: '群组类别', noCache: true, permit: 'aqpt_setting_group_cat' }
-      },
+      // {
+      //   path: 'groupCat',
+      //   component: () => import('@/views/system/setting/groupCat/index'),
+      //   name: 'aqpt_setting_group_cat',
+      //   meta: { title: '群组类别', noCache: true, permit: 'aqpt_setting_group_cat' }
+      // },
 
-      {
-        path: 'taskCat',
-        component: () => import('@/views/system/setting/taskCat/index'),
-        name: 'aqpt_setting_task_cat',
-        meta: { title: '任务类别', noCache: true, permit: 'aqpt_setting_task_cat' }
-      },
+      // {
+      //   path: 'taskCat',
+      //   component: () => import('@/views/system/setting/taskCat/index'),
+      //   name: 'aqpt_setting_task_cat',
+      //   meta: { title: '任务类别', noCache: true, permit: 'aqpt_setting_task_cat' }
+      // },
 
-      {
-        path: 'checklistCat',
-        component: () => import('@/views/system/setting/checklistCat/index'),
-        name: 'aqpt_setting_checklist_cat',
-        meta: { title: '清单类别', noCache: true, permit: 'aqpt_setting_checklist_cat' }
-      },
+      // {
+      //   path: 'checklistCat',
+      //   component: () => import('@/views/system/setting/checklistCat/index'),
+      //   name: 'aqpt_setting_checklist_cat',
+      //   meta: { title: '清单类别', noCache: true, permit: 'aqpt_setting_checklist_cat' }
+      // },
 
-      {
-        path: 'riskPointCat',
-        component: () => import('@/views/aqpt/setting/riskPointCat/index'),
-        name: 'aqpt_setting_riskpoint_cat',
-        meta: { title: '风险点类别', noCache: true, permit: 'aqpt_setting_riskpoint_cat' }
-      },
+      // {
+      //   path: 'riskPointCat',
+      //   component: () => import('@/views/aqpt/setting/riskPointCat/index'),
+      //   name: 'aqpt_setting_riskpoint_cat',
+      //   meta: { title: '风险点类别', noCache: true, permit: 'aqpt_setting_riskpoint_cat' }
+      // },
 
-      {
-        path: 'dangerCat',
-        component: () => import('@/views/aqpt/setting/dangerCat/index'),
-        name: 'aqpt_setting_danger_cat',
-        meta: { title: '预警类别', noCache: true, permit: 'aqpt_setting_danger_cat' }
-      },
+      // {
+      //   path: 'dangerCat',
+      //   component: () => import('@/views/aqpt/setting/dangerCat/index'),
+      //   name: 'aqpt_setting_danger_cat',
+      //   meta: { title: '预警类别', noCache: true, permit: 'aqpt_setting_danger_cat' }
+      // },
 
       // {
       //   path: 'equipmentCat',
@@ -507,34 +507,34 @@ const aqptRouter = [
         component: () => import('@/views/goaf/sensorCat/index'),
         name: 'aqpt_setting_sensor_cat',
         meta: { title: '传感器类别', noCache: true, permit: 'aqpt_setting_equipment_cat' }
-      },
-      {
-        path: 'checkCat',
-        component: () => import('@/views/aqpt/setting/checkCat/index'),
-        name: 'aqpt_setting_check_cat',
-        meta: { title: '检查类别', noCache: true, permit: 'aqpt_setting_check_cat' }
-      },
+      }
+      // {
+      //   path: 'checkCat',
+      //   component: () => import('@/views/aqpt/setting/checkCat/index'),
+      //   name: 'aqpt_setting_check_cat',
+      //   meta: { title: '检查类别', noCache: true, permit: 'aqpt_setting_check_cat' }
+      // },
 
-      {
-        path: 'ctrlLevel',
-        component: () => import('@/views/aqpt/setting/ctrlLevel/index'),
-        name: 'aqpt_setting_ctrl_level',
-        meta: { title: '管控层级', noCache: true, permit: 'aqpt_setting_ctrl_level' }
-      },
+      // {
+      //   path: 'ctrlLevel',
+      //   component: () => import('@/views/aqpt/setting/ctrlLevel/index'),
+      //   name: 'aqpt_setting_ctrl_level',
+      //   meta: { title: '管控层级', noCache: true, permit: 'aqpt_setting_ctrl_level' }
+      // },
 
-      {
-        path: 'measureType',
-        component: () => import('@/views/aqpt/setting/measureType/index'),
-        name: 'aqpt_setting_measure_type',
-        meta: { title: '控制措施类型', noCache: true, permit: 'aqpt_setting_measure_type' }
-      },
+      // {
+      //   path: 'measureType',
+      //   component: () => import('@/views/aqpt/setting/measureType/index'),
+      //   name: 'aqpt_setting_measure_type',
+      //   meta: { title: '控制措施类型', noCache: true, permit: 'aqpt_setting_measure_type' }
+      // },
 
-      {
-        path: 'alertType',
-        component: () => import('@/views/aqpt/setting/alertType/index'),
-        name: 'aqpt_setting_alert_type',
-        meta: { title: '预警类型', noCache: true, permit: 'aqpt_setting_alert_type' }
-      }
+      // {
+      //   path: 'alertType',
+      //   component: () => import('@/views/aqpt/setting/alertType/index'),
+      //   name: 'aqpt_setting_alert_type',
+      //   meta: { title: '预警类型', noCache: true, permit: 'aqpt_setting_alert_type' }
+      // }
     ]
   }
 ]

+ 43 - 1
src/vendor/Export2Excel.js

@@ -1,6 +1,6 @@
 /* eslint-disable */
 import { saveAs } from 'file-saver'
-import XLSX from 'xlsx'
+import XLSX from 'xlsx-style'
 
 function generateArray(table) {
   var out = [];
@@ -205,9 +205,51 @@ export function export_json_to_excel({
     ws['!cols'] = result;
   }
 
+  let borderAll = { //单元格外侧框线
+    top: {
+        style: 'medium',
+    },
+    bottom: {
+        style: 'medium'
+    },
+    left: {
+        style: 'medium'
+    },
+    right: {
+        style: 'medium'
+    }
+};
+
+  for (let key in ws) {
+    if (ws[key] instanceof Object) {
+        ws[key].s = {
+            // border: borderAll,
+            alignment: {
+                horizontal: 'center', //水平居中对齐
+                vertical: 'center',//垂直居中
+                wrapText: 1,//自动换行
+            },
+            font: {
+                sz: 10,//单元格中字体的样式与颜色设置
+                color: {
+                    rgb: '495060'
+                }
+            },
+            bold: true,
+            numFmt: 0
+        }
+    }
+}
   /* add worksheet to workbook */
   wb.SheetNames.push(ws_name);
   wb.Sheets[ws_name] = ws;
+  // console.log(wb.Sheets[ws_name])
+  // wb.Sheets[ws_name].s={
+  //   alignment:{
+  //     horizontal:'center',
+  //     vertical:"center"
+  //   }
+  // }
 
   var wbout = XLSX.write(wb, {
     bookType: bookType,

+ 7 - 6
src/views/goaf/alert/activity/Submit.vue

@@ -268,12 +268,13 @@ export default {
         this.formData.scenePhoto = attach.fileUrl
         this.formData.sceneIcon = attach.fileIcon
       }
-      // this.formData.submitGroupId = this.userData.groupId
-      // this.formData.submitGroupName = this.userData.groupName
-      // this.formData.submitPositionId = this.userData.positionId
-      // this.formData.submitPositionName = this.userData.positionName
-      // this.formData.submitAccountId = this.userData.userId
-      // this.formData.submitAccountName = this.userData.userName
+      this.formData.submitGroupId = this.userData.groupId
+      this.formData.submitGroupName = this.userData.groupName
+      this.formData.submitPositionId = this.userData.positionId
+      this.formData.submitPositionName = this.userData.positionName
+      this.formData.submitAccountId = this.userData.userId
+      this.formData.submitAccountName = this.userData.userName
+      /** 评审人 */
       this.formData.reviewAccountId = flow.user.accountIdTo
       this.formData.reviewAccountName = flow.user.accountNameTo
       this.formData.reviewGroupId = flow.user.groupIdTo

+ 6 - 0
src/views/goaf/alert/rectify.vue

@@ -249,6 +249,7 @@ export default {
       let goafNames = this.deeepClone(this.goafNames)
       if (type === 1) {
         goafOrebodys = goafs.filter(item => item.goafOrebelt === this.conditions.goafOrebelt)
+        goafOrebodys = this.unique(goafOrebodys, 'goafOrebody')
         this.goafOrebodys = goafOrebodys
         this.goafOreheights = []
         this.goafNames = []
@@ -257,6 +258,7 @@ export default {
         this.conditions.goafName = ''
       } else if (type === 2) {
         goafOreheights = goafs.filter(item => (item.goafOrebody === this.conditions.goafOrebody) && (item.goafOrebelt === this.conditions.goafOrebelt))
+        goafOreheights = this.unique(goafOrebodys, 'goafOreheight')
         this.goafOreheights = goafOreheights
         this.goafNames = []
         this.conditions.goafOreheight = ''
@@ -374,6 +376,10 @@ export default {
       }
       return [photos]
     },
+    unique(arr = [], name = 'name') {
+      const res = new Map()
+      return arr.filter((item) => !res.has(item[name]) && res.set(item[name], 1))
+    },
     deeepClone(params) {
       return JSON.parse(JSON.stringify(params))
     }

+ 6 - 0
src/views/goaf/checklist/config.vue

@@ -137,6 +137,7 @@ export default {
       let goafNames = this.deeepClone(this.goafNames)
       if (type === 1) {
         goafOrebodys = goafs.filter(item => item.goafOrebelt === this.conditions.goafOrebelt)
+        goafOrebodys = this.unique(goafOrebodys, 'goafOrebody')
         this.goafOrebodys = goafOrebodys
         this.goafOreheights = []
         this.goafNames = []
@@ -146,6 +147,7 @@ export default {
         this.conditions.goafId = ''
       } else if (type === 2) {
         goafOreheights = goafs.filter(item => (item.goafOrebody === this.conditions.goafOrebody) && (item.goafOrebelt === this.conditions.goafOrebelt))
+        goafOreheights = this.unique(goafOreheights, 'goafOreheight')
         this.goafOreheights = goafOreheights
         this.goafNames = []
         this.conditions.goafOreheight = ''
@@ -271,6 +273,10 @@ export default {
         this.$message.info('已取消删除')
       })
     },
+    unique(arr = [], name = 'name') {
+      const res = new Map()
+      return arr.filter((item) => !res.has(item[name]) && res.set(item[name], 1))
+    },
     deeepClone(params) {
       return JSON.parse(JSON.stringify(params))
     }

+ 7 - 6
src/views/goaf/danger/activity/Submit.vue

@@ -268,12 +268,13 @@ export default {
         this.formData.scenePhoto = attach.fileUrl
         this.formData.sceneIcon = attach.fileIcon
       }
-      // this.formData.submitGroupId = this.userData.groupId
-      // this.formData.submitGroupName = this.userData.groupName
-      // this.formData.submitPositionId = this.userData.positionId
-      // this.formData.submitPositionName = this.userData.positionName
-      // this.formData.submitAccountId = this.userData.userId
-      // this.formData.submitAccountName = this.userData.userName
+      this.formData.submitGroupId = this.userData.groupId
+      this.formData.submitGroupName = this.userData.groupName
+      this.formData.submitPositionId = this.userData.positionId
+      this.formData.submitPositionName = this.userData.positionName
+      this.formData.submitAccountId = this.userData.userId
+      this.formData.submitAccountName = this.userData.userName
+      /** 评审人 */
       this.formData.reviewAccountId = flow.user.accountIdTo
       this.formData.reviewAccountName = flow.user.accountNameTo
       this.formData.reviewGroupId = flow.user.groupIdTo

+ 18 - 3
src/views/goaf/info/components/GoafInfo.vue

@@ -136,6 +136,7 @@ export default {
       let goafNames = this.deeepClone(this.goafNames)
       if (type === 1) {
         goafOrebodys = goafs.filter(item => item.goafOrebelt === this.conditions.goafOrebelt)
+        goafOrebodys = this.unique(goafOrebodys, 'goafOrebody')
         this.goafOrebodys = goafOrebodys
         this.goafOreheights = []
         this.goafNames = []
@@ -145,6 +146,7 @@ export default {
         this.conditions.goafId = ''
       } else if (type === 2) {
         goafOreheights = goafs.filter(item => (item.goafOrebody === this.conditions.goafOrebody) && (item.goafOrebelt === this.conditions.goafOrebelt))
+        goafOreheights = this.unique(goafOrebodys, 'goafOreheight')
         this.goafOreheights = goafOreheights
         this.goafNames = []
         this.conditions.goafOreheight = ''
@@ -224,11 +226,20 @@ export default {
       const keys = filterVal
       for (let j = 0; j < keys.length; j++) {
         let temp = ''
+        let _temp = ''
         for (let i = 0; i < list.length; i++) {
           if (list[i][keys[j]] !== temp) {
             temp = list[i][keys[j]]
             const start = i + 2
             const end = i + 1 + list.filter(item => item[keys[j]] === list[i][keys[j]]).length
+            for (let k = i; k < end - 2; k++) {
+              if (list[k].goafOrebody !== _temp) {
+                _temp = list[k].goafOrebody
+                const _start = k + 2
+                const _end = k + 1 + list.filter(item => item.goafOrebody === list[k].goafOrebody).length
+                merges.push(`${rowIndexs[1]}${_start}:${rowIndexs[1]}${_end}`)
+              }
+            }
             merges.push(`${rowIndexs[j]}${start}:${rowIndexs[j]}${end}`)
           }
         }
@@ -252,12 +263,16 @@ export default {
     getEnums() {
       return {
         goafOrebelt: '矿带', goafOrebody: '矿体', goafOreheight: '中段', goafName: '采空区名称',
-        goafAvexArea: '水平断面均暴露面积', goafKeyTrend: '倾向', goafKeyDipangle: '倾角',
-        goafAvinWidth: '平均倾向宽度', goafAvexHeight: '平均暴露高度', goafVoidVolume: '体积',
-        goafRoofpillarThickness: '顶板矿柱厚度', goafIncoavThickness: '保安间柱平均厚度', goafExpLocation: '勘探位置',
+        goafAvexArea: '水平断面均暴露面积(㎡)', goafKeyTrend: '倾向(度)', goafKeyDipangle: '倾角(度)',
+        goafAvinWidth: '平均倾向宽度(m)', goafAvexHeight: '平均暴露高度(m)', goafVoidVolume: '体积(m³)',
+        goafRoofpillarThickness: '顶板矿柱厚度(m)', goafIncoavThickness: '保安间柱平均厚度(m)', goafExpLocation: '勘探位置',
         goafRockLithology: '围岩岩性', goafRockStability: '围岩稳定性', goafFormationTime: '形成时间'
       }
     },
+    unique(arr = [], name = 'name') {
+      const res = new Map()
+      return arr.filter((item) => !res.has(item[name]) && res.set(item[name], 1))
+    },
     deeepClone(params) {
       return JSON.parse(JSON.stringify(params))
     }

+ 2 - 2
src/views/goaf/map/components/VisualEditor.vue

@@ -462,7 +462,7 @@ export default {
       let goafNames = this.deeepClone(this.goafNames)
       if (type === 1) {
         goafOrebodys = goafs.filter(item => item.goafOrebelt === this.saveForm.goafOrebelt)
-        // goafOrebodys = this.unique(goafOrebodys, 'goafOrebelt')
+        goafOrebodys = this.unique(goafOrebodys, 'goafOrebody')
         this.goafOrebodys = goafOrebodys
         this.goafOreheights = []
         this.goafNames = []
@@ -471,7 +471,7 @@ export default {
         this.saveForm.goafName = ''
       } else if (type === 2) {
         goafOreheights = goafs.filter(item => (item.goafOrebody === this.saveForm.goafOrebody) && (item.goafOrebelt === this.saveForm.goafOrebelt))
-        // goafOreheights = this.unique(goafOreheights, 'goafOreheight')
+        goafOreheights = this.unique(goafOreheights, 'goafOreheight')
         this.goafOreheights = goafOreheights
         this.goafNames = []
         this.saveForm.goafOreheight = ''

+ 7 - 1
src/views/goaf/qrcode/components/GoafInfo.vue

@@ -134,6 +134,7 @@ export default {
       let goafNames = this.deeepClone(this.goafNames)
       if (type === 1) {
         goafOrebodys = goafs.filter(item => item.goafOrebelt === this.conditions.goafOrebelt)
+        goafOrebodys = this.unique(goafOrebodys, 'goafOrebody')
         this.goafOrebodys = goafOrebodys
         this.goafOreheights = []
         this.goafNames = []
@@ -142,6 +143,7 @@ export default {
         this.conditions.goafName = ''
       } else if (type === 2) {
         goafOreheights = goafs.filter(item => (item.goafOrebody === this.conditions.goafOrebody) && (item.goafOrebelt === this.conditions.goafOrebelt))
+        goafOreheights = this.unique(goafOreheights, 'goafOreheight')
         this.goafOreheights = goafOreheights
         this.goafNames = []
         this.conditions.goafOreheight = ''
@@ -187,7 +189,7 @@ export default {
           window.loading.close()
           this.$message.error('导出失败')
         })
-        await self.packMaterial(`${item.goafOrebelt}-${item.goafOrebody}-${item.goafOreheight}-${new Date().getTime()}`).catch(() => {
+        await self.packMaterial(`${self.convertNum(item.goafOrebelt)}_${item.goafOrebody}_${item.goafOreheight}_${item.goafName}_${new Date().getTime()}`).catch(() => {
           window.loading.close()
           this.$message.error('导出失败')
         })
@@ -259,6 +261,10 @@ export default {
         this.$message.info('已取消删除')
       })
     },
+    unique(arr = [], name = 'name') {
+      const res = new Map()
+      return arr.filter((item) => !res.has(item[name]) && res.set(item[name], 1))
+    },
     deeepClone(params) {
       return JSON.parse(JSON.stringify(params))
     }

+ 2 - 2
src/views/goaf/sensor/CameraModel.vue

@@ -256,7 +256,7 @@ export default {
         goafOrebodys = goafOrebelts.filter(
           (item) => item.goafOrebelt === this.formData.goafOrebelt
         )
-        // goafOrebodys = this.unique(goafOrebodys, 'goafOrebelt')
+        goafOrebodys = this.unique(goafOrebodys, 'goafOrebody')
         this.goafOrebodys = goafOrebodys
         this.goafOreheights = []
         this.goafNames = []
@@ -267,7 +267,7 @@ export default {
         goafOreheights = goafOrebodys.filter(
           (item) => item.goafOrebody === this.formData.goafOrebody
         )
-        // goafOreheights = this.unique(goafOreheights, 'goafOreheight')
+        goafOreheights = this.unique(goafOreheights, 'goafOreheight')
         this.goafOreheights = goafOreheights
         this.goafNames = []
         this.formData.goafOreheights = ''

+ 3 - 3
src/views/goaf/sensor/Model.vue

@@ -260,7 +260,7 @@ export default {
         goafOrebodys = goafOrebelts.filter(
           (item) => item.goafOrebelt === this.formData.goafOrebelt
         )
-        // goafOrebodys = this.unique(goafOrebodys, 'goafOrebelt')
+        goafOrebodys = this.unique(goafOrebodys, 'goafOrebody')
         this.goafOrebodys = goafOrebodys
         this.goafOreheights = []
         this.goafNames = []
@@ -271,10 +271,10 @@ export default {
         goafOreheights = goafOrebodys.filter(
           (item) => item.goafOrebody === this.formData.goafOrebody
         )
-        // goafOreheights = this.unique(goafOreheights, 'goafOreheight')
+        goafOreheights = this.unique(goafOreheights, 'goafOreheight')
         this.goafOreheights = goafOreheights
         this.goafNames = []
-        this.formData.goafOreheights = ''
+        this.formData.goafOreheight = ''
         this.formData.goafId = ''
       } else if (type === 3) {
         goafNames = goafOreheights.filter(

+ 1 - 1
src/views/login/index.vue

@@ -247,7 +247,7 @@ $bg: #2d3a4b;
     .login-container {
         min-height: 100%;
         width: 100%;
-        background-image: url("../../assets/images/login/login_ornament.png");
+        // background-image: url("../../assets/images/login/login_ornament.png");
         background-size: 910px 870px;
         background-repeat: no-repeat;
         background-color: #071A29;

+ 3 - 3
src/views/system/doc/components/Dir.vue

@@ -41,7 +41,7 @@ export default {
       formData: {
         dirId: '',
         dirTitle: '',
-        parentId: ''
+        parentId: 0
       },
       rules: {
         dirTitle: [
@@ -55,7 +55,7 @@ export default {
   },
   methods: {
     // Add Model
-    showAddModel(parentId) {
+    showAddModel(parentId = 0) {
       this.resetFormData()
       this.actionType = ACTION_ADD
       this.dialogVisible = true
@@ -84,7 +84,7 @@ export default {
       this.formData = {
         dirId: '',
         dirTitle: '',
-        parentId: ''
+        parentId: 0
       }
     },
 

+ 2 - 1
vue.config.js

@@ -45,7 +45,8 @@ module.exports = {
       alias: {
         '@': resolve('src')
       }
-    }
+    },
+    externals: [{ './cptable': 'var cptable' }]
   },
   chainWebpack(config) {
     // it can improve the speed of the first screen, it is recommended to turn on preload

+ 90 - 21
yarn.lock

@@ -1982,6 +1982,11 @@ address@^1.1.2:
   resolved "https://registry.nlark.com/address/download/address-1.1.2.tgz"
   integrity sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=
 
+adler-32@:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2"
+  integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==
+
 adler-32@~1.2.0:
   version "1.2.0"
   resolved "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz"
@@ -3094,6 +3099,14 @@ caseless@~0.12.0:
   resolved "https://registry.nlark.com/caseless/download/caseless-0.12.0.tgz"
   integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
 
+cfb@>=0.10.0:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44"
+  integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==
+  dependencies:
+    adler-32 "~1.3.0"
+    crc-32 "~1.2.0"
+
 cfb@^1.1.0:
   version "1.2.1"
   resolved "https://registry.npmjs.org/cfb/-/cfb-1.2.1.tgz"
@@ -3413,6 +3426,15 @@ codepage@~1.14.0:
     commander "~2.14.1"
     exit-on-epipe "~1.0.1"
 
+codepage@~1.3.6:
+  version "1.3.8"
+  resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.3.8.tgz#4f2e5d7c0975de28f88498058dcb5afcab6a5f71"
+  integrity sha512-cjAoQW5L/TCKWRbzt/xGBvhwJKQFhcIVO0jWQtpKQx4gr9qvXNkpRfq6gSmjjA8dB2Is/DPOb7gNwqQXP7UgTQ==
+  dependencies:
+    commander ""
+    concat-stream ""
+    voc ""
+
 collection-visit@^1.0.0:
   version "1.0.0"
   resolved "https://registry.nlark.com/collection-visit/download/collection-visit-1.0.0.tgz"
@@ -3461,6 +3483,11 @@ color@^3.0.0:
     color-convert "^1.9.3"
     color-string "^1.6.0"
 
+colors@0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
+  integrity sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==
+
 combined-stream@^1.0.6, combined-stream@~1.0.6:
   version "1.0.8"
   resolved "https://registry.nlark.com/combined-stream/download/combined-stream-1.0.8.tgz"
@@ -3468,10 +3495,10 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
   dependencies:
     delayed-stream "~1.0.0"
 
-commander@*:
-  version "8.2.0"
-  resolved "https://registry.nlark.com/commander/download/commander-8.2.0.tgz?cache=0&sync_timestamp=1631257318022&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-8.2.0.tgz"
-  integrity sha1-N/4r3jAdh9R6U63v+LWRXbE4HKg=
+commander@:
+  version "10.0.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
+  integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
 
 commander@2.17.x, commander@~2.17.1:
   version "2.17.1"
@@ -3536,24 +3563,24 @@ concat-map@0.0.1:
   resolved "https://registry.nlark.com/concat-map/download/concat-map-0.0.1.tgz"
   integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
 
-concat-stream@^1.5.0:
-  version "1.6.2"
-  resolved "https://registry.nlark.com/concat-stream/download/concat-stream-1.6.2.tgz"
-  integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=
+concat-stream@, concat-stream@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
+  integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
   dependencies:
     buffer-from "^1.0.0"
     inherits "^2.0.3"
-    readable-stream "^2.2.2"
+    readable-stream "^3.0.2"
     typedarray "^0.0.6"
 
-concat-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
-  integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
+concat-stream@^1.5.0:
+  version "1.6.2"
+  resolved "https://registry.nlark.com/concat-stream/download/concat-stream-1.6.2.tgz"
+  integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=
   dependencies:
     buffer-from "^1.0.0"
     inherits "^2.0.3"
-    readable-stream "^3.0.2"
+    readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
 condense-newlines@^0.2.1:
@@ -3730,6 +3757,11 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.0.7:
     js-yaml "^3.13.1"
     parse-json "^4.0.0"
 
+crc-32@:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
+  integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
+
 crc-32@~1.2.0:
   version "1.2.0"
   resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz"
@@ -5446,6 +5478,11 @@ forwarded@0.2.0:
   resolved "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz"
   integrity sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=
 
+frac@0.3.1:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/frac/-/frac-0.3.1.tgz#577677b7fdcbe6faf7c461f1801d34137cda4354"
+  integrity sha512-1Lzf2jOjhIkRaa013KlxNOn2D9FemmQNeYUDpEIyPeFXmpLvbZXJOlaayMBT6JKXx+afQFgQ1QJ4kaF7Z07QFQ==
+
 frac@~1.1.2:
   version "1.1.2"
   resolved "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz"
@@ -7625,6 +7662,13 @@ jsprim@^1.2.2:
     json-schema "0.2.3"
     verror "1.10.0"
 
+jszip@2.4.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/jszip/-/jszip-2.4.0.tgz#487a93b76c3bffa6cb085cd61eb934eabe2d294f"
+  integrity sha512-m+yvNmYfRCaf1gr5YFT5e3fnSqLnE9McbNyRd0fNycsT0HltS19NKc18fh3Lvl/AIW/ovL6/MQ1JnfFg4G3o4A==
+  dependencies:
+    pako "~0.2.5"
+
 jszip@3.2.1:
   version "3.2.1"
   resolved "https://registry.nlark.com/jszip/download/jszip-3.2.1.tgz"
@@ -8393,13 +8437,6 @@ mkdirp@0.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
   dependencies:
     minimist "^1.2.5"
 
-mockjs@1.0.1-beta3:
-  version "1.0.1-beta3"
-  resolved "https://registry.nlark.com/mockjs/download/mockjs-1.0.1-beta3.tgz"
-  integrity sha1-0jTzwnJWOXVk8slVFC6JGQlTcgk=
-  dependencies:
-    commander "*"
-
 move-concurrently@^1.0.1:
   version "1.0.1"
   resolved "https://registry.nlark.com/move-concurrently/download/move-concurrently-1.0.1.tgz"
@@ -9090,6 +9127,11 @@ p-try@^2.0.0:
   resolved "https://registry.npmmirror.com/p-try/download/p-try-2.2.0.tgz?cache=0&sync_timestamp=1633364462890&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fp-try%2Fdownload%2Fp-try-2.2.0.tgz"
   integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=
 
+pako@~0.2.5:
+  version "0.2.9"
+  resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+  integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
+
 pako@~1.0.2, pako@~1.0.5:
   version "1.0.11"
   resolved "https://registry.nlark.com/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1627560187062&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpako%2Fdownload%2Fpako-1.0.11.tgz"
@@ -11201,6 +11243,15 @@ ssf@~0.10.2:
   dependencies:
     frac "~1.1.2"
 
+ssf@~0.8.1:
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/ssf/-/ssf-0.8.2.tgz#b9d4dc6a1c1bcf76f8abfa96d7d7656fb2abecd6"
+  integrity sha512-+ZkFDAG+ImJ48DcZvabx6YTrZ67DKkM0kbyOOtH73mbUEvNhQWWgRZrHC8+k7GuGKWQnACYLi7bj0eCt1jmosQ==
+  dependencies:
+    colors "0.6.2"
+    frac "0.3.1"
+    voc ""
+
 sshpk@^1.7.0:
   version "1.16.1"
   resolved "https://registry.nlark.com/sshpk/download/sshpk-1.16.1.tgz"
@@ -12306,6 +12357,11 @@ vm-browserify@^1.0.1:
   resolved "https://registry.nlark.com/vm-browserify/download/vm-browserify-1.1.2.tgz"
   integrity sha1-eGQcSIuObKkadfUR56OzKobl3aA=
 
+voc@:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/voc/-/voc-1.2.0.tgz#c459024531d71067c09e2c0c2bda6c2b13af32d8"
+  integrity sha512-BOuDjFFYvJdZO6e/N65AlaDItXo2TgyLjeyRYcqgAPkXpp5yTJcvkL2n+syO1r9Qc5g96tfBD2tuiMhYDmaGcA==
+
 vue-amap@^0.5.10:
   version "0.5.10"
   resolved "https://registry.nlark.com/vue-amap/download/vue-amap-0.5.10.tgz"
@@ -12814,6 +12870,19 @@ ws@^7.5.5:
   resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
   integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
 
+xlsx-style@^0.8.13:
+  version "0.8.13"
+  resolved "https://registry.yarnpkg.com/xlsx-style/-/xlsx-style-0.8.13.tgz#ed238d6b8c0562f9447c2906abbded2d339e0486"
+  integrity sha512-Cj3pGUvzrP2q9oowpLP8GyujovTaBGjBRRUlCKPitNvHWj9JDD5+FDPZIM5QQggGb995ZhkuBSsMZOSd5TzIWg==
+  dependencies:
+    adler-32 ""
+    cfb ">=0.10.0"
+    codepage "~1.3.6"
+    commander ""
+    crc-32 ""
+    jszip "2.4.0"
+    ssf "~0.8.1"
+
 xlsx@0.14.1:
   version "0.14.1"
   resolved "https://registry.npmjs.org/xlsx/-/xlsx-0.14.1.tgz"