vue表单筛选

目录

筛选

HTML

scss*

filterComp

排序

表格

自定义数据样式

inner-table

分页

删除

default-modal

自定义元素的插槽-占位符


.search-wrap {height: 60px;display: flex;align-items: center;overflow: hidden;padding: 0 20px;.selected-options-wrap {flex: 1;.clear-btn {display: inline-block;text-align: center;color: #dd2100;margin-left: 12px;padding: 0 6px;border-radius: 4px;background-color: rgba(221, 33, 0, .1);cursor: pointer;}}.mds-tag {padding-right: 0;margin-left: 8px;border-radius: 4px;border: 1px solid #d9ecff;cursor:default;.mds-btn {height: auto;}}.mds-input-search {width: 240px;::v-deep .mds-input {border-radius: 4px;}}.filter-btn {margin-left: 12px;position: relative;.mds-btn {padding: 0;width: 32px;height: 32px;}.filter-count {width: 18px;height: 18px;line-height: 18px;text-align: center;position: absolute;top: -9px;right: -9px;color: #fff;background-color: #0364ff;border-radius: 50%;}.filter-icon {width: 28px;height: 28px;object-fit: cover;position: relative;top: 1px;}.filter-num {position: absolute;top: -10px;right: -2px;width: 16px;height: 16px;border-radius: 50%;background-color: #1564ff;color: #fff;font-size: 12px;line-height: 16px;}}
}

filterComp

<template><mds-drawertitle="条件筛选":visibility="visibility"size="720px"@close="cancelFilterDrawer"><mds-form label-width="100px" :model="filterList" label-position="right"><mds-form-item label="发布状态"><mds-select placeholder="发布状态" style="width: 100%" clearable v-model="filterList.releStat"><mds-option label="未发布" value="0" /><mds-option label="已发布" value="1" /></mds-select></mds-form-item>
...<mds-form-item label="更新时间"><mds-date-pickerv-model="timeArr"type="daterange"range-separator="至"start-placeholder="开始日期"end-placeholder="结束日期"format="yyyy-MM-dd"value-format="yyyy-MM-dd"@change="changeTime"></mds-date-picker></mds-form-item></mds-form><template slot="footer"><mds-button @click="cancelFilterDrawer">取消</mds-button><mds-button type="primary" @click="saveFilter">确认</mds-button></template></mds-drawer>
</template><script lang="ts">
import { Component, Vue, Prop } from 'vue-property-decorator'@Component({components: {}
})
export default class FilterComp extends Vue {@Prop({ required: true }) private visibility!: booleantimeArr = []filterList: any = {moduTyp: '', // 模块releStat: "", //发布状态updateStartDate: '',updateEndDate: ''}// 修改时间changeTime(val: any) {this.filterList.updateStartDate = val ? val[0] : ''this.filterList.updateEndDate = val ? val[1] : ''}// 清除选项clearOptions(option: string) {if (option === 'all') {this.filterList = {}this.timeArr = []} else if (option === 'time') {this.filterList.updateStartDate = ''this.filterList.updateEndDate = ''this.timeArr = []} else {this.filterList[option] = ''}this.saveFilter()}// 取消筛选cancelFilterDrawer() {this.$emit('update:visibility', false)}// 保存筛选saveFilter() {const data = {...this.filterList}this.$emit('changeFilter', data)this.cancelFilterDrawer()}
}
</script>

<mds-option label="未发布" value="0" />  string

<mds-option label="未发布" :value="0" /> number

排序

<el-table :data="tableData" header-row-class-name="table-header" @sort-change="sortChange">
....
</el-table>
 confirmpageQuery() {this.loading = trueconst params = {pageNum: this.pageInfo.currentPage,pageSize: this.pageInfo.pageSize,moduTyp: '',releStat: "",fuzzySearch: this.searchVal,updateStartDate: "",// updateEndDate: "",updateEndDate: "",...this.filterData,...this.sortProps}confirmpageQuery(params).then((res: any) => {if (res && res.code == 200) {this.pageInfo.total = res.data.totalElementsthis.tableData = res.data.data || []this.permissionMap = res.data.permissionMap || {}}}).catch((e: any) => {this.$message.error(e && e.msg)}).finally(() => {this.loading = false})}class YourClass {// 定义 sortProps 对象,用于存储排序属性的状态sortProps: any = {versionNumSort: '',releStatSort: '',updateDateSort: ''}// sortChange 方法用于处理排序变化sortChange(arguments: any) {const { column, prop, order } = arguments// 定义 orderVal 对象,用于存储排序方式的值(升序和降序)const orderVal: any = {ascending: 1,descending: 0}// 定义 propName 对象,用于映射排序属性和 sortProps 对象的属性名const propName: any = {versionNum: 'versionNumSort',releStat: 'releStatSort',updTm: 'updateDateSort'}// 将 sortProps 对象中所有属性的值初始化为空,以便重新设置排序状态for (let key in this.sortProps) {this.sortProps[key] = ''}// 根据传入的排序属性和排序方式,更新 sortProps 对象中对应的属性值this.sortProps[propName[prop]] = orderVal[order]// 调用 confirmpageQuery 方法,可能是用于触发其他逻辑或执行查询等操作this.confirmpageQuery()}// 定义 confirmpageQuery 方法,可能是其他逻辑处理的入口confirmpageQuery() {// 在这里执行其他逻辑或查询操作// ...}
}

表格

      <el-table :data="tableData" header-row-class-name="table-header" @sort-change="sortChange"><!-- 展开 --><el-table-column width="30" type="expand" class-name="expend-row"><!-- 自定义样式slot-scope="scope" {{ scope_sub.row.confmVersion }} --><template slot-scope="scope"><el-table :data="scope.row.confmReleVOS" style="width: 100%;margin: 0;" class="inner-table"><!-- 缩进 --><el-table-column width="30"></el-table-column><el-table-column prop="confmVersion" label="版本号" width="120"><template slot-scope="scope_sub"><div>{{ scope_sub.row.confmVersion }}<span v-if="scope_sub.row.isCurrentVersion" class="version-current">当前版本</span></div></template></el-table-column><el-table-column prop="name" label="生效区间" width="220"><template slot-scope="scope_sub">{{ scope_sub.row.effectiveDateRange }}</template></el-table-column><el-table-column prop="releName" label="发布名称" /><!-- show-overflow-tooltip在用户将鼠标悬停在容器上时显示一个工具提示,以显示溢出的内容 --><el-table-column prop="releDesc" label="发布说明" show-overflow-tooltip /><el-table-column label="操作" width="150"><template slot-scope="scope_sub"><!-- <span v-if="permissionMap.hasWorkbenchPageReleaseViewPer" class="table-operate" @click="toDetail(scope.row, scope_sub.row)">查看</span> --><span class="table-operate" @click="toDetail(scope.row, scope_sub.row)">查看</span></template></el-table-column></el-table></template></el-table-column><el-table-column prop="confmNm" label="数据确认版本名称" min-width="120" show-overflow-tooltip /><el-table-column prop="moduTyp" label="模块" width="170" /><el-table-column prop="releStat" label="当前状态" sortable="custom" width="120"><template slot-scope="scope"><div :class="{ 'status-published': scope.row.releStat === 1, 'status-unpublished': scope.row.releStat === 0 }">{{ scope.row.releStatNm }}</div><!-- <div class="status-published" v-if="scope.row.releStat === 1">{{ scope.row.releStatNm }}</div><div class="status-unpublished" v-if="scope.row.releStat === 0">{{ scope.row.releStatNm }}</div> --></template></el-table-column><el-table-column prop="versionNum" label="版本数" sortable="custom" width="90" /><el-table-column prop="creator" label="创建人" width="120" /><el-table-column prop="updTm" label="更新时间" width="180" sortable="custom" /><!-- <el-table-column label="操作" width="220"><template slot-scope="scope"><span v-if="permissionMap.hasWorkbenchPageConfigEditPer" class="table-operate" @click="toEdit(scope.row)">编辑</span><span v-if="permissionMap.hasWorkbenchPageConfigReleasePer" class="table-operate" @click="handlePublish(scope.row)">{{ scope.row.releStat === 0 ? '发布' : scope.row.releStat === 1 ? '再次发布' : '' }}</span><span v-if="permissionMap.hasWorkbenchPageConfigDeletePer" class="table-operate" @click="handleDelete(scope.row)">删除</span></template></el-table-column> --><el-table-column label="操作" width="220"><template slot-scope="scope"><span class="table-operate" @click="toEdit(scope.row)">编辑</span><span class="table-operate" @click="handlePublish(scope.row)">{{ scope.row.releStat === 0 ? '发布' : scope.row.releStat === 1 ? '再次发布' : '' }}</span><span class="table-operate" @click="handleDelete(scope.row)">删除</span></template></el-table-column></el-table>

自定义数据样式

        <el-table-column prop="releStat" label="当前状态" sortable="custom" width="120"><template slot-scope="scope"><div :class="{ 'status-published': scope.row.releStat === 1, 'status-unpublished': scope.row.releStat === 0 }">{{ scope.row.releStatNm }}</div></el-table-column>

inner-table

分页

删除

loading

 

 添加slot=footer覆盖原有样式

 

default-modal

<template><mds-modalclass="confirm-delete-modal":class="{ 'confirm-delete-modal-warning': type === 'warning' }":visibility="visibility":title="title":width="width":show-close="false"><div v-if="content" class="content">{{ content }}</div><slot></slot><span slot="footer" class="mds-dialog-footer"><mds-button @click="footActionClick('cancel')">{{ cancelText }}</mds-button><mds-buttontype="primary":loading="loading"@click="footActionClick('confirm')"><mds-icon v-if="loading" type="line-sync" class="mds-btn-right" spin />{{ confirmText }}</mds-button></span></mds-modal>
</template><script lang="ts">
import { Component, Prop, Vue, Watch } from 'vue-property-decorator'@Component({components: {}
})
export default class defaultModal extends Vue {@Prop({ required: true }) private visibility!: boolean// ! 表示非空断言,告诉 TypeScript 该属性不会为 null 或 undefined@Prop({ required: true }) private title!: string// ?: string 表示 content 是一个可选的属@Prop() private content?: string@Prop({ default: '420px' }) private width!: string@Prop({ default: false }) private showClose!: boolean@Prop({ default: '确定' }) private confirmText!: string@Prop({ default: '取消' }) private cancelText!: string@Prop({ default: 'normal' }) private type!: string@Prop({default: () => {return (cb: any) => {cb && cb()}}})private confirmCb!: any@Prop({default: () => {return (cb: any) => {cb && cb()}}})private cancelCb!: anyprivate loading = falseprivate loadingIns = {start: this.changeLoading.call(this, true),end: this.changeLoading.call(this, false)}private changeLoading(bool = false): any {return () => {this.loading = bool}}private footActionClick(type = 'cancel'): void {if (this.loading) returnconst cb = () => {this.$emit('update:visibility', false)}if (type === 'cancel') {this.cancelCb(cb, this.loadingIns)}if (type === 'confirm') {this.confirmCb(cb, this.loadingIns)}}private handleClose(done: any): void {if (this.loading) returnthis.$emit('update:visibility', false)}
}
</script><style lang="scss" scoped>
// ::v-deep .mds-modal-mask, .mds-modal-wrap {
//   z-index: 2000;
// }
.confirm-delete-modal {::v-deep {.mds-modal-title {display: flex;align-content: center;// &::before {//   content: '\EBD2';//   color: #3370ff;//   display: inline-block;//   font-family: 'mdsicon';//   font-size: 22px;//   margin-right: 16px;// }}.mds-modal-bottom {border: none;}}.content {padding-left: 38px;}
}.confirm-delete-modal-warning {// ::v-deep .mds-modal-title {//   &::before {//     content: '\EBC9';//     color: #f80;//   }// }.mds-dialog-footer {margin-top: 16px;font-size: 14px;text-align: right;// .mds-btn {//   font-size: 12px;//   height: 28px;//   line-height: 20px;//   min-width: 48px;//   padding: 3px 7px;//   color: #383c41;//   &:hover {//     background-color: #eee;//     border-color: #d9d9d9;//   }//   &:last-child {//     color: #f54a45;//     border-color: #f54a45;//     &:hover {//       background-color: rgb(255, 233, 233);//     }//   }// }.mds-btn-loading {background-color: transparent;}}
}::v-deep .mds-modal-body {min-height: 0;
}
</style>

自定义元素的插槽-占位符

<!-- 自定义元素定义 -->
<custom-element><h1><slot></slot></h1><p>This is some default content.</p>
</custom-element><!-- 使用自定义元素 -->
<custom-element>Hello, I am inserted into the slot!
</custom-element>

 

<!-- 删除二次确认弹窗 --><default-modal :visibility.sync="defaultModalInfo.visibility" :type="defaultModalInfo.type":title="defaultModalInfo.title" :content="defaultModalInfo.content" :confirm-text="defaultModalInfo.confirmText":cancel-text="defaultModalInfo.cancelText" :confirm-cb="defaultModalInfo.confirmCb"><div><mds-icon type="fill-solid-exclamation-circle" style="color:#e6a23c;font-size:18px" />确定要删除数据吗?</div></default-modal>
// 删除
handleDelete(row: any) {// 创建一个对象来设置模态框的信息this.defaultModalInfo = {visibility: true,     // 设置模态框可见性为true,即显示模态框type: 'warning',      // 设置模态框类型为警告,可以根据需要修改为其他类型title: '提示',        // 设置模态框标题为'提示'content: '',          // 设置模态框内容为空,可以根据需要填充具体的提示信息confirmText: '确定',  // 设置确认按钮文本为'确定'cancelText: '取消',   // 设置取消按钮文本为'取消'// @ts-ignore: 不可达代码错误(这里是为了忽略可能出现的编译错误,因为后面的 confirmCb 函数在当前环境下可能无法触发)confirmCb: (...args: any) => this.confirmDelete(row.id, ...args) // 设置确认按钮点击后的回调函数,传入当前行的id以及可能的其他参数};
}// 确认删除
private async confirmDelete(id: number, cb: any, loadingIns: any) {// 如果loadingIns存在并且具有start方法,则调用它,用于开始加载状态loadingIns && loadingIns.start && loadingIns.start();// 调用服务器端接口执行删除操作,传入id参数const res: any = await confirmpageDelete(id);// 如果loadingIns存在并且具有end方法,则调用它,用于结束加载状态loadingIns && loadingIns.end && loadingIns.end();// 如果服务器返回结果为空或者code不等于200,则删除失败,不做任何操作if (!res || res.code != 200) {// 可以根据需要,使用某种方式显示删除失败的提示信息,这里是注释掉的代码// this.$message.error(res && res.msg)return;}// 如果传入了回调函数cb,则执行回调函数cb && cb();// 使用消息框提示删除成功this.$message.success('删除成功');// 调用刷新列表的方法,以更新数据this.confirmpageQuery();
}

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

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

相关文章

centos7安装mysql数据库详细教程及常见问题解决

mysql数据库详细安装步骤 1.在root身份下输入执行命令&#xff1a; yum -y update 2.检查是否已经安装MySQL&#xff0c;输入以下命令并执行&#xff1a; mysql -v 如出现-bash: mysql: command not found 则说明没有安装mysql 也可以输入rpm -qa | grep -i mysql 查看是否已…

如何监控系统的运行的状况

问题提出&#xff1a; 系统状态不稳定&#xff0c;需要排查原因&#xff0c;所以需要监视所有进程的资源&#xff0c;以及进程是那个程序&#xff08;有些进程名写的一样&#xff0c;需要根据PID查看是哪个执行文件&#xff09; 方法&#xff1a; 1. 使用subprocess函数&…

java基础复习(第二日)

java基础复习(二) 1.抽象的&#xff08;abstract&#xff09;方法是否可同时是静态的&#xff08;static&#xff09;&#xff0c;是否可同时是本地方法&#xff08;native&#xff09;&#xff0c;是否可同时被 synchronized修饰&#xff1f; 都不能。 抽象方法需要子类重写…

YOLOv8目标检测代码如何实现训练、测试、调用摄像头实时检测和追踪的接口调用脚本

实现训练、测试、调用摄像头实时检测和追踪的接口调用脚本 目录 介绍训练模型图片测试视频流测试目标跟踪结论 介绍 YOLOv8是单阶段目标检测的集大成之作&#xff0c;它可以帮助我们在图像或视频中自动识别和定位感兴趣的目标物体。本文将介绍如何调用YOLOv8的API实现训练、…

mysql的json处理

写在前面 需要注意&#xff0c;5.7以上版本才支持&#xff0c;但如果是生产环境需要使用的话&#xff0c;尽量使用8.0版本&#xff0c;因为8.0版本对json处理做了比较大的性能优化。你你可以使用select version();来查看版本信息。 本文看下MySQL的json处理。在正式开始让我们先…

第三篇-Tesla P40+CentOS7+CUDA 11.7 部署实践

硬件环境 系统&#xff1a;CentOS-7 CPU: 14C28T 显卡&#xff1a;Tesla P40 24G 准备安装 驱动: 515 CUDA: 11.7 cuDNN: 8.9.2.26 安装依赖 yum clean all yum update yum install -y gcc gcc-c pciutils kernel-devel-$(uname -r) kernel-headers-$(uname -r)查看GPU信息…

元类的认识和基础用法

元类 “元类就是深度的魔法&#xff0c;99%的⽤户应该根本不必为此操⼼。 如果你想搞清楚 究竟是否需要⽤到元类&#xff0c;那么你就不需要它。 那些实际⽤到元类的⼈都⾮常 清楚地知道他们需要做什么&#xff0c;⽽且根本不需要解释为什么要⽤元类。“——蒂姆彼得斯TimPeter…

PostgreSQL数据库中,查询时提示表不存在的解决办法

最近遇到一个奇怪的问题&#xff0c;以前从来没有遇到过&#xff0c;在postgres SCHEMA下执行select * from table1语句时&#xff0c;提示表不存在&#xff0c;而实际这个表确是存在的&#xff0c;只不过是在public SCHEMA下。在public SCHEMA下执行这个sql语句是没有问题的。…

【Linux下6818开发板(ARM)】在液晶屏上显示RGB颜色和BMP图片

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

C++ 类和对象

面向过程/面向对象 C语言是面向过程&#xff0c;关注过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题 C是基于面对对象的&#xff0c;关注的是对象——将一件事拆分成不同的对象&#xff0c;依靠对象之间的交互完成 引入 C语言中结构体只能定义…

flask处理表单数据

flask处理表单数据 处理表单数据在任何 web 应用开发中都是一个常见的需求。在 Flask 中&#xff0c;你可以使用 request 对象来获取通过 HTTP 请求发送的数据。对于 POST 请求&#xff0c;可以通过 request.form 访问表单数据。例如&#xff1a; from flask import Flask, r…

IDEA中连接虚拟机 管理Docker

IDEA中连接虚拟机 管理Docker &#x1f4d4; 千寻简笔记介绍 千寻简笔记已开源&#xff0c;Gitee与GitHub搜索chihiro-notes&#xff0c;包含笔记源文件.md&#xff0c;以及PDF版本方便阅读&#xff0c;且是用了精美主题&#xff0c;阅读体验更佳&#xff0c;如果文章对你有帮…

【点云处理教程】00计算机视觉的Open3D简介

一、说明 Open3D 是一个开源库&#xff0c;使开发人员能够处理 3D 数据。它提供了一组用于 3D 数据处理、可视化和机器学习任务的工具。该库支持各种数据格式&#xff0c;例如 .ply、.obj、.stl 和 .xyz&#xff0c;并允许用户创建自定义数据结构并在程序中访问它们。 Open3D 广…

KafKa脚本操作

所有操作位于/usr/local/kafka_2.12-3.5.1/bin。 rootubuntu2203:/usr/local/kafka_2.12-3.5.1/bin# pwd /usr/local/kafka_2.12-3.5.1/bin rootubuntu2203:/usr/local/kafka_2.12-3.5.1/bin# ls connect-distributed.sh kafka-delegation-tokens.sh kafka-mirror-mak…

15. Spring AOP 的实现原理 代理模式

目录 1. 代理模式 2. 静态代理 3. 动态代理 3.1 JDK 动态代理 3.2 CGLIB 动态代理 4. JDK 动态代理和 CGLIB 动态代理对比 5. Spring代理选择 6. Spring AOP 实现原理 6.1 织入 7. JDK 动态代理实现 8. CGLIB 动态代理实现 9. 总结 1. 代理模式 代理模式&#xf…

Mac查看系统状态

syatem profiler mac系统中提供了system profiler来查看系统的详细信息&#xff0c;包括硬件、网络以及安装的软件 Console 显示了系统上的日志文件信息&#xff0c;有助于诊断问题 Activity Monitor 可以提供正在运行的系统的相关信息 https://zhhll.icu/2021/Mac/查看系统…

【云原生】一文学会Docker存储所有特性

目录 1.Volumes 1.Volumes使用场景 2.持久将资源存放 3. 只读挂载 2.Bind mount Bind mounts使用场景 3.tmpfs mounts使用场景 4.Bind mounts和Volumes行为上的差异 5.docker file将存储内置到镜像中 6.volumes管理 1.查看存储卷 2.删除存储卷 3.查看存储卷的详细信息…

Java课题笔记~Maven基础

2、Maven 基础 2.1 Maven安装与配置 下载安装 配置&#xff1a;修改安装目录/conf/settings.xml 本地仓库&#xff1a;存放的是下载的jar包 中央仓库&#xff1a;要从哪个网站去下载jar包 - 阿里云的仓库 2.2 创建Maven项目

丁鹿学堂:前端学习进阶指南之react入门(react在html中使用数据绑定和修改)

在html中使用react 今天跟大家分享react的基础语法。 我们采用最简单的方法&#xff0c;就是在html中引入react 因为一上来就使用脚手架的话&#xff0c;很多配置大家不一定清楚。 而在html中使用react的话&#xff0c;可以直接去学习react最基本的语法。 这是零基础学习r…

MySQL数据库 【索引事务】

目录 一、概念 二、索引的优缺点 1、索引的优点 2、索引的缺陷 三、索引的使用 1、查看索引 2、创建索引 3、删除索引 四、索引底层的数据结构 1、B树 2、B树 五、索引事务 1、概念和回滚 2、事务的使用 3、事务的基本特性 4、并发会遇到的问题 &#xff08…