feat(web3): 规则设置弹窗 · 从其他任务导入规则 + 字段中文标签
动机 1) 每建一个新任务都要从零手写规则,重复劳动严重。 任务间的规则往往通用(手机号格式、身份证校验、年龄范围),希望能从已有任务复制。 2) 导入弹框只显示 ZJHM 这种英文列名,业务人员看不懂字段是啥意思。 需要在字段标题后补字段中文标签(数据库列注释)。 改动 src/components/ImportRulesDialog.vue (新) - 左右两栏布局(960px 宽): · 左列:所有非自身的任务列表(listTasks(),过滤掉 currentTaskId) · 右列:选中任务的所有字段+规则(getTask(id) 拿详情,按字段分组),每条规则 checkbox - 字段标题:field_key + field_comment 横排显示(comment 为空时「(无字段注释)」灰斜体兜底) - 顶部「全选 / 反选」;底部「已选 N 条 + 取消 + 导入 N 条」 src/components/RuleModal.vue - 在 + 添加规则 下方加「📥 从其他任务导入规则」按钮(绿色边区分) - 新增 taskId prop + importOpen ref + onImportRules() - 去掉后端 id(避免保存时按 id 当 update 走错路径),用 Date.now()+count 生成临时占位 id - 清空 testVal/testResult(让用户在新字段下重新测试) src/components/TaskModal.vue - <RuleModal> 加 :task-id="props.task?.id || 0" backend/routers/tasks.py - FieldOut 加 comment: Optional[str] = None - 新增 _fetch_field_comments(t, conn):用任务自身的 conn_json 连一次数据源, 调 db_adapter.list_columns() 拿 {field_key: column_comment} · 连接信息不全 / 连不上 / 表不存在 → 降级返回空 dict,不报错(comment 是辅助信息) · 复用既有 db_adapter,无新依赖;schema/table_name 走绑定参数无 SQL 注入 - _row_to_out(include_field_list=True) 时拉一次 comment_map 注入每个 FieldOut 关键决策 - 后端主动拉 comment 而非前端:前端拿不到密码 - 失败不报错:comment 缺失不影响主流程 - 不持久化到 Field 表:跟 plan §4 决策一致——数据字典不存,每次按 task 重新拉 Bug 修复 第一次实现时 computed 返 {fieldKey, fieldComment, rules},但模板里写了 v-if="group.comment", comment 没定义 → 永远 falsy → 显示「(无字段注释」兜底。不报错只静默渲染空。 改成 v-if="group.fieldComment"。已记到 memory(vue-computed-template-prop-name-mismatch)。 验证 - 后端 TestClient: GET /api/tasks/24 → field_list[ZJHM].comment = '证件号码 | 数据标准: 01010007' ✓ - npx vite build → ✓ built in 7.09s(1640 modules,无报错) 注 - 4 个 web3/tests/*.png modified 未提交(与本功能无关) - 后端有改动需用户重启进程
Showing
This diff is collapsed.
Please register or sign in to comment