封装一个带el-form的,带el-table的,带分页的,带搜索查询的dialog组件,很使用的二次封装组件。

#封装dialog小案例

提示:这是我工作中封装的代码,很使用,需要的可以拿去,
在我们的代码中往往会出现点击按钮出现弹窗进行操作,那么我们就需要对dialog进行一个二次封装。
下边是大概的一个样式。
在这里插入图片描述

##对组件进行二次封装

<template><el-dialogtitle="客户账号查询":visible.sync="dialogVisible":append-to-body="true":close-on-click-modal="false"width="900px"@close="closeClick">//   :inline="true"  这个是是否行内模式    label-position="right" 提示的内容在右侧显示//   <div class="filter_assert_account_comp"><el-formv-if="this.dialogQuery && dialogQuery.length > 0"ref="ruleForm":inline="true"label-position="right"class="ruleForm"style="margin-bottom: 10px"><el-row><el-col v-for="item in this.dialogQuery" :key="item.label" :span="10"><el-form-item :label="item.label">//本身queryParams是一个对象,我们需要知道的是通过对象才能够去作为接口的传参<el-input v-model="queryParams[item.value]" clearable /></el-form-item></el-col><el-col :span="4"><el-form-item>//:loading="searchLoading"  是否加载中状态   type="primary"<el-button icon="el-icon-search" :loading="searchLoading" type="primary" @click="queryAcct">查询</el-button></el-form-item></el-col></el-row></el-form><tableListref="table":options="options":pagination="dialogPageInfo":header-data="dialogColumns":table-data="tableData":select-one="true"@requestList="dialogDoPage"@rowClick="getRowClick"@handleSelectionChange="handleSelectionChange"@handleRowSelect="handleRowSelect"/></div><div v-if="isMultiSelect" slot="footer" class="dialog-footer" style="padding-top: 0px;margin-top: -16px;"><el-button type="primary" @click="getMulRows()">确 定</el-button><el-button @click="closeClick()">取 消</el-button></div></el-dialog>
</template><script>
import TableList from '@/components/TableList'
import CommonApi from '@api/modules/smartTransactionList'export default {// name: "corpCustTabDialog",components: {TableList},props: {isRowClick: {type: Boolean,default: true},dialogVisible: {type: Boolean,default: false},showObj: {type: Object},position: {type: [String, Number]},isMultiSelect: {type: Boolean,default: false},// 表格配置项options: {type: Object,default: () => {return {multiSelect: false, // boolean 是否多选isindex: false, // boolean 是否展示序列号stripe: true, // boolean 斑马纹border: true, // boolean 纵向边框size: 'medium', // String  medium / small / mini  table尺寸fit: true, // 自动撑开pagination: true // 是否有分页}}},// 分页配置项dialogPageInfo: {type: Object,default: () => {return {page: 1,sizes: [10, 20, 30],size: 10,total: 0}}},// 表格数据dialogTableData: {type: Array,default: () => {return []}}},data() {return {searchLoading: false,corpCustTabDialog: this.dialogVisible,dialogQuery: [{ label: '客户账号: ', value: 'counterpartyAcctNo' },{ label: '客户名称: ', value: 'counterpartyName' }],queryParams: {acctState: '01'},api: CommonApi.selectRosterPageInfo,dialogColumns: [{prop: 'counterpartyAcctNo','label': '客户账号'}, {prop: 'counterpartyName','label': '客户名称'}, {prop: 'counterpartyAcctBankNo','label': '开户行行号'}, {prop: 'counterpartyAcctBankName','label': '开户行行名'}],tableData: this.dialogTableData,multipleSelections: [],selectItem: [],multipleList: []}},mounted() {if (this.dialogQuery && this.dialogQuery.length > 0) {this.dialogQuery.forEach(item => {this.$set(this.queryParams, item.value, '')})}this.dialogDoPage()},methods: {dialogDoPage() {this.searchLoading = trueconst param = { dto: { ...this.queryParams }, size: this.dialogPageInfo.size, page: this.dialogPageInfo.page }this.api(param).then(({ code, data }) => {console.log(0)if (code === 200) {console.log(1)if (Array.isArray(data)) {this.tableData = dataconsole.log(2)} else {this.tableData = data.recordsthis.dialogPageInfo.total = data.totalconsole.log(3)}this.setCheckedRows()}}).finally(() => {this.searchLoading = false})},queryAcct() {this.dialogPageInfo.page = 1this.dialogDoPage()},getRowClick(row) {if (this.isRowClick) {this.closeClick(row)}},// 多选getMulRows() {const list = []this.multipleList.forEach(item => {if (item.rows) {list.push(...item.rows)}})this.closeClick(list)},closeClick(row) {// position: 有多个的弹框需要展示的时候 用position 区分this.$emit('closeHandler', row, this.position)},handleSelectionChange(row) {this.multipleSelections = row},handleRowSelect(row) {let index, objectthis.multipleList.forEach((item, i) => {if (item.page === this.dialogPageInfo.page) {index = iobject = itemreturn}})if (object) {object.rows = [...row]this.multipleList[index].rows = [...new Set(object.rows)]} else {const params = { 'page': this.dialogPageInfo.page, 'rows': [...row] }this.multipleList.push(params)this.multipleList = [...new Set(this.multipleList)]}},setCheckedRows() {this.selectItem = []if (this.tableData.length === 0 || this.multipleList.length === 0) returnconst index = this.multipleList.find(item => {return item.page === this.dialogPageInfo.page})if (!index) returnthis.tableData.forEach(item => {index.rows.forEach(mItem => {if (item.pkId === mItem.pkId) {this.selectItem.push(item)}})})if (this.selectItem.length > 0) {this.$nextTick(() => {this.selectItem.forEach(item => {this.$refs.table.toggleRowSelection(item)})})}}}
}
</script><style scoped></style>

