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

news2024/12/15 16:37:43

文章目录

遇到一个前端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>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Kibana 中为 Vega Sankey 可视化添加过滤功能

作者&#xff1a;来自 Elastic Tim Bosman 及 Miloš Mandić 有兴趣在 Kibana 中为 Vega 可视化添加交互式过滤器吗&#xff1f;了解如何利用 “kibanaAddFilter” 函数轻松创建动态且响应迅速的 Sankey 可视化。 在这篇博客中&#xff0c;我们将了解如何启用 Vega Sankey 可视…

【实验】【H3CNE邓方鸣】交换机端口安全实验+2024.12.11

实验来源&#xff1a;邓方鸣交换机端口安全实验 软件下载&#xff1a; 华三虚拟实验室: 华三虚拟实验室下载 wireshark&#xff1a;wireshark SecureCRT v8.7 版本: CRT下载分享与破解 文章目录 dot1x 开启802.1X身份验证 开启802.1X身份验证&#xff0c;需要在系统视图和接口视…

qt 封装 调用 dll

这个目录下 &#xff0c;第一个收藏的这个 &#xff0c;可以用&#xff0c; 但是有几个地方要注意 第一.需要将dll的头文件添加到qt的文件夹里面 第二&#xff0c;需要在pro文件里面添加动态库路径 第三&#xff0c;如果调用dll失败&#xff0c;那么大概需要将dll文件放在e…

JS原型及原型链

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

常见的汽车前灯方案

文章目录 1.前言2.前灯方案需求概述3.传统前灯方案3.1 方案描述3.2 常用芯片 4.智能前灯控制器方案4.1 方案描述4.2 常用芯片 5.投影灯方案5.1 DLP5.2 MicroLED模组5.2.1 方案描述5.2.2 常用芯片 1.前言 自从上次分享了汽车贯穿式尾灯之后&#xff0c;也有很多读者发私信咨询汽…

队列+宽搜_429. N 叉树的层序遍历_二叉树最大宽度

429. N 叉树的层序遍历 定义一个队列q&#xff0c;将一层的节点入队&#xff0c;并记录节点个数。根据节点的个数&#xff0c;出队列&#xff0c;并将其孩子入队列。出完队列&#xff0c;队列当前剩余节点的个数就是下次出队列的次数。直到队列为空 /* // Definition for a Nod…

深度剖析 ToF 技术:原理、优劣、数据纠错与工业应用全解析

1 引言 飞行时间&#xff08;Time-of-Flight&#xff0c;简称ToF&#xff09;技术是一种先进的三维成像技术&#xff0c;其工作机制与三维激光扫描技术有着相似之处。ToF技术的主要优势在于其能够一次性捕获整个场景的深度信息&#xff0c;而不是通过逐点扫描的方式来获取&…

嵌入式硬件-- 元器件焊接

1.锡膏的使用 锡膏要保存在冰箱里。 焊接排线端子&#xff1b;138度的低温锡&#xff08;锡膏&#xff09;&#xff0c; 第一次使用&#xff0c;直接拿东西挑一点涂在引脚上&#xff0c;不知道多少合适&#xff0c;加热台加热到260左右&#xff0c;放在上面观察锡融化&#…

一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测

一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测 目录 一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现INFO-CNN-SVM向量加权算法优化卷积神经网络结…

给新ubuntu电脑配置远程控制环境和c++版本的opencv环境

目录 改用户密码安装ssh sever安装net-tools配置vscode安装vim配置C opencv1. 安装g, cmake, make2.安装opencv依赖库3.下载opencv源文件&#xff08;1&#xff09;方法一&#xff1a;官网下载&#xff08;2&#xff09;方法二&#xff1a;GitHub下载方式&#xff1a; 4. Cmake…

(3)spring security - 认识PasswordEncoder

目录 1.简介1.1.简单了解认证流程 2.密码验证3.PasswordEncoder的内置实现4.小结 目标&#xff1a; 简单了解认证的流程简单认识spring security中的Password Encoder 1.简介 还是以这幅图为基础&#xff0c;认识Password Encoder到底是什么&#xff1f; 1.1.简单了解认证流程…

29.在Vue 3中使用OpenLayers读取WKB数据并显示图形

在Web开发中&#xff0c;地理信息系统&#xff08;GIS&#xff09;应用越来越重要&#xff0c;尤其是在地图展示和空间数据分析的场景中。OpenLayers作为一个强大的开源JavaScript库&#xff0c;为开发者提供了丰富的地图展示和空间数据处理能力。在本篇文章中&#xff0c;我将…

LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Dify与Qwen2.5

背景 Dify 是一款开源的大语言模型(LLM) 应用开发平台。其直观的界面结合了 AI 工作流、 RAG 管道、 Agent 、模型管理、可观测性功能等&#xff0c;让您可以快速从原型到生产。相比 LangChain 这类有着锤子、钉子的工具箱开发库&#xff0c; Dify 提供了更接近生产需要的完整…

革新3D高保真数字人生成:无需深度摄像头,普通手机视频即可创建逼真面部动画

在数字化内容创作领域,特别是虚拟人物和增强现实(AR)应用中,高质量的3D数字人生成正变得越来越重要。然而,传统方法依赖于昂贵的深度摄像头和复杂的设备设置,这不仅增加了成本,也限制了其灵活性和易用性。为了解决这些问题,并降低进入门槛,一款基于MetaHuman的插件应运…

【前端 Uniapp】使用Vant打造Uniapp项目(避坑版)

一、基本介绍 Uniapp 是基于 Vue.js 的开发框架&#xff0c;通过一套代码可以同时发布到多个平台的应用框架。而 Vant 是针对移动端 Vue.js 的组件库。通过这样的组合&#xff0c;我们可以快速构建出一个跨平台的移动应用。Vant 已经支持多种小程序和 H5 平台&#xff0c;也对…

【记录】Django解决与VUE跨域问题

1 梗概 这里记录Django与VUE的跨域问题解决方法&#xff0c;主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…

【AI知识】激活函数介绍(sigmoid Tanh Relu)+ 梯度爆炸 / 消失及解决办法

激活函数&#xff1a; 使用激活函数的原因&#xff1a; 神经网络中每一层的输入输出都是一个线性求和的过程&#xff0c;下一层的输出只是承接了上一层输入函数的线性变换&#xff0c;如果没有激活函数&#xff0c;无论构造的神经网络多么复杂&#xff0c;有多少层&#xff0c;…

驱动开发-入门【1】

1.内核下载地址 Linux内核源码的官方网站为https://www.kernel.org/&#xff0c;可以在该网站下载最新的Linux内核源码。进入该网站之后如下图所示&#xff1a; 从上图可以看到多个版本的内核分支&#xff0c;分别为主线版本&#xff08;mainline&#xff09;、稳定版本&#…

3D 生成重建038-DiffGS训练一个3DGS编码器来简化训练

3D 生成重建038-DiffGS训练一个3DGS编码器来简化训练 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 三维高斯溅射&#xff08;3DGS&#xff09;在渲染速度和保真度方面表现出了令人信服的性能&#xff0c;但由于其离散性和非结构性&#xff0c;高斯溅射的生成仍然是一…

【渗透测试一】信息收集

信息收集简介 定义 信息收集是渗透测试和网络安全评估等活动的初始关键阶段。它是指通过各种合法手段&#xff08;如网络扫描、查询公开数据库、社会工程学等&#xff09;&#xff0c;收集与目标系统&#xff08;包括网络、主机、应用程序、组织等&#xff09;相关的信息&…