This commit is contained in:
2026-06-18 15:11:12 +08:00
parent 853ee41877
commit be2eee248b
@@ -237,10 +237,9 @@
required required
> >
<a-select <a-select
v-model:value="detailState.contractType" v-model:value="detailState.contractTypeCode"
:options="contractTypeOptions" :options="contractTypeOptions"
placeholder="请选择合同类型" placeholder="请选择合同类型"
@change="handleContractTypeChange"
/> />
</a-form-item> </a-form-item>
</div> </div>
@@ -664,14 +663,6 @@
placeholder="协助部门" placeholder="协助部门"
/> />
</a-form-item> </a-form-item>
<a-form-item class="tight-item" label="合同类型" required>
<a-select
v-model:value="detailState.contractTypeCode"
:options="contractTypeOptions"
placeholder="请选择合同类型编码"
@change="handleContractTypeCodeChange"
/>
</a-form-item>
<a-form-item <a-form-item
class="tight-item field-span-2" class="tight-item field-span-2"
label="合同执行人" label="合同执行人"
@@ -803,7 +794,10 @@
<a-radio :value="false">否</a-radio> <a-radio :value="false">否</a-radio>
</a-radio-group> </a-radio-group>
</div> </div>
<div class="boolean-row"> <div
v-if="detailState.paymentDirection === '1'"
class="boolean-row"
>
<span>是否列入当年预算</span> <span>是否列入当年预算</span>
<a-radio-group <a-radio-group
v-model:value="detailState.isIncludedInCurrentYearBudget" v-model:value="detailState.isIncludedInCurrentYearBudget"
@@ -1438,7 +1432,6 @@ function createContractFormData() {
id: null, id: null,
contractName: "", contractName: "",
contractCode: "", contractCode: "",
contractType: undefined,
contractTypeCode: undefined, contractTypeCode: undefined,
contractAmount: null, contractAmount: null,
estimatedAmount: null, estimatedAmount: null,
@@ -1610,6 +1603,13 @@ function copyContractFormData(data = {}) {
if (source.contractTextFileName && !form.contractBodyFileName) { if (source.contractTextFileName && !form.contractBodyFileName) {
form.contractBodyFileName = source.contractTextFileName; form.contractBodyFileName = source.contractTextFileName;
} }
// 兼容旧数据:如果只有 contractType(中文名)没有 contractTypeCode,尝试反向查找编码
if (!form.contractTypeCode && source.contractType) {
const matched = contractTypeOptions.find(
(opt) => opt.label === source.contractType || opt.simpleLabel === source.contractType,
);
if (matched) form.contractTypeCode = matched.value;
}
return form; return form;
} }
@@ -1918,10 +1918,6 @@ function handleContractTypeChange(value) {
detailState.value.contractTypeCode = value; detailState.value.contractTypeCode = value;
} }
function handleContractTypeCodeChange(value) {
detailState.value.contractType = value;
}
function handleAddCounterparty() { function handleAddCounterparty() {
if (isSingleAgreementChecked.value) return; if (isSingleAgreementChecked.value) return;
detailState.value.partyState.counterpartyList = detailState.value.partyState.counterpartyList =
@@ -2144,7 +2140,7 @@ function validateState() {
) )
return "请选择相对方"; return "请选择相对方";
if (!detailState.value.contractName?.trim()) return "请填写合同名称"; if (!detailState.value.contractName?.trim()) return "请填写合同名称";
if (!detailState.value.contractType) return "请选择合同类型"; if (!detailState.value.contractTypeCode) return "请选择合同类型";
if ( if (
detailState.value.contractPeriodType === "0" && detailState.value.contractPeriodType === "0" &&
(!detailState.value.effectiveStart || !detailState.value.effectiveEnd) (!detailState.value.effectiveStart || !detailState.value.effectiveEnd)
@@ -2364,12 +2360,7 @@ function buildLaunchRecord() {
id: detailState.value.id || null, id: detailState.value.id || null,
contractCode: detailState.value.contractCode, contractCode: detailState.value.contractCode,
contractName: detailState.value.contractName, contractName: detailState.value.contractName,
contractType: getOptionLabel( contractTypeCode: detailState.value.contractTypeCode,
contractTypeOptions,
detailState.value.contractType,
),
contractTypeCode:
detailState.value.contractTypeCode || detailState.value.contractType,
contractSource: detailState.value.contractSource || "ECP", contractSource: detailState.value.contractSource || "ECP",
creationMode: creationMode.value, creationMode: creationMode.value,
templateId: templateKey.value || null, templateId: templateKey.value || null,