Преглед на файлове

docs: 初始化 PC 端前端仓库(工程约定 README + .gitignore 占位)

- README 约定:Vue3+TS+Element Plus+Pinia+Router,结构铁律与统一信封契约
- 脚手架代码后续以独立 commit 引入(create-vue 生成)
Q преди 4 дни
ревизия
fe3642da19
променени са 2 файла, в които са добавени 73 реда и са изтрити 0 реда
  1. 24 0
      .gitignore
  2. 49 0
      README.md

+ 24 - 0
.gitignore

@@ -0,0 +1,24 @@
+# 依赖
+node_modules/
+.pnpm-store/
+
+# 构建产物
+dist/
+dist-ssr/
+*.local
+
+# 环境与敏感配置(只允许入库 *.example.* 模板)
+.env
+.env.*
+!.env.example
+
+# 日志
+logs/
+*.log
+npm-debug.log*
+
+# IDE / 编辑器
+.idea/
+.vscode/
+*.iml
+.DS_Store

+ 49 - 0
README.md

@@ -0,0 +1,49 @@
+# PC 端前端(管理/运营)
+
+> 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)
+```
+
+## 结构铁律
+
+1. **作用域(institution/campus)是全局状态**:所有业务页面查询必须带作用域,由 store 统一注入,禁止页面各自拼 `schoolid/campusid`(对齐清单 §3:消灭控制器隐式参数)。
+2. **权限码驱动显隐**:菜单/按钮/路由守卫读统一 RBAC 权限码,不写 `role == N` 硬编码(对齐清单 §3 超管判据收敛)。
+3. **教务域页面为新写**(旧 DataTables/视图 jQuery 全部重写);**教学 admin 页面按现有 Vue3 逐步迁入**,契约不变。
+4. 接口调用只经 `src/api/`,禁止页面里散写 fetch/axios。
+
+## 可复用资产(源自教务 Go 重构实战)
+
+- **列表页规范**:`useListPage<T>` + `ListPage.vue`;年级 `<GradeBadge>`(数字=年级 id + 学段色系)、科目 `<SubjectBadge>`(首字简称 + 独立色系)——色板纯数据零 Vue 依赖,新增列表页一律复用。
+- **locale 双注入**:Element Plus 默认英文,需 `app.use(ElementPlus,{locale:zhCn})`(命令式 ElMessageBox/Notification)+ `<el-config-provider :locale>`(声明式)双注入,单用其一必有遗漏;locale 引 `element-plus/es/locale/lang/zh-cn`。
+- **响应封装**:统一「HTTP 恒 200 + body `code`」,判成功读 `code===200`、错误文案读 `data.msg`,不靠拦截器 reject。
+- 建议采用 **pnpm monorepo + `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。