Browse Source

modify buildfloor addfloor

haojianlong 5 years ago
parent
commit
cffc17c79c

+ 33 - 0
src/components/ready/buildfloor/addBuild.vue

@@ -0,0 +1,33 @@
+<template>
+  <el-dialog :title="buildTitle" :visible.sync="buildDialogVis" width="20%" @close="handleClose" id="messageDialog">
+    <div>
+      <label>建筑名称 : </label>
+      <el-input placeholder="请输入建筑名称" v-model="buildName"></el-input>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button size="small">取消</el-button>
+      <el-button size="small" type="primary" @click="save">确认</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      buildName: '',
+      buildDialogVis: false
+    }
+  },
+  props: {
+    buildTitle: {
+      default: "添加建筑"
+    }
+  },
+  methods: {
+    showDialog() {
+      this.buildDialogVis = true
+    },
+    save() { }
+  }
+}
+</script>

+ 0 - 0
src/components/ready/buildfloor/addConnectivity.vue


+ 71 - 0
src/components/ready/buildfloor/formItems.vue

@@ -0,0 +1,71 @@
+<template>
+  <div id="inforsPoint">
+    <el-form ref="ruleForm" :model="form" label-width="150px" :inline="true" :label-position="'left'">
+      <el-form-item :label="item.InfoPointName" v-for="item in InforsList" :key="item.InfoPointCode"
+        :class="{FloorTypeSelect:item.InputMode == 'D1'||item.Unit}">
+        <el-input v-model="form[item.Path]" v-if="item.Visible && (item.InputMode == 'B1')"></el-input>
+        <el-input v-model="form[item.Path]" v-else-if="item.Visible && (item.InputMode == 'A1'||item.InputMode == 'A2')" type="number">
+          <template slot="append" v-if="item.Unit">{{item.Unit}}</template>
+        </el-input>
+        <el-select v-model="form[item.Path]" placeholder="请选择" v-else-if="item.Visible && (item.InputMode == 'D1')">
+          <el-option v-for="op in item.options" :key="op.Code" :label="op.Name" :value="op.Code">
+          </el-option>
+        </el-select>
+        <el-input v-model="form[item.Path]"
+          v-else-if="item.Visible && (item.InputMode == 'L'||item.InputMode == 'L1'||item.InputMode == 'L2'||item.InputMode == 'M')"></el-input>
+        <el-input v-model="form[item.Path]" v-else readonly title="暂不支持"></el-input>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+<script>
+import { getDataDictionary } from "@/api/scan/request";
+export default {
+  props: {
+    type: {
+      default: 'Floor'
+    }
+  },
+  data() {
+    return {
+      form: {},
+      InforsList: []
+    };
+  },
+  created() {
+    this.getInforsPoint()
+  },
+  methods: {
+    getInforsPoint() {
+      let params = {
+        data: {
+          Orders: "sort asc,InfoPointCode asc",
+          PageNumber: 1,
+          PageSize: 50
+        },
+        type: 'Building '
+      };
+      getDataDictionary(params, res => {
+        this.InforsList = res.Content.map(item => {
+          if (item.InputMode === 'D1') {
+            item.options = JSON.parse(item.DataSource)
+          }
+          return item
+        })
+      })
+    },
+  }
+};
+</script>
+<style lang="scss" scoped>
+#inforsPoint {
+  .el-form-item {
+    /deep/ label.el-form-item__label {
+      font-size: 12px;
+    }
+  }
+  /deep/ .FloorTypeSelect .el-form-item__content {
+    width: 178px;
+  }
+}
+</style>

+ 42 - 0
src/utils/buildfloor/tools.js

@@ -0,0 +1,42 @@
+const tools = {}
+
+/**
+ * arr [a,b,c]
+ * 
+ * val value
+ */
+function returnNewObj(data, arr, val) {
+  if(arr.length > 1){
+    let k = arr.shift()
+    let curk = arr[0]
+    if(!data[k]){
+      data[k] = {}
+    } 
+    returnNewObj(data[k], arr, val)
+  }else{
+    let curk = arr[0]
+    data[curk] = val;
+  }
+}
+
+
+
+/**
+ * param data Object
+ * 
+ * 将对象中 key 为a.b.c 转换为a:{b:{c:''}}
+ * 
+ */
+tools.formatData = (data) => {
+  let newData = JSON.parse(JSON.stringify(data))
+  for (let key in newData) {
+    if (key.indexOf('.') > -1) {
+      let arr = key.split('.')
+      returnNewObj(newData, arr, newData[key])
+      delete newData[key]
+    }
+  }
+  return newData
+}
+
+export default tools

