feat: 完成售后投诉流程全链路优化与功能完善
本次提交完成了多项核心优化与功能新增: 1. 重构投诉受理流程状态,移除冗余的执行反馈阶段,简化为4个流程节点 2. 新增售后单关联客户、下游用户、工程信息等扩展字段,完善基础信息采集 3. 新增部门结构化意见表单与预览组件,优化部门意见填写与展示流程 4. 新增售后意见汇总页面,支持流程阶段筛选与详情查看 5. 优化合同列表页面,新增重置筛选按钮与默认备注逻辑 6. 新增PDF导出功能,完善钢卷信息展示列 7. 修复逻辑删除级联问题,新增任务过滤逻辑保障数据一致性
This commit is contained in:
@@ -73,6 +73,10 @@
|
||||
<BasicInfoSection :data="acceptDetail" />
|
||||
</template>
|
||||
|
||||
<template #flow-overview>
|
||||
<FlowOverviewSection :flowStatus="acceptDetail.flowStatus" />
|
||||
</template>
|
||||
|
||||
<template #contract-info>
|
||||
<ContractInfoSection :coilList="dialogCoilList" />
|
||||
</template>
|
||||
@@ -80,20 +84,27 @@
|
||||
|
||||
<el-divider />
|
||||
|
||||
<FlowOverviewSection :flowStatus="acceptDetail.flowStatus" />
|
||||
|
||||
<CoilInfoSection :coilList="dialogCoilList" :loading="coilLoading" :editable="false" />
|
||||
|
||||
<div v-if="currentTask.taskStatus === 1 && opinionForm.deptOpinion" class="section-gap" />
|
||||
<div v-if="currentTask.taskStatus === 1 && opinionForm.deptOpinion" class="opinion-preview-wrapper">
|
||||
<div class="section-title">
|
||||
<span>已提交意见 <span class="en-sub">· Submitted Opinion</span></span>
|
||||
</div>
|
||||
<DeptOpinionPreview :deptId="currentTask.deptId" :jsonData="opinionForm.deptOpinion" />
|
||||
<div v-if="opinionForm.fillFile" class="opinion-file" style="margin-top:8px;">
|
||||
<FileList :ossIds="opinionForm.fillFile" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="isEditable" class="section-gap" />
|
||||
<div v-if="isEditable" class="opinion-form-wrapper">
|
||||
<div class="opinion-form-section">
|
||||
<div class="section-title">
|
||||
<span>填写处理意见 <span class="en-sub">· Fill in Opinion</span></span>
|
||||
<span>{{ currentTask.taskStatus === 1 ? '修改处理意见' : '填写处理意见' }} <span class="en-sub">· {{ currentTask.taskStatus === 1 ? 'Edit Opinion' : 'Fill in Opinion' }}</span></span>
|
||||
</div>
|
||||
<el-form ref="opinionForm" :model="opinionForm" label-width="100px">
|
||||
<el-form-item label="处理意见" prop="deptOpinion">
|
||||
<editor v-model="opinionForm.deptOpinion" :min-height="200" />
|
||||
</el-form-item>
|
||||
<DeptOpinionForm :deptId="currentTask.deptId" :jsonData="opinionForm.deptOpinion" @input="val => opinionForm.deptOpinion = val" />
|
||||
<el-form-item label="意见文件">
|
||||
<file-upload v-model="opinionForm.fillFile" />
|
||||
</el-form-item>
|
||||
@@ -121,10 +132,13 @@ import BasicInfoSection from "./components/BasicInfoSection.vue";
|
||||
import CoilInfoSection from "./components/CoilInfoSection.vue";
|
||||
import ContractInfoSection from "./components/ContractInfoSection.vue";
|
||||
import FlowOverviewSection from "./components/FlowOverviewSection.vue";
|
||||
import DeptOpinionForm from "./components/DeptOpinionForm.vue";
|
||||
import DeptOpinionPreview from "./components/DeptOpinionPreview.vue";
|
||||
import FileList from "@/components/FileList/index.vue";
|
||||
|
||||
export default {
|
||||
name: "AftermarketOpinion",
|
||||
components: { DragResizePanel, HeaderControlSection, BasicInfoSection, CoilInfoSection, ContractInfoSection, FlowOverviewSection },
|
||||
components: { DragResizePanel, HeaderControlSection, BasicInfoSection, CoilInfoSection, ContractInfoSection, FlowOverviewSection, DeptOpinionForm, DeptOpinionPreview, FileList },
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
@@ -212,7 +226,7 @@ export default {
|
||||
},
|
||||
canEdit(row) {
|
||||
const status = (row.acceptInfo || {}).flowStatus;
|
||||
return (status === 2 || status === 3) && row.taskStatus === 0;
|
||||
return status === 2;
|
||||
},
|
||||
confirmCancel() {
|
||||
this.$modal.confirm('确认取消?已填写的内容将不会保存。').then(() => {
|
||||
@@ -235,7 +249,14 @@ export default {
|
||||
}).catch(() => { }).finally(() => { this.rejectLoading = false; });
|
||||
},
|
||||
submitOpinion() {
|
||||
if (!this.opinionForm.deptOpinion) {
|
||||
try {
|
||||
const data = JSON.parse(this.opinionForm.deptOpinion || '{}');
|
||||
const hasContent = Object.values(data).some(v => v);
|
||||
if (!hasContent) {
|
||||
this.$modal.msgWarning("请至少填写一项处理意见");
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
this.$modal.msgWarning("请填写处理意见");
|
||||
return;
|
||||
}
|
||||
@@ -457,6 +478,10 @@ export default {
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
.opinion-preview-wrapper {
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
.opinion-form-section {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user