完成编辑支付表格

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