- 新增marginSettings响应式变量管理页面边距数值 - 计算marginStyle以动态应用边距padding样式 - 在页面右上角添加边距设置按钮,使用Popover弹出控制面板 - 边距面板支持上下左右边距数值调整,限制输入范围 - 提供恢复默认边距功能按钮 - 为边距设置按钮与面板添加样式,固定位置,提升交互体验
This commit is contained in:
@@ -39,6 +39,19 @@ const projectId = ref<string>(route.params.id as string);
|
|||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const ganttLoading = ref(false);
|
const ganttLoading = ref(false);
|
||||||
|
|
||||||
|
// 边距设置
|
||||||
|
const marginSettings = ref({
|
||||||
|
top: 16,
|
||||||
|
right: 80,
|
||||||
|
bottom: 16,
|
||||||
|
left: 16
|
||||||
|
});
|
||||||
|
|
||||||
|
// 计算边距样式
|
||||||
|
const marginStyle = computed(() => ({
|
||||||
|
padding: `${marginSettings.value.top}px ${marginSettings.value.right}px ${marginSettings.value.bottom}px ${marginSettings.value.left}px`
|
||||||
|
}));
|
||||||
|
|
||||||
// 项目详情数据
|
// 项目详情数据
|
||||||
const projectDetail = ref<ProjectDetail | null>(null);
|
const projectDetail = ref<ProjectDetail | null>(null);
|
||||||
|
|
||||||
@@ -407,7 +420,62 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="project-detail w-full">
|
<div class="project-detail w-full" :style="marginStyle">
|
||||||
|
<!-- 边距设置按钮 -->
|
||||||
|
<el-popover placement="bottom-end" :width="200" trigger="click">
|
||||||
|
<template #reference>
|
||||||
|
<el-button link class="margin-setting-btn" title="边距设置">
|
||||||
|
<component :is="useRenderIcon('ri/layout-line')" />
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
<div class="margin-setting-panel">
|
||||||
|
<div class="setting-title">页面边距设置 (px)</div>
|
||||||
|
<div class="setting-item">
|
||||||
|
<span>上边距</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="marginSettings.top"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="setting-item">
|
||||||
|
<span>右边距</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="marginSettings.right"
|
||||||
|
:min="0"
|
||||||
|
:max="200"
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="setting-item">
|
||||||
|
<span>下边距</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="marginSettings.bottom"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="setting-item">
|
||||||
|
<span>左边距</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="marginSettings.left"
|
||||||
|
:min="0"
|
||||||
|
:max="200"
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
@click="marginSettings = { top: 16, right: 80, bottom: 16, left: 16 }"
|
||||||
|
>
|
||||||
|
恢复默认
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</el-popover>
|
||||||
|
|
||||||
<!-- 顶部导航 -->
|
<!-- 顶部导航 -->
|
||||||
<div class="flex-bc mb-4">
|
<div class="flex-bc mb-4">
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
@@ -917,4 +985,51 @@ onMounted(() => {
|
|||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
color: #909399;
|
color: #909399;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 边距设置按钮
|
||||||
|
.margin-setting-btn {
|
||||||
|
position: fixed;
|
||||||
|
top: 80px;
|
||||||
|
right: 20px;
|
||||||
|
z-index: 100;
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow: 0 2px 12px rgb(0 0 0 / 10%);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 边距设置面板
|
||||||
|
.margin-setting-panel {
|
||||||
|
padding: 8px;
|
||||||
|
|
||||||
|
.setting-title {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #606266;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user