fix(web3): TaskModal 编辑任务时 schema/table 被 watch(form.dbType) microtask 阶段清空
现象:编辑 Oracle 任务,「数据连接」Tab 的 Schema/数据表 下拉空白显示 「请先测试连接」。连接字段正确回填,但 schema/table 区域像新建任务一样 要重新选。 根因:watch(open) 编辑分支同步执行 form.dbType = task.db_type(即把 默认值 'MySQL' 改成 'Oracle')后,Vue 把 watch(form.dbType) 排进 microtask; 同步代码继续把 form.schema / form.table 从 task 回填完毕。等当前 microtask 跑完,watch(form.dbType) 才执行函数体,里面 '切方言就清 schema/table' 的 清理逻辑把刚回填的值一并清空。MySQL 任务也有这个 bug,只是 schema 通常 等于 db,看起来症状没那么明显。 修法(方案 A): - 加 isInitializing ref 作为初始化旗子 - watch(open) 入口 isInitializing=true,结束后 await nextTick() × 2 + false - watch(form.dbType) 头部 if (isInitializing.value) return 用户主动切 dbType / applyPreset() 行为不变(旗子默认 false,watcher 正常清理)。 验证: - npx vite build → ✓ built in 7.00s - 编辑 Oracle 任务 → Schema/数据表 自动回填,不再显示「请先测试连接」 - 新建任务切 dbType / applyPreset() 行为不变
Showing
Please register or sign in to comment