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

---
 src/api/property/propertyCharge.js                        |   50 +
 src/views/property/propertyCharge.vue                     |  360 ++++++++
 src/views/property/partyOrganization.vue                  |    1 
 src/views/property/propertyChargeRecord.vue               |  337 +++++++
 src/views/task/reportForRepairs.vue                       | 1597 ++++++++++++++++++-----------------
 src/api/property/propertyChargeRecord.js                  |   50 +
 src/views/property/propertyCompany.vue                    |  249 +++++
 src/api/property/propertyCompany.js                       |   29 
 src/views/property/components/partyOrganizationMember.vue |    4 
 9 files changed, 1,875 insertions(+), 802 deletions(-)

diff --git a/src/api/property/propertyCharge.js b/src/api/property/propertyCharge.js
new file mode 100644
index 0000000..5534312
--- /dev/null
+++ b/src/api/property/propertyCharge.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/propertyCharge/propertyCharge/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/propertyCharge/propertyCharge/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/propertyCharge/propertyCharge/save',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/propertyCharge/propertyCharge/update',
+    method: 'post',
+    data: row
+  })
+}
+
+export const getPropertyCompany = (id) => {
+  return request({
+    url: '/api/propertyCharge/propertyCharge/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
diff --git a/src/api/property/propertyChargeRecord.js b/src/api/property/propertyChargeRecord.js
new file mode 100644
index 0000000..7d5b4a0
--- /dev/null
+++ b/src/api/property/propertyChargeRecord.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/propertyChargeRecord/propertyChargeRecord/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/propertyChargeRecord/propertyChargeRecord/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/propertyChargeRecord/propertyChargeRecord/save',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/propertyChargeRecord/propertyChargeRecord/update',
+    method: 'post',
+    data: row
+  })
+}
+
+export const getPropertyCompany = (id) => {
+  return request({
+    url: '/api/propertyChargeRecord/propertyChargeRecord/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
diff --git a/src/api/property/propertyCompany.js b/src/api/property/propertyCompany.js
index 295928b..b0ee870 100644
--- a/src/api/property/propertyCompany.js
+++ b/src/api/property/propertyCompany.js
@@ -47,3 +47,32 @@
     }
   })
 }
+
+
+
+export const getPayConfig = (id) => {
+  return request({
+    url: '/api/blade-propertyCompany/propertyCompany/getPayConfig',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+
+export const saveOrUpdateWx = (row) => {
+  return request({
+    url: '/api/wxpay/saveOrUpdate',
+    method: 'post',
+    data: row
+  })
+}
+
+export const saveOrUpdateAli = (row) => {
+  return request({
+    url: '/api/alipay/saveOrUpdate',
+    method: 'post',
+    data: row
+  })
+}
diff --git a/src/views/property/components/partyOrganizationMember.vue b/src/views/property/components/partyOrganizationMember.vue
index 8977987..372046f 100644
--- a/src/views/property/components/partyOrganizationMember.vue
+++ b/src/views/property/components/partyOrganizationMember.vue
@@ -515,6 +515,7 @@
       done()
     },
     beforeOpen (done, type) {
+      const column = this.findObject(this.option.column, "householdId");
       if (["edit", "view"].includes(type)) {
         getDetail(this.form.id).then(res => {
           this.form = res.data.data
@@ -524,11 +525,12 @@
             id:this.form.householdId
           }
           getAllHouseHold(params).then(res=>{
-            const column = this.findObject(this.option.column, "householdId");
             column.dicData = res.data.data
           })
 
         })
+      }else{
+        column.dicData = []
       }
       this.initFlag = true
       done()
diff --git a/src/views/property/partyOrganization.vue b/src/views/property/partyOrganization.vue
index d5ace2d..4475df4 100644
--- a/src/views/property/partyOrganization.vue
+++ b/src/views/property/partyOrganization.vue
@@ -196,7 +196,6 @@
             },
             row:true
           },
