shaun-sheep 5 rokov pred
rodič
commit
80944164ed

+ 111 - 26
src/components/ready/buildfloor/addBuild.vue

@@ -15,7 +15,11 @@
       <template v-for="(val,key,index) in buildMessage">
         <h4>{{key}}</h4>
 
-        <span :key="item.InfoPointCode" v-for="(item,index) in val">
+        <span
+          :key="item.InfoPointCode"
+          v-for="(item,index) in val"
+          :class="[{'upload-file':item.InputMode == 'F2'}]"
+        >
         <el-form-item
           :class="{FloorTypeSelect:item.InputMode == 'D1'||item.Unit}"
           :label="item.InfoPointName"
@@ -23,16 +27,38 @@
           v-if="all||item.Visible"
         >
 
-          <el-input v-if="item.InputMode == 'B1'" v-model="form[item.Path]"></el-input>
+          <el-input v-if="item.InputMode == 'B1' || item.InputMode == 'B2'" v-model="form[item.Path]"></el-input>
+
           <el-input type="number" v-else-if="item.InputMode == 'A1'||item.InputMode == 'A2'" v-model="form[item.Path]">
             <template slot="append" v-if="item.Unit">{{item.Unit}}</template>
           </el-input>
           <el-select placeholder="请选择" v-else-if="item.InputMode == 'D1'" v-model="form[item.Path]">
             <el-option :key="op.Code" :label="op.Name" :value="op.Code" v-for="op in item.options"></el-option>
-
           </el-select>
-          <el-input v-else-if="item.InputMode == 'L'||item.InputMode == 'L1'||item.InputMode == 'L2'||item.InputMode == 'M'"
-                    v-model="form[item.Path]">
+        <el-select placeholder="请选择" v-else-if="item.InputMode == 'D2'||item.InputMode == 'E2'"
+                   v-model="form[item.Path]" multiple
+                   collapse-tags>
+            <el-option :key="op.Code" :label="op.Name" :value="op.Code" v-for="op in item.options"></el-option>
+          </el-select>
+           <el-date-picker
+             v-model="form[item.Path]"
+             type="daterange"
+             v-else-if="item.InputMode == 'C6'"
+             value-format="yyyy-MM-dd"
+             range-separator="至"
+             start-placeholder="开始日期"
+             end-placeholder="结束日期"/>
+             <el-cascader
+               v-else-if="item.InputMode == 'D1L'"
+               placeholder="请选择"
+               :options="item.options"
+               v-model="form[item.Path]"
+               :props="{ checkStrictly: true ,value: 'Code',label:'Name'}"
+               clearable
+             />
+          <el-input
+            v-else-if="item.InputMode == 'L'||item.InputMode == 'L1'||item.InputMode == 'L2'||item.InputMode == 'M'"
+            v-model="form[item.Path]">
             <template slot="append" v-if="item.Unit">{{item.Unit}}</template>
           </el-input>
           <el-date-picker
@@ -40,9 +66,30 @@
             value-format="yyyy-MM-dd"
             type="date" v-else-if="item.InputMode == 'C5'" v-model="form[item.Path]">
           </el-date-picker>
+          <el-upload
+            v-else-if="item.InputMode == 'F2'&& item.Path === 'BuildingInfo.BuildingType.Pic'"
+            v-model="form[item.Path]"
+            action="https://jsonplaceholder.typicode.com/posts/"
+            list-type="picture-card"
+          >
+<!--               :on-preview="handlePictureCardPreview"
+            :on-remove="handleRemove"-->
+         <i class="el-icon-plus"></i>
+        </el-upload>
+           <upload-files
+             v-else-if="item.InputMode == 'F2'"
+             v-model="form[item.Path]"
+             :readOnly="false"
+             :keysArr="keysArr"
+             :show-file-list="false"
+             @change="changeItem"
+             max="2"
+           />
+
           <el-input disabled title="暂不支持" v-else v-model="form[item.Path]"></el-input>
-                    {{item.InputMode}}
+
         </el-form-item>
+          <!--                   <span>{{item.InputMode}}</span>-->
       </span>
       </template>
       <!--      <h4>建筑信息-建筑类型</h4>-->
