前端退出对话框也就是点击右上角的叉,显示灰色界面,已经解决

文章目录

遇到一个前端bug,点击生成邀请码
在这里插入图片描述
打开对话框
在这里插入图片描述
然后我再点击叉号,退出对话框,虽然退出了对话框,但是显示灰色界面。如下图:
在这里插入图片描述
导致界面就会失效,点击任何地方都没有反应。
发现是如下代码的问题:

    <invite-code-list 
      :visible.sync="inviteFormVisible" 
      @success="handleInviteSuccess" 
      v-if="inviteFormVisible"
    />

只需要把v-if="inviteFormVisible"这个代码去掉就可以解决,点击叉,显示灰色背景界面就可以得到解决。

    <invite-code-list 
      :visible.sync="inviteFormVisible" 
      @success="handleInviteSuccess" 
    />
<template>
  <el-dialog
    :visible="visible"
    :before-close="handleTopRightClose"
    :close-on-click-modal="false"
    :title="`${operateType === 'add' ? '添加' : operateType === 'view' ? '查看' : operateType === 'edit' ? '编辑' : ''}`"
    width="55vw"
    top="15vh"
    append-to-body
    destroy-on-close
  >
    <div class="ave-form-wrap">
      <div class="ave-form-box">
        <el-form>
          <w-form-select
            v-model="form.identificationPointAdminId"
            label="识别点管理"
            label-width="120px"
            :operate-type="operateType"
            :list="clistValue"
            option-label="nickname"
            option-value="friendId"
          />
          <w-form-select
            v-model="form.compareAdminId"
            label="对比负责人"
            label-width="120px"
            :operate-type="operateType"
            :list="clistValue"
            option-label="nickname"
            option-value="friendId"
          />
          <w-form-select
            v-model="form.brandId"
            label="品牌"
            label-width="120px"
            :operate-type="operateType"
            :list="brandSels"
            option-label="name"
            option-value="id"
          />
        </el-form>
      </div>
    </div>
    <div slot="footer" class="form-footer">
      <div class="operateArea">
        <div class="left-btns">
          <el-button type="primary" plain size="mini" @click="showInviteForm">生成邀请码</el-button>
          <el-button style="margin-left: 10px;" type="primary" plain size="mini" @click="onAnti">生成防伪码</el-button>
        </div>
        <div class="right-btns">  
          <el-button @click="handleFooterClose">取消</el-button>
          <el-button v-if="operateType !== 'view'" size="mini" type="primary" @click="handleSubmit">提交</el-button>
        </div>
      </div>
    </div>  
    <invite-code-list 
      :visible.sync="inviteFormVisible" 
      @success="handleInviteSuccess" 
    />
    <!-- <anti-fake-list :visible="aflVis" @close="onaflClose" /> -->
  </el-dialog>
</template>
<script lang="ts">
import { Component, Vue, Prop, Emit, Watch } from 'vue-property-decorator'
import { AppModule } from '@/store/modules/app'
import { UserModule } from '@/store/modules/user'
import { productAll } from '@/api/product'
import { esave } from '@/api/fake-config'
import { qedits as brandAll } from '@/api/brand'

import WFormInput from '@/components/DialogForm/func/w-form-input.vue'
import WFormSelect from '@/components/DialogForm/func/w-form-select.vue'
import WFormTextarea from '@/components/DialogForm/func/w-form-textarea.vue'
import WFormDatePicker from '@/components/DialogForm/func/w-form-date-picker.vue'
import WFormRadios from '@/components/DialogForm/func/w-form-radios.vue'
import WFormSingleImage from '@/components/DialogForm/func/w-form-single-image.vue'
import WFormMultipleImage from '@/components/DialogForm/func/w-form-multiple-image.vue'
import WFormEditor from '@/components/DialogForm/func/w-form-editor.vue'
import InviteCodeList from './invite-code-list.vue'

@Component({
  name: 'ave-form',
  components: {
    WFormInput,
    WFormDatePicker,
    WFormSelect,
    WFormTextarea,
    WFormRadios,
    WFormSingleImage,
    WFormMultipleImage,
    WFormEditor,
    InviteCodeList
  }
})
export default class extends Vue {
  public role = UserModule.roles[0]
  public sid = UserModule.id

  @Prop({ default: () => {} })
  private value?: any

  @Prop({ default: true })
  private visible!: boolean

  @Prop({ default: 'add' })
  private operateType!: string

  @Prop({ default: () => [] })
  private clist!: any

  @Watch('clist')
  watchClist(v: any) {
    this.clistValue = [{ nickname: '自己', friendId: this.sid }, ...v]
  }

  @Watch('value')
  watchValue(v: any) {
    this.$nextTick(() => {
      this.getProducts()
      this.getBrands()
      this.form = { ...v }
    })
  }

  private form: any = {}
  private productList: any = []
  private clistValue: any = []
  private brandSels: any = []
  private inviteFormVisible = false
  private antiCode = ''

