From 7cc2cf7be54f1a6303a49e9a81dd26d5a96d2322 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 18 Jan 2024 18:10:51 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jczz_web

---
 src/views/propertySupervision/houseHoldSupervision.vue |   92 ++++
 src/views/work/process/maintenanceFundApply/handle.vue |  739 +++++++++++++++++++-------------------
 src/views/property/propertyCompany.vue                 |    8 
 src/api/answerRecord/answerRecord.js                   |   49 ++
 src/views/property/components/propertyEdit.vue         |   92 +++-
 src/views/propertySupervision/residentSupervision.vue  |  102 +++++
 6 files changed, 683 insertions(+), 399 deletions(-)

diff --git a/src/api/answerRecord/answerRecord.js b/src/api/answerRecord/answerRecord.js
new file mode 100644
index 0000000..c81970b
--- /dev/null
+++ b/src/api/answerRecord/answerRecord.js
@@ -0,0 +1,49 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-answerRecord/answerRecord/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/blade-answerRecord/answerRecord/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/blade-answerRecord/answerRecord/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const save = (row) => {
+  return request({
+    url: '/api/blade-answerRecord/answerRecord/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-answerRecord/answerRecord/submit',
+    method: 'post',
+    data: row
+  })
+}
\ No newline at end of file
diff --git a/src/views/property/components/propertyEdit.vue b/src/views/property/components/propertyEdit.vue
index 4aa57a3..44d3b6e 100644
--- a/src/views/property/components/propertyEdit.vue
+++ b/src/views/property/components/propertyEdit.vue
@@ -1,6 +1,6 @@
 <template>
 
-  <el-dialog title="" append-to-body :visible.sync="infoVisible" top="10vh" width="70%">
+  <el-dialog title="" append-to-body :visible.sync="infoVisible" top="10vh" width="70%" :before-close="handleClose">
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <!-- <el-tab-pane label="物业信息" name="first"></el-tab-pane> -->
       <el-tab-pane label="基础信息" name="info1"></el-tab-pane>
@@ -22,28 +22,37 @@
         <div>
           {{index+1}} .{{ item.subjectName }}
         </div>
-        <div v-for="(item1, index1) in item.subjectOptionList" :key="index1">
-          <!-- <div>
+        <!-- <div v-for="(item1, index1) in item.subjectOptionList" :key="index1"> -->
+        <!-- <div>
             {{ item1.optionName }}
           </div> -->
-          <el-radio-group v-model="item1.ids" v-if="item.choicesType == 0">
-            <el-radio :label="item1.id">{{item1.optionName}}</el-radio>
-          </el-radio-group>
+        <!-- <el-radio-group v-model="item.ids" v-if="item.choicesType == 0"> -->
 
-          <div v-if="item.choicesType == 3">
-            <div>{{item1.optionName}}</div>
+        <div v-if="item.choicesType == 0">
+          <div v-for="(item1, index1) in item.subjectOptionList" :key="index1">
+            <el-radio v-model="item1.ids" :label="item1.id">{{item1.optionName}}-----------{{item1.score}}</el-radio>
+          </div>
+        </div>
+
+        <!-- </el-radio-group> -->
+
+        <div v-if="item.choicesType == 3">
+          <!-- <div>{{item1.optionName}}</div> -->
+          <div v-for="(item1, index1) in item.subjectOptionList" :key="index1">
             <el-input-number v-model="item1.numbers" @change="handleChange" :min="0" :max="25"
               :label="item1.optionName"></el-input-number>
-            <!-- <el-input v-model="item1.numbers" type="number" :placeholder="item1.optionName"></el-input> -->
           </div>
 
+          <!-- <el-input v-model="item1.numbers" type="number" :placeholder="item1.optionName"></el-input> -->
         </div>
+
+        <!-- </div> -->
       </div>
 
     </div>
 
     <div slot="footer" class="dialog-footer">
-      <el-button @click="payInfoVisible = false">取 消</el-button>
+      <el-button @click="infoVisible = false">取 消</el-button>
       <el-button type="primary" @click="submit">提 交</el-button>
     </div>
 
@@ -56,6 +65,10 @@
     getList,
     remove
   } from "@/api/subjectChoices/subjectChoices";
+
+  import {
+    save
+  } from "@/api/answerRecord/answerRecord";
   import {
     add
   } from "@/api/property/propertyCompany"