-
           {
             label: "排序",
             prop: "sort",
diff --git a/src/views/property/propertyCharge.vue b/src/views/property/propertyCharge.vue
new file mode 100644
index 0000000..471017d
--- /dev/null
+++ b/src/views/property/propertyCharge.vue
@@ -0,0 +1,360 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form"
+               :permission="permissionList" @search-change="searchChange" @search-reset="searchReset"
+               @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
+               :before-open="beforeOpen"
+               @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+               @refresh-change="refreshChange" @on-load="onLoad">
+    </avue-crud>
+
+
+
+  </basic-container>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+import {getDetail,getList,add,update,remove} from "@/api/property/propertyCharge";
+import website from "@/config/website";
+import func from "@/util/func";
+import {validatePhone} from "@/util/validate";
+const searchSpan = 4
+const labelWidth=110
+export default {
+  name: "propertyCharge",
+  data () {
+    return {
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      datetime: "",
+      selectionList: [],
+      memberFlag: false,
+      option: {
+        // menu: false,
+        // addBtn: false,
+        border: true,
+        index: true,
+        selection: false,
+        height: "auto",
+        calcHeight: 54,
+        dialogWidth: 950,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 3,
+        //stripe:true,
+        viewBtn: true,
+        excelBtn: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "物业公司",
+            labelWidth:labelWidth,
+            prop: "propertyId",
+            checkStrictly: true,
+            dicUrl: "/api/blade-propertyCompany/propertyCompany/getPropertyCompanyList",
+            props: {
+              label: "name",
+              value: "deptId",
+            },
+            search:true,
+            disabled:false,
+            type: "select",
+            rules: [{
+              required: true,
+              message: "请选择物业公司",
+              trigger: ["blur","change"]
+            }, ],
+          },
+          {
+            label: "类型",
+            labelWidth:labelWidth,
+            prop: "payType",
+            checkStrictly: true,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=payType",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            rules: [{
+              required: true,
+              message: "请选择类型",
+              trigger: ["blur","change"]
+            }, ],
+          },
+
+          {
+            label: "收费项名称",
+            labelWidth:labelWidth,
+            prop: "name",
+            searchSpan: searchSpan,
+            searchLabelWidth: labelWidth,
+            search: true,
+            rules: [{
+              required: true,
+              message: "请输入收费项名称",
+              trigger: ["blur","change"]
+            },],
+          },
+          {
+            label: "计算方式",
+            labelWidth:labelWidth,
+            prop: "calculationFormula",
+            checkStrictly: true,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=payCalculationFormula",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            rules: [{
+              required: true,
+              message: "请选择计算方式",
+              trigger: ["blur","change"]
+            }, ],
+          },
+          {
+            label: "单价(元)",
+            labelWidth:labelWidth,
+            prop: "unitPrice",
+            type:'number',
+            precision:2,
+            rules: [{
+              required: true,
+              message: "请输入单价",
+              trigger: ["blur","change"]
+            }]
+          },
+          {
+            label: "缴费周期",
+            labelWidth:labelWidth,
+            placeholder:"几个月收费一次",
+            prop: "payPeriod",
+            checkStrictly: true,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=payPeriod",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            rules: [{
+              required: true,
+              message: "请选择缴费周期",
+              trigger: ["blur","change"]
+            }, ],
+          },
+
+        ],
+      },
+      data: [],
+    }
+  },
+  watch: {},
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList () {
+      return {
+        addBtn: this.vaildData(this.permission.gridWorkLog_add, true),
+        viewBtn: this.vaildData(this.permission.gridWorkLog_view, true),
+        delBtn: this.vaildData(this.permission.gridWorkLog_delete, true),
+        editBtn: this.vaildData(this.permission.gridWorkLog_edit, true),
+      }
+    },
+    ids () {
+      let ids = []
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id)
+      })
+      return ids.join(",")
+    },
+    textDispose () {
+      return (row, flag, type) => {
+        if (row[flag] || row[type] == null) {
+          return row[type]
+        } else {
+          if (type == 'idCard') {
+            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]
+    },
+    manageMember (row) {
+      this.memberFlag = true
+      var that = this
+      this.$nextTick(() => {
+        that.$refs.partyOrganizationMember.init(row)
+      })
+    },
+    rowSave (row, done, loading) {
+      add(row).then(
+        () => {
+          this.onLoad(this.page)
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          })
+          done()
+        },
+        (error) => {
+          window.console.log(error)
+          loading()
+        }
+      )
+    },
+    rowUpdate (row, index, done, loading) {
+      if (row.urls.length > 0) {
+        var urls = []
+        var split = row.urls.split(",")
+        split.forEach(url => {
+          var names = url.split("jczz/")
+          urls.push(names[1])
+        })
+        row.urls = urls.join(",")
+      }
+      update(row).then(
+        () => {
+          this.onLoad(this.page)
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          })
+          done()
+        },
+        (error) => {
+          window.console.log(error)
+          loading()
+        }
+      )
+    },
+    rowDel (row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(row.id)
+        })
+        .then(() => {
+          this.onLoad(this.page)
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          })
+        })
+    },
+    // handleDelete() {
+    //   if (this.selectionList.length === 0) {
+    //     this.$message.warning("请选择至少一条数据");
+    //     return;
+    //   }
+    //   this.$confirm("确定将选择数据删除?", {
+    //       confirmButtonText: "确定",
+    //       cancelButtonText: "取消",
+    //       type: "warning",
+    //     })
+    //     .then(() => {
+    //       return remove(this.ids);
+    //     })
+    //     .then(() => {
+    //       this.onLoad(this.page);
+    //       this.$message({
+    //         type: "success",
+    //         message: "操作成功!",
+    //       });
+    //       this.$refs.crud.toggleSelection();
+    //     });
+    // },
+    beforeOpen (done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data
+          const column = this.findObject(this.option.column, "principalId")
+          let arr = []
+          arr.push(this.form.areaId)
+          column.defaultExpandedKeys = arr
+        })
+      }
+
+      // //如果当前角色为物业管理员,则默认物业公司为该用户的物业公司
+      // if (this.userInfo.role_name.indexOf("wygly")>-1){
+      //   let column = this.findObject(this.option.column, "propertyId")
+      //   column.disabled = true
+      //   column.search = false
+      //   this.form.propertyId = this.userInfo.dept_id
+      // }
+
+      done()
+    },
+    searchReset () {
+      this.query = {}
+      this.onLoad(this.page)
+    },
+    searchChange (params, done) {
+      this.query = params
+      this.page.currentPage = 1
+      this.onLoad(this.page, params)
+      done()
+    },
+    selectionChange (list) {
+      this.selectionList = list
+    },
+    selectionClear () {
+      this.selectionList = []
+      this.$refs.crud.toggleSelection()
+    },
+
+    currentChange (currentPage) {
+      this.page.currentPage = currentPage
+    },
+    sizeChange (pageSize) {
+      this.page.pageSize = pageSize
+    },
+    refreshChange () {
+      this.onLoad(this.page, this.query)
+    },
+    onLoad (page, params = {}) {
+      this.loading = true
+
+      //如果当前角色为物业管理员,则默认筛选该物业公司
+      if (this.userInfo.role_name.indexOf("wygly")>-1){
+        let column = this.findObject(this.option.column, "propertyId")
+        column.disabled = true
+        column.search = false
+        this.form.propertyId = this.userInfo.dept_id
+
+        params.propertyId = this.userInfo.dept_id
+      }
+
+
+
+      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+        const data = res.data.data
+
+        this.page.total = data.total
+        this.data = data.records
+        this.loading = false
+        this.selectionClear()
+      })
+    }
+  },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/property/propertyChargeRecord.vue b/src/views/property/propertyChargeRecord.vue
new file mode 100644
index 0000000..4e78797
--- /dev/null
+++ b/src/views/property/propertyChargeRecord.vue
@@ -0,0 +1,337 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form"
+               :permission="permissionList" @search-change="searchChange" @search-reset="searchReset"
+               @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
+               :before-open="beforeOpen"
+               @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+               @refresh-change="refreshChange" @on-load="onLoad">
+    </avue-crud>
+
+
+
+  </basic-container>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+import {getDetail,getList,add,update,remove} from "@/api/property/propertyChargeRecord";
+import website from "@/config/website";
+import func from "@/util/func";
+import {validatePhone} from "@/util/validate";
+const searchSpan = 4
+const labelWidth=110
+export default {
+  name: "propertyChargeRecord",
+  data () {
+    return {
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      datetime: "",
+      selectionList: [],
+      memberFlag: false,
+      option: {
+        // menu: false,
+        // addBtn: false,
+        border: true,
+        index: true,
+        selection: false,
+        height: "auto",
+        calcHeight: 54,
+        dialogWidth: 950,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 3,
+        //stripe:true,
+        viewBtn: true,
+        excelBtn: true,
+        dialogClickModal: false,
+        addBtn:false,
+        editBtn:false,
+        column: [
+          {
+            label: "物业公司",
+            labelWidth:labelWidth,
+            prop: "propertyId",
+            checkStrictly: true,
+            dicUrl: "/api/blade-propertyCompany/propertyCompany/getPropertyCompanyList",
+            props: {
+              label: "name",
+              value: "deptId",
+            },
+            search:true,
+            disabled:false,
+            type: "select",
+            rules: [{
+              required: true,
+              message: "请选择物业公司",
+              trigger: ["blur","change"]
+            }, ],
+          },
+
+          {
+            label: "付款人",
+            labelWidth:labelWidth,
+            prop: "payUser",
+            searchSpan: searchSpan,
+            searchLabelWidth: labelWidth,
+            search: true,
+            rules: [{
+              required: true,
+              message: "请输入收费项名称",
+              trigger: ["blur","change"]
+            },],
+          },
+          {
+            label: "付款时间",
+            labelWidth:labelWidth,
+            prop: "payTime",
+            rules: [{
+              required: true,
+              message: "请选择计算方式",
+              trigger: ["blur","change"]
+            }, ],
+          },
+          {
+            label: "付款金额(元)",
+            labelWidth:labelWidth,
+            prop: "payPrice",
+            type:'number',
+            precision:2,
+            rules: [{
+              required: true,
+              message: "请输入单价",
+              trigger: ["blur","change"]
+            }]
+          },
+          {
+            label: "付款方式",
+            labelWidth:labelWidth,
+            prop: "payFunc",
+            checkStrictly: true,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=payPeriod",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            rules: [{
+              required: true,
+              message: "请选择缴费周期",
+              trigger: ["blur","change"]
+            }, ],
+          },
+
+        ],
+      },
+      data: [],
+    }
+  },
+  watch: {},
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList () {
+      return {
+        addBtn: this.vaildData(this.permission.gridWorkLog_add, true),
+        viewBtn: this.vaildData(this.permission.gridWorkLog_view, true),
+        delBtn: this.vaildData(this.permission.gridWorkLog_delete, true),
+        editBtn: this.vaildData(this.permission.gridWorkLog_edit, true),
+      }
+    },
+    ids () {
+      let ids = []
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id)
+      })
+      return ids.join(",")
+    },
+    textDispose () {
+      return (row, flag, type) => {
+        if (row[flag] || row[type] == null) {
+          return row[type]
+        } else {
+          if (type == 'idCard') {
+            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]
+    },
+    manageMember (row) {
+      this.memberFlag = true
+      var that = this
+      this.$nextTick(() => {
+        that.$refs.partyOrganizationMember.init(row)
+      })
+    },
+    rowSave (row, done, loading) {
+      add(row).then(
+        () => {
+          this.onLoad(this.page)
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          })
+          done()
+        },
+        (error) => {
+          window.console.log(error)
+          loading()
+        }
+      )
+    },
+    rowUpdate (row, index, done, loading) {
+      if (row.urls.length > 0) {
+        var urls = []
+        var split = row.urls.split(",")
+        split.forEach(url => {
+          var names = url.split("jczz/")
+          urls.push(names[1])
+        })
+        row.urls = urls.join(",")
+      }
+      update(row).then(
+        () => {
+          this.onLoad(this.page)
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          })
+          done()
+        },
+        (error) => {
+          window.console.log(error)
+          loading()
+        }
+      )
+    },
+    rowDel (row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(row.id)
+        })
+        .then(() => {
+          this.onLoad(this.page)
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          })
+        })
+    },
+    // handleDelete() {
+    //   if (this.selectionList.length === 0) {
+    //     this.$message.warning("请选择至少一条数据");
+    //     return;
+    //   }
+    //   this.$confirm("确定将选择数据删除?", {
+    //       confirmButtonText: "确定",
+    //       cancelButtonText: "取消",
+    //       type: "warning",
+    //     })
+    //     .then(() => {
+    //       return remove(this.ids);
+    //     })
+    //     .then(() => {
+    //       this.onLoad(this.page);
+    //       this.$message({
+    //         type: "success",
+    //         message: "操作成功!",
+    //       });
+    //       this.$refs.crud.toggleSelection();
+    //     });
+    // },
+    beforeOpen (done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data
+          const column = this.findObject(this.option.column, "principalId")
+          let arr = []
+          arr.push(this.form.areaId)
+          column.defaultExpandedKeys = arr
+        })
+      }
+
+      // //如果当前角色为物业管理员,则默认物业公司为该用户的物业公司
+      // if (this.userInfo.role_name.indexOf("wygly")>-1){
+      //   let column = this.findObject(this.option.column, "propertyId")
+      //   column.disabled = true
+      //   column.search = false
+      //   this.form.propertyId = this.userInfo.dept_id
+      // }
+
+      done()
+    },
+    searchReset () {
+      this.query = {}
+      this.onLoad(this.page)
+    },
+    searchChange (params, done) {
+      this.query = params
+      this.page.currentPage = 1
+      this.onLoad(this.page, params)
+      done()
+    },
+    selectionChange (list) {
+      this.selectionList = list
+    },
+    selectionClear () {
+      this.selectionList = []
+      this.$refs.crud.toggleSelection()
+    },
+
+    currentChange (currentPage) {
+      this.page.currentPage = currentPage
+    },
+    sizeChange (pageSize) {
+      this.page.pageSize = pageSize
+    },
+    refreshChange () {
+      this.onLoad(this.page, this.query)
+    },
+    onLoad (page, params = {}) {
+      this.loading = true
+
+      //如果当前角色为物业管理员,则默认筛选该物业公司
+      if (this.userInfo.role_name.indexOf("wygly")>-1){
+        let column = this.findObject(this.option.column, "propertyId")
+        column.disabled = true
+        column.search = false
+        this.form.propertyId = this.userInfo.dept_id
+
+        params.propertyId = this.userInfo.dept_id
+      }
+
+
+
+      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+        const data = res.data.data
+
+        this.page.total = data.total
+        this.data = data.records
+        this.loading = false
+        this.selectionClear()
+      })
+    }
+  },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/property/propertyCompany.vue b/src/views/property/propertyCompany.vue
index 5c657e8..c22a526 100644
--- a/src/views/property/propertyCompany.vue
+++ b/src/views/property/propertyCompany.vue
@@ -2,25 +2,73 @@
 <template>
   <basic-container>
     <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      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">
