vue3封装表格嵌套表单问题汇总

1.插槽嵌套多层数据ui组件怎么使用
思路:插槽具名【区分】后暴露传递,这个为神魔要区分,因为封装组件表格列表项也有插槽
步骤一:表单插槽暴露

    <ElFormclass="form-search":model="formParams"ref="formRef":style="fixedStyle"><div:class="['form-serach-item-box']"v-for="(item, index) of (disposeFormItemList || []).slice(0,formItemNum)":key="index"v-show="!item.show":grid="fiexedNum"><!-- 搜索插槽 --><ElFormItemclass="form-item-input"v-if="item.type !== '%' && item.type == 'slot'"colon:label="item.label":prop="item.prop"><!-- 插槽自定义检索组件 --><slotv-if="item.slotName":name="item.slotName"v-bind="{field: item.prop,model: formParams,}"></slot></ElFormItem></div></ElForm>

步骤2:表格组件区分暴露插槽

  <div class="table-warpper_lat" :style="fixedTableHeight"><C_BasicFormSearchref="_formSearchRef"v-if="formItemList":id="_searchFormUuid":formParams="initFormParams!":formItemList="list"@e_dispatchGetDataFn="e_dispatchGetDataFn"@e_changeParms="emits('e_changeParams', $event)"@changeFlodSearch="calcTableClientHeight"@reset="emits('reset')":formSearchInputHistoryString="formSearchInputHistoryString":class="_isShowSearch ? 'show-search' : 'none-search'":formItemNum="formItemNum":fiexedNum="fiexedNum":isShowSearchMore="isShowSearchMore":cardBorder="cardBorder":useOutReset="useOutReset":drawerSize="drawerSize":searchFormJustify="searchFormJustify":searchFormLabelPosition="searchFormLabelPosition"><template#[replaceFormSlotKey(item)]="data"v-for="item in getFormSlotKeys"><slot :name="item" v-bind="data || {}"></slot></template></C_BasicFormSearch><ElCard:shadow="shadow":class="{ 'table-warpper': true, 'table-no-border': !cardBorder }":id="_tableUuid"><!-- TODO: 表格 --><ElTable:row-key="rowkey"v-bind="$attrs"ref="_tableRef":border="border":data="_tableData":tree-props="props.treeProps":class="props.className":header-cell-style="setHeaderStyle"v-loading="_isLoading"@selection-change="selectChange"@select="select"@select-all="selectAll"@cell-mouse-enter="cellMouseEnter"@cell-mouse-leave="cellMouseLeave"@cell-click="cellClick"@cell-dblclick="cellDblclick"@cell-contextmenu="cellContextmenu"@row-click="rowClick"@row-contextmenu="rowContextmenu"@row-dblclick="rowDblclick"@header-click="headerClick"@header-contextmenu="headerContextmenu"@sort-change="sortChange"@filter-change="filterChange"@current-change="currentChange"@header-dragend="headerDragend"@expand-change="expandChange"@clearSelection="() => (_selectedAllRows = [])"v-waterMarker="waterMarker"><el-table-columnfixed="left":width="25"type=""v-if="getIsDraggable()"><el-icon class="dragIcon" title="拖拽"><Rank /></el-icon></el-table-column><el-table-columnfixed="left"v-if="isSelect"v-bind="selectConfig"type="selection"align="center"/><el-table-columntype="index":width="indexWidth"fixed="left":index="props.indexFn"label="序号"v-if="showIndex"align="center"class-name="index"><template #header v-if="indexHeaderSlots"><component :is="indexHeaderSlots" /></template></el-table-column><template v-for="item of tableColumns" :key="item"><tableColumn :item="item" v-bind="omit(item, ['children'])"><template #[item]="scope" v-for="item in getTableColumnSlots"><slot:name="item":column="scope.column":row="scope.row":index="scope.$index"/></template></tableColumn></template><el-table-columnfixed="right"label="操作":width="actionWidth"align="center"v-if="$slots.action"><template #default="scope"><slotname="action":column="scope.column":row="scope.row":index="scope.$index"/></template></el-table-column></ElTable><div class="table-footer-wrapper"><div class="table-footer-left"><slot name="table-footer-tool" /></div><!-- TODO: 分页器 --><divv-if="isShowPage && total > 0"class="table-footer-right":style="{justifyContent: pageAlignJustifyContent,}"><ElPaginationv-model:currentPage="page"v-model:page-size="pageSize":page-sizes="pageSizes":small="'small'":disabled="false":background="true"layout="total, sizes, prev, pager, next, jumper":total="total"@size-change="handleSizeChange"@current-change="handleCurrentChange"/></div></div></ElCard></div>//表格搜索插槽-开始