@@ -78,16 +125,45 @@
     <el-button @click="buildDialogVis = false">取 消</el-button>
     <el-button @click="submitForm('ruleForm')" type="primary">确 定</el-button>
   </span>
+
+
+    <el-dialog :visible.sync="dialogVisible">
+      <img width="100%" :src="dialogImageUrl" alt="">
+    </el-dialog>
   </el-dialog>
+
 </template>
 <script>
-  import uploadFile from "./uploadFile";
-  import tools from "@/utils/buildfloor/tools";
+  import uploadFiles from "@/components/business_space/lib/uploadFiles";
+
+  function flattenKeys(obj) {
+    let res = {}
+
+    function isObject(val) {
+      return typeof val === 'object' && !Array.isArray(val)
+    }
+
+    function digKeys(prev, obj) {
+      Object.entries(obj).forEach(([key, value]) => {
+        const currentKey = prev ? `${prev}.${key}` : key
+        if (isObject(value)) {
+          digKeys(currentKey, value)
+        } else {
+          res[currentKey] = value
+        }
+      })
+    }
+
+    digKeys('', obj)
+
+    return res
+  }
 
   export default {
     data() {
       return {
         buildName: '',
+        keysArr: [], //保存临时的文件key
         buildDialogVis: false,
         form: {},
         dialogImageUrl: '',
@@ -101,11 +177,14 @@
             {"required": true, "message": "请输入建筑本地名称", "trigger": "blur"}
           ]
         },
-        floorData:{}
+        buildData: {},
+        dialog:{
+          uploadFiles:false
+        }
       }
     },
-    components: {uploadFile},
-    props: ['buildTitle', 'buildMessage','currentBuild'],
+    components: {uploadFiles},
+    props: ['buildTitle', 'buildMessage', 'currentBuild'],
     computed: {},
     mounted() {
 
@@ -113,8 +192,8 @@
     },
     methods: {
       showDialog(data) {
-        this.floorData = data || {};
-        this.floorData = tools.desFormatData(this.floorData)
+        this.buildData = data || {};
+        this.buildData = flattenKeys(this.buildData)
         this.timeoutSetVal()
         this.buildDialogVis = true
       },
@@ -122,9 +201,7 @@
         let that = this
         setTimeout(() => {
           if (that.form) {
-
-            that.form = that.floorData
-
+            that.form = that.buildData
           } else {
             this.timeoutSetVal()
           }
@@ -136,17 +213,19 @@
       submitForm(formName) {
         this.$refs[formName].validate((valid) => {
           if (valid) {
-            // console.log(valid, 'valid', this.form);
-            // for (let i in this.form) {
-            //   console.log(i, this.form[i])
-            // }
-            this.$emit('handleBuild',this.form)
+            this.$emit('handleBuild', this.form)
           } else {
             return false;
           }
         });
       },
-
+      changeItem(val) {
+        console.log(val,'======')
+      }
+      //上传文件弹窗触发事件
+      // fileChange(keys) {
+      //   this.setDataToMain(keys, this.messKey, this.row);
+      // },
       // handleRemove(file, fileList) {
       //   console.log(file, fileList);
       // },
@@ -158,10 +237,6 @@
   }
 </script>
 <style lang="less" scoped>
-  /deep/ .el-dialog__body {
-    height: 420px;
-    overflow: auto;
-  }
 
   #messageDialog {
     /deep/ .el-date-editor.el-input, .el-date-editor.el-input__inner, /deep/ .el-select {
@@ -171,5 +246,15 @@
     /deep/ .FloorTypeSelect .el-form-item__content {
       width: 200px;
     }
+
+    /deep/ .el-dialog__body {
+      height: 420px;
+      overflow: auto;
+    }
+
+    .upload-file {
+      width: 100%;
+      display: block;
+    }
   }
 </style>

+ 1 - 1
src/views/ready/buildfloor/index.vue

@@ -230,7 +230,7 @@
           let first = {}
           //一级循环出来一级标签
           list.map(item => {
-            if (item.InputMode === 'D1' && item.DataSource != undefined) {
+            if ((item.InputMode === 'D1' || item.InputMode === 'D2'  || item.InputMode === 'E2'|| item.InputMode === 'D1L') && item.DataSource != undefined) {
               item.options = JSON.parse(item.DataSource)
             }
             if (first[item.FirstName] && first[item.FirstName].length) {