vue中如何给特殊字段设置插槽

大纲:

<template><div><div><span>卡号</span><el-input type="text" v-model="cardNo" clearable placeholder="请输入卡号" /><el-button type="primary" plain icon="el-icon-search" @click="search">搜索</el-button></div><!-- 表格 --><el-table class="fontTextStyle" border :header-cell-style="{background:'#f0f9eb'}" :data="data" style="width: 100%"><el-table-column align="center" prop="staffName" label="姓名"></el-table-column><el-table-column align="center" prop="deptName" label="部门"></el-table-column><el-table-column align="center" prop="cardNo" label="卡号" :show-overflow-tooltip="true"></el-table-column><el-table-column align="center" prop="termNo" label="设备号"></el-table-column><el-table-column align="center" prop="datails" label="菜品"><template slot-scope="scope"><el-popover placement="top-start" trigger="click"><el-tag size="small" style="margin-right: 10px;" v-for="item in scope.row.details" :key="item.pid">{{ item.name }} X {{ item.qty }}份</el-tag><el-button type="text" slot="reference"> {{scope.row.details.length}}个菜品</el-button></el-popover></template></el-table-column><el-table-column align="center" prop="amt" label="消费金额"></el-table-column><el-table-column align="center" prop="balance" label="余额"></el-table-column><el-table-column align="center" prop="payTime" label="支付时间" :show-overflow-tooltip="true"></el-table-column></el-table></div>
</template><script>import API from '@/components/common/Api'export default {data() {return {//查询参数pn: 1,ps: 10,count: 0,data: [],form: {},cardNo: '',//搜索键值datails: '',}},mounted() {this.getList()},methods: {search() {this.getList();},//获取智盘支付记录列表getList() {let params = {cardNo: this.cardNo,}API.getPosPayLog(params).then(result => {if (result.data && result.data.code == 0) {this.data = result.data.data.list || [];//循环遍历菜品this.data.forEach(item => {item.details = JSON.parse(item.details)})this.count = result.data.data.total}});},},}
</script>
<style></style>

代码详解:

        代码中使用了 Element UI 的组件,包括 el-input(输入框)、el-button(按钮)、el-table(表格)、el-table-column(表格列)和 el-popover(气泡弹出框)等等。

       🍕 第一步: 在页面初始化时,通过 mounted 钩子函数调用 getList 方法获取支付记录列表,并将结果保存在 data 数组中。当点击搜索按钮时,会触发 search 方法,该方法再次调用 getList 方法进行搜索。

       🍕 第二步:getList 方法发送请求到后端接口,传递卡号作为参数。当接口返回数据后,将数据赋值给 data 数组,并使用 JSON.parse 将菜品详情从字符串解析为对象数组

       🍕 第三步:通过循环遍历 data 数组中的每一项,将菜品详情 item.details 解析为对象数组,以便在表格中展示。

      🔴 注意:具体的接口返回的数据类型可能会有所不同,可以根据实际需求进行调整。

类型:字符串json

<template><div><avue-crud ref="crud" v-model="form" :data="data" :option="option"><!-- 消费商品 --><template slot-scope="scope" slot="payOrder"><el-popover trigger="click" title="" v-if="scope.row.payOrder.length"><div><el-tag size="small" v-for="(item,index) in viewList" :key="index">{{ item.name }}X{{ item.num }}份</el-tag></div><el-button slot="reference" type="text" size="small" @click="getmenu(scope.row.payOrder)">{{ scope.row.payOrder.length }}个菜品</el-button></el-popover><div v-else>无</div></template></avue-crud></div>
</template><script>import API from '@/components/common/Api';export default {data() {return {/* data:[]后端获取到的数据列表。option表格配置项.form 表单*/data: [],form: {},query: {}, //搜索键值viewList: [],option: {size: 'mini', //表格大小 medium/small/miniborder: true,align: 'center',viewBtn: false, //查看详情按钮editBtn: false, //编辑修改按钮delBtn: false, //删除按钮addBtn: false,menu: false,column: [{label: '消费商品', //表头prop: 'payOrder', //键值slot: true,}]},}},mounted() {this.onLoad()},methods: {// 根据接口获取data数据onLoad() {let params = {data: this.query,}API.yktPosPayLogAll(params).then(res => {if (res.data.code == 0) {this.data = res.data.data.list;//循环遍历商品this.data.forEach(item => {item.payOrder = JSON.parse(item.payOrder);})}})},getmenu(arr) {this.viewList = arr;},}}
</script><style></style>
<template><avue-crud :option="option" :data="data" v-model="form" ref="crud"><template slot-scope="scope" slot="posFoodReserveDetail"><el-popover trigger="click" title="菜单"><div><el-tag size="small" v-for="item in viewList" :key="item.foodId">{{ item.foodName }}X{{ item.reserveNum }}份</el-tag></div><el-button slot="reference" type="text" size="small" @click="getmenu(scope.row.posFoodReserveDetail)">{{ scope.row.posFoodReserveDetail.length }}个菜品</el-button></el-popover></template></avue-crud>
</template><script>import API from '@/components/common/newApi';export default {data() {return {data: [],form: {},query: {},option: {border: true,column: [{label: '预定内容',prop: 'posFoodReserveDetail',slot: true,overHidden: true,}]},viewList: []};},mounted() {this.onLoad();},methods: {// 加载表格数据onLoad() {let param = {data: this.query};API.selectMyReserve(param).then(res => {if (res.data.code === 0) {this.data = res.data.data.list;}});},getmenu(arr) {this.viewList = arr;},}};
</script><style></style>

代码详解:

        在这个插槽中,我使用了 el-popover 组件来显示菜单信息,并通过点击按钮触发了 getmenu 方法。根据我这边的业务需求,我将在点击按钮时调用 getmenu 方法,并将传入的 scope.row.posFoodReserveDetail 赋值给 viewList。

类型:数组

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

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

相关文章

Python操作Excel实战:Excel行转列

# 1、原始数据准备 样例数据准备 地区1m2-5m6-10m11-20m21-40m地区单价计费单位费用最小值费用最大值北京13012011010090     天津13012011010090     石家庄13012011010090     保定140130120110100     张家口170150130120110     邢台1401201101…

我们如何在工作与生活中找到平衡点?

找到工作与生活中的平衡点是每个人都必须面对的问题。以下是一些建议&#xff0c;可以帮助你在工作和生活之间找到平衡&#xff1a; 制定时间表&#xff1a;确保你有足够的时间来处理工作和生活中的各种任务。为工作、学习和个人生活设定优先级&#xff0c;并确保时间分配合理…

玩转Mysql系列 - 第15篇:详解视图

这是Mysql系列第15篇。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 需求背景 电商公司领导说&#xff1a;给我统计一下&#xff1a;当月订单总金额、订单量、男女订单占比等信息&#xff0c;我们啪啦啪啦写了一堆很复杂的sql&#xff0c;然后发给领导。 …

ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案

ElasticSearch第三讲&#xff1a;ES详解 - Elastic Stack生态和场景方案 本文是ElasticSearch第三讲&#xff0c;在了解ElaticSearch之后&#xff0c;我们还要了解Elastic背后的生态 即我们常说的ELK&#xff1b;与此同时&#xff0c;还会给你展示ElasticSearch的案例场景&…

k8s配置ingress访问集群外部资源

使用ingress访问外部资源&#xff0c;首先需要创建service指向我们需要访问的资源 而每个service包含一个endpoint endpoint是k8s集群中的一个资源对象&#xff0c;存储在etcd中&#xff0c;用来记录一个service对应的所有pod的访问地址。service配置selector&#xff0c;endpo…

浅谈限流式保护器在高校防火工作的应用

安科瑞 华楠 【摘要】摘要&#xff1a;为了预防火灾和减少火灾带来的危害&#xff0c;保护校园和师生生命财产安全&#xff0c; 建和谐安宁的校园环境&#xff0c;保障学校安全稳定发展&#xff0c;我们必须要时刻拧紧消防安全这弦&#xff0c;时刻注意这根高压线。随着近年来…

el-select下拉框定位问题

1.当el-select所在页面滚动时或者el-select上面区域高度发生变化时&#xff0c;定位存在偏差 2.解决办法&#xff1a; 1. el-select自带属性popper-append-to-body&#xff1a;true&#xff0c;可能会无效 2.设置ref,监听高度变化或者滚动时&#xff0c;手动执行刷新方法&…

应用在汽车新风系统中消毒杀菌的UVC灯珠

在病毒、细菌的传播可以说是一个让人敏感而恐惧的事情。而对于车内较小的空间&#xff0c;乘坐人员流动性大&#xff0c;更容易残留细菌病毒。车内缺少通风&#xff0c;残留的污垢垃圾也会滋生细菌&#xff0c;加快细菌的繁殖。所以对于车内消毒就自然不容忽视。 那么问题又来…

php如何处理高并发请求

PHP 处理高并发请求的方法&#xff1a; 使用异步框架&#xff1a;通过使用异步处理方式&#xff0c;可以有效地降低 PHP 处理请求的响应时间&#xff0c;避免因为 IO 操作而导致的等待阻塞。常用的异步框架有ReactPHP和Swoole等。 使用缓存&#xff1a;使用缓存可以减少每个请求…

算法:贪心---跳一跳

1、题目&#xff1a; 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 2…

【SpringMvc 丨跨域】

Spring MVC 支持跨域处理&#xff08;CORS&#xff09;。 CORS 简介处理CORS 过滤器CrossOrigin注解java配置xml配置 主页传送门&#xff1a;&#x1f4c0; 传送 简介 跨域是指在浏览器的同源策略下&#xff0c;不能执行其他网站的脚本。它是由浏览器的安全限制造成的&#xf…

每天40min,我们一起用70天稳扎稳打学完《JavaEE初阶》——32/70 第三十二天【JavaScript】

JavaScript JavaScript初识 JavaScript前置知识第一个程序JavaScript 的书写形式语法概览变量的使用基本数据类型number类型string 字符串类型强类型 和 动态类型boolean 布尔类型undefined 类型运算符\==\=和\=\=|| 和 && 的返回值条件,循环语句数组

C语言文件读写

C 文件读写介绍 一个文件&#xff0c;无论它是文本文件还是二进制文件&#xff0c;都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数&#xff0c;也提供了底层&#xff08;OS&#xff09;调用来处理存储设备上的文件。本章将讲解文件管理的重要调用。 打开文件 您可…

Linux学习--MySQL学习之查询语句

所有实现基于mysql8.0.26实现&#xff0c;事例代码 1&#xff1a;常用函数 字符函数数学函数日期函数聚集函数数学计算if函数case函数 函数&#xff1a;MySQL服务内置命令 语法&#xff1a;函数名(表头名) select格式 SELECT 函数(表头名) FROM 库名.表名&#xff1b; SE…

2023-9-12 完全背包问题

题目链接&#xff1a;完全背包问题 初版(时间复杂度拉满) #include <iostream> #include <algorithm>using namespace std;const int N 1010;int n, m; int v[N], w[N]; int f[N][N];int main() {cin >> n >> m;for(int i 1; i < n; i ) cin >…

预防Dos攻击

Dos----拒绝服务攻击&#xff0c;一般是构造特殊的输入&#xff0c;使得后台的处理耗时远超正常水平&#xff0c;随着请求越来越多&#xff0c;后台服务越发疲于奔命&#xff0c;最后因资源耗尽&#xff0c;无法再接受新的请求&#xff0c;最终造成拒绝服务的效果。 特殊输入例…

欧洲汽车制造商押注电力合成燃料 | 2023中国可持续燃料峰会

欧洲几家汽车制造商表示&#xff0c;所谓的电力合成燃料(e-fuels&#xff0c;利用可再生电力合成的化石燃料&#xff0c;又称电子燃料)将在欧洲汽车行业的未来发挥关键作用&#xff0c;它们相信&#xff0c;布鲁塞尔方面在替代燃料问题上的让步&#xff0c;将使它们能够在未来1…

VoxWeekly|The Sandbox 生态周报|20230904

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布&#xff0c;对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容&#xff0c;欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter&#xff0c;并加入 Discord 社区&#xf…

Python - PyQt6、QDesigner、pyuic5-tool 安装使用

Python 开发可视化界面可以使用原生的 tkinter&#xff0c;但是原生框架使用起来颇为不方便&#xff0c;所以最流行的还是QT UI框架&#xff0c;QT是使用C语言开发&#xff0c;Python 想使用需要对其进行封装&#xff0c;所以就出现了PyQt框架&#xff0c;这个框架使用极其方便…

u盘制成系统盘之后如何让恢复普通盘

U盘装完pe后怎么还原成普通U盘 1.插入U盘&#xff0c;按WindowsR 输入diskpart 2.输入“list disk”回车&#xff0c;查看U盘代号&#xff0c;例如下图里我的U盘代号是磁盘1&#xff08;你的不一定是1&#xff0c;一定要分清楚&#xff09; 3.输入“select disk 2”选中U盘磁…