Merge remote-tracking branch 'websoft/dev'

This commit is contained in:
2026-10-12 10:38:46 +08:00
2 changed files with 54 additions and 7 deletions
+41 -7
View File
@@ -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 {
@@ -42,6 +42,12 @@
<el-descriptions-item label="认证类型">
{{ bizTypeLabel }}
</el-descriptions-item>
<el-descriptions-item label="审核人">
{{ detail.auditUserName || '-' }}
</el-descriptions-item>
<el-descriptions-item :label="auditTimeLabel">
{{ detail.auditTime ? formatCertDateTime(detail.auditTime) : '-' }}
</el-descriptions-item>
</el-descriptions>
</section-card>
@@ -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);