Browse Source

Merge branch 'dev' of http://39.106.8.246:3003/web/ibms into dev

haojianlong 4 years ago
parent
commit
6771743977
36 changed files with 2330 additions and 2020 deletions
  1. 3 3
      config/dev.env.js
  2. 3 3
      config/index.js
  3. 4 2
      config/prod.env.js
  4. 28 34
      src/components/dialogs/list/batchDialog.vue
  5. 3 3
      src/components/dialogs/list/picDialog.vue
  6. 1 1
      src/components/dialogs/list/supplierDialog.vue
  7. 2 2
      src/components/ledger/cenote/dialog/addSpaceDialog.vue
  8. 1 1
      src/components/ledger/details/detail/cruxDialog.vue
  9. 68 63
      src/components/ledger/handsontables/assets.vue
  10. 1565 1503
      src/components/ledger/handsontables/device.vue
  11. 5 1
      src/components/ledger/lib/excelDialog.vue
  12. 3 3
      src/components/ledger/lib/lookImages.vue
  13. 11 1
      src/components/ledger/lib/spaceSelect.vue
  14. 2 1
      src/components/ledger/lib/uploadImgsName.vue
  15. 2 0
      src/components/ledger/rentList/roomCountDrawer.vue
  16. 22 6
      src/components/ledger/system/dialog/addSpaceDialog.vue
  17. 11 10
      src/components/model/file/addFloorDialog.vue
  18. 4 0
      src/components/relation/overview/CardList.vue
  19. 2 1
      src/components/relation/overview/Modal/RelationMaintain.vue
  20. 68 50
      src/framework/layout/Main.vue
  21. 11 11
      src/framework/layout/PageHeader.vue
  22. 2 1
      src/framework/layout/layout-store.js
  23. 11 0
      src/views/ledger/cenotelist/cenoteadd/index.vue
  24. 49 7
      src/views/ledger/cenotelist/index.vue
  25. 1 1
      src/views/ledger/cenotelist/relatedSpace.vue
  26. 100 35
      src/views/ledger/facility/addfacility.vue
  27. 43 33
      src/views/ledger/facility/batchPoint.vue
  28. 5 31
      src/views/ledger/facility/details/index.vue
  29. 110 62
      src/views/ledger/facility/partsmanage/addparts/index.vue
  30. 43 59
      src/views/ledger/facility/partsmanage/index.vue
  31. 19 0
      src/views/ledger/property/addproperty.vue
  32. 19 0
      src/views/ledger/rentlist/rentadd/index.vue
  33. 85 91
      src/views/ledger/report/index.vue
  34. 19 0
      src/views/ledger/system/addsystem.vue
  35. 5 0
      src/views/relation/overview/index.vue
  36. 0 1
      src/views/system/auth/index.vue

+ 3 - 3
config/dev.env.js

@@ -4,13 +4,13 @@ const prodEnv = require('./prod.env')
 
 module.exports = merge(prodEnv, {
   NODE_ENV: '"development"',
-  // BASE_URL: '"http://192.168.64.14:8081"', //测试iframe地址
-  // BASE_URL: '"http://60.205.177.43:8081"', //测试iframe地址
+  // BASE_URL: '"http://192.168.64.14"', //测试iframe地址
+  // BASE_URL: '"http://60.205.177.43"', //测试iframe地址
   // SSO_SERVER: '"http://192.168.12.238:8081"', //测试环境
   // BASE_URL: '"http://192.168.20.236"', //(新)测试iframe地址
   // SSO_SERVER: '"http://192.168.20.236:8086"', //(新)测试环境
   // MQTT_SERVICE: '"ws://172.16.42.210:61614/stomp/"' //MQ测试环境地址
-  BASE_URL: '"http://192.168.64.14:8081"', //线上iframe地址
+  BASE_URL: '"http://192.168.64.14"', //线上iframe地址
   SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
   MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
 })

+ 3 - 3
config/index.js