+ 80 - 0
src/views/ready/buildfloor/addFloor/index.vue

@@ -0,0 +1,80 @@
+<template>
+  <el-dialog :title="title" :visible.sync="dialogVisible" width="40%" @close="handleClose" id="messageDialog">
+    <div>
+      <formItems :type="'Floor'" ref="formItems"></formItems>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button size="small">取消</el-button>
+      <el-button size="small" type="primary" @click="confirm">确认</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+import { getDataDictionary } from "@/api/scan/request";
+import formItems from "@/components/ready/buildfloor/formItems";
+import tools from "@/utils/buildfloor/tools";
+export default {
+  props: {
+    title: {
+      default: '提示'
+    },
+    type: {
+      default: 'Floor'
+    }
+  },
+  components:{
+    formItems
+  },
+  data() {
+    return {
+      dialogVisible: false, //弹窗显示与隐藏
+      FloorTypeList: [
+        { "Code": "1", "Name": "普通楼层" },
+        { "Code": "2", "Name": "室外" },
+        { "Code": "3", "Name": "夹层" },
+        { "Code": "4", "Name": "屋顶平台" },
+        { "Code": "99", "Name": "其他" }
+      ],
+      InforsList:[]
+    };
+  },
+  methods: {
+    showDialog(data) {
+      this.tableData = data || '';
+      this.dialogVisible = true;
+      let params = {
+        data: {
+          PageNumber: 1,
+          PageSize: 50
+        },
+        type: this.type
+      };
+      getDataDictionary(params, res => {
+        this.InforsList = res.Content
+      })
+    },
+    handleClose(done) { },
+    //清除关系
+    confirm() {
+      let form = this.$refs.formItems.form
+      let newform = tools.formatData(form)
+      console.log('-------------')
+      console.log(newform)
+    }
+  },
+  mounted() { },
+  created() { }
+};
+</script>
+<style lang="scss" scoped>
+#messageDialog {
+  .el-form-item {
+    /deep/ label.el-form-item__label {
+      font-size: 12px;
+    }
+  }
+  /deep/ .FloorTypeSelect .el-form-item__content {
+    width: 178px;
+  }
+}
+</style>

+ 36 - 7
src/views/ready/buildfloor/index.vue

@@ -66,17 +66,36 @@
           :total="page.total"></el-pagination>
       </div>
     </el-row>
+    <!-- 添加-修改楼层 -->
+    <addFloor :title="floorTitle" ref="addFloorDialog"></addFloor>
+    <!-- 添加-修改建筑 -->
+    <addBuild :title="buildTitle" ref="addBuildDialog"></addBuild>
+    <!-- 删除建筑-删除楼层 -->
+    <el-dialog title="提示" :visible.sync="delDialogVis" width="20%" @close="handleClose" id="messageDialog">
+      <div>确定要删除该{{delText}}?</div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small">取消</el-button>
+        <el-button size="small" type="primary" @click="confirm">确认</el-button>
+      </span>
+    </el-dialog>
+
   </div>
 </template>
 
 <script>
-import dasBoard from "@/views/dasboard/index";
+import addFloor from "@/views/ready/buildfloor/addFloor/index";
+import addBuild from "@/components/ready/buildfloor/addBuild";
 export default {
   components: {
-    dasBoard
+    addFloor,
+    addBuild
   },
   data() {
     return {
+      floorTitle: '添加楼层',
+      buildTitle: '添加建筑',
+      delDialogVis: false,
+      delText: '建筑',
       headerStyle: {
         backgroundColor: '#e1e4e5',
         color: '#2b2b2b',
@@ -104,13 +123,23 @@ export default {
   mounted() { },
   methods: {
     changeBuild() { },
-    addBuild() { },
-    delBuild() { },
+    addBuild() {
+      this.$refs.addBuildDialog.showDialog()
+    },
+    delBuild() {
+      this.delText = '建筑';
+      this.delDialogVis = true
+    },
     editBuild() { },
-    handleDelete() { },
+    handleDelete() {
+      this.delText = '楼层';
+      this.delDialogVis = true
+    },
     handleSizeChange(pageSize) { },
     handleCurrentChange(pageNumber) { },
-    addFloor() { }
+    addFloor() {
+      this.$refs.addFloorDialog.showDialog()
+    }
   }
 }
 </script>
@@ -173,7 +202,7 @@ export default {
         /deep/ .el-badge__content.is-fixed {
           transform: translateY(-6%) translateX(-100%);
         }
-        p{
+        p {
           cursor: pointer;
         }
       }