# 分享链接导入并同步关联计划功能 - 实现计划 ## 功能概述 采购商(布行)在计划总览页面可以为每个计划生成分享链接,发送给纺织厂/水洗厂。对方通过链接打开系统后,自动导入并关联该计划到自己的公司,实现跨角色协作。 ## 核心流程 1. **采购商生成分享链接**:在计划总览页面,点击"分享链接"按钮,生成包含计划ID的URL(如 `#/import?plan=xxx&type=textile`) 2. **工厂方打开链接**:纺织厂/水洗厂用户收到链接后打开,系统识别URL参数,展示计划详情和导入确认页面 3. **确认导入**:工厂方确认后,系统在 `plan_factories` 表中创建关联记录,将计划绑定到工厂公司 4. **同步生效**:导入成功后,工厂方的工作台和计划总览自动显示该计划 ## 实现步骤 ### 步骤1:新增路由和导入页面 - 在 `App.tsx` 中添加路由:`/import` → `ImportPlanPage` - 创建 `src/pages/ImportPlanPage.tsx`,处理URL参数中的 `plan` 和 `type` ### 步骤2:采购商计划总览 - 生成分享链接 修改 `src/pages/purchaser/PlanOverview.tsx`: - 将现有的"分享链接"按钮从工厂级别移到计划级别 - 点击后生成链接:`#/import?plan={planId}&type={factoryType}` - 显示复制链接的弹窗,支持一键复制 ### 步骤3:创建 ImportPlanPage 导入确认页面 创建 `src/pages/ImportPlanPage.tsx`: - 从URL参数读取 `plan`(计划ID)和 `type`(工厂类型:textile/washing) - 检查用户是否已登录且角色匹配(纺织厂用户只能导入textile类型,水洗厂只能导入washing类型) - 展示计划详情(产品名、颜色、坯布码、计划产量、纱线配比等) - 提供"确认导入"按钮 - 导入逻辑:向 `plan_factories` 表插入 `{plan_id, factory_id: 当前公司ID, factory_type: type}` - 导入成功后跳转到对应工作台 ### 步骤4:防重复导入 - 导入前检查 `plan_factories` 是否已存在相同关联 - 如果已存在,提示"该计划已导入"并跳转到工作台 ### 步骤5:更新 AGENTS.md 路由表 添加 `/import` 路由记录 ## 涉及文件 | 文件 | 操作 | 说明 | |------|------|------| | `src/App.tsx` | 编辑 | 添加 `/import` 路由 | | `src/pages/ImportPlanPage.tsx` | 新建 | 导入确认页面 | | `src/pages/purchaser/PlanOverview.tsx` | 编辑 | 分享链接按钮改为计划级别,添加复制链接弹窗 | | `AGENTS.md` | 编辑 | 添加路由记录 | ## 数据库变更 无需新增表或字段。使用现有的 `plan_factories` 表存储关联关系。 ## URL格式设计 ``` #/import?plan={planId}&type={textile|washing} ``` - `plan`: 生产计划的UUID - `type`: 工厂类型,决定纺织厂还是水洗厂可以导入 ## ImportPlanPage 页面设计 1. 未登录 → 提示登录并跳转到 `/login` 2. 已登录但角色不匹配 → 提示角色不匹配 3. 已登录且角色匹配 → 展示计划详情 + 确认导入按钮 4. 已导入 → 提示已导入 + 跳转工作台