verce-vue-test 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verce-vue-test",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "scripts": {
package/src/App.vue CHANGED
@@ -19,6 +19,7 @@ import {
19
19
  const isCollapse = ref(false)
20
20
  const route = useRoute()
21
21
  const isFullscreenRoute = computed(() => route.meta.fullscreen === true)
22
+ const isNoticeRoute = computed(() => route.path.startsWith('/notice-announcement'))
22
23
 
23
24
  function toggleCollapse() {
24
25
  isCollapse.value = !isCollapse.value
@@ -121,9 +122,38 @@ function toggleCollapse() {
121
122
  </el-dropdown>
122
123
  </el-header>
123
124
 
124
- <el-main style="height: calc(100vh - 60px); overflow-y: auto">
125
+ <el-main
126
+ class="app-main"
127
+ :class="{ 'is-notice-route': isNoticeRoute }"
128
+ style="height: calc(100vh - 60px); overflow-y: auto"
129
+ >
125
130
  <RouterView />
126
131
  </el-main>
127
132
  </el-container>
128
133
  </el-container>
129
134
  </template>
135
+
136
+ <style scoped>
137
+ .app-main.is-notice-route {
138
+ scrollbar-width: thin;
139
+ scrollbar-color: #8fa7c9 #edf4ff;
140
+ }
141
+
142
+ .app-main.is-notice-route::-webkit-scrollbar {
143
+ width: 8px;
144
+ }
145
+
146
+ .app-main.is-notice-route::-webkit-scrollbar-track {
147
+ background: #edf4ff;
148
+ }
149
+
150
+ .app-main.is-notice-route::-webkit-scrollbar-thumb {
151
+ border: 2px solid #edf4ff;
152
+ border-radius: 999px;
153
+ background: #8fa7c9;
154
+ }
155
+
156
+ .app-main.is-notice-route::-webkit-scrollbar-thumb:hover {
157
+ background: #6f8cb7;
158
+ }
159
+ </style>
@@ -1,38 +1,53 @@
1
1
  <script setup lang="ts">
2
2
  import { ref } from 'vue'
3
+ import { useRouter } from 'vue-router'
3
4
  import { Search, Top } from '@element-plus/icons-vue'
4
5
  import noticeHeroBanner from '@/assets/notice-hero-banner.jpg'
5
6
 
6
7
  interface NoticeItem {
8
+ id: number
7
9
  title: string
8
10
  date: string
9
11
  pinned?: boolean
10
- detailPath?: string
11
12
  }
12
13
 
13
14
  const notices: NoticeItem[] = [
14
15
  {
16
+ id: 1001,
15
17
  title: '关于系统维护升级的公告(2024年6月15日)',
16
18
  date: '2024-06-10',
17
19
  pinned: true,
18
- detailPath: '/notice-announcement/detail',
19
20
  },
20
- { title: '关于优化预填报流程的通知', date: '2024-06-08' },
21
- { title: '端午节放假安排通知', date: '2024-06-05' },
22
- { title: '系统性能优化完成公告', date: '2024-06-03' },
23
- { title: '数据安全重要提醒', date: '2024-05-30' },
24
- { title: '关于系统新增功能的使用说明', date: '2024-05-28' },
25
- { title: '五一劳动节放假安排通知', date: '2024-04-25' },
26
- { title: '系统升级完成公告', date: '2024-04-15' },
21
+ { id: 1002, title: '关于优化预填报流程的通知', date: '2024-06-08' },
22
+ { id: 1003, title: '端午节放假安排通知', date: '2024-06-05' },
23
+ { id: 1004, title: '系统性能优化完成公告', date: '2024-06-03' },
24
+ { id: 1005, title: '数据安全重要提醒', date: '2024-05-30' },
25
+ { id: 1006, title: '关于系统新增功能的使用说明', date: '2024-05-28' },
26
+ { id: 1007, title: '五一劳动节放假安排通知', date: '2024-04-25' },
27
+ { id: 1008, title: '系统升级完成公告', date: '2024-04-15' },
27
28
  ]
28
29
 
29
30
  const currentPage = ref(1)
31
+ const router = useRouter()
32
+
33
+ function goToNoticeDetail(item: NoticeItem) {
34
+ router.push({
35
+ name: 'noticeDetail',
36
+ query: { id: String(item.id) },
37
+ })
38
+ }
30
39
  </script>
31
40
 
32
41
  <template>
33
42
  <main class="notice-page">
34
43
  <section class="notice-hero" aria-label="通知公告">
35
- <img class="notice-hero__image" :src="noticeHeroBanner" alt="" aria-hidden="true" />
44
+ <img
45
+ class="notice-hero__image"
46
+ :src="noticeHeroBanner"
47
+ alt=""
48
+ aria-hidden="true"
49
+ decoding="async"
50
+ />
36
51
 
37
52
  <div class="notice-hero__copy">
38
53
  <h1>通知公告</h1>
@@ -54,13 +69,13 @@ const currentPage = ref(1)
54
69
 
55
70
  <ul class="notice-list">
56
71
  <li v-for="item in notices" :key="`${item.title}-${item.date}`" class="notice-row">
57
- <RouterLink class="notice-title" :to="item.detailPath || '/notice-announcement/detail'">
72
+ <button class="notice-title" type="button" @click="goToNoticeDetail(item)">
58
73
  <span v-if="item.pinned" class="pin-tag">
59
74
  <el-icon :size="18"><Top /></el-icon>
60
75
  置顶
61
76
  </span>
62
77
  <span>{{ item.title }}</span>
63
- </RouterLink>
78
+ </button>
64
79
  <time :datetime="item.date">{{ item.date }}</time>
65
80
  </li>
66
81
  </ul>
@@ -81,13 +96,10 @@ const currentPage = ref(1)
81
96
 
82
97
  <style scoped>
83
98
  .notice-page {
84
- height: 100vh;
85
- min-height: 100vh;
86
- overflow-x: hidden;
87
- overflow-y: auto;
99
+ min-height: 100%;
100
+ overflow: visible;
88
101
  color: #10182d;
89
102
  background:
90
- radial-gradient(circle at 86% 20%, rgba(26, 111, 255, 0.1), transparent 24%),
91
103
  linear-gradient(180deg, #f9fbff 0%, #f4f7fc 42%, #f7f9fd 100%);
92
104
  font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
93
105
  }
@@ -95,10 +107,11 @@ const currentPage = ref(1)
95
107
  .notice-hero {
96
108
  position: relative;
97
109
  overflow: hidden;
98
- min-height: 283px;
99
- padding: 56px clamp(28px, 4.6vw, 72px) 34px;
110
+ min-height: 150px;
111
+ padding: 32px clamp(28px, 4.6vw, 72px) 24px;
100
112
  border-bottom: 1px solid rgba(219, 226, 237, 0.82);
101
113
  background: #eef6ff;
114
+ transform: translateZ(0);
102
115
  }
103
116
 
104
117
  .notice-hero__image {
@@ -120,7 +133,7 @@ const currentPage = ref(1)
120
133
 
121
134
  .notice-hero__copy h1 {
122
135
  margin: 0;
123
- font-size: clamp(32px, 3vw, 42px);
136
+ font-size: clamp(28px, 2.6vw, 36px);
124
137
  line-height: 1.18;
125
138
  font-weight: 800;
126
139
  letter-spacing: 0;
@@ -128,8 +141,8 @@ const currentPage = ref(1)
128
141
  }
129
142
 
130
143
  .notice-hero__copy p {
131
- margin: 22px 0 0;
132
- font-size: 17px;
144
+ margin: 18px 0 0;
145
+ font-size: 15px;
133
146
  line-height: 1.7;
134
147
  color: #748098;
135
148
  }
@@ -142,7 +155,7 @@ const currentPage = ref(1)
142
155
  display: flex;
143
156
  align-items: center;
144
157
  width: min(288px, calc(100vw - 56px));
145
- height: 45px;
158
+ height: 42px;
146
159
  padding: 0 15px 0 16px;
147
160
  border: 1px solid #d5ddea;
148
161
  border-radius: 8px;
@@ -157,7 +170,7 @@ const currentPage = ref(1)
157
170
  color: #24314b;
158
171
  background: transparent;
159
172
  font: inherit;
160
- font-size: 16px;
173
+ font-size: 14px;
161
174
  }
162
175
 
163
176
  .notice-search input::placeholder {
@@ -174,11 +187,11 @@ const currentPage = ref(1)
174
187
  z-index: 4;
175
188
  width: calc(100% - clamp(36px, 3.7vw, 56px));
176
189
  margin: -1px auto 32px;
177
- padding: 37px 42px 22px;
190
+ padding: 32px 42px 20px;
178
191
  border: 1px solid #e1e7f0;
179
192
  border-radius: 8px;
180
193
  background: rgba(255, 255, 255, 0.93);
181
- box-shadow: 0 14px 42px rgba(32, 58, 95, 0.06);
194
+ box-shadow: 0 8px 24px rgba(32, 58, 95, 0.05);
182
195
  }
183
196
 
184
197
  .notice-table__head,
@@ -190,11 +203,11 @@ const currentPage = ref(1)
190
203
  }
191
204
 
192
205
  .notice-table__head {
193
- height: 44px;
206
+ height: 40px;
194
207
  padding: 0 23px;
195
208
  border-bottom: 1px solid #dfe6f0;
196
209
  color: #6e7b94;
197
- font-size: 17px;
210
+ font-size: 15px;
198
211
  font-weight: 500;
199
212
  }
200
213
 
@@ -205,7 +218,7 @@ const currentPage = ref(1)
205
218
  }
206
219
 
207
220
  .notice-row {
208
- min-height: 67px;
221
+ min-height: 60px;
209
222
  padding: 0 23px;
210
223
  border-bottom: 1px solid #e8edf5;
211
224
  }
@@ -215,11 +228,17 @@ const currentPage = ref(1)
215
228
  align-items: center;
216
229
  min-width: 0;
217
230
  gap: 16px;
231
+ padding: 0;
232
+ border: 0;
218
233
  color: #0e172b;
234
+ background: transparent;
235
+ cursor: pointer;
219
236
  text-decoration: none;
220
- font-size: 18px;
237
+ font-size: 16px;
221
238
  line-height: 1.45;
222
239
  font-weight: 500;
240
+ font-family: inherit;
241
+ text-align: left;
223
242
  }
224
243
 
225
244
  .notice-title:hover {
@@ -236,13 +255,13 @@ const currentPage = ref(1)
236
255
  border-radius: 4px;
237
256
  color: #ff2e25;
238
257
  background: #ffe8e6;
239
- font-size: 16px;
258
+ font-size: 14px;
240
259
  font-weight: 600;
241
260
  }
242
261
 
243
262
  .notice-row time {
244
263
  color: #71809c;
245
- font-size: 18px;
264
+ font-size: 16px;
246
265
  line-height: 1.4;
247
266
  }
248
267
 
@@ -256,8 +275,8 @@ const currentPage = ref(1)
256
275
 
257
276
  @media (max-width: 920px) {
258
277
  .notice-hero {
259
- min-height: 300px;
260
- padding-top: 94px;
278
+ min-height: 150px;
279
+ padding-top: 68px;
261
280
  }
262
281
 
263
282
  .notice-hero__image {
@@ -283,8 +302,8 @@ const currentPage = ref(1)
283
302
 
284
303
  @media (max-width: 640px) {
285
304
  .notice-hero {
286
- min-height: 260px;
287
- padding: 86px 22px 26px;
305
+ min-height: 150px;
306
+ padding: 64px 22px 20px;
288
307
  }
289
308
 
290
309
  .notice-search {
@@ -334,55 +353,4 @@ const currentPage = ref(1)
334
353
  }
335
354
  }
336
355
 
337
- :deep(.el-pagination) {
338
- --el-pagination-button-width: 45px;
339
- --el-pagination-button-height: 43px;
340
- --el-pagination-border-radius: 7px;
341
- --el-pagination-bg-color: #ffffff;
342
- --el-pagination-button-color: #0f1729;
343
- --el-pagination-hover-color: #0b75ff;
344
- --el-pagination-font-size: 17px;
345
- align-items: center;
346
- gap: 11px;
347
- font-weight: 400;
348
- }
349
-
350
- :deep(.el-pagination.is-background .btn-prev),
351
- :deep(.el-pagination.is-background .btn-next),
352
- :deep(.el-pagination.is-background .el-pager li) {
353
- margin: 0;
354
- border: 1px solid #dde4ee;
355
- background: #ffffff;
356
- box-shadow: 0 5px 14px rgba(31, 59, 94, 0.04);
357
- }
358
-
359
- :deep(.el-pagination.is-background .el-pager li.is-active) {
360
- border-color: #0075ff;
361
- background: linear-gradient(180deg, #1486ff, #006df0);
362
- box-shadow: 0 8px 18px rgba(0, 110, 245, 0.24);
363
- }
364
-
365
- :deep(.el-pagination__jump) {
366
- margin-left: 28px;
367
- color: #6a778f;
368
- font-size: 17px;
369
- }
370
-
371
- :deep(.el-pagination__goto) {
372
- margin-right: 12px;
373
- }
374
-
375
- :deep(.el-pagination__classifier) {
376
- margin-left: 12px;
377
- }
378
-
379
- :deep(.el-pagination__editor.el-input) {
380
- width: 67px;
381
- height: 43px;
382
- }
383
-
384
- :deep(.el-pagination__editor.el-input .el-input__wrapper) {
385
- border-radius: 7px;
386
- box-shadow: 0 0 0 1px #dde4ee inset, 0 5px 14px rgba(31, 59, 94, 0.04);
387
- }
388
356
  </style>
@@ -1,60 +1,106 @@
1
1
  <script setup lang="ts">
2
- import { Top } from '@element-plus/icons-vue'
2
+ import { computed } from 'vue'
3
+ import { useRoute, useRouter } from 'vue-router'
4
+ import { ArrowLeft, Top } from '@element-plus/icons-vue'
5
+
6
+ interface NoticeDetail {
7
+ id: number
8
+ title: string
9
+ publishTime: string
10
+ views: number
11
+ pinned?: boolean
12
+ contentHtml: string
13
+ }
14
+
15
+ const noticeDetails: NoticeDetail[] = [
16
+ {
17
+ id: 1001,
18
+ title: '关于系统维护升级的公告(2024年6月15日)',
19
+ publishTime: '2024-06-10 10:00:00',
20
+ views: 1268,
21
+ pinned: true,
22
+ contentHtml: `
23
+ <p><strong>尊敬的用户:</strong></p>
24
+ <p style="text-indent: 2em;">为提供更稳定、高效的服务,系统将于以下时间进行维护升级。维护期间,系统部分功能将受到影响,给您带来的不便,敬请谅解!</p>
25
+ <h2>一、维护时间</h2>
26
+ <p>2024年6月15日(周六)02:00 - 06:00(预计4小时)</p>
27
+ <h2>二、维护范围</h2>
28
+ <p>系统整体升级维护,期间将暂停服务。</p>
29
+ <h2>三、影响范围</h2>
30
+ <ol>
31
+ <li>系统登录、项目管理、任务协作等功能将无法使用;</li>
32
+ <li>维护期间可能无法正常访问平台;</li>
33
+ <li>已进行的操作将在系统恢复后正常保存。</li>
34
+ </ol>
35
+ <blockquote>温馨提示:维护期间请勿重复提交业务数据,避免恢复后出现重复记录。</blockquote>
36
+ <h2>四、注意事项</h2>
37
+ <ul>
38
+ <li>请您提前安排好相关工作,避免在维护期间进行重要操作;</li>
39
+ <li>维护完成后,系统将自动恢复服务,无需您进行任何操作;</li>
40
+ <li>如有紧急问题,请联系管理员。</li>
41
+ </ul>
42
+ <p>感谢您对我们工作的支持与理解!</p>
43
+ <p style="text-align: right;">项目管理平台运营团队<br />2024年6月10日</p>
44
+ `,
45
+ },
46
+ {
47
+ id: 1002,
48
+ title: '关于优化预填报流程的通知',
49
+ publishTime: '2024-06-08 09:30:00',
50
+ views: 986,
51
+ contentHtml: `
52
+ <p><strong>尊敬的用户:</strong></p>
53
+ <p>为提升预填报效率,平台已对填报步骤、校验提示和保存逻辑进行优化,请您在办理相关业务时关注页面提示。</p>
54
+ <h2>一、优化内容</h2>
55
+ <ul>
56
+ <li>精简重复填写字段;</li>
57
+ <li>优化必填项校验提示;</li>
58
+ <li>增强草稿保存稳定性。</li>
59
+ </ul>
60
+ <h2>二、生效时间</h2>
61
+ <p>本次优化自2024年6月8日起正式生效。</p>
62
+ <p style="text-align: right;">项目管理平台运营团队<br />2024年6月8日</p>
63
+ `,
64
+ },
65
+ ]
66
+
67
+ const route = useRoute()
68
+ const router = useRouter()
69
+ const noticeId = computed(() => Number(route.query.id))
70
+ const notice = computed(() => noticeDetails.find((item) => item.id === noticeId.value))
71
+
72
+ function goBack() {
73
+ router.back()
74
+ }
3
75
  </script>
4
76
 
5
77
  <template>
6
78
  <main class="notice-detail-page">
7
- <article class="notice-article">
8
- <div class="pin-tag">
9
- <el-icon :size="18"><Top /></el-icon>
10
- 置顶
79
+ <article v-if="notice" class="notice-article">
80
+ <button class="back-button" type="button" @click="goBack">
81
+ <el-icon :size="16"><ArrowLeft /></el-icon>
82
+ 返回
83
+ </button>
84
+
85
+ <div class="article-title-row">
86
+ <div v-if="notice.pinned" class="pin-tag">
87
+ <el-icon :size="18"><Top /></el-icon>
88
+ 置顶
89
+ </div>
90
+ <h1>{{ notice.title }}</h1>
11
91
  </div>
12
92
 
13
- <h1>关于系统维护升级的公告(2024年6月15日)</h1>
14
-
15
93
  <div class="article-meta">
16
- <span>发布时间: 2024-06-10 10:00:00</span>
17
- <span>浏览量: 1268</span>
94
+ <span>发布时间: {{ notice.publishTime }}</span>
95
+ <span>浏览量: {{ notice.views }}</span>
18
96
  </div>
19
97
 
20
98
  <div class="article-divider"></div>
21
99
 
22
- <section class="article-content">
23
- <p class="salutation">尊敬的用户:</p>
24
-
25
- <p class="indent">
26
- 为提供更稳定、高效的服务,系统将于以下时间进行维护升级。维护期间,系统部分功能将受到影响,
27
- 给您带来的不便,敬请谅解!
28
- </p>
29
-
30
- <h2>一、维护时间</h2>
31
- <p>2024年6月15日(周六)02:00 - 06:00(预计4小时)</p>
32
-
33
- <h2>二、维护范围</h2>
34
- <p>系统整体升级维护,期间将暂停服务。</p>
35
-
36
- <h2>三、影响范围</h2>
37
- <ol>
38
- <li>系统登录、项目管理、任务协作等功能将无法使用;</li>
39
- <li>维护期间可能无法正常访问平台;</li>
40
- <li>已进行的操作将在系统恢复后正常保存。</li>
41
- </ol>
42
-
43
- <h2>四、注意事项</h2>
44
- <ol>
45
- <li>请您提前安排好相关工作,避免在维护期间进行重要操作;</li>
46
- <li>维护完成后,系统将自动恢复服务,无需您进行任何操作;</li>
47
- <li>如有紧急问题,请联系管理员。</li>
48
- </ol>
49
-
50
- <p>感谢您对我们工作的支持与理解!</p>
51
-
52
- <footer class="article-signature">
53
- <p>项目管理平台运营团队</p>
54
- <p>2024年6月10日</p>
55
- </footer>
56
- </section>
100
+ <section class="article-content" v-html="notice.contentHtml"></section>
57
101
  </article>
102
+
103
+ <el-empty v-else class="notice-empty" description="未找到公告详情" />
58
104
  </main>
59
105
  </template>
60
106
 
@@ -73,30 +119,59 @@ import { Top } from '@element-plus/icons-vue'
73
119
  .notice-article {
74
120
  width: min(100%, 1174px);
75
121
  margin: 0 auto;
76
- padding: 46px 46px 62px;
122
+ padding: 34px 42px 54px;
77
123
  border: 1px solid #e1e7f0;
78
124
  border-radius: 8px;
79
125
  background: rgba(255, 255, 255, 0.96);
80
126
  box-shadow: 0 14px 42px rgba(32, 58, 95, 0.06);
81
127
  }
82
128
 
129
+ .back-button {
130
+ display: inline-flex;
131
+ align-items: center;
132
+ gap: 5px;
133
+ height: 32px;
134
+ margin: 0 0 22px;
135
+ padding: 0 12px;
136
+ border: 1px solid #d8e1ee;
137
+ border-radius: 6px;
138
+ color: #52627a;
139
+ background: #ffffff;
140
+ cursor: pointer;
141
+ font-family: inherit;
142
+ font-size: 14px;
143
+ }
144
+
145
+ .back-button:hover {
146
+ border-color: #1677ff;
147
+ color: #1677ff;
148
+ }
149
+
83
150
  .pin-tag {
84
151
  display: inline-flex;
152
+ flex: 0 0 auto;
85
153
  align-items: center;
86
154
  gap: 4px;
87
- height: 37px;
88
- padding: 0 10px;
155
+ height: 30px;
156
+ padding: 0 9px;
89
157
  border-radius: 4px;
90
158
  color: #ff2e25;
91
159
  background: #ffe8e6;
92
- font-size: 17px;
160
+ font-size: 14px;
93
161
  font-weight: 600;
94
162
  }
95
163
 
164
+ .article-title-row {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 12px;
168
+ margin: 22px 0 18px;
169
+ }
170
+
96
171
  .notice-article h1 {
97
- margin: 33px 0 22px;
172
+ margin: 0;
98
173
  color: #080f20;
99
- font-size: clamp(28px, 3vw, 38px);
174
+ font-size: clamp(24px, 2.3vw, 32px);
100
175
  line-height: 1.26;
101
176
  font-weight: 800;
102
177
  letter-spacing: 0;
@@ -107,59 +182,66 @@ import { Top } from '@element-plus/icons-vue'
107
182
  flex-wrap: wrap;
108
183
  gap: 34px 90px;
109
184
  color: #6f7e98;
110
- font-size: 18px;
185
+ font-size: 15px;
111
186
  line-height: 1.5;
112
187
  }
113
188
 
114
189
  .article-divider {
115
190
  height: 1px;
116
- margin: 35px 0 26px;
191
+ margin: 28px 0 22px;
117
192
  background: #dfe6f0;
118
193
  }
119
194
 
120
195
  .article-content {
121
- font-size: 21px;
122
- line-height: 2.08;
196
+ font-size: 16px;
197
+ line-height: 1.95;
123
198
  }
124
199
 
125
- .article-content p {
126
- margin: 0 0 28px;
200
+ .article-content :deep(p) {
201
+ margin: 0 0 18px;
127
202
  }
128
203
 
129
- .article-content .salutation {
130
- margin-bottom: 32px;
204
+ .article-content :deep(strong) {
131
205
  font-weight: 700;
132
206
  }
133
207
 
134
- .article-content .indent {
135
- text-indent: 2em;
136
- }
137
-
138
- .article-content h2 {
139
- margin: 43px 0 10px;
208
+ .article-content :deep(h2) {
209
+ margin: 30px 0 8px;
140
210
  color: #0d1527;
141
- font-size: 22px;
211
+ font-size: 17px;
142
212
  line-height: 1.75;
143
213
  font-weight: 800;
144
214
  letter-spacing: 0;
145
215
  }
146
216
 
147
- .article-content ol {
148
- margin: 0 0 28px 30px;
217
+ .article-content :deep(ol),
218
+ .article-content :deep(ul) {
219
+ margin: 0 0 20px 26px;
149
220
  padding: 0;
150
221
  }
151
222
 
152
- .article-content li {
223
+ .article-content :deep(li) {
153
224
  padding-left: 7px;
225
+ margin-bottom: 5px;
154
226
  }
155
227
 
156
- .article-signature {
157
- margin-top: 52px;
158
- text-align: right;
228
+ .article-content :deep(blockquote) {
229
+ margin: 18px 0 22px;
230
+ padding: 12px 16px;
231
+ border-left: 4px solid #1677ff;
232
+ border-radius: 4px;
233
+ color: #52627a;
234
+ background: #f4f8ff;
159
235
  }
160
236
 
161
- .article-signature p {
162
- margin: 0 0 8px;
237
+ .notice-empty {
238
+ width: min(100%, 1174px);
239
+ min-height: 420px;
240
+ margin: 0 auto;
241
+ border: 1px solid #e1e7f0;
242
+ border-radius: 8px;
243
+ background: rgba(255, 255, 255, 0.96);
244
+ box-shadow: 0 14px 42px rgba(32, 58, 95, 0.06);
163
245
  }
164
246
 
165
247
  @media (max-width: 768px) {
@@ -168,7 +250,13 @@ import { Top } from '@element-plus/icons-vue'
168
250
  }
169
251
 
170
252
  .notice-article {
171
- padding: 28px 20px 42px;
253
+ padding: 22px 18px 38px;
254
+ }
255
+
256
+ .article-title-row {
257
+ align-items: flex-start;
258
+ flex-wrap: wrap;
259
+ gap: 8px;
172
260
  }
173
261
 
174
262
  .article-meta {
@@ -177,12 +265,12 @@ import { Top } from '@element-plus/icons-vue'
177
265
  }
178
266
 
179
267
  .article-content {
180
- font-size: 17px;
181
- line-height: 1.9;
268
+ font-size: 15px;
269
+ line-height: 1.85;
182
270
  }
183
271
 
184
- .article-content h2 {
185
- font-size: 18px;
272
+ .article-content :deep(h2) {
273
+ font-size: 16px;
186
274
  }
187
275
  }
188
276
  </style>