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/task/reportForRepairs.vue |  184 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 154 insertions(+), 30 deletions(-)

diff --git a/src/views/task/reportForRepairs.vue b/src/views/task/reportForRepairs.vue
index 826828e..3c391aa 100644
--- a/src/views/task/reportForRepairs.vue
+++ b/src/views/task/reportForRepairs.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2023-12-14 17:10:00
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-12-29 10:36:08
+ * @LastEditTime: 2024-01-29 14:02:52
  * @FilePath: \jczz_web\src\views\task\reportForRepairs.vue
  * @Description:
  *
@@ -15,13 +15,13 @@
       v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
       @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
       @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="confirmFlag" slot-scope="{row}">
-        <el-tag size="small" :type="showConfirmFlag(row.confirmFlag).type">
+      <template slot="confirmFlag" slot-scope="{row, size}">
+        <el-tag :size="size" :type="showConfirmFlag(row.confirmFlag).type">
           {{ showConfirmFlag(row.confirmFlag).text }}
         </el-tag>
       </template>
 
-      <template slot="expand" slot-scope="{row}">
+      <template slot="expand" slot-scope="{row, size}">
         <el-timeline>
           <el-timeline-item v-for="(item, index) in timeLineData(row)" :key="index" :timestamp="item.createTime"
             :icon="item.icon" :color="item.color" :hide-timestamp="item.contentType == 3" placement="top">
@@ -66,21 +66,40 @@
         </el-timeline>
       </template>
 
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text" icon="el-icon-chat-dot-square" :disabled="scope.row.confirmFlag === 3"
-          @click="replyBtnClick(scope.row)">
+      <template slot-scope="{row, size, index}" slot="menu">
+        <el-button :size="size" v-if="permission.report_for_repairs_details" type="text" icon="el-icon-document-remove"
+          @click="rowExpansion(row)">
+          详情
+        </el-button>
+
+        <el-button :size="size" v-if="permission.report_for_repairs_reply" type="text" icon="el-icon-chat-dot-square"
+          :disabled="row.confirmFlag === 3" @click="replyBtnClick(row)">
           回复
         </el-button>
 
-        <el-button type="text" icon="el-icon-document-copy" :disabled="scope.row.confirmFlag === 3"
-          @click="turnOverBtnClick(scope.row)">
+        <el-button :size="size" v-if="permission.report_for_repairs_turn_over" type="text" icon="el-icon-document-copy"
+          :disabled="row.confirmFlag === 3" @click="turnOverBtnClick(row)">
           移交
+        </el-button>
+
+        <el-button :size="size" v-if="permission.report_for_repairs_del" type="text" icon="el-icon-delete"
+          @click="rowDel(row)">
+          删除
         </el-button>
       </template>
 
-      <template slot="menuLeft">
+      <template slot-scope="{row, size, index}" slot="menuLeft">
+        <el-button :size="size" type="primary" v-if="permission.task_reportForRepairs_add" icon="el-icon-plus"
+          @click="$refs.crud.rowAdd()">新增</el-button>
+
         <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
           除
+        </el-button>
+      </template>
+
+      <template slot-scope="{row, size}" slot="phone">
+        <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneflag')"
+          v-text="textDispose(row, 'phoneflag', 'phone')">
         </el-button>
       </template>
     </avue-crud>
@@ -99,7 +118,8 @@
       </avue-form>
     </el-dialog>
 
-    <el-dialog title="转交" append-to-body :visible.sync="turnOverPopup" center @close="popupClose">
+    <el-dialog title="转交" class="turn-over-popup" append-to-body :visible.sync="turnOverPopup" center
+      @close="popupClose">
       <avue-form ref="turnOverForm" :option="turnOverOption" v-model="turnOverForm" @submit="turnOverHandleSubmit"
         @reset-change="turnOverHandleReset"></avue-form>
     </el-dialog>
