vue:动态表格操作栏操作显示隐藏控制

文章目录

    • 动态数据格式
    • 子组件接收父组件传递过来的数据

整动态数据格式程

 1.调用表格组件的父组件

<template>
<Table  :PropTableS="PropTableS"  ></Table>
</template>let PropTableS = ref({keyS:{selection:{type:'selection',width:50,},order_sn:{title:'退货通知单号',width:'200px',link:true},order_status_text:{title:'状态',},push_e3_text:{title:'已推送E3',select:true},is_succeed_text:{title:'推送E3状态',},has_sale_order_text:{title:'已生成退单',},customer_abbreviate:{title:'客户简称',},nc_code:{title:'NC代码',},order_amount:{title:'金额',},sku_count:{title:'数量',inputnumber:true,step:2,//每次点击加减数值precision:2,//精确到小数点后几位},return_shipping_name:{title:'退货快递公司',},logistics_number:{title:'退货物流单号',},warehouse_name:{title:'仓库',},business_type_text:{title:'业务类型',},user_text:{title:'业务',},creator_text:{title:'制单人',},remarks:{title:'备注',textarea:true,},business_time:{title:'业务时间',width:'200px'},created_at:{title:'创建时间',width:'200px'}, operate:[{title:"查看",isshow:true,type:'primary'},{title:"编辑",isshow: `row.push_e3 != 0`,type:'primary'},{title:"删除",isshow: `row.push_e3 == 1`,type:'danger'},{title:"确认",isshow: `row.order_status == 0`,type:'primary'},],}
})

子组件接收父组件传递的数据

<template><div class="TableBox"><el-tableclass="singleTableRef"ref="singleTableRef":data="PropTableS.tables"borderhighlight-current-row@selection-change="handleSelectionChange"row-key="id":header-cell-style="{background:'#f0f2f7'}":scrollbar-always-on="true":default-sort="{ prop: 'date', order: 'descending' }"max-height="644"> <template v-for="(child,key) in PropTableS.keyS" ><el-table-column v-slot="scope"  v-if="key != 'operate' "  :prop="key" :type="child.type" :label="child.title" :sortable="child.sortable"  :width="child.width" :show-overflow-tooltip="child.show_overflow_tooltip" >//根据父组件传递的数据类型判断是需要展示什么组件<!-- 点击跳转 --><template  v-if="child.link" ><el-link  type="primary"  @click="Selectuser(scope.row)">{{scope.row.order_sn}}</el-link></template><!-- 输入框  --><template v-if="child.textarea"  ><el-inputv-model="scope.row[key]"@blur="HandelTextareaBlur(scope.row)"size="small"class="tab_input"type="textarea"/></template><!-- 计数器 --><template v-if="child.inputnumber" ><el-input-numberv-model="scope.row[key]"@change="(currentValue,oldValue)=>{handelInputNumber(currentValue,oldValue,scope.row)}":min="0":precision="child.precision":step="child.step":max="100000000"size="small"controls-position="right"/></template><!-- 下拉 --><template v-if="child.select"><el-select@change="handelSelect"v-model="scope.row[key]"size="small"><el-option key="1" label="是" value="1" /><el-option key="2" label="否" value="2" /></el-select></template></el-table-column>//这是表格右侧操作栏部分<el-table-column v-slot="scope" v-else label="操作" fixed="right" class="TableRigth"  width="200"><template  v-for="(item,index) in child"><!-- v-if 因为传递过来的数据是 字符串格式,无法解析,使用方法将字符串转化为可执行的代码 --><el-link  v-if="evalExpression(scope.row,item.isshow)"  :underline="false" :type="item.type"  @click="handelOperateType(item.title)">{{item.title}}</el-link></template></el-table-column></template> </el-table></div>
</template>
<script setup lang="ts">import {defineProps,onMounted,ref,watch} from 'vue'import useCurrentInstance from "@/hooks/useCurrentInstance";const { proxy } = useCurrentInstance();const props = defineProps({PropTableS:{type:Object,}})const currentValue = ref(null)const time = ref(null)onMounted(()=>{let TabDom = document.querySelector('.singleTableRef')for (const item in props.PropTableS.tableStyle) {TabDom.style[item] = props.PropTableS.tableStyle[item]}})const singleTableRef = ref<InstanceType<typeof ElTable>>()function header_Cell_Style() {return 'backgourn:red;'}function handleSelectionChange(params:type) {}//链接点击function Selectuser(params:type) {proxy.$router.push(`/usercreate`) } //Textarea鼠标失去焦点function HandelTextareaBlur(row:string) {console.log('输入框失去焦点',row); }//计数器值改变function handelInputNumber(currentValue:number,oldValue:number,row:object) {callthrottle(currentValue,row)}function callthrottle(value:number,row:number) {let newTimeNumber = 0if(row.SetTime){clearInterval(row.SetTime)}throttleFunction(value,row,newTimeNumber)}function throttleFunction(value:number,row:number,newTimeNumber:number) {//在此之前传递数据的时候已经将每个对象中添加新的数据,用于每行数据可以存放自己创建的定时器, 点击三秒内没有进行操作就提交数据。否则重新读秒,多行同时使用不冲突row.SetTime =  setInterval(() => {++newTimeNumberif(newTimeNumber == 3){AxiosFunction('customer/edit',{username:'zhou1',password:'123456'})clearInterval(row.SetTime)}}, 1000);}//下拉选择function handelSelect(val:number) {console.log('下拉选择',val);AxiosFunction('customer/edit',{username:'zhou1',password:'123456'})}//请求方法function AxiosFunction(methods:string,url:string,params:object){proxy.$axios.post(url,params).then(res=>{console.log('请求');})}//点击操作function handelOperateType(title:string){console.log('title',title);}//解析操作栏的字符串 因为我传递过来的字符串是 scope就是获取表格中当行的数据,然后进行判断function evalExpression(row:object,params:string) {<!--  可将传递过来的字符串转换为可执行的代码  retrun 返回true 或者 false-->return eval(params)}</script><style scoped lang="less">.TableBox{width: 100%;padding: 0 0 20px 0 ;background: white;}::v-deep .el-table__inner-wrapper{overflow: hidden;overflow-y: auto;}::v-deep  .el-table__header .el-table__cell .cell{border-left: 2px solid #737c8b;}::v-deep  .el-table__header .el-table__cell:nth-child(1) .cell{border-left:none;}::v-deep  .el-table__header .el-table__cell:nth-child(2) .cell{border-left:none;}::v-deep  .el-table__header .el-table__cell:last-child .cell{border-left:none;}::v-deep .el-table__cell{border: none;font-size: var(--Click_Menu_FontSize);color: #1B2432;font-weight: 400;}::v-deep .el-table-fixed-column--right .cell{display: flex;justify-content: space-around;}</style>

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

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

相关文章

C++指针、数组越界异常、栈区、堆区,和静态区

文章目录 一、指针引用运算符(&)和引用运算符(*)二、数组越界异常三、C++的栈区、堆区,和静态区一、指针 C ++中指针能够直接操作计算机内存中的数据。 可以根据需要分配和取消分配内存中的任何空间。 指针变量是指向内存中另一个变量所指向的特定地址的变量。 声明一个…

使用 pyhttptest 进行 RESTful API 测试的最佳实践

现在&#xff0c;无论是开发还是使用服务&#xff0c;我们每个人都面临着 REST API 的挑战。同时&#xff0c;我们正处于微服务的流行时代&#xff0c;我们将业务逻辑拆分为多个独立的小服务。这些服务大多遵循 RESTful 原则&#xff0c;并使用 JSON 格式进行通信&#xff0c;因…

Qt项目使用pato mqtt C

一,下载pato mqtt C 源码 git 地址:https://github.com/eclipse/paho.mqtt.c.git git 地址可能下载不下来,提供我的gitee地址 gitee地址:https://gitee.com/chaojidahuaidan2021/paho.mqtt.c.git 二,编译共享库 clone下来后,将项目导入到Qt工程中,此时这是一个cmke工程…

三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据

官网demo地址&#xff1a; Draw Features 先初始化地图&#xff0c;准备一个空的矢量图层&#xff0c;用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…

Kubernetes和Docker对不同OS和CPU架构的适配关系

Docker Docker官网对操作系统和CPU架构的适配关系图 对于其他发行版本&#xff0c;Docker官方表示没有测试或验证在相应衍生发行版本上的安装&#xff0c;并建议针对例如Debian、Ubuntu等衍生发行版本上使用官方的对应版本。 Kubernetes X86-64 ARM64 Debian系 √ √ Re…

贪心算法[1]

首先用最最最经典的部分背包问题来引入贪心的思想。 由题意可知我们需要挑选出价值最大的物品放入背包&#xff0c;价值即单位价值。 我们需要计算出每一堆金币中单位价值。金币的属性涉及两个特征&#xff0c;重量和价值。 所以我们使用结构体。 上代码。 #include <i…

基于单张图片快速生成Metahuman数字人(模型贴图绑定)的工作流演示

基于单张图片快速生成Metahuman数字人&#xff08;模型贴图绑定&#xff09;的工作流演示 MetahumanModeler, 是我基于facebuilder以及metahuman的理解开发而成&#xff0c;插件可以基于单张图片生成metahuman拓扑结构的面部3d模型&#xff0c;同时生成对应的面部的贴图&#…

【debug】windows11安装WSL+Docker+本地部署cvcat

windows系统安装wsl虚拟机 首先观察是否已启用虚拟化&#xff1a; 在windows应用商店下载wsl 下载好后打开&#xff0c;创建用户名和密码&#xff0c;即可使用&#xff1a; 换源&#xff1a;ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirr…

leetcode231-Power of Two

题目 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&#xff1a;n 1 输出&#xff1…

在Spring中自定义事件及发布与监听

在Spring框架中&#xff0c;自定义事件及其发布与监听是一个涉及Spring事件机制的过程。Spring提供了一个基于观察者模式的事件发布和监听机制&#xff0c;允许在Spring容器中的组件之间进行松耦合的通信。以下是如何自定义事件以及如何发布和监听这些事件的步骤&#xff1a; …

LeetCode215数组中第K个最大元素

题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 解析 快速排序的思想&#xff…

代码随想录算法训练营第33天 | 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

代码随想录算法训练营第33天 | 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果 自己看到题目的第一想法看完代码随想录之后的想法自己实现过程中遇到哪些困难今日收获&#xff0c;记录一下自己的学习时长 链接: 1005.K次取反后最大化的数组和 链接: 134. 加油站 链接…

C++:vector的介绍及使用

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 文章目录 前言 一、vector的介绍 二、vector的使用 2.1.构造和赋值重载&#xff08;Member functions&#xff09; 2.2 vector iterator 的使用 2.3 vector 空间增长问题 2.4 vector 增删查改 三 sort 四 v…

邦芒面试:面试礼仪细节大揭秘

在求职过程中&#xff0c;面试礼仪如同一面镜子&#xff0c;直接反映出求职者的专业素养和个人品质。它不仅能够为求职者加分&#xff0c;还能为面试官留下深刻且积极的印象。以下就是一份详尽的面试礼仪全攻略&#xff0c;助你一臂之力。 一、守时为先 守时是面试的第一步&am…

所以研究生有不变胖的吗?

天天吃 记得和骏骏一样减肥 分享昨天无人机拍的照片

FL Studio v21.2.3.4004中文破解版百度网盘下载

FL Studio v21.2.3.4004中文破解版是一款完整的软件音乐制作环境或数字音频工作站 (DAW)。代表了超过 18 年的创新发展&#xff0c;它在一个软件包中提供了您创作、编曲、录制、编辑、混音和掌握专业品质音乐所需的一切。FL Studio v21.2.3.4004中文破解版现在是世界上最受欢迎…

长三角智能科技高端盛会—南京人工智能展览会(南京智博会)

南京&#xff0c;作为一座历史悠久的文化名城&#xff0c;早已不仅仅以其深厚的文化底蕴和独特的自然风貌著称于世。而今&#xff0c;这座古老而又年轻的城市&#xff0c;正以其卓越的科技实力和创新精神&#xff0c;成为中国乃至全球科研领域的一颗璀璨明珠。南京不仅是中国三…

No input file specified.(‘.user.ini’文件问题宝塔复制到本地,其他情况可跳过)

症状 病因 一般是宝塔直接copy到本地的情况。 宝塔面板中的.user.ini文件是一个重要的配置文件&#xff0c;它主要用于配置PHP运行环境和网站环境。以下是.user.ini文件的主要作用和操作建议&#xff1a; 防止跨目录访问和文件跨目录读取。这是.user.ini文件的主要作用之一&a…

FastAPI - 组织模块2

FastAPI没有强制指定某种格式来组织项目结构&#xff0c;开发者可以根据自己喜好和项目需要来定制自己的项目结构。 https://fastapi.tiangolo.com/zh/tutorial/bigger-applications/ 在项目根目录创建python包routers&#xff0c;然后创建member.py文件 member.py文件内容 …