From 85c7c7a6832d02049f704f7723d831b76cac2253 Mon Sep 17 00:00:00 2001 From: biss Date: Tue, 11 Aug 2026 15:21:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=89=8D=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/components/SiteFooter.vue | 56 +------- web/src/components/SmartLaunchScreen.vue | 4 +- web/src/layouts/AdminLayout.vue | 4 +- web/src/style.css | 136 +++++++++++++++++++- web/src/views/ClassroomReservationsView.vue | 2 +- web/src/views/DashboardView.vue | 16 +-- web/src/views/LoginView.vue | 2 +- web/src/views/OtherExamsView.vue | 8 +- 8 files changed, 157 insertions(+), 71 deletions(-) diff --git a/web/src/components/SiteFooter.vue b/web/src/components/SiteFooter.vue index b7bee05..0cae971 100644 --- a/web/src/components/SiteFooter.vue +++ b/web/src/components/SiteFooter.vue @@ -1,33 +1,12 @@ @@ -61,27 +40,7 @@ onMounted(async () => { letter-spacing: .04em; } -.version-list { - display: flex; - align-items: center; - gap: 8px; -} - -.version-list span { - padding: 5px 9px; - border: 1px solid rgba(255, 255, 255, .14); - border-radius: 4px; - color: #aeb9d8; - background: rgba(255, 255, 255, .055); - font-size: 10px; - white-space: nowrap; -} - -.version-list b { - margin-left: 5px; - color: #66d5c5; - font: 700 10px/1.2 Consolas, monospace; -} +.footer-note { color: #aeb9d8; font-size: 11px; } @media (max-width: 600px) { .site-footer-inner { @@ -93,13 +52,6 @@ onMounted(async () => { gap: 7px; } - .version-list { - width: 100%; - } - - .version-list span { - flex: 1; - text-align: center; - } + .footer-note { font-size: 10px; } } diff --git a/web/src/components/SmartLaunchScreen.vue b/web/src/components/SmartLaunchScreen.vue index 0043349..04e04f8 100644 --- a/web/src/components/SmartLaunchScreen.vue +++ b/web/src/components/SmartLaunchScreen.vue @@ -53,7 +53,7 @@ onBeforeUnmount(() => { - MINGXU ACADEMIC + 明序教务

{{ greeting.label }}

{{ greeting.title }}

{{ greeting.subtitle }} @@ -117,7 +117,7 @@ onBeforeUnmount(() => { color: #8fe4dc; font-size: 0.68rem; font-weight: 700; - letter-spacing: 0.28em; + letter-spacing: 0.16em; } .smart-launch-content p { diff --git a/web/src/layouts/AdminLayout.vue b/web/src/layouts/AdminLayout.vue index 480ff4c..683c84f 100644 --- a/web/src/layouts/AdminLayout.vue +++ b/web/src/layouts/AdminLayout.vue @@ -329,7 +329,7 @@ onMounted(() => {
明序教务 - ACADEMIC OFFICE + 教务管理与学业服务
@@ -394,7 +394,7 @@ onMounted(() => {
明序教务 - ACADEMIC OFFICE + 教务管理与学业服务
diff --git a/web/src/style.css b/web/src/style.css index c9389a8..2282346 100644 --- a/web/src/style.css +++ b/web/src/style.css @@ -42,7 +42,7 @@ button { cursor: pointer; } } .top-brand { min-width: 224px; padding-right: 28px; border-right: 1px solid rgba(255,255,255,.14); } .brand strong { display: block; font-family: "STZhongsong", "Songti SC", serif; font-size: 21px; letter-spacing: .12em; color: white; } -.brand small { display: block; margin-top: 3px; font: 9px/1.2 Consolas, monospace; letter-spacing: .16em; color: #9faad1; } +.brand small { display: block; margin-top: 3px; font: 10px/1.2 "Microsoft YaHei", sans-serif; letter-spacing: .08em; color: #9faad1; } .brand-mark { flex: 0 0 auto; width: 31px; height: 31px; display: grid; grid-template-columns: repeat(3,1fr); gap: 3px; } .brand-mark span { border: 1px solid #9eabd8; } .brand-mark span:nth-child(2), .brand-mark span:nth-child(5), .brand-mark span:nth-child(8) { background: #3ec1ae; border-color: #3ec1ae; } @@ -1496,3 +1496,137 @@ button { cursor: pointer; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; } } + +/* Shared workspace surface: keeps independently-built modules visually aligned. */ +:root { + --surface: #ffffff; + --surface-muted: #f8fafc; + --surface-accent: #f0f7f6; + --shadow-card: 0 8px 24px rgba(26, 47, 80, .055); + --el-border-radius-base: 8px; + --el-border-radius-small: 6px; + --el-fill-color-blank: #ffffff; + --el-bg-color-page: #f4f6fa; + --el-border-color: #dfe5ee; + --el-text-color-primary: #182033; + --el-text-color-regular: #4f5b6c; +} + +body { + background: + linear-gradient(180deg, rgba(35, 56, 118, .035), transparent 20rem), + #f4f6fa; +} + +::selection { color: #fff; background: var(--indigo); } + +.content { max-width: 1480px; } +.page-stack { gap: 20px; } + +.page-intro, +.page-heading { + position: relative; + min-height: 96px; + padding: 20px 0 16px 18px; + border-bottom: 1px solid #dfe5ee; +} + +.page-intro::before, +.page-heading::before { + position: absolute; + top: 23px; + bottom: 20px; + left: 0; + width: 3px; + content: ''; + border-radius: 3px; + background: linear-gradient(180deg, var(--teal), #55b9aa); +} + +.page-intro h2, +.page-heading h2 { + letter-spacing: .02em; +} + +.page-intro p, +.page-heading > div > p { + max-width: 720px; + line-height: 1.7; +} + +.data-card, +.page-stack > .el-card, +.page-stack .el-card, +.application-card, +.result-board, +.batch-panel, +.editor-panel { + border-color: #dfe5ee; + border-radius: 10px; + box-shadow: var(--shadow-card); +} + +.data-card:hover, +.page-stack > .el-card:hover, +.application-card:hover, +.result-board:hover, +.batch-panel:hover, +.editor-panel:hover { + border-color: #cbd8e7; +} + +.table-toolbar, +.filter-bar { + min-height: 76px; + padding: 16px 20px; + border-color: #e1e7ef; + background: var(--surface-muted); +} + +.table-toolbar > span, +.filter-bar > span, +.pagination-bar > span { color: #768296; } + +.el-button { font-weight: 600; letter-spacing: .01em; } +.el-button--primary { box-shadow: 0 4px 10px rgba(35, 56, 118, .14); } +.el-button--primary:hover { box-shadow: 0 6px 14px rgba(35, 56, 118, .2); } +.el-input__wrapper, +.el-textarea__inner, +.el-select__wrapper, +.el-date-editor.el-input__wrapper, +.el-date-editor.el-range-editor { + box-shadow: 0 0 0 1px #d7dfe9 inset; + background: #fff; +} +.el-input__wrapper:hover, +.el-select__wrapper:hover, +.el-date-editor.el-input__wrapper:hover, +.el-date-editor.el-range-editor:hover { box-shadow: 0 0 0 1px #afbfce inset; } + +.el-card__header { padding: 18px 20px; border-bottom-color: #e5eaf1; } +.el-card__body { padding: 20px; } +.el-table { --el-table-border-color: #e4e9f0; --el-table-header-bg-color: #f7f9fc; } +.el-table th.el-table__cell { height: 46px; color: #536074; background: #f7f9fc; } +.el-table td.el-table__cell { padding: 12px 0; } +.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell { background: #f3f8f8; } +.el-pagination { padding: 14px 0 2px; justify-content: flex-end; } +.el-dialog { overflow: hidden; border-radius: 12px; box-shadow: 0 20px 60px rgba(18, 37, 63, .25); } +.el-dialog__header { margin-right: 0; padding: 20px 22px 16px; border-bottom: 1px solid #e6ebf1; } +.el-dialog__body { padding: 22px; } +.el-dialog__footer { padding: 14px 22px 20px; border-top: 1px solid #edf0f4; } +.el-tag { font-weight: 600; } + +@media (max-width: 760px) { + .page-intro, + .page-heading { min-height: 0; padding: 12px 0 14px 14px; } + .page-intro::before, + .page-heading::before { top: 14px; bottom: 16px; } + .page-intro h2, + .page-heading h2 { font-size: 23px; } + .table-toolbar, + .filter-bar { min-height: 0; padding: 12px 14px; } + .el-card__body { padding: 16px; } + .el-dialog__header { padding: 18px 18px 14px; } + .el-dialog__body { padding: 18px; } + .el-dialog__footer { padding: 12px 18px 18px; } +} diff --git a/web/src/views/ClassroomReservationsView.vue b/web/src/views/ClassroomReservationsView.vue index 068140c..10434fe 100644 --- a/web/src/views/ClassroomReservationsView.vue +++ b/web/src/views/ClassroomReservationsView.vue @@ -438,7 +438,7 @@ onMounted(async () => {
-

TEACHING SPACE

+

教学场地

教室借用与预约

选择正式课表之外的空闲时段提交申请,由申请人所在学院审核。

diff --git a/web/src/views/DashboardView.vue b/web/src/views/DashboardView.vue index 59b83b5..90d5102 100644 --- a/web/src/views/DashboardView.vue +++ b/web/src/views/DashboardView.vue @@ -446,7 +446,7 @@ onMounted(async () => { {{ data.audience.scopeName }} 数据范围 -

ACADEMIC OPERATIONS

+

教务工作概览

{{ data.greeting.title }}

{{ data.greeting.subtitle }}

@@ -525,7 +525,7 @@ onMounted(async () => {
-
OPERATION WATCH

运行预警

{{ operationAlerts.length ? `${operationAlerts.length} 个运行断点需要关注` : '当前未发现运行断点' }}
+
运行提醒

需要关注的事项

{{ operationAlerts.length ? `${operationAlerts.length} 个事项需要关注` : '当前运行平稳' }}
@@ -536,7 +536,7 @@ onMounted(async () => {
- RADAR / COUNSELOR + 学业预警

需重点关注的学生

{{ activeCounselorWarnings.length ? `当前有 ${activeCounselorWarnings.length} 条生效预警,按最新记录展示。` : '当前没有生效中的学业预警。' }}

@@ -559,7 +559,7 @@ onMounted(async () => {
- 01 / ACTION + 待办事项

需要处理

只显示当前角色和数据范围内可处理的事项。

@@ -595,7 +595,7 @@ onMounted(async () => {
- 02 / SHORTCUTS + 常用入口

常用工作

按当前角色整理的高频业务入口。

@@ -622,9 +622,9 @@ onMounted(async () => {
- 03 / TERM READINESS -

本学期运行状态

-

从任务发布到课表落地、成绩归档,快速发现业务断点。

+ 学期进度 +

本学期教学运行

+

关注教学任务、课表与成绩流程的完成情况。

数据更新于 {{ new Date(data.generatedAt).toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' }) }}
diff --git a/web/src/views/LoginView.vue b/web/src/views/LoginView.vue index d71efee..f4df238 100644 --- a/web/src/views/LoginView.vue +++ b/web/src/views/LoginView.vue @@ -69,7 +69,7 @@ onMounted(async () => {
明序教务 - MINGXU ACADEMIC SYSTEM + 教务管理与学业服务
diff --git a/web/src/views/OtherExamsView.vue b/web/src/views/OtherExamsView.vue index 5e85147..293afb0 100644 --- a/web/src/views/OtherExamsView.vue +++ b/web/src/views/OtherExamsView.vue @@ -93,13 +93,13 @@ onMounted(load)