|
|
4 дней назад | |
|---|---|---|
| .gitignore | 4 дней назад | |
| README.md | 4 дней назад |
Vue3 管理端,承载教务域重写 + 教学 admin 复用两块页面。统一走 nginx 入口 + 统一 Go 后端 SSO。本文档描述工程结构约定;接口契约与角色权限见
../unified/、../academic/05-architecture/、../teaching/05-architecture/。
单一 Vue3 项目(frontend-pc),面向登录角色中的 超管/教务/财务/老师(管理侧) 等 PC 端角色(市场角色登录入口暂禁用——不建市场端入口/路由,后续启用时再单独拍板)。学生/家长日常操作走 ../frontend-mobile。
| 关注点 | 选型 | 依据 |
|---|---|---|
| 框架 | Vue 3 + TypeScript + Vite | 与教学 admin 现有栈一致,复用成本低 |
| UI | Element Plus | 管理端组件库 |
| 状态 | Pinia | 登录态 / 角色 / institution/campus 作用域 |
| 路由 | Vue Router(按端 + 角色权限码守卫) | 7 角色,权限码来自统一 RBAC |
| 接口封装 | 统一 {code, data, message} 信封 |
以教学 code 体系为基线(对齐清单 §2) |
| 鉴权 | SSO(OIDC)token;菜单/按钮按权限码显隐 | 统一 identity 签发 |
frontend-pc/
├── README.md ← 本文件
└── src/
├── views/ # 页面:按域分子目录(academic / teaching / org / system)
├── components/ # 复用组件(表格/表单/作用域选择器 institution·campus)
├── api/ # 接口封装:统一信封 + 错误码处理;按域分子目录
├── router/ # 路由:按端组织 + 角色/权限码守卫
└── store/ # Pinia:login(token/角色)、scope(institution/campus)
schoolid/campusid(对齐清单 §3:消灭控制器隐式参数)。role == N 硬编码(对齐清单 §3 超管判据收敛)。src/api/,禁止页面里散写 fetch/axios。useListPage<T> + ListPage.vue;年级 <GradeBadge>(数字=年级 id + 学段色系)、科目 <SubjectBadge>(首字简称 + 独立色系)——色板纯数据零 Vue 依赖,新增列表页一律复用。app.use(ElementPlus,{locale:zhCn})(命令式 ElMessageBox/Notification)+ <el-config-provider :locale>(声明式)双注入,单用其一必有遗漏;locale 引 element-plus/es/locale/lang/zh-cn。code」,判成功读 code===200、错误文案读 data.msg,不靠拦截器 reject。shared 包(types/http 分层),与 ../frontend-mobile 共用;按包拷贝 + 改 API base 即可移植(详见 ../unified/00-planning/experience-impact-analysis.md §4)。../academic/05-architecture/ 与 ../teaching/05-architecture/;前端策略(重写 vs 复用)见 ../unified/00-planning/cross-system-reconciliation.md §5。