表格的选择弹窗,选中后返显到表格中

news2024/11/20 5:54:44

项目场景:

提示:这里简述项目相关背景:

表格的下拉框可以直接显示选项,那如果选择框不是下拉的,而是弹窗,那么在表格中如何返显呢?


问题描述

如上图所示,点击表格中的选择,出现一个弹窗,在弹窗中选择后,需要返显到表格中(返显到表格,不是表单)


解决方案:

提示:这里填写该问题的具体解决方案:

点击事件传参时利用scope的另一个属性  scope.$index ,scope.row可以获取当前行的数据,而 scope.$index 可以得到点击的是表格的哪一条(第几个)数据。

下面是一个可编辑/查看的弹窗,弹窗中有表格,表格的选项是弹窗型式的,要求点击选项弹窗后表格要显示选中的数据

1:父组件

1:html

<template>
  <!-- 编辑查看的弹窗 -->
  <Dialog 
    v-model="dialogVisible" 
    :title="questionTitle" 
    :width="props.questionWidth" 
    :close-on-click-modal="false" 
    :close-on-press-escape="false">
    <!-- 型式试验 -->
    <QuestionType 
    ref="child1"
    :tableList="questionData.testList"
    :title="'型式试验'"
    @carSelect="carSelect"
    />
    <template #footer>
      <el-button 
        type="primary" 
        @click="submitForm">暂 存</el-button>
      <el-button @click="dialogVisible = false">取 消</el-button>
    </template>
  </Dialog>
</template>

2:ts

<script setup lang="ts">
import QuestionType from './questionTable/questionType.vue'
defineOptions({ name: 'questionCheckEdit' })
//接收父组件传过来的值
const props = defineProps({
  questionWidth:{
    type:String,
    default:"100%",//默认编辑/查看 弹窗宽度100%
  },
})
interface questioninter{
  status:number|string,
  testList:Array<yearAdd1Item>,
}
interface yearAdd1Item{
  questionsCode:string|number,
  questionsCategory:string|number,
  questionsSubCategory:string|number,
  questionsNature:string|number,
  happenType:string|number,
  proposedTime:string|number,
  vehicleModel:string|number,
  questionsSource:string|number,
}

const questionData=ref<questioninter>({
  status:0,
  testList:[],
})
const questionTitle=ref("");//弹窗类型 编辑/查看
const dialogVisible = ref(false) // 查看/编辑 弹窗的是否展示默认不展示
/** 打开弹窗 请求数据*/
const loading=ref(true)
const questionCheckEditOpen = (params) => {
  dialogVisible.value = true;
  if(params.btnType=="edit"){
    questionTitle.value="编辑";
  }else{
    questionTitle.value="查看";
  }
  loading.value=true;
  YearPerformanceApi.getYearPerformance(params.row.id)
  .then(res=>{
    // 数据请求成功关闭 loading效果
    loading.value=false;
    questionData.value=res
    if(res.testList==null){
      questionData.value.testList=[]
    }
  })
}
defineExpose({ questionCheckEditOpen }) // 提供 open 方法,用于打开弹窗

//引入 emits 将子组件的数据变化传给父组件 
// 通知列表 
const emits=defineEmits([
  "success",
]);
// 父组件接受子组件发过来的选中的数据 父组件给那一条数据 赋值
const carSelect=(params)=>{
  if(params.arr=="testList"){//如果是型式试验
    questionData.value.testList[params.index].vehicleModel=params.res
  }
}

// 提交输入的表格
const submitForm=(status:number)=>{
  
}

</script>
<style scoped>

</style>

2:子组件

1:html

<template>
  <ContentWrap>
    <h5 class="titleGB">{{ props.title }}</h5>
    <el-table 
      ref="tableRef"
      :data="props.tableList" 
      :stripe="true" 
      :show-overflow-tooltip="true" 
      :border="true"
      :header-cell-style="{textAlign:'center'}"
      :cell-style="{textAlign:'center'}">
      <el-table-column type="selection" width="80" fixed="left" />
      <el-table-column 
        label="问题性质说明"
        min-width="160"
        prop="questionsNature"/>
      <el-table-column 
        label="车型"
        min-width="160"
        prop="vehicleModel">
        <template #default="scope">
            <div style="display:flex">
              <el-input 
                 v-model="scope.row.vehicleModel" 
                 placeholder="请选择车型" disabled/>
              <el-button
                v-if="!disabled"
                link type="primary"
                @click="carType(row,scope.$index)">选择</el-button>
            </div>
        </template>
      </el-table-column>
    </el-table>
  </ContentWrap>
  <!-- 车型选择弹窗 -->
  <ProjectPickModel
    ref="projectPickModelRef"
    dialog-title="选择车型"
    :is-multiple="false"
    width="60%"
    @on-pick-change="projectOnPickChange"
  />