02父组件进行使用子组件

//父组件使用
<el-button slot="append" icon="el-icon-search" @click="endorseeAccClick" /><counterparty-dialog :dialog-visible="couRateVisible" :position="position" @closeHandler="closeHandler" />

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

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

相关文章

【雕爷学编程】Arduino动手做(156)---OTTO两足舵机机器人

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

虹科教程 | Linux网络命名空间与虹科PROFINET协议栈的GOAL中间件结合使用

前言 PROFINET是由PI推出的开放式工业以太网标准&#xff0c;它使用TCP/IP等IT标准&#xff0c;并由IEC 61158和IEC 61784 标准化&#xff0c;具有实时功能&#xff0c;并能够无缝集成到现场总线系统中。凭借其技术的开放性、灵活性和性能优势&#xff0c;PROFINET可应用于过程…

网络数据包的监听与分析——IP数据报文分析

1. 抓包工具下载 x下面是一个IP数据报的抓包软件——IPtool的蓝奏云下载链接 https://wwix.lanzoue.com/iaGpy11klpnc 2. iptool使用 下载解压之后&#xff0c;右击以管理员身份运行&#xff0c;打开该exe文件即可 然后点击绿色运行就开始捕包了 随便点一个包进去进行分析就可…

指针和数组笔试题解析

目录 数组笔试题 一维数组 字符数组 题 一 题 二 题 三 题 四 题 五 题 六 二维数组 指针笔试题 笔试题一 笔试题二 笔试题三 笔试题四 笔试题五 笔试题六 笔试题七 本篇博文&#xff0c;将从指针和数组来为大家分析一些笔试题&#xff0c;设计内…

【霹雳吧啦Wz】Transformer中Self-Attention以及Multi-Head Attention详解

文章目录 来源Transformer起源Self-Attention1. 求q、k、v2. 计算 a ^ ( s o f t m a x 那块 ) \hat{a} (softmax那块) a^(softmax那块)3. 乘V&#xff0c;计算结果 Multi-Head Attention位置编码 来源 b站视频 前天啥也不懂的时候点开来一看&#xff0c;各种模型和公式&#…

pycharm 打开终端,安装第三方程序

鼠标移动到左下角 弹出列表&#xff0c;选择终端&#xff0c;当然也可以用快捷键唤出&#xff0c; 可以输入命令进行第三方库的安装

EMQ X(3):客户端websocket消息收发

在EMQ X Broker提供的 Dashboard 中 TOOLS 导航下的 Websocket 页面提供了一个简易但有效的WebSocket 客户端工具&#xff0c;它包含了连接、订阅和发布功能&#xff0c;同时还能查看自己发送和接收的报文数据&#xff0c;我们期望 它可以帮助您快速地完成某些场景或功能的测试…

基于深度学习的高精度球场足球检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度球场足球检测识别系统可用于日常生活中或野外来检测与定位球场足球目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的球场足球目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

开启Windows共享文件夹审核,让用户查看谁删除了文件

在动画行业有个常用到的需求&#xff0c; 我的共享文件夹内的文件被谁删除了&#xff0c;查不到&#xff0c;只能查看谁创建&#xff0c;谁修改的&#xff0c;但查不到谁删除的&#xff0c;分享一下&#xff1a; 1 开始->运行->gpedit.msc 开发本地组策略编辑器, 在计算…

查找列表中最小的N个元素nsmallest()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 查找列表中最小的N个元素 nsmallest() 选择题 以下python代码输出正确的一项是? import heapq list[11,12,13,14,15] print("【显示】list ", list) print("【执行】heapq.nsm…

88、基于STM32单片机学习型搬运机器人四自由度机械臂机械手遥感控制设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

单片机主芯片选择方案 方案一&#xff1a;AT89C51是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元&a…

STM32速成笔记—Flash闪存

文章目录 一、Flash简介二、STM32F1的Flash三、Flash操作步骤四、程序设计4.1 读取数据4.2 写入数据&#xff08;不检查&#xff09;4.3 写入数据&#xff08;检查&#xff09; 五、注意事项 一、Flash简介 快闪存储器&#xff08;flash memory&#xff09;&#xff0c;是一种…