Files
lovife 5b877451eb refactor(pc): 从 Gi Admin Pro + Arco 重搭为纯 Vue 3 + Naive UI
旧模板的 193 个文件整体删除,换成纯 Vue 3.5 + Naive UI 2.42 的树。

- 去掉 auto-import(组件与 API 全显式 import)、v-hasPerm(改 user.has('码'),全库 8 处)、
  Stylelint;n-tag 的 type 统一过 utils/tag.ts 转换(Arco 色词直接透传会静默变灰)
- 图标改为构建期抽取:scripts/extract-pc-icons.py -> icons/icon-data.ts(37 个),
  内网离线部署不会白屏
- 重搭后修掉 6 类"编译 / lint / typecheck 全绿、界面上就是坏的"故障:
  ① NGrid 的 cols 写成像素值(不是断点名 -> 永远只 1 列,工作台因此错乱)
  ② n-tab-pane 用 tab 属性(只渲染空注释节点,整排 tab 一个字都不显示)
  ③ 漏 import 被当未知自定义元素(样式整块丢) ④ .n-card__content 类名不存在
  (高度链第一环失效,表格行在 DOM 里但屏幕上没有) ⑤ 填报单状态映射错位一格
  ⑥ 有标题的卡片没有上内边距(naive 的 padding-top 只给"内容区是长子"的卡片)
- 卡片式版面提成全局基线:styles/index.scss 的 xt-* 令牌 + .page-card / .toolbar /
  .section-title,页面只引用、不再各写一套
- 品牌:改名「深学在线」,文字标换成几何标(方 = 卷宗 / 环 = 在线,不用文字字形);
  index.html 的页签图标从 404 的 /favicon.ico 改指真实存在的 /favicon.svg
2026-10-10 16:48:46 +08:00

65 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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) |
## 常用命令
```bash
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` —— 缺图标是空占位、不报错。