</template>

2:ts

<script setup lang="ts">
import ProjectPickModel from "@/views/components/ProjectPickModel.vue";
defineOptions({ name: 'questionType' })
//接收父组件传过来的值
const props = defineProps({
  tableList:{
    type:Array,
  },
  title:{
    type:String,
    default:"型式试验"
  },
  disabled:{
    type:Boolean,
    default:false,
  }
})

const tableRef =ref() // 表格ref
// =======================================操作表格

// 车型的选择按钮 点击打开车型选择弹窗
const selectedIndex=ref<string|number>();//选中的那一行的index
const projectPickModelRef =ref();
// 点击选择 打开选择车型的弹窗 获取点击的数据的index
const carType=async (row,index)=>{
  //调用选择车型的自定义open方法 打开这个弹窗  也可以用父组件控制 车型弹窗的显示/隐藏
  projectPickModelRef.value.open();
  selectedIndex.value=index;
}
// 车型选择
const projectOnPickChange = (selectedRow: any) => {
  if (selectedRow.length > 0) {
    const res=selectedRow[0].engineModel;//获得选中的车型
    let params={
      res:res,
      index:selectedIndex.value,
    }
    //将选中的 数据 和 点击表格的index传给父组件,让父组件 赋值
    emits("carSelect",params)
  }
}
</script>
<style scoped>

</style>

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

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

相关文章

HCIP --OSI七层参考模型回顾、TCP/UDP协议复习

目录 一、OSI 二、重要的三个协议报头格式 名词注解 MTU 封装 解封装 PDU ARP DNS TCP/IP与OSI的区别 三、数据包转发过程 四、获取目标ip地址方式 五、获取目标mac地址方式 六、交换机的工作原理 七、TCP/UDP TCP&#xff08;Transmission Control Protocol&a…

【深度学习|目标跟踪】DeepSort 详解

DeepSort详解 1、Sort回顾2、DeepSort的状态向量3、DeepSort的外观特征4、DeepSort的track状态5、DeepSort的代价矩阵以及门控矩阵6、DeepSort的级联匹配 1、Sort回顾 查看这篇博客 2、DeepSort的状态向量 Sort中的卡尔曼滤波使用的目标的状态向量是一个7维的向量&#xff0c…

无人机在森林中的应用!

一、森林资源调查 无人机可以利用遥感技术快速获取所需区域高精度的空间遥感信息&#xff0c;对森林图斑进行精确区划。相较于传统手段&#xff0c;无人机调查具有低成本、高效率、高时效的特点&#xff0c;尤其在地理环境条件不好的区域&#xff0c;调查人员无法或难以到达的…

【WPF】Prism学习(七)

Prism Dependency Injection 1.注册类型&#xff08;Registering Types&#xff09; 1.1. Prism中的服务生命周期&#xff1a; Transient&#xff08;瞬态&#xff09;&#xff1a;每次请求服务或类型时&#xff0c;都会获得一个新的实例。Singleton&#xff08;单例&#xf…

.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】

一、使用VSCode开发.NET项目 1、创建文件夹&#xff0c;使用VSCode打开 2、安装扩展工具 1>C# 2>安装NuGet包管理工具&#xff0c;外部dll包依靠它来加载 法1》&#xff1a;NuGet Gallery&#xff0c;注意要启动科学的工具 法2》NuGet Package Manager GUl&#xff0c…

【Homework】【7】Learning resources for DQ Robotics in MATLAB

阻尼伪逆使系统在任务空间奇异性方面具有一定的鲁棒性 阻尼伪逆 阻尼伪逆是SVD&#xff08;奇异值分解&#xff09;逆矩阵的一种有趣替代方法&#xff0c;它使系统在任务空间奇异性方面具有一定的鲁棒性。其主要思想是对任意&#xff08;可能为奇异的&#xff09;矩阵 B ∈ …

新一代API开发工具,让API调试更快 更简单

新一代API开发工具 代理调试 请求测试一站式解决方案 Reqable Fiddler Charles Postman, 让API调试更快 &#x1f680; 更简单 &#x1f44c; 直接上下载地址 根据系统,下载对应的版本即可 https://reqable.com/zh-CN/download/

详细解析STM32 GPIO引脚的8种模式

目录 一、输入浮空&#xff08;Floating Input&#xff09;&#xff1a;GPIO引脚不连接任何上拉或下拉电阻&#xff0c;处于高阻态 1.浮空输入的定义 2.浮空输入的特点 3.浮空输入的应用场景 4.浮空输入的缺点 5.典型配置方式 6.注意事项 二、输入上拉&#xff08;Inpu…

对于 unix 系统管理员来说,了解 VIM 有多重要?

