From 5e2aafeede13d337380f736567caf74f49713be7 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Fri, 09 Aug 2024 14:38:32 +0800
Subject: [PATCH] 代码优化

---
 src/views/property/process/maintenanceFundApply/edit.vue |  597 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 524 insertions(+), 73 deletions(-)

diff --git a/src/views/property/process/maintenanceFundApply/edit.vue b/src/views/property/process/maintenanceFundApply/edit.vue
index a7e0dd5..2fa0bb8 100644
--- a/src/views/property/process/maintenanceFundApply/edit.vue
+++ b/src/views/property/process/maintenanceFundApply/edit.vue
@@ -13,7 +13,25 @@
         <div slot="header">
           <span>审批信息</span>
         </div>
-        <avue-form ref="crud" :option="option" v-model="form" @submit="handleSubmit">
+        <avue-form ref="crud" :option="option" v-model="form" @submit="handleSubmit" :upload-exceed="uploadExceed">
+
+          <template slot-scope="{ row, size, index }" slot="vote">
+            <div>{{ topicTitle }}</div>
+            <el-table :data="topictData" v-if="topictData.length">
+              <el-table-column width="300" property="optionContent" label="选项"
+                label-class-name="workOrderStyle"></el-table-column>
+              <el-table-column width="300" property="number" label="人数" label-class-name="workOrderStyle">
+              </el-table-column>
+              <el-table-column width="300">
+                <template slot-scope="scope">
+                  <el-button slot="reference" type="primary" size="mini"
+                    @click="openUserPopup(scope.row, 1)">详情</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </template>
+
+
           <template slot-scope="{size}" slot="menuForm">
             <el-button type="primary" :size="size" @click="$refs.crud.submit()">保存信息</el-button>
             <!-- <el-button :size="size" @click="$refs.form.resetForm()">自定义清空</el-button> -->
@@ -32,10 +50,12 @@
           <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>
+                <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>
@@ -60,6 +80,10 @@
       <el-button type="danger" @click="handleDisagree">关闭申请</el-button>
     </div>
 
+    <deitDiscussion ref="DeitDiscussion"> </deitDiscussion>
+
+    <userList ref="userList" @selectPersonList="selectPersonList"></userList>
+
   </basic-container>
 </template>
 
