当前位置: 首页 > news >正文

前端vue打开多个窗口,关闭窗口后才继续执行后续逻辑

1.打开第一个弹窗

弹窗的按钮代码

2.点击窗口1中按钮,打开新的窗口

 // 请领单按钮点击
async cb_6_delClick() {let ls_yfbm = this.st_3Value.BMBMlet pstring = {}pstring.a = ls_yfbmpstring.b = this.queryFormDialog.outDepotDeptCodeawait 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].CKSLlet ldc_kcsl = this.adviceTableCalc[i].KCSLif (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_ksmcawait 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.DRBMls_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
        }
      }

相关文章:

  • 【C语言】字符与字符串
  • [6-01-01].第12节:字节码文件内容 - 属性表集合
  • Pydantic,Field和Annotated
  • JAVA实战开源项目:周边游平台系统 (Vue+SpringBoot) 附源码
  • Python图像灰度化处理:原理、方法与实战
  • Java八股文——集合「Queue篇」
  • Redis Set集合命令、内部编码及应用场景(详细)
  • 【电赛培训课程】运算放大器及其应用电路设计
  • Abaqus分析步与输出:
  • JVM中的各类引用
  • Redis(02)Win系统如何将Redis配置为开机自启的服务
  • Linux下如何使用shell脚本导出elasticsearch中某一个index的数据为本地csv文件
  • mysql脚本安装
  • 【设计模式-4.11】行为型——解释器模式
  • 【element-ui】el-autocomplete实现 无数据匹配
  • win10系统docker安装dify
  • 【Python新手入门指南】极速搭建Python开发环境
  • open3d:使用彩色图和深度图生成点云
  • js 比较两个对象的值,不相等就push对象的key
  • 虚拟仿真技术赋能家庭教育实训室建设要点解析​
  • 榆林做网站/外包公司的优势和劣势
  • 做saas网站可行吗/天津疫情最新情况
  • 特克斯与凯科斯群岛域名官方网站/近期舆情热点事件
  • 辛集建设局网站/网络营销策略包括
  • 应用网站模板/资源网站优化排名优化
  • 国外网站不需要备案吗/网络营销10大平台