feat(business-crud-page): 优化合同管理表单页为多分组卡片风格

- 为合同管理独立表单页设置 dialogCustomClass 以实现表单背景透明
- 按业务分区拆分表单列,分组渲染多张白底卡片,卡间距定为 12px
- 调整卡片边距由 16px 至 12px,优化视觉层次与空间感
- 统一多分组表单样式,标题区块采用主色蓝条突出显示
- 透明化弹窗内 Avue 表单背景,解决白卡叠白卡问题
- 兼顾表单底部按钮滚动展示,不同于弹窗底部浮动布局
This commit is contained in:
2026-08-21 08:55:56 +08:00
parent 63256a9d21
commit 10878d4aee
10 changed files with 115 additions and 24 deletions
+1
View File
@@ -183,5 +183,6 @@ export const option = {
delBtn: false,
dialogTop: '4vh',
dialogWidth: '96%',
dialogCustomClass: 'process-config-dialog',
menuWidth: 220,
};
+22
View File
@@ -586,6 +586,28 @@
background: #fff;
}
// 过程配置新增/编辑弹窗:avue-form 整体白卡透明化,
// 让 <section-card> 分组白卡(基本信息 / 现行过程节点 / 节点设置)独立成卡、卡间露出灰底,
// 与 business/project-apply 表单页的分组卡片风格统一
.process-config-dialog .avue-form {
background: transparent;
box-shadow: none;
padding: 0;
}
// formslot 外层 el-form-item 默认 margin-bottom 与 section-card 自身 margin 叠加会拉大卡距,
// 归零后卡间距统一为 section-card 自身的 12px(与 project-apply 一致)
.process-config-dialog .avue-form__group > .el-col > .el-form-item {
margin-bottom: 0;
}
// 抵消全局 .avue-crud__dialog .avue-dialog__footer 的 -30px 上移
// avue-form 已透明化,footer 若上移会压住最后一张分组卡片)
.process-config-dialog .avue-dialog__footer,
.avue-crud__dialog .process-config-dialog .avue-dialog__footer {
margin-top: 0 !important;
}
// 统一表格线条颜色
.el-table {
--el-table-border-color: #eff1f7;
@@ -5909,6 +5909,9 @@ export default {
: 'business-crud-form-page-dialog';
opt.dialogTop = '0';
opt.dialogWidth = '100%';
} else if (!opt.dialogCustomClass) {
// body +
opt.dialogCustomClass = 'business-crud-form-dialog';
}
return opt;
})(),
@@ -6214,10 +6217,7 @@ export default {
submitBtn: !isTransportPlanCreate,
emptyBtn: false,
};
if (this.isContractFormPage) {
return this.buildContractFormGroupOption(base);
}
return base;
return this.buildFormGroupOption(base);
},
isWaybillDetailLayout() {
return this.config.permission === 'waybill_manage';
@@ -6858,9 +6858,13 @@ export default {
if (mode === 'edit') this.form = { id };
this.beforeOpen(() => {}, mode);
},
buildContractFormGroupOption(option) {
buildFormGroupOption(option) {
const sectionTitleProps = [
'basicInfoTitle',
'templateInfoTitle',
'shippingInfoTitle',
'goodsInfoTitle',
'taskInfoTitle',
'contractFileTitle',
'billingInfoTitle',
'settlementRuleTitle',
@@ -15835,7 +15839,7 @@ export default {
border-radius: 6px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
padding: 16px;
margin-bottom: 16px;
margin-bottom: 12px;
.avue-form__group--title {
padding: 0 !important;
@@ -16014,18 +16018,24 @@ export default {
// 使 12px section-card
:global(.contract-manage-form-dialog) {
padding: 20px 24px 96px;
//padding: 20px 24px 96px;
background: #f5f6fa;
box-sizing: border-box;
}
:global(.business-crud-page--contract-form .avue-form) {
// ///使 12px section-card
:global(.business-crud-form-page-dialog:not(.el-dialog)) {
padding: 20px 24px 96px;
box-sizing: border-box;
}
:global(.business-crud-page--form-page .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) {
:global(.business-crud-page--form-page .avue-form > .el-form > .avue-form__group),
:global(.business-crud-page--form-page .avue-group) {
background: #fff;
border-radius: 6px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
@@ -16034,26 +16044,35 @@ export default {
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) {
:global(.business-crud-page--form-page .avue-form > .el-form > .avue-form__group:last-child),
:global(.business-crud-page--form-page .avue-group:last-child) {
margin-bottom: 0;
}
:global(.business-crud-page--contract-form .avue-group .el-collapse) {
// .avue-group .avue-form__group
:global(.business-crud-page--form-page .avue-form .avue-form__group:has(.dialog-section-title)) {
background: transparent;
border-radius: 0;
box-shadow: none;
padding: 0;
margin-bottom: 0;
}
:global(.business-crud-page--form-page .avue-group .el-collapse) {
border-top: none;
border-bottom: none;
}
:global(.business-crud-page--contract-form .avue-group .el-collapse-item__header) {
:global(.business-crud-page--form-page .avue-group .el-collapse-item__header) {
display: none;
}
:global(.business-crud-page--contract-form .avue-group .el-collapse-item__wrap) {
:global(.business-crud-page--form-page .avue-group .el-collapse-item__wrap) {
border-bottom: none;
will-change: auto;
}
:global(.business-crud-page--contract-form .avue-group .el-collapse-item__content) {
:global(.business-crud-page--form-page .avue-group .el-collapse-item__content) {
padding-bottom: 0;
}
@@ -1735,7 +1735,7 @@ export default {
</script>
<style scoped lang="scss">
.master-editor section {
margin-bottom: 16px;
margin-bottom: 12px;
padding: 16px;
border: 1px solid #eff1f7;
background: #fff;
+2 -2
View File
@@ -619,7 +619,7 @@
</div>
</section-card>
<section-card title="配载信息" class="loading-manage-dialog__load-info-card">
<div title="配载信息" class="loading-manage-dialog__load-info-card">
<section-card title="待配载运单">
<el-table
ref="candidateTableRef"
@@ -905,7 +905,7 @@
</el-form-item>
</div>
</section-card>
</section-card>
</div>
</el-form>
</div>
+2 -2
View File
@@ -2103,8 +2103,8 @@ export default {
.project-apply-page-form {
min-height: 100%;
padding: 20px 24px 92px;
background: #f5f6fa;
//padding: 20px 24px 92px;
//background: #f5f6fa;
}
.project-apply-page__title {
+1 -1
View File
@@ -41,7 +41,7 @@
</section>
<section class="formal-page__table-panel">
<el-tabs v-model="activeSettlementType" @tab-change="handleSettlementTypeChange">
<el-tabs type="border-card" v-model="activeSettlementType" @tab-change="handleSettlementTypeChange">
<el-tab-pane label="应付" name="payable" />
<el-tab-pane label="应收" name="receivable" />
</el-tabs>
+2 -2
View File
@@ -4856,8 +4856,8 @@ export default {
.archive-page-form {
min-height: 100%;
padding: 20px 24px 92px;
background: #fff;
//padding: 20px 24px 92px;
//background: #fff;
}
.archive-page-form__title {