Merge pull request '金蝶单据状态着色并悬浮展示失败原因+认领流水认领记录的改造' (#9) from feature/20261027-hcs-bif-all-web into master

Reviewed-on: #9
This commit was merged in pull request #9.
This commit is contained in:
2026-11-04 16:33:35 +08:00
23 changed files with 460 additions and 101 deletions
@@ -38,7 +38,7 @@
contract.hcsFdId || '-'
}}</el-descriptions-item>
<el-descriptions-item label="客商风险">
<template v-if="contract.hcsRiskLevel || contract.hcsBlackStatus">
<template v-if="contract.hcsRiskLevel || contract.kingdeeBlackStatus">
<el-tag
v-if="isBlacklist"
type="danger"
@@ -130,7 +130,7 @@ export default {
name: 'HcsContractPanel',
components: { UploadFilled },
props: {
// 合同详情行(须含 id/hcsSyncStatus/hcsFdId/hcsRiskLevel/hcsBlackStatus/hcsSpecStatus 等)
// 合同详情行(须含 id/hcsSyncStatus/hcsFdId/hcsRiskLevel/kingdeeBlackStatus/hcsSpecStatus 等)
contract: { type: Object, required: true },
},
emits: ['refresh'],
@@ -152,7 +152,7 @@ export default {
return this.contract.hcsSyncMsg || '';
},
isBlacklist() {
return String(this.contract.hcsBlackStatus || '').toLowerCase() === 'yes';
return String(this.contract.kingdeeBlackStatus || '').toLowerCase() === 'yes';
},
specLabel() {
return SPEC_STATUS_OPTIONS.find(item => item.value === this.contract.hcsSpecStatus)?.label || '';
@@ -791,7 +791,7 @@ export default {
// 高风险/黑名单客商提示:按合同推送合规留痕 hcs_risk_level/hcs_black_status 判定(与合同详情口径一致)
riskTipText() {
const riskLevel = String(this.form.hcsRiskLevel || '').trim();
const blacklist = String(this.form.hcsBlackStatus || '').toLowerCase() === 'yes';
const blacklist = String(this.form.kingdeeBlackStatus || '').toLowerCase() === 'yes';
if (riskLevel !== '2' && !blacklist) return '';
const parties = [this.form.partyA, this.form.partyB]
.map(name => String(name || '').trim())
+36 -1
View File
@@ -93,6 +93,27 @@
<span v-else>-</span>
</template>
<!-- 客商风险:等级与金蝶黑名单组合展示(推送链路按金蝶命中口径落库),复用公共展示方法;非无风险标签悬浮见明细 -->
<template #customerRisk="{ row }">
<el-tooltip
v-if="contractRiskTagName(row)"
placement="top"
effect="dark"
popper-class="customer-risk-popper"
>
<template #content>
<div>{{ row.hcsRiskDetail || contractRiskTagName(row) }}</div>
</template>
<el-tag
:type="isContractRisky(row) ? 'danger' : row.hcsRiskLevel === '1' ? 'warning' : 'success'"
class="status-text"
>
{{ contractRiskTagName(row) }}
</el-tag>
</el-tooltip>
<span v-else>-</span>
</template>
<template #menu="{ row }">
<el-link
v-if="hasPermission(`${config.permission}_view`)"
@@ -1176,6 +1197,7 @@ import {
repush as hcsRepush,
repushBatch as hcsRepushBatch,
} from '@/api/business/hcs';
import { isContractBlack, isRiskyTag, resolveRiskTagName } from '@/utils/risk-display';
import { Position } from '@element-plus/icons-vue';
import { getMkPublicDetail } from '@/api/mk-process';
import { getList as getProjectList } from '@/api/business/project-apply';
@@ -1782,7 +1804,7 @@ export default {
// 详情风险客商提示(基本信息备注后展示):按推送留痕 hcs_risk_level/hcs_black_status 判定(甲乙取高/任一),文案与后端 riskTip 一致
detailRiskTipText() {
const riskLevel = String(this.detailRow.hcsRiskLevel || '').trim();
const blacklist = String(this.detailRow.hcsBlackStatus || '').toLowerCase() === 'yes';
const blacklist = String(this.detailRow.kingdeeBlackStatus || '').toLowerCase() === 'yes';
if (riskLevel !== '2' && !blacklist) return '';
const parties = [this.detailRow.partyA, this.detailRow.partyB]
.map(name => String(name || '').trim())
@@ -1922,6 +1944,13 @@ export default {
hcsSyncLabel(value) {
return { unsynced: '待推送', synced: '已推送', failed: '推送失败' }[value] || value;
},
// ==================== 客商风险(推送链路按金蝶黑名单命中口径落库,展示复用公共方法) ====================
contractRiskTagName(row) {
return resolveRiskTagName(row.hcsRiskLevel, isContractBlack(row.kingdeeBlackStatus));
},
isContractRisky(row) {
return isRiskyTag(row.hcsRiskLevel, isContractBlack(row.kingdeeBlackStatus));
},
hcsSyncTagType(value) {
return { unsynced: 'info', synced: 'success', failed: 'danger' }[value] || 'info';
},
@@ -4279,4 +4308,10 @@ export default {
white-space: normal;
line-height: 1.2;
}
/* 风险客商悬浮提示(同客商列表页):popper 挂在 body 下,约束宽度 */
.customer-risk-popper {
max-width: 360px;
line-height: 1.6;
}
</style>