function replaceFormSlotKey(key: string) {if (!key) return ''return key?.replace?.(/form\-/, '') ?? ''
}
const getFormSlotKeys = computed(() => {const that = getCurrentInstance()const keys = Object.keys(that!.slots)return keys.map((item) => (item.startsWith('form-') ? item : null)).filter((item) => !!item) as string[]
})
//表格搜索插槽-结束
// 列设置
const tableColumns = ref<I_TableColumns[]>(props.columns)
// 表格列中的插槽
const getTableColumnSlots = computed(() => {const that = getCurrentInstance()const slotsList: string[] = []Object.keys(that!.slots).forEach((item) => {if (!item.startsWith('form-')) {slotsList.push(item)}})return [...tableColumns.value.filter((item) => item.slot).map((item) => item.slot),'expandSlot', // 兼容列 type 为 'expand' 的列...slotsList,]
})

步骤3页面使用姿势

    <template #form-contractCode1="{ model, field }"><el-input type="number" v-model="model[field]" placeholder="请输入"><template #append>元</template></el-input></template>配置项// // 表格搜索插槽-步骤1

{
type: ‘slot’,
prop: ‘overhaulCode1’,
label: ‘单号1’,
placeholder: ‘请输入1’,
slotName: ‘contractCode1’,
},
成果展示
在这里插入图片描述

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

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

相关文章

java基于ssm+jsp 多人命题系统

1管理员功能模块 管理员登录&#xff0c;管理员通过输入用户、密码等信息进行系统登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员对个人中心进行操作填写原密码、新密码、确认密码并进行添加、删除、修改以及查看&#xff0c;如图2所示。 图2个人信息功能界面图 学…

台式电脑没有音响?你还可以用这 7 个软件把手机变成音响

台式电脑没有音响&#xff1f;你还可以用这 7 个软件把手机变成音响 怎么让手机当电脑音响 怎么让电脑连接手机的麦克风 手机怎么变电脑麦克风 1.AudioRelay 官网audiorelay加点net提供 Windows 和 Android 应用程序下载 再打开作为 Client 的 Android 端&#xff0c;它会自…

遥感数据并行运算(satellite remote sensing data parallell processing)

文章内容仅用于自己知识学习和分享&#xff0c;如有侵权&#xff0c;还请联系并删除 &#xff1a;&#xff09; 之前不太会用&#xff0c;单纯想记录一下&#xff0c;后面或许还会用到 1. 教程 [1] Pleasingly Parallel Programming: link 1.1 处理器&#xff0c;核和线程 …

申请免费6个月SSL证书方式和证书特点槽点

当前&#xff0c;HTTPS访问已成为网站标配。随着免费证书平台的不断涌现&#xff0c;Lets Encrypt尤为瞩目&#xff0c;其提供的泛域名和多域名证书申请功能&#xff0c;显著降低了站长和企业的经济负担。从一开始&#xff0c;来此加密就支持通过Lets Encrypt申请免费的域名SSL…

力扣:203. 移除链表元素(Java)

目录 题目描述&#xff1a;示例 1&#xff1a;示例 2&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入…

ONLYOFFICE 8.1版本桌面编辑器深度体验:创新功能与卓越性能的结合

ONLYOFFICE 8.1版本桌面编辑器深度体验&#xff1a;创新功能与卓越性能的结合 随着数字化办公的日益普及&#xff0c;一款高效、功能丰富的办公软件成为了职场人士的必备工具。ONLYOFFICE团队一直致力于为用户提供全面而先进的办公解决方案。最新推出的ONLYOFFICE 8.1版本桌面编…

Centos安装redis(附:图形化管理工具)

第一步&#xff1a;下载redis wget http://download.redis.io/releases/redis-6.2.7.tar.gz 第二步&#xff1a;解压 tar zxvf redis-6.2.7.tar.gz 第三步&#xff1a;安装依赖环境 yum -y install gcc-c第四步&#xff1a;安装依赖环境 make install第五步&#xff1a;修…

高频科技亮相SEMl-e2024第六届深圳国际半导体展,以超纯工艺推动行业发展

6月26-28日,SEMl-e2024第六届深圳国际半导体展在深圳国际会展中心(宝安新馆)隆重举办。本次展会以【“芯”中有“算”智享未来】为主题,汇聚800多家展商,集中展示了集成电路、电子元器件、第三代半导体及产业链材料和设备为一体的半导体产业链,搭建了供需精准对接、探索行业新发…

ElementUI笔记

Element&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。 首先安装 ElementUI。 需要再HTML的文档终端里输入 npm i element-ui -S 在 main.js 中写入以下内容&#xff1a; import ElementUI from element-ui ; import element-ui/lib…

超全汇总,性能测试常用指标大全

前言 两种性能指标 业务指标&#xff1b; 技术指标&#xff1b; 通常我们会从两个层面定义性能场景的需求指标&#xff0c;它们有映射关系&#xff0c;技术指标不能脱离业务指标 1、并发 狭义&#xff1a; 指同一个时间点执行相同的操作&#xff08;如&#xff1a;秒杀&am…

【ElementPlus源码】Container 布局容器

文章目录 index.tsContainerheaderutilswithInstallwithNoopInstall hooksuseNamespace 单元测试 看源码时候做的笔记。如有错误请指出&#xff01; 关于路径的省略&#xff0c;详见button&#xff1a;【ElementPlus源码】Button按钮-CSDN博客 index.ts 导入一堆组件&#xff…

003-GeoGebra如何无缝嵌入到PPT里

GeoGebra无缝嵌入到PPT里真是一个头疼的问题&#xff0c;已成功解决&#xff0c;这里记录一下&#xff0c;希望可以帮助到更多人。 注意&#xff0c;后续所有的文章说的PPT都是Offce Power Point, 不要拿着WPS的bug来问我哦&#xff0c;我已经戒WPS了&#xff08;此处表示无奈&…

Vue组件化、单文件组件以及使用vue-cli(脚手架)

文章目录 1.Vue组件化1.1 什么是组件1.2 组件的使用1.3 组件的名字1.4 嵌套组件 2.单文件组件2.1 vue 组件组成结构2.1.1 template -> 组件的模板结构2.1.2 组件的 script 节点2.1.3 组件的 style 节点 2.2 Vue组件的使用步骤2.2.1 组件之间的父子关系2.2.2 使用组件的三个步…

直播电商APP源码

你有没有想过&#xff0c;如何通过手机就能够触手可及地购买到你想要的商品呢?直播电商APP源码&#xff0c;为你带来了全新的购物体验。它不仅为用户提供了便捷快速的购物平台&#xff0c;还为商家提供了一个高效的销售渠道。 武汉迅狐科技有限公司研发的直播电商APP源码&…

Python | Leetcode Python题解之第190题颠倒二进制位

题目&#xff1a; 题解&#xff1a; class Solution:# param n, an integer# return an integerdef reverseBits(self, n):n (n >> 16) | (n << 16);n ((n & 0xff00ff00) >> 8) | ((n & 0x00ff00ff) << 8);n ((n & 0xf0f0f0f0) >&g…

virtualbox安装win10

等到安装完成 设备下选择安装增强功能

AUTOSAR NvM模块(一)

NvMBlockDescriptor [ECUC_NVM_00061] 用于存储所有特定于块的配置参数的容器。对于每个非易失性随机存取存储器&#xff08;NVRAM&#xff09;块&#xff0c;应该指定这个容器的一个实例。 NvMBlockCrcType 定义了NVRAM块的CRC数据宽度。根据Autosar标准&#xff0c;此参数…

Web渗透-逻辑漏洞

一、概述 逻辑漏洞是指由于程序逻辑不严或逻辑太复杂&#xff0c;导致一些逻辑分支不能够正常处理或处理错误&#xff0c;一般出现任意密码修改&#xff08;没有旧密码验证&#xff09;,越权访问&#xff0c;密码找回&#xff0c;交易支付金额等。对常见的漏洞进行过统计&…

2毛钱不到的2A同步降压DCDC电压6V频率1.5MHz电感2.2uH封装SOT23-5芯片MT3520B

前言 2A&#xff0c;2.3V-6V输入&#xff0c;1.5MHz 同步降压转换器&#xff0c;批量价格约0.18元 MT3520B 封装SOT23-5 丝印AS20B5 特征 高效率&#xff1a;高达 96% 1.5MHz恒定频率操作 2A 输出电流 无需肖特基二极管 2.3V至6V输入电压范围 输出电压低至 0.6V PFM 模式可在…

TS_开发一个项目

目录 一、编译一个TS文件 1.安装TypeScript 2.创建TS文件 3.编译文件 4.用Webpack打包TS ①下载依赖 ②创建文件 ③启动项目 TypeScript是微软开发的一个开源的编程语言&#xff0c;通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或…