@@ -67,7 +91,8 @@
   import {
     historyFlowList,
     leaveDetail
-  } from "@/api/work/process";
+  } from "@/api/work/process"
+  import userList from "../../components/userList.vue"
 
   import {
     getList,
@@ -75,12 +100,19 @@
     update,
     add,
     getPropertyCapitalApply
-  } from "@/api/property/propertyCapitalApply";
+  } from "@/api/property/propertyCapitalApply"
   import {
     completeTask
-  } from "@/api/work/work";
-
+  } from "@/api/work/work"
+  import {
+    getLists
+  } from "@/api/discuss/topics"
+  import deitDiscussion from "../../components/deitDiscussion.vue"
   export default {
+    components: {
+      deitDiscussion,
+      userList
+    },
     data() {
       return {
         taskId: '',
@@ -120,13 +152,14 @@
               search: true,
               type: 'tree',
               dicUrl: `/api/blade-district/district/getDistrictTree`,
+              cascader: ['articleId'],
               props: {
                 label: "name",
                 value: "id"
               },
               defaultExpandedKeys: ["361102003"],
               span: 12,
-              labelWidth: 120,
+              labelWidth: 140,
               width: 220,
               overHidden: true,
               rules: [{
@@ -134,6 +167,33 @@
                 message: "请选择小区",
                 trigger: "blur",
               }, ],
+            },
+            {
+              disabled: true,
+              label: "户室",
+              prop: "houseNames",
+              tags: true,
+              type: "input",
+              span: 12,
+              remote: true,
+              rules: [{
+                required: true,
+                message: '请选择户室',
+                trigger: 'blur'
+              }],
+              focus: ({
+                value,
+                column
+              }) => {
+                if (!this.form.districtId) {
+                  this.$message({
+                    type: "error",
+                    message: "请先选择小区后,再选择户室!",
+                  })
+                  return
+                }
+                this.$refs.userList.show(this.form.districtId)
+              },
             },
             {
               label: '维修项目名称',
@@ -178,18 +238,22 @@
               }, ],
             },
             {
-              label: "项目分摊方式",
-              prop: "allocationWay",
-              labelWidth: 140,
-              value: '按建筑面积分摊',
+              label: "楼栋",
+              prop: "buildingName",
+              value: '',
               span: 12,
               row: true,
+              rules: [{
+                required: true,
+                message: "请输入楼栋",
+                trigger: "blur",
+              }, ],
             },
             {
               label: '联系人',
               prop: 'linkman',
               span: 12,
-              labelWidth: 120,
+              labelWidth: 140,
               search: true,
               searchSpan: 4,
               rules: [{
@@ -250,6 +314,45 @@
               value: '0.00',
             },
             {
+              display: false,
+              hide: true,
+              parent: false,
+              label: "投票结果",
+              prop: "articleId",
+              search: false,
+              viewDisabled: false,
+              type: 'select',
+              dicUrl: `/api/blade-article/article/getArticleByDistrictId?type=4&eventType=1&districtIdList={{districtId}}`,
+              formslot: true,
+              cascader: ['vote'],
+              props: {
+                label: "title",
+                value: "id"
+              },
+              defaultExpandedKeys: ["361102003"],
+              span: 12,
+              width: 260,
+              rules: [{
+                required: true,
+                message: "请选择投票结果",
+                trigger: "blur",
+              }, ],
+              change: (val) => {
+                console.log("val===>", val)
+              }
+            },
+
+            {
+              display: false,
+              span: 24,
+              hide: true,
+              prop: "vote",
+              slot: true,
+              label: "投票详情",
+              labelWidth: 140,
+
+            },
+            {
               label: "项目摘要",
               span: 24,
               hide: true,
@@ -267,45 +370,326 @@
               type: "textarea",
             },
             // {
-            //   label: "批复意见",
+            //   label: '施工方案附件',
+            //   prop: 'constructionSchemeUrls',
+            //   type: 'upload',
             //   span: 24,
             //   hide: true,
-            //   prop: "comment",
             //   labelWidth: 140,
-            //   type: "textarea",
+            //   multiple: true,
+            //   // showFileList: true,
+            //   propsHttp: {
+            //     res: 'data',
+            //     name: "originalName",
+            //     url: "link"
+            //   },
+            //   action: '/api/blade-resource/oss/endpoint/put-file-attach',
             //   rules: [{
             //     required: true,
-            //     message: "请输入批复意见",
+            //     message: "请上传施工方案",
             //     trigger: "blur",
             //   }, ],
-            // },
+            // }
             {
-              label: '施工方案附件',
-              prop: 'constructionSchemeUrls',
-              type: 'upload',
+              label: "维修资金使用申请审批表",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file1",
+              type: "upload",
+              dataType: 'object',
+              listType: "picture-card",
+              limit: 1,
+              props: {
+                label: 'fileUrl',
+                value: 'fileName'
+              },
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
               span: 24,
               hide: true,
-              labelWidth: 140,
-              multiple: true,
-              // showFileList: true,
-              propsHttp: {
-                res: 'data',
-                name: "originalName",
-                url: "link"
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "申请使用维修资金的报告、附维修部位彩色照片、业委会(物管会)会议纪要(社区意见)",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file2",
+              type: "upload",
+              dataType: 'object',
+              listType: "picture-card",
+              limit: 1,
+              props: {
+                label: 'fileUrl',
+                value: 'fileName'
               },
-              action: '/api/blade-resource/oss/endpoint/put-file-attach',
-              rules: [{
-                required: true,
-                message: "请上传施工方案",
-                trigger: "blur",
-              }, ],
-            }
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "公示单,预算,现场勘察图片、公示照片(公示期7天)",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file3",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "维修单位出具的工程款发票(验收合格后以竣工决算审核报告审定金额开具)",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file4",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "应急维修需提供专业机构出具的检验检测报告或(乡镇人民政府)街道办事处现场核实意见",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file5",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "业主签名表或线上表决记录(应急情况不提供)",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file6",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "政府采购资料",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file7",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "维修和更新、改造方案、维修项目的协议或合同",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file8",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "维修改造工程竣工验收单一式两份(维修完工需经申请人签字);维修项目签证单(超出预算清单内容的需出具签证单)",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file9",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "维修项目决算、造价机构出具的决算审价报告",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file10",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
+            {
+              label: "业主委员会情况登记表;经办人或代理人证件(复印件),复印件上签名、联系电话",
+              offset: 2,
+              labelPosition: "top",
+              prop: "file11",
+              type: "upload",
+              listType: "picture-card",
+              limit: 1,
+              dataType: 'object',
+              action: "/api/blade-resource/oss/endpoint/put-file-attach",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+              hide: true,
+              // rules: [{
+              //   required: true,
+              //   message: "请上传文件",
+              //   trigger: "blur",
+              // }],
+            },
           ],
-        }
+        },
+        topictData: [],
+        topicTitle: "",
+        articleRange: ""
       }
     },