  private async getProducts() {
    const res: any = await productAll()
    if (res?.code === 0) {
      this.productList = res?.data?.content
    }
  }

  private async getBrands() {
    const res: any = await brandAll()
    this.brandSels = res?.data
  }

  private handleTopRightClose() {
    this.$emit('close', false)
  }
  

  private handleFooterClose() {
    this.$emit('close', false)
  }

  private handleSubmit() {
    this.save()
  }

  private async save() {
    const data = this.form
    const res: any = await esave(data)
    if (res?.code === 0) {
      this.$emit('close', true)
    }
  }

  private showInviteForm() {
    console.log('showInviteForm 被调用');
    // this.$store.state.inviteFormVisible = true;
    this.inviteFormVisible = true
  }

  private handleInviteSuccess() {
    // 邀请码生成成功后的处理,比如刷新列表等
  }

  // private aflVis: boolean = false

  // private onAnti() {
  //   // todo
  //   this.aflVis = true
  // }

  @Watch('inviteFormVisible')
  private onInviteFormVisibleChange(newVal: boolean) {
    console.log('inviteFormVisible 变化:', newVal);
  }

  mounted() {}
}
</script>

<style scoped lang="scss">
.ave-form-wrap {
  width: 100%;
  max-height: 90vh;
  overflow: auto;
  .ave-form-box {
    width: 30%;
  }
}

