✨ 组织编码/平台公司、合同计费客商角色与基础模块查看按钮
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -18,9 +18,6 @@
|
||||
<el-descriptions-item label="运输方式">{{
|
||||
transportModeLabel(draft.transportMode)
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="默认方案">{{
|
||||
isDefaultPlan(draft) ? '是' : '否'
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">{{ displayValue(draft.remark) }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-form
|
||||
@@ -68,16 +65,6 @@
|
||||
:label="item.label"
|
||||
:value="item.value" /></el-select></el-form-item
|
||||
></el-col>
|
||||
<el-col :span="8"
|
||||
><el-form-item
|
||||
><el-checkbox v-model="draft.defaultPlan" :disabled="readonly">默认方案</el-checkbox
|
||||
><el-tooltip content="同一运输方式仅支持配置一个默认计费方案" placement="top">
|
||||
<el-icon class="billing-plan-editor__default-tip"
|
||||
><InfoFilled
|
||||
/></el-icon> </el-tooltip
|
||||
></el-form-item
|
||||
></el-col
|
||||
>
|
||||
<el-col :span="24"
|
||||
><el-form-item label="备注"
|
||||
><el-input
|
||||
@@ -397,6 +384,7 @@ import { InfoFilled } from '@element-plus/icons-vue';
|
||||
import { getDictionary } from '@/api/system/dictbiz';
|
||||
import SectionCard from '@/components/section-card/main.vue';
|
||||
import { currencyUnit } from '@/utils/currency';
|
||||
// InfoFilled 仅用于保底计费重量列头提示
|
||||
|
||||
const clone = value => JSON.parse(JSON.stringify(value));
|
||||
/** 计费要素与计量单位维度的对应关系(这些要素可选计费单位) */
|
||||
@@ -535,10 +523,24 @@ export default {
|
||||
handler(value) {
|
||||
if (this.modelValue) {
|
||||
this.draft = this.normalizePlan(value);
|
||||
this.applyDefaultPartySelection();
|
||||
this.loadRuleItems();
|
||||
}
|
||||
},
|
||||
},
|
||||
modelValue(visible) {
|
||||
if (visible) {
|
||||
this.$nextTick(() => this.applyDefaultPartySelection());
|
||||
}
|
||||
},
|
||||
partyOptions: {
|
||||
deep: true,
|
||||
handler() {
|
||||
if (this.modelValue) {
|
||||
this.applyDefaultPartySelection();
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
displayValue(value) {
|
||||
@@ -558,13 +560,6 @@ export default {
|
||||
);
|
||||
return this.displayValue(option?.label || this.draft.transportModeLabel || value);
|
||||
},
|
||||
isDefaultPlan(plan) {
|
||||
return (
|
||||
plan?.defaultPlan === true ||
|
||||
plan?.defaultPlan === 1 ||
|
||||
['true', '1'].includes(String(plan?.defaultPlan).toLowerCase())
|
||||
);
|
||||
},
|
||||
normalizePlan(value = {}) {
|
||||
const plan = {
|
||||
planName: '',
|
||||
@@ -574,10 +569,11 @@ export default {
|
||||
customerName: '',
|
||||
transportMode: '',
|
||||
transportModeLabel: '',
|
||||
defaultPlan: false,
|
||||
remark: '',
|
||||
...clone(value || {}),
|
||||
};
|
||||
// 一个客商对应一个方案,不再维护默认方案字段
|
||||
delete plan.defaultPlan;
|
||||
plan.rules = (value?.rules?.length ? value.rules : [defaultRule()]).map(rule =>
|
||||
this.normalizeRule(rule)
|
||||
);
|
||||
@@ -589,6 +585,28 @@ export default {
|
||||
);
|
||||
return matched?.label || '';
|
||||
},
|
||||
/**
|
||||
* 仅一个可选客商时默认选中(客户合同仅一个甲方的常见场景)
|
||||
*/
|
||||
applyDefaultPartySelection() {
|
||||
if (this.readonly) {
|
||||
return;
|
||||
}
|
||||
const options = this.partyOptions || [];
|
||||
if (options.length !== 1) {
|
||||
return;
|
||||
}
|
||||
const current = String(this.draft.partyRowId || '');
|
||||
const only = options[0];
|
||||
const onlyValue = String(only?.value || only?.partyRowId || '');
|
||||
if (!onlyValue) {
|
||||
return;
|
||||
}
|
||||
if (current && current === onlyValue) {
|
||||
return;
|
||||
}
|
||||
this.handlePartyChange(only.value || only.partyRowId);
|
||||
},
|
||||
handlePartyChange(partyRowId) {
|
||||
const matched = (this.partyOptions || []).find(
|
||||
item => String(item.value) === String(partyRowId)
|
||||
|
||||
Reference in New Issue
Block a user