diff --git a/src/views/contract/launch/components/1.vue b/src/views/contract/launch/components/1.vue
deleted file mode 100644
index 7090c1e..0000000
--- a/src/views/contract/launch/components/1.vue
+++ /dev/null
@@ -1,598 +0,0 @@
-
-
-
-
-
-
-
- 集装箱
- 散杂货
-
-
-
-
-
-
- 一口价
- 阶梯价
-
-
-
-
-
-
-
-
-
-
- 铁路场站
- 码头
- 门点地址
-
-
-
-
-
-
-
-
- 铁路场站
- 码头
- 门点地址
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
- {{ item.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/views/contract/launch/components/2.vue b/src/views/contract/launch/components/2.vue
deleted file mode 100644
index d98cb5a..0000000
--- a/src/views/contract/launch/components/2.vue
+++ /dev/null
@@ -1,727 +0,0 @@
-
-
-
-
-
-
-
- 集装箱
- 散杂货
-
-
-
-
-
-
- 一口价
- 阶梯价
-
-
-
-
-
-
-
-
-
-
- 铁路场站
- 码头
- 门点地址
-
-
-
-
-
-
-
-
- 铁路场站
- 码头
- 门点地址
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
- {{ item.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
- {{ item.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue b/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue
index 92d38e7..a2e732c 100644
--- a/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue
+++ b/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue
@@ -1090,21 +1090,24 @@ function splitFilesByCategory(source = {}) {
return {
contractBodyFileName:
- getFileNameFromDetail(source, "body") || bodyFile.fileName || "",
+ source.contractBodyFileName ||
+ bodyFile.fileName ||
+ getFileNameFromDetail(source, "body") ||
+ "",
contractBodyFilePath:
source.contractBodyFilePath ||
- source.contractTextFilePath ||
bodyFile.filePath ||
+ source.contractTextFilePath ||
"",
contractBodyFileType:
source.contractBodyFileType ||
- source.contractTextFileType ||
bodyFile.fileType ||
+ source.contractTextFileType ||
"",
contractBodyFileSize:
source.contractBodyFileSize ??
- source.contractTextFileSize ??
bodyFile.fileSize ??
+ source.contractTextFileSize ??
null,
otherAttachmentList: source.otherAttachmentList?.length
? source.otherAttachmentList.map(normalizeFileItem)
@@ -1181,6 +1184,9 @@ function createEmptyParty(roleCode, index = 0) {
oppositeId: "",
companyName: "",
companyType: "",
+ companyNature: "",
+ orgNature: "",
+ orgNatureLevel: "",
oppositeCharacter: "",
oppCharacter: "",
contactName: "",
@@ -1190,6 +1196,8 @@ function createEmptyParty(roleCode, index = 0) {
registeredAddress: "",
legalRepresentative: "",
creditCode: "",
+ registeredCapitalText: "",
+ countryName: "",
naturalPersonIdType: "",
naturalPersonIdNumber: "",
isGroupInternal: false,
@@ -1731,6 +1739,9 @@ function mapPartnerToParty(raw = {}, roleKey, companyName) {
oppositeId: raw.oppositeId || "",
companyName: raw.customerNameC || companyName || "",
companyType: getRelativeTypeLabel(raw.relativeType),
+ companyNature: raw.oppositeCharacter || "",
+ orgNature: raw.natureOfEnterpriseOrg || "",
+ orgNatureLevel: raw.natureOfEnterpriseOrgLev || "",
oppositeCharacter: raw.oppositeCharacter || "",
oppCharacter: raw.oppositeCharacter || "",
creditCode: raw.customerTaxno || "",
@@ -1740,6 +1751,8 @@ function mapPartnerToParty(raw = {}, roleKey, companyName) {
contactPhone: firstContact.contactPhone || raw.officephone || "",
contactEmail: firstContact.email || raw.emailAddress || "",
contactAddress: firstContact.postalAddress || raw.customerAddress || "",
+ registeredCapitalText: raw.regCapital || raw.registeredCapital || "",
+ countryName: raw.countryName || raw.country || "",
naturalPersonIdType: raw.certificateType || "",
naturalPersonIdNumber: raw.certificateNum || "",
isGroupInternal: raw.groupFlag === "Y" || raw.isJtn === "1",
@@ -1754,12 +1767,19 @@ function mapOrgNodeToParty(raw = {}) {
...createEmptyParty(PARTY_ROLE_OUR),
subjectCode: raw.orgId == null ? "" : String(raw.orgId),
companyName: raw.orgName || "",
+ companyNature: raw.companyNature || "1",
+ orgNature: raw.orgNature || "QY",
+ orgNatureLevel: raw.orgNatureLevel || "",
contactPhone: raw.contactPhone || "",
contactEmail: raw.contactEmail || "",
contactAddress: raw.contactAddress || "",
registeredAddress: raw.registeredAddress || "",
legalRepresentative: raw.legalRepresentative || "",
creditCode: raw.creditCode || "",
+ registeredCapitalText: raw.regCapital || raw.registeredCapital || "",
+ countryName: raw.countryName || raw.country || "",
+ isGroupInternal: true,
+ isHongKongMacaoTaiwan: false,
roleCode: PARTY_ROLE_OUR,
roleName: "我方",
};
diff --git a/src/views/contract/launch/components/ContractTemplateFillDemoModal.vue b/src/views/contract/launch/components/ContractTemplateFillDemoModal.vue
index 517ebdd..3752314 100644
--- a/src/views/contract/launch/components/ContractTemplateFillDemoModal.vue
+++ b/src/views/contract/launch/components/ContractTemplateFillDemoModal.vue
@@ -220,6 +220,7 @@ import {
} from "../../shared/templateFieldDict.js";
import { renderTemplateDocxBlob } from "../../shared/templateDocxRenderer.js";
import { buildTemplateLaunchFieldList } from "../../shared/templateVariableConfig.js";
+import { buildOurPartyAutoFillValues } from "../../shared/templateAutoFillMappings.js";
import TemplateRichTextEditor from "./TemplateRichTextEditor.vue";
import {
extraAmountFieldOptions,
@@ -317,6 +318,21 @@ function createParty(roleCode = PARTY_ROLE_OPPOSITE, index = 0) {
: `相对方${index + 1}`,
subjectCode: "",
companyName: "",
+ companyType: "",
+ companyNature: "",
+ orgNature: "",
+ orgNatureLevel: "",
+ isGroupInternal: false,
+ isHongKongMacaoTaiwan: false,
+ creditCode: "",
+ registeredAddress: "",
+ legalRepresentative: "",
+ registeredCapitalText: "",
+ contactName: "",
+ contactPhone: "",
+ contactEmail: "",
+ contactAddress: "",
+ countryName: "",
};
}
@@ -335,6 +351,9 @@ function mapLaunchPartyToFormParty(item = {}) {
oppositeId: item.oppositeId || "",
companyName: item.companyName || "",
companyType: item.companyType || "",
+ companyNature: item.companyNature || item.oppositeCharacter || "",
+ orgNature: item.orgNature || item.natureOfEnterpriseOrg || "",
+ orgNatureLevel: item.orgNatureLevel || item.natureOfEnterpriseOrgLev || "",
oppCharacter: item.oppositeCharacter || "",
contactName: item.contactName || "",
contactPhone: item.contactPhone || "",
@@ -343,6 +362,9 @@ function mapLaunchPartyToFormParty(item = {}) {
registeredAddress: item.registeredAddress || "",
legalRepresentative: item.legalRepresentative || "",
creditCode: item.creditCode || "",
+ registeredCapitalText:
+ item.registeredCapitalText || item.regCapital || item.registeredCapital || "",
+ countryName: item.countryName || item.country || "",
bankName: item.bankName || "",
bankAccount: item.bankAccount || "",
naturalPersonIdType: item.naturalPersonIdType || "",
@@ -1257,6 +1279,16 @@ function prefillFromMainFields(rawSource) {
});
let changed = false;
+ const ourPartyAutoFillValues = buildOurPartyAutoFillValues(contractDetailState.value);
+ Object.entries(ourPartyAutoFillValues).forEach(([key, value]) => {
+ if (!keysToFill.has(key)) return;
+ if (values[key] !== undefined && values[key] !== null && values[key] !== "") return;
+ if (value !== undefined && value !== null && value !== "") {
+ values[key] = String(value);
+ changed = true;
+ }
+ });
+
keysToFill.forEach(key => {
if (values[key] !== undefined && values[key] !== null && values[key] !== "") return;
// 1. 先尝试从当前合同详情直接取(同名字段)
diff --git a/src/views/contract/launch/components/SealPositionConfigModal.vue b/src/views/contract/launch/components/SealPositionConfigModal.vue
index e5bcd43..3767840 100644
--- a/src/views/contract/launch/components/SealPositionConfigModal.vue
+++ b/src/views/contract/launch/components/SealPositionConfigModal.vue
@@ -4,6 +4,7 @@
:title="modalTitle"
width="96%"
:footer="null"
+ centered
:mask-closable="false"
:destroy-on-close="false"
wrap-class-name="seal-position-config-wrap"
@@ -80,6 +81,7 @@
+
+
+
+
+
+
+
+
+
+
多甲方变量(支持甲方1到甲方{{ OUR_PARTY_AUTO_FILL_MAX_COUNT }})
+
+
+
+
+
+