From 47dd60506749c8ade40cc096a83d3f42475ab6ef Mon Sep 17 00:00:00 2001 From: xtl Date: Tue, 27 Oct 2026 09:13:39 +0800 Subject: [PATCH] Align console UI with school-iot-admin and wire login to serverschool UI / layout - rebuild left mode: full-width blue header (60px) + white sidebar below + card-style tags view - introduce design tokens in variables.css (brand #347df9, sidebar 240px, menu item 49px) and theme overrides for dark / dark-blue themes - restyle navigation bar (logo + platform name / top nav / tools + user), logo, sidebar (selected state: light blue bg + blue bar + bold), tags view, app main - global styles: .app-container white card, .head-title, .btn-blue/.btn-white, el-table / el-dialog look, brand color injected into --el-color-primary - add favorites store (localStorage) wired to sidebar star and header top nav - disable template watermark / footer / promo notifications by default Login (serverschool) - port school-iot-admin login page (background art, right side card, keep-login) - OAuth2 password mode: GET /oauth/token (raw axios) + GET /uc/account/current - port phone lookup (/wx/getAccoutList) and forget-password flow (/sms/sendCode + /sms/verifyCode) as components/login/Forget.vue - user store exposes accountInfo / accountType / teamId / roleId and strips password Infra - move all devServer proxies and env vars from school-iot-admin/vue.config.js (default targets point to production) - fix empty sidebar: guard short-circuit skipped setRoutes when login page already fetched user info --- .env | 19 +- .env.development | 19 +- pnpm-workspace.yaml | 3 + src/App.vue | 11 - src/common/apis/users/index.ts | 11 +- src/common/apis/users/type.ts | 29 +- .../assets/images/layouts/platform-logo.png | Bin 0 -> 42696 bytes src/common/assets/styles/element-plus.scss | 70 +++ src/common/assets/styles/index.scss | 52 +- .../styles/theme/dark-blue/variables.scss | 27 + .../assets/styles/theme/dark/variables.scss | 27 + src/common/assets/styles/variables.css | 57 +- src/common/constants/cache-key.ts | 2 + src/common/constants/platform.ts | 11 + src/common/types/menu.ts | 7 + src/common/utils/local-storage.ts | 27 + src/http/axios.ts | 4 +- src/layouts/components/AppMain/index.vue | 2 + src/layouts/components/Logo/index.vue | 72 ++- .../components/NavigationBar/index.vue | 136 ++++- src/layouts/components/Sidebar/Item.vue | 55 +- src/layouts/components/Sidebar/index.vue | 69 +-- src/layouts/components/TagsView/index.vue | 12 +- src/layouts/config.ts | 4 +- src/layouts/modes/LeftMode.vue | 128 ++-- src/layouts/modes/LeftTopMode.vue | 76 +-- src/layouts/modes/TopMode.vue | 54 +- src/pages/login/apis/index.ts | 86 ++- src/pages/login/apis/type.ts | 36 +- src/pages/login/components/Forget.vue | 278 +++++++++ src/pages/login/images/login-background.png | Bin 0 -> 207441 bytes src/pages/login/index.vue | 557 +++++++++++++----- src/pinia/stores/favorite.ts | 38 ++ src/pinia/stores/user.ts | 49 +- src/router/guard.ts | 7 +- types/auto/components.d.ts | 1 + types/env.d.ts | 19 + vite.config.ts | 128 +++- 38 files changed, 1719 insertions(+), 464 deletions(-) create mode 100644 pnpm-workspace.yaml create mode 100644 src/common/assets/images/layouts/platform-logo.png create mode 100644 src/common/constants/platform.ts create mode 100644 src/common/types/menu.ts create mode 100644 src/pages/login/components/Forget.vue create mode 100644 src/pages/login/images/login-background.png create mode 100644 src/pinia/stores/favorite.ts diff --git a/.env b/.env index 5919cdb..58cb8dc 100644 --- a/.env +++ b/.env @@ -1,7 +1,24 @@ # 所有环境的环境变量(命名必须以 VITE_ 开头) ## 项目标题 -VITE_APP_TITLE = V3 Admin Vite +VITE_APP_TITLE = 校园物联网管理平台 ## 路由模式 hash 或 html5 VITE_ROUTER_HISTORY = hash + +## serverschool 后端接口前缀(登录 / 用户信息等真实接口,与 apifoxmock 的 VITE_BASE_URL 区分) +## 开发环境由 vite.config.ts 的 /hxyd-api 代理转发;生产环境需由 nginx 反代同名路径 +VITE_SCHOOL_BASE_URL = /hxyd-api + +## kkFileView 文档预览服务(对齐 school-iot-admin 的 VUE_APP_KKFILEVIEW_URL) +VITE_KKFILEVIEW_URL = https://net2.hxzhxy.cn:8012 + +## 跨系统链接(对齐 school-iot-admin,默认生产地址;开发内网地址见 .env.development 注释) +# 问卷系统 +VITE_QUESTION_URL = http://complaints.hxzhxy.cn +# 可视化数据大屏 +VITE_DATA_SCREEN = http://139.159.182.121:1689 +# 新生填报 H5 +VITE_APPLY_URL = http://apply.hxzhxy.cn +# 数据填报表单 +VITE_API_FORM = https://form.hxzhxy.cn diff --git a/.env.development b/.env.development index fbfaaf5..7c16d1b 100644 --- a/.env.development +++ b/.env.development @@ -1,7 +1,24 @@ # 开发环境的环境变量(命名必须以 VITE_ 开头) -## 后端接口地址(如果解决跨域问题采用反向代理就只需写相对路径) +## 后端接口地址(apifoxmock,demo / FastCrud 演示页用) VITE_BASE_URL = /api/v1 ## 开发环境域名和静态资源公共路径(一般 / 或 ./ 都可以) VITE_PUBLIC_PATH = / + +# ===== serverschool 后端代理(默认连生产,与 school-iot-admin 的 dev 一致) ===== + +## /hxyd-api 代理目标;连测试库改成 http://192.168.0.10:8100 +VITE_SCHOOL_TARGET = https://band.hxzhxy.cn + +## WebSocket(/ws-api);老平台 dev 内网值 ws://192.168.0.244:58089 +VITE_WS_TARGET = ws://139.159.182.121:8100 + +## 视频流 wvp(/hxyd-video);老平台 dev 内网值 http://10.19.64.250:8000 +VITE_VIDEO_TARGET = http://11.1.20.107:8000 + +## yolo 抓拍图片 minio(/hxyd-video/yolo);老平台 dev 内网值 http://10.19.64.250:9000 +VITE_VIDEO_MINIO = http://11.1.20.107:9000 + +## 智能体对话(/agent-dialogue-api,本机 score_agent / LangGraph) +VITE_AGENT_DIALOGUE_TARGET = http://127.0.0.1:3030 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..24a72ca --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +allowBuilds: + '@parcel/watcher': true + esbuild: true diff --git a/src/App.vue b/src/App.vue index 22a59a8..64a411a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,5 @@