• Data Governance Dev's avatar
    fix(web3): TaskModal 编辑任务时 schema/table 被 watch(form.dbType) microtask 阶段清空 · 25cb466d
    Data Governance Dev authored
    现象:编辑 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() 行为不变
    25cb466d
TaskModal.vue 33.4 KB