修复小区背景颜色,巡检点顺序一致,投诉处理按钮
This commit is contained in:
@@ -84,6 +84,7 @@
|
||||
list-type="picture-card"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-remove="handleRemove"
|
||||
:before-upload="handleChangeFile"
|
||||
>
|
||||
<el-icon><Plus /></el-icon>
|
||||
</el-upload>
|
||||
@@ -108,7 +109,7 @@ import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { hasFormData } from '@/utils/house';
|
||||
import Holder from '@/components/Holder/index.vue';
|
||||
import { UploadProps, UploadUserFile } from 'element-plus';
|
||||
import { UploadFiles, UploadProps, UploadRawFile, UploadUserFile } from 'element-plus';
|
||||
import { addRepair, getRepair, updateRepair, uploadRepairImages } from '@/api/system/Repair';
|
||||
import { gettreelistRepairProject } from '@/api/system/RepairProject';
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
@@ -201,6 +202,15 @@ const dialogVisible = ref(false);
|
||||
const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
|
||||
console.log(uploadFile, uploadFiles);
|
||||
};
|
||||
const blockedExts = ['.exe', '.bat', '.cmd', '.msi'];
|
||||
const handleChangeFile: UploadProps['beforeUpload'] = (rawFile: UploadRawFile) => {
|
||||
const ext = rawFile.name.toLowerCase().slice(rawFile.name.lastIndexOf('.'));
|
||||
if (blockedExts.includes(ext)) {
|
||||
ElMessage.warning(`禁止上传 ${ext} 文件`);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
|
||||
dialogImageUrl.value = uploadFile.url!;
|
||||
|
||||
@@ -49,9 +49,14 @@
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="报修房屋" align="center" show-overflow-tooltip prop="houseName" />
|
||||
<el-table-column label="维修项目" align="center" prop="maintenanceItemName" />
|
||||
<el-table-column label="标题" align="center" prop="item" />
|
||||
<el-table-column label="问题描述" align="center" prop="problem" />
|
||||
<el-table-column label="报修人" width="100" align="center" prop="residentName" />
|
||||
<el-table-column label="联系电话" width="120" align="center" prop="phone" />
|
||||
<el-table-column label="维修人员" width="100" align="center" prop="repairName">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.repairName ?? '---' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="预约日期" align="center" prop="orderDate" width="150">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.orderDate, '{y}-{m}-{d}') }}</span>
|
||||
@@ -62,7 +67,6 @@
|
||||
<dict-tag :options="com_repair_status" :value="scope.row.problemStatus || ''"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleShare(scope.row)" v-has-permi="['repair:repair:query']">{{
|
||||
@@ -91,11 +95,11 @@ import { checkPermi } from '@/utils/permission';
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_repair_status } = toRefs<any>(proxy?.useDict('com_repair_status'));
|
||||
|
||||
interface repairlistType extends RepairVO {
|
||||
interface repairListType extends RepairVO {
|
||||
maintenanceItemPath?: string;
|
||||
residentName: string;
|
||||
}
|
||||
const repairList = ref<repairlistType[]>([]);
|
||||
const repairList = ref<repairListType[]>([]);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
@@ -147,7 +151,7 @@ const data = reactive<PageData<RepairForm, RepairQuery>>({
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const { queryParams } = toRefs(data);
|
||||
|
||||
// != 维修项目u ===========================================================================
|
||||
|
||||
@@ -193,7 +197,7 @@ const handleAdd = () => {
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: RepairVO) => {
|
||||
const handleUpdate = (row?: RepairVO) => {
|
||||
const _id = row?.id || ids.value[0];
|
||||
router.push({
|
||||
path: '/repair/editRepair',
|
||||
@@ -203,7 +207,7 @@ const handleUpdate = async (row?: RepairVO) => {
|
||||
});
|
||||
};
|
||||
/** 分配人员 */
|
||||
const handleShare = (row) => {
|
||||
const handleShare = (row: { id: string }) => {
|
||||
const _id = row?.id || ids.value[0];
|
||||
router.push({
|
||||
path: '/repair/repairMain',
|
||||
|
||||
@@ -15,56 +15,64 @@
|
||||
</template>
|
||||
<div class="w-full h-full CarInfoBox">
|
||||
<el-row class="mb-20px">
|
||||
<el-col :span="10">
|
||||
<el-col :span="8">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">报修房屋</div>
|
||||
<div class="label">报修房屋:</div>
|
||||
<div class="main">{{ form.houseName }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="4"></el-col>
|
||||
<el-col :span="10">
|
||||
<el-col :span="8">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">维修项目</div>
|
||||
<div class="label">维修项目:</div>
|
||||
<div class="main">{{ form.maintenanceItemName }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">问题描述:</div>
|
||||
<div class="main">{{ form.problem }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row class="mb-20px">
|
||||
<el-col :span="10">
|
||||
<el-col :span="8">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">报修人</div>
|
||||
<div class="label">报修人:</div>
|
||||
<div class="main">{{ form.residentName }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="4"></el-col>
|
||||
<el-col :span="10">
|
||||
<el-col :span="8">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">手机号码</div>
|
||||
<div class="label">手机号码:</div>
|
||||
<div class="main">{{ form.phone }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="mb-20px">
|
||||
<el-col>
|
||||
<el-col :span="8">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">预约日期</div>
|
||||
<div class="label">预约日期:</div>
|
||||
<div class="main">{{ form.orderDate }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="mb-20px">
|
||||
<el-col>
|
||||
<!-- <el-col :span="8">-->
|
||||
<!-- <div class="carInfo_Item">-->
|
||||
<!-- <div class="label">提交人:</div>-->
|
||||
<!-- <div class="main">{{ form.problem }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="8">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">问题描述</div>
|
||||
<div class="main">{{ form.problem }}</div>
|
||||
<div class="label">提交时间:</div>
|
||||
<div class="main">{{ form.createTime }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-if="form.problemImageUrl.trim() === ''">
|
||||
<el-col :span="24">
|
||||
<div class="carInfo_Item">
|
||||
<div class="label">附件</div>
|
||||
<div class="label">附件:</div>
|
||||
<div class="main fileImagebox">
|
||||
<el-image
|
||||
:preview-teleported="true"
|
||||
@@ -115,31 +123,37 @@
|
||||
</div>
|
||||
</template>
|
||||
<div class="h-full w-full">
|
||||
<el-steps space="108px" direction="vertical" :active="activeStop">
|
||||
<el-step>
|
||||
<template #title>
|
||||
<span>已提交维护信息</span>
|
||||
</template>
|
||||
<template #description> {{ reviewInfo.submitTime ?? '' }} </template>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<template #title>
|
||||
<span>{{ reviewInfo.allocateStatus === '0' ? '待分配' : '已分配' }} </span>
|
||||
</template>
|
||||
<template #description>{{ reviewInfo.allocateTime ?? '等待物业派单中' }} </template>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<template #title>
|
||||
<span>{{ reviewInfo.completeStatus === '0' ? '待维修' : '已维修' }} </span>
|
||||
</template>
|
||||
<template #description> {{ reviewInfo.completeTime ?? '维修人员进行维修' }}</template>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<template #title>
|
||||
<span>完成维修 </span>
|
||||
</template>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
<!-- <el-steps space="108px" direction="vertical" :active="activeStop">-->
|
||||
<!-- <el-step>-->
|
||||
<!-- <template #title>-->
|
||||
<!-- <span>完成维修 </span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-step>-->
|
||||
<!-- <el-step>-->
|
||||
<!-- <template #title>-->
|
||||
<!-- <span>{{ reviewInfo.completeStatus === '0' ? '待维修' : '已维修' }} </span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template #description> {{ reviewInfo.completeTime ?? '维修人员进行维修' }}</template>-->
|
||||
<!-- </el-step>-->
|
||||
<!-- <el-step>-->
|
||||
<!-- <template #title>-->
|
||||
<!-- <span>{{ reviewInfo.allocateStatus === '0' ? '待分配' : '已分配' }} </span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template #description>{{ reviewInfo.allocateTime ?? '等待物业派单中' }} </template>-->
|
||||
<!-- </el-step>-->
|
||||
<!-- <el-step>-->
|
||||
<!-- <template #title>-->
|
||||
<!-- <span>已提交维护信息</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template #description> {{ reviewInfo.submitTime ?? '' }} </template>-->
|
||||
<!-- </el-step>-->
|
||||
<!-- </el-steps>-->
|
||||
|
||||
<StepTimeline :steps="stepList">
|
||||
<template #title="{ item }">{{ item.title }}</template>
|
||||
<template #subtitle="{ item }">{{ item.subtitle }}</template>
|
||||
<template #time="{ item }">{{ item.time }}</template>
|
||||
</StepTimeline>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
@@ -149,6 +163,7 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import StepTimeline, { StepItem } from '@/components/StepTimeline/index.vue';
|
||||
import repairUser from '@/components/Holder/repairUser.vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { getRepair, updateRepair } from '@/api/system/Repair';
|
||||
@@ -165,7 +180,12 @@ const activeStop = ref(0);
|
||||
interface formType extends RepairVO {
|
||||
problemImageUrlList: string[];
|
||||
}
|
||||
|
||||
const stepList = ref<StepItem[]>([
|
||||
{ status: 'completed', title: '提交维修信息', subtitle: '等待提交', time: '', wrap: false },
|
||||
{ status: 'pending', title: '待分配', subtitle: '等待物业派单中', time: '', wrap: true },
|
||||
{ status: 'waiting', title: '维修', subtitle: '等待维修人员维修', time: '', wrap: false },
|
||||
{ status: 'waiting', title: '完成维修', subtitle: '等待填写维修记录', time: '', wrap: false }
|
||||
]);
|
||||
const form = ref<formType>({
|
||||
'id': '',
|
||||
'houseId': '',
|
||||
@@ -239,19 +259,32 @@ async function init() {
|
||||
function handleReview() {
|
||||
if (reviewInfo.value.submitStatus === '1') {
|
||||
// 提交完成
|
||||
active.value = 1;
|
||||
activeStop.value = 1;
|
||||
stepList.value[0].status = 'completed';
|
||||
stepList.value[0].subtitle = '提交成功';
|
||||
stepList.value[1].status = 'pending';
|
||||
stepList.value[1].subtitle = '等待物业派单中';
|
||||
stepList.value[0].time = reviewInfo.value.submitTime;
|
||||
|
||||
if (reviewInfo.value.allocateStatus === '1') {
|
||||
// 分配完成
|
||||
active.value = 2;
|
||||
activeStop.value = 2;
|
||||
stepList.value[1].status = 'completed';
|
||||
stepList.value[1].title = '已分配';
|
||||
stepList.value[1].subtitle = `${form.value.repairName ?? '---'} ${form.value.repairPhone ?? '---'}`;
|
||||
stepList.value[1].time = reviewInfo.value.allocateTime;
|
||||
|
||||
stepList.value[2].status = 'pending';
|
||||
stepList.value[2].subtitle = '等待维修人员维修';
|
||||
// 维修完成
|
||||
if (reviewInfo.value.completeStatus === '1') {
|
||||
active.value = 4;
|
||||
activeStop.value = 4;
|
||||
stepList.value[2].time = reviewInfo.value.completeTime;
|
||||
stepList.value[2].status = 'completed';
|
||||
stepList.value[2].subtitle = '维修完成';
|
||||
stepList.value[3].status = 'completed';
|
||||
stepList.value[3].subtitle = '填写维修记录';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
stepList.value[0].status = 'waiting';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +293,7 @@ if (route.query.id) {
|
||||
init();
|
||||
}
|
||||
|
||||
/** 派单 ╬>*/
|
||||
/** 派单 */
|
||||
function handleSend() {
|
||||
// 已分配
|
||||
form.value.problemStatus = '1';
|
||||
|
||||
Reference in New Issue
Block a user