Files
xiaotutongxue/frontend-pc
lovife 623e6393d5 fix(pc): 弹窗遮罩改毛玻璃并清掉 9 处提示折行
遮罩底色被 Naive 写死在 css-render 里(Modal / Drawer 主题没有 mask token,
themeOverrides 改不到),只能上 CSS;加 backdrop-filter 后遮罩后面的页面糊掉、
弹层本体仍是纯白,NModal / NDrawer / useDialog 共用 .n-modal-mask 一条规则覆盖。

折行的根因是格子宽度写死(半宽 264px / span 8 192px / 定宽 160px),与窗口宽度无关:
能压短的压短;「文件名预览」那处是 .n-form-item-blank 属于 flex 行、把提示挤成 3 行,
改成包一层块级容器;材料预览失败的占位在 108px 小格里曾折 3 行且被裁掉。

约定写进 frontend-pc/AGENTS.md 第 11 条与 code-css skill;实测与刻意不改的清单见
docs/交接摘要.md 的 §一·四十二。
2026-10-14 15:34:40 +08:00
..

PC 管理端(frontend-pc)

深学在线 · 管理端。纯 Vue 3 + Naive UI(2026-10 从 Gi Admin Pro + Arco Design Vue 重搭)。

上一版这份 README 是 Gi Admin Pro 的模板原文(含它的演示账号 admin / 123456),已整体替换 —— 那个账号在本项目里不存在。

技术栈

项 值
框架 Vue 3.5 + TypeScript + Vite 7
UI Naive UI 2.42(无 Arco / Gi 依赖)
状态 Pinia(pinia-plugin-persistedstate)
请求 axios(src/utils/http.ts 统一封装)
样式 SCSS(Stylelint 已移除,只有 ESLint)

常用命令

pnpm install
pnpm dev          # → http://localhost:5173(/api 代理到 http://localhost:8080)
pnpm build        # 生产构建 → dist/
pnpm typecheck    # vue-tsc(当前 0 错)
pnpm lint         # ESLint(@antfu/eslint-config)
  • 没有 Mock:pnpm dev 把 /api 代理到后端 8080 → 后端不起着就没有数据
  • 路径别名:@ → src/

演示账号(本地 dev)

账号 密码 租户码 角色
admin Admin@123 demo 学校管理员
platform Platform@123 — 平台运营

账号在多个单位下重名时,登录页才会出现「租户码」输入框(服务端返回 40012)。 一键登录脚本:python scripts/dev-login.py。

目录

src/
├── apis/xt/        接口模块(按业务域分文件)+ types.ts
├── composables/    pagination.ts(列表页分页器统一参数)
├── config/         xt-routes.ts(业务菜单表:菜单键 ↔ 路由 ↔ 视图 ↔ 分组)
├── icons/          AppIcon.vue + icon-data.ts(由 scripts/extract-pc-icons.py 生成)
├── layout/         AppSider / AppHeader / index.vue
├── router/         本地菜单表按后端 menuKeys 过滤后注册
├── stores/         user.ts / acting-tenant.ts / app.ts
├── styles/         index.scss(只放跨页面样式)
├── utils/          http.ts / naive.ts / tag.ts / format.ts / auth.ts / rsa.ts
└── views/          页面(每个菜单一个目录)

写代码前必读

AGENTS.md 与 .agents/(本目录内的规范,已按 Naive UI 重写)。四条最容易写错的:

  1. 没有 auto-import —— 组件与 API 全部显式 import;
  2. 没有 v-hasPerm —— 权限判断写 useUserStore().has('码'),字符串与后端 PermissionDef 逐字一致;
  3. n-tag 的 type 必须过 @/utils/tag.ts —— Arco 色词直接透传会静默变灰;
  4. 图标集升级后重跑 scripts/extract-pc-icons.py —— 缺图标是空占位、不报错。