verce-vue-test 0.0.22 → 0.0.23
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 +1 -1
- package/src/App.vue +4 -0
- package/src/components/LoginSuccessNotification.vue +2 -2
- package/src/router/index.ts +5 -0
- package/src/views/ExecutiveManagementView/components/ExecutiveAccountPanel.vue +57 -3
- package/src/views/ExecutiveManagementView/components/ExecutiveReliablePanel.vue +11 -4
- package/src/views/ExecutiveManagementView/components/ExecutiveWarningOverview.vue +11 -4
- package/src/views/ExecutiveManagementView/components/ExecutiveWarningTablePanel.vue +3 -2
- package/src/views/ExecutiveManagementView/index.vue +2 -1
- package/src/views/PlaceholderView.vue +501 -0
package/package.json
CHANGED
package/src/App.vue
CHANGED
|
@@ -93,6 +93,10 @@ function toggleCollapse() {
|
|
|
93
93
|
<el-icon><Bell /></el-icon>
|
|
94
94
|
<span>通知公告</span>
|
|
95
95
|
</el-menu-item>
|
|
96
|
+
<el-menu-item index="/placeholder">
|
|
97
|
+
<el-icon><Document /></el-icon>
|
|
98
|
+
<span>占位符页面</span>
|
|
99
|
+
</el-menu-item>
|
|
96
100
|
<el-menu-item index="/about">
|
|
97
101
|
<el-icon><InfoFilled /></el-icon>
|
|
98
102
|
<span>关于</span>
|
|
@@ -92,7 +92,7 @@ withDefaults(
|
|
|
92
92
|
|
|
93
93
|
<style scoped>
|
|
94
94
|
:global(.el-notification.login-success-notification) {
|
|
95
|
-
right:
|
|
95
|
+
right: 12px;
|
|
96
96
|
left: auto;
|
|
97
97
|
width: min(380px, calc(100vw - 32px));
|
|
98
98
|
max-height: calc(100vh - 48px);
|
|
@@ -325,7 +325,7 @@ withDefaults(
|
|
|
325
325
|
|
|
326
326
|
@media (max-width: 900px) {
|
|
327
327
|
:global(.el-notification.login-success-notification) {
|
|
328
|
-
right:
|
|
328
|
+
right: 10px;
|
|
329
329
|
width: min(380px, calc(100vw - 32px));
|
|
330
330
|
padding: 18px 16px 16px;
|
|
331
331
|
border-radius: 16px;
|
package/src/router/index.ts
CHANGED
|
@@ -82,6 +82,11 @@ const router = createRouter({
|
|
|
82
82
|
name: 'noticeDetail',
|
|
83
83
|
component: () => import('../views/NoticeDetailView.vue'),
|
|
84
84
|
},
|
|
85
|
+
{
|
|
86
|
+
path: '/placeholder',
|
|
87
|
+
name: 'placeholder',
|
|
88
|
+
component: () => import('../views/PlaceholderView.vue'),
|
|
89
|
+
},
|
|
85
90
|
],
|
|
86
91
|
})
|
|
87
92
|
|
|
@@ -148,8 +148,8 @@ onUnmounted(() => {
|
|
|
148
148
|
--blue: #1267f2;
|
|
149
149
|
--line: #dce4ef;
|
|
150
150
|
min-width: 0;
|
|
151
|
-
height:
|
|
152
|
-
min-height:
|
|
151
|
+
height: clamp(520px, 58vh, 640px);
|
|
152
|
+
min-height: 520px;
|
|
153
153
|
padding: 14px;
|
|
154
154
|
display: flex;
|
|
155
155
|
flex-direction: column;
|
|
@@ -403,14 +403,17 @@ em {
|
|
|
403
403
|
@media (max-width: 1200px) {
|
|
404
404
|
.account-board {
|
|
405
405
|
height: auto;
|
|
406
|
+
min-height: 0;
|
|
406
407
|
}
|
|
407
408
|
|
|
408
409
|
.account-layout {
|
|
409
410
|
grid-template-columns: 1fr;
|
|
411
|
+
grid-template-rows: auto;
|
|
410
412
|
}
|
|
411
413
|
|
|
412
414
|
.metric-box {
|
|
413
|
-
|
|
415
|
+
height: auto;
|
|
416
|
+
min-height: 230px;
|
|
414
417
|
}
|
|
415
418
|
}
|
|
416
419
|
|
|
@@ -434,5 +437,56 @@ em {
|
|
|
434
437
|
.quota-list {
|
|
435
438
|
right: 16px;
|
|
436
439
|
}
|
|
440
|
+
|
|
441
|
+
.ring,
|
|
442
|
+
.pie {
|
|
443
|
+
left: 32%;
|
|
444
|
+
width: min(46%, 220px);
|
|
445
|
+
height: min(66%, 220px);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
.balance-copy,
|
|
449
|
+
.quota-list {
|
|
450
|
+
top: 54%;
|
|
451
|
+
width: 128px;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.balance-copy strong {
|
|
455
|
+
margin: 10px 0 16px 20px;
|
|
456
|
+
font-size: 28px;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.quota-list {
|
|
460
|
+
gap: 10px;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
.balance-copy p,
|
|
464
|
+
.quota-list li {
|
|
465
|
+
gap: 8px;
|
|
466
|
+
font-size: 14px;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.pie-foot {
|
|
470
|
+
left: 40px;
|
|
471
|
+
right: 150px;
|
|
472
|
+
bottom: 22px;
|
|
473
|
+
flex-wrap: wrap;
|
|
474
|
+
gap: 8px 18px;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
.progress-box {
|
|
478
|
+
height: 146px;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
.progress-box > b {
|
|
482
|
+
left: 122px;
|
|
483
|
+
top: 55px;
|
|
484
|
+
font-size: 30px;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
.progress-line,
|
|
488
|
+
.scale-row {
|
|
489
|
+
left: 222px;
|
|
490
|
+
}
|
|
437
491
|
}
|
|
438
492
|
</style>
|
|
@@ -146,8 +146,8 @@ onUnmounted(() => {
|
|
|
146
146
|
--blue: #1267f2;
|
|
147
147
|
--line: #dce4ef;
|
|
148
148
|
min-width: 0;
|
|
149
|
-
height:
|
|
150
|
-
min-height:
|
|
149
|
+
height: clamp(520px, 58vh, 640px);
|
|
150
|
+
min-height: 520px;
|
|
151
151
|
padding: 14px;
|
|
152
152
|
display: flex;
|
|
153
153
|
flex-direction: column;
|
|
@@ -344,14 +344,17 @@ onUnmounted(() => {
|
|
|
344
344
|
@media (max-width: 1200px) {
|
|
345
345
|
.reliable-board {
|
|
346
346
|
height: auto;
|
|
347
|
+
min-height: 0;
|
|
347
348
|
}
|
|
348
349
|
|
|
349
350
|
.reliable-layout {
|
|
350
351
|
grid-template-columns: 1fr;
|
|
352
|
+
grid-template-rows: auto;
|
|
351
353
|
}
|
|
352
354
|
|
|
353
355
|
.metric-box {
|
|
354
|
-
|
|
356
|
+
height: auto;
|
|
357
|
+
min-height: 230px;
|
|
355
358
|
}
|
|
356
359
|
|
|
357
360
|
.mini-strip {
|
|
@@ -385,7 +388,11 @@ onUnmounted(() => {
|
|
|
385
388
|
}
|
|
386
389
|
|
|
387
390
|
.mini-strip {
|
|
388
|
-
grid-template-columns: 1fr;
|
|
391
|
+
grid-template-columns: repeat(2, 1fr);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.mini-strip > div:nth-child(2n) {
|
|
395
|
+
border-right: 0;
|
|
389
396
|
}
|
|
390
397
|
}
|
|
391
398
|
</style>
|
|
@@ -154,8 +154,8 @@ onUnmounted(() => {
|
|
|
154
154
|
--blue: #1267f2;
|
|
155
155
|
--line: #dce4ef;
|
|
156
156
|
min-width: 0;
|
|
157
|
-
height:
|
|
158
|
-
min-height:
|
|
157
|
+
height: clamp(520px, 58vh, 640px);
|
|
158
|
+
min-height: 520px;
|
|
159
159
|
padding: 14px;
|
|
160
160
|
display: flex;
|
|
161
161
|
flex-direction: column;
|
|
@@ -305,14 +305,17 @@ em {
|
|
|
305
305
|
@media (max-width: 1200px) {
|
|
306
306
|
.warning-board {
|
|
307
307
|
height: auto;
|
|
308
|
+
min-height: 0;
|
|
308
309
|
}
|
|
309
310
|
|
|
310
311
|
.warning-layout {
|
|
311
312
|
grid-template-columns: 1fr;
|
|
313
|
+
grid-template-rows: auto;
|
|
312
314
|
}
|
|
313
315
|
|
|
314
316
|
.chart-box {
|
|
315
|
-
|
|
317
|
+
height: auto;
|
|
318
|
+
min-height: 230px;
|
|
316
319
|
}
|
|
317
320
|
|
|
318
321
|
.stat-strip {
|
|
@@ -342,7 +345,11 @@ em {
|
|
|
342
345
|
}
|
|
343
346
|
|
|
344
347
|
.stat-strip {
|
|
345
|
-
grid-template-columns: 1fr;
|
|
348
|
+
grid-template-columns: repeat(2, 1fr);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.stat-strip > div:nth-child(2n) {
|
|
352
|
+
border-right: 0;
|
|
346
353
|
}
|
|
347
354
|
}
|
|
348
355
|
</style>
|
|
@@ -70,8 +70,8 @@ const rows = [
|
|
|
70
70
|
--blue: #1267f2;
|
|
71
71
|
--line: #dce4ef;
|
|
72
72
|
min-width: 0;
|
|
73
|
-
height:
|
|
74
|
-
min-height:
|
|
73
|
+
height: clamp(520px, 58vh, 640px);
|
|
74
|
+
min-height: 520px;
|
|
75
75
|
padding: 14px 14px 17px;
|
|
76
76
|
display: grid;
|
|
77
77
|
grid-template-rows: auto 1fr auto;
|
|
@@ -199,6 +199,7 @@ const rows = [
|
|
|
199
199
|
@media (max-width: 1200px) {
|
|
200
200
|
.table-board {
|
|
201
201
|
height: auto;
|
|
202
|
+
min-height: 520px;
|
|
202
203
|
}
|
|
203
204
|
}
|
|
204
205
|
|
|
@@ -61,7 +61,7 @@ import ExecutiveWarningTablePanel from './components/ExecutiveWarningTablePanel.
|
|
|
61
61
|
.dashboard-grid {
|
|
62
62
|
width: 100%;
|
|
63
63
|
display: grid;
|
|
64
|
-
grid-template-columns: 1fr;
|
|
64
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
65
65
|
gap: 14px;
|
|
66
66
|
padding: 0 31px 39px;
|
|
67
67
|
}
|
|
@@ -77,6 +77,7 @@ import ExecutiveWarningTablePanel from './components/ExecutiveWarningTablePanel.
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
.dashboard-grid {
|
|
80
|
+
grid-template-columns: 1fr;
|
|
80
81
|
padding-right: 24px;
|
|
81
82
|
padding-left: 24px;
|
|
82
83
|
}
|
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="data-entry-page">
|
|
3
|
+
<!-- 快捷入口 -->
|
|
4
|
+
<section class="quick-nav">
|
|
5
|
+
<button type="button" class="quick-nav-item active">
|
|
6
|
+
<el-icon class="quick-nav-icon">
|
|
7
|
+
<Coin />
|
|
8
|
+
</el-icon>
|
|
9
|
+
<span>未来现金流数据导入</span>
|
|
10
|
+
</button>
|
|
11
|
+
|
|
12
|
+
<button type="button" class="quick-nav-item">
|
|
13
|
+
<el-icon class="quick-nav-icon">
|
|
14
|
+
<PieChart />
|
|
15
|
+
</el-icon>
|
|
16
|
+
<span>仪表盘数据导入</span>
|
|
17
|
+
</button>
|
|
18
|
+
|
|
19
|
+
<button type="button" class="quick-nav-item">
|
|
20
|
+
<el-icon class="quick-nav-icon">
|
|
21
|
+
<TrendCharts />
|
|
22
|
+
</el-icon>
|
|
23
|
+
<span>SHIBOR数据导入</span>
|
|
24
|
+
</button>
|
|
25
|
+
|
|
26
|
+
<button type="button" class="quick-nav-item">
|
|
27
|
+
<el-icon class="quick-nav-icon">
|
|
28
|
+
<Histogram />
|
|
29
|
+
</el-icon>
|
|
30
|
+
<span>同业资产负债数据导入</span>
|
|
31
|
+
</button>
|
|
32
|
+
</section>
|
|
33
|
+
|
|
34
|
+
<!-- 表单区域 -->
|
|
35
|
+
<section class="form-grid">
|
|
36
|
+
<!-- 同业资产负债数据录入 -->
|
|
37
|
+
<el-card shadow="hover" class="entry-card">
|
|
38
|
+
<template #header>
|
|
39
|
+
<div class="card-header">
|
|
40
|
+
<div class="card-title-wrap">
|
|
41
|
+
<div class="card-icon">
|
|
42
|
+
<el-icon><OfficeBuilding /></el-icon>
|
|
43
|
+
</div>
|
|
44
|
+
<span class="card-title">同业资产负债数据录入</span>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
<el-form
|
|
50
|
+
ref="interbankFormRef"
|
|
51
|
+
:model="interbankForm"
|
|
52
|
+
:rules="interbankRules"
|
|
53
|
+
label-width="150px"
|
|
54
|
+
class="entry-form"
|
|
55
|
+
>
|
|
56
|
+
<el-form-item label="数据日期" prop="date">
|
|
57
|
+
<el-date-picker
|
|
58
|
+
v-model="interbankForm.date"
|
|
59
|
+
type="date"
|
|
60
|
+
placeholder="请选择日期"
|
|
61
|
+
value-format="YYYY-MM-DD"
|
|
62
|
+
style="width: 100%"
|
|
63
|
+
/>
|
|
64
|
+
</el-form-item>
|
|
65
|
+
|
|
66
|
+
<el-form-item label="同业负债占比" prop="liabilityRatio">
|
|
67
|
+
<el-input v-model="interbankForm.liabilityRatio" placeholder="请输入" />
|
|
68
|
+
</el-form-item>
|
|
69
|
+
|
|
70
|
+
<el-form-item label="同业活期存款余额" prop="depositBalance">
|
|
71
|
+
<el-input v-model="interbankForm.depositBalance" placeholder="请输入" />
|
|
72
|
+
</el-form-item>
|
|
73
|
+
|
|
74
|
+
<el-form-item label="备注" prop="remark">
|
|
75
|
+
<el-input
|
|
76
|
+
v-model="interbankForm.remark"
|
|
77
|
+
type="textarea"
|
|
78
|
+
:rows="5"
|
|
79
|
+
maxlength="500"
|
|
80
|
+
show-word-limit
|
|
81
|
+
placeholder="请输入备注内容"
|
|
82
|
+
/>
|
|
83
|
+
</el-form-item>
|
|
84
|
+
|
|
85
|
+
<el-form-item label="说明" prop="description">
|
|
86
|
+
<el-input
|
|
87
|
+
v-model="interbankForm.description"
|
|
88
|
+
type="textarea"
|
|
89
|
+
:rows="5"
|
|
90
|
+
maxlength="500"
|
|
91
|
+
show-word-limit
|
|
92
|
+
placeholder="请输入说明内容"
|
|
93
|
+
/>
|
|
94
|
+
</el-form-item>
|
|
95
|
+
|
|
96
|
+
<div class="form-footer">
|
|
97
|
+
<el-button type="primary" size="large" class="submit-btn" @click="submitInterbank">
|
|
98
|
+
<el-icon><Promotion /></el-icon>
|
|
99
|
+
提交
|
|
100
|
+
</el-button>
|
|
101
|
+
</div>
|
|
102
|
+
</el-form>
|
|
103
|
+
</el-card>
|
|
104
|
+
|
|
105
|
+
<!-- 仪表盘数据录入 -->
|
|
106
|
+
<el-card shadow="hover" class="entry-card">
|
|
107
|
+
<template #header>
|
|
108
|
+
<div class="card-header">
|
|
109
|
+
<div class="card-title-wrap">
|
|
110
|
+
<div class="card-icon">
|
|
111
|
+
<el-icon><PieChart /></el-icon>
|
|
112
|
+
</div>
|
|
113
|
+
<span class="card-title">仪表盘数据录入</span>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</template>
|
|
117
|
+
|
|
118
|
+
<el-form
|
|
119
|
+
ref="dashboardFormRef"
|
|
120
|
+
:model="dashboardForm"
|
|
121
|
+
:rules="dashboardRules"
|
|
122
|
+
label-width="150px"
|
|
123
|
+
class="entry-form"
|
|
124
|
+
>
|
|
125
|
+
<el-form-item label="流动性比例" prop="liquidityRatio">
|
|
126
|
+
<el-input v-model="dashboardForm.liquidityRatio" placeholder="请输入" />
|
|
127
|
+
</el-form-item>
|
|
128
|
+
|
|
129
|
+
<el-form-item label="流动性覆盖率" prop="coverageRatio">
|
|
130
|
+
<el-input v-model="dashboardForm.coverageRatio" placeholder="请输入" />
|
|
131
|
+
</el-form-item>
|
|
132
|
+
|
|
133
|
+
<el-form-item label="净稳定资金比例" prop="stableCapitalRatio">
|
|
134
|
+
<el-input v-model="dashboardForm.stableCapitalRatio" placeholder="请输入" />
|
|
135
|
+
</el-form-item>
|
|
136
|
+
|
|
137
|
+
<el-form-item label="备注" prop="remark">
|
|
138
|
+
<el-input
|
|
139
|
+
v-model="dashboardForm.remark"
|
|
140
|
+
type="textarea"
|
|
141
|
+
:rows="5"
|
|
142
|
+
maxlength="500"
|
|
143
|
+
show-word-limit
|
|
144
|
+
placeholder="请输入备注内容"
|
|
145
|
+
/>
|
|
146
|
+
</el-form-item>
|
|
147
|
+
|
|
148
|
+
<el-form-item label="说明" prop="description">
|
|
149
|
+
<el-input
|
|
150
|
+
v-model="dashboardForm.description"
|
|
151
|
+
type="textarea"
|
|
152
|
+
:rows="5"
|
|
153
|
+
maxlength="500"
|
|
154
|
+
show-word-limit
|
|
155
|
+
placeholder="请输入说明内容"
|
|
156
|
+
/>
|
|
157
|
+
</el-form-item>
|
|
158
|
+
|
|
159
|
+
<div class="form-footer">
|
|
160
|
+
<el-button type="primary" size="large" class="submit-btn" @click="submitDashboard">
|
|
161
|
+
<el-icon><Promotion /></el-icon>
|
|
162
|
+
提交
|
|
163
|
+
</el-button>
|
|
164
|
+
</div>
|
|
165
|
+
</el-form>
|
|
166
|
+
</el-card>
|
|
167
|
+
</section>
|
|
168
|
+
</div>
|
|
169
|
+
</template>
|
|
170
|
+
|
|
171
|
+
<script setup lang="ts">
|
|
172
|
+
import { ref } from 'vue'
|
|
173
|
+
import { ElMessage, type FormInstance, type FormRules } from 'element-plus'
|
|
174
|
+
import {
|
|
175
|
+
Promotion,
|
|
176
|
+
OfficeBuilding,
|
|
177
|
+
PieChart,
|
|
178
|
+
Histogram,
|
|
179
|
+
TrendCharts,
|
|
180
|
+
Coin
|
|
181
|
+
} from '@element-plus/icons-vue'
|
|
182
|
+
|
|
183
|
+
interface InterbankForm {
|
|
184
|
+
date: string
|
|
185
|
+
liabilityRatio: string
|
|
186
|
+
depositBalance: string
|
|
187
|
+
remark: string
|
|
188
|
+
description: string
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
interface DashboardForm {
|
|
192
|
+
liquidityRatio: string
|
|
193
|
+
coverageRatio: string
|
|
194
|
+
stableCapitalRatio: string
|
|
195
|
+
remark: string
|
|
196
|
+
description: string
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const interbankFormRef = ref<FormInstance>()
|
|
200
|
+
const dashboardFormRef = ref<FormInstance>()
|
|
201
|
+
|
|
202
|
+
const interbankForm = ref<InterbankForm>({
|
|
203
|
+
date: '',
|
|
204
|
+
liabilityRatio: '',
|
|
205
|
+
depositBalance: '',
|
|
206
|
+
remark: '',
|
|
207
|
+
description: ''
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
const dashboardForm = ref<DashboardForm>({
|
|
211
|
+
liquidityRatio: '',
|
|
212
|
+
coverageRatio: '',
|
|
213
|
+
stableCapitalRatio: '',
|
|
214
|
+
remark: '',
|
|
215
|
+
description: ''
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
const interbankRules: FormRules<InterbankForm> = {
|
|
219
|
+
date: [{ required: true, message: '请选择数据日期', trigger: 'change' }],
|
|
220
|
+
liabilityRatio: [{ required: true, message: '请输入同业负债占比', trigger: 'blur' }],
|
|
221
|
+
depositBalance: [{ required: true, message: '请输入同业活期存款余额', trigger: 'blur' }]
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
const dashboardRules: FormRules<DashboardForm> = {
|
|
225
|
+
liquidityRatio: [{ required: true, message: '请输入流动性比例', trigger: 'blur' }],
|
|
226
|
+
coverageRatio: [{ required: true, message: '请输入流动性覆盖率', trigger: 'blur' }],
|
|
227
|
+
stableCapitalRatio: [{ required: true, message: '请输入净稳定资金比例', trigger: 'blur' }]
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async function submitInterbank() {
|
|
231
|
+
if (!interbankFormRef.value) return
|
|
232
|
+
|
|
233
|
+
await interbankFormRef.value.validate((valid) => {
|
|
234
|
+
if (!valid) return
|
|
235
|
+
console.log('同业资产负债数据提交:', interbankForm.value)
|
|
236
|
+
ElMessage.success('同业资产负债数据提交成功')
|
|
237
|
+
})
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
async function submitDashboard() {
|
|
241
|
+
if (!dashboardFormRef.value) return
|
|
242
|
+
|
|
243
|
+
await dashboardFormRef.value.validate((valid) => {
|
|
244
|
+
if (!valid) return
|
|
245
|
+
console.log('仪表盘数据提交:', dashboardForm.value)
|
|
246
|
+
ElMessage.success('仪表盘数据提交成功')
|
|
247
|
+
})
|
|
248
|
+
}
|
|
249
|
+
</script>
|
|
250
|
+
|
|
251
|
+
<style scoped>
|
|
252
|
+
.data-entry-page {
|
|
253
|
+
min-height: 100vh;
|
|
254
|
+
padding: 24px;
|
|
255
|
+
background:
|
|
256
|
+
radial-gradient(circle at top right, rgba(64, 158, 255, 0.08), transparent 22%),
|
|
257
|
+
linear-gradient(180deg, #f5f7fb 0%, #eef3fb 100%);
|
|
258
|
+
box-sizing: border-box;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.hero-section {
|
|
262
|
+
position: relative;
|
|
263
|
+
overflow: hidden;
|
|
264
|
+
display: flex;
|
|
265
|
+
align-items: center;
|
|
266
|
+
justify-content: space-between;
|
|
267
|
+
padding: 28px 32px;
|
|
268
|
+
border-radius: 24px;
|
|
269
|
+
background: linear-gradient(135deg, #ffffff 0%, #f5f8ff 100%);
|
|
270
|
+
box-shadow: 0 10px 30px rgba(15, 35, 95, 0.06);
|
|
271
|
+
margin-bottom: 20px;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.hero-left {
|
|
275
|
+
display: flex;
|
|
276
|
+
align-items: center;
|
|
277
|
+
gap: 16px;
|
|
278
|
+
z-index: 1;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.hero-icon {
|
|
282
|
+
width: 58px;
|
|
283
|
+
height: 58px;
|
|
284
|
+
border-radius: 18px;
|
|
285
|
+
display: flex;
|
|
286
|
+
align-items: center;
|
|
287
|
+
justify-content: center;
|
|
288
|
+
background: linear-gradient(135deg, #2f63ff 0%, #5a8cff 100%);
|
|
289
|
+
color: #fff;
|
|
290
|
+
font-size: 28px;
|
|
291
|
+
box-shadow: 0 12px 24px rgba(47, 99, 255, 0.28);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.page-title {
|
|
295
|
+
margin: 0 0 8px;
|
|
296
|
+
font-size: 34px;
|
|
297
|
+
font-weight: 700;
|
|
298
|
+
color: #1f2a44;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.page-subtitle {
|
|
302
|
+
margin: 0;
|
|
303
|
+
font-size: 15px;
|
|
304
|
+
color: #7b88a1;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.hero-decoration {
|
|
308
|
+
position: absolute;
|
|
309
|
+
right: -50px;
|
|
310
|
+
top: -50px;
|
|
311
|
+
width: 280px;
|
|
312
|
+
height: 180px;
|
|
313
|
+
border-radius: 50%;
|
|
314
|
+
background: radial-gradient(circle, rgba(64, 158, 255, 0.15), transparent 65%);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.quick-nav {
|
|
318
|
+
display: grid;
|
|
319
|
+
grid-template-columns: repeat(4, 1fr);
|
|
320
|
+
gap: 16px;
|
|
321
|
+
padding: 18px;
|
|
322
|
+
margin-bottom: 20px;
|
|
323
|
+
border-radius: 20px;
|
|
324
|
+
background: rgba(255, 255, 255, 0.78);
|
|
325
|
+
backdrop-filter: blur(6px);
|
|
326
|
+
box-shadow: 0 8px 24px rgba(15, 35, 95, 0.06);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.quick-nav-item {
|
|
330
|
+
height: 64px;
|
|
331
|
+
border-radius: 16px;
|
|
332
|
+
border: 1px solid #e7edf7;
|
|
333
|
+
background: #fff;
|
|
334
|
+
appearance: none;
|
|
335
|
+
display: flex;
|
|
336
|
+
align-items: center;
|
|
337
|
+
justify-content: center;
|
|
338
|
+
gap: 10px;
|
|
339
|
+
padding: 0;
|
|
340
|
+
color: #334155;
|
|
341
|
+
font-family: inherit;
|
|
342
|
+
font-size: 16px;
|
|
343
|
+
font-weight: 500;
|
|
344
|
+
cursor: pointer;
|
|
345
|
+
transition: all 0.25s ease;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.quick-nav-item:hover {
|
|
349
|
+
transform: translateY(-2px);
|
|
350
|
+
box-shadow: 0 10px 20px rgba(47, 99, 255, 0.12);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.quick-nav-item.active {
|
|
354
|
+
color: #fff;
|
|
355
|
+
border-color: transparent;
|
|
356
|
+
background: linear-gradient(135deg, #2f63ff 0%, #3d7eff 100%);
|
|
357
|
+
box-shadow: 0 12px 24px rgba(47, 99, 255, 0.24);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.quick-nav-icon {
|
|
361
|
+
font-size: 18px;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.form-grid {
|
|
365
|
+
display: grid;
|
|
366
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
367
|
+
gap: 20px;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.entry-card {
|
|
371
|
+
border: none;
|
|
372
|
+
border-radius: 22px;
|
|
373
|
+
overflow: hidden;
|
|
374
|
+
box-shadow: 0 12px 28px rgba(15, 35, 95, 0.06);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.card-header {
|
|
378
|
+
display: flex;
|
|
379
|
+
align-items: center;
|
|
380
|
+
justify-content: space-between;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.card-title-wrap {
|
|
384
|
+
display: flex;
|
|
385
|
+
align-items: center;
|
|
386
|
+
gap: 14px;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.card-icon {
|
|
390
|
+
width: 44px;
|
|
391
|
+
height: 44px;
|
|
392
|
+
border-radius: 50%;
|
|
393
|
+
background: linear-gradient(135deg, #e9f1ff 0%, #dfeaff 100%);
|
|
394
|
+
color: #2f63ff;
|
|
395
|
+
display: flex;
|
|
396
|
+
align-items: center;
|
|
397
|
+
justify-content: center;
|
|
398
|
+
font-size: 22px;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.card-title {
|
|
402
|
+
font-size: 18px;
|
|
403
|
+
font-weight: 700;
|
|
404
|
+
color: #1f2a44;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.entry-form {
|
|
408
|
+
padding-top: 8px;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
:deep(.el-form-item__label) {
|
|
412
|
+
font-weight: 600;
|
|
413
|
+
color: #334155;
|
|
414
|
+
white-space: nowrap;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
:deep(.el-input__wrapper),
|
|
418
|
+
:deep(.el-textarea__inner) {
|
|
419
|
+
border-radius: 12px;
|
|
420
|
+
box-shadow: 0 0 0 1px #d5ddea inset;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
:deep(.el-input__wrapper:hover),
|
|
424
|
+
:deep(.el-textarea__inner:hover) {
|
|
425
|
+
box-shadow: 0 0 0 1px #b8c4d8 inset;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
:deep(.el-input__wrapper.is-focus),
|
|
429
|
+
:deep(.el-textarea__inner:focus) {
|
|
430
|
+
box-shadow: 0 0 0 1px #2f63ff inset;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
.form-footer {
|
|
434
|
+
display: flex;
|
|
435
|
+
justify-content: center;
|
|
436
|
+
margin-top: 8px;
|
|
437
|
+
padding-top: 10px;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
.submit-btn {
|
|
441
|
+
min-width: 180px;
|
|
442
|
+
height: 46px;
|
|
443
|
+
border-radius: 14px;
|
|
444
|
+
font-size: 16px;
|
|
445
|
+
font-weight: 600;
|
|
446
|
+
background: linear-gradient(135deg, #2f63ff 0%, #3d7eff 100%);
|
|
447
|
+
border: none;
|
|
448
|
+
box-shadow: 0 12px 20px rgba(47, 99, 255, 0.18);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.submit-btn:hover {
|
|
452
|
+
opacity: 0.95;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
@media (max-width: 1200px) {
|
|
456
|
+
.quick-nav {
|
|
457
|
+
grid-template-columns: repeat(2, 1fr);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.form-grid {
|
|
461
|
+
grid-template-columns: 1fr;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
@media (max-width: 768px) {
|
|
466
|
+
.data-entry-page {
|
|
467
|
+
padding: 16px;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
.hero-section {
|
|
471
|
+
padding: 22px 18px;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
.page-title {
|
|
475
|
+
font-size: 26px;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
.quick-nav {
|
|
479
|
+
grid-template-columns: 1fr;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
.quick-nav-item {
|
|
483
|
+
justify-content: flex-start;
|
|
484
|
+
padding: 0 18px;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
:deep(.el-form-item) {
|
|
488
|
+
margin-bottom: 20px;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
:deep(.el-form-item__label) {
|
|
492
|
+
width: 100% !important;
|
|
493
|
+
margin-bottom: 8px;
|
|
494
|
+
text-align: left;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
:deep(.el-form-item__content) {
|
|
498
|
+
margin-left: 0 !important;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
</style>
|