@@ -12,14 +12,14 @@ module.exports = {
 
     proxyTable: {//正式环境
       '/admin': {
-        target: ' http://192.168.64.14:8080/',
+        target: 'http://192.168.64.14:8080/',
         changeOrigin: true,
         pathRewrite: {
           "^/admin": "/"
         }
       },
       '/api': {
-        target: ' http://192.168.64.14:8080/',
+        target: 'http://192.168.64.14:8080/',
         changeOrigin: true,
         pathRewrite: {
           "^/api": "/"
@@ -80,7 +80,7 @@ module.exports = {
       },
       '/image-service': {
         // 目标 API 地址
-        target: 'http://39.97.179.199:8888',
+        target: 'http://39.97.179.199:8891',
         changeOrigin: true,
         pathRewrite: {
           "^/image-service": "/image-service/"

+ 4 - 2
config/prod.env.js

@@ -1,13 +1,15 @@
 'use strict'
 module.exports = {
   NODE_ENV: '"production"',
-  BASE_URL: '"http://192.168.64.14:8081"', //测试iframe地址
+  BASE_URL: '"http://192.168.64.14"', //测试iframe地址
   // SSO_SERVER: '"http://192.168.12.238:8081"', //测试环境
   // BASE_URL: '"http://192.168.20.236"', //(新)测试iframe地址
   // SSO_SERVER: '"http://192.168.20.236:8086"', //(新)测试环境
   // MQTT_SERVICE: '"ws://172.16.42.210:61614/stomp/"' //MQ测试环境地址
   // BASE_URL: '"http://mbi.sagacloud.cn"', //线上iframe地址
-  SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
+  // SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
+//   BASE_URL: '"http://182.92.126.202"', //龙湖iframe地址
+  SSO_SERVER: '"http://182.92.126.202:8889/"',  //龙湖正式环境
    MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
 }
 

+ 28 - 34
src/components/dialogs/list/batchDialog.vue

@@ -133,30 +133,30 @@
 </template>
 
 <script>
-  import myPagination from "@/components/ledger/lib/myPagination"
-  import tools from "@/utils/buildfloor/tools";
-
-  export default {
-    name: "batchDialog",
-    props: ['firmName', 'allObject', 'page', 'information','newEnclosure'],
-    components: {myPagination},
-    data() {
-      return {
-        form:{},
-        batchDialog: false,//dialog
-        active: 0,//进度条
-        checkAll: false,//全选
-        isIndeterminate: true,
-        checkedCities: [],//选择的项,单项
-        firm: [
-          {
-            name: "生产厂家/品牌型号",
-            code: "DPManufacturerID",
-            num: 2,
-          }, {
-            name: "供应商信息",
-            code: "DPSupplierID",
-            num: 8
+import myPagination from "@/components/ledger/lib/myPagination"
+import tools from "@/utils/buildfloor/tools";
+
+export default {
+  name: "batchDialog",
+  props: ['firmName', 'allObject', 'page', 'information', 'newEnclosure'],
+  components: {myPagination},
+  data() {
+    return {
+      form: {},
+      batchDialog: false,//dialog
+      active: 0,//进度条
+      checkAll: false,//全选
+      isIndeterminate: true,
+      checkedCities: [],//选择的项,单项
+      firm: [
+        {
+          name: "生产厂家/品牌型号",
+          code: "DPManufacturerID",
+          num: 2,
+        }, {
+          name: "供应商信息",
+          code: "DPSupplierID",
+          num: 8
           }, {
             name: "维修商信息",
             code: "DPMaintainerID",
@@ -230,18 +230,11 @@
     },
     filters: {
       filterImgName(value) {
-        if (value && value.length > 16) {
-          return value.substring(0, 12) + '...'
-        } else {
-          return value
-        }
+        return value && value.length > 16 ? value.substring(0, 12) + '...' : value
       } ,
       filterImgNames(value) {
-        if (value && value.length > 16) {
-          return value.substring(0, 16) + '...'
-        } else {
-          return value
-        }
+        return value && value.length > 16 ? value.substring(0, 16) + '...' : value
+
       }
     },
     methods: {
@@ -449,6 +442,7 @@
         this.$emit('getAllData')
       },
       multiple(val) {
+
         this.$emit('multiples',val)
       },
 

+ 3 - 3
src/components/dialogs/list/picDialog.vue

@@ -136,11 +136,11 @@
         this.picArrs = []
         if (this.keysArr instanceof Array) {
           this.keysArr.map(item => {
-            if (item.type == 'panorama') {
+            if (item.Type == 'panorama') {
               this.panoramaArr.push(item)
-            } else if (item.type == "video") {
+            } else if (item.Type == "video") {
               this.videoArr.push(item)
-            } else if (item.type == 'image_video') {
+            } else if (item.Type == 'image_video') {
               this.videoPicArr.push(item)
             } else {
               this.picArrs.push(item)

+ 1 - 1
src/components/dialogs/list/supplierDialog.vue

@@ -144,7 +144,7 @@
 
             //分页改变
             changePage() {
-                this.pagination(this.page.currentPage, this.page.size, this.allData)
+                this.tableData = this.pagination(this.page.currentPage, this.page.size, this.allData)
             },
 
             //发生修改

+ 2 - 2
src/components/ledger/cenote/dialog/addSpaceDialog.vue

@@ -77,7 +77,7 @@ export default {
   },
   data() {
     return {
-      title: "添加系统所在业务空间",
+      title: "添加竖井所在业务空间",
       keycode: "", //输入查询条件
       inSpaceType: "业务空间",
       Buildfloor: ["all"], // 选中的建筑楼层
@@ -220,4 +220,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 1 - 1
src/components/ledger/details/detail/cruxDialog.vue

@@ -84,7 +84,7 @@
           setDataDictionary(param, res => {
             this.dialogFormVisible = false
             this.$emit('cruxSuccess')
-            this.$message('保存成功')
+            this.$message.success('保存成功')
 
           });
 

+ 68 - 63
src/components/ledger/handsontables/assets.vue

@@ -141,72 +141,72 @@
   </div>
 </template>
 <script>
-  import {
-    BeatchQueryParam,
-    countPartsDie,
-    createPropertys,
-    deleteProperty,
-    getDataDictionary,
-    propertyLinkEq,
-    queryProperty,
-    propertyUpdate,
-    updateProperty
-  } from "@/api/scan/request";
+import {
+  BeatchQueryParam,
+  countPartsDie,
+  createPropertys,
+  deleteProperty,
+  getDataDictionary,
+  propertyLinkEq,
+  propertyUpdate,
+  queryProperty,
+  updateProperty
+} from "@/api/scan/request";
 
-  import tools from "@/utils/scan/tools"
-  import handsonUtils from "@/utils/scan/hasontableUtils"
-  import showTools from "@/utils/handsontable/notShow"
-  import buildFloor from '@/utils/handsontable/buildFloorData'
-  import firm from "@/components/dialogs/list/firm"
-  import supplierDialog from "@/components/dialogs/list/supplierDialog"
-  import uploadFilesDialog from "@/components/dialogs/list/filesDialog"
-  import uploadImgDialog from "@/components/dialogs/list/uploadImgDialog"
-  import maintainerDialog from "@/components/dialogs/list/maintainerDialog"
-  import insurerDialog from "@/components/dialogs/list/insurerDialog"
-  import picDialog from "@/components/dialogs/list/picDialog"
+import tools from "@/utils/scan/tools"
+import handsonUtils from "@/utils/scan/hasontableUtils"
+import showTools from "@/utils/handsontable/notShow"
+import buildFloor from '@/utils/handsontable/buildFloorData'
+import firm from "@/components/dialogs/list/firm"
+import supplierDialog from "@/components/dialogs/list/supplierDialog"
+import uploadFilesDialog from "@/components/dialogs/list/filesDialog"
+import uploadImgDialog from "@/components/dialogs/list/uploadImgDialog"
+import maintainerDialog from "@/components/dialogs/list/maintainerDialog"
+import insurerDialog from "@/components/dialogs/list/insurerDialog"
+import picDialog from "@/components/dialogs/list/picDialog"
 
-  import qrcode from "@/components/business_space/lib/qrcode"
-  // import firm from "@/components/business_space/dialogs/list/firm"
-  import supplyDialog from "@/components/business_space/dialogs/list/supplyDialog"
-  // import supplierDialog from "@/components/business_space/dialogs/list/supplierDialog"
-  // import maintainerDialog from "@/components/business_space/dialogs/list/maintainerDialog"
-  // import insurerDialog from "@/components/business_space/dialogs/list/insurerDialog"
-  import guaranteeDialog from "@/components/business_space/dialogs/list/guaranteeDialog"
-  // import uploadFilesDialog from "@/components/business_space/dialogs/list/filesDialog"
-  // import uploadImgDialog from "@/components/business_space/dialogs/list/uploadImgDialog"
-  // import detailsDialog from "@/components/business_space/lib/detailsDia"
-  // import picDialog from "@/components/business_space/dialogs/list/picDialog"
-  import myPagination from "@/components/common/myPagination"
-  import myCascader from "@/components/ledger/lib/assets"
-  import floorCascader from "@/components/ledger/lib/floorCascader"
-  import dieCascader from "@/components/ledger/lib/partsDieList"
-  import {mapGetters} from "vuex"
-  //图片查看
-  import lookPic from "@/components/ledger/lib/lookImages"
-  import Handsontable from "handsontable-pro"
-  import 'handsontable-pro/dist/handsontable.full.css'
-  import batchDialog from "../../dialogs/list/batchDialog";
-  //下拉插件
-  // import "@/assets/js/chosen.jquery.min";
-  // import "@/assets/js/handsontable-chosen-editor";
+import qrcode from "@/components/business_space/lib/qrcode"
+// import firm from "@/components/business_space/dialogs/list/firm"
+import supplyDialog from "@/components/business_space/dialogs/list/supplyDialog"
+// import supplierDialog from "@/components/business_space/dialogs/list/supplierDialog"
+// import maintainerDialog from "@/components/business_space/dialogs/list/maintainerDialog"
+// import insurerDialog from "@/components/business_space/dialogs/list/insurerDialog"
+import guaranteeDialog from "@/components/business_space/dialogs/list/guaranteeDialog"
+// import uploadFilesDialog from "@/components/business_space/dialogs/list/filesDialog"
+// import uploadImgDialog from "@/components/business_space/dialogs/list/uploadImgDialog"
+// import detailsDialog from "@/components/business_space/lib/detailsDia"
+// import picDialog from "@/components/business_space/dialogs/list/picDialog"
+import myPagination from "@/components/common/myPagination"
+import myCascader from "@/components/ledger/lib/assets"
+import floorCascader from "@/components/ledger/lib/floorCascader"
+import dieCascader from "@/components/ledger/lib/partsDieList"
+import {mapGetters} from "vuex"
+//图片查看
+import lookPic from "@/components/ledger/lib/lookImages"
+import Handsontable from "handsontable-pro"
+import 'handsontable-pro/dist/handsontable.full.css'
+import batchDialog from "../../dialogs/list/batchDialog";
+//下拉插件
+// import "@/assets/js/chosen.jquery.min";
+// import "@/assets/js/handsontable-chosen-editor";
 
-  export default {
-    components: {
-      qrcode, //二维码页面
-      firm, //
-      supplyDialog,
-      supplierDialog,
-      guaranteeDialog,
-      uploadFilesDialog,
-      maintainerDialog,
-      insurerDialog,
-      uploadImgDialog,
-      picDialog,
-      myPagination,
-      // dialogAssets,
-      myCascader,
-      floorCascader,
-      dieCascader,
+export default {
+  components: {
+    qrcode, //二维码页面
+    firm, //
+    supplyDialog,
+    supplierDialog,
+    guaranteeDialog,
+    uploadFilesDialog,
+    maintainerDialog,
+    insurerDialog,
+    uploadImgDialog,
+    picDialog,
+    myPagination,
+    // dialogAssets,
+    myCascader,
+    floorCascader,
+    dieCascader,
       // detailsDialog,
       lookPic,
       batchDialog
@@ -1317,6 +1317,11 @@
       multiples(val) {
         this.firmDataType = 'dialog'
         switch (val) {
+          case 'TechParam.CompleteMachine.DesignIDGraph': //"设计工况空调机组处理过程焓湿图"
+            this.filesArr = this.forValue(this.newEnclosure, val) ? this.forValue(this.newEnclosure, val) : [];
+            this.infoType = val;
+            this.myDialog.uploadFiles = true;
+            break;
           case 'LedgerParam.InsuranceDoc.InsuranceFile': //保险文件
             this.filesArr = this.forValue(this.newEnclosure, val) ? this.forValue(this.newEnclosure, val) : [];
             this.infoType = val;

File diff suppressed because it is too large
+ 1565 - 1503
src/components/ledger/handsontables/device.vue


+ 5 - 1
src/components/ledger/lib/excelDialog.vue

@@ -6,7 +6,7 @@
     </p>
     <el-upload
       class="upload-demo"
-      v-loading=loading
+      v-loading='loading'
       drag
       action="/api/datacenter/graphic/import/point"
       :show-file-list='false'
@@ -60,6 +60,10 @@ export default {
         this.loading = false
         this.messageKey = event.Message
         this.$message.success('上传成功')
+      } else {
+        this.loading = false
+        this.messageKey =''
+        this.$message.error('目前只支持.xlsx格式,请重新上传')
       }
     },
     error(event, file, fileList) {

+ 3 - 3
src/components/ledger/lib/lookImages.vue

@@ -136,11 +136,11 @@
       this.picArrs = []
       if (this.keysArr instanceof Array) {
         this.keysArr.map(item => {
-          if (item.type == 'panorama') {
+          if (item.Type == 'panorama') {
             this.panoramaArr.push(item)
-          } else if (item.type == "video") {
+          } else if (item.Type == "video") {
             this.videoArr.push(item)
-          } else if (item.type == 'image_video') {
+          } else if (item.Type == 'image_video') {
             this.videoPicArr.push(item)
           } else {
             this.picArrs.push(item)

+ 11 - 1
src/components/ledger/lib/spaceSelect.vue

@@ -24,12 +24,15 @@ export default {
     isWidth: {
       type: Boolean,
       default: true
+    },
+    isAll:{
+        type: Boolean,
+        default: false
     }
   },
   data() {
     return {
       value:[null],
-      spaceVal: null,//值
       options: [],
       props: {
         isWidth:false
@@ -46,6 +49,13 @@ export default {
       let params1 = {Cascade: [{ Name: 'zoneType', Filters: `ProjectId='${this.projectId}'` }]}
       queryAllZoneType(params1, res => {
         this.options = res.Content;
+        if (this.isAll) {
+            this.options.unshift({
+                Code: "",
+                Name: "全部"
+            });
+            this.value = [''];
+        }
         this.changeVal(this.value);
       })
     },

+ 2 - 1
src/components/ledger/lib/uploadImgsName.vue

@@ -127,7 +127,8 @@
     delImage(i, key) {
       if (this.type == "video") {
         this.videoPicArr = this.videoPicArr.map(item => {
-          if (item.key.substring(0, item.length - 3) == this.imagesArr[i].key.substring(0, this.imagesArr[i].length - 3)) {
+          if (item.Key.substring(0, item.length - 3) == this.imagesArr[i].Key.substring(0, this.imagesArr[i].length - 3)) {
+          // if (item.key.substring(0, item.length - 3) == this.imagesArr[i].key.substring(0, this.imagesArr[i].length - 3)) {
             return undefined
           } else {
             return item

+ 2 - 0
src/components/ledger/rentList/roomCountDrawer.vue

@@ -285,6 +285,8 @@ export default {
       tnRelateOneZone(pa, res => { })
     },
     save() {
+      console.log(this.zoneList)
+			debugger
       this.$emit('refresh');
       this.drawer = false;
     }

+ 22 - 6
src/components/ledger/system/dialog/addSpaceDialog.vue

@@ -10,7 +10,7 @@
         <floor-cascader ref="floorcas" @change="changeFloor"></floor-cascader>
       </el-col>
       <el-col :span="7.5" style="padding:0 0;">
-        <space-select ref="spacesel" @change="changeSpace"></space-select>
+				<space-select ref="spacesel" :isAll="true" @change="changeSpace"></space-select>
       </el-col>
     </el-row>
     <el-row class="filters" :gutter="20"></el-row>
@@ -81,6 +81,7 @@ export default {
       inSpaceType: "业务空间",
       Buildfloor: ["all"], // 选中的建筑楼层
       Spacecategory: null, // 选中的业务空间类型
+			spaceValue: [""], //记录切换成功的业务空间值
       tableData: [],
       floorData: {}, //楼层
       spaceData: {}, //业务空间分区
@@ -114,13 +115,28 @@ export default {
     },
     //修改建筑楼层
     changeFloor(value) {
-      this.Buildfloor = value;
-      this.getTableData();
+			this.Buildfloor = value;
+			this.getTableData();
     },
     //修改空间类型
-    changeSpace(value) {
-      this.Spacecategory = value;
-      this.getTableData();
+    changeSpace(val, space, value) {
+			if (this.selections.length) {
+				this.$confirm('关联的业务空间未保存, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.Spacecategory = val;
+					this.spaceValue = value;
+      		this.getTableData();
+        }).catch(() => {
+          this.$refs.spacesel.value = this.spaceValue;  
+        });
+			} else {
+				this.Spacecategory = val;
+				this.spaceValue = value;
+      	this.getTableData();
+			}
     },
     getTableData() {
       let params = {

+ 11 - 10
src/components/model/file/addFloorDialog.vue

@@ -199,16 +199,17 @@
             UserName: this.userInfo.userName,
             UserId: this.userInfo.userId
           };
-          request.modelFileUpload(data, res => {
-            //  创建成功
-            this.$emit("finishCreateFloor", {
-              modelId: res.ModelId,
-              uploadId: res.UploadId,
-              floorId: res.floorId,
-              file: this.form.file
-            });
-            this.handleClose();
-          });
+          debugger
+        //   request.modelFileUpload(data, res => {
+        //     //  创建成功
+        //     this.$emit("finishCreateFloor", {
+        //       modelId: res.ModelId,
+        //       uploadId: res.UploadId,
+        //       floorId: res.floorId,
+        //       file: this.form.file
+        //     });
+        //     this.handleClose();
+        //   });
         }
       }
     },

+ 4 - 0
src/components/relation/overview/CardList.vue

@@ -168,6 +168,7 @@
       :TableVisibleMoreLoading="TableVisibleMoreLoading"
       @openComputed="openComputed"
       @RelationType="RelationType"
+      @Refresh="Refresh"
     />
   </div>
 
@@ -225,6 +226,9 @@
     computed: {},
 
     methods: {
+      Refresh() {
+        this.$emit('Refresh')
+      },
       explain() {
         // alert('explain click')
       },

+ 2 - 1
src/components/relation/overview/Modal/RelationMaintain.vue

@@ -519,7 +519,7 @@
       },
 
       promptly() {
-    
+
         if (this.isComputed.IsAutomatic && !this.isComputed.IsSource) { //需要自动计算并且不需要配置云末端
           this.$emit('RelationType', this.isComputed.RelationType, this.isComputed.ZoneType)
         }
@@ -593,6 +593,7 @@
         }
         calcSpecial(params, res => {
           this.$message.success('计算成功')
+          this.$emit('Refresh')
         })
 
       },

+ 68 - 50
src/framework/layout/Main.vue

@@ -1,52 +1,56 @@
 <template>
     <div id='page-main' v-bind:class='{"page-sidebar-closed": sidebarClosed}'>
-        <page-header></page-header>
+      <page-header></page-header>
 
-        <div id='page-container' class='page-container'>            
-            <page-sidebar></page-sidebar>            
-            <div id='page-content-wrapper' class='page-content-wrapper'>
-                <div class='page-bar'>
-                    <el-breadcrumb separator='/'>
-                    <el-breadcrumb-item v-show="!breadcrumb.length"  :to='{ path: "/" }'>首页</el-breadcrumb-item>
-                    <el-breadcrumb-item v-show="breadcrumb.length" v-for='(b, index) in breadcrumb' :key='index' :to='b.path ? { path: b.path } : null'>{{b.label}}</el-breadcrumb-item>                       
-                    </el-breadcrumb>
-                </div>
-                <!-- <router-view class='page-content'/> -->
-                <keep-alive>
-                    <router-view v-if='$route.meta.keepAlive' class='page-content'></router-view>
-                </keep-alive>
-                <router-view v-if='!$route.meta.keepAlive' class='page-content'></router-view>
-            </div>
+      <div id='page-container' class='page-container'>
+        <page-sidebar></page-sidebar>
+        <div id='page-content-wrapper' class='page-content-wrapper'>
+          <div class='page-bar'>
+            <el-breadcrumb separator='/'>
+              <el-breadcrumb-item v-show="!breadcrumb.length" :to='{ path: "/" }'>首页</el-breadcrumb-item>
+              <el-breadcrumb-item v-show="breadcrumb.length" v-for='(b, index) in breadcrumb' :key='index'
+                                  :to='b.path ? { path: b.path } : null'>{{ b.label }}
+              </el-breadcrumb-item>
+            </el-breadcrumb>
+          </div>
+          <!-- <router-view class='page-content'/> -->
+          <keep-alive>
+            <router-view v-if='$route.meta.keepAlive' class='page-content'></router-view>
+          </keep-alive>
+          <router-view v-if='!$route.meta.keepAlive' class='page-content'></router-view>
+          <div class="version">当前版本: V 4.0.1</div>
         </div>
-        <!-- <div class='page-footer'>
-            © 2016 SAGACLOUD. All rights reserved 京ICP备16059843号-1
-        </div>-->
+      </div>
+      <!--     <div class='page-footer'>-->
+      <!--            © 2016 SAGACLOUD. All rights reserved 京ICP备16059843号-1-->
+      <!--        </div>-->
     </div>
 </template>
 <script>
-import { mapGetters, mapMutations } from 'vuex'
+import {mapGetters, mapMutations} from 'vuex'
 import PageHeader from './PageHeader'
 import PageSidebar from './PageSidebar'
-import menus from '@/data/menus' 
+import menus from '@/data/menus'
+
 export default {
-    name: 'Main',
-    components: {
-        'page-header': PageHeader,
-        'page-sidebar': PageSidebar
-    },
-    props: [],
-    data() {
-        return {
-            isPath:  false
-        }
-    },
-    computed: {
-        ...mapGetters('layout', ['sidebarClosed', 'breadcrumb'])
-    },
-    methods: {
-        ...mapMutations('layout', ['setSidebarClosed','setSidebarSelected']),
-        windwoResize() {
-            // 窗口大小发生变化时
+  name: 'Main',
+  components: {
+    'page-header': PageHeader,
+    'page-sidebar': PageSidebar
+  },
+  props: [],
+  data() {
+    return {
+      isPath: false
+    }
+  },
+  computed: {
+    ...mapGetters('layout', ['sidebarClosed', 'breadcrumb'])
+  },
+  methods: {
+    ...mapMutations('layout', ['setSidebarClosed', 'setSidebarSelected']),
+    windwoResize() {
+      // 窗口大小发生变化时
             let clientWidth = `${document.documentElement.clientWidth}`
             let clientHeight = `${document.documentElement.clientHeight}`
             //this.setPageContentHeight(height)
@@ -71,17 +75,31 @@ export default {
     },
     watch: {
         "$route": {
-            handler: function(route, oldVal){
-                let path = route.path
-                this.isPath = false;
-                this.findPathInArray(menus,path)
-                if(this.isPath) {
-                    this.setSidebarSelected(path)
-                }
-            },
-            // 深度观察监听
-            deep: true
+          handler: function (route, oldVal) {
+            let path = route.path
+            this.isPath = false;
+            this.findPathInArray(menus, path)
+            if (this.isPath) {
+              this.setSidebarSelected(path)
+            }
+          },
+          // 深度观察监听
+          deep: true
         }
     },
 }
-</script>
+</script>
+<style lang="less">
+#page-main {
+
+  .version {
+    order: 2;
+    flex-grow: 0;
+    flex-shrink: 0;
+    height: 15px;
+    line-height: 1.3;
+    text-align: center;
+    color: #6d6d6d;
+  }
+}
+</style>

+ 11 - 11
src/framework/layout/PageHeader.vue

@@ -19,19 +19,19 @@
     </div>
     <div id='page-header-user-menu' class='user-menu'>
          <span class='el-dropdown-link' style="margin-top: 11px;">
-              yanruolan
+              {{userInfo.userName}}
               <i class='el-icon-fa-user el-icon--right'></i>
           </span>
-      <!--      <el-dropdown trigger='hover' class='user-menu-dropdown' @command='userMenuCommand'>-->
-      <!--                <span class='el-dropdown-link'>-->
-      <!--                    {{ userInfo.userName }}-->
-      <!--                    <i class='el-icon-fa-user el-icon&#45;&#45;right'></i>-->
-      <!--                </span>-->
-      <!--        <el-dropdown-menu slot='dropdown'>-->
-      <!--          <el-dropdown-item icon='el-icon-plus' command='logout'>退出</el-dropdown-item>-->
-      <!--          <el-dropdown-item icon='el-icon-circle-plus'>修改密码</el-dropdown-item>-->
-      <!--        </el-dropdown-menu>-->
-      <!--      </el-dropdown>-->
+<!--      <el-dropdown trigger='hover' class='user-menu-dropdown' @command='userMenuCommand'>-->
+<!--                      <span class='el-dropdown-link'>-->
+<!--                          {{ userInfo.userName }}-->
+<!--                          <i class='el-icon-fa-user el-icon&#45;&#45;right'></i>-->
+<!--                      </span>-->
+<!--        <el-dropdown-menu slot='dropdown'>-->
+<!--          <el-dropdown-item icon='el-icon-plus' command='logout'>退出</el-dropdown-item>-->
+<!--          <el-dropdown-item icon='el-icon-circle-plus'>修改密码</el-dropdown-item>-->
+<!--        </el-dropdown-menu>-->
+<!--      </el-dropdown>-->
       <ul class="header-nav">
         <li class="header-nav-Splitscreen">
           <a href="/splitScreen" target="_blank"><i class="el-icon-s-platform"></i></a>

+ 2 - 1
src/framework/layout/layout-store.js

@@ -1,3 +1,4 @@
+
 import frameworkApi from '@/api/framework'
 import storage from '@/framework/utils/storage'
 import lStorage from '@/utils/localStorage'
@@ -13,7 +14,7 @@ export default {
     sidebarSelected: '', // sidebar选中的选项
     // userInfo: null, //{ username: 'admin' },
     userInfo: {
-      username: 'yanruolan',
+      userName: 'yanruolan',
       userId: '06328a53c69a41bb8f5bb1a552c6e8d6'
     },
     permissions: {

+ 11 - 0
src/views/ledger/cenotelist/cenoteadd/index.vue

@@ -48,6 +48,7 @@ export default {
       relationids: "",
       onlyRead: false,
       showTypes: [{ value: "Visible", label: '只看采集信息' }, { value: "all", label: '全部' }],
+      inputMap: {}, //信息点和输入方式映射表
       showType: this.$route.query.showType,
       tableHeader: [],
       tableData: session.get("cenoteAddData")? session.get("cenoteAddData").length? session.get("cenoteAddData"): [{}]: [{}],
@@ -76,6 +77,11 @@ export default {
       }
       await getDataDictionary(param, res => {
         this.tableHeader = res.Content
+        this.tableHeader.forEach(item => {
+          if (item.Path) {
+            this.inputMap[item.Path] = item
+          }
+        })
         this.initTable()
       })
     },
@@ -197,8 +203,13 @@ export default {
     getInfors(infos, row) {
       //其他的开始判断
       let val = this.tableExample.colToProp(row.col);
+      let inputData = this.inputMap[val]
       this.row = row.row //要操作的列号
       this.messKey = val //要操作的列类型
+      if (!inputData.Editable) {
+        this.$message("该信息点的值为自动生成,不可人工维护!");
+        return false;
+      }
       //点击关联的元空间
       // if (val === "SpaceCount") {
       //   this.isTableRightShow = true;

+ 49 - 7
src/views/ledger/cenotelist/index.vue

@@ -52,7 +52,7 @@ import showTools from "@/utils/handsontable/notShow"
 import text from "@/utils/handsontable/mainText"
 import cenoteType from "@/components/ledger/lib/cenoteType";
 import handsonTable from "@/components/common/handsontable";
-import { getDataDictionary, queryCenoteTableData, updataCenoteTableData, deleteCenoteTableData, saveCenoteRelateSpace, BeatchQueryParam } from "@/api/scan/request"
+import { getDataDictionary, queryCenoteTableData, updataCenoteTableData, deleteCenoteTableData, saveCenoteRelateSpace, BeatchQueryParam, buildingQuery } from "@/api/scan/request"
 import { mapGetters, mapActions } from "vuex";
 export default {
   components: {
@@ -83,17 +83,18 @@ export default {
       },
       tableData: [],
       copyTableData: [],
+      buildData: [], //建筑数据
       tableExample: null,
       myDialog: {
         update: false,//临时维护信息点
       },
       inputMap: {
-        flowBuild: {
-          InputMode: 'D1',
+        buildList: {
+          InputMode: 'D2',
           Editable:true,
-          InfoPointCode:"flowBuild",
-          InfoPointName:"建筑楼层",
-          Path:"flowBuild"
+          InfoPointCode:"buildList",
+          InfoPointName:"所属建筑",
+          Path:"buildList"
         }
       }, //信息点和输入方式映射表
       updateInputShow: false, //是否显示临时维护输入框
@@ -114,9 +115,13 @@ export default {
     }
   },
   created() {
-    this.getTableHeader()
+    this.getBuildData();
+    this.getTableHeader();
   },
   watch: {
+    projectId() {
+        this.getBuildData();
+    },
     showTypes: {
       handler(newName, oldName) {
         if (newName && newName[0] && newName[0].value) {
@@ -171,6 +176,27 @@ export default {
         }
       })
     },
+    async getBuildData() { //获取建筑数据
+        this.buildData = [];
+        const params = {
+            PageNumber: 1,
+            PageSize: 500,
+            Projection: [
+                "BuildID",
+                "BuildLocalName"
+            ]
+        }
+        buildingQuery(params, res => {
+            if (res.Result === "success") {
+                this.buildData = res.Content.map(item => {
+                    return {
+                        Code: item.BuildID,
+                        Name: item.BuildLocalName,
+                    }
+                })
+            }
+        })
+    },
     // 修改表格内容
     async updateTableData(data, change) {
       let param = {
@@ -298,6 +324,9 @@ export default {
       let arr = tools.copyArr(list)
       let data = showTools.headerTextFilter(arr, "shaft", this.onlyRead, this.showType)
       data.unshift("关联的业务空间", "其他关系");
+      if (this.showType == 'all') {
+          data.splice(4, 0, '所属建筑');
+      }
       return data;
     },
     formatHeaderType(list) {//格式化表头头映射的数据
@@ -307,6 +336,7 @@ export default {
         data: "SpaceList",
         renderer: (instance, td, row, col, prop, value, cellProperties) => {
           td.style.color = "#409EFF";
+          td.style.cursor = "pointer";
           td.innerHTML = `<span>${value?value.length:0}</span>`
           return td;
         },
@@ -321,6 +351,18 @@ export default {
         },
         readOnly: true
       })
+      if (this.showType == 'all') {
+        data.splice(4, 0, {
+            data: 'buildList',
+            renderer: tools.customDropdownRenderer,
+            editor: 'chosen',
+            chosenOptions: {
+                multiple: true,
+                data: this.buildData,
+            },
+            readOnly: this.onlyRead,
+        })
+      }
       return data;
     },
     initTable() {//实例化表格

+ 1 - 1
src/views/ledger/cenotelist/relatedSpace.vue

@@ -274,7 +274,7 @@ export default {
     },
     //更改业务空间类型
     changeSpace(val) {
-      this.ObjectType = val[0];
+      this.ObjectType = val[val.length - 1];
       this.floor = '';
       this.buildingList = [];
       this.building = '';

+ 100 - 35
src/views/ledger/facility/addfacility.vue

@@ -120,6 +120,15 @@ export default {
         changeRea: false,
         lookPic: false //图片查看
       },
+      inputMap: {
+        flowBuild: {
+          InputMode: 'D1',
+          Editable: true,
+          InfoPointCode: 'flowBuild',
+          InfoPointName: '建筑楼层',
+          Path: 'flowBuild',
+        },
+      }, //信息点和输入方式映射表
       qrcodeUrl: "", //二维码图片地址
       filesArr: [], //保存临时的文件key
       imgsArr: [], //临时保存的图片key数组
@@ -213,6 +222,11 @@ export default {
       };
       await getDataDictionary(params, res => {
         this.tableHeader = res.Content;
+        this.tableHeader.forEach((item) => {
+            if (item.Path) {
+                this.inputMap[item.Path] = item
+            }
+        })
         this.initTable();
       });
     },
@@ -535,6 +549,7 @@ export default {
     },
     getInfors(infos, row) {
       let val = this.tableExample.colToProp(row.col);
+      let inputData = this.inputMap[val]
       switch (val) {
         //操作
         case 'caozuo':
@@ -566,59 +581,105 @@ export default {
         //品牌型号弹窗
         case 'DPManufacturerID':
           if (!this.onlyRead) {
-            this.myDialog.firm = true;
+              const linkId = this.tableData[row.row].LinkId;
+              if (linkId) { //关联资产
+                this.myDialog.firm = true;
+              } else { //未关联资产
+                this.$message('请先关联资产后再维护该信息!');
+              }
           }
           break;
         //供应商信息弹窗
         case 'DPSupplierID':
           if (!this.onlyRead) {
-            this.myDialog.supplier = true;
+              const linkId = this.tableData[row.row].LinkId;
+              if (linkId) { //关联资产
+                this.myDialog.supplier = true;
+              } else { //未关联资产
+                this.$message('请先关联资产后再维护该信息!');
+              }
           }
           break;
         //维修商信息弹窗
         case 'DPMaintainerID':
           if (!this.onlyRead) {
-            this.myDialog.maintainer = true;
+              const linkId = this.tableData[row.row].LinkId;
+              if (linkId) { //关联资产
+                this.myDialog.maintainer = true;
+              } else { //未关联资产
+                this.$message('请先关联资产后再维护该信息!');
+              }
           }
           break;
         //保险公司信息
         case 'DPInsurerID':
           if (!this.onlyRead) {
-            this.myDialog.insurer = true;
-          }
-          break;
-        //供应合同编号
-        case 'LedgerParam.SupplyPurchase.SupplierContractID':
-          if (!this.onlyRead) {
-            let ContractIDflag = null;
-            let DPSdata = this.tableData[row.row].DPSupplierID;
-            if (DPSdata) {
-              ContractIDflag = DPSdata.split("-")[0];
-            }
-            if (!!ContractIDflag) {
-              this.id = ContractIDflag;
-              this.myDialog.supply = true;
-            } else {
-              this.$message("请先选择供应商");
-            }
+              const linkId = this.tableData[row.row].LinkId;
+              if (linkId) { //关联资产
+                this.myDialog.insurer = true;
+              } else { //未关联资产
+                this.$message('请先关联资产后再维护该信息!');
+              }
           }
           break;
-        //保险单号
-        case 'LedgerParam.InsuranceDoc.InsuranceNum':
-          if (!this.onlyRead) {
-            let DPInsurerIDflag = null;
-            let DPIdata = this.tableData[row.row].DPInsurerID;
-            if (DPIdata) {
-              DPInsurerIDflag = DPIdata.split("-")[0];
-            }
-            if (!!DPInsurerIDflag) {
-              this.id = DPInsurerIDflag;
-              this.myDialog.guarantee = true;
-            } else {
-              this.$message("请先选择保险商");
+        /**
+         * 供应合同编号
+         * TODO:厂商库服务无人维护,故注释供应合同编号选择改为直接输入
+         */
+        // case 'LedgerParam.SupplyPurchase.SupplierContractID':
+        //   if (!this.onlyRead) {
+        //     let ContractIDflag = null;
+        //     let DPSdata = this.tableData[row.row].DPSupplierID;
+        //     if (DPSdata) {
+        //       ContractIDflag = DPSdata.split("-")[0];
+        //     }
+        //     if (!!ContractIDflag) {
+        //       this.id = ContractIDflag;
+        //       this.myDialog.supply = true;
+        //     } else {
+        //       this.$message("请先选择供应商");
+        //     }
+        //   }
+        //   break;
+        /** 
+         * 保险单号
+         * TODO:厂商库服务无人维护,故注释保险单号选择改为直接输入
+         */
+        // case 'LedgerParam.InsuranceDoc.InsuranceNum':
+        //   if (!this.onlyRead) {
+        //     let DPInsurerIDflag = null;
+        //     let DPIdata = this.tableData[row.row].DPInsurerID;
+        //     if (DPIdata) {
+        //       DPInsurerIDflag = DPIdata.split("-")[0];
+        //     }
+        //     if (!!DPInsurerIDflag) {
+        //       this.id = DPInsurerIDflag;
+        //       this.myDialog.guarantee = true;
+        //     } else {
+        //       this.$message("请先选择保险商");
+        //     }
+        //   }
+        //   break;
+        case 'flowBuild': //所属建筑楼层
+        case 'LedgerParam.EquipManufactor.ProductDate': //生产日期
+        case 'LedgerParam.EquipManufactor.SerialNum': //出厂编号
+        case 'LedgerParam.SupplyPurchase.AssetID': //资产编号
+        case 'LedgerParam.SupplyPurchase.PurchasePrice': //采购价格
+        case 'LedgerParam.InsuranceDoc.InsuranceNum': //保险单号
+        case 'LedgerParam.InsuranceDoc.InsuranceFile': //保险文件
+            if (!this.onlyRead) {
+                const linkId = this.tableData[row.row].LinkId;
+                if (!linkId) { //未关联资产
+                    this.$confirm('请先关联资产后再维护该信息!', '提示', {
+                        confirmButtonText: '确定',
+                        showCancelButton: false,
+                        type: 'warning'
+                    }).then(() => {
+                        return false;
+                    });
+                }
             }
-          }
-          break;
+            break
         //保险文件--设备文档--安装质检报告
         case 'LedgerParam.InsuranceDoc.InsuranceFile': //保险文件
         case 'LedgerParam.PhotoDoc.Archive': //设备文档
@@ -662,6 +723,10 @@ export default {
         default:
           break;
       }
+      if (!inputData.Editable) {
+        this.$message('该信息点的值为自动生成,不可人工维护!')
+        return false
+      }
       this.row = row.row;
       this.messKey = val;
     },

+ 43 - 33
src/views/ledger/facility/batchPoint.vue

@@ -4,7 +4,7 @@
 			<el-button style="float:left;" size="small" type="default" icon="el-icon-back" @click="goback"></el-button>
 			<div id="buildFloor">
                 <span class="buildFloor">建筑楼层</span>
-                <el-cascader ref="floorCascader" placeholder="请选择" :props="props" :options="bfOptions" filterable size="small" @change="changeFloor"></el-cascader>
+                <el-cascader ref="floorCascader" placeholder="请选择" :props="props" v-model="floorValue" :options="bfOptions" filterable size="small" @change="changeFloor"></el-cascader>
             </div>
 			<my-cascader ref="cascader" @change="changeDevice"></my-cascader>
 			<el-button type="primary" size="mini" @click="handleClickSave" :disabled="!isChange" style="float:right;">确认</el-button>
@@ -110,6 +110,8 @@ export default {
             left: 0,
         },
         selectedIcon: null,
+        floorValue: "",
+        oldFloorValue: "",
 		buildId: "", //建筑Id
 		floorId: "", //楼层Id
 		floorMap: "", //楼层平面图地址
@@ -193,7 +195,7 @@ export default {
     goback() {
         this.confirm(() => {
             this.$router.push({ name: "facilityLedger" });
-        })
+        },() => {return false})
     },
     getCascader() {
       let param = {
@@ -220,7 +222,7 @@ export default {
       })
     },
     // 二次确认
-    confirm(callback) {
+    confirm(callback, cancel) {
         if (this.isChange) {
             this.$confirm('平面图数据未保存,此操作将不会保存修改数据!', '提示', {
                 confirmButtonText: '确定',
@@ -228,6 +230,8 @@ export default {
                 type: 'warning'
             }).then(() => {
                 callback();
+            }).catch(() => {
+                cancel();
             });
         } else {
             callback();
@@ -412,36 +416,42 @@ export default {
 	},
     //修改楼层
     changeFloor(value) {
-		this.showCanvas = false;
-		this.clearGraphy();
-		if (value[0]) {
-			this.buildId = value[0];
-        }
-		if (value[1]) {
-			this.floorId = value[1];
-            this.floorData = this.fIdToFloor[value[1]];
-		} else {
-            this.floorId = "";
-            this.floorData = {}
-		}
-		if (this.floorData.StructureInfo && this.floorData.StructureInfo.FloorMap) {
-			this.floorMap = this.floorData.StructureInfo.FloorMap;
-			this.showCanvas = true;
-			this.getGraphy();
-		} else {
-			this.initParams();
-			this.floorMap = "";
-        }
-        if (this.floorData.StructureInfo && this.floorData.StructureInfo.Height) {
-            this.maxHeight = this.floorData.StructureInfo.Height;
-        } else {
-            this.maxHeight = 99000;
-        }
-		if (this.floorData.Outline && this.floorData.Outline.length) {
-			this.floorOutline = this.floorData.Outline;
-		} else {
-			this.floorOutline = null;
-		}
+        this.confirm(() => {
+            this.oldFloorValue = value;
+            this.isChange = false;
+            this.showCanvas = false;
+            this.clearGraphy();
+            if (value[0]) {
+                this.buildId = value[0];
+            }
+            if (value[1]) {
+                this.floorId = value[1];
+                this.floorData = this.fIdToFloor[value[1]];
+            } else {
+                this.floorId = "";
+                this.floorData = {}
+            }
+            if (this.floorData.StructureInfo && this.floorData.StructureInfo.FloorMap) {
+                this.floorMap = this.floorData.StructureInfo.FloorMap;
+                this.showCanvas = true;
+                this.getGraphy();
+            } else {
+                this.initParams();
+                this.floorMap = "";
+            }
+            if (this.floorData.StructureInfo && this.floorData.StructureInfo.Height) {
+                this.maxHeight = this.floorData.StructureInfo.Height;
+            } else {
+                this.maxHeight = 99000;
+            }
+            if (this.floorData.Outline && this.floorData.Outline.length) {
+                this.floorOutline = this.floorData.Outline;
+            } else {
+                this.floorOutline = null;
+            }
+        }, () => {
+            this.floorValue = this.oldFloorValue;
+        })
 	},
     //修改设备族
     changeDevice(value) {

+ 5 - 31
src/views/ledger/facility/details/index.vue

@@ -229,6 +229,9 @@ export default {
 
             }
           }
+					if (this.instance.hasOwnProperty(item.Path)) {
+						item.value = this.instance[item.Path]
+					}
         })
         let params = { //获取动态参数
           secret: this.secret,
@@ -263,15 +266,8 @@ export default {
     },
     handleEnclosure() {
       //图片文件处理,脱离radio控制
-      let isList = this.pointData
       let isArr = []
-      isList.map(j => {
-        if (this.instance.hasOwnProperty(j.Path)) {
-          j.value = this.instance[j.Path]
-          return j
-        }
-      })
-      isArr = isList.filter(k => k.value)
+      isArr = this.pointData.filter(k => k.value)
       this.handlePicList(isArr)
       this.handleFileList(isArr)
     },
@@ -287,34 +283,12 @@ export default {
           }
         }
       })
-
       if (val == 1) { //需采集信息
         arr = this.pointData.filter(i => i.Visible)
-        // //  图片和的处理
-        // this.handlePicList(arr)
-        // //  文件处理
-        // this.handleFileList(arr)
-
       } else if (val == 2) { //有值信息点
-        let list = this.pointData
-        list.map(j => {
-          if (this.instance.hasOwnProperty(j.Path)) {
-            return {
-              ...j,
-              value: this.instance[j.Path]
-            }
-
-
-          }
-        })
-        arr = list.filter(k => k.value)
-        // this.handlePicList(arr, 2)
-        // this.handleFileList(arr, 2)
-
+        arr = this.pointData.filter(k => k.value)
       } else { //全部信息点
         arr = this.pointData
-        // this.handlePicList(arr)
-        // this.handleFileList(arr)
       }
       this.displayData(arr)
     },

+ 110 - 62
src/views/ledger/facility/partsmanage/addparts/index.vue

@@ -33,11 +33,8 @@
     <qrcode :dialog="myDialog" :qrcodeUrl="qrcodeUrl" :addBody="true" ref="qrcode"></qrcode>
     <!-- 型号弹窗 -->
     <firm :mess="{deviceId: firmId}" ref="firm" @changeFirm="firmChange" :dialog="myDialog"></firm>
-    <!-- 供应商合同弹窗 -->
-    <supply-dialog ref="supply" @change="supplyChange" :id="id" :dialog="myDialog"></supply-dialog>
     <!-- 供应商弹窗 -->
     <supplier-dialog ref="supplier" @changeSupplier="supplierChange" :dialog="myDialog"></supplier-dialog>
-    <guarantee-dialog :id="id" ref="guarantee" @change="guaranteeChange" :dialog="myDialog"></guarantee-dialog>
     <upload-files-dialog :read="onlyRead ? true : false" ref="upload" @changeFile="fileChange" :keysArr="filesArr" :dialog="myDialog">
     </upload-files-dialog>
     <upload-img-dialog :read="onlyRead ? true : false" @changeFile="imgChange" :keysArr="imgsArr" :dialog="myDialog"></upload-img-dialog>
@@ -45,6 +42,22 @@
     <insurer-dialog @changeInsurer="changeInsurer" ref="insurer" :dialog="myDialog"></insurer-dialog>
     <pic-dialog :read="onlyRead ? true : false" :dialog="myDialog" :keysArr="picsArr" @change="changePics"></pic-dialog>
     <details-dialog :iframeSrc="iframeSrc" v-if="myDialog.details" :dialog="myDialog"></details-dialog>
+    <!-- 不支持的输入方式 -->
+    <el-dialog title="临时维护信息点" :visible.sync="myDialog.update" @close="handleCloseUpdate" width="670px">
+      <el-row>
+        该信息点未定义对应组件,现在维护数据不确定后续是否可用。如确实需要维护,请点击
+        <el-link @click="updateInputShow = true" type="primary" :underline="false">继续维护</el-link>
+        。
+      </el-row>
+      <el-row style="margin-top:20px;" v-show="updateInputShow">
+        <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 8}" placeholder="请输入内容"
+                  v-model="updateInput"></el-input>
+      </el-row>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="myDialog.update = false">取 消</el-button>
+        <el-button type="primary" @click="handleClickUpdate">确 认</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -65,11 +78,9 @@ import { mapGetters, mapActions } from "vuex";
 
 import qrcode from "@/components/ledger/lib/qrcode";
 import firm from "@/components/dialogs/list/firm";
-import supplyDialog from "@/components/dialogs/list/supplyDialog";
 import supplierDialog from "@/components/dialogs/list/supplierDialog";
 import maintainerDialog from "@/components/dialogs/list/maintainerDialog";
 import insurerDialog from "@/components/dialogs/list/insurerDialog";
-import guaranteeDialog from "@/components/dialogs/list/guaranteeDialog";
 import uploadFilesDialog from "@/components/dialogs/list/filesDialog";
 import uploadImgDialog from "@/components/dialogs/list/uploadImgDialog";
 import picDialog from "@/components/dialogs/list/picDialog";
@@ -77,11 +88,9 @@ export default {
   components: {
     qrcode, //二维码页面
     firm, //品牌型号弹窗
-    supplyDialog,
     supplierDialog,
     maintainerDialog,
     insurerDialog,
-    guaranteeDialog,
     uploadFilesDialog,
     uploadImgDialog,
     picDialog,
@@ -108,9 +117,7 @@ export default {
       myDialog: {
         qrcode: false, //二维码弹窗
         firm: false, //厂商弹窗
-        supply: false, //选择供应合同
         supplier: false, //供应商选择
-        guarantee: false, //选择保单
         maintainer: false, //选择维修商
         insurer: false, //选择保险公司
         uploadFiles: false, //上传文件
@@ -120,8 +127,21 @@ export default {
         systemType: false,
         details: false, //详情页
         changeRea: false,
-        lookPic: false //图片查看
+        lookPic: false, //图片查看
+        update: false,//临时维护信息点
       },
+      updateInputShow: false, //是否显示临时维护输入框
+      updateInfoPoint: '',//临时维护信息点
+      updateInput: '', //临时维护信息点值
+      inputMap: {
+        flowBuild: {
+          InputMode: 'D1',
+          Editable:true,
+          InfoPointCode:"flowBuild",
+          InfoPointName:"建筑楼层",
+          Path:"flowBuild"
+        }
+      }, //信息点和输入方式映射表
       qrcodeUrl: "", //二维码图片地址
       filesArr: [], //保存临时的文件key
       imgsArr: [], //临时保存的图片key数组
@@ -169,6 +189,11 @@ export default {
       };
       await getDataDictionary(params, res => {
         this.tableHeader = res.Content;
+        this.tableHeader.forEach(item => {
+          if (item.Path) {
+            this.inputMap[item.Path] = item;
+          }
+        })
         this.initTable();
       });
     },
@@ -388,21 +413,6 @@ export default {
       tools.setDataForKey(this.tableData[this.row], 'LedgerParam.OperationMainte.MaintainerEmail', data.contacts[0]?data.contacts[0].email:null)
       tools.setDataForKey(this.tableData[this.row], 'LedgerParam.OperationMainte.MaintainerFax', data.contacts[0]?data.contacts[0].fax:null)
     },
-    supplyChange(data) {
-      tools.setDataForKey(this.tableData[this.row], "LedgerParam.SupplyPurchase.SupplierContractID", { id: data });
-    },
-    //保险合同
-    guaranteeChange(data) {
-      for (let key in data) {
-        this.utilToKey(key, "insuranceNo", data, "InsuranceNum");
-        if (key == "contractFile") {
-          if (!!data[key]) {
-            data[key] = [data[key]];
-          }
-        }
-        this.utilToKey(key, "contractFile", data, "InsuranceFile");
-      }
-    },
     //上传文件弹窗触发事件
     fileChange(keys) {
       this.setDataToMain(keys, this.messKey, this.row);
@@ -462,60 +472,75 @@ export default {
     getInfors(infos, row) {
       //其他的开始判断
       let val = this.tableExample.colToProp(row.col);
+      let inputData = this.inputMap[val];
+      this.row = row.row;
+      this.messKey = val;
       //设备二维码图片
       if (val == "EquipQRCode") {
         this.myDialog.qrcode = true;
         this.$refs.qrcode.getCanvas(1111);
       }
-      //关联系统
-      if (val == "linkSystem") {
-        // this.systemList = this.tableData[row.row].linkSystem || [];
-        this.myDialog.systemType = true;
-      }
+
       //品牌型号弹窗
       if (val == "DPManufacturerID") {
-        this.myDialog.firm = true;
+        const PropertyId = this.tableData[row.row].PropertyId;
+        if (PropertyId) { //关联资产
+            this.myDialog.firm = true;
+        } else { //未关联资产
+            this.$message('请先关联资产后再维护该信息!');
+        }
+        return false;
       }
       //供应商信息弹窗
       if (val == "DPSupplierID") {
-        this.myDialog.supplier = true;
+          const PropertyId = this.tableData[row.row].PropertyId;
+        if (PropertyId) { //关联资产
+            this.myDialog.supplier = true;
+        } else { //未关联资产
+            this.$message('请先关联资产后再维护该信息!');
+        }
+        return false;
       }
       //维修商信息弹窗
       if (val == "DPMaintainerID") {
-        this.myDialog.maintainer = true;
+          const PropertyId = this.tableData[row.row].PropertyId;
+        if (PropertyId) { //关联资产
+            this.myDialog.maintainer = true;
+        } else { //未关联资产
+            this.$message('请先关联资产后再维护该信息!');
+        }
+        return false;
       }
       //保险公司信息
       if (val == "DPInsurerID") {
-        this.myDialog.insurer = true;
-      }
-      //供应合同编号
-      if (val == "LedgerParam.SupplyPurchase.SupplierContractID") {
-        let falg = null;
-        let data = this.tableData[row.row].DPSupplierID;
-        if (data) {
-          falg = data.split("-")[0];
-        }
-        if (!!falg) {
-          this.id = falg;
-          this.myDialog.supply = true;
-        } else {
-          this.$message("请先选择供应商");
+          const PropertyId = this.tableData[row.row].PropertyId;
+        if (PropertyId) { //关联资产
+            this.myDialog.insurer = true;
+        } else { //未关联资产
+            this.$message('请先关联资产后再维护该信息!');
         }
+        return false;
       }
-      //保险单号
-      if (val == "LedgerParam.InsuranceDoc.InsuranceNum") {
-        //选择保单
-        let falg = null;
-        let data = this.tableData[row.row].DPInsurerID
-        if (data) {
-          falg = data.split("-")[0];
-        }
-        if (!!falg) {
-          this.id = falg;
-          this.myDialog.guarantee = true;
-        } else {
-          this.$message("请先选择保险商");
+      if (
+        val == "flowBuild" || //所属建筑楼层
+        val == "LedgerParam.EquipManufactor.ProductDate" || //生产日期
+        val == "LedgerParam.EquipManufactor.SerialNum" || //出厂编号
+        val == "LedgerParam.SupplyPurchase.AssetID" || //资产编号
+        val == "LedgerParam.SupplyPurchase.PurchasePrice" || //采购价格
+        val == "LedgerParam.InsuranceDoc.InsuranceNum" || //保险单号
+        val == "LedgerParam.InsuranceDoc.InsuranceFile" //保险文件
+      ) {
+        const PropertyId = this.tableData[row.row].PropertyId;
+        if (!PropertyId) { //未关联资产
+            this.$confirm('请先关联资产再维护该信息!', '提示', {
+                confirmButtonText: '确定',
+                showCancelButton: false,
+                type: 'warning'
+            }).then(() => {
+                return false;
+            });
         }
+        return false
       }
       //保险文件--设备文档--安装质检报告
       if (
@@ -553,8 +578,31 @@ export default {
         this.picsArr = data ? data : []
         this.myDialog.pic = true;
       }
-      this.row = row.row;
-      this.messKey = val;
+      if (!this.onlyRead && !inputData.Editable) {
+        this.$message("该信息点的值为自动生成,不可人工维护!");
+        return false;
+      }
+      if (!this.onlyRead && showTools.InputModeArr.indexOf(inputData.InputMode) == '-1') {
+        this.updateInfoPoint = val;
+        this.updateInput = tools.dataForKey(this.tableData[row.row], val);
+        this.myDialog.update = true;
+        return false;
+      }
+    },
+    //关闭临时维护弹窗回调
+    handleCloseUpdate() {
+      this.updateInputShow = false
+      this.updateInfoPoint = ''
+      this.updateInput = ''
+    },
+    //更新临时维护信息点
+    handleClickUpdate() {
+      // this.$message("更新成功");
+      tools.setDataForKey(this.tableData[this.row], this.updateInfoPoint, this.updateInput)
+      this.handleUpdataTable([[this.row, this.updateInfoPoint, null, this.updateInput]], "edit")
+      this.updateInputShow = false
+      this.myDialog.update = false
+      this.updateInput = ''
     },
     utilToKey(key, name, data, messName) {
       if (key == name) {

+ 43 - 59
src/views/ledger/facility/partsmanage/index.vue

@@ -43,11 +43,8 @@
     <qrcode :dialog="myDialog" :qrcodeUrl="qrcodeUrl" :addBody="true" ref="qrcode"></qrcode>
     <!-- 型号弹窗 -->
     <firm :mess="{deviceId: firmId}" ref="firm" @changeFirm="firmChange" :dialog="myDialog"></firm>
-    <!-- 供应商合同弹窗 -->
-    <supply-dialog ref="supply" @change="supplyChange" :id="id" :dialog="myDialog"></supply-dialog>
     <!-- 供应商弹窗 -->
     <supplier-dialog ref="supplier" @changeSupplier="supplierChange" :dialog="myDialog"></supplier-dialog>
-    <guarantee-dialog :id="id" ref="guarantee" @change="guaranteeChange" :dialog="myDialog"></guarantee-dialog>
     <upload-files-dialog :read="onlyRead ? true : false" ref="upload" @changeFile="fileChange" :keysArr="filesArr" :dialog="myDialog">
     </upload-files-dialog>
     <upload-img-dialog :read="onlyRead ? true : false" @changeFile="imgChange" :keysArr="imgsArr" :dialog="myDialog"></upload-img-dialog>
@@ -94,11 +91,9 @@ import { mapGetters, mapActions } from "vuex";
 
 import qrcode from "@/components/ledger/lib/qrcode";
 import firm from "@/components/dialogs/list/firm";
-import supplyDialog from "@/components/dialogs/list/supplyDialog";
 import supplierDialog from "@/components/dialogs/list/supplierDialog";
 import maintainerDialog from "@/components/dialogs/list/maintainerDialog";
 import insurerDialog from "@/components/dialogs/list/insurerDialog";
-import guaranteeDialog from "@/components/dialogs/list/guaranteeDialog";
 import uploadFilesDialog from "@/components/dialogs/list/filesDialog";
 import uploadImgDialog from "@/components/dialogs/list/uploadImgDialog";
 import picDialog from "@/components/dialogs/list/picDialog";
@@ -107,11 +102,9 @@ export default {
   components: {
     qrcode, //二维码页面
     firm, //品牌型号弹窗
-    supplyDialog,
     supplierDialog,
     maintainerDialog,
     insurerDialog,
-    guaranteeDialog,
     uploadFilesDialog,
     uploadImgDialog,
     picDialog,
@@ -158,9 +151,7 @@ export default {
       myDialog: {
         qrcode: false, //二维码弹窗
         firm: false, //厂商弹窗
-        supply: false, //选择供应合同
         supplier: false, //供应商选择
-        guarantee: false, //选择保单
         maintainer: false, //选择维修商
         insurer: false, //选择保险公司
         uploadFiles: false, //上传文件
@@ -568,21 +559,6 @@ export default {
       )
       // this.handleUpdataTable([[this.row, "LedgerParam.OperationMainte.Maintainer", null, data.name]], "edit")
     },
-    supplyChange(data) {
-      tools.setDataForKey(this.tableData[this.row], "LedgerParam.SupplyPurchase.SupplierContractID", { id: data });
-    },
-    //保险合同
-    guaranteeChange(data) {
-      for (let key in data) {
-        this.utilToKey(key, "insuranceNo", data, "InsuranceNum");
-        if (key == "contractFile") {
-          if (!!data[key]) {
-            data[key] = [data[key]];
-          }
-        }
-        this.utilToKey(key, "contractFile", data, "InsuranceFile");
-      }
-    },
     //修改关联的资产
     changeProperty(val) {
       this.setDataToMain(val.PropertyId, 'PropertyId', this.row);
@@ -681,59 +657,67 @@ export default {
         //品牌型号弹窗
         case 'DPManufacturerID':
           if (!this.onlyRead) {
-            this.myDialog.firm = true;
+            const PropertyId = this.tableData[row.row].PropertyId;
+            if (PropertyId) { //关联资产
+                this.myDialog.firm = true;
+            } else { //未关联资产
+                this.$message('请先关联资产再维护该信息!');
+            }
           }
           break;
         //供应商信息弹窗
         case 'DPSupplierID':
           if (!this.onlyRead) {
-            this.myDialog.supplier = true;
+              const PropertyId = this.tableData[row.row].PropertyId;
+            if (PropertyId) { //关联资产
+                this.myDialog.supplier = true;
+            } else { //未关联资产
+                this.$message('请先关联资产再维护该信息!');
+            }
           }
           break;
         //维修商信息弹窗
         case 'DPMaintainerID':
           if (!this.onlyRead) {
-            this.myDialog.maintainer = true;
+              const PropertyId = this.tableData[row.row].PropertyId;
+            if (PropertyId) { //关联资产
+                this.myDialog.maintainer = true;
+            } else { //未关联资产
+                this.$message('请先关联资产再维护该信息!');
+            }
           }
           break;
         //保险公司信息
         case 'DPInsurerID':
           if (!this.onlyRead) {
-            this.myDialog.insurer = true;
-          }
-          break;
-        //供应合同编号
-        case 'LedgerParam.SupplyPurchase.SupplierContractID':
-          if (!this.onlyRead) {
-            let ContractIDflag = null;
-            let DPSdata = this.tableData[row.row].DPSupplierID;
-            if (DPSdata) {
-              ContractIDflag = DPSdata.split("-")[0];
-            }
-            if (!!ContractIDflag) {
-              this.id = ContractIDflag;
-              this.myDialog.supply = true;
-            } else {
-              this.$message("请先选择供应商");
+              const PropertyId = this.tableData[row.row].PropertyId;
+            if (PropertyId) { //关联资产
+                this.myDialog.insurer = true;
+            } else { //未关联资产
+                this.$message('请先关联资产再维护该信息!');
             }
           }
           break;
-        //保险单号
-        case 'LedgerParam.InsuranceDoc.InsuranceNum':
-          if (!this.onlyRead) {
-            let DPInsurerIDflag = null;
-            let DPIdata = this.tableData[row.row].DPInsurerID;
-            if (DPIdata) {
-              DPInsurerIDflag = DPIdata.split("-")[0];
-            }
-            if (!!DPInsurerIDflag) {
-              this.id = DPInsurerIDflag;
-              this.myDialog.guarantee = true;
-            } else {
-              this.$message("请先选择保险商");
+        case 'flowBuild': //所属建筑楼层
+        case 'LedgerParam.EquipManufactor.ProductDate': //生产日期
+        case 'LedgerParam.EquipManufactor.SerialNum': //出厂编号
+        case 'LedgerParam.SupplyPurchase.AssetID': //资产编号
+        case 'LedgerParam.SupplyPurchase.PurchasePrice': //采购价格
+        case 'LedgerParam.InsuranceDoc.InsuranceNum': //保险单号
+        case 'LedgerParam.InsuranceDoc.InsuranceFile': //保险文件
+            if (!this.onlyRead) {
+                const PropertyId = this.tableData[row.row].PropertyId;
+                if (!PropertyId) { //未关联资产
+                    this.$confirm('请先关联资产再维护该信息!', '提示', {
+                        confirmButtonText: '确定',
+                        showCancelButton: false,
+                        type: 'warning'
+                    }).then(() => {
+                        return false;
+                    });
+                }
             }
-          }
-          break;
+            return false
         //保险文件--设备文档--安装质检报告
         case 'LedgerParam.InsuranceDoc.InsuranceFile': //保险文件
         case 'LedgerParam.PhotoDoc.Archive': //设备文档
@@ -781,7 +765,7 @@ export default {
         this.$message("该信息点的值为自动生成,不可人工维护!");
         return false;
       }
-      if (!this.onlyRead && showTools.InputModeArr.indexOf(inputData.inputMode) == '-1') {
+      if (!this.onlyRead && showTools.InputModeArr.indexOf(inputData.InputMode) == '-1') {
         this.updateInfoPoint = val;
         this.updateInput = tools.dataForKey(this.tableData[row.row], val);
         this.myDialog.update = true;

+ 19 - 0
src/views/ledger/property/addproperty.vue

@@ -102,6 +102,15 @@ export default {
         details: false, //详情页
         lookPic: false //图片查看
       },
+      inputMap: {
+        flowBuild: {
+        InputMode: 'D1',
+        Editable:true,
+        InfoPointCode:"flowBuild",
+        InfoPointName:"建筑楼层",
+        Path:"flowBuild"
+        }
+      }, //信息点和输入方式映射表
       qrcodeUrl: "", //二维码图片地址
       filesArr: [], //保存临时的文件key
       imgsArr: [], //临时保存的图片key数组
@@ -134,6 +143,11 @@ export default {
       };
       await getDataDictionary(params, res => {
         this.tableHeader = res.Content;
+        this.tableHeader.forEach(item => {
+            if (item.Path) {
+                this.inputMap[item.Path] = item
+            }
+        })
         this.initTable();
       });
     },
@@ -395,6 +409,7 @@ export default {
     },
     getInfors(infos, row) {
       let val = this.tableExample.colToProp(row.col);
+      let inputData = this.inputMap[val];
       switch (val) {
         //品牌型号弹窗
         case 'DPManufacturerID':
@@ -487,6 +502,10 @@ export default {
         default:
           break;
       }
+      if (!inputData.Editable) {
+        this.$message("该信息点的值为自动生成,不可人工维护!");
+        return false;
+      }
       this.row = row.row;
       this.messKey = val;
     },

+ 19 - 0
src/views/ledger/rentlist/rentadd/index.vue

@@ -51,6 +51,15 @@ export default {
         { value: "all", label: '全部' }, 
         { value: "Visible", label: '只看采集信息' }
       ],
+      inputMap: {
+        FloorId: {
+          InputMode: 'B1',
+          Editable:true,
+          InfoPointCode:"FloorId",
+          InfoPointName:"所属楼层",
+          Path:"FloorId"
+        }
+      }, //信息点和输入方式映射表
       showType: this.$route.query.showType,
       tableHeader: [],
       tableData: session.get("rentAddData")? session.get("rentAddData").length? session.get("rentAddData"): [{}]: [{}],
@@ -79,6 +88,11 @@ export default {
       }
       await getDataDictionary(param, res => {
         this.tableHeader = res.Content
+        this.tableHeader.forEach(item => {
+          if (item.Path) {
+            this.inputMap[item.Path] = item
+          }
+        })
         this.initTable()
       })
     },
@@ -195,8 +209,13 @@ export default {
     getInfors(infos, row) {
       //其他的开始判断
       let val = this.tableExample.colToProp(row.col);
+      let inputData = this.inputMap[val]
       this.row = row.row //要操作的列号
       this.messKey = val //要操作的列类型
+      if (!inputData.Editable) {
+        this.$message("该信息点的值为自动生成,不可人工维护!");
+        return false;
+      }
       //点击关联的元空间
       // if (val === "SpaceCount") {
       //   this.isTableRightShow = true;

+ 85 - 91
src/views/ledger/report/index.vue

@@ -119,75 +119,75 @@
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import {
-    countEquip,
-    countGeneralSys,
-    countProperty,
-    gatherInfoPoint,
-    getCenoteType,
-    getDataDictionary,
-    infoPoint,
-    notSyncObject,
-    notSyncRelationData,
-    postRelationInforAtpism,
-    queryCenoteCount,
-    queryDefaultFunTypes,
-    queryLederDelObject,
-    queryPart,
-    queryPartitionRatio,
-    queryRentCount,
-    queryShaftFunctionType,
-    queryTenantCompletion,
-    queryZoneCount,
-    ShaftRelationBusinessSpace,
-    systemInfoPoint
-  } from "@/api/scan/request";
-  import dataOrigin from "@/components/ledger/report/dataorigin";
-  import datafan from "@/components/ledger/report/datafan";
-  import dataExport from "@/components/ledger/report/dataexport";
-
-  export default {
-    data() {
-      return {
-        lederDelObjectCount: null,// 台账中待删除的对象
-        notSyncObjectCount: null,// 不能同步到物理世界的对象
-        notSyncDataCount: null,// 不能同步到物理世界的关系数据
-        postRelationInforCount: null,// 岗位和关联的资产信息点值不一致
-        equipCount: null,// 设备总数
-        equipment: [],// 设备数据
-        assetsCount: null,// 资产总数
-        assets: [],// 资产数据
-        parts: [],// 部件数据
-        partsCount: null,// 部件总数
-        zoneSpaceCount: null,// 业务空间总数
-        zoneType: [// 分区类型
-          {
-            "Code": "GeneralZone",
-            "Name": "默认分区",
-            "Rel_type": "99"
-          },
-          {
-            "Name": "供电分区",
-            "Rel_type": "1",
-            "Code": "PowerSupplyZone"
-          },
-          {
-            "Name": "照明分区",
-            "Rel_type": "2",
-            "Code": "LightingZone"
-          },
-          {
-            "Name": "网络分区",
-            "Rel_type": "3",
-            "Code": "NetworkZone"
-          },
-          {
-            "Code": "AirConditioningZone",
-            "Name": "空调分区",
-            "Rel_type": "4"
-          },
-          {
+import {mapGetters} from "vuex";
+import {
+  countEquip,
+  countGeneralSys,
+  countProperty,
+  gatherInfoPoint,
+  getCenoteType,
+  getDataDictionary,
+  infoPoint,
+  notSyncObject,
+  notSyncRelationData,
+  postRelationInforAtpism,
+  queryCenoteCount,
+  queryDefaultFunTypes,
+  queryLederDelObject,
+  queryPart,
+  queryPartitionRatio,
+  queryRentCount,
+  queryShaftFunctionType,
+  queryTenantCompletion,
+  queryZoneCount,
+  ShaftRelationBusinessSpace,
+  systemInfoPoint
+} from "@/api/scan/request";
+import dataOrigin from "@/components/ledger/report/dataorigin";
+import datafan from "@/components/ledger/report/datafan";
+import dataExport from "@/components/ledger/report/dataexport";
+
+export default {
+  data() {
+    return {
+      lederDelObjectCount: null,// 台账中待删除的对象
+      notSyncObjectCount: null,// 不能同步到物理世界的对象
+      notSyncDataCount: null,// 不能同步到物理世界的关系数据
+      postRelationInforCount: null,// 岗位和关联的资产信息点值不一致
+      equipCount: null,// 设备总数
+      equipment: [],// 设备数据
+      assetsCount: null,// 资产总数
+      assets: [],// 资产数据
+      parts: [],// 部件数据
+      partsCount: null,// 部件总数
+      zoneSpaceCount: null,// 业务空间总数
+      zoneType: [// 分区类型
+        {
+          "Code": "GeneralZone",
+          "Name": "默认分区",
+          "Rel_type": "99"
+        },
+        {
+          "Name": "供电分区",
+          "Rel_type": "1",
+          "Code": "PowerSupplyZone"
+        },
+        {
+          "Name": "照明分区",
+          "Rel_type": "2",
+          "Code": "LightingZone"
+        },
+        {
+          "Name": "网络分区",
+          "Rel_type": "3",
+          "Code": "NetworkZone"
+        },
+        {
+          "Code": "AirConditioningZone",
+          "Name": "空调分区",
+          "Rel_type": "4"
+        },
+        {
             "Name": "采暖分区",
             "Rel_type": "5",
             "Code": "HeatingZone"
@@ -278,13 +278,6 @@
           type: 'warning'
         });
       },
-      zoneTypeConversion(item) {// 分区类型转换
-        this.zoneType.forEach(it => {
-          if (item.Name === it.Code) {
-            item.Name = it.Name;
-          }
-        })
-      },
       functionTypeTranstion(item, type) {// 默认分区功能类型转换
         type.forEach(it => {
           if (item.Name === it.Code) {
@@ -657,22 +650,23 @@
           this.defaultPart = [];
           let res1 = response[0]
           let res2 = response[1]
-          if (res1.Content.length) {
-            res1.Content.forEach(item => {
-              this.zoneTypeConversion(item);
-            })
-            let arr = res1.Content.filter(i => i.Count).forEach(j => {
-              this.partProtion.push({
-                name: j.Name + j.Count,
-                value: j.Count
-              })
-            })
-            this.business.push({
-              title: '各分区占比',
-              tips: '各类型分区实例数量与实例总数占比',
-              needCountO: this.partProtion,
+          res1.Content.length && res1.Content.filter(i => i.Count).forEach(j => {
+            this.zoneType.forEach(l => {
+              if (l.Code == j.Name) {
+                this.partProtion.push({
+                  name: l.Name + j.Count,
+                  value: j.Count
+                })
+              }
             })
-          }
+
+          })
+          this.business.push({
+            title: '各分区占比',
+            tips: '各类型分区实例数量与实例总数占比',
+            needCountO: this.partProtion,
+          })
+          // }
           if (res2.Content.length) {
             res2.Content.forEach(item => {
               this.functionTypeTranstion(item, this.functionType);

+ 19 - 0
src/views/ledger/system/addsystem.vue

@@ -88,6 +88,15 @@ export default {
         changeRea: false,
         lookPic: false //图片查看
       },
+      inputMap: {
+        flowBuild: {
+          InputMode: 'D1',
+          Editable: true,
+          InfoPointCode: "flowBuild",
+          InfoPointName: "建筑楼层",
+          Path: "flowBuild"
+        }
+      }, //信息点和输入方式映射表
       qrcodeUrl: "", //二维码图片地址
       filesArr: [], //保存临时的文件key
       imgsArr: [], //临时保存的图片key数组
@@ -160,6 +169,11 @@ export default {
       };
       await getDataDictionary(params, res => {
         this.tableHeader = res.Content;
+        this.tableHeader.forEach(item => {
+            if (item.Path) {
+                this.inputMap[item.Path] = item
+            }
+        })
         this.initTable();
       });
     },
@@ -344,6 +358,7 @@ export default {
     },
     getInfors(infos, row) {
       let val = this.tableExample.colToProp(row.col);
+      let inputData = this.inputMap[val];
       this.row = row.row;
       this.messKey = val;
       switch (val) {
@@ -376,6 +391,10 @@ export default {
         default:
           break;
       }
+      if (!inputData.Editable) {
+        this.$message("该信息点的值为自动生成,不可人工维护!");
+        return false;
+      }
     },
     //建筑楼层
     relateSuccess(data) {

+ 5 - 0
src/views/relation/overview/index.vue

@@ -7,6 +7,7 @@
       @calcSpecial="calcSpecial"
       @openComputed="openComputed"
       @RelationType="RelationType"
+      @Refresh="Refresh"
     />
   </div>
 </template>
@@ -223,6 +224,10 @@ export default {
       sysDirection(param, res => {
         this.init();
       });
+    },
+    Refresh() {
+
+      this.init()
     }
   }
 };

+ 0 - 1
src/views/system/auth/index.vue

@@ -22,7 +22,6 @@ export default {
     this.$router.replace({path: "/"})
     // this.$store.dispatch('layout/loadUserInfo').then(resp => {
     //     console.log('store dispatch result ', resp)
-    //     // if (resp.result  == 'success') {
     //     if (resp.Result  == 'success') {
     //         let lastRoute = this.$store.getters['lastRoute']
     //         console.log('last route ', lastRoute)