@@ -128,6 +148,17 @@
 
   export default {
     data() {
+      let validatorPhone = function(rule, value, callback) {
+        if (value) {
+          if (!/^1[3456789]\d{9}$/.test(value)) {
+            callback(new Error('手机号格式有误!'))
+          } else {
+            callback()
+          }
+        }
+        callback()
+      }
+
       return {
         colors: ['#99A9BF', '#F7BA2A', '#FF9900'],
         form: {},
@@ -141,6 +172,15 @@
         datetime: "",
         selectionList: [],
         option: {
+          labelWidth: 96,
+          searchLabelWidth: 96,
+          searchShow: true,
+          searchMenuSpan: 3,
+          menuWidth: 280,
+          addBtn: false,
+          viewBtn: false,
+          editBtn: false,
+          delBtn: false,
           index: false,
           selection: false,
           expand: true,
@@ -148,49 +188,53 @@
           calcHeight: 54,
           dialogWidth: 950,
           tip: false,
-          searchShow: true,
-          searchMenuSpan: 3,
-          menuWidth: 350,
           border: true,
           //stripe:true,
-          viewBtn: true,
           // excelBtn: true,
           dialogClickModal: false,
           column: [{
+              width: 100,
               label: "类型",
               prop: "type",
               span: 12,
+              searchLabelWidth: 46,
               searchSpan: 4,
+              search: true,
               dataType: "number",
               type: "select",
-              width: 100,
               dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType",
               props: {
                 label: "dictValue",
                 value: "dictKey",
               },
-              search: true,
             },
             {
+              width: 110,
               label: "姓名",
               prop: "realName",
               span: 12,
               searchSpan: 4,
-              width: 100,
+              searchLabelWidth: 66,
               search: true,
             },
+
             {
-              label: "手机号",
+              width: 120,
+              label: "手机号码",
               prop: "phone",
-              span: 12,
-              width: 100,
-              searchSpan: 4,
               search: true,
+              searchSpan: 4,
+              slot: true,
+              rules: [{
+                validator: validatorPhone,
+                trigger: 'blur'
+              }],
             },
+
             {
+              width: 110,
               label: "图片",
               prop: "imageUrls",
-              width: 80,
               type: "upload",
               listType: "picture-card",
               dataType: "string",
@@ -204,22 +248,45 @@
               span: 24,
             },
             {
+              overHidden: true,
               label: "地点",
               prop: "addressName",
-              overHidden: true
             },
             {
+              width: 110,
+              label: "所属街道",
+              addDisplay: false,
+              editDisplay: false,
+              viewDisplay: false,
+              prop: "streetName",
+              search: true,
+              searchSpan: 4
+            },
+
+            {
+              width: 156,
+              overHidden: true,
+              label: "所属社区",
+              addDisplay: false,
+              editDisplay: false,
+              viewDisplay: false,
+              prop: "communityName",
+              search: true,
+              searchSpan: 4
+            },
+            {
+              width: 100,
+              label: "状态",
               addDisplay: false,
               editDisplay: false,
               slot: true,
-              label: "状态",
               prop: "confirmFlag",
               overHidden: true
             },
             {
+              width: 144,
               label: "上报时间",
               prop: "createTime",
-              width: 160,
               addDisplay: false,
               editDisplay: false,
               type: "date",
@@ -227,9 +294,9 @@
               valueFormat: "yyyy-MM-dd HH:mm:ss",
             },
             {
+              width: 144,
               label: "处理时间",
               prop: "confirmTime",
-              width: 160,
               addDisplay: false,
               editDisplay: false,
               type: "date",
@@ -291,10 +358,10 @@
             },
 
             {
+              width: 110,
               fileType: 'img',
               label: "图片",
               prop: "imageList",
-              width: 80,
               type: "upload",
               listType: "picture-card",
               dataType: "string",
@@ -334,7 +401,7 @@
             // },
 
             {
-              span: 14,
+              span: 24,
               label: "人员类型",
               prop: "peopleType",
               type: 'select',
@@ -354,7 +421,7 @@
             },
 
             {
-              span: 14,
+              span: 24,
               label: "指定人员",
               prop: "transferUserId",
               type: 'select',
@@ -530,9 +597,31 @@
 
           return tags
         }
+      },
+
+      textDispose() {
+        return (row, flag, type) => {
+          if (row[flag] || row[type] == null) {
+            return row[type]
+          } else {
+            if (type == 'principalIdCard') {
+              return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2")
+            } else {
+              return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2")
+            }
+          }
+        }
       }
     },
     methods: {
+      showStringDispose(row, type) {
+        row[type] = !row[type]
+      },
+
+      rowExpansion(row) {
+        this.$refs.crud.toggleRowExpansion(row)
+      },
+
       popupClose() {
         this.$refs.replyForm && this.$refs.replyForm.resetForm()
         this.$refs.turnOverForm && this.$refs.turnOverForm.resetForm()
@@ -557,6 +646,26 @@
       },
 
       handleSubmit(form, done) {
+
+        if (form.imageList.length > 0) {
+          var urls = []
+          var split = form.imageList.split(",").filter(item => item != '')
+          split.forEach(url => {
+            var names = url.split("jczz/")
+            urls.push(names[1])
+          })
+          form.imageList = urls.join(",")
+        }
+        // if (form.imageList.length > 0) {
+        //   var urls = []
+        //   var split = form.imageList.split(",").filter(item => item != '')
+        //   split.forEach(url => {
+        //     var names = url.split("jczz/")
+        //     urls.push(names[1])
+        //   })
+        //   form.imageList = urls.join(",")
+        // }
+
         this.saveReply({
           ...form,
           videoList: this.fileList.map(item => item.response.data.link).join(','),
@@ -796,6 +905,7 @@
           this.page.total = data.total
           this.data = data.records
           this.data.forEach(item => {
+            this.$set(item, 'phoneflag', false)
             if (item.imageUrls) {
               if (item.imageUrls.length > 0) {
                 var urls = []
@@ -806,6 +916,20 @@
                 item.imageUrls = urls.join(",")
               }
             }
+            if (item.taskRepairStepList.length > 0) {
+              item.taskRepairStepList.forEach(ee => {
+                if (ee.imageList) {
+                  if (ee.imageList.length > 0) {
+                    var urls = []
+                    var names = ee.imageList.split(",")
+                    names.forEach(name => {
+                      urls.push(website.minioUrl + name)
+                    })
+                    ee.imageList = urls.join(",")
+                  }
+                }
+              })
+            }
           })
           this.loading = false
           this.selectionClear()

--
Gitblit v1.9.3