diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue index f4b9daf..302157d 100644 --- a/src/views/business/components/business-crud-page.vue +++ b/src/views/business/components/business-crud-page.vue @@ -6207,13 +6207,17 @@ export default { const isTransportPlanCreate = this.config.enableTransportPlanCreateActions === true && this.$route.query.mode === 'add'; - return { + const base = { ...this.option, boxType: this.$route.query.mode === 'edit' ? 'edit' : 'add', menuBtn: true, submitBtn: !isTransportPlanCreate, emptyBtn: false, }; + if (this.isContractFormPage) { + return this.buildContractFormGroupOption(base); + } + return base; }, isWaybillDetailLayout() { return this.config.permission === 'waybill_manage'; @@ -6854,6 +6858,41 @@ export default { if (mode === 'edit') this.form = { id }; this.beforeOpen(() => {}, mode); }, + buildContractFormGroupOption(option) { + const sectionTitleProps = [ + 'basicInfoTitle', + 'contractFileTitle', + 'billingInfoTitle', + 'settlementRuleTitle', + 'paymentRatioTitle', + 'attachmentTitle', + 'changeRecordTitle', + ]; + const columns = [...(option.column || [])].sort( + (a, b) => (b.order || 0) - (a.order || 0) + ); + const groups = []; + let current = []; + columns.forEach(col => { + if (sectionTitleProps.includes(col.prop)) { + if (current.length) groups.push(current); + current = [col]; + } else { + current.push(col); + } + }); + if (current.length) groups.push(current); + if (groups.length <= 1) return option; + return { + ...option, + column: groups[0], + group: groups.slice(1).map(group => ({ + label: '', + arrow: false, + column: group, + })), + }; + }, openContractFormPage(mode, row = {}) { if (this.isStandaloneBusinessPage) { this.$router.push({ @@ -15812,7 +15851,7 @@ export default { width: 100% !important; min-height: 100%; box-sizing: border-box; - padding: 20px 24px 96px; + //padding: 20px 24px 96px; background: #f5f6fa; margin: 0 !important; border-radius: 0; @@ -15973,6 +16012,51 @@ export default { width: auto; } +// 合同管理独立表单页:标题分块使用白底卡片,间距 12px,与 section-card 风格一致 +:global(.contract-manage-form-dialog) { + padding: 20px 24px 96px; + background: #f5f6fa; + box-sizing: border-box; +} + +:global(.business-crud-page--contract-form .avue-form) { + background: transparent; + padding: 0; +} + +:global(.business-crud-page--contract-form .avue-form > .el-form > .avue-form__group), +:global(.business-crud-page--contract-form .avue-group) { + background: #fff; + border-radius: 6px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06); + margin-bottom: 12px; + padding: 14px 16px 4px; + overflow: hidden; +} + +:global(.business-crud-page--contract-form .avue-form > .el-form > .avue-form__group:last-child), +:global(.business-crud-page--contract-form .avue-group:last-child) { + margin-bottom: 0; +} + +:global(.business-crud-page--contract-form .avue-group .el-collapse) { + border-top: none; + border-bottom: none; +} + +:global(.business-crud-page--contract-form .avue-group .el-collapse-item__header) { + display: none; +} + +:global(.business-crud-page--contract-form .avue-group .el-collapse-item__wrap) { + border-bottom: none; + will-change: auto; +} + +:global(.business-crud-page--contract-form .avue-group .el-collapse-item__content) { + padding-bottom: 0; +} + :global(.avue--collapse .el-overlay:has(.contract-manage-form-dialog)) { left: 60px !important; }