From 3397bd6a7b2b9f6ae3932bc5124406da542ca26f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Fri, 30 Oct 2026 11:33:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=A2=E5=95=86=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=A3=8E=E9=99=A9=E5=88=97=E6=94=B9=E8=AF=BB=E8=90=BD=E5=BA=93?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=B9=B6=E6=94=AF=E6=8C=81=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E4=B8=8E=E5=90=8E=E5=8F=B0=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=82=AC=E6=B5=AE=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/vehicle/customer-archive.vue | 64 ++++++++++++++------------ 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/src/views/vehicle/customer-archive.vue b/src/views/vehicle/customer-archive.vue index 2468a66..afea612 100644 --- a/src/views/vehicle/customer-archive.vue +++ b/src/views/vehicle/customer-archive.vue @@ -49,24 +49,24 @@ @@ -1597,7 +1597,7 @@ import { queryKingdeeCustomer, syncKingdee, } from '@/api/vehicle/customer-archive'; -import { getRiskBatch, getRiskByName } from '@/api/business/hcs'; +import { getRiskByName } from '@/api/business/hcs'; import { getList as getCreditScoreQuantificationList, getDetail as getCreditScoreQuantificationDetail, @@ -1699,7 +1699,6 @@ export default { deptSearchInitialized: false, loading: true, data: [], - customerRiskMap: {}, archiveNameRisky: false, archiveNameRiskTip: '', page: { @@ -1963,7 +1962,17 @@ export default { label: '客商风险', prop: 'customerRisk', slot: true, + search: true, + searchType: 'select', + searchOrder: 4, + searchPlaceholder: '请选择', minWidth: 100, + dicData: [ + { label: '黑名单', value: 'blacklist' }, + { label: '高风险', value: 'high' }, + { label: '中风险', value: 'middle' }, + { label: '低风险', value: 'low' }, + ], }, { label: '客户性质', @@ -3157,6 +3166,15 @@ export default { }); }, initBusinessDictionaries() { + // 客商风险筛选项走业务字典 customer_risk(dictKey=筛选值 blacklist/high/middle/low,dictValue=名称),字典缺失保留固定兜底项 + getDictionary({ code: 'customer_risk' }).then(res => { + const options = (res.data.data || []) + .filter(item => item.dictKey !== '-1') + .map(item => ({ label: item.dictValue, value: item.dictKey })); + if (options.length) { + this.findColumn(this.option.column, 'customerRisk').dicData = options; + } + }); this.loadDictOptions('nature_of_client', 'customerNatureOptions', [], options => { const customerNatureColumn = this.findColumn(this.option.column, 'customerNature'); customerNatureColumn.dicData = [{ label: '全部', value: '' }, ...options]; @@ -5534,17 +5552,20 @@ export default { const pageData = res.data.data; this.page.total = pageData.total; this.data = pageData.records; - this.loadCustomerRisk(this.data); this.selectionClear(); }) .finally(() => { this.loading = false; }); }, - // 客商风险标签文案:后端 riskLevelName 转义(黑名单/高风险/中风险/低风险),缺失时兜底 - customerRiskLabel(risk) { - if (!risk) return ''; - return risk.riskLevelName || (risk.risky ? '风险客商' : '正常'); + // 客商风险名称(C101-1 每日定时刷新落库字段):黑名单优先,等级转义,未查询返回空展示"-" + customerRowRiskName(row) { + if (row.hcsBlackStatus === 'yes') return '黑名单'; + return { 2: '高风险', 1: '中风险', 0: '低风险' }[row.hcsRiskLevel] || ''; + }, + // 高风险/黑名单判定(与列表筛选口径一致,命中显示红色标签) + customerRowRisky(row) { + return row.hcsBlackStatus === 'yes' || row.hcsRiskLevel === '2'; }, // 客商名称风险校验(C101-1,仅展示不作为安全边界):名称失焦/回显时查询, // risky 在名称框下展示红色提示,悬浮见风险项明细;查询失败静默不阻断填写,提交链路由后端强校验兜底 @@ -5563,23 +5584,6 @@ export default { // 忽略风险查询异常,表单正常填写 }); }, - // 客商列表风险批量查询(C101-1,仅展示不作为安全边界):失败静默,行内显示"-",提交链路由后端强校验兜底 - loadCustomerRisk(rows) { - this.customerRiskMap = {}; - const customerCodes = [...new Set(rows.map(row => row.customerCode).filter(Boolean))]; - if (!customerCodes.length) return; - getRiskBatch(customerCodes) - .then(res => { - const riskMap = {}; - ((res.data && res.data.data) || []).forEach(risk => { - if (risk && risk.customerCode) riskMap[risk.customerCode] = risk; - }); - this.customerRiskMap = riskMap; - }) - .catch(() => { - // 忽略风险查询异常,列表正常展示 - }); - }, handleExport() { this.$confirm('是否导出客商档案数据?', '提示', { confirmButtonText: '确定',