@@ -65,6 +78,7 @@
   export default {
     data() {
       return {
+        property: {},
         activeName: 'info1',
         infoVisible: false,
         page: {
@@ -196,6 +210,29 @@
       ...mapGetters(["permission", "userInfo"]),
     },
     methods: {
+
+      handleClose() {
+        this.infoVisible = false
+        // this.$refs.DisCussFrom && this.$refs.DisCussFrom.resetForm()
+      },
+
+      submit() {
+        console.log("============>", this.questionBankData)
+        save(this.questionBankData).then(
+          () => {
+            // this.onLoad(this.page)
+            this.$message({
+              type: "success",
+              message: "操作成功!",
+            })
+            done()
+          },
+          (error) => {
+            window.console.log(error)
+            loading()
+          }
+        )
+      },
       handleChange(value) {
         console.log(value);
       },
@@ -230,7 +267,9 @@
           const data = res.data.data;
           this.page.total = data.total;
           this.questionBankData = data.records;
-          // this.questionBankLoading = false;
+          this.questionBankData.forEach(item => {
+            item.propertyId = this.property.id
+          })
         });
       },
 
@@ -239,25 +278,26 @@
         let param = {
           subclassName: '基础信息'
         }
+        this.property = row
         this.questionBankOnLoad(this.page, param)
       },
 
       handleClick(tab, event) {
-        this.$confirm("确定将选择数据删除?", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            return remove(row.id)
-          })
-          .then(() => {
-            this.onLoad(this.page)
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            })
-          })
+        // this.$confirm("确定将选择数据删除?", {
+        //     confirmButtonText: "确定",
+        //     cancelButtonText: "取消",
+        //     type: "warning",
+        //   })
+        //   .then(() => {
+        //     return remove(row.id)
+        //   })
+        //   .then(() => {
+        //     this.onLoad(this.page)
+        //     this.$message({
+        //       type: "success",
+        //       message: "操作成功!",
+        //     })
+        //   })
         // console.log(tab, event);
         console.log('============>', JSON.stringify(this.questionBankData))
         let param = {
diff --git a/src/views/property/propertyCompany.vue b/src/views/property/propertyCompany.vue
index d8c5ac5..3583278 100644
--- a/src/views/property/propertyCompany.vue
+++ b/src/views/property/propertyCompany.vue
@@ -18,8 +18,8 @@
           @click="openPayConfig(row)">商户配置
         </el-button>
 
-        <!-- <el-button :size="size" icon="el-icon-circle-plus-outline" type="text" @click="addProperty()">物业评定
-        </el-button> -->
+        <el-button :size="size" icon="el-icon-circle-plus-outline" type="text" @click="addProperty(row)">物业评定
+        </el-button>
       </template>
     </avue-crud>
 
@@ -350,8 +350,8 @@
     methods: {
 
 
-      addProperty() {
-        this.$refs.propertyEdit.init();
+      addProperty(row) {
+        this.$refs.propertyEdit.init(row);
       },
 
       aliSubmit(form, done) {
diff --git a/src/views/propertySupervision/houseHoldSupervision.vue b/src/views/propertySupervision/houseHoldSupervision.vue
index 4ad035d..0d7e7e8 100644
--- a/src/views/propertySupervision/houseHoldSupervision.vue
+++ b/src/views/propertySupervision/houseHoldSupervision.vue
@@ -24,7 +24,13 @@
               @click="manageLabel(row)">标签
             </el-button>
           </template> -->
+          
 
+          <template  slot="menuLeft">
+            <div  class="echarts-wrap">
+                <div  class="echarts-item"   id="echarts"></div> 
+            </div>
+          </template>
 
 
           <template slot-scope="{row, size}" slot="phone">
@@ -130,6 +136,11 @@
   import func from "@/util/func"
   // import householdManager from "./components/householdManager"
   import Qs from "qs"
+  import * as echarts from 'echarts';
+  import {
+    getTreeList
+} from '@/api/label/label'
+
   export default {
     components: {
       // householdManager
@@ -476,7 +487,8 @@
               formslot: true,
               span: 24,
             }
-          ]
+          ],
+          labelCountList:[]
         }
       }
     },
@@ -512,7 +524,9 @@
         }
       }
     },
