feat(crm): 更新合同状态和异议处理表单字段

refactor(contract): 修改合同状态显示文本为"已取消"和"已结清"
feat(objection): 添加产品类别、反馈日期、投诉情况和客户诉求字段
style(objection): 调整异议处理表单和表格的布局与样式
This commit is contained in:
2026-05-09 18:32:12 +08:00
parent 69df4c8922
commit 9ce0066cff
3 changed files with 108 additions and 30 deletions

View File

@@ -27,11 +27,14 @@
<el-table v-loading="loading" :data="salesObjectionList" @selection-change="handleSelectionChange">
<el-table-column label="编号" align="center" prop="objectionCode" />
<!-- <el-table-column label="异议类型" align="center" prop="objectionType" /> -->
<el-table-column label="异议内容" align="center" prop="objectionContent" show-overflow-tooltip>
<el-table-column label="产品类别" align="center" prop="productCategory" />
<el-table-column label="反馈日期" align="center" prop="returnDate" width="180">
<template slot-scope="scope">
<div class="cell-html" v-html="scope.row.objectionContent"></div>
<span>{{ parseTime(scope.row.returnDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="投诉情况" align="center" prop="complaintContent" show-overflow-tooltip></el-table-column>
<el-table-column label="客户诉求" align="center" prop="customerDemand" show-overflow-tooltip></el-table-column>
<el-table-column label="状态" align="center" prop="objectionStatus">
<template slot-scope="scope">
<el-tag v-if="scope.row.objectionStatus === 0" type="danger">待处理</el-tag>
@@ -83,8 +86,32 @@
<el-form-item label="异议编号" prop="objectionCode">
<el-input v-model="form.objectionCode" placeholder="请输入异议编号" />
</el-form-item>
<el-form-item label="异议内容">
<editor v-model="form.objectionContent" :min-height="192" />
<el-form-item label="产品类别" prop="productCategory">
<el-input v-model="form.productCategory" placeholder="请输入产品类别" />
</el-form-item>
<el-form-item label="反馈日期" prop="returnDate">
<el-date-picker clearable
v-model="form.returnDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择反馈日期">
</el-date-picker>
</el-form-item>
<el-form-item label="投诉情况">
<el-input
v-model="form.complaintContent"
type="textarea"
:rows="4"
placeholder="请输入投诉情况"
></el-input>
</el-form-item>
<el-form-item label="客户诉求">
<el-input
v-model="form.customerDemand"
type="textarea"
:rows="4"
placeholder="请输入客户诉求"
></el-input>
</el-form-item>
<!-- <el-form-item label="处理内容">
<editor v-model="form.handleContent" :min-height="192"/>
@@ -144,11 +171,12 @@
<el-dialog title="查看处理结果" :visible.sync="viewOpen" width="700px" append-to-body>
<el-descriptions :column="2" :data="viewForm" label-width="80px" border>
<el-descriptions-item label="异议编号" :span="2">{{ viewForm.objectionCode }}</el-descriptions-item>
<el-descriptions-item label="异议内容" :span="2">
<div v-html="viewForm.objectionContent"></div>
</el-descriptions-item>
<el-descriptions-item label="产品类别">{{ viewForm.productCategory }}</el-descriptions-item>
<el-descriptions-item label="反馈日期">{{ parseTime(viewForm.returnDate, '{y}-{m}-{d}') }}</el-descriptions-item>
<el-descriptions-item label="投诉情况" :span="2">{{ viewForm.complaintContent }}</el-descriptions-item>
<el-descriptions-item label="客户诉求" :span="2">{{ viewForm.customerDemand }}</el-descriptions-item>
<el-descriptions-item label="处理人">{{ viewForm.handleUser }}</el-descriptions-item>
<el-descriptions-item label="处理时间">{{ viewForm.handleTime }}</el-descriptions-item>
<el-descriptions-item label="处理时间">{{ parseTime(viewForm.handleTime, '{y}-{m}-{d}') }}</el-descriptions-item>
<el-descriptions-item label="处理内容" :span="2">
<div v-html="viewForm.handleContent"></div>
</el-descriptions-item>
@@ -223,9 +251,11 @@ export default {
pageSize: 10,
objectionCode: undefined,
orderId: this.orderId,
customerId: this.customerId,
productCategory: undefined,
returnDate: undefined,
complaintContent: undefined,
customerDemand: undefined,
objectionType: undefined,
objectionContent: undefined,
objectionStatus: undefined,
handleContent: undefined,
handleUser: undefined,
@@ -270,9 +300,11 @@ export default {
objectionId: undefined,
objectionCode: undefined,
orderId: this.orderId,
customerId: this.customerId,
productCategory: undefined,
returnDate: undefined,
complaintContent: undefined,
customerDemand: undefined,
objectionType: 0,
objectionContent: undefined,
objectionStatus: undefined,
handleContent: undefined,
handleUser: undefined,

View File

@@ -6,15 +6,15 @@
<el-select v-hasPermi="['crm:contract:status']" v-model="contract.status" placeholder="请选择合同状态" style="width: 150px;" @change="handleStatusChange">
<el-option label="草稿" :value="0" />
<el-option label="已生效" :value="1" />
<el-option label="已作废" :value="2" />
<el-option label="已完成" :value="3" />
<el-option label="已取消" :value="2" />
<el-option label="已结清" :value="3" />
</el-select>
</h3>
<el-descriptions :column="2" border>
<el-descriptions-item label="合同编号">{{ contract.contractCode }}</el-descriptions-item>
<el-descriptions-item label="合同状态">
<el-tag :type="contract.status == 0 ? 'info' : contract.status == 1 ? 'success' : contract.status == 2 ? 'danger' : 'primary'">
{{ contract.status == 0 ? '草稿' : contract.status == 1 ? '已生效' : contract.status == 2 ? '已作废' : '已完成' }}
{{ contract.status == 0 ? '草稿' : contract.status == 1 ? '已生效' : contract.status == 2 ? '已取消' : '已结清' }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="供方">{{ contract.supplier }}</el-descriptions-item>
@@ -80,8 +80,8 @@ export default {
statusOptions: [
{ label: '草稿', value: '0' },
{ label: '已生效', value: '1' },
{ label: '已作废', value: '2' },
{ label: '已完成', value: '3' }
{ label: '已取消', value: '2' },
{ label: '已结清', value: '3' }
],
}
},

View File

@@ -27,7 +27,14 @@
<el-table v-loading="loading" :data="salesObjectionList" @selection-change="handleSelectionChange">
<el-table-column label="编号" align="center" prop="objectionCode" />
<!-- <el-table-column label="异议类型" align="center" prop="objectionType" /> -->
<!-- <el-table-column label="异议内容" align="center" prop="objectionContent" /> -->
<el-table-column label="产品类别" align="center" prop="productCategory" />
<el-table-column label="反馈日期" align="center" prop="returnDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.returnDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="投诉情况" align="center" prop="complaintContent" show-overflow-tooltip></el-table-column>
<el-table-column label="客户诉求" align="center" prop="customerDemand" show-overflow-tooltip></el-table-column>
<el-table-column label="状态" align="center" prop="objectionStatus">
<template slot-scope="scope">
<el-tag v-if="scope.row.objectionStatus === 0" type="danger">待处理</el-tag>
@@ -75,15 +82,36 @@
<el-form-item label="异议编号" prop="objectionCode">
<el-input v-model="form.objectionCode" placeholder="请输入异议编号" />
</el-form-item>
<el-form-item label="异议内容">
<editor v-model="form.objectionContent" :min-height="192" />
<el-form-item label="产品类别" prop="productCategory">
<el-input v-model="form.productCategory" placeholder="请输入产品类别" />
</el-form-item>
<el-form-item label="反馈日期" prop="returnDate">
<el-date-picker clearable
v-model="form.returnDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择反馈日期">
</el-date-picker>
</el-form-item>
<el-form-item label="投诉情况">
<el-input
v-model="form.complaintContent"
type="textarea"
:rows="4"
placeholder="请输入投诉情况"
></el-input>
</el-form-item>
<el-form-item label="客户诉求">
<el-input
v-model="form.customerDemand"
type="textarea"
:rows="4"
placeholder="请输入客户诉求"
></el-input>
</el-form-item>
<el-form-item label="订单编号">
<order-select v-model="form.orderId" placeholder="请选择订单" />
</el-form-item>
<el-form-item label="异议客户">
<customer-select v-model="form.customerId" placeholder="请选择客户" />
</el-form-item>
<!-- <el-form-item label="处理内容">
<editor v-model="form.handleContent" :min-height="192"/>
</el-form-item>
@@ -128,10 +156,15 @@
</div>
</el-dialog>
<el-dialog title="查看处理结果" :visible.sync="viewOpen" width="500px" append-to-body>
<el-descriptions :column="2" :data="viewForm" label-width="80px">
<el-dialog title="查看处理结果" :visible.sync="viewOpen" width="700px" append-to-body>
<el-descriptions :column="2" :data="viewForm" label-width="80px" border>
<el-descriptions-item label="异议编号" :span="2">{{ viewForm.objectionCode }}</el-descriptions-item>
<el-descriptions-item label="产品类别">{{ viewForm.productCategory }}</el-descriptions-item>
<el-descriptions-item label="反馈日期">{{ parseTime(viewForm.returnDate, '{y}-{m}-{d}') }}</el-descriptions-item>
<el-descriptions-item label="投诉情况" :span="2">{{ viewForm.complaintContent }}</el-descriptions-item>
<el-descriptions-item label="客户诉求" :span="2">{{ viewForm.customerDemand }}</el-descriptions-item>
<el-descriptions-item label="处理人">{{ viewForm.handleUser }}</el-descriptions-item>
<el-descriptions-item label="处理时间">{{ viewForm.handleTime }}</el-descriptions-item>
<el-descriptions-item label="处理时间">{{ parseTime(viewForm.handleTime, '{y}-{m}-{d}') }}</el-descriptions-item>
<el-descriptions-item label="处理内容" :span="2">
<div v-html="viewForm.handleContent"></div>
</el-descriptions-item>
@@ -190,9 +223,11 @@ export default {
pageSize: 10,
objectionCode: undefined,
orderId: undefined,
customerId: undefined,
productCategory: undefined,
returnDate: undefined,
complaintContent: undefined,
customerDemand: undefined,
objectionType: undefined,
objectionContent: undefined,
objectionStatus: undefined,
handleContent: undefined,
handleUser: undefined,
@@ -237,9 +272,11 @@ export default {
objectionId: undefined,
objectionCode: undefined,
orderId: this.orderId,
customerId: this.customerId,
productCategory: undefined,
returnDate: undefined,
complaintContent: undefined,
customerDemand: undefined,
objectionType: 0,
objectionContent: undefined,
objectionStatus: undefined,
handleContent: undefined,
handleUser: undefined,
@@ -358,3 +395,12 @@ export default {
}
};
</script>
<style scoped>
.cell-html {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 200px;
}
</style>