+               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="menuLeft">
         <el-button size="small" icon="el-icon-delete" plain v-if="permission.propertyCompany_delete"
-          @click="handleDelete">删 除
+                   @click="handleDelete">删 除
         </el-button>
       </template>
+
+      <template slot-scope="scope" slot="menu">
+        <el-button v-if="permission.payInfo" type="text" icon="el-icon-circle-plus-outline" size="small"
+                   @click="openPayConfig(scope.row)">商户配置
+        </el-button>
+      </template>
+
+
     </avue-crud>
+
+    <el-dialog title="商户配置" append-to-body :visible.sync="payInfoVisible" top="10vh" width="70%">
+      <el-tabs v-model="currentTab">
+        <el-tab-pane label="微信商户配置" name="wxInfo">
+          <avue-form ref="wxForm" :option="wxPayOption" v-model="wxPayForm" @submit="wxSubmit">
+          </avue-form>
+        </el-tab-pane>
+        <el-tab-pane label="支付宝商户配置" name="second">
+          <avue-form ref="aliForm" :option="aliPayOption" v-model="aliPayForm" @submit="aliSubmit">
+          </avue-form>
+        </el-tab-pane>
+
+      </el-tabs>
+
+      <!--      <div slot="footer" class="dialog-footer">-->
+      <!--        <el-button @click="payInfoVisible = false">取 消</el-button>-->
+      <!--        <el-button type="primary"@click="submit">提 交</el-button>-->
+      <!--      </div>-->
+
+    </el-dialog>
+
+
   </basic-container>
 </template>
 
 <script>
-import { getList, remove, update, add, getPropertyCompany } from "@/api/property/propertyCompany";
-import { mapGetters } from "vuex";
+import {
+  getList,
+  remove,
+  update,
+  add,
+  getPropertyCompany,
+  getPayConfig,
+  saveOrUpdateWx, saveOrUpdateAli
+} from "@/api/property/propertyCompany";
+import {mapGetters} from "vuex";
 import website from '@/config/website';
