This commit is contained in:
2026-06-03 14:17:45 +08:00
parent baba1eb0e9
commit a356633570
@@ -433,7 +433,7 @@
/>
</a-form-item>
<a-form-item class="tight-item" label="金额说明" required>
<a-form-item class="tight-item" :label="`金额说明${['0','3'].includes(detailState.valuationMode) ? ' *' : ''}`">
<a-textarea
v-model:value="detailState.amountExplain"
:rows="2"
@@ -593,14 +593,30 @@
style="width: 100%"
/>
</a-form-item>
<a-form-item class="tight-item" label="合同生效日期">
<a-date-picker
v-model:value="detailState.activeDate"
value-format="YYYY-MM-DD"
style="width: 100%"
placeholder="合同生效日期必须在合同期限范围内"
/>
</a-form-item>
<a-form-item class="tight-item" label="用印数量">
<a-input-number
v-model:value="detailState.sealQuantity"
:min="1"
:precision="0"
style="width: 100%"
/>
</a-form-item>
</div>
<div class="boolean-grid">
<div class="boolean-row">
<span>是否需修订条款</span>
<a-radio-group v-model:value="detailState.needAmendments">
<a-radio :value="true"></a-radio>
<a-radio :value="false"></a-radio>
<a-radio value="1"></a-radio>
<a-radio value="0"></a-radio>
</a-radio-group>
</div>
<div class="boolean-row">
@@ -1035,7 +1051,7 @@ function normalizeBooleanValue(value) {
function pickBooleanSource(source = {}, key) {
const mapping = {
needAmendments: [source.needAmendments, source.isNeedAmendments],
// needAmendments 改为 String 1/0,不再走 boolean 映射
isInvolveHongKongMacaoTaiwan: [
source.isInvolveHongKongMacaoTaiwan,
source.isSgat,
@@ -1402,7 +1418,7 @@ function createContractFormData() {
isIncludedInCurrentYearBudget: false,
isShared: false,
isMajorContract: false,
needAmendments: false,
needAmendments: "0",
extraAmounts: {
depositEnabled: false,
deposit: 0,
@@ -1420,6 +1436,8 @@ function createContractFormData() {
bzjAmount: 0,
performancePlans: [],
signDate: "",
activeDate: "",
sealQuantity: 1,
};
}
@@ -1471,7 +1489,7 @@ function copyContractFormData(data = {}) {
? source.contractBodyArrayBuffer.slice(0)
: null
: null;
} else if (key === "signDate" || key === "invoiceDate" || key === "receiveDate") {
} else if (key === "signDate" || key === "invoiceDate" || key === "receiveDate" || key === "activeDate") {
form[key] = source[key] ? String(source[key]).slice(0, 10) : form[key];
} else if (key === "assistDept") {
form.assistDept = source.assistDept ?? source.assistDepartmentName ?? form.assistDept;
@@ -1480,7 +1498,6 @@ function copyContractFormData(data = {}) {
source.signingSubjectCode ?? source.orgId ?? form.signingSubjectCode;
} else if (
[
"needAmendments",
"isInvolveHongKongMacaoTaiwan",
"isPublicTender",
"isForeignRelatedSubject",
@@ -2002,6 +2019,15 @@ function validateState() {
)
return "请填写期限说明";
if (!detailState.value.valuationMode) return "请选择计价方式";
// 固定总价时标的额必填
if (
detailState.value.valuationMode === "1" &&
(detailState.value.contractAmount === null ||
detailState.value.contractAmount === undefined ||
detailState.value.contractAmount === "")
)
return "请填写合同标的额";
// 预估总价时预估金额必填
if (
detailState.value.valuationMode === "2" &&
(detailState.value.estimatedAmount === null ||
@@ -2009,13 +2035,20 @@ function validateState() {
detailState.value.estimatedAmount === "")
)
return "请填写预估金额";
// 无金额/无法预估总价时金额说明必填
if (
(detailState.value.valuationMode === "0" ||
detailState.value.valuationMode === "3") &&
!detailState.value.amountExplain?.trim()
)
return "请填写金额说明";
if (!detailState.value.currencyName) return "请选择币种";
if (!detailState.value.sealType) return "请选择签订方式";
if (!detailState.value.textSource) return "请选择文本来源";
if (!detailState.value.mandateType) return "请选择委托类型";
if (!detailState.value.cargoType) return "请选择货种";
// needAmendments 必填(文档要求)
if (!detailState.value.needAmendments || detailState.value.needAmendments === "") return "请选择是否需修订条款";
if (!detailState.value.paymentDirection) return "请选择收支方向";
if (!detailState.value.isElectron) return "请选择签署方式";
if (!detailState.value.contractTypeCode) return "请选择合同属性中的合同类型";
if (!detailState.value.contractTypeCode) return "请选择合同属性中的合同类型";
if (!detailState.value.executorAccount?.trim()) return "请填写合同执行人";
if (detailState.value.isPublicTender && !detailState.value.biddingNo?.trim())
@@ -2178,7 +2211,7 @@ function buildLaunchRecord() {
primaryContent: detailState.value.primaryContent,
amountExplain: detailState.value.amountExplain,
valuationMode: detailState.value.valuationMode,
needAmendments: detailState.value.needAmendments ? "1" : "0",
needAmendments: detailState.value.needAmendments,
estimatedAmount:
detailState.value.valuationMode === "2"
? detailState.value.estimatedAmount
@@ -2214,6 +2247,8 @@ function buildLaunchRecord() {
signDate: formatDateTimeValue(detailState.value.signDate),
invoiceDate: formatDateTimeValue(detailState.value.invoiceDate),
receiveDate: formatDateTimeValue(detailState.value.receiveDate),
activeDate: formatDateTimeValue(detailState.value.activeDate),
sealQuantity: detailState.value.sealQuantity,
templateFieldValuesJson: JSON.stringify(
detailState.value.templateFieldValues || {},
),