对于 Unix 系统管理员来说&#xff0c;掌握 VIM 的重要性不言而喻。VIM 作为 Unix 系统中默认的文本编辑器&#xff0c;几乎在所有 Unix 系统中都预装&#xff0c;这使得系统管理员必须熟练使用它来编辑配置文件、编写脚本等。 VIM 强大的功能和灵活性&#xff0c;使得它能够满…

containerd使用

一、ctr命令 1.查看命名空间 ctr namespace ls 2.查看特定命名空间镜像 ctr -n k8s.io images ls 3.查看特定命名空间容器 ctr -n k8s.io container ls 注意&#xff1a;该项与docker不同&#xff0c;container查看容器是所有的容器无论有没有启动&#xff0c;只要创建了的…

Python 数据结构对比:列表与数组的选择指南

文章目录 &#x1f4af;前言&#x1f4af;Python中的列表&#xff08;list&#xff09;和数组&#xff08;array&#xff09;的详细对比1. 数据类型的灵活性2. 性能与效率3. 功能与操作4. 使用场景5. 数据结构选择的考量6. 实际应用案例7. 结论 &#x1f4af;小结 &#x1f4af…

在Q-Studio中进行OTX脚本的开发、仿真与调试

一 背景 现如今&#xff0c;随着车辆中电子器件和软件数量的快速增加&#xff0c;在车辆研发、生产、测试及售后阶段需要进行的车载测试工作越来越多、越来越复杂&#xff0c;呈现指数级增长的趋势。以往常用的手动测试方式已完全无法满足现如今的测试需求了&#xff0c;由此推…

Cursor安装Windows / Ubuntu

一、安装 1、下载软件 2、安装依赖 #安装fuse sudo apt-get install fuse3、将cursor添加到应用程序列表 sudo mv cursor-0.42.5x86_64.AppImage /opt/cursor.appimage #使用自己版本号替换 sudo chmod x /opt/cursor.appimage #给予可执行权限 sudo nano /usr/share/applic…

NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标

论文速读|MetaMetrics-MT: Tuning Meta-Metrics for Machine Translation via Human Preference Calibration 论文信息&#xff1a; 简介&#xff1a; 本文的背景是机器翻译&#xff08;MT&#xff09;任务的评估。在机器翻译领域&#xff0c;由于不同场景和语言对的需求差异&a…

Docker部署Kafka集群,增加 SASL_SSL认证,并集成到Spring Boot,无Zookeeper版

1&#xff0c;准备好Kafka 镜像包&#xff1a; bitnami/kafka:3.9.0 镜像资源包 2&#xff0c;准备好kafka.keystore.jks 和 kafka.truststore.jks证书 具体操作可参考&#xff1a; Docker部署Kafka SASL_SSL认证&#xff0c;并集成到Spring Boot-CSDN博客 3&#xff0c;配置…

Git 分⽀规范 Git Flow 模型

前言 GitFlow 是一种流行的 Git 分支管理策略&#xff0c;由 Vincent Driessen 在 2010 年提出。它提供了一种结构化的方法来管理项目的开发、发布和维护&#xff0c;特别适合大型和复杂的项目。GitFlow 定义了一套明确的分支模型和工作流程&#xff0c;使得团队成员可以更有效…

shell脚本命令1,保姆级别---清风

声明&#xff1a; 本文的学习内容来源于B站up主“泷羽sec”视频“蓝队基础之网络七层杀伤链”的公开分享&#xff0c;所有内容仅限于网络安全技术的交流学习&#xff0c;不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c;请联系本人&#xff0c;我将立即删除相…

MySQL扩展varchar字段长度能否Online DDL

目录 问题场景 Online DDL 简介 场景复现 DBdoctor快速识别 Online DDL 总结 问题场景 在MySQL数据库中&#xff0c;DDL变更可以通过两种算法实现&#xff1a;Copy算法和In-Place算法。Copy算法会复制整个表&#xff0c;这可能导致长时间的写入阻塞&#xff0c;从而严重影…

低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络

刚搬进新租的房子&#xff0c;没有网络&#xff0c;开个热点&#xff1f;续航不太行。随身WIFI&#xff1f;大多是百兆级网络。找人拉宽带&#xff1f;太麻烦&#xff0c;退租的时候也不能带着走。5G CPE倒是个不错的选择&#xff0c;插入SIM卡就能直接连接5G网络&#xff0c;千…

港大ArcLab最新开源DEIO:第一个学习与传统非线性图优化紧密结合的单目事件惯性里程计

原文链接&#xff1a;港大ArcLab最新开源DEIO&#xff1a;第一个学习与传统非线性图优化紧密结合的单目事件惯性里程计 导读 本文介绍了一种名为 DEIO&#xff08;Deep Event Inertial Odometry&#xff09;的新型单目深度事件惯性里程计框架。该方法创新性地将深度学习与传统…