.form-footer {
  .operateArea {
    display: flex;
    justify-content: space-between;
    align-items: center;

    .left-btns {
      display: flex;
      align-items: center;
      gap: 10px;
    }

    .right-btns {
      display: flex;
      gap: 10px;
    }
  }
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/937586.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件需求概述(尊享版)

软件需求与软件分析 软件需求&#xff1a;用户角度&#xff0c;注重软件外在表现 软件分析&#xff1a;开发者角度&#xff0c;注重软件内部逻辑结构 面向对象分析模型 类/对象模型&#xff08;全部的类和对象&#xff09; 对象-关系模型&#xff08;对象之间的静态关系&…

配置Hugging_face国内镜像

目录 随着人工智能技术的蓬勃发展&#xff0c;Huggingface这一开源平台已成为研究者和开发者的宝贵资源&#xff0c;提供了丰富的预训练模型&#xff0c;助力自然语言处理任务的快速推进。然而&#xff0c;对于身处国内的我们而言&#xff0c;访问Huggingface主仓库时&#xff…

Rust之抽空学习系列(四)—— 编程通用概念(下)

Rust之抽空学习系列&#xff08;四&#xff09;—— 编程通用概念&#xff08;下&#xff09; 1、函数 函数用来对功能逻辑进行封装&#xff0c;能够增强复用、提高代码的可读 以下是函数的主要组成部分&#xff1a; 名称参数返回类型函数体 1.1、函数名称 在Rust中&…

电脑游戏运行时常见问题解析:穿越火线提示“unityplayer.dll丢失”的修复指南

电脑游戏运行时常见问题解析&#xff1a;穿越火线提示“unityplayer.dll丢失”的修复指南 在探索电脑游戏的无限乐趣时&#xff0c;我们时常会遇到一些不期而遇的挑战。今天&#xff0c;我们将聚焦于一个常见的游戏运行错误——穿越火线&#xff08;或其他使用Unity引擎的游戏…

Mac系统下 jdk和maven 安装教程

一、jdk安装教程 1、先去官网选择对应版本下载 官网网址&#xff1a;Java SE | Oracle Technology Network | Oracle 中国 这里我选择的是jdk8的版本&#xff0c;如果你们想下载更高的版本就选择其他版本&#xff0c;目前大部分公司和教程使用jdk8的版本比较多。 点击macos&a…

Python -- Linux中的Matplotlib图中无法显示中文 (中文为方框)

目的 用matplotlib生成的图中文无法正常显示 方法 主要原因: 没找到字体 进入windows系统的C:\Windows\Fonts目录, 复制自己想要的字体 粘贴到Linux服务器中对应python文件所处的文件夹内 设置字体: 设置好字体文件的路径在需要对字体设置的地方设置字体 效果 中文正常显…

Python中的self关键字详解

文章目录 Python中的self关键字详解一、引言二、self的基本概念1、定义类和实例 三、self在方法调用中的角色2、调用其他方法 四、使用示例3、继承中的self 五、总结 Python中的self关键字详解 一、引言 在Python的面向对象编程中&#xff0c;self是一个至关重要的概念&#x…

LabVIEW热电偶传感器虚拟仿真实验系统

在教学和科研领域&#xff0c;实验设备的更新和维护成本较高&#xff0c;尤其是在经济欠发达地区&#xff0c;设备的短缺和陈旧化严重影响了教学质量。基于LabVIEW的热电偶传感器虚拟仿真实验系统能够通过模拟实验环境&#xff0c;提供一个成本低廉且效果良好的教学和研究平台。…

优选算法《双指针》

在学习了C/C的基础知识之后接下来我们就可以来系统的学习相关的算法了&#xff0c;这在之后的笔试、面试或竞赛都是必须要掌握的&#xff1b;在这些算法中我们先来了解的是一些非常经典且较为常用的算法&#xff0c;在此也就是优选出来的算法&#xff0c;接下来在每一篇章中我们…

分布式数据库 OceanBase 的前世今生

文章目录 分布式数据库的开端OceanBase 2022 年度发布会为什么“小就是大”&#xff1f;商业化进程按下“加速键”向国际输出中国技术 OceanBase 2024 年度发布会为什么要做云数据库&#xff1f;2 年服务超 700 客户崭露头角一体化云数据库简化数据栈产品力和生态力是未来制胜关…

ubuntu 磁盘空间满,找不到占用文件的目录

解决方法&#xff1a; 检查磁盘空间&#xff1a; 执行 df -h 查看各分区磁盘使用情况。 查找大文件或目录&#xff1a; 执行 du -sh /* 2>/dev/null 查找根目录下的大文件或目录&#xff0c;再逐一进入子目录使用相同命令查找。 清理缓存和临时文件&#xff1a; 清理 /t…

图的基本概念|存储

图的基本概念 图的定义 图G由顶点集V和边集E组成&#xff0c;记为G&#xff08;V&#xff0c;E) 其中V(G)表示图G中顶点的有限非空集&#xff1b;E&#xff08;G)表示图G中顶点之间的关系&#xff08;边&#xff09;集合。 若V{ v 1 , v 2 , … , v n v_{1},v_{2},\dots,v_{n…

【Go】Linux、Windows、Mac 搭建Go开发环境

1、Linux 第一步&#xff0c;在 官网 下包&#xff0c;如 go1.23.4.linux-386.tar.gz&#xff08;注意架构区分&#xff09; 第二步&#xff0c;将包上传至服务器&#xff0c;假如上传到 tmp目录下第三步&#xff0c;安装# 解压 tar -C /app -xzvf go1.23.4.linux-386.tar.gz#…

tryhackme-Pre Security-Defensive Security Intro(防御安全简介)

任务一&#xff1a;Introduction to Defensive Security防御安全简介 此room的两个要点&#xff1a; Preventing intrusions from occurring 防止入侵发生Detecting intrusions when they occur and responding properly 检测发生的入侵并正确响应 防御安全还有更多内容。 除上…

linux网络编程 | c | 多进程并发服务器实现

多进程并发服务器 基于该视频完成 11-多进程并发服务器思路分析_哔哩哔哩_bilibili 通过的是非阻塞忙轮询的方式实现的 和阻塞等待的区别就是&#xff0c;阻塞是真的阻塞了&#xff0c;而这个方式是一直在问有没有请求有没有请求 文章目录 多进程并发服务器1.核心思路&…

Jlink调试找出程序隐藏BUG

有时候某些设备会在特定的情况卡死&#xff0c;而我们又不容易复现&#xff0c;这时候就需要使用JLink查看卡死设备PC寄存器的值&#xff0c;来定位程序卡死位置 1、第一步 连接好卡死设备&#xff0c;千万不要断电 2、打开JLink Commander 根据芯片型号和连接方式输入连接…

【小白包会的】使用supervisor 管理docker内多进程

使用supervisor 管理docker内多进程 一般情况下&#xff0c;一个docker是仅仅运行一个服务的 但是有的情况中&#xff0c;希望一个docker中运行多个进程&#xff0c;运行多个服务&#xff0c;也就是一个docker容器执行多个服务。 调研了一下&#xff0c;发现可以通过**super…

关系识别分类任务的评估指标: precision、recall、f1-score. 理解混淆矩阵

理解TP/FP/FN TP: 真实关系为A&#xff0c;预测关系也为A。FP: 预测为关系A&#xff0c;但真实关系不为AFN: 真实关系为A&#xff0c;但预测关系为其他关系。 代码 import matplotlib matplotlib.use(Agg) import matplotlib.pyplot as plt from sklearn.metrics import conf…

若依实现图片上传时自动添加水印

文章目录 总体思路1. 修改通用上传方法2. 去除文件路径前两级目录3. 添加水印方法运行效果总结 为了解决图盗用&#xff0c;并有效保护图片版权&#xff0c;若依项目需要实现一个功能&#xff1a;上传图片时&#xff0c;自动在图片上添加水印。这不仅可以有效防止盗用&#xff…

Python:基于PyCharm的简单程序创建及运行-HelloWorld

1. 新建项目 2. 设置文件位置&#xff0c;并创建项目 文件位置由“目录项目名称”组成&#xff0c;如&#xff1a;D:\PycharmProjects\HelloWorld&#xff0c;“HelloWorld”则是项目名称。 3. 创建Python文件 4. 定义文件名称&#xff0c;如HelloWorld。双击【Python 文件】完…