From d16d10d94fddff86bdfd87113e7fd2cebe8b7cd7 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 24 Jan 2024 18:15:06 +0800
Subject: [PATCH] 居民监管样式调整
---
src/views/task/reportForRepairs.vue | 438 +++++++++++++++++++++++++++++++++++------------------
1 files changed, 287 insertions(+), 151 deletions(-)
diff --git a/src/views/task/reportForRepairs.vue b/src/views/task/reportForRepairs.vue
index adf1441..de0c335 100644
--- a/src/views/task/reportForRepairs.vue
+++ b/src/views/task/reportForRepairs.vue
@@ -2,11 +2,11 @@
* @Author: shuishen 1109946754@qq.com
* @Date: 2023-12-14 17:10:00
* @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-12-29 09:55:49
+ * @LastEditTime: 2024-01-09 18:59:37
* @FilePath: \jczz_web\src\views\task\reportForRepairs.vue
- * @Description:
- *
- * Copyright (c) 2023 by shuishen, All Rights Reserved.
+ * @Description:
+ *
+ * Copyright (c) 2023 by shuishen, All Rights Reserved.
-->
<!-- 走访日志 -->
<template>
@@ -16,7 +16,13 @@
: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="expand" slot-scope="{row}">
+ <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, 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">
@@ -61,13 +67,25 @@
</el-timeline>
</template>
- <template slot-scope="scope" slot="menu">
- <el-button type="text" icon="el-icon-chat-dot-square" @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" @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>
@@ -93,7 +111,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>
@@ -109,13 +128,30 @@
getReportForRepairs,
saveReply
} from "@/api/task/reportForRepairs"
-import { mapGetters } from "vuex"
+import {
+ mapGetters
+} from "vuex"
import website from '@/config/website'
-import { Base64 } from 'js-base64'
-import { getToken } from '@/util/auth'
+import {
+ Base64
+} from 'js-base64'
+import {
+ getToken
+} 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()
+ }
+ }
+ callback()
+ }
+
return {
colors: ['#99A9BF', '#F7BA2A', '#FF9900'],
form: {},
@@ -129,6 +165,15 @@
datetime: "",
selectionList: [],
option: {
+ labelWidth: 96,
+ searchLabelWidth: 96,
+ searchShow: true,
+ searchMenuSpan: 3,
+ menuWidth: 280,
+
+ viewBtn: false,
+ editBtn: false,
+ delBtn: false,
index: false,
selection: false,
expand: true,
@@ -136,50 +181,54 @@
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: 66,
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",
@@ -193,14 +242,33 @@
span: 24,
},
{
+ overHidden: true,
label: "地点",
prop: "addressName",
+ },
+ {
+ width: 100,
+ label: "状态",
+ addDisplay: false,
+ editDisplay: false,
+ slot: true,
+ prop: "confirmFlag",
overHidden: true
},
{
+ width: 144,
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",
+ },
+ {
+ width: 144,
+ label: "处理时间",
+ prop: "confirmTime",
addDisplay: false,
editDisplay: false,
type: "date",
@@ -226,68 +294,65 @@
emptyBtn: true,
emptyText: '取消',
- column: [
- {
- span: 24,
- label: "说明",
- prop: "content",
- type: 'textarea',
- minRows: 3,
- maxRows: 5,
- rules: [{
- required: true,
- message: "请输入说明",
- trigger: "blur",
- }],
- },
+ column: [{
+ span: 24,
+ label: "说明",
+ prop: "content",
+ type: 'textarea',
+ minRows: 3,
+ maxRows: 5,
+ rules: [{
+ required: true,
+ message: "请输入说明",
+ trigger: "blur",
+ }],
+ },
- {
- label: '处理状态',
- prop: 'confirmFlag',
- type: 'select',
- dicData: [
- {
- label: '待处理',
- value: 1
- }, {
- label: '处理中',
- value: 2
- }, {
- label: '已处理',
- value: 3
- }
- ],
- rules: [{
- required: true,
- message: "请选择处理状态",
- trigger: "blur",
- }],
- },
+ {
+ label: '处理状态',
+ prop: 'confirmFlag',
+ type: 'select',
+ dicData: [{
+ label: '待处理',
+ value: 1
+ }, {
+ label: '处理中',
+ value: 2
+ }, {
+ label: '已处理',
+ value: 3
+ }],
+ rules: [{
+ required: true,
+ message: "请选择处理状态",
+ trigger: "blur",
+ }],
+ },
- {
- fileType: 'img',
- label: "图片",
- prop: "imageList",
- width: 80,
- 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,
+ {
+ 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,
- }
+ {
+ slot: true,
+ label: "视频",
+ prop: "videoList",
+ span: 24,
+ }
]
},
@@ -308,20 +373,18 @@
// },
{
- span: 14,
+ span: 24,
label: "人员类型",
prop: "peopleType",
type: 'select',
- dicData: [
- {
- label: '网格员',
- value: 0
- }, {
- label: '物业公司人员',
- value: 2
- }
- ],
- cascader: ["transferUserld"],
+ dicData: [{
+ label: '网格员',
+ value: 0
+ }, {
+ label: '物业公司人员',
+ value: 2
+ }],
+ cascader: ["transferUserId"],
rules: [{
required: true,
message: "请选择人员类型",
@@ -330,16 +393,21 @@
},
{
- span: 14,
+ span: 24,
label: "指定人员",
- prop: "transferUserld",
+ prop: "transferUserId",
type: 'select',
dicUrl: `/api/blade-system/user/getUserInfoByCode?houseCode={{addressCode}}&type={{peopleType}}`,
props: {
label: "name",
value: "id",
},
- change: ({ value, column, item, dic }) => {
+ change: ({
+ value,
+ column,
+ item,
+ dic
+ }) => {
this.curPeopleDetails = {}
if (value) {
@@ -369,8 +437,7 @@
videoUploadPercent: ''
}
},
- watch: {
- },
+ watch: {},
computed: {
...mapGetters(["permission", "userInfo"]),
permissionList () {
@@ -381,6 +448,7 @@
editBtn: this.vaildData(this.permission.reportForRepairs_edit, true),
}
},
+
ids () {
let ids = []
this.selectionList.forEach((ele) => {
@@ -394,64 +462,62 @@
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 [{
+ 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
+ contentType: 0,
}
- }),
- ...row.taskRepairAppraiseList.map(item => {
- return {
- ...item,
- contentType: 1
- }
- }),
- {
- contentType: 3,
- createTime: '',
- icon: 'el-icon-check',
- color: '#0bbd87'
}
+ 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 [{
+ 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
+ contentType: 0,
}
- })
+ }
+ return {
+ ...item,
+ contentType: 0
+ }
+ })
]
}
}
@@ -473,9 +539,43 @@
}
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)
+ },
+
popupClose () {
this.$refs.replyForm && this.$refs.replyForm.resetForm()
this.$refs.turnOverForm && this.$refs.turnOverForm.resetForm()
@@ -500,6 +600,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(','),
@@ -518,7 +638,7 @@
let content = ''
if (form.peopleType == 0) {
- content = `事件已移交至 网格员 李伟`
+ content = `事件已移交至 网格员 ${this.curPeopleDetails.name}`
} else if (form.peopleType == 2) {
content = `事件已移交至 物业公司人员 ${this.curPeopleDetails.distictName || ''}${this.curPeopleDetails.name}`
}
@@ -718,7 +838,9 @@
this.onLoad(this.page, this.query)
},
onLoad (page, params = {}) {
- const { dateTime } = this.query
+ const {
+ dateTime
+ } = this.query
let values = {
...params,
}
@@ -747,6 +869,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()
@@ -760,4 +896,4 @@
.avue-upload__icon {
line-height: 6;
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3