1.打开第一个弹窗
弹窗的按钮代码
2.点击窗口1中按钮,打开新的窗口
// 请领单按钮点击
async cb_6_delClick() {
let ls_yfbm = this.st_3Value.BMBM
let pstring = {}
pstring.a = ls_yfbm
pstring.b = this.queryFormDialog.outDepotDeptCode
await this.openwithparm_w_md_ckgl_lyjh_yfly(pstring)
// 防止此方法多次被调用已打开窗口
if (!this.dialog_uo_3) {
this.dialog_uo_3 = true
}
await new Promise((resolve) => {
this.$watch('dialog_uo_3', (newVal) => {
if (newVal === false) {
resolve();
}
});
});
// 出库数量大于库存数量时,将出库数量改成库存数量
for (let i = 0; i < this.adviceTableCalc.length; i++) {
let ldc_cksl = this.adviceTableCalc[i].CKSL
let ldc_kcsl = this.adviceTableCalc[i].KCSL
if (ldc_cksl > ldc_kcsl) {
this.adviceTableCalc[i].CKSL = ldc_kcsl
} else {
this.adviceTableCalc[i].XH = i
}
}
},
// 下面这一行代码是打开窗口前的一些逻辑,可以不用管不是该博客要讨论的重点 await this.openwithparm_w_md_ckgl_lyjh_yfly(pstring) // 下面这一行代码的执行会打开第2个窗口 this.dialog_uo_3 = true
第2个窗口代码
3.打开的第2个窗口
第2个窗口的确定按钮点击以后会关闭,那么就会展示第1个窗口了
可以看到方法 saveDialog_cb_3()方法的最后一行执行了关闭第2个窗口的操作 this.dialog_uo_3 = false
// 请领单确定按钮点击
async saveDialog_cb_3() {
let lb_init, lstr_rtn, ll_find, ll_drbm, ls_ksmc
await this.cb_4_w_md_ckgl_lyjh_yfly()
// todo
// w_md_ckgl_fygl_fyxz_yfly.dw_1.reset()
// w_md_ckgl_fygl_fyxz_yfly.dw_2.reset()
this.dw_1_qld.map(item => {
if (item.XZ === 1) {
ll_find = item
}
})
if (validatenotnull(ll_find)) {
ll_drbm = ll_find.DRBM
ls_ksmc = ll_find.KSMC
// todo
// w_md_ckgl_fygl_fyxz_yfly.uo_gys.uf_settext(string(ll_drbm),ls_ksmc)
}
if (this.orgName != '湖北中医药大学国医堂' || this.orgName != '湖北中医药大学黄家湖医院') {
// todo 8.0没有找到sle_bz这个控件,is_djh这个值8.0是在wf_bzxx()方法赋值的
// w_md_ckgl_fygl_fyxz_yfly.sle_bz.text = this.is_djh
}
console.log("this.dw_ckmx_temp:",this.dw_ckmx_temp)
this.dw_ckmx_temp.forEach(item => {
this.adviceTableCalc.push(item)
})
this.dw_ckmx.forEach(item => {
this.applyTable.push(item)
this.applyTableCalc.push(item)
})
this.applyTable = this.applyTable.map((item, index) => {
return {
...item,
id: index
}
})
this.applyTableCalc = this.applyTableCalc.map((item, index) => {
return {
...item,
id: index
}
})
this.adviceTableCalc = this.adviceTableCalc.map((item, index) => {
return {
...item,
id: index
}
})
// 初始化制空
this.dw_ckmx_temp = []
this.dw_ckmx = []
this.$nextTick(() => {
this.$refs.adviceTableCalc_03_04_07.setCurrentRowByIndex(0);
this.dialogRowClick_04_03_07(this.adviceTableCalc[0])
})
this.dialog_uo_3 = false
},
那么此时这一段代码会监听到 dialog_uo_3的值变成了false也就是我们的第2个窗口被关闭了,就会继续执行在第一个窗口打开第2个窗口等待第2个窗口关闭才继续执行的阻塞效果。
await new Promise((resolve) => {
this.$watch('dialog_uo_3', (newVal) => {
if (newVal === false) {
resolve();
}
});
});
所以下面这一段代码只有在第2个窗口被关闭时才会继续执行,否则一直阻塞等待窗口关闭
// 出库数量大于库存数量时,将出库数量改成库存数量
for (let i = 0; i < this.adviceTableCalc.length; i++) {
let ldc_cksl = this.adviceTableCalc[i].CKSL
let ldc_kcsl = this.adviceTableCalc[i].KCSL
if (ldc_cksl > ldc_kcsl) {
this.adviceTableCalc[i].CKSL = ldc_kcsl
} else {
this.adviceTableCalc[i].XH = i
}
}