Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 06de9477e5 | |||
| f7ee9273c6 |
@@ -175,6 +175,30 @@ export const querySupplierCode = creditCode => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 金蝶开户行查询(A905-3):收款信息填写开户行失焦后精确匹配带出联行号
|
||||||
|
export const queryKingdeeBank = bankName => {
|
||||||
|
return request({
|
||||||
|
url: '/blade-transport/customer-archive/query-bank',
|
||||||
|
method: 'get',
|
||||||
|
timeout: 30000,
|
||||||
|
params: {
|
||||||
|
bankName,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 金蝶联行号校验(A905-3):收款信息保存前按联行号精确匹配,查不到不允许保存
|
||||||
|
export const queryKingdeeBankByNumber = cnapsCode => {
|
||||||
|
return request({
|
||||||
|
url: '/blade-transport/customer-archive/query-bank-by-number',
|
||||||
|
method: 'get',
|
||||||
|
timeout: 30000,
|
||||||
|
params: {
|
||||||
|
cnapsCode,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
export const syncKingdee = id => {
|
export const syncKingdee = id => {
|
||||||
return request({
|
return request({
|
||||||
url: '/blade-transport/customer-archive/sync-kingdee',
|
url: '/blade-transport/customer-archive/sync-kingdee',
|
||||||
|
|||||||
@@ -92,15 +92,24 @@
|
|||||||
<span v-else>-</span>
|
<span v-else>-</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 客商风险:等级与金蝶黑名单组合展示(推送链路按金蝶命中口径落库),复用公共展示方法 -->
|
<!-- 客商风险:等级与金蝶黑名单组合展示(推送链路按金蝶命中口径落库),复用公共展示方法;非无风险标签悬浮见明细 -->
|
||||||
<template #customerRisk="{ row }">
|
<template #customerRisk="{ row }">
|
||||||
<el-tag
|
<el-tooltip
|
||||||
v-if="contractRiskTagName(row)"
|
v-if="contractRiskTagName(row)"
|
||||||
:type="isContractRisky(row) ? 'danger' : row.hcsRiskLevel === '1' ? 'warning' : 'success'"
|
placement="top"
|
||||||
class="status-text"
|
effect="dark"
|
||||||
|
popper-class="customer-risk-popper"
|
||||||
>
|
>
|
||||||
{{ contractRiskTagName(row) }}
|
<template #content>
|
||||||
</el-tag>
|
<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>
|
<span v-else>-</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -3820,4 +3829,10 @@ export default {
|
|||||||
white-space: normal;
|
white-space: normal;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 风险客商悬浮提示(同客商列表页):popper 挂在 body 下,约束宽度 */
|
||||||
|
.customer-risk-popper {
|
||||||
|
max-width: 360px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -49,21 +49,24 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #customerRisk="{ row }">
|
<template #customerRisk="{ row }">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
v-if="customerRowRisky(row)"
|
v-if="customerRowRiskName(row) && customerRowRiskName(row) !== '无风险'"
|
||||||
placement="top"
|
placement="top"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
popper-class="customer-risk-popper"
|
popper-class="customer-risk-popper"
|
||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div>{{ row.hcsRiskDetail || '该客商为高风险/黑名单客商' }}</div>
|
<div>{{ row.hcsRiskDetail || customerRowRiskName(row) }}</div>
|
||||||
</template>
|
</template>
|
||||||
<el-tag type="danger" class="status-text">
|
<el-tag
|
||||||
|
:type="customerRowRisky(row) ? 'danger' : row.hcsRiskLevel === '1' ? 'warning' : 'success'"
|
||||||
|
class="status-text"
|
||||||
|
>
|
||||||
{{ customerRowRiskName(row) }}
|
{{ customerRowRiskName(row) }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-else-if="customerRowRiskName(row)"
|
v-else-if="customerRowRiskName(row)"
|
||||||
:type="row.hcsRiskLevel === '1' ? 'warning' : 'success'"
|
type="success"
|
||||||
class="status-text"
|
class="status-text"
|
||||||
>
|
>
|
||||||
{{ customerRowRiskName(row) }}
|
{{ customerRowRiskName(row) }}
|
||||||
@@ -1097,8 +1100,18 @@
|
|||||||
<el-form-item label="开户人姓名" prop="accountHolderName">
|
<el-form-item label="开户人姓名" prop="accountHolderName">
|
||||||
<el-input v-model="receiptForm.accountHolderName" maxlength="50" />
|
<el-input v-model="receiptForm.accountHolderName" maxlength="50" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开户行" prop="bankName">
|
<el-form-item prop="bankName">
|
||||||
<el-input v-model="receiptForm.bankName" maxlength="100" />
|
<template #label>
|
||||||
|
<span class="receipt-bank-label">
|
||||||
|
开户行
|
||||||
|
<el-tooltip placement="top" effect="dark" content="请填写银行全称,系统将自动匹配金蝶档案带出联行号">
|
||||||
|
<el-icon class="receipt-bank-help">
|
||||||
|
<el-icon-question-filled />
|
||||||
|
</el-icon>
|
||||||
|
</el-tooltip>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
<el-input v-model="receiptForm.bankName" maxlength="100" @blur="fetchReceiptCnapsCode" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="联行号" prop="cnapsCode">
|
<el-form-item label="联行号" prop="cnapsCode">
|
||||||
<el-input v-model="receiptForm.cnapsCode" maxlength="32" />
|
<el-input v-model="receiptForm.cnapsCode" maxlength="32" />
|
||||||
@@ -1605,6 +1618,8 @@ import {
|
|||||||
remove,
|
remove,
|
||||||
getScoreTemplate,
|
getScoreTemplate,
|
||||||
recognizeBusinessLicenseOcr,
|
recognizeBusinessLicenseOcr,
|
||||||
|
queryKingdeeBank,
|
||||||
|
queryKingdeeBankByNumber,
|
||||||
queryKingdeeCustomer,
|
queryKingdeeCustomer,
|
||||||
querySupplierCode,
|
querySupplierCode,
|
||||||
syncKingdee,
|
syncKingdee,
|
||||||
@@ -3654,18 +3669,50 @@ export default {
|
|||||||
this.receiptForm = this.emptyReceiptAccount();
|
this.receiptForm = this.emptyReceiptAccount();
|
||||||
this.$refs.receiptForm?.clearValidate();
|
this.$refs.receiptForm?.clearValidate();
|
||||||
},
|
},
|
||||||
saveReceipt() {
|
// 开户行失焦后按行名精确匹配金蝶行名行号档案(A905-3),命中自动带出联行号,未命中提示检查
|
||||||
this.$refs.receiptForm.validate(valid => {
|
async fetchReceiptCnapsCode() {
|
||||||
if (!valid) return;
|
const bankName = String(this.receiptForm.bankName || '').trim();
|
||||||
const receipt = this.normalizeReceipt(this.receiptForm);
|
if (!bankName) return;
|
||||||
if (this.receiptIndex > -1) {
|
try {
|
||||||
this.archiveForm.receiptAccounts.splice(this.receiptIndex, 1, receipt);
|
const res = await queryKingdeeBank(bankName);
|
||||||
|
// 防止响应返回时用户已修改开户行
|
||||||
|
if (String(this.receiptForm.bankName || '').trim() !== bankName) return;
|
||||||
|
const bank = res?.data?.data || null;
|
||||||
|
if (bank && bank.unionNumber) {
|
||||||
|
this.receiptForm.cnapsCode = bank.unionNumber;
|
||||||
|
this.$refs.receiptForm?.clearValidate('cnapsCode');
|
||||||
} else {
|
} else {
|
||||||
this.archiveForm.receiptAccounts.push(receipt);
|
this.$message.warning('未查询到金蝶开户行信息,请检查开户行名称');
|
||||||
this.handleDetailCurrentChange('receipt', this.getDetailPageCount('receipt'));
|
|
||||||
}
|
}
|
||||||
this.receiptBox = false;
|
} catch (error) {
|
||||||
});
|
// 忽略查询异常,联行号留空由用户手填
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveReceipt() {
|
||||||
|
const valid = await this.$refs.receiptForm.validate().catch(() => false);
|
||||||
|
if (!valid) return;
|
||||||
|
// 保存前按联行号精确校验金蝶行名行号档案(A905-3),查不到不允许保存
|
||||||
|
const cnapsCode = String(this.receiptForm.cnapsCode || '').trim();
|
||||||
|
let bank = null;
|
||||||
|
try {
|
||||||
|
const res = await queryKingdeeBankByNumber(cnapsCode);
|
||||||
|
bank = res?.data?.data || null;
|
||||||
|
} catch (error) {
|
||||||
|
this.$message.warning('金蝶联行号校验失败,请稍后重试');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!bank || !bank.unionNumber) {
|
||||||
|
this.$message.warning('未查询到金蝶联行号信息,不能保存,请检查联行号');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const receipt = this.normalizeReceipt(this.receiptForm);
|
||||||
|
if (this.receiptIndex > -1) {
|
||||||
|
this.archiveForm.receiptAccounts.splice(this.receiptIndex, 1, receipt);
|
||||||
|
} else {
|
||||||
|
this.archiveForm.receiptAccounts.push(receipt);
|
||||||
|
this.handleDetailCurrentChange('receipt', this.getDetailPageCount('receipt'));
|
||||||
|
}
|
||||||
|
this.receiptBox = false;
|
||||||
},
|
},
|
||||||
deleteReceipt(index) {
|
deleteReceipt(index) {
|
||||||
this.$confirm('确定删除该收款信息?', '提示', {
|
this.$confirm('确定删除该收款信息?', '提示', {
|
||||||
@@ -6124,6 +6171,19 @@ export default {
|
|||||||
:deep(.el-select) {
|
:deep(.el-select) {
|
||||||
width: 60%;
|
width: 60%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.receipt-bank-label {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.receipt-bank-help {
|
||||||
|
color: #a8abb2;
|
||||||
|
cursor: help;
|
||||||
|
font-size: 14px;
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.receipt-dialog__footer-actions {
|
.receipt-dialog__footer-actions {
|
||||||
|
|||||||
Reference in New Issue
Block a user