style(billing-plan-editor): 使用 SectionCard 包裹计费方案编辑区块
- 引入 SectionCard 组件包裹计费方案显示和编辑区域 - 为默认方案信息添加带提示的 Info 图标和 Tooltip - 优化模板缩进和结构,提升可读性 feat(contract-manage): 优化合同管理搜索和操作栏体验 - 允许签约类型字段作为搜索条件且支持排序和提示 - 将签约类型从快捷搜索区移动到标准搜索表单中 - 废除冗余的 contractSignType 状态,使用表单绑定自动处理 - 调整搜索栏快捷筛选区域顺序,实现与按钮组的视觉统一 fix(contract-manage): 修正底部操作栏文案及按钮显示逻辑 - 底部操作栏将“关闭”文案修改为“取消”,符合统一规范 - 草稿编辑页底部按钮增加[暂存/提交临时/提交正式],一致新增页操作 - 按钮样式调整,采用右侧对齐并使用按键间距12px替代gap style(contract-manage-change): 统一变更页底部操作栏样式和交互 - 底部操作栏使用固定悬浮布局,避免内容被遮挡 - 调整按钮顺序为[取消][提交],并修改“关闭”为“取消” - 增加统一的按钮间距与操作栏背景和阴影样式 - 为页面容器添加底部内边距,保障悬浮栏空间 style(contract-manage): 修复“合同文件”标题样式加粗问题 - 补充 scoped 样式,利用 :deep 影响子组件中标题的字体加粗和颜色 fix(customer-archive): 调整文本行高以优化显示效果 - 将内容文本的行高从18px调整为16px,提升视觉紧凑度 style(customer-archive): 调整必填项标签布局 - 删除因padding造成的标签视觉错位,确保label与控件垂直居中对齐
This commit is contained in:
@@ -33,16 +33,7 @@
|
||||
</template>
|
||||
|
||||
<template #search-menu>
|
||||
<div v-show="searchExpanded" class="contract-manage-page__expiry-search">
|
||||
<span>签约类型:</span>
|
||||
<el-select v-model="contractSignType" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in signTypeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<div class="contract-manage-page__expiry-search">
|
||||
<el-check-tag
|
||||
v-for="item in expiryTagOptions"
|
||||
:key="item.value"
|
||||
@@ -55,7 +46,7 @@
|
||||
</template>
|
||||
|
||||
<template #contractName="{ row }">
|
||||
<el-link v-if="row.contractName" type="primary" @click.stop="openDetail(row)">
|
||||
<el-link v-if="row.contractName" type="primary" class="contract-name-cell" @click.stop="openDetail(row)">
|
||||
{{ row.contractName }}
|
||||
</el-link>
|
||||
<span v-else>-</span>
|
||||
@@ -492,8 +483,8 @@
|
||||
</el-form>
|
||||
|
||||
<div class="contract-manage-page__footer">
|
||||
<el-button @click="closeForm">关闭</el-button>
|
||||
<template v-if="formMode === 'add'">
|
||||
<el-button @click="closeForm">取消</el-button>
|
||||
<template v-if="formMode === 'add' || isDraftEdit">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@@ -1111,7 +1102,6 @@ export default {
|
||||
page: { currentPage: 1, pageSize: 10, pageSizes: [10, 20, 50, 100], total: 0 },
|
||||
selectionList: [],
|
||||
searchExpanded: false,
|
||||
contractSignType: '',
|
||||
contractExpiryScope: '',
|
||||
contractExpiryStats: { all: 0, within30: 0, within90: 0, over90: 0, expired: 0 },
|
||||
expiryTagOptions: [
|
||||
@@ -1215,6 +1205,10 @@ export default {
|
||||
formMode() {
|
||||
return this.$route.query.mode === 'edit' ? 'edit' : 'add';
|
||||
},
|
||||
// 草稿(approvalStatus=draft)编辑页:按钮与新增页一致(暂存/提交临时/提交正式)
|
||||
isDraftEdit() {
|
||||
return this.formMode === 'edit' && this.form.approvalStatus === 'draft';
|
||||
},
|
||||
formPageTitle() {
|
||||
return this.$route.query.name || `${this.formMode === 'edit' ? '编辑' : '新增'}合同管理`;
|
||||
},
|
||||
@@ -1397,7 +1391,6 @@ export default {
|
||||
const query = this.normalizeSearch({
|
||||
...params,
|
||||
...this.query,
|
||||
...(this.contractSignType ? { signType: this.contractSignType } : {}),
|
||||
...(this.contractExpiryScope ? { expireScope: this.contractExpiryScope } : {}),
|
||||
});
|
||||
this.api
|
||||
@@ -1421,7 +1414,6 @@ export default {
|
||||
},
|
||||
searchReset() {
|
||||
this.query = {};
|
||||
this.contractSignType = '';
|
||||
this.contractExpiryScope = '';
|
||||
this.page.currentPage = 1;
|
||||
this.onLoad(this.page);
|
||||
@@ -2103,11 +2095,13 @@ export default {
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
padding-top: 8px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.el-select {
|
||||
width: 180px;
|
||||
}
|
||||
// 将 #search-menu slot 容器(即"时间段快捷筛选"组)排到「查询 / 重置 / 收起」之前;
|
||||
// .avue-form__menu 本身就是 flex + flex-end,整组内容自然靠右,无需额外推挤
|
||||
:deep(.avue-crud__search .avue-form__menu > .contract-manage-page__expiry-search) {
|
||||
order: -1;
|
||||
}
|
||||
|
||||
&__footer {
|
||||
@@ -2119,13 +2113,17 @@ export default {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
gap: 8px;
|
||||
min-height: 64px;
|
||||
box-sizing: border-box;
|
||||
padding: 12px 24px;
|
||||
background: #fff;
|
||||
border-top: 1px solid #eff1f7;
|
||||
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
|
||||
|
||||
// 统一 12px 间距,与全站底部操作栏(去 gap,由相邻按钮 margin 提供)一致
|
||||
.el-button + .el-button {
|
||||
margin-left: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
&__flow {
|
||||
@@ -2144,6 +2142,17 @@ export default {
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
// 搜索区域白底卡片包裹
|
||||
:deep(.avue-crud__search) {
|
||||
background-color: #fff;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
|
||||
:deep(.avue-crud__search:not(.el-card)) {
|
||||
padding: 12px 12px 4px;
|
||||
}
|
||||
|
||||
&--form {
|
||||
min-height: 100%;
|
||||
padding-bottom: 72px;
|
||||
@@ -2180,7 +2189,8 @@ export default {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
|
||||
> .dialog-section-title {
|
||||
> .dialog-section-title,
|
||||
:deep(.dialog-section-title) {
|
||||
margin-bottom: 20px;
|
||||
color: #303133;
|
||||
font-size: 16px;
|
||||
|
||||
Reference in New Issue
Block a user