-    mounted() {},
+    mounted() {
+      this.getLabelCount()
+    },
     methods: {
 
       onsubmit() {
@@ -795,7 +809,72 @@
       },
       showStringDispose(row, type) {
         row[type] = !row[type]
+      },
+      
+      getLabelCount(){
+        getTreeList().then(res => {
+            const data = res.data.data
+            let list = data[1].children;
+            this.labelCountList = list;
+            this.$nextTick(()=>{
+              this.setEchartsOption(list)
+            })
+        })
+      },
+
+      setEchartsOption(data){
+        let  option = {
+                  // title: {
+                  //     text:"房屋",
+                  //     left: 'center',
+                  //     top:20,
+                  // },
+                  tooltip: {
+                      trigger: 'item'
+                  },
+                 legend: {
+                  orient: 'horizontal',
+          left: 'right',
+          top: 'bottom',
+                  },
+      //             labelLine: {
+      //   length: 15,
+      //   length2: 0,
+      //   maxSurfaceAngle: 80
+      // },
+                series: [
+                      {
+                    type: 'pie',
+                    radius: '50%',
+                    data: [],
+                    emphasis: {
+                      itemStyle: {
+                        shadowBlur: 10,
+                        shadowOffsetX: 0,
+                        shadowColor: 'rgba(0, 0, 0, 0.5)'
+                      }
+                   }
+                 }
+               ]
+           };
+          let myEchart = document.getElementById('echarts'); //获取类名
+          let myCharts =  echarts.init(myEchart);
+         for(let i = 0,ii = data.length;i<ii;i++){
+            option.series[0].data.push({
+              name:data[i].name,
+              value:data[i].count,
+              id:data[i].id
+            });
+            option && myCharts.setOption(option);
+            myCharts.on('click',(params)=>{
+                     console.log(params)
+                     this.query.labelId = params.data.id;
+                this.onLoad(this.page, this.query)     
+            })
+         }
+        
       }
+
     }
   }
 </script>
@@ -812,4 +891,13 @@
   .box .el-scrollbar__wrap {
     overflow: scroll;
   }
+  .echarts-wrap{
+    display: flex;
+    padding:0 30px;
+    justify-content: center
+  }
+  .echarts-item{
+    width:100%;
+    height:300px;
+  }
 </style>
\ No newline at end of file
diff --git a/src/views/propertySupervision/residentSupervision.vue b/src/views/propertySupervision/residentSupervision.vue
index c83d43a..b671a4d 100644
--- a/src/views/propertySupervision/residentSupervision.vue
+++ b/src/views/propertySupervision/residentSupervision.vue
@@ -2,12 +2,21 @@
   <el-row>
     <el-col :span="24">
       <basic-container>
+
+
+      
         <avue-crud :option="option" :search.sync="search" :table-loading="loading" :data="data" ref="crud"
           v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave"
           :before-open="beforeOpen" :page.sync="page" @search-change="searchChange" @search-reset="searchReset"
           @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
           @refresh-change="refreshChange" @on-load="onLoad">
 
+          <template  slot="menuLeft">
+            <div  class="echarts-wrap">
+                <div  class="echarts-item"  v-for="(i,k) in labelCountList"  :key="k"></div> 
+            </div>
+          </template>
+         
           <template slot-scope="{row, size}" slot="menu">
             <el-button :size="size" type="text" icon="el-icon-circle-plus-outline" v-if="permission.househould_manager"
               @click="manageLabel(row)">标签
@@ -108,6 +117,10 @@
   import NProgress from 'nprogress'
   import 'nprogress/nprogress.css'
   import Qs from "qs"
+  import * as echarts from 'echarts';
+  import {
+    getTreeList
+} from '@/api/label/label'
 
 
   export default {
@@ -743,6 +756,9 @@
         currentLabel: {},
         currentRow: {},
         householdLabelList: [],
+
+        labelCountList:[]
+
       }
     },
     watch: {
@@ -836,7 +852,10 @@
         }
       }
     },
-    mounted() {},
+    mounted() {
+       this.getLabelCount();
+    
+    },
     methods: {
       init(row) {
         console.log(JSON.stringify(row))
@@ -1078,6 +1097,76 @@
 
       showStringDispose(row, type) {
         row[type] = !row[type]
+      },
+
+      getLabelCount(){
+        getTreeList().then(res => {
+            const data = res.data.data
+            let list = data[0].children;
+            this.labelCountList = list;
+            this.$nextTick(()=>{
+              this.setEchartsOption(list)
+            })
+        })
+      },
+
+      setEchartsOption(data){
+        let  option = {
+                  title: {
+                      text:"",
+                      left: 'center',
+                      top:20,
+                  },
+                  tooltip: {
+                      trigger: 'item'
+                  },
+                 legend: {
+                  orient: 'horizontal',
+          left: 'center',
+          top: 70,
+                  },
+                  labelLine: {
+        length: 15,
+        length2: 0,
+        maxSurfaceAngle: 80
+      },
+                series: [
+                      {
+                    type: 'pie',
+                    radius: '35%',
+                    data: [],
+                    emphasis: {
+                      itemStyle: {
+                        shadowBlur: 10,
+                        shadowOffsetX: 0,
+                        shadowColor: 'rgba(0, 0, 0, 0.5)'
+                      }
+                   }
+                 }
+               ]
+           };
+          let myEchart = document.getElementsByClassName('echarts-item'); //获取类名
+         for(let i = 0,ii = data.length;i<ii;i++){
+           let myCharts =  echarts.init(myEchart[i]);
+            option.title.text = data[i].name;
+            let series = [];
+            for(let k = 0,kk = data[i].children.length;k<kk;k++){
+              series.push({
+                value:data[i].children[k].count,
+                name:data[i].children[k].name,
+                id:data[i].children[k].id,
+              })
+            }
+            option.legend.type = series.length > 4?"scroll":"plain"
+            option.series[0].data = series;
+            option && myCharts.setOption(option);
+            myCharts.on('click',(params)=>{
+                     console.log(params)
+                this.query.labelId = params.data.id;
+                this.onLoad(this.page, this.query)
+            })
+         }
+        
       }
     }
   }
