This commit is contained in:
xiaojibeier
2026-07-06 03:36:46 +08:00
parent 300b15aa9f
commit f3726f0810
506 changed files with 221985 additions and 1 deletions
+44
View File
@@ -0,0 +1,44 @@
# 部门管理 · 关联物料分类
面向联调/产品:**部门管理** 右侧顶栏页签 **「关联物料分类」** 的实现说明。交互与 **组织管理** 弹窗内「关联物料分类」一致(已关联列表、路径行、「管理关联」全树勾选、确认 diff 保存),差异在于主键为 **部门 `dept_code`**、入口为页签而非弹窗侧栏。与 **应用内更新说明**`src/data/appChangelog.js`**2026-05-10** 条目对齐(与 `docs/组织管理_关联物料分类.md` 同日)。
---
## 1. 接口约定
| 用途 | 方法 | 路径 | Body 要点 |
|------|------|------|-----------|
| 当前部门已关联的物料分类 | POST | `/api/dept/category_listed` | `{ dept_code }` |
| 新增关联 | POST | `/api/dept/link_category` | `{ dept_code, category_code }` |
| 解除关联 | POST | `/api/dept/unlink_category` | `{ dept_code, category_code }` |
| 全量物料分类树(勾选用 + 路径索引) | POST | `/api/category/listed` | `{}` |
响应解析:关联列表兼容 `data` 为数组,或对象内 `list` / `rows` / `categories` / `data` 等字段;分类树与组织侧一致,节点映射为 `id``category_code`)、`label``children`
---
## 2. 交互流程
1. **选择部门**:左侧部门树选中节点后,若当前页签为 **「关联物料分类」**,请求 `category_listed``dept_code`),并行请求 `category/listed` 构建 **code →「父 / 子 / …」** 路径表;列表项上方为灰色路径行,下方为名称与编码。
2. **未选部门**:右侧工作区提示先选部门,不调列表与维护接口。
3. **切换页签**:切回「角色列表」时退出物料分类管理态(取消编辑中的树);切至「关联物料分类」且已有选中部门时刷新已关联列表。
4. **切换部门**:在「关联物料分类」下更换部门时退出管理态并重新拉取该部门的关联列表。
5. **管理关联**:点击「管理关联」加载树,预勾选当前已关联节点;勾选/取消后点「确认」,与进入管理时的快照 diff,分别调用 `link_category``unlink_category`
6. **加载文案**:列表与树加载态为「加载中」;提交关联过程遮罩为 **「关联中」**。
7. **权限**`usePagePower('dept')``canUpdate` 控制「管理关联」按钮(无编辑权限时仍可看到橘色说明文案)。
---
## 3. 布局与样式(DeptManage.vue
- 右侧 **`dept-right-stack`**:顶栏 **「角色列表 | 关联物料分类」**,下方整块切换;**不** 把页签放在左侧部门栏。
- 「关联物料分类」:`dept-mc-workspace` 占满页签下方区域;有部门时为虚线框 **`dept-mc-bordered`** 包一层,内层 **`dept-mc-panel`** 与组织侧 `org-mc-*` 规则对齐(列表滚动区、管理态搜索 + 树 + 取消/确认;树标签省略、内部纵向滚动)。
---
## 4. 代码与文档对照
| 项 | 路径 |
|----|------|
| 页面 | `src/views/base/DeptManage.vue` |
| 类似实现(组织 + `company_code` | `src/views/base/OrgManage.vue``docs/组织管理_关联物料分类.md` |