From 53d9781c5d1acb257b252f328243d894ae8ba606 Mon Sep 17 00:00:00 2001 From: Codewoc <947380458@qq.com> Date: Wed, 1 Apr 2026 11:17:01 +0800 Subject: [PATCH] style(review-meeting): optimize list readability --- src/views/review/meeting/AllProjectList.vue | 185 +++++++++++++----- src/views/review/meeting/MeetingEdit.vue | 95 ++++++--- src/views/review/meeting/ProjectList.vue | 205 ++++++++++++++------ src/views/review/meeting/index.vue | 178 ++++++++++++----- 4 files changed, 471 insertions(+), 192 deletions(-) diff --git a/src/views/review/meeting/AllProjectList.vue b/src/views/review/meeting/AllProjectList.vue index 417ef1923..6b87621b6 100644 --- a/src/views/review/meeting/AllProjectList.vue +++ b/src/views/review/meeting/AllProjectList.vue @@ -76,49 +76,51 @@ - - - + + + - - + + - - - - + + + + - + - + - + @@ -177,7 +179,7 @@ diff --git a/src/views/review/meeting/MeetingEdit.vue b/src/views/review/meeting/MeetingEdit.vue index db08ec2a2..a1ac50d35 100644 --- a/src/views/review/meeting/MeetingEdit.vue +++ b/src/views/review/meeting/MeetingEdit.vue @@ -166,16 +166,16 @@
- - + + - + - - + +
@@ -651,12 +651,12 @@ const handleBack = () => { display: flex; align-items: center; gap: 8px; - margin-bottom: 20px; - padding-bottom: 14px; + margin-bottom: 16px; + padding-bottom: 12px; border-bottom: 1px solid #e1e7f0; } .back-btn { - font-size: 28px; + font-size: 30px; color: #295abc; cursor: pointer; line-height: 1; @@ -664,18 +664,18 @@ const handleBack = () => { } .back-btn:hover { opacity: 0.75; } .page-title { - font-size: 22px; + font-size: 24px; font-weight: 600; color: #333; } /* ── 分区标题 ── */ .section-header { - margin: 20px 0 14px; + margin: 18px 0 12px; } .section-title { position: relative; - font-size: 16px; + font-size: 18px; font-weight: 600; color: #333; padding-left: 12px; @@ -693,11 +693,26 @@ const handleBack = () => { /* ── 表单 item 字号 ── */ :deep(.el-form-item__label) { - font-size: 14px; + font-size: 16px; color: #555; } -:deep(.el-input__inner) { - font-size: 14px; +:deep(.el-form-item) { + margin-bottom: 20px; +} +:deep(.el-input__inner), +:deep(.el-textarea__inner), +:deep(.el-select__selected-item), +:deep(.el-select__placeholder), +:deep(.el-range-input) { + font-size: 16px; +} +:deep(.el-input__wrapper), +:deep(.el-select__wrapper), +:deep(.el-range-editor.el-input__wrapper) { + min-height: 42px; +} +:deep(.el-form-item__content) { + line-height: 1.5; } /* ── 议程附件 ── */ @@ -710,6 +725,8 @@ const handleBack = () => { display: flex; align-items: center; gap: 8px; + flex-wrap: wrap; + font-size: 16px; } .agenda-action-row { display: flex; @@ -718,7 +735,7 @@ const handleBack = () => { flex-wrap: wrap; } .upload-hint { - font-size: 12px; + font-size: 14px; color: #999; } @@ -731,7 +748,7 @@ const handleBack = () => { margin-bottom: 12px; } .import-hint { - font-size: 12px; + font-size: 14px; color: #999; } .mt-10 { @@ -740,13 +757,13 @@ const handleBack = () => { /* ── 按钮 ── */ .btn-upload { - height: 34px; - padding: 0 14px; + height: 38px; + padding: 0 16px; background-color: #fff; border: 1px solid #295abc; border-radius: 6px; color: #295abc; - font-size: 14px; + font-size: 15px; cursor: pointer; transition: all 0.2s; } @@ -755,13 +772,13 @@ const handleBack = () => { .btn-generate { display: inline-flex; align-items: center; - height: 34px; - padding: 0 14px; + height: 38px; + padding: 0 16px; background-color: #fff; border: 1px solid #3aa76d; border-radius: 6px; color: #3aa76d; - font-size: 14px; + font-size: 15px; cursor: pointer; transition: all 0.2s; } @@ -776,12 +793,12 @@ const handleBack = () => { .btn-default { display: inline-flex; align-items: center; - height: 36px; - padding: 0 16px; + height: 40px; + padding: 0 18px; background-color: #fff; border: 1px solid #d5d5d5; border-radius: 6px; - font-size: 14px; + font-size: 15px; color: #333; cursor: pointer; transition: all 0.2s; @@ -795,12 +812,12 @@ const handleBack = () => { .btn-primary { display: inline-flex; align-items: center; - height: 36px; + height: 40px; padding: 0 20px; background-color: #295abc; border: none; border-radius: 6px; - font-size: 14px; + font-size: 15px; color: #fff; cursor: pointer; transition: background-color 0.2s; @@ -810,22 +827,36 @@ const handleBack = () => { /* ── 底部 ── */ .form-footer { - margin-top: 24px; + margin-top: 20px; display: flex; gap: 12px; } /* ── 项目预览表格 ── */ -:deep(.el-table .el-table__header-wrapper th) { +:deep(.projects-preview-table .el-table__header-wrapper th) { background-color: #eef2fb; color: #333; font-weight: 600; - font-size: 14px; + font-size: 18px; border-color: #e1e7f0; } -:deep(.el-table .el-table__body td) { - font-size: 14px; +:deep(.projects-preview-table .el-table__header-wrapper th.el-table__cell) { + padding-top: 12px; + padding-bottom: 12px; +} +:deep(.projects-preview-table .el-table__header-wrapper th .cell) { + justify-content: center; + text-align: center; +} +:deep(.projects-preview-table .el-table__body td) { + font-size: 18px; color: #333; border-color: #e1e7f0; + padding-top: 12px; + padding-bottom: 12px; +} +:deep(.projects-preview-table .el-table__body td .cell), +:deep(.projects-preview-table .el-table__header-wrapper th .cell) { + line-height: 1.5; } diff --git a/src/views/review/meeting/ProjectList.vue b/src/views/review/meeting/ProjectList.vue index 091ad53b8..fc839d1d7 100644 --- a/src/views/review/meeting/ProjectList.vue +++ b/src/views/review/meeting/ProjectList.vue @@ -45,7 +45,6 @@ - - + + - - - + + + - + - + - + - + - + - + - + - + - + - + @@ -240,6 +234,7 @@ const total = ref(0) const meetingInfo = ref({}) const tableRef = ref() const selectedRows = ref([]) +const useFixedActionColumn = ref(true) let sortableInstance: Sortable | null = null const STATUS_LABEL: Record = { 0: '待召开', 1: '正在召开', 2: '已结束', 3: '已取消' } @@ -265,6 +260,10 @@ const queryParams = reactive({ reviewMeetingId }) +const syncActionColumnMode = () => { + useFixedActionColumn.value = window.innerWidth >= 1680 +} + const getList = async () => { loading.value = true try { @@ -501,11 +500,14 @@ const goToDetail = (row: ReviewMeetingProjectRespVO) => { } onMounted(async () => { + syncActionColumnMode() + window.addEventListener('resize', syncActionColumnMode) meetingInfo.value = await getReviewMeeting(reviewMeetingId) await getList() }) onBeforeUnmount(() => { + window.removeEventListener('resize', syncActionColumnMode) sortableInstance?.destroy() sortableInstance = null }) @@ -514,42 +516,42 @@ onBeforeUnmount(() => {