✨ 完善变更记录、客商评分与车辆表单
变更记录详情统一为居中分页弹窗,并去掉经办人等信息行。 客商评分支持删除、提交前自评校验、复评后才能审批,以及 0 分提交。 车辆外廓尺寸和载质量单位改到输入框内,认证审核标签按四字换行,使用部门必填并默认当前部门。 临时额度的 -1 占位金额显示为空。新增项目编号可留空由系统生成。 修复缓存总单页在打开新增项目时误请求缺少 id 的详情接口。 详情页状态与运输方式标签样式统一。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -610,7 +610,12 @@ export default {
|
||||
return value;
|
||||
},
|
||||
applyDetail(detail) {
|
||||
this.form = { ...detail };
|
||||
this.form = {
|
||||
...detail,
|
||||
projectFundLimit: this.blankSentinelAmount(detail.projectFundLimit),
|
||||
usedFundLimit: this.blankSentinelAmount(detail.usedFundLimit),
|
||||
remainingFundLimit: this.blankSentinelAmount(detail.remainingFundLimit),
|
||||
};
|
||||
this.selectedProjectId = detail.projectId || '';
|
||||
this.attachmentRows = this.parseJsonArray(detail.attachmentsJson);
|
||||
this.selectedAttachments = [];
|
||||
@@ -620,6 +625,9 @@ export default {
|
||||
const { projectQuotaInfoTitle, temporaryCreditInfoTitle, ...payload } = row || {};
|
||||
return {
|
||||
...payload,
|
||||
projectFundLimit: this.toOptionalAmount(payload.projectFundLimit),
|
||||
usedFundLimit: this.toOptionalAmount(payload.usedFundLimit),
|
||||
remainingFundLimit: this.toOptionalAmount(payload.remainingFundLimit),
|
||||
applyLimit: payload.applyLimit === '' ? '' : Number(payload.applyLimit),
|
||||
attachmentsJson: JSON.stringify(this.attachmentRows),
|
||||
};
|
||||
@@ -765,8 +773,8 @@ export default {
|
||||
projectName: project.projectName || '',
|
||||
projectCode: project.projectCode || '',
|
||||
undertakeDeptName: project.undertakeDeptName || '',
|
||||
projectFundLimit: project.fundLimit || project.projectFundLimit || 0,
|
||||
usedFundLimit: project.usedFundLimit || 0,
|
||||
projectFundLimit: this.blankSentinelAmount(project.fundLimit ?? project.projectFundLimit),
|
||||
usedFundLimit: this.blankSentinelAmount(project.usedFundLimit),
|
||||
});
|
||||
this.form.remainingFundLimit = this.calculateRemainingFundLimit();
|
||||
getProjectDetail(project.id).then(res => {
|
||||
@@ -774,18 +782,32 @@ export default {
|
||||
Object.assign(this.form, {
|
||||
projectCode: detail.projectCode || this.form.projectCode,
|
||||
undertakeDeptName: detail.undertakeDeptName || this.form.undertakeDeptName,
|
||||
projectFundLimit:
|
||||
detail.fundLimit ?? detail.projectFundLimit ?? this.form.projectFundLimit,
|
||||
usedFundLimit: detail.usedFundLimit ?? this.form.usedFundLimit,
|
||||
projectFundLimit: this.blankSentinelAmount(
|
||||
detail.fundLimit ?? detail.projectFundLimit ?? this.form.projectFundLimit
|
||||
),
|
||||
usedFundLimit: this.blankSentinelAmount(
|
||||
detail.usedFundLimit ?? this.form.usedFundLimit
|
||||
),
|
||||
});
|
||||
this.form.remainingFundLimit = this.calculateRemainingFundLimit();
|
||||
});
|
||||
},
|
||||
blankSentinelAmount(value) {
|
||||
if (value === undefined || value === null || value === '') return '';
|
||||
return Number(value) === -1 ? '' : value;
|
||||
},
|
||||
toOptionalAmount(value) {
|
||||
const amount = this.blankSentinelAmount(value);
|
||||
return amount === '' ? null : amount;
|
||||
},
|
||||
calculateRemainingFundLimit() {
|
||||
const total = Number(this.form.projectFundLimit);
|
||||
const used = Number(this.form.usedFundLimit);
|
||||
if (!Number.isFinite(total) || !Number.isFinite(used)) return '';
|
||||
return Math.round((total - used + Number.EPSILON) * 100) / 100;
|
||||
const total = this.blankSentinelAmount(this.form.projectFundLimit);
|
||||
const used = this.blankSentinelAmount(this.form.usedFundLimit);
|
||||
if (total === '' || used === '') return '';
|
||||
const totalAmount = Number(total);
|
||||
const usedAmount = Number(used);
|
||||
if (!Number.isFinite(totalAmount) || !Number.isFinite(usedAmount)) return '';
|
||||
return Math.round((totalAmount - usedAmount + Number.EPSILON) * 100) / 100;
|
||||
},
|
||||
handleAmountInput(value) {
|
||||
const text = String(value || '').replace(/[^\d.]/g, '');
|
||||
|
||||
Reference in New Issue
Block a user