@@ -1118,4 +1207,15 @@
   .box .el-scrollbar__wrap {
     overflow: scroll;
   }
+
+  .echarts-wrap{
+    display: flex;
+    flex-wrap: wrap;
+    padding:0 30px;
+  }
+  .echarts-item{
+    width:320px;
+    height:400px;
+    margin:0 30px 30px 0;
+  }
 </style>
\ No newline at end of file
diff --git a/src/views/work/process/maintenanceFundApply/handle.vue b/src/views/work/process/maintenanceFundApply/handle.vue
index d911f4d..9e1d425 100644
--- a/src/views/work/process/maintenanceFundApply/handle.vue
+++ b/src/views/work/process/maintenanceFundApply/handle.vue
@@ -1,413 +1,420 @@
 <template>
-  <basic-container>
-    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-      <el-row type="flex" class="row-bg" justify="end">
-        <el-form-item>
-          <el-button @click="handleCancel">关闭</el-button>
-        </el-form-item>
-      </el-row>
+    <basic-container>
+        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+            <el-row type="flex" class="row-bg" justify="end">
+                <el-form-item>
+                    <el-button @click="handleCancel">关闭</el-button>
+                </el-form-item>
+            </el-row>
 
-      <el-card shadow="hover">
-        <div slot="header">
-          <span>审批信息</span>
-        </div>
-        <avue-form :option="option" v-model="form"></avue-form>
-      </el-card>
+            <el-card shadow="hover">
+                <div slot="header">
+                    <span>审批信息</span>
+                </div>
+                <avue-form :option="option" v-model="form"></avue-form>
+            </el-card>
 
-      <el-card shadow="hover">
-        <div slot="header">
-          <span>流程信息</span>
-        </div>
-        <el-row type="flex" class="row-bg">
-          <el-timeline>
-            <el-timeline-item :key="flow.id" :timestamp="flow.createTime" v-for="flow in flowList" placement="top">
-              <el-card shadow="hover">
-                <p>{{flow.assigneeName}} 在 [{{flow.createTime}}] 开始处理 [{{flow.historyActivityName}}] 环节</p>
-                <p v-if="flow.historyActivityDurationTime!==''">任务历时 [{{flow.historyActivityDurationTime}}]</p>
-                <p v-if="flow.comment!==''">批复意见: [{{flow.comment}}]</p>
-                <p v-if="flow.endTime!==''">结束时间: [{{flow.endTime}}]</p>
-              </el-card>
-            </el-timeline-item>
-          </el-timeline>
-        </el-row>
-      </el-card>
-      <el-card shadow="hover">
-        <div slot="header">
-          <span>流程跟踪</span>
-        </div>
-        <el-row class="row-bg">
-          <flow-design :is-display="true" :process-instance-id="processInstanceId"></flow-design>
-        </el-row>
-      </el-card>
-    </el-form>
+            <el-card shadow="hover">
+                <div slot="header">
+                    <span>流程信息</span>
+                </div>
+                <el-row type="flex" class="row-bg">
+                    <el-timeline>
+                        <el-timeline-item :key="flow.id" :timestamp="flow.createTime" v-for="flow in flowList"
+                            placement="top">
+                            <el-card shadow="hover">
+                                <p>{{ flow.assigneeName }} 在 [{{ flow.createTime }}] 开始处理 [{{ flow.historyActivityName }}]
+                                    环节</p>
+                                <p v-if="flow.historyActivityDurationTime !== ''">任务历时 [{{ flow.historyActivityDurationTime
+                                }}]
+                                </p>
+                                <p v-if="flow.comment !== ''">批复意见: [{{ flow.comment }}]</p>
+                                <p v-if="flow.endTime !== ''">结束时间: [{{ flow.endTime }}]</p>
+                            </el-card>
+                        </el-timeline-item>
+                    </el-timeline>
+                </el-row>
+            </el-card>
+            <el-card shadow="hover">
+                <div slot="header">
+                    <span>流程跟踪</span>
+                </div>
+                <el-row class="row-bg">
+                    <flow-design :is-display="true" :process-instance-id="processInstanceId"></flow-design>
+                </el-row>
+            </el-card>
+        </el-form>
 
