From e50391f4a59a72da32cff6d05e8d0667dac62325 Mon Sep 17 00:00:00 2001
From: b2894lxlx <517289602@qq.com>
Date: Fri, 14 Aug 2026 15:20:22 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A2=E5=95=86=E5=8F=98?=
=?UTF-8?q?=E6=9B=B4=E8=AE=B0=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/vehicle/customer-archive.vue | 87 +++++++++++++++++++++++++-
1 file changed, 85 insertions(+), 2 deletions(-)
diff --git a/src/views/vehicle/customer-archive.vue b/src/views/vehicle/customer-archive.vue
index fec1acd..42531ce 100644
--- a/src/views/vehicle/customer-archive.vue
+++ b/src/views/vehicle/customer-archive.vue
@@ -655,7 +655,7 @@
-
+
item.prop === field);
return column?.label || field;
},
+ normalizeChangeFieldValue(value) {
+ if (typeof value !== 'string') return value;
+ const text = value.trim();
+ if (!text || (!text.startsWith('[') && !text.startsWith('{') && text !== 'null')) {
+ return value;
+ }
+ try {
+ return JSON.parse(text);
+ } catch (error) {
+ return value;
+ }
+ },
+ isEmptyChangeValue(value) {
+ const normalized = this.normalizeChangeFieldValue(value);
+ if (normalized === undefined || normalized === null || normalized === '' || normalized === '-1') {
+ return true;
+ }
+ if (Array.isArray(normalized)) return normalized.length === 0;
+ if (typeof normalized === 'object') return Object.keys(normalized).length === 0;
+ return false;
+ },
+ formatScoreChangeValue(value) {
+ const scores = Array.isArray(value) ? value : [value];
+ const categoryNames = { basic: '基础得分项', plus: '加分项目', minus: '减分项目' };
+ return scores
+ .filter(item => item && typeof item === 'object')
+ .map((score, index) => {
+ const summary = [
+ score.scoreDate && `评分日期:${score.scoreDate}`,
+ score.selfScore !== undefined && score.selfScore !== ''
+ ? `自评得分:${this.formatScoreValue(score.selfScore)}`
+ : '',
+ score.reviewScore !== undefined && score.reviewScore !== ''
+ ? `复评得分:${this.formatScoreValue(score.reviewScore)}`
+ : '',
+ score.finalScore !== undefined && score.finalScore !== ''
+ ? `最终得分:${this.formatScoreValue(score.finalScore)}`
+ : '',
+ score.creditLevel ? `信用等级:${score.creditLevel}` : '',
+ ].filter(Boolean);
+ const scoreDetails = this.normalizeChangeFieldValue(score.details);
+ const details = (Array.isArray(scoreDetails) ? scoreDetails : [])
+ .map(detail => {
+ const category =
+ detail.categoryName ||
+ categoryNames[this.getScoreDetailCategoryCode(detail)] ||
+ '';
+ const itemName = detail.itemName || '评分项目';
+ const option = detail.selectedOption || detail.scoreDescription || '';
+ const points = [
+ detail.selfScore !== undefined && detail.selfScore !== ''
+ ? `自评${this.formatScoreValue(detail.selfScore)}分`
+ : '',
+ detail.reviewScore !== undefined && detail.reviewScore !== ''
+ ? `复评${this.formatScoreValue(detail.reviewScore)}分`
+ : '',
+ ].filter(Boolean);
+ if (
+ !points.length &&
+ detail.score !== undefined &&
+ detail.score !== '' &&
+ detail.score !== -1 &&
+ detail.score !== '-1'
+ ) {
+ points.push(`得分${this.formatScoreValue(detail.score)}分`);
+ }
+ const label = `${category ? `${category}-` : ''}${itemName}`;
+ return `${label}${option ? `:${option}` : ''}${points.length ? `(${points.join(',')})` : ''}`;
+ })
+ .filter(Boolean);
+ if (details.length) summary.push(`评分明细:${details.join(';')}`);
+ return summary.length ? summary.join(';') : `第${index + 1}条评分`;
+ })
+ .join(';');
+ },
formatChangeFieldValue(field, value) {
+ value = this.normalizeChangeFieldValue(value);
if (value === undefined || value === null || value === '' || value === '-1') return '空';
const normalizedField = {
准入类型: 'accessType',
@@ -1931,6 +2007,9 @@ export default {
状态: 'status',
客户类型: 'customerType',
}[field] || field;
+ if (normalizedField === '评分信息' || normalizedField === 'scores') {
+ return this.formatScoreChangeValue(value) || '空';
+ }
const valueMap = {
accessType: { temporary: '临时', formal: '正式' },
approvalStatus: {
@@ -1962,7 +2041,11 @@ export default {
const afterData = this.parseChangeData(row.afterData);
const fields = [...new Set([...Object.keys(beforeData), ...Object.keys(afterData)])];
const details = fields
- .filter(field => field !== '变更内容')
+ .filter(
+ field =>
+ field !== '变更内容' &&
+ !(this.isEmptyChangeValue(beforeData[field]) && this.isEmptyChangeValue(afterData[field]))
+ )
.map(field => {
const before = this.formatChangeFieldValue(field, beforeData[field]);
const after = this.formatChangeFieldValue(field, afterData[field]);