来源:
shanxia/crm/web/src/views/crm/clue/+ README.md
UI 权威:docs/web-admin-ui-spec-fresh-mint.md;列表参照/#/demo/order,表单弹窗参照ProtocolFormDialog//#/demo/user
index.vuepanel-top 单标题「线索列表」+ 竖条panel-tabs:我的线索 / 全部线索 / 待跟进 / 今日新增 / 已转化filter-block + filter-extra(禁止筛选区内横线)list-toolbar:已选 N 项 → 新增(唯一 primary)→ 分配 / 导出 / 导入 等描边list-body + el-table(stripe,无 border)+ 分页 list-pager-barform、followForm、convertForm、assignForm、invalidForm(保持原 CRM 结构,不强行拆路由)线索姓名、公司、手机、来源、等级、状态、行业、负责人、创建时间范围等(与原 CRM 一致)。
线索姓名(链接进详情)、公司、手机、来源/等级/状态(el-tag)、负责人、下次联系时间、跟进次数、创建时间、操作列 fixed="right" min-width ≥ 260。
| 操作 | v-auth / 权限 |
|---|---|
| 新增 | add |
| 导出 | export |
| 导入 | import |
| 查看 | query(跳详情) |
| 编辑 | edit |
| 跟进 | follow |
| 分配 | assign |
| 转化 | convert |
| 标无效 | invalid |
| 删除 | remove |
见 04-api-spec.md;全部改为 request.post('/web/crm/clue/...') + 驼峰 body。
detail.vueform、followForm、convertForm/crm/clue/detail?id=/#/crm/clue/detail/:id(hideInMenu + menuCode: crm:clue:query)el-tag + 字典 tagType<el-icon> + 6px 间距| 文件 | 适配要点 |
|---|---|
form.vue |
dialog-form-layout、label-position="top"、form-grid-2、长字段跨列 |
followForm.vue |
附件走 attachment-upload-field 或门户统一上传组件 |
convertForm.vue |
展示线索摘要 + 转化原因校验(≥20 字以 Java 为准) |
assignForm.vue |
用户下拉 fetchUserOptions / fetchUserList(禁止 @/api/system/user) |
invalidForm.vue |
原因必填 |
statistics/index.vue(Phase B)依赖 5 个 statistics API;后端就绪后再适配 ECharts。
backdrop-filter 模糊space-between 甩按钮min-widthalign-center + scroll-to-error