Vue页面,基础配置
最简单页面
- 日期范围及字符搜索,监听器处理日期范围搜索控件清空重置问题
- 导出、导出文件文件名称带日期时间
- 表格日期指定格式显示
- 。。。
<template><div class="app-container"><el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"><el-form-item label="申请日期"><el-date-pickerv-model="queryParams.queryDate"style="width: 240px"value-format="yyyy-MM-dd"type="daterange"range-separator="-"start-placeholder="开始日期"end-placeholder="结束日期"></el-date-picker></el-form-item><el-form-item label="姓名" prop="name"><el-inputv-model="queryParams.name"placeholder="请输入..."clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item><el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button><el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button></el-form-item></el-form><el-row :gutter="10" class="mb8"><el-col :span="1.5"><el-buttontype="warning"plainicon="el-icon-download"size="mini"@click="handleExport"v-hasPermi="['Leslie:Lee:export']">导出</el-button></el-col><right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar></el-row><el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange" border :max-height="tableMaxHeight"><el-table-column type="selection" width="55" align="center"/><el-table-column label="ID" align="center" prop="id" width="100" :show-overflow-tooltip='true' v-if="false"/><el-table-column label="姓名" align="center" prop="name" width="200" :show-overflow-tooltip="true"/><el-table-column label="申请日期" align="center" prop="applicationDate" width="100"><template slot-scope="scope"><span>{{ parseTime(scope.row.applicationDate, '{y}-{m}-{d}') }}</span></template></el-table-column></el-table><paginationv-show="total>0":total="total":page.sync="queryParams.pageNum":limit.sync="queryParams.pageSize"@pagination="getList"/></div>
</template><script>
import {queryDataList} from "@/api/leslie/lee.js";export default {name: "Leslie Lee",data() {return {// 遮罩层loading: true,// 选中数组ids: [],// 非单个禁用single: true,// 非多个禁用multiple: true,// 显示搜索条件showSearch: true,// 总条数total: 0,// 弹出层标题title: "",// 是否显示弹出层open: false,// 表单参数form: {},// 表单校验rules: {},// 数据集合dataList: [],// 查询参数queryParams: {// 页码、页显示量pageNum: 1,pageSize: 10,// 日期查询控件值集合queryDate: null,// 日期范围查询开始、结束startDate: null,endDate: null,// 其他查询参数id: null,name: null,applicationDate: null,},/** queryParams 范围 */};/** return 范围 */},/** data 范围 */created() {this.getList();},/** created 范围 */computed: {/** 页面适应 */tableMaxHeight() {const screenHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;return screenHeight - 230;}},/** computed 范围 */methods: {/** 数据查询 */getList() {this.loading = true;this.queryParams.params = {};if (this.queryParams.queryDate != null && this.queryParams.queryDate !== '') {this.queryParams.startDate = this.queryParams.queryDate[0];this.queryParams.endDate = this.queryParams.queryDate[1];}queryDataList(this.queryParams).then(response => {this.dataList = response.rows;this.total = response.total;this.loading = false;});},// 取消按钮cancel() {this.open = false;this.reset();},// 表单重置reset() {this.form = {};this.resetForm("form");},/** 搜索按钮操作 */handleQuery() {this.queryParams.pageNum = 1;this.getList();},/** 重置按钮操作 */resetQuery() {this.queryParams.queryDate = null;this.queryParams.startDate = null;this.queryParams.endDate = null;this.resetForm("queryForm");this.handleQuery();},// 多选框选中数据handleSelectionChange(selection) {this.ids = selection.map(item => item.oddNumbers)this.single = selection.length !== 1this.multiple = !selection.length},/** 导出按钮操作 */handleExport() {var date = new Date()var year = date.getFullYear().toString()var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString()var day = date.getDate() < 10 ? '0' + date.getDate().toString() : date.getDate().toString()var h = date.getHours() < 10 ? '0' + date.getHours().toString() : date.getHours().toString()var m = date.getMinutes() < 10 ? '0' + date.getMinutes().toString() : date.getMinutes().toString()var s = date.getSeconds() < 10 ? '0' + date.getSeconds().toString() : date.getSeconds().toString()var dateTime = year + '-' + month + '-' + day + "_" + h + m + sthis.download('Leslie/Lee/export', {...this.queryParams}, `导出_${dateTime}.xlsx`)}},/** methods 范围 */watch: {// 监听日期清理后数据为null进行处理否则会报错'queryParams.queryDate'(newVal) {if (newVal == null) {this.queryParams.queryDate = ''this.queryParams.startDate = ''this.queryParams.endDate = ''}}},/** watch 范围 */};
</script>
表头居中
el-table 中加入 :header-cell-style="headerCellStyle"
设置表头居中,使 align 属性生效不冲突表头格式
函数写在 methods 中
headerCellStyle({column, rowIndex, columnIndex, cellStyle}) {return {textAlign: 'center'};},
表格合计行
el-table 中加入:show-summary :summary-method="getSummaries"
表格最下方出现合计行,但不会随导出出现在导出文件中
可设置 显示千分位
函数写在 methods 中
getSummaries(param) {const {columns, data} = param;const sums = [];columns.forEach((column, index) => {if (index === 0) {sums[index] = '合计';return;}const values = data.map(item => Number(item[column.property]));if (!values.every(value => isNaN(value))) {sums[index] = values.reduce((prev, curr) => {const value = Number(curr);if (!isNaN(value)) {return prev + curr;// 保留两位小数//return Math.round((prev + value) * 100) / 100;} else {return prev;}}, 0);sums[index] += '';//显示千分位//sums[index] = sums[index].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");} else {sums[index] = '';}});return sums;},
合并行
设置哪几列符合什么条件后,值相等的行合并
仅写函数,不需要其他配置
函数写在 methods 中
handleSpanMethod({row, // 行column, // 列rowIndex, // 行索引columnIndex, // 列索引}) {if (columnIndex === 1 || columnIndex === 2) {/**表格数据:this.dataList判断合并行数:this.mergeColumn()*/const _row = (this.mergeColumn(this.dataList).one)[rowIndex]const _col = _row > 0 ? 1 : 0return {rowspan: _row,colspan: _col}}},/**合并行配套方法*/mergeColumn(data) {const spanOneArr = []let concatOne = 0data.forEach((item, index) => {if (index === 0) {spanOneArr.push(1)} else {//条件if (item.name === data[index - 1].name) { //第一列需合并相同内容的字段spanOneArr[concatOne] += 1spanOneArr.push(0)} else {spanOneArr.push(1)concatOne = index}}})return {one: spanOneArr}},
获取当月第一天~最后一天
可用于设置日期范围搜索默认值
函数写在 methods 中
defaultDate() {var date = new Date()var year = date.getFullYear().toString()var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString()var da = new Date(date.getFullYear(), month, 0).getDate()da < 10 ? '0' + da.toString() : da.toString()var beg = year + '-' + month + '-01'var end = year + '-' + month + '-' + dathis.queryParams.queryDate = [beg, end] //将值设置给插件绑定的数据},
相关文章:
Vue页面,基础配置
最简单页面 日期范围及字符搜索,监听器处理日期范围搜索控件清空重置问题导出、导出文件文件名称带日期时间表格日期指定格式显示。。。 <template><div class"app-container"><el-form :model"queryParams" ref"queryForm…...

(杨辉三角) 攻防世界--->notsequence
学习笔记。(不想看可以直接跳正文。) 前言:仿佛又回到高中 - - 只不过,是以另一种形式再次出现。 学习思维为主,做题位次。(后面再补。) 前置知识: 什么是杨辉三角: 杨辉三角_百度百科 (bai…...

【CTF Web】Pikachu CSRF(get) Writeup(CSRF+GET请求+社会工程学)
CSRF(跨站请求伪造)概述 Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成…...
智能工厂的软件设计 作为“程序Program”的中台 之2
Q11、现在,我们再重新理解一下前面所说:三种中台(数据中台、技术中台和业务中台)作为这个整体的三个整子Holon,合起来是一个 融合了三分法( 三分部 的三个中台构成三段式 程序框架,分别用 <h…...

GB28181信令交互流程及Android端设备对接探讨
GB28181规范必要性 好多开发者在做比如执法记录仪、智能安全帽、智能监控等设备端视频回传技术方案选型的时候,不清楚到底是用RTSP、RTMP还是GB28181,对GB28181相对比较陌生,我们就GB28181规范的必要性,做个探讨: 实现…...

OpenCV视频I/O(14)创建和写入视频文件的类:VideoWriter介绍
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 视频写入器类。 该类提供了用于写入视频文件或图像序列的 C API。 cv::VideoWriter 类是 OpenCV 库中用于创建和写入视频文件的一个类。它提供了…...
c语言学习(书本目录)
关键字 变量 3.typedef的使用: 定义一个结构体,名字是Person: struct Person { char name[50]; int age; }; 给结构体取一个别名:struct Person---》Person typedef struct Person Person; 上面带标签的结构体等效于 …...

2024年最新版本神马TV8.5影视APP源码 293TV影视点播系统源码搭建教程 神马TV8.2加强版反编译教程 保姆级小白可搭建 完整版本视频教程
2024年最新版的神马TV影视APP源码,版本号8.5,提供了前所未有的定制化选项和高级功能。用户可以轻松更换应用的包名和名称,确保品牌个性化。此外,该应用采用了动态域名加密技术,增强了数据传输的安全性。它支持自动切换…...
衍生品交易的隐藏风险:认识CCR和xVA
作为一名资深的量化交易专家和金融自媒体人,我经常被问到:"衍生品交易真的像传说中那么危险吗?"这个问题背后,隐藏着许多投资者对金融市场的担忧和好奇。今天,让我们一起揭开衍生品交易中两个关键概念的面纱…...

我的项目管理生涯
1 前言 从好几年前就想写几篇关于自己职业生涯的文章了,一直由于各种原因没有写成,正好借新的工作机会,尤其是项目管理这段工作经历,计划通过这一二篇文章进行总结和反思一下,以期更顺利的开展相关工作或是自己能更上…...

ChatGPT Canvas:交互式对话编辑器
自两年前 ChatGPT 发布以来,主流 AI 均以对话形式进行交互。传统的对话式界面可以直观看到反馈结果,但在需要深度编辑和协作的项目中就略显局限。为了解决此问题,几个月前 Claude 就发布过 Artifacts 功能,用来拓展原有对话。而现…...

[Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法
标题:[Linux] Linux 的进程如何调度——优先级与进程调度 个人主页水墨不写bug 目录 一、前言 二、将要出现的概念 1.进程调度队列 2.位图 3.进程的优先级 三、Linux进程的调度过程 1.活动队列(*active指向的队列) 2.过期队列&#…...
Python使用Selenium动态爬取CSDN社区帖子的URL链接
前几天读了一篇CSDN社区的帖子,发现文章内容写得极好,值得借鉴学习。于是我想将那个社区的帖子都爬下来,但是那个社区发布的贴子挺多的,一直往下拉才到2022年5月的发布。于是我就只将5月份之前的爬下来就行,但是帖子是…...
【ShuQiHere】双系统指南:如何在 Linux 系统情况下安装 Windows 11,处理引导与网络问题 ️
【ShuQiHere】 🖥️💡 在安装 Windows 11 和 Linux 双系统时,常常会遇到各种棘手的问题,特别是在网络连接、BIOS 设置和引导修复方面。今天我将详细带你解决这些问题,让你顺利完成 Windows 11 安装,并恢复…...
jQuery EasyUI 扩展
jQuery EasyUI 扩展 引言 jQuery EasyUI 是一个流行的 HTML5 框架,用于构建交互式网页界面。它提供了一系列的 UI 组件,如布局、窗口、数据网格等,使得网页开发变得更加简单快捷。然而,尽管 EasyUI 功能丰富,但在某些特定场景下,开发者可能需要更多的定制化功能或组件。…...
408算法题leetcode--第24天
#378. 有序矩阵中第 K 小的元素 378. 有序矩阵中第 K 小的元素思路:值二分,如注释时间:O(log(r-l) * n);空间:O(1) class Solution { public:int check(vector<vector<int>>& matrix, int target){/…...

【CKA】二、节点管理-设置节点不可用
2、节点管理-设置节点不可用 1. 考题内容: 2. 答题思路: 先设置节点不可用,然后驱逐节点上的pod 这道题就两条命令,直接背熟就行。 也可以查看帮助 kubectl cordon -h kubectl drain -h 参数详情: –delete-empty…...
STM32中断编程指南:NVIC和中断优先级
在STM32微控制器编程中,中断是实现多任务处理和实时响应的关键技术。NVIC(Nested Vectored Interrupt Controller)是STM32中的中断控制器,负责管理中断请求、优先级和中断向量。本文将详细介绍STM32的NVIC配置和中断优先级设置&am…...

ThreadLocal底层原理及数据结构详解
ThreadLocal允许为每个线程创建独立的变量副本,使得同一个ThreadLocal对象在不同的线程中拥有不同的值。它的主要作用是在并发环境下提供线程隔离,避免多个线程共享同一个变量,从而减少线程间的相互干扰。 ThreadLocal的核心在于为每个线程维…...

Android Framework AMS(02)AMS启动及相关初始化5-8
该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容过多,因此拆成2个章节,本章节是第二章节&…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...

C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...
基于Uniapp的HarmonyOS 5.0体育应用开发攻略
一、技术架构设计 1.混合开发框架选型 (1)使用Uniapp 3.8版本支持ArkTS编译 (2)通过uni-harmony插件调用原生能力 (3)分层架构设计: graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了,延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp ,边缘服务器拉流推送到云服务器 …...

Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集
目录 一、引言:当爬虫遭遇"地域封锁"二、背景解析:分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计:Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…...