diff --git a/src/views/contract/components/paymentRegistration.vue b/src/views/contract/components/paymentRegistration.vue
index 7a476a2..043e942 100644
--- a/src/views/contract/components/paymentRegistration.vue
+++ b/src/views/contract/components/paymentRegistration.vue
@@ -278,15 +278,22 @@
-
-
-
-
-
-
-
-
-
+
+
+
@@ -732,6 +739,7 @@ export default {
],
zoomedDialogVisible: false, // 控制放大表格弹窗的显示
hasPostPaymentForm: false, // 是否有事后支付表格
+ hasSecondPostPaymentForm: false, // 是否有第二个事后支付表格
contract_category: {},
templateContextData: null, // 合同模板关联数据
total: 0,
@@ -826,6 +834,7 @@ export default {
this.forms2 = null // <---清空表格2的HTML内容
this.contract = {} // <--- 新增:重置合同对象
this.contractTemplate = null // <--- 新增:重置模板
+ this.hasSecondPostPaymentForm = false // <--- 重置第二个模板标志
this.activePostPaymentTab = 'form1' // <--- 重置当前tab
this.$nextTick(() => {
if (this.$refs.paymentRegistration && this.$refs.paymentRegistration.$refs.elForm) {
@@ -1030,14 +1039,28 @@ export default {
this.currentStep = 1
this.contractTemplate = this.contract.contract_template.template
this.forms = this.contractTemplate
- // 初始化两个tab的数据源
+ // 初始化第一个tab的数据源
this.forms1 = this.contractTemplate
- this.forms2 = this.contractTemplate
+
+ // 检查是否有第二个事后支付表格模板
+ if (this.contract.contract_template2 && this.contract.contract_template2.template) {
+ this.hasSecondPostPaymentForm = true
+ // 初始化第二个tab的数据源
+ this.forms2 = this.contract.contract_template2.template
+ if (!this.contract.contract_template2.contract_template_fields) {
+ this.contract.contract_template2.contract_template_fields = this.contract.other_data || []
+ }
+ } else {
+ this.hasSecondPostPaymentForm = false
+ this.forms2 = null
+ }
+
if (!this.contract.contract_template.contract_template_fields) {
this.contract.contract_template.contract_template_fields = this.contract.other_data || []
}
} else {
this.hasPostPaymentForm = false
+ this.hasSecondPostPaymentForm = false
this.currentStep = 1
this.contractTemplate = null
this.forms = null
@@ -1100,65 +1123,63 @@ export default {
initTemplateFields(contextData) {
if (!contextData || !contextData.other_data_fill) return
- // 获取事后支付模板
+ // 初始化第一个模板的字段
if (this.contract.contract_template && this.contract.contract_template.contract_template_fields) {
const fields = this.contract.contract_template.contract_template_fields
+ this.initTemplateFieldsForTable(fields, contextData, 1)
+ }
- // 遍历模板字段
- fields.forEach(field => {
- // 检查字段是否有link_type且该字段在other_data_fill中存在
- if (field.link_field && contextData.other_data_fill[field.link_field]) {
- let value = contextData.other_data_fill[field.link_field]
+ // 初始化第二个模板的字段(如果存在)
+ if (this.contract.contract_template2 && this.contract.contract_template2.contract_template_fields) {
+ const fields2 = this.contract.contract_template2.contract_template_fields
+ this.initTemplateFieldsForTable(fields2, contextData, 2)
+ }
+ },
- // 如果是upper_money字段,转换为金额大写
- if (field.link_field === 'upper_money') {
- value = numberToChinese(Number(value))
- }
+ // 为指定表格初始化模板字段值
+ initTemplateFieldsForTable(fields, contextData, tableIndex) {
+ // 遍历模板字段
+ fields.forEach(field => {
+ // 检查字段是否有link_type且该字段在other_data_fill中存在
+ if (field.link_field && contextData.other_data_fill[field.link_field]) {
+ let value = contextData.other_data_fill[field.link_field]
+
+ // 如果是upper_money字段,转换为金额大写
+ if (field.link_field === 'upper_money') {
+ value = numberToChinese(Number(value))
+ }
- // 设置字段值
- field.value = value
+ // 设置字段值
+ field.value = value
- // 更新DOM中的值
- const dom1 = this.$refs.mainTable1
- const dom2 = this.$refs.mainTable2
-
- if (dom1) {
- const input1 = dom1.querySelector(`[data-field="${field.field}"]`)
- if (input1) {
- if (input1.type === 'checkbox' || input1.type === 'radio') {
- if (field.value === input1.value) {
- input1.checked = true
- }
- } else {
- input1.value = field.value
- }
- }
- }
-
- if (dom2) {
- const input2 = dom2.querySelector(`[data-field="${field.field}"]`)
- if (input2) {
- if (input2.type === 'checkbox' || input2.type === 'radio') {
- if (field.value === input2.value) {
- input2.checked = true
- }
- } else {
- input2.value = field.value
+ // 更新DOM中的值
+ const dom = tableIndex === 1 ? this.$refs.mainTable1 : this.$refs.mainTable2
+
+ if (dom) {
+ const input = dom.querySelector(`[data-field="${field.field}"]`)
+ if (input) {
+ if (input.type === 'checkbox' || input.type === 'radio') {
+ if (field.value === input.value) {
+ input.checked = true
}
+ } else {
+ input.value = field.value
}
}
}
- })
-
- // 更新两个tab的数据源
- if (this.$refs.mainTable1) {
- this.forms1 = syncFormDomToHtml(this.$refs.mainTable1, fields)
}
- if (this.$refs.mainTable2) {
- this.forms2 = syncFormDomToHtml(this.$refs.mainTable2, fields)
+ })
+
+ // 更新对应tab的数据源
+ const dom = tableIndex === 1 ? this.$refs.mainTable1 : this.$refs.mainTable2
+ if (dom) {
+ const updatedForms = syncFormDomToHtml(dom, fields)
+ if (tableIndex === 1) {
+ this.forms1 = updatedForms
+ this.forms = this.forms1 // 默认使用第一个表格的数据
+ } else if (tableIndex === 2) {
+ this.forms2 = updatedForms
}
- // 更新共享的forms数据
- this.forms = this.forms1
}
},
@@ -1167,16 +1188,20 @@ export default {
this.$refs['paymentRegistration'].$refs['elForm'].validate().then(res => {
if (res) {
// 保存事后支付表格的数据
- if (this.contract.contract_template) {
- // 根据当前选择的tab获取对应的表格DOM
+ if (this.contract.contract_template || this.contract.contract_template2) {
+ // 根据当前选择的tab获取对应的表格DOM和模板字段
let currentDom = null
- if (this.activePostPaymentTab === 'form1') {
+ let templateFields = null
+
+ if (this.activePostPaymentTab === 'form1' && this.contract.contract_template) {
currentDom = this.$refs.mainTable1
- } else if (this.activePostPaymentTab === 'form2') {
+ templateFields = this.contract.contract_template.contract_template_fields
+ } else if (this.activePostPaymentTab === 'form2' && this.contract.contract_template2) {
currentDom = this.$refs.mainTable2
+ templateFields = this.contract.contract_template2.contract_template_fields
}
- if (currentDom) {
+ if (currentDom && templateFields) {
// 获取所有输入控件
const inputs = currentDom.querySelectorAll('input, select, textarea')
@@ -1184,7 +1209,7 @@ export default {
inputs.forEach(input => {
const fieldName = input.getAttribute('data-field')
if (fieldName) {
- const field = this.contract.contract_template.contract_template_fields.find(f => f.field === fieldName)
+ const field = templateFields.find(f => f.field === fieldName)
if (field) {
if (input.type === 'checkbox' || input.type === 'radio') {
// 对于复选框和单选框,需要找到选中的值
@@ -1423,15 +1448,23 @@ export default {
openZoomedTable() {
// 根据当前选择的tab获取对应的表格DOM
let currentDom = null
+ let templateFields = null
+
if (this.activePostPaymentTab === 'form1') {
currentDom = this.$refs.mainTable1
+ if (this.contract.contract_template) {
+ templateFields = this.contract.contract_template.contract_template_fields
+ }
} else if (this.activePostPaymentTab === 'form2') {
currentDom = this.$refs.mainTable2
+ if (this.contract.contract_template2) {
+ templateFields = this.contract.contract_template2.contract_template_fields
+ }
}
- if (currentDom && this.contract.contract_template) {
- //console.log(this.contract.contract_template.contract_template_fields)
- const updatedForms = syncFormDomToHtml(currentDom, this.contract.contract_template.contract_template_fields)
+ if (currentDom && templateFields) {
+ //console.log(templateFields)
+ const updatedForms = syncFormDomToHtml(currentDom, templateFields)
console.log('forms:'+updatedForms)
// 更新对应的数据源
if (this.activePostPaymentTab === 'form1') {
@@ -1453,29 +1486,39 @@ export default {
handleZoomedDialogClose() {
const dom = this.$refs.zoomedTable
- if (dom && this.contract.contract_template) {
- // 从放大窗口获取更新后的数据
- const updatedForms = syncFormDomToHtml(dom, this.contract.contract_template.contract_template_fields)
-
- // 只更新当前激活tab的数据源
- if (this.activePostPaymentTab === 'form1') {
- this.forms1 = updatedForms
- } else if (this.activePostPaymentTab === 'form2') {
- this.forms2 = updatedForms
+ if (dom) {
+ // 根据当前激活的tab选择对应的模板
+ let templateFields = null
+ if (this.activePostPaymentTab === 'form1' && this.contract.contract_template) {
+ templateFields = this.contract.contract_template.contract_template_fields
+ } else if (this.activePostPaymentTab === 'form2' && this.contract.contract_template2) {
+ templateFields = this.contract.contract_template2.contract_template_fields
}
- // 更新共享的forms数据(用于提交)
- this.forms = updatedForms
- this.contract.forms = updatedForms
-
- // 重新设置监听器
- this.$nextTick(() => {
- if (this.activePostPaymentTab === 'form1' && this.$refs.mainTable1) {
- this.setupAmountListeners(this.$refs.mainTable1)
- } else if (this.activePostPaymentTab === 'form2' && this.$refs.mainTable2) {
- this.setupAmountListeners(this.$refs.mainTable2)
+ if (templateFields) {
+ // 从放大窗口获取更新后的数据
+ const updatedForms = syncFormDomToHtml(dom, templateFields)
+
+ // 只更新当前激活tab的数据源
+ if (this.activePostPaymentTab === 'form1') {
+ this.forms1 = updatedForms
+ } else if (this.activePostPaymentTab === 'form2') {
+ this.forms2 = updatedForms
}
- })
+
+ // 更新共享的forms数据(用于提交)
+ this.forms = updatedForms
+ this.contract.forms = updatedForms
+
+ // 重新设置监听器
+ this.$nextTick(() => {
+ if (this.activePostPaymentTab === 'form1' && this.$refs.mainTable1) {
+ this.setupAmountListeners(this.$refs.mainTable1)
+ } else if (this.activePostPaymentTab === 'form2' && this.$refs.mainTable2) {
+ this.setupAmountListeners(this.$refs.mainTable2)
+ }
+ })
+ }
}
this.zoomedDialogVisible = false
},