+
+
+    watch: {
+      'form.districtId': {
+        handler(newData) {
+          const column = this.findObject(this.option.column, "articleId")
+          if (newData && this.form.articleId) {
+            column.display = true
+          } else {
+            column.display = false
+          }
+        }
+      },
+
+
+      'form.articleId': {
+        handler(newData) {
+          this.getVoteDetail(this.form.articleId, this.articleRange)
+          const column = this.findObject(this.option.column, "vote")
+          if (newData) {
+            column.display = true
+          } else {
+            column.display = false
+          }
+        }
+      },
+
+    },
+
+
     created() {
-      this.init();
+      this.init()
     },
     beforeRouteUpdate(to, from, next) {
       // 在当前路由改变,但是该组件被复用时调用
@@ -313,50 +697,87 @@
       // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用
       // 可以访问组件实例 `this`
       if (to.fullPath !== from.fullPath) {
-        next();
-        this.init();
+        next()
+        this.init()
       }
     },
     methods: {
+
+      uploadAfter(res, done, loading, column) {
+        console.log(res, column)
+        // this.form.attachment = []
+        this.form.attachment.push({
+          fileName: column.label,
+          fileUrl: res.link,
+          fileType: this.getFileExtension(res.originalName),
+        })
+        done()
+        // this.$message.success('上传后的方法')
+      },
+
+      getFileExtension(filename) {
+        var lastDotIndex = filename.lastIndexOf('.')
+        if (lastDotIndex !== -1) {
+          return filename.substring(lastDotIndex + 1)
+        }
+        return ''
+      },
+
+      selectPersonList(personList) {
+        console.log(personList, "++++++++++++")
+        this.personList = personList
+        let houseNameList = personList.map(e => {
+          if (e.houseName) {
+            return e.houseName
+          }
+        })
+        this.form.houseName = houseNameList.join(",")
+        let addressCodeList = personList.map(e => {
+          if (e.addressCode) {
+            return e.addressCode
+          }
+        })
+        this.form.addressCodes = addressCodeList.join(",")
+      },
       handleSubmit(form, done, loading) {
         if (form.constructionSchemeUrls.length > 0) {
           var urls = []
-          var split = form.constructionSchemeUrls.split(",");
+          var split = form.constructionSchemeUrls.split(",")
           split.forEach(url => {
-            var names = url.split("jczz/");
+            var names = url.split("jczz/")
             urls.push(names[1])
           })
           form.constructionSchemeUrls = urls.join(",")
         }
         update(form).then(
           () => {
-            this.onLoad(this.page);
+            this.onLoad(this.page)
             this.$message({
               type: "success",
               message: "操作成功!",
-            });
-            done();
+            })
+            done()
           },
           (error) => {
-            window.console.log(error);
-            loading();
+            window.console.log(error)
+            loading()
           }
-        );
+        )
       },
       init() {
-        this.taskId = this.$route.params.taskId;
-        this.processInstanceId = this.$route.params.processInstanceId;
-        this.businessId = this.$route.params.businessId;
+        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;
+          const data = res.data
           if (data.success) {
-            this.flowList = data.data;
+            this.flowList = data.data
           }
         })
         getPropertyCapitalApply(this.businessId).then(res => {
-          const data = res.data;
+          const data = res.data
           if (data.success) {
-            this.form = data.data;
+            this.form = data.data
           }
         })
       },
@@ -370,50 +791,80 @@
           processInstanceId: this.processInstanceId,
           flag: 'ok',
           comment: this.form.comment,
-        };
+        }
         completeTask(params).then(res => {
-          const data = res.data;
+          const data = res.data
           if (data.success) {
-            this.$message.success(data.msg);
-            this.$router.$avueRouter.closeTag();
+            this.$message.success(data.msg)
+            this.$router.$avueRouter.closeTag()
             this.$router.push({
               path: `/property/propertyCapitalApply`
-            });
+            })
           } else {
-            this.$message.error(data.msg || '提交失败');
+            this.$message.error(data.msg || '提交失败')
           }
         })
       },
       handleDisagree() {
         this.form.comment = '关闭申请'
         if (!this.form.comment) {
-          this.$message.warning('请先填写批复意见');
-          return;
+          this.$message.warning('请先填写批复意见')
+          return
         }
         const params = {
           taskId: this.taskId,
           processInstanceId: this.processInstanceId,
           comment: this.form.comment,
-        };
+        }
         completeTask(params).then(res => {
-          const data = res.data;
+          const data = res.data
           if (data.success) {
-            this.$message.success(data.msg);
-            this.$router.$avueRouter.closeTag();
+            this.$message.success(data.msg)
+            this.$router.$avueRouter.closeTag()
             this.$router.push({
               path: `/property/propertyCapitalApply`
-            });
+            })
           } else {
-            this.$message.error(data.msg || '提交失败');
+            this.$message.error(data.msg || '提交失败')
           }
         })
       },
       handleCancel() {
-        this.$router.$avueRouter.closeTag();
+        this.$router.$avueRouter.closeTag()
         this.$router.push({
           path: `/property/todo`
-        });
+        })
+      },
+
+      getVoteDetail(articleId, districtId) {
+        let params = {
+          level: 1,
+          articleId: articleId,
+          districtId: districtId
+        }
+        getLists(1, 10, params).then(res => {
+          const data = res.data.data
+          if (data.length) {
+            this.topictData = data[0].children
+            this.topicTitle = data[0].discussContent
+          }
+        })
+      },
+
+      openUserPopup(row) {
+        this.$refs.DeitDiscussion.openUser(row, 1, [this.form.districtId])
+      },
+
+      uploadExceed(limit, files, fileList, column) {
+        console.log(limit, files, fileList, column)
+        this.$message.error('超出上传限制文件数量')
       }
     }
   }
-</script>
\ No newline at end of file
+</script>
+
+<style>
+  .workOrderStyle {
+    font-weight: normal;
+  }
+</style>
\ No newline at end of file

--
Gitblit v1.9.3