完成编辑支付表格

master
lynn 8 months ago
parent c197319c3a
commit 4a5725a689

@ -493,12 +493,12 @@
<!-- 事前支付表格 -->
<div v-if="form.before_contract_template && !form.showAfterPayment" class="form-section">
<div class="section-title">事前支付表格</div>
<div ref="beforePaymentForm" v-html="isEditMode ? (form.before_forms || form.before_contract_template.template) : form.before_contract_template.template"></div>
<div ref="beforePaymentForm" v-html="form.before_forms || form.before_contract_template.template"></div>
</div>
<!-- 事后支付表格 -->
<div v-else-if="form.contract_template" class="form-section">
<div class="section-title">事后支付表格</div>
<div ref="afterPaymentForm" v-html="isEditMode ? (form.forms || form.contract_template.template) : form.contract_template.template"></div>
<div ref="afterPaymentForm" v-html="form.forms || form.contract_template.template"></div>
</div>
<!-- 无支付表格提示 -->
<div v-else class="form-section">
@ -520,7 +520,7 @@
<Button @click="skipPrePayment" class="action-button">跳过稍后填写</Button>
</template>
<!-- 编辑模式下只有当before_forms为空时才显示跳过按钮 -->
<template v-else-if="!form.before_forms || form.before_forms.trim() === ''">
<template v-else-if="(!form.before_forms || form.before_forms.trim() === '' || !form.skipBeforeTemplate)">
<Button type="primary" @click="nextPaymentStep" class="action-button">下一步</Button>
<Button @click="skipPrePayment" class="action-button">跳过稍后填写</Button>
</template>
@ -537,7 +537,7 @@
<Button @click="skipPostPayment" class="action-button">跳过稍后填写</Button>
</template>
<!-- 编辑模式下只有当forms为空时才显示跳过按钮 -->
<template v-else-if="!form.forms || form.forms.trim() === ''">
<template v-else-if="(!form.forms || form.forms.trim() === '' || !form.skipAfterTemplate)">
<Button type="primary" @click="submit" class="action-button">提交</Button>
<Button @click="skipPostPayment" class="action-button">跳过稍后填写</Button>
</template>
@ -1266,8 +1266,12 @@ export default {
purchaseMethod: '',
forms:'',
before_forms:'',
originBeforeForms:'',
originAfterForms:'',
other_data:[],
before_other_data:[],
skipBeforeTemplate:false,
skipAfterTemplate:false,
name: '',
type: '', //
moneyWay: [],
@ -1864,6 +1868,76 @@ export default {
//
async submit() {
try {
//
if (!this.form.showAfterPayment && this.form.before_contract_template) {
//
const inputs = this.$refs.beforePaymentForm.querySelectorAll('input, select, textarea');
// HTML
inputs.forEach(input => {
const fieldName = input.getAttribute('data-field');
if (fieldName) {
const field = this.form.before_contract_template.contract_template_fields.find(f => f.field === fieldName);
if (field) {
if (input.type === 'checkbox' || input.type === 'radio') {
//
const checkedInput = this.$refs.beforePaymentForm.querySelector(`[data-field="${fieldName}"]:checked`);
field.value = checkedInput ? checkedInput.value : '';
// HTML checked
if (checkedInput) {
checkedInput.setAttribute('checked', 'checked');
}
} else {
field.value = input.value;
// HTML value
input.setAttribute('value', input.value);
}
}
}
});
// HTML
const beforeFormHtml = this.$refs.beforePaymentForm.innerHTML;
//
this.form.before_forms = beforeFormHtml;
}
//
if (this.form.showAfterPayment && this.form.contract_template) {
//
const inputs = this.$refs.afterPaymentForm.querySelectorAll('input, select, textarea');
// HTML
inputs.forEach(input => {
const fieldName = input.getAttribute('data-field');
if (fieldName) {
const field = this.form.contract_template.contract_template_fields.find(f => f.field === fieldName);
if (field) {
if (input.type === 'checkbox' || input.type === 'radio') {
//
const checkedInput = this.$refs.afterPaymentForm.querySelector(`[data-field="${fieldName}"]:checked`);
field.value = checkedInput ? checkedInput.value : '';
// HTML checked
if (checkedInput) {
checkedInput.setAttribute('checked', 'checked');
}
} else {
field.value = input.value;
// HTML value
input.setAttribute('value', input.value);
}
}
}
});
// HTML
const afterFormHtml = this.$refs.afterPaymentForm.innerHTML;
//
this.form.forms = afterFormHtml;
}
//
const submitData = {
...this.form,
@ -1885,24 +1959,24 @@ export default {
submitData.purchase_way_id = this.form.purchaseMethod
//
if (this.form.skipBeforeTemplate) {
if (this.form.skipBeforeTemplate && !this.isEditMode) {
//
submitData.before_forms = '';
submitData.before_other_data = [];
} else if (this.form.before_contract_template) {
//
submitData.before_forms = this.form.before_contract_template.template;
submitData.before_forms = this.form.before_forms;
submitData.before_other_data = this.form.before_contract_template.contract_template_fields;
}
//
if (this.form.skipAfterTemplate) {
if (this.form.skipAfterTemplate && !this.isEditMode) {
//
submitData.forms = '';
submitData.other_data = [];
} else if (this.form.contract_template) {
//
submitData.forms = this.form.contract_template.template;
submitData.forms = this.form.forms;
submitData.other_data = this.form.contract_template.contract_template_fields;
}
@ -2031,14 +2105,26 @@ export default {
}
//
this.getTemplateConfig();
} else if (this.currentStep === 2) {
//
this.$refs.basicInfoForm.validate((valid) => {
if (valid) {
// showAfterPayment
//
if (!this.form.type) {
this.form.type = '';
}
if (!this.form.contract_carry_department) {
this.form.contract_carry_department = [];
}
if (!this.form.moneyWay) {
this.form.moneyWay = [];
}
//
if (this.form.before_contract_template) {
this.form.showAfterPayment = false;
}
this.currentStep++;
}
});
@ -2083,8 +2169,7 @@ export default {
// HTML
const afterFormHtml = this.$refs.afterPaymentForm.innerHTML;
//
this.form.contract_template.template = afterFormHtml;
//
this.form.forms = afterFormHtml;
}
if (this.form.showAfterPayment && this.form.before_contract_template) {
@ -2160,6 +2245,14 @@ export default {
this.form.before_forms = currentBeforeForms;
}
if (this.form.forms && this.form.forms.trim() !== '') {
this.form.skipAfterTemplate = true;
}
if (this.form.before_forms && this.form.before_forms.trim() !== '') {
this.form.skipBeforeTemplate = true;
}
//
this.currentStep++
} catch (error) {
@ -2565,7 +2658,6 @@ export default {
const beforeFormHtml = this.$refs.beforePaymentForm.innerHTML;
//
this.form.before_contract_template.template = beforeFormHtml;
this.form.before_forms = beforeFormHtml;
}
this.form.showAfterPayment = true;
@ -2595,22 +2687,26 @@ export default {
//
skipPrePayment() {
this.form.showAfterPayment = true
if (this.isEditMode) {
this.form.before_forms = this.originBeforeForms;
}else{
this.form.before_forms = '';
this.form.before_other_data = [];
this.form.skipBeforeTemplate = true;
this.form.before_contract_template = {
template: '',
contract_template_fields: []
};
}
},
//
skipPostPayment() {
if (this.isEditMode) {
this.form.forms = this.originAfterForms;
}else{
this.form.forms = '';
this.form.other_data = [];
this.form.skipAfterTemplate = true;
this.form.contract_template = {
template: '',
contract_template_fields: []
};
}
this.submit()
},
@ -2687,6 +2783,8 @@ export default {
...this.form,
forms: detail.forms,
before_forms: detail.before_forms,
originBeforeForms: detail.before_forms,
originAfterForms: detail.forms,
other_data: detail.other_data,
before_other_data: detail.before_other_data,
type: detail.type,
@ -2799,7 +2897,11 @@ export default {
}),
contract_carry_department: detail.contract_carry_department.map(i => i.carry_department_id),
before_contract_template: detail.before_contract_template,
contract_template: detail.contract_template
contract_template: detail.contract_template,
before_forms: detail.before_forms,
before_other_data: detail.before_other_data,
forms: detail.forms,
other_data: detail.other_data,
};
//

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save