diff --git a/src/utils/cert-audit.js b/src/utils/cert-audit.js
index d57cb9b..331eced 100644
--- a/src/utils/cert-audit.js
+++ b/src/utils/cert-audit.js
@@ -139,9 +139,23 @@ const CERT_SNAPSHOT_GROUPS = {
{
title: '从业资格证信息',
fields: [
+ { key: 'qualificationType', label: '从业资格认证类型' },
{ key: 'qualificationNo', label: '从业资格证号' },
- { key: 'qualificationUrl', label: '从业资格证照片', type: TYPE_IMAGE },
- { key: 'qualificationValidEnd', label: '从业资格证有效期止', type: TYPE_DATE },
+ {
+ key: 'qualificationFront',
+ label: '从业资格证封面页',
+ type: TYPE_IMAGE,
+ legacyKeys: ['qualificationUrl'],
+ },
+ { key: 'qualificationBack', label: '从业资格证内容页', type: TYPE_IMAGE },
+ { key: 'qualificationValidStart', label: '从业资格证有效期起', type: TYPE_DATE },
+ {
+ key: 'qualificationValidEnd',
+ label: '从业资格证有效期止',
+ type: TYPE_DATE,
+ longTermKey: 'qualificationLongTerm',
+ },
+ { key: 'qualificationLongTerm', label: '从业资格证长期有效', type: TYPE_LONG_TERM },
],
},
],
@@ -268,9 +282,28 @@ const normalizeDate = value => {
return text;
};
+/**
+ * 取字段值,兼容字段改名前的旧键
+ *
+ * 后端把某字段改名后,改名之前提交的记录里存的仍是旧键(例:从业资格证封面页
+ * 由 `qualificationUrl` 改为 `qualificationFront`)。只读新键会得到空,
+ * 审核页就把已填的封面页显示成「—」,误导审核员以为对方没传。
+ * 新旧键都存在时以新键为准。
+ */
+const readFieldValue = (snapshot, field) => {
+ if (!snapshot) return undefined;
+ const value = snapshot[field.key];
+ if (!isEmptyValue(value)) return value;
+ const legacyKeys = field.legacyKeys || [];
+ for (let i = 0; i < legacyKeys.length; i += 1) {
+ if (!isEmptyValue(snapshot[legacyKeys[i]])) return snapshot[legacyKeys[i]];
+ }
+ return value;
+};
+
/** 比较用的归一化取值:展示相同即视为未变更 */
const canonicalOf = (snapshot, field) => {
- const value = snapshot ? snapshot[field.key] : undefined;
+ const value = readFieldValue(snapshot, field);
if (field.type === TYPE_LONG_TERM) {
if (isEmptyValue(value)) return '';
return isLongTermOn(value) ? '1' : '0';
@@ -286,7 +319,7 @@ const canonicalOf = (snapshot, field) => {
/** 展示文案:日期型受「长期有效」影响,图片型返回 URL 由组件渲染缩略图 */
const textOf = (snapshot, field) => {
- const value = snapshot ? snapshot[field.key] : undefined;
+ const value = readFieldValue(snapshot, field);
if (field.type === TYPE_IMAGE) {
return isEmptyValue(value) ? '' : String(value);
}
@@ -323,11 +356,11 @@ const buildRow = (field, pendingSnapshot, effectiveSnapshot, hasBaseline) => {
label: field.label,
type,
effective: {
- raw: effectiveSnapshot ? effectiveSnapshot[field.key] : undefined,
+ raw: readFieldValue(effectiveSnapshot, target),
text: textOf(effectiveSnapshot, target),
},
pending: {
- raw: pendingSnapshot ? pendingSnapshot[field.key] : undefined,
+ raw: readFieldValue(pendingSnapshot, target),
text: textOf(pendingSnapshot, target),
},
changed: Boolean(changeType),
@@ -363,7 +396,8 @@ export const buildSnapshotDiff = (bizType, pendingJson, effectiveJson) => {
const groups = groupsConfig.map(group => {
const rows = group.fields.map(field => {
- knownKeys.push(field.key);
+ // 旧键已由所属字段并入展示,不能再作为独立字段出现,否则同一张封面页会出现两行
+ knownKeys.push(field.key, ...(field.legacyKeys || []));
return buildRow(field, pending.value, effective.value, hasBaseline);
});
return {
diff --git a/src/views/transportCapacity/components/cert-audit-detail/main.vue b/src/views/transportCapacity/components/cert-audit-detail/main.vue
index 825f665..c91f841 100644
--- a/src/views/transportCapacity/components/cert-audit-detail/main.vue
+++ b/src/views/transportCapacity/components/cert-audit-detail/main.vue
@@ -42,6 +42,12 @@
{{ bizTypeLabel }}
+
+ {{ detail.auditUserName || '-' }}
+
+
+ {{ detail.auditTime ? formatCertDateTime(detail.auditTime) : '-' }}
+
@@ -149,6 +155,13 @@ export default {
statusTag() {
return certStatusTag(this.detail.status);
},
+ // 审核时间一栏按审核结论换标签:还在「审核中」的记录没有结论,不能写成通过或驳回时间
+ auditTimeLabel() {
+ const status = String(this.detail.status);
+ if (status === String(CERT_RECORD_STATUS.APPROVED)) return '审核通过时间';
+ if (status === String(CERT_RECORD_STATUS.REJECTED)) return '审核驳回时间';
+ return '审核时间';
+ },
// 只有「审核中」的记录可审;已通过/已驳回/已作废都是终态
auditable() {
return String(this.detail.status) === String(CERT_RECORD_STATUS.PENDING);