-    <!-- <div style="">
+        <!-- <div style="">
       <el-button type="primary" @click="handleAgree">同意</el-button>
       <el-button type="danger" @click="handleDisagree">驳回</el-button>
     </div> -->
 
-    <div style="text-align: center;
+        <div style="text-align: center;
     position: fixed;
     left: 0;
     right: 0;
     bottom: 10px;">
-      <el-button type="primary" @click="handleAgree">同意</el-button>
-      <el-button type="danger" @click="handleDisagree">驳回</el-button>
-    </div>
+            <el-button type="primary" @click="handleAgree">同意</el-button>
+            <el-button type="danger" @click="handleDisagree">驳回</el-button>
+        </div>
 
-  </basic-container>
+    </basic-container>
 </template>
 
 <script>
-  import {
+import {
     historyFlowList,
     leaveDetail
-  } from "@/api/work/process";
+} from "@/api/work/process"
 
-  import {
+import {
     getList,
     remove,
     update,
     add,
     getPropertyCapitalApply
-  } from "@/api/property/propertyCapitalApply";
-  import {
+} from "@/api/property/propertyCapitalApply"
+import {
     completeTask
-  } from "@/api/work/work";
+} from "@/api/work/work"
+import website from '@/config/website'
 
-  export default {
-    data() {
-      return {
-        taskId: '',
-        businessId: '',
-        processInstanceId: '',
-        src: '',
-        flowList: [],
-        form: {
-          flow: {
-            assigneeName: '',
-          },
-          startTime: '',
-          endTime: '',
-          reason: '',
-        },
-        option: {
-          height: "auto",
-          calcHeight: 54,
-          dialogWidth: 1150,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 3,
-          menuWidth: 350,
-          border: true,
-          //stripe:true,
-          submitBtn: false,
-          emptyBtn: false,
-          index: true,
-          viewBtn: true,
-          selection: true,
-          dialogClickModal: false,
-          column: [{
-              label: "小区",
-              prop: "districtId",
-              searchSpan: 5,
-              search: true,
-              type: 'tree',
-              dicUrl: `/api/blade-district/district/getDistrictTree`,
-              props: {
-                label: "name",
-                value: "id"
-              },
-              defaultExpandedKeys: ["361102003"],
-              span: 12,
-              labelWidth: 120,
-              width: 220,
-              overHidden: true,
-              rules: [{
-                required: true,
-                message: "请选择小区",
-                trigger: "blur",
-              }, ],
-              disabled: true
+export default {
+    data () {
+        return {
+            taskId: '',
+            businessId: '',
+            processInstanceId: '',
+            src: '',
+            flowList: [],
+            form: {
+                flow: {
+                    assigneeName: '',
+                },
+                startTime: '',
+                endTime: '',
+                reason: '',
             },
-            {
-              label: '维修项目名称',
-              prop: 'name',
-              searchLabelWidth: 120,
-              searchSpan: 5,
-              search: true,
-              span: 12,
-              labelWidth: 140,
-              rules: [{
-                required: true,
-                message: "请输入维修项目名称",
-                trigger: "blur",
-              }, ],
-              disabled: true
-            },
-            {
-              label: "预计开工时间",
-              prop: "runTime",
-              span: 12,
-              labelWidth: 140,
-              type: "date",
-              format: "yyyy-MM-dd",
-              valueFormat: "yyyy-MM-dd",
-              rules: [{
-                required: true,
-                message: "请选择合同开始时间",
-                trigger: "blur",
-              }, ],
-              disabled: true
-            },
-            {
-              label: "预计竣工时间",
-              prop: "completedTime",
-              labelWidth: 140,
-              span: 12,
-              type: "date",
-              format: "yyyy-MM-dd",
-              valueFormat: "yyyy-MM-dd",
-              rules: [{
-                required: true,
-                message: "请选择合同结束时间",
-                trigger: "blur",
-              }, ],
-              disabled: true
-            },
-            {
-              label: "项目分摊方式",
-              prop: "allocationWay",
-              labelWidth: 140,
-              value: '按建筑面积分摊',
-              span: 14,
-              row: true,
-              disabled: true
-            },
-            {
-              label: '联系人',
-              prop: 'linkman',
-              span: 12,
-              labelWidth: 120,
-              search: true,
-              searchSpan: 4,
-              rules: [{
-                required: true,
-                message: "请输入联系人",
-                trigger: "blur",
-              }, ],
-              disabled: true
-            },
-            {
-              label: '联系方式',
-              prop: 'linkPhone',
-              span: 12,
-              labelWidth: 140,
-              rules: [{
-                required: true,
-                message: "请输入联系方式",
-                trigger: "blur",
-              }, ],
-              disabled: true
-            },
-            {
-              label: "项目预算总金额(元)",
-              prop: "budgetAmount",
-              span: 12,
-              hide: true,
-              labelWidth: 140,
-              type: 'number',
-              precision: 2,
-              value: '0.00',
-              disabled: true
-            },
-            {
-              label: "实际预算金额(元)",
-              prop: "actualAmount",
-              span: 12,
-              hide: true,
-              labelWidth: 140,
-              type: 'number',
-              precision: 2,
-              value: '0.00',
-              disabled: true
-            },
-            {
-              label: "自筹金额(元)",
-              prop: "selfAmount",
-              span: 12,
-              hide: true,
-              labelWidth: 140,
-              type: 'number',
-              precision: 2,
-              value: '0.00',
-              disabled: true
-            },
-            {
-              label: "预算应拨付金额(元)",
-              prop: "budgetAppropriateAmount",
-              span: 12,
-              hide: true,
-              labelWidth: 140,
-              type: 'number',
-              precision: 2,
-              value: '0.00',
-              disabled: true
-            },
-            {
-              label: "项目摘要",
-              span: 24,
-              hide: true,
-              prop: "projectDigest",
-              placeholder: "例如:“XX小区XX栋XX设施设备维修,总的预算金额是X,是否含有审价,本次维修涉及范围共XX户,总面积的建筑面积为XX平方米”",
-              labelWidth: 140,
-              type: "textarea",
-              disabled: true
-            },
-            {
-              label: "项目进度描述",
-              span: 24,
-              hide: true,
-              prop: "projectDescribe",
-              labelWidth: 140,
-              type: "textarea",
-              disabled: true
-            }, {
-              label: "批复意见",
-              span: 24,
-              hide: true,
-              prop: "comment",
-              labelWidth: 140,
-              type: "textarea",
-              rules: [{
-                required: true,
-                message: "请输入批复意见",
-                trigger: "blur",
-              }, ],
-            },
-            {
-              label: '施工方案附件',
-              prop: 'constructionSchemeUrls',
-              type: 'upload',
-              span: 24,
-              hide: true,
-              labelWidth: 140,
-              multiple: true,
-              // showFileList: true,
-              propsHttp: {
-                res: 'data',
-                name: "originalName",
-                url: "link"
-              },
-              action: '/api/blade-resource/oss/endpoint/put-file-attach',
-              rules: [{
-                required: true,
-                message: "请上传施工方案",
-                trigger: "blur",
-              }, ],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 1150,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 350,
+                border: true,
+                //stripe:true,
+                submitBtn: false,
+                emptyBtn: false,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                column: [{
+                    label: "小区",
+                    prop: "districtId",
+                    searchSpan: 5,
+                    search: true,
+                    type: 'tree',
+                    dicUrl: `/api/blade-district/district/getDistrictTree`,
+                    props: {
+                        label: "name",
+                        value: "id"
+                    },
+                    defaultExpandedKeys: ["361102003"],
+                    span: 12,
+                    labelWidth: 120,
+                    width: 220,
+                    overHidden: true,
+                    rules: [{
+                        required: true,
+                        message: "请选择小区",
+                        trigger: "blur",
+                    },],
+                    disabled: true
+                },
+                {
+                    label: '维修项目名称',
+                    prop: 'name',
+                    searchLabelWidth: 120,
+                    searchSpan: 5,
+                    search: true,
+                    span: 12,
+                    labelWidth: 140,
+                    rules: [{
+                        required: true,
+                        message: "请输入维修项目名称",
+                        trigger: "blur",
+                    },],
+                    disabled: true
+                },
+                {
+                    label: "预计开工时间",
+                    prop: "runTime",
+                    span: 12,
+                    labelWidth: 140,
+                    type: "date",
+                    format: "yyyy-MM-dd",
+                    valueFormat: "yyyy-MM-dd",
+                    rules: [{
+                        required: true,
+                        message: "请选择合同开始时间",
+                        trigger: "blur",
+                    },],
+                    disabled: true
+                },
+                {
+                    label: "预计竣工时间",
+                    prop: "completedTime",
+                    labelWidth: 140,
+                    span: 12,
+                    type: "date",
+                    format: "yyyy-MM-dd",
+                    valueFormat: "yyyy-MM-dd",
+                    rules: [{
+                        required: true,
+                        message: "请选择合同结束时间",
+                        trigger: "blur",
+                    },],
+                    disabled: true
+                },
+                {
+                    label: "项目分摊方式",
+                    prop: "allocationWay",
+                    labelWidth: 140,
+                    value: '按建筑面积分摊',
+                    span: 14,
+                    row: true,
+                    disabled: true
+                },
+                {
+                    label: '联系人',
+                    prop: 'linkman',
+                    span: 12,
+                    labelWidth: 120,
+                    search: true,
+                    searchSpan: 4,
+                    rules: [{
+                        required: true,
+                        message: "请输入联系人",
+                        trigger: "blur",
+                    },],
+                    disabled: true
+                },
+                {
+                    label: '联系方式',
+                    prop: 'linkPhone',
+                    span: 12,
+                    labelWidth: 140,
+                    rules: [{
+                        required: true,
+                        message: "请输入联系方式",
+                        trigger: "blur",
+                    },],
+                    disabled: true
+                },
+                {
+                    label: "项目预算总金额(元)",
+                    prop: "budgetAmount",
+                    span: 12,
+                    hide: true,
+                    labelWidth: 140,
+                    type: 'number',
+                    precision: 2,
+                    value: '0.00',
+                    disabled: true
+                },
+                {
+                    label: "实际预算金额(元)",
+                    prop: "actualAmount",
+                    span: 12,
+                    hide: true,
+                    labelWidth: 140,
+                    type: 'number',
+                    precision: 2,
+                    value: '0.00',
+                    disabled: true
+                },
+                {
+                    label: "自筹金额(元)",
+                    prop: "selfAmount",
+                    span: 12,
+                    hide: true,
+                    labelWidth: 140,
+                    type: 'number',
+                    precision: 2,
+                    value: '0.00',
+                    disabled: true
+                },
+                {
+                    label: "预算应拨付金额(元)",
+                    prop: "budgetAppropriateAmount",
+                    span: 12,
+                    hide: true,
+                    labelWidth: 140,
+                    type: 'number',
+                    precision: 2,
+                    value: '0.00',
+                    disabled: true
+                },
+                {
+                    label: "项目摘要",
+                    span: 24,
+                    hide: true,
+                    prop: "projectDigest",
+                    placeholder: "例如:“XX小区XX栋XX设施设备维修,总的预算金额是X,是否含有审价,本次维修涉及范围共XX户,总面积的建筑面积为XX平方米”",
+                    labelWidth: 140,
+                    type: "textarea",
+                    disabled: true
+                },
+                {
+                    label: "项目进度描述",
+                    span: 24,
+                    hide: true,
+                    prop: "projectDescribe",
+                    labelWidth: 140,
+                    type: "textarea",
+                    disabled: true
+                }, {
+                    label: "批复意见",
+                    span: 24,
+                    hide: true,
+                    prop: "comment",
+                    labelWidth: 140,
+                    type: "textarea",
+                    rules: [{
+                        required: true,
+                        message: "请输入批复意见",
+                        trigger: "blur",
+                    },],
+                },
+                {
+                    label: '施工方案附件',
+                    prop: 'constructionSchemeUrls',
+                    type: 'upload',
+                    listType: 'picture-img',
+                    span: 24,
+                    hide: true,
+                    labelWidth: 140,
+                    multiple: true,
+                    // showFileList: true,
+                    propsHttp: {
+                        res: 'data',
+                        name: "originalName",
+                        url: "link"
+                    },
+                    action: '/api/blade-resource/oss/endpoint/put-file-attach',
+                    rules: [{
+                        required: true,
+                        message: "请上传施工方案",
+                        trigger: "blur",
+                    },],
+                }
+                ],
             }
-          ],
         }
-      }
     },
-    created() {
-      this.init();
+    created () {
+        this.init()
     },
-    beforeRouteUpdate(to, from, next) {
-      // 在当前路由改变,但是该组件被复用时调用
-      // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候
-      // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用
-      // 可以访问组件实例 `this`
-      if (to.fullPath !== from.fullPath) {
-        next();
-        this.init();
-      }
+    beforeRouteUpdate (to, from, next) {
+        // 在当前路由改变,但是该组件被复用时调用
+        // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候
+        // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用
+        // 可以访问组件实例 `this`
+        if (to.fullPath !== from.fullPath) {
+            next()
+            this.init()
+        }
     },
     methods: {
-      init() {
-        this.taskId = this.$route.params.taskId;
-        this.processInstanceId = this.$route.params.processInstanceId;
-        this.businessId = this.$route.params.businessId;
-        historyFlowList(this.processInstanceId).then(res => {
-          const data = res.data;
-          if (data.success) {
-            this.flowList = data.data;
-          }
-        })
-        getPropertyCapitalApply(this.businessId).then(res => {
-          const data = res.data;
-          if (data.success) {
-            this.form = data.data;
-          }
-        })
-      },
-      handleAgree() {
-        if (!this.form.comment) {
-          this.$message.warning('请先填写批复意见');
-          return;
-        }
-        const params = {
-          taskId: this.taskId,
-          processInstanceId: this.processInstanceId,
-          flag: 'ok',
-          comment: this.form.comment,
-        };
-        completeTask(params).then(res => {
-          const data = res.data;
-          if (data.success) {
-            this.$message.success(data.msg);
-            this.$router.$avueRouter.closeTag();
+        init () {
+            this.taskId = this.$route.params.taskId
+            this.processInstanceId = this.$route.params.processInstanceId
+            this.businessId = this.$route.params.businessId
+            historyFlowList(this.processInstanceId).then(res => {
+                const data = res.data
+                if (data.success) {
+                    this.flowList = data.data
+                }
+            })
+            getPropertyCapitalApply(this.businessId).then(res => {
+                const data = res.data
+                if (data.success) {
+                    data.data.constructionSchemeUrls = website.minioUrl + data.data.constructionSchemeUrls
+                    this.form = data.data
+                }
+            })
+        },
+        handleAgree () {
+            if (!this.form.comment) {
+                this.$message.warning('请先填写批复意见')
+                return
+            }
+            const params = {
+                taskId: this.taskId,
+                processInstanceId: this.processInstanceId,
+                flag: 'ok',
+                comment: this.form.comment,
+            }
+            completeTask(params).then(res => {
+                const data = res.data
+                if (data.success) {
+                    this.$message.success(data.msg)
+                    this.$router.$avueRouter.closeTag()
+                    this.$router.push({
+                        path: `/work/todo`
+                    })
+                } else {
+                    this.$message.error(data.msg || '提交失败')
+                }
+            })
+        },
+        handleDisagree () {
+            if (!this.form.comment) {
+                this.$message.warning('请先填写批复意见')
+                return
+            }
+            const params = {
+                taskId: this.taskId,
+                processInstanceId: this.processInstanceId,
+                comment: this.form.comment,
+            }
+            completeTask(params).then(res => {
+                const data = res.data
+                if (data.success) {
+                    this.$message.success(data.msg)
+                    this.$router.$avueRouter.closeTag()
+                    this.$router.push({
+                        path: `/work/todo`
+                    })
+                } else {
+                    this.$message.error(data.msg || '提交失败')
+                }
+            })
+        },
+        handleCancel () {
+            this.$router.$avueRouter.closeTag()
             this.$router.push({
-              path: `/work/todo`
-            });
-          } else {
-            this.$message.error(data.msg || '提交失败');
-          }
-        })
-      },
-      handleDisagree() {
-        if (!this.form.comment) {
-          this.$message.warning('请先填写批复意见');
-          return;
+                path: `/work/todo`
+            })
         }
-        const params = {
-          taskId: this.taskId,
-          processInstanceId: this.processInstanceId,
-          comment: this.form.comment,
-        };
-        completeTask(params).then(res => {
-          const data = res.data;
-          if (data.success) {
-            this.$message.success(data.msg);
-            this.$router.$avueRouter.closeTag();
-            this.$router.push({
-              path: `/work/todo`
-            });
-          } else {
-            this.$message.error(data.msg || '提交失败');
-          }
-        })
-      },
-      handleCancel() {
-        this.$router.$avueRouter.closeTag();
-        this.$router.push({
-          path: `/work/todo`
-        });
-      }
     }
-  }
+}
 </script>
 
 <style scoped>
-  .container {
+.container {
     position: relative;
     /* 确保按钮相对于该元素定位 */
-  }
+}
 
-  #myButton {
+#myButton {
     position: fixed;
     bottom: 0;
     left: 50%;
     transform: translateX(-50%);
-  }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3