✨ 结算汇率反算、开票合计填报、配载承运商交集与车辆组织悬停
外币结算按本位币/汇率反算;开票改填合计金额并反算不含税单价;配载展示承运商合同并按乙方交集限选;评分加减分封顶15分;车辆所有组织/使用部门悬停显示完整路径。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1588,6 +1588,9 @@ const customerArchiveFormRoute = '/vehicle/customer-archive/form';
|
||||
const customerArchiveListRefreshKey = 'customer-archive-list-refresh';
|
||||
/** 客商所属组织固定为顶层组织 */
|
||||
const FIXED_OWNER_DEPT_NAME = '广西现代物流集团有限公司';
|
||||
/** 暂定:加分/减分合计上限均为 15 分,超出按 15 分计 */
|
||||
const HARDCODED_MAX_PLUS_SCORE = 15;
|
||||
const HARDCODED_MAX_MINUS_SCORE = 15;
|
||||
|
||||
const createTimeRangeMap = {
|
||||
createTimeRange: ['createTimeStart', 'createTimeEnd'],
|
||||
@@ -2291,16 +2294,18 @@ export default {
|
||||
{ categoryCode: 'plus', categoryName: '加分项目' },
|
||||
{ categoryCode: 'minus', categoryName: '减分项目' },
|
||||
];
|
||||
const maxMinus = Number(this.currentScore?.maxMinusScore);
|
||||
const hasMaxMinus = Number.isFinite(maxMinus) && maxMinus >= 0;
|
||||
const rows = categoryMap.map((category, index) => {
|
||||
const details = this.getScoreCategoryDetails(category.categoryCode);
|
||||
let selfScore = details.reduce((sum, item) => sum + Number(item.selfScore || 0), 0);
|
||||
let reviewScore = details.reduce((sum, item) => sum + Number(item.reviewScore || 0), 0);
|
||||
// 减分项目合计受量化表「最高扣分」限制
|
||||
if (category.categoryCode === 'minus' && hasMaxMinus) {
|
||||
selfScore = Math.min(selfScore, maxMinus);
|
||||
reviewScore = Math.min(reviewScore, maxMinus);
|
||||
// 暂定:加分/减分合计最高按 15 分计
|
||||
if (category.categoryCode === 'plus') {
|
||||
selfScore = Math.min(selfScore, HARDCODED_MAX_PLUS_SCORE);
|
||||
reviewScore = Math.min(reviewScore, HARDCODED_MAX_PLUS_SCORE);
|
||||
}
|
||||
if (category.categoryCode === 'minus') {
|
||||
selfScore = Math.min(selfScore, HARDCODED_MAX_MINUS_SCORE);
|
||||
reviewScore = Math.min(reviewScore, HARDCODED_MAX_MINUS_SCORE);
|
||||
}
|
||||
return {
|
||||
...category,
|
||||
@@ -4216,7 +4221,8 @@ export default {
|
||||
scoreDate: this.$dayjs().format('YYYY-MM-DD'),
|
||||
applyCreditLimit: this.archiveForm.applyCreditLimit || '',
|
||||
maxCreditLimit: '',
|
||||
maxMinusScore: '',
|
||||
maxMinusScore: HARDCODED_MAX_MINUS_SCORE,
|
||||
maxPlusScore: HARDCODED_MAX_PLUS_SCORE,
|
||||
creditLevel: '',
|
||||
standards: [],
|
||||
tempApplyCreditLimit: '',
|
||||
@@ -4236,10 +4242,8 @@ export default {
|
||||
: score.applyCreditLimit
|
||||
),
|
||||
maxCreditLimit: this.normalizeOptionalAmount(score.maxCreditLimit),
|
||||
maxMinusScore:
|
||||
score.maxMinusScore === undefined || score.maxMinusScore === null
|
||||
? ''
|
||||
: score.maxMinusScore,
|
||||
maxMinusScore: HARDCODED_MAX_MINUS_SCORE,
|
||||
maxPlusScore: HARDCODED_MAX_PLUS_SCORE,
|
||||
tempApplyCreditLimit: this.normalizeOptionalAmount(score.tempApplyCreditLimit),
|
||||
attachments: score.attachments || this.parseAttachments(score.proofAttachments),
|
||||
details: (score.details || []).map(detail => ({
|
||||
@@ -4699,11 +4703,8 @@ export default {
|
||||
applyCreditLimit: this.currentScore.applyCreditLimit,
|
||||
maxCreditLimit: '',
|
||||
creditLevel: '',
|
||||
maxMinusScore:
|
||||
quantificationData.maxMinusScore ??
|
||||
scoreTemplate.maxMinusScore ??
|
||||
this.currentScore.maxMinusScore ??
|
||||
'',
|
||||
maxMinusScore: HARDCODED_MAX_MINUS_SCORE,
|
||||
maxPlusScore: HARDCODED_MAX_PLUS_SCORE,
|
||||
tempApplyCreditLimit: this.currentScore.tempApplyCreditLimit,
|
||||
tempCreditStartDate: this.currentScore.tempCreditStartDate,
|
||||
tempCreditEndDate: this.currentScore.tempCreditEndDate,
|
||||
@@ -4722,14 +4723,11 @@ export default {
|
||||
},
|
||||
applyMaxMinusScoreFromQuantification(quantificationId) {
|
||||
if (!quantificationId) return Promise.resolve();
|
||||
return getCreditScoreQuantificationDetail(quantificationId).then(res => {
|
||||
const data = res?.data?.data || {};
|
||||
this.currentScore.maxMinusScore =
|
||||
data.maxMinusScore === undefined || data.maxMinusScore === null
|
||||
? ''
|
||||
: data.maxMinusScore;
|
||||
this.calculateScore(this.currentScore);
|
||||
});
|
||||
// 暂定写死加分/减分上限,不再依赖量化表配置值
|
||||
this.currentScore.maxMinusScore = HARDCODED_MAX_MINUS_SCORE;
|
||||
this.currentScore.maxPlusScore = HARDCODED_MAX_PLUS_SCORE;
|
||||
this.calculateScore(this.currentScore);
|
||||
return Promise.resolve();
|
||||
},
|
||||
normalizeScoreTemplateDetails(template = {}) {
|
||||
const categoryDetails = (template.categories || []).flatMap(category =>
|
||||
@@ -5073,17 +5071,17 @@ export default {
|
||||
const plusDetails = this.getScoreCategoryDetailsByList(details, 'plus');
|
||||
const minusDetails = this.getScoreCategoryDetailsByList(details, 'minus');
|
||||
const sumScore = (list, prop) => list.reduce((sum, item) => sum + Number(item[prop] || 0), 0);
|
||||
const rawPlusSelf = sumScore(plusDetails, 'selfScore');
|
||||
const rawPlusReview = sumScore(plusDetails, 'reviewScore');
|
||||
const rawMinusSelf = sumScore(minusDetails, 'selfScore');
|
||||
const rawMinusReview = sumScore(minusDetails, 'reviewScore');
|
||||
// 量化表「减分最高扣分」:所有减分项合计不得超过该上限
|
||||
const maxMinus = Number(score.maxMinusScore);
|
||||
const hasMaxMinus = Number.isFinite(maxMinus) && maxMinus >= 0;
|
||||
const minusSelf = hasMaxMinus ? Math.min(rawMinusSelf, maxMinus) : rawMinusSelf;
|
||||
const minusReview = hasMaxMinus ? Math.min(rawMinusReview, maxMinus) : rawMinusReview;
|
||||
const selfScore =
|
||||
sumScore(basicDetails, 'selfScore') + sumScore(plusDetails, 'selfScore') - minusSelf;
|
||||
const reviewScore =
|
||||
sumScore(basicDetails, 'reviewScore') + sumScore(plusDetails, 'reviewScore') - minusReview;
|
||||
// 暂定:加分/减分合计最高按 15 分计
|
||||
const plusSelf = Math.min(rawPlusSelf, HARDCODED_MAX_PLUS_SCORE);
|
||||
const plusReview = Math.min(rawPlusReview, HARDCODED_MAX_PLUS_SCORE);
|
||||
const minusSelf = Math.min(rawMinusSelf, HARDCODED_MAX_MINUS_SCORE);
|
||||
const minusReview = Math.min(rawMinusReview, HARDCODED_MAX_MINUS_SCORE);
|
||||
const selfScore = sumScore(basicDetails, 'selfScore') + plusSelf - minusSelf;
|
||||
const reviewScore = sumScore(basicDetails, 'reviewScore') + plusReview - minusReview;
|
||||
const hasReviewScore = details.some(
|
||||
item => !this.isBlankScore(item.reviewScore)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user