+import func from "@/util/func";
+
+const labelWidth = 120
 export default {
   data() {
     return {
+
+      currentTab: "wxInfo",
+      payInfoVisible: false,
+      currentRow: {},
+
       form: {},
       query: {},
       loading: true,
@@ -51,7 +99,7 @@
             prop: "name",
             searchSpan: 6,
             search: true,
-            searchLabelWidth:120,
+            searchLabelWidth: 120,
             span: 18,
             row: true,
             labelWidth: 120,
@@ -72,7 +120,7 @@
               label: 'name',
               value: 'code'
             },
-            hide:true,
+            hide: true,
             span: 6,
             labelWidth: 120,
             cascader: ['city'],
@@ -96,7 +144,7 @@
               label: 'name',
               value: 'code'
             },
-            hide:true,
+            hide: true,
             dicUrl: `/api/blade-system/region/select?code={{key}}`,
             rules: [
               {
@@ -116,7 +164,7 @@
               label: 'name',
               value: 'code'
             },
-            hide:true,
+            hide: true,
             dicUrl: `/api/blade-system/region/select?code={{key}}`,
             rules: [
               {
@@ -129,9 +177,9 @@
           {
             label: "地址",
             prop: "address",
-            span:18,
+            span: 18,
             labelWidth: 120,
-            row:true,
+            row: true,
           },
           {
             label: "社会信用代码",
@@ -158,10 +206,128 @@
         ],
       },
       data: [],
+
+      wxPayForm: {},
+      wxPayOption: {
+        emptyBtn: false,
+        height: "auto",
+        calcHeight: 180,
+        //stripe:true,
+        column: [
+          {
+            label: "appId",
+            labelWidth: labelWidth,
+            prop: "appId",
+            span: 24,
+            rules: [{
+              required: true,
+              message: "请输入appId",
+              trigger: ["blur", "change"]
+            },],
+          },
+          {
+            label: "mch-id",
+            labelWidth: labelWidth,
+            prop: "mchId",
+            span: 24,
+            rules: [{
+              required: true,
+              message: "请输入mch-id",
+              trigger: ["blur", "change"]
+            },],
+          },
+          {
+            label: "mchKey",
+            labelWidth: labelWidth,
+            prop: "mchKey",
+            rules: [{
+              required: true,
+              message: "请输入mchKey",
+              trigger: ["blur", "change"]
+            },],
+            span: 24,
+          },
+          {
+            label: "appSecret",
+            labelWidth: labelWidth,
+            prop: "appSecret",
+            rules: [{
+              required: true,
+              message: "请输入appSecret",
+              trigger: ["blur", "change"]
+            },],
+            span: 24,
+          },
+          {
+            label: '安全证书',
+            labelWidth: labelWidth,
+            prop: 'keyPath',
+            type: 'upload',
+            drag: true,
+            limit: 1,
+            loadText: '上传中,请稍等',
+            span: 24,
+            action: "/api/blade-resource/oss/endpoint/put-file",
+            propsHttp: {
+              res: "data",
+              name: 'name',
+              url: "link",
+            },
+            rules: [{
+              required: true,
+              message: "请上传安全证书",
+              trigger: ["blur", "change"]
+            },],
+          },
+        ],
+      },
+
+      aliPayForm: {},
+      aliPayOption: {
+        emptyBtn: false,
+        height: "auto",
+        calcHeight: 180,
+        //stripe:true,
+        column: [
+          {
+            label: "appId",
+            labelWidth: labelWidth,
+            prop: "appId",
+            span: 24,
+            rules: [{
+              required: true,
+              message: "请输入appId",
+              trigger: ["blur", "change"]
+            },],
+          },
+          {
+            label: "privateKey",
+            labelWidth: labelWidth,
+            prop: "privateKey",
+            span: 24,
+            rules: [{
+              required: true,
+              message: "请输入privateKey",
+              trigger: ["blur", "change"]
+            },],
+          },
+          {
+            label: "publicKey",
+            labelWidth: labelWidth,
+            prop: "publicKey",
+            span: 24,
+            rules: [{
+              required: true,
+              message: "请输入publicKey",
+              trigger: ["blur", "change"]
+            },],
+          },
+        ],
+      }
+
     };
   },
-  watch: {
-  },
+  watch: {},
   computed: {
     ...mapGetters(["permission", "userInfo"]),
     permissionList() {
@@ -180,7 +346,60 @@
       return ids.join(",");
     },
   },
+  created() {
+  },
   methods: {
+
+    aliSubmit(form, done) {
+
+      console.log("支付宝商户配置", this.aliPayForm)
+
+      this.aliPayForm.propertyCompanyId = this.currentRow.id
+      saveOrUpdateAli(this.aliPayForm).then(res => {
+        this.$message({
+          type: "success",
+          message: "操作成功!",
+        });
+        done();
+      })
+
+    },
+
+    wxSubmit(form, done) {
+      this.wxPayForm.propertyCompanyId = this.currentRow.id
+
+      this.wxPayForm.keyPath = func.join(this.wxPayForm.keyPath)
+      if (this.wxPayForm.keyPath.length > 0) {
+        var urls = []
+        var split = this.wxPayForm.keyPath.split(",")
+        split.forEach(url => {
+          var names = url.split("jczz/")
+          urls.push(names[1])
+        })
+        this.wxPayForm.keyPath = urls.join(",")
+      }
+
+      console.log("微信商户配置", this.wxPayForm)
+      saveOrUpdateWx(this.wxPayForm).then(res => {
+        this.$message({
+          type: "success",
+          message: "操作成功!",
+        });
+        done();
+      })
+    },
+
+    openPayConfig(row) {
+      this.currentRow = row
+      //调接口获取商户数据
+      getPayConfig(row.id).then(res => {
+        let data = res.data.data
+        this.wxPayForm = data.wxPayInfo ? data.wxPayInfo : {}
+        this.aliPayForm = data.aliPayInfo ? data.aliPayInfo : {}
+      })
+      this.payInfoVisible = !this.payInfoVisible
+    },
+
     rowSave(row, done, loading) {
       row.userid = this.userInfo.user_id;
       add(row).then(
@@ -289,7 +508,7 @@
       this.onLoad(this.page, this.query);
     },
     onLoad(page, params = {}) {
-      const { dateTime } = this.query;
+      const {dateTime} = this.query;
       let values = {
         ...params,
       };
diff --git a/src/views/task/reportForRepairs.vue b/src/views/task/reportForRepairs.vue
index bfe4493..12066c9 100644
--- a/src/views/task/reportForRepairs.vue
+++ b/src/views/task/reportForRepairs.vue
@@ -10,855 +10,882 @@
 -->
 <!-- 走访日志 -->
 <template>
-    <basic-container>
-        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-            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">
-                    {{ showConfirmFlag(row.confirmFlag).text }}
-                </el-tag>
-            </template>
+  <basic-container>
+    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+      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">
+          {{ showConfirmFlag(row.confirmFlag).text }}
+        </el-tag>
+      </template>
 
-            <template slot="expand" slot-scope="{row}">
-                <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">
-                        <el-card v-show="item.contentType == 1" :body-style="{ padding: '10px', background: '#f8f8f8' }">
-                            <div>
-                                评价:{{ item.content }}
-                            </div>
-                            <el-rate v-model="item.point" disabled :colors="colors">
-                            </el-rate>
-                        </el-card>
+      <template slot="expand" slot-scope="{row}">
+        <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">
+            <el-card v-show="item.contentType == 1" :body-style="{ padding: '10px', background: '#f8f8f8' }">
+              <div>
+                评价:{{ item.content }}
+              </div>
+              <el-rate v-model="item.point" disabled :colors="colors">
+              </el-rate>
+            </el-card>
 
-                        <el-card v-show="item.peopleType != 1 && item.contentType == 0"
-                            :body-style="{ padding: '10px', background: '#f8f8f8' }">
-                            <div>
-                                {{ item.name }} {{ item.mobile }}
-                            </div>
-                            <div>
-                                {{ item.content }}
-                            </div>
-                            <div v-show="item.imageList != '' && item.imageList != null">
-                                <el-image style="width: 100px; height: 100px" :src="showCurImage(item.imageList)"
-                                    :preview-src-list="showImageListData(item.imageList)">
-                                </el-image>
-                            </div>
-                        </el-card>
+            <el-card v-show="item.peopleType != 1 && item.contentType == 0"
+              :body-style="{ padding: '10px', background: '#f8f8f8' }">
+              <div>
+                {{ item.name }} {{ item.mobile }}
+              </div>
+              <div>
+                {{ item.content }}
+              </div>
+              <div v-show="item.imageList != '' && item.imageList != null">
+                <el-image style="width: 100px; height: 100px" :src="showCurImage(item.imageList)"
+                  :preview-src-list="showImageListData(item.imageList)">
+                </el-image>
+              </div>
+            </el-card>
 
-                        <el-card v-show="item.peopleType == 1 && item.contentType == 0"
-                            :body-style="{ padding: '10px', background: '#f8f8f8' }">
-                            <span style="color: rgb(204, 204, 204);">系统:{{ item.content || '959999' }}</span>
-                        </el-card>
+            <el-card v-show="item.peopleType == 1 && item.contentType == 0"
+              :body-style="{ padding: '10px', background: '#f8f8f8' }">
+              <span style="color: rgb(204, 204, 204);">系统:{{ item.content || '959999' }}</span>
+            </el-card>
 
-                        <span v-show="item.contentType == 3">结束</span>
-                    </el-timeline-item>
+            <span v-show="item.contentType == 3">结束</span>
+          </el-timeline-item>
 
 
-                    <!-- <el-timeline-item timestamp="2018/4/12" placement="top">
+          <!-- <el-timeline-item timestamp="2018/4/12" placement="top">
                         <el-card>
                             <h4>更新 Github 模板</h4>
                             <p>王小虎 提交于 2018/4/12 20:46</p>
                         </el-card>
                     </el-timeline-item> -->
-                </el-timeline>
-            </template>
+        </el-timeline>
+      </template>
 
-            <template slot-scope="scope" slot="menu">
-                <el-button v-if="permission.report_for_repairs_details" size="small" type="text"
-                    icon="el-icon-document-remove" @click="rowExpansion(scope.row)">
-                    详情
-                </el-button>
+      <template slot-scope="scope" slot="menu">
+        <el-button v-if="permission.report_for_repairs_details" size="small" type="text" icon="el-icon-document-remove"
+          @click="rowExpansion(scope.row)">
+          详情
+        </el-button>
 
-                <el-button v-if="permission.report_for_repairs_reply" size="small" type="text"
-                    icon="el-icon-chat-dot-square" :disabled="scope.row.confirmFlag === 3"
-                    @click="replyBtnClick(scope.row)">
-                    回复
-                </el-button>
+        <el-button v-if="permission.report_for_repairs_reply" size="small" type="text" icon="el-icon-chat-dot-square"
+          :disabled="scope.row.confirmFlag === 3" @click="replyBtnClick(scope.row)">
+          回复
+        </el-button>
 
-                <el-button v-if="permission.report_for_repairs_turn_over" size="small" type="text"
-                    icon="el-icon-document-copy" :disabled="scope.row.confirmFlag === 3"
-                    @click="turnOverBtnClick(scope.row)">
-                    移交
-                </el-button>
+        <el-button v-if="permission.report_for_repairs_turn_over" size="small" type="text" icon="el-icon-document-copy"
+          :disabled="scope.row.confirmFlag === 3" @click="turnOverBtnClick(scope.row)">
+          移交
+        </el-button>
 
-                <el-button v-if="permission.report_for_repairs_del" size="small" type="text" icon="el-icon-delete"
-                    @click="rowDel(scope.row)">
-                    删除
-                </el-button>
-            </template>
+        <el-button v-if="permission.report_for_repairs_del" size="small" type="text" icon="el-icon-delete"
+          @click="rowDel(scope.row)">
+          删除
+        </el-button>
+      </template>
 
-            <template slot="menuLeft">
-                <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
-                    除
-                </el-button>
-            </template>
-        </avue-crud>
+      <template slot="menuLeft">
+        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
+          除
+        </el-button>
+      </template>
+    </avue-crud>
 
-        <el-dialog title="回复" append-to-body :visible.sync="replyPopup" center @close="popupClose">
-            <avue-form ref="replyForm" :option="replyOption" v-model="replyForm" @submit="handleSubmit"
-                @reset-change="handleReset">
-                <template slot-scope="{row}" slot="videoList">
-                    <el-upload class="video-uploader" action="/api/blade-resource/oss/endpoint/put-file"
-                        :file-list="fileList" :headers="updateHeader" :show-file-list="true" :limit="1" :on-change="getFile"
-                        :on-exceed="handleExceed" :on-success="uploadVideoProcess" :before-upload="beforeUploadVideo"
-                        :before-remove="beforeRemove">
-                        <el-button size="small" type="primary">点击上传</el-button>
-                        <div slot="tip" class="el-upload__tip">上传视频只能是 mp4 格式,且大小不能超过 50MB</div>
-                    </el-upload>
-                </template>
-            </avue-form>
-        </el-dialog>
+    <el-dialog title="回复" append-to-body :visible.sync="replyPopup" center @close="popupClose">
+      <avue-form ref="replyForm" :option="replyOption" v-model="replyForm" @submit="handleSubmit"
+        @reset-change="handleReset">
+        <template slot-scope="{row}" slot="videoList">
+          <el-upload class="video-uploader" action="/api/blade-resource/oss/endpoint/put-file" :file-list="fileList"
+            :headers="updateHeader" :show-file-list="true" :limit="1" :on-change="getFile" :on-exceed="handleExceed"
+            :on-success="uploadVideoProcess" :before-upload="beforeUploadVideo" :before-remove="beforeRemove">
+            <el-button size="small" type="primary">点击上传</el-button>
+            <div slot="tip" class="el-upload__tip">上传视频只能是 mp4 格式,且大小不能超过 50MB</div>
+          </el-upload>
+        </template>
+      </avue-form>
+    </el-dialog>
 
-        <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>
-    </basic-container>
+    <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>
+  </basic-container>
 </template>
 
 <script>
-import {
+  import {
     getList,
     remove,
     update,
     add,
     getReportForRepairs,
     saveReply
-} from "@/api/task/reportForRepairs"
-import {
+  } from "@/api/task/reportForRepairs"
+  import {
     mapGetters
-} from "vuex"
-import website from '@/config/website'
-import {
+  } from "vuex"
+  import website from '@/config/website'
+  import {
     Base64
-} from 'js-base64'
-import {
+  } from 'js-base64'
+  import {
     getToken
-} from '@/util/auth'
+  } from '@/util/auth'
 
-export default {
-    data () {
-        let validatorPhone = function (rule, value, callback) {
-            if (value) {
-                if (!/^1[3456789]\d{9}$/.test(value)) {
-                    callback(new Error('手机号格式有误!'))
-                } else {
-                    callback()
-                }
-            }
+  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: {},
-            query: {},
-            loading: true,
-            page: {
-                pageSize: 10,
-                currentPage: 1,
-                total: 0,
+      return {
+        colors: ['#99A9BF', '#F7BA2A', '#FF9900'],
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0,
+        },
+        datetime: "",
+        selectionList: [],
+        option: {
+          viewBtn: false,
+          editBtn: false,
+          delBtn: false,
+          index: false,
+          selection: false,
+          expand: true,
+          height: "auto",
+          calcHeight: 54,
+          dialogWidth: 950,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 3,
+          menuWidth: 272,
+          border: true,
+          //stripe:true,
+          // excelBtn: true,
+          dialogClickModal: false,
+          column: [{
+              width: 96,
+              label: "类型",
+              prop: "type",
+              span: 12,
+              searchSpan: 4,
+              dataType: "number",
+              type: "select",
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType",
+              props: {
+                label: "dictValue",
+                value: "dictKey",
+              },
+              search: true,
             },
-            datetime: "",
-            selectionList: [],
-            option: {
-                viewBtn: false,
-                editBtn: false,
-                delBtn: false,
-                index: false,
-                selection: false,
-                expand: true,
-                height: "auto",
-                calcHeight: 54,
-                dialogWidth: 950,
-                tip: false,
-                searchShow: true,
-                searchMenuSpan: 3,
-                menuWidth: 272,
-                border: true,
-                //stripe:true,
-                // excelBtn: true,
-                dialogClickModal: false,
-                column: [
-                    {
-                        width: 96,
-                        label: "类型",
-                        prop: "type",
-                        span: 12,
-                        searchSpan: 4,
-                        dataType: "number",
-                        type: "select",
-                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType",
-                        props: {
-                            label: "dictValue",
-                            value: "dictKey",
-                        },
-                        search: true,
-                    },
-                    {
-                        width: 96,
-                        label: "姓名",
-                        prop: "realName",
-                        span: 12,
-                        searchSpan: 4,
-                        search: true,
-                    },
-
-                    {
-                        width: 96,
-                        label: "手机号码",
-                        prop: "phone",
-                        search: true,
-                        searchSpan: 3,
-                        slot: true,
-                        rules: [
-                            {
-                                validator: validatorPhone,
-                                trigger: 'blur'
-                            }
-                        ],
-                    },
-
-                    {
-                        width: 110,
-                        label: "图片",
-                        prop: "imageUrls",
-                        type: "upload",
-                        listType: "picture-card",
-                        dataType: "string",
-                        multiple: true,
-                        action: "/api/blade-resource/oss/endpoint/put-file",
-                        propsHttp: {
-                            res: "data",
-                            name: 'name',
-                            url: "link",
-                        },
-                        span: 24,
-                    },
-                    {
-                        label: "地点",
-                        prop: "addressName",
-                        overHidden: true
-                    },
-                    {
-                        width: 100,
-                        addDisplay: false,
-                        editDisplay: false,
-                        slot: true,
-                        label: "状态",
-                        prop: "confirmFlag",
-                        overHidden: true
-                    },
-                    {
-                        label: "上报时间",
-                        prop: "createTime",
-                        width: 160,
-                        addDisplay: false,
-                        editDisplay: false,
-                        type: "date",
-                        format: "yyyy-MM-dd HH:mm:ss",
-                        valueFormat: "yyyy-MM-dd HH:mm:ss",
-                    },
-                    {
-                        label: "处理时间",
-                        prop: "confirmTime",
-                        width: 160,
-                        addDisplay: false,
-                        editDisplay: false,
-                        type: "date",
-                        format: "yyyy-MM-dd HH:mm:ss",
-                        valueFormat: "yyyy-MM-dd HH:mm:ss",
-                    },
-                    {
-                        label: "描述",
-                        prop: "remark",
-                        type: "textarea",
-                        hide: true,
-                        span: 24,
-                    }
-                ],
+            {
+              width: 96,
+              label: "姓名",
+              prop: "realName",
+              span: 12,
+              searchSpan: 4,
+              search: true,
             },
-            data: [],
 
-            replyPopup: false,
-            replyForm: {},
-            replyOption: {
-                submitBtn: true,
-                submitText: '确定',
-                emptyBtn: true,
-                emptyText: '取消',
+            {
+              width: 96,
+              label: "手机号码",
+              prop: "phone",
+              search: true,
+              searchSpan: 3,
+              slot: true,
+              rules: [{
+                validator: validatorPhone,
+                trigger: 'blur'
+              }],
+            },
 
-                column: [{
-                    span: 24,
-                    label: "说明",
-                    prop: "content",
-                    type: 'textarea',
-                    minRows: 3,
-                    maxRows: 5,
-                    rules: [{
-                        required: true,
-                        message: "请输入说明",
-                        trigger: "blur",
-                    }],
-                },
+            {
+              width: 110,
+              label: "图片",
+              prop: "imageUrls",
+              type: "upload",
+              listType: "picture-card",
+              dataType: "string",
+              multiple: true,
+              action: "/api/blade-resource/oss/endpoint/put-file",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+            },
+            {
+              label: "地点",
+              prop: "addressName",
+              overHidden: true
+            },
+            {
+              width: 100,
+              addDisplay: false,
+              editDisplay: false,
+              slot: true,
+              label: "状态",
+              prop: "confirmFlag",
+              overHidden: true
+            },
+            {
+              label: "上报时间",
+              prop: "createTime",
+              width: 160,
+              addDisplay: false,
+              editDisplay: false,
+              type: "date",
+              format: "yyyy-MM-dd HH:mm:ss",
+              valueFormat: "yyyy-MM-dd HH:mm:ss",
+            },
+            {
+              label: "处理时间",
+              prop: "confirmTime",
+              width: 160,
+              addDisplay: false,
+              editDisplay: false,
+              type: "date",
+              format: "yyyy-MM-dd HH:mm:ss",
+              valueFormat: "yyyy-MM-dd HH:mm:ss",
+            },
+            {
+              label: "描述",
+              prop: "remark",
+              type: "textarea",
+              hide: true,
+              span: 24,
+            }
+          ],
+        },
+        data: [],
 
-                {
-                    label: '处理状态',
-                    prop: 'confirmFlag',
-                    type: 'select',
-                    dicData: [{
-                        label: '待处理',
-                        value: 1
-                    }, {
-                        label: '处理中',
-                        value: 2
-                    }, {
-                        label: '已处理',
-                        value: 3
-                    }],
-                    rules: [{
-                        required: true,
-                        message: "请选择处理状态",
-                        trigger: "blur",
-                    }],
-                },
+        replyPopup: false,
+        replyForm: {},
+        replyOption: {
+          submitBtn: true,
+          submitText: '确定',
+          emptyBtn: true,
+          emptyText: '取消',
 
-                {
-                    width: 110,
-                    fileType: 'img',
-                    label: "图片",
-                    prop: "imageList",
-                    type: "upload",
-                    listType: "picture-card",
-                    dataType: "string",
-                    multiple: true,
-                    action: "/api/blade-resource/oss/endpoint/put-file",
-                    propsHttp: {
-                        res: "data",
-                        name: 'name',
-                        url: "link",
-                    },
-                    span: 24,
-                },
+          column: [{
+              span: 24,
+              label: "说明",
+              prop: "content",
+              type: 'textarea',
+              minRows: 3,
+              maxRows: 5,
+              rules: [{
+                required: true,
+                message: "请输入说明",
+                trigger: "blur",
+              }],
+            },
 
-                {
-                    slot: true,
-                    label: "视频",
-                    prop: "videoList",
-                    span: 24,
+            {
+              label: '处理状态',
+              prop: 'confirmFlag',
+              type: 'select',
+              dicData: [{
+                label: '待处理',
+                value: 1
+              }, {
+                label: '处理中',
+                value: 2
+              }, {
+                label: '已处理',
+                value: 3
+              }],
+              rules: [{
+                required: true,
+                message: "请选择处理状态",
+                trigger: "blur",
+              }],
+            },
+
+            {
+              width: 110,
+              fileType: 'img',
+              label: "图片",
+              prop: "imageList",
+              type: "upload",
+              listType: "picture-card",
+              dataType: "string",
+              multiple: true,
+              action: "/api/blade-resource/oss/endpoint/put-file",
+              propsHttp: {
+                res: "data",
+                name: 'name',
+                url: "link",
+              },
+              span: 24,
+            },
+
+            {
+              slot: true,
+              label: "视频",
+              prop: "videoList",
+              span: 24,
+            }
+          ]
+        },
+
+        turnOverPopup: false,
+        turnOverForm: {},
+        turnOverOption: {
+          submitBtn: true,
+          submitText: '确定',
+          emptyBtn: true,
+          emptyText: '取消',
+
+          column: [
+            // {
+            //     hide: true,
+            //     span: 14,
+            //     label: "地址",
+            //     prop: "addressCode",
+            // },
+
+            {
+              span: 24,
+              label: "人员类型",
+              prop: "peopleType",
+              type: 'select',
+              dicData: [{
+                label: '网格员',
+                value: 0
+              }, {
+                label: '物业公司人员',
+                value: 2
+              }],
+              cascader: ["transferUserId"],
+              rules: [{
+                required: true,
+                message: "请选择人员类型",
+                trigger: "blur",
+              }],
+            },
+
+            {
+              span: 24,
+              label: "指定人员",
+              prop: "transferUserId",
+              type: 'select',
+              dicUrl: `/api/blade-system/user/getUserInfoByCode?houseCode={{addressCode}}&type={{peopleType}}`,
+              props: {
+                label: "name",
+                value: "id",
+              },
+              change: ({
+                value,
+                column,
+                item,
+                dic
+              }) => {
+                this.curPeopleDetails = {}
+
+                if (value) {
+                  this.curPeopleDetails = item
                 }
-                ]
+              },
+              rules: [{
+                required: true,
+                message: "请选择指定人员",
+                trigger: "blur",
+              }],
             },
+          ]
+        },
 
-            turnOverPopup: false,
-            turnOverForm: {},
-            turnOverOption: {
-                submitBtn: true,
-                submitText: '确定',
-                emptyBtn: true,
-                emptyText: '取消',
+        curRow: {},
 
-                column: [
-                    // {
-                    //     hide: true,
-                    //     span: 14,
-                    //     label: "地址",
-                    //     prop: "addressCode",
-                    // },
+        fileList: [],
+        updateHeader: {
+          Authorization: `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`,
+          'Blade-Auth': getToken()
+        },
 
-                    {
-                        span: 24,
-                        label: "人员类型",
-                        prop: "peopleType",
-                        type: 'select',
-                        dicData: [{
-                            label: '网格员',
-                            value: 0
-                        }, {
-                            label: '物业公司人员',
-                            value: 2
-                        }],
-                        cascader: ["transferUserId"],
-                        rules: [{
-                            required: true,
-                            message: "请选择人员类型",
-                            trigger: "blur",
-                        }],
-                    },
+        curPeopleDetails: {},
 
-                    {
-                        span: 24,
-                        label: "指定人员",
-                        prop: "transferUserId",
-                        type: 'select',
-                        dicUrl: `/api/blade-system/user/getUserInfoByCode?houseCode={{addressCode}}&type={{peopleType}}`,
-                        props: {
-                            label: "name",
-                            value: "id",
-                        },
-                        change: ({
-                            value,
-                            column,
-                            item,
-                            dic
-                        }) => {
-                            this.curPeopleDetails = {}
-
-                            if (value) {
-                                this.curPeopleDetails = item
-                            }
-                        },
-                        rules: [{
-                            required: true,
-                            message: "请选择指定人员",
-                            trigger: "blur",
-                        }],
-                    },
-                ]
-            },
-
-            curRow: {},
-
-            fileList: [],
-            updateHeader: {
-                Authorization: `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`,
-                'Blade-Auth': getToken()
-            },
-
-            curPeopleDetails: {},
-
-            videoFlag: false,
-            videoUploadPercent: ''
-        }
+        videoFlag: false,
+        videoUploadPercent: ''
+      }
     },
     watch: {},
     computed: {
-        ...mapGetters(["permission", "userInfo"]),
-        permissionList () {
-            return {
-                addBtn: this.vaildData(this.permission.reportForRepairs_add, true),
-                viewBtn: this.vaildData(this.permission.reportForRepairs_view, true),
-                delBtn: this.vaildData(this.permission.reportForRepairs_delete, true),
-                editBtn: this.vaildData(this.permission.reportForRepairs_edit, true),
-            }
-        },
-
-        ids () {
-            let ids = []
-            this.selectionList.forEach((ele) => {
-                ids.push(ele.id)
-            })
-            return ids.join(",")
-        },
-
-        timeLineData () {
-            return (row) => {
-                let imageList = row.imageUrls
-
-                if (row.taskRepairAppraiseList.length) {
-                    return [{
-                        createTime: row.createTime,
-                        mobile: row.phone,
-                        name: row.realName,
-                        imageList,
-                        content: row.remark,
-                        color: '#1890ff',
-                        contentType: 0,
-                    },
-                    ...row.taskRepairStepList.map((item, index) => {
-                        if (index == 0) {
-                            return {
-                                ...item,
-                                contentType: 0,
-                            }
-                        }
-                        return {
-                            ...item,
-                            contentType: 0
-                        }
-                    }),
-                    ...row.taskRepairAppraiseList.map(item => {
-                        return {
-                            ...item,
-                            contentType: 1
-                        }
-                    }),
-                    {
-                        contentType: 3,
-                        createTime: '',
-                        icon: 'el-icon-check',
-                        color: '#0bbd87'
-                    }
-                    ]
-                } else {
-                    return [{
-                        createTime: row.createTime,
-                        mobile: row.phone,
-                        name: row.realName,
-                        imageList,
-                        content: row.remark,
-                        color: '#1890ff',
-                        contentType: 0,
-                    },
-                    ...row.taskRepairStepList.map((item, index) => {
-                        if (index == 0) {
-                            return {
-                                ...item,
-                                contentType: 0,
-                            }
-                        }
-                        return {
-                            ...item,
-                            contentType: 0
-                        }
-                    })
-                    ]
-                }
-            }
-        },
-
-        showCurImage () {
-            return (data) => {
-                if (data != null && data.length > 0) {
-                    return data.split(',').filter(item => item != '')[0]
-                }
-                return ''
-            }
-        },
-
-        showImageListData () {
-            return (data) => {
-                if (data != null && data.length > 0) {
-                    return data.split(',').filter(item => item != '')
-                }
-                return []
-            }
-        },
-
-        showConfirmFlag () {
-            return (data) => {
-                let tags = {}
-
-                if (data == 1) {
-                    tags = {
-                        type: 'warning',
-                        text: '待处理'
-                    }
-                } else if (data == 2) {
-                    tags = {
-                        type: '',
-                        text: '处理中'
-                    }
-                } else if (data == 3) {
-                    tags = {
-                        type: 'success',
-                        text: '已处理'
-                    }
-                } else if (data == 4) {
-                    tags = {
-                        type: 'success',
-                        text: '已评价'
-                    }
-                }
-
-                return tags
-            }
+      ...mapGetters(["permission", "userInfo"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.reportForRepairs_add, true),
+          viewBtn: this.vaildData(this.permission.reportForRepairs_view, true),
+          delBtn: this.vaildData(this.permission.reportForRepairs_delete, true),
+          editBtn: this.vaildData(this.permission.reportForRepairs_edit, true),
         }
+      },
+
+      ids() {
+        let ids = []
+        this.selectionList.forEach((ele) => {
+          ids.push(ele.id)
+        })
+        return ids.join(",")
+      },
+
+      timeLineData() {
+        return (row) => {
+          let imageList = row.imageUrls
+
+          if (row.taskRepairAppraiseList.length) {
+            return [{
+                createTime: row.createTime,
+                mobile: row.phone,
+                name: row.realName,
+                imageList,
+                content: row.remark,
+                color: '#1890ff',
+                contentType: 0,
+              },
+              ...row.taskRepairStepList.map((item, index) => {
+                if (index == 0) {
+                  return {
+                    ...item,
+                    contentType: 0,
+                  }
+                }
+                return {
+                  ...item,
+                  contentType: 0
+                }
+              }),
+              ...row.taskRepairAppraiseList.map(item => {
+                return {
+                  ...item,
+                  contentType: 1
+                }
+              }),
+              {
+                contentType: 3,
+                createTime: '',
+                icon: 'el-icon-check',
+                color: '#0bbd87'
+              }
+            ]
+          } else {
+            return [{
+                createTime: row.createTime,
+                mobile: row.phone,
+                name: row.realName,
+                imageList,
+                content: row.remark,
+                color: '#1890ff',
+                contentType: 0,
+              },
+              ...row.taskRepairStepList.map((item, index) => {
+                if (index == 0) {
+                  return {
+                    ...item,
+                    contentType: 0,
+                  }
+                }
+                return {
+                  ...item,
+                  contentType: 0
+                }
+              })
+            ]
+          }
+        }
+      },
+
+      showCurImage() {
+        return (data) => {
+          if (data != null && data.length > 0) {
+            return data.split(',').filter(item => item != '')[0]
+          }
+          return ''
+        }
+      },
+
+      showImageListData() {
+        return (data) => {
+          if (data != null && data.length > 0) {
+            return data.split(',').filter(item => item != '')
+          }
+          return []
+        }
+      },
+
+      showConfirmFlag() {
+        return (data) => {
+          let tags = {}
+
+          if (data == 1) {
+            tags = {
+              type: 'warning',
+              text: '待处理'
+            }
+          } else if (data == 2) {
+            tags = {
+              type: '',
+              text: '处理中'
+            }
+          } else if (data == 3) {
+            tags = {
+              type: 'success',
+              text: '已处理'
+            }
+          } else if (data == 4) {
+            tags = {
+              type: 'success',
+              text: '已评价'
+            }
+          }
+
+          return tags
+        }
+      }
     },
     methods: {
-        rowExpansion (row) {
-            this.$refs.crud.toggleRowExpansion(row)
-        },
+      rowExpansion(row) {
+        this.$refs.crud.toggleRowExpansion(row)
+      },
 
-        popupClose () {
-            this.$refs.replyForm && this.$refs.replyForm.resetForm()
-            this.$refs.turnOverForm && this.$refs.turnOverForm.resetForm()
-        },
+      popupClose() {
+        this.$refs.replyForm && this.$refs.replyForm.resetForm()
+        this.$refs.turnOverForm && this.$refs.turnOverForm.resetForm()
+      },
 
-        saveReply (data, done) {
-            saveReply(data).then(
-                () => {
-                    this.replyPopup = false
-                    this.turnOverPopup = false
-                    this.onLoad(this.page)
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!",
-                    })
-                    done()
-                },
-                (error) => {
-                    window.console.log(error)
-                }
-            )
-        },
-
-        handleSubmit (form, done) {
-            this.saveReply({
-                ...form,
-                videoList: this.fileList.map(item => item.response.data.link).join(','),
-                repairId: this.curRow.id,
-                peopleType: 0,
-                mobile: this.userInfo.phone
-            }, done)
-        },
-
-        handleReset () {
-            this.fileList = []
+      saveReply(data, done) {
+        saveReply(data).then(
+          () => {
             this.replyPopup = false
-        },
-
-        turnOverHandleSubmit (form, done) {
-            let content = ''
-
-            if (form.peopleType == 0) {
-                content = `事件已移交至 网格员 ${this.curPeopleDetails.name}`
-            } else if (form.peopleType == 2) {
-                content = `事件已移交至 物业公司人员 ${this.curPeopleDetails.distictName || ''}${this.curPeopleDetails.name}`
-            }
-
-            this.saveReply({
-                ...form,
-                confirmFlag: 1,
-                content,
-                peopleType: 1,
-                repairId: this.curRow.id,
-            }, done)
-        },
-
-        turnOverHandleReset () {
             this.turnOverPopup = false
-        },
-
-        //移除
-        beforeRemove (file, fileList) {
-            return this.$confirm(`确定移除 ${file.name}?`).then(() => {
-                this.fileList = fileList
-            })
-        },
-
-        //上传
-        getFile (file, fileList) {
-            this.fileList = fileList
-        },
-
-        beforeUploadVideo (file) {
-            const isLt50M = file.size / 1024 / 1024 < 50
-            if (['video/mp4'].indexOf(file.type) == -1) {
-                this.$message.error('上传视频只能是 mp4 格式!')
-                return false
-            }
-            if (!isLt50M) {
-                this.$message.error('上传视频大小不能超过 50MB!')
-                return false
-            }
-            return true
-        },
-
-        handleExceed (files, fileList) {
-            this.$message.warning("目前只能上传一个视频文件")
-        },
-
-        uploadVideoProcess (event, file, fileList) {
-            console.log(event, file, fileList, this.fileList)
-        },
-
-        replyBtnClick (row) {
-            this.curRow = row
-            this.replyForm = {}
-            this.replyPopup = true
-        },
-
-        turnOverBtnClick (row) {
-            this.curRow = row
-            this.turnOverForm = {
-                addressCode: row.addressCode
-            }
-            this.turnOverPopup = true
-        },
-
-        rowSave (row, done, loading) {
-            if (row.imageUrls.length > 0) {
-                var urls = []
-                var split = row.imageUrls.split(",")
-                split.forEach(url => {
-                    var names = url.split("jczz/")
-                    urls.push(names[1])
-                })
-                row.imageUrls = urls.join(",")
-            }
-            add(row).then(
-                () => {
-                    this.onLoad(this.page)
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!",
-                    })
-                    done()
-                },
-                (error) => {
-                    window.console.log(error)
-                    loading()
-                }
-            )
-        },
-        rowUpdate (row, index, done, loading) {
-            if (row.imageUrls.length > 0) {
-                var urls = []
-                var split = row.imageUrls.split(",")
-                split.forEach(url => {
-                    var names = url.split("jczz/")
-                    urls.push(names[1])
-                })
-                row.imageUrls = urls.join(",")
-            }
-            update(row).then(
-                () => {
-                    this.onLoad(this.page)
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!",
-                    })
-                    done()
-                },
-                (error) => {
-                    window.console.log(error)
-                    loading()
-                }
-            )
-        },
-        rowDel (row) {
-            this.$confirm("确定将选择数据删除?", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning",
-            })
-                .then(() => {
-                    return remove(row.id)
-                })
-                .then(() => {
-                    this.onLoad(this.page)
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!",
-                    })
-                })
-        },
-        searchReset () {
-            this.query = {}
             this.onLoad(this.page)
-        },
-        searchChange (params, done) {
-            this.query = params
-            this.page.currentPage = 1
-            this.onLoad(this.page, params)
-            done()
-        },
-        selectionChange (list) {
-            this.selectionList = list
-        },
-        selectionClear () {
-            this.selectionList = []
-            this.$refs.crud.toggleSelection()
-        },
-        handleDelete () {
-            if (this.selectionList.length === 0) {
-                this.$message.warning("请选择至少一条数据")
-                return
-            }
-            this.$confirm("确定将选择数据删除?", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning",
+            this.$message({
+              type: "success",
+              message: "操作成功!",
             })
-                .then(() => {
-                    return remove(this.ids)
-                })
-                .then(() => {
-                    this.onLoad(this.page)
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!",
-                    })
-                    this.$refs.crud.toggleSelection()
-                })
-        },
-        beforeOpen (done, type) {
-            if (["edit", "view"].includes(type)) {
-                getReportForRepairs(this.form.id).then((res) => {
-                    this.form = res.data.data
-                    if (this.form.imageUrls) {
-                        if (this.form.imageUrls.length > 0) {
-                            var urls = []
-                            var names = this.form.imageUrls.split(",")
-                            names.forEach(name => {
-                                urls.push(website.minioUrl + name)
-                            })
-                            this.form.imageUrls = urls.join(",")
-                        }
-                    }
-                })
-            }
+            done()
+          },
+          (error) => {
+            window.console.log(error)
+          }
+        )
+      },
 
-            done()
-        },
-        currentChange (currentPage) {
-            this.page.currentPage = currentPage
-        },
-        sizeChange (pageSize) {
-            this.page.pageSize = pageSize
-        },
-        refreshChange () {
-            this.onLoad(this.page, this.query)
-        },
-        onLoad (page, params = {}) {
-            const {
-                dateTime
-            } = this.query
-            let values = {
-                ...params,
-            }
-            if (dateTime) {
-                values = {
-                    ...params,
-                    startTime: dateTime[0],
-                    endTime: dateTime[1],
-                    ...this.query,
-                }
-                values.dateTime = null
-            }
-            this.loading = true
-            getList(page.currentPage, page.pageSize, values).then((res) => {
-                const data = res.data.data
-                this.page.total = data.total
-                this.data = data.records
-                this.data.forEach(item => {
-                    if (item.imageUrls) {
-                        if (item.imageUrls.length > 0) {
-                            var urls = []
-                            var names = item.imageUrls.split(",")
-                            names.forEach(name => {
-                                urls.push(website.minioUrl + name)
-                            })
-                            item.imageUrls = urls.join(",")
-                        }
-                    }
-                })
-                this.loading = false
-                this.selectionClear()
-            })
+      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(','),
+          repairId: this.curRow.id,
+          peopleType: 0,
+          mobile: this.userInfo.phone
+        }, done)
+      },
+
+      handleReset() {
+        this.fileList = []
+        this.replyPopup = false
+      },
+
+      turnOverHandleSubmit(form, done) {
+        let content = ''
+
+        if (form.peopleType == 0) {
+          content = `事件已移交至 网格员 ${this.curPeopleDetails.name}`
+        } else if (form.peopleType == 2) {
+          content = `事件已移交至 物业公司人员 ${this.curPeopleDetails.distictName || ''}${this.curPeopleDetails.name}`
+        }
+
+        this.saveReply({
+          ...form,
+          confirmFlag: 1,
+          content,
+          peopleType: 1,
+          repairId: this.curRow.id,
+        }, done)
+      },
+
+      turnOverHandleReset() {
+        this.turnOverPopup = false
+      },
+
+      //移除
+      beforeRemove(file, fileList) {
+        return this.$confirm(`确定移除 ${file.name}?`).then(() => {
+          this.fileList = fileList
+        })
+      },
+
+      //上传
+      getFile(file, fileList) {
+        this.fileList = fileList
+      },
+
+      beforeUploadVideo(file) {
+        const isLt50M = file.size / 1024 / 1024 < 50
+        if (['video/mp4'].indexOf(file.type) == -1) {
+          this.$message.error('上传视频只能是 mp4 格式!')
+          return false
+        }
+        if (!isLt50M) {
+          this.$message.error('上传视频大小不能超过 50MB!')
+          return false
+        }
+        return true
+      },
+
+      handleExceed(files, fileList) {
+        this.$message.warning("目前只能上传一个视频文件")
+      },
+
+      uploadVideoProcess(event, file, fileList) {
+        console.log(event, file, fileList, this.fileList)
+      },
+
+      replyBtnClick(row) {
+        this.curRow = row
+        this.replyForm = {}
+        this.replyPopup = true
+      },
+
+      turnOverBtnClick(row) {
+        this.curRow = row
+        this.turnOverForm = {
+          addressCode: row.addressCode
+        }
+        this.turnOverPopup = true
+      },
+
+      rowSave(row, done, loading) {
+        if (row.imageUrls.length > 0) {
+          var urls = []
+          var split = row.imageUrls.split(",")
+          split.forEach(url => {
+            var names = url.split("jczz/")
+            urls.push(names[1])
+          })
+          row.imageUrls = urls.join(",")
+        }
+        add(row).then(
+          () => {
+            this.onLoad(this.page)
+            this.$message({
+              type: "success",
+              message: "操作成功!",
+            })
+            done()
+          },
+          (error) => {
+            window.console.log(error)
+            loading()
+          }
+        )
+      },
+      rowUpdate(row, index, done, loading) {
+        if (row.imageUrls.length > 0) {
+          var urls = []
+          var split = row.imageUrls.split(",")
+          split.forEach(url => {
+            var names = url.split("jczz/")
+            urls.push(names[1])
+          })
+          row.imageUrls = urls.join(",")
+        }
+        update(row).then(
+          () => {
+            this.onLoad(this.page)
+            this.$message({
+              type: "success",
+              message: "操作成功!",
+            })
+            done()
+          },
+          (error) => {
+            window.console.log(error)
+            loading()
+          }
+        )
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          })
+          .then(() => {
+            return remove(row.id)
+          })
+          .then(() => {
+            this.onLoad(this.page)
+            this.$message({
+              type: "success",
+              message: "操作成功!",
+            })
+          })
+      },
+      searchReset() {
+        this.query = {}
+        this.onLoad(this.page)
+      },
+      searchChange(params, done) {
+        this.query = params
+        this.page.currentPage = 1
+        this.onLoad(this.page, params)
+        done()
+      },
+      selectionChange(list) {
+        this.selectionList = list
+      },
+      selectionClear() {
+        this.selectionList = []
+        this.$refs.crud.toggleSelection()
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据")
+          return
+        }
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          })
+          .then(() => {
+            return remove(this.ids)
+          })
+          .then(() => {
+            this.onLoad(this.page)
+            this.$message({
+              type: "success",
+              message: "操作成功!",
+            })
+            this.$refs.crud.toggleSelection()
+          })
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getReportForRepairs(this.form.id).then((res) => {
+            this.form = res.data.data
+            if (this.form.imageUrls) {
+              if (this.form.imageUrls.length > 0) {
+                var urls = []
+                var names = this.form.imageUrls.split(",")
+                names.forEach(name => {
+                  urls.push(website.minioUrl + name)
+                })
+                this.form.imageUrls = urls.join(",")
+              }
+            }
+          })
+        }
+
+        done()
+      },
+      currentChange(currentPage) {
+        this.page.currentPage = currentPage
+      },
+      sizeChange(pageSize) {
+        this.page.pageSize = pageSize
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query)
+      },
+      onLoad(page, params = {}) {
+        const {
+          dateTime
+        } = this.query
+        let values = {
+          ...params,
+        }
+        if (dateTime) {
+          values = {
+            ...params,
+            startTime: dateTime[0],
+            endTime: dateTime[1],
+            ...this.query,
+          }
+          values.dateTime = null
+        }
+        this.loading = true
+        getList(page.currentPage, page.pageSize, values).then((res) => {
+          const data = res.data.data
+          this.page.total = data.total
+          this.data = data.records
+          this.data.forEach(item => {
+            if (item.imageUrls) {
+              if (item.imageUrls.length > 0) {
+                var urls = []
+                var names = item.imageUrls.split(",")
+                names.forEach(name => {
+                  urls.push(website.minioUrl + name)
+                })
+                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()
+        })
+      }
     },
-}
+  }
 </script>
 
 <style>
-.avue-upload__icon {
+  .avue-upload__icon {
     line-height: 6;
-}
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3