ele-table表格列表内,双击编辑部分信息(el-table组件同理)

说明

ele-table 为公司内部组件,重点看 【主要代码】 部分代码

ele-table表格列表内:双击需要编辑的区域,编辑部分信息在这里插入图片描述

实现

双击需要编辑的数据,展示输入框/日期选择,

  • 展示输入框:修改完之后,按键盘回车键,提交修改数据
  • 展示日期选择:修改完之后,点击 √ 按钮,提交修改数据

页面展示

在这里插入图片描述
在这里插入图片描述

代码

<!-- 机动车巡查 -->
<template><div class="container"><ele-form-searchclass="container_search":form-data="searchData":form-desc="searchDesc"@search="fetchData"/><div class="container_btn"><el-button class="el-icon-plus" type="primary" size="mini" @click="operationHandler('add')">录入</el-button><el-button size="mini" @click="operationHandler('auto')">自动录入设置</el-button><a href="/downloadCenter/核查处理通知书.docx"><el-button size="mini">整改说明书下载</el-button></a></div><ele-tableclass="contariner_table":table-options="options":columns-options="columns":page.sync="searchData.page":page-size.sync="searchData.rows":total="total":show-fixed-control="false"><template #sffxwt="{ row }"><el-switchv-model="row.sffxwt"active-color="#13ce66"active-value="yes"inactive-value="no"@change="sffxwtChange($event, row)"></el-switch></template><!-- 【主要代码】 start --><template #czwt="{ row }"><el-inputv-if="row.czwtIsEdit"v-model="editValue"placeholder="请输入内容"size="mini"@keyup.enter.native="dbClickSubmit('czwt', row)"></el-input><span v-else @dblclick="dbClickEdit('czwt', row)">{{ row.czwt }}</span></template><template #ccrq="{ row }"><div v-if="row.ccrqIsEdit" class="ccrq"><el-date-pickerv-model="editValue"type="date"placeholder="选择日期"size="mini"format="yyyy-MM-dd"value-format="yyyy-MM-dd"/><el-buttontype="text"class="el-icon-check"@click="dbClickSubmit('ccrq', row)"></el-button></div><span v-else @dblclick="dbClickEdit('ccrq', row)">{{ row.ccrq }}</span></template><!-- 【主要代码】 end --><template #operation="{ row }"><el-button type="text" @click="detailHandler(row)">查看</el-button><el-button:disabled="row.sffxwt === 'no'"type="text"@click="operationHandler('upload', row)">上传</el-button><el-button type="text" @click="operationHandler('issued', row)">下发</el-button></template></ele-table><DetailDialog ref="DetailDialogRef" @update="fetchData" /><OperationDialog ref="OperationDialogRef" @update="fetchData" /></div>
</template>
<script>
import { mapGetters } from 'vuex'
import { listPage, update } from '@/api/neimeng/vehicle-inspection-feedback'
import { searchDesc } from './constant/formList'
import { columns } from './constant/columns'
import DetailDialog from './components/DetailDialog'
import OperationDialog from './components/OperationDialog'export default {name: 'VehicleInspection',components: { DetailDialog, OperationDialog },filters: {},data() {return {searchData: {page: 1,rows: 10},tableData: [],total: 0,editValue: ''}},computed: {...mapGetters(['glbmList']),searchDesc() {return searchDesc(this)},options() {return {data: this.tableData}},columns() {return columns(this)}},watch: {},created() {this.fetchData()},methods: {fetchData() {let { time, ...params } = this.searchDataif (time && time.length) {params.kssj = time[0]params.jssj = time[1]}listPage(params).then((res) => {this.common.CheckCode(res, null, () => {this.tableData = res.data.rows || []this.total = res.data.total || 0})})},sffxwtChange(val, row) {update({sffxwt: val,id: row.id}).then((res) => {this.$common.CheckCode(res, null, () => {this.fetchData()})})},/** ** 【主要代码】 start ****/getIndex(rowData) {return this.tableData.findIndex((item) => item.id === rowData.id)},dbClickEdit(key, rowData) {const isCanEdit = this.tableData.some((item) => {if (item.ccrqIsEdit || item.czwtIsEdit) return true})if (isCanEdit) return this.$message.error('请先编辑完当前数据再编辑下一个')this.editValue = key === 'ccrq' ? new Date(rowData[key]) : rowData[key]this.tableData[this.getIndex(rowData)][key + 'IsEdit'] = truethis.renderDom()},dbClickSubmit(key, rowData) {update({[key]: this.editValue,id: rowData.id}).then((res) => {this.$common.CheckCode(res, '修改成功', () => {this.fetchData()this.tableData[this.getIndex(rowData)][key + 'IsEdit'] = falsethis.renderDom()this.editValue = ''})})},renderDom() {this.tableData.push({})this.tableData.pop()},/** ** 【主要代码】 end ****/detailHandler(rowData) {this.$refs.DetailDialogRef.open(rowData)},operationHandler(type, rowData) {this.$refs.OperationDialogRef.open(type, rowData)}}
}
</script>
<style lang="scss" scoped>
.container {height: calc(100% - 52px);&_search {padding: 10px;margin-bottom: 10px;::v-deep .el-form-item__content {text-align: left;}}&_btn {background-color: #fff;padding: 10px 10px 0;text-align: left;.el-icon-plus {margin-bottom: 10px;}a {margin-left: 10px;}}.contariner_table {height: calc(100% - 100px);::v-deep .ele-table-pagination {position: fixed;bottom: 0;justify-content: center;z-index: 10;}.upload-demo {display: inline-block;}.ccrq {width: 100%;display: inline-block;::v-deep .el-date-editor {width: calc(100% - 22px);}.el-icon-check {padding: 0;cursor: pointer;font-size: 20px;}}}
}.blue-theme {.container_btn {background-color: #293f60;color: #fff;}
}
.night-theme {.container_btn {background-color: #1a2331;color: #fff;}
}
</style>

./constant/formList.js

import { getToken } from '@/utils/auth'const sffxwtOptions = [{value: 'yes',text: '是'},{value: 'no',text: '否'}
]export const searchDesc = (_this) => {return {jczmc: {type: 'input',label: '监测站名称',attrs: {clearable: true},layout: 8},fzjg: {type: 'input',label: '盟市',attrs: {clearable: true},layout: 8},sffxwt: {type: 'select',label: '是否发现问题',attrs: {clearable: true},layout: 8,options: sffxwtOptions},time: {type: 'daterange',label: '巡查时间',attrs: {clearable: true,valueFormat: 'yyyy-MM-dd'},layout: 8}}
}export const detailFormDesc = (_this) => {return {carInfo: {hpzl: {type: 'select',label: '号牌种类',layout: 8,render: (h, content, value) => {return <span>{_this.common.filter_dic('mon_business_hpzl', value)}</span>}},hphm: {type: 'input',label: '号牌号码',layout: 8},jdczt: {type: 'input',label: '机动车状态',layout: 8},syr: {type: 'input',label: '所有人',layout: 8},sfzmhm: {type: 'input',label: '身份证号',layout: 8},lxfs: {type: 'input',label: '联系方式',layout: 8},zsxxdz: {type: 'input',label: '住址',layout: 8},zzxxdz: {type: 'input',label: '暂住地址',layout: 8},ccdjrq: {type: 'input',label: '初次登记日期',layout: 8},yxqz: {type: 'input',label: '有效期止',layout: 8},qzbfqz: {type: 'input',label: '强制报废日期止',layout: 8},yqjyqzbfqz: {type: 'input',label: '逾期检验强制报废期止',layout: 8},syq: {vif: _this.drawerType === 'detail',type: 'input',label: '所有权',layout: 8,render: (h, content, value) => {const cur = sffxwtOptions.find((i) => i.value === value)return <span>{(cur && cur.text) || '暂无'}</span>}},sqztmc: {vif: _this.drawerType === 'detail',type: 'input',label: '申请状态',layout: 8},bz: {vif: _this.drawerType === 'detail',type: 'input',label: '车辆备注信息',layout: 8}},applyInfo: {clbz: {type: 'input',label: '车辆备注信息',layout: _this.drawerType === 'apply' ? 24 : 8,default: _this.carInfo.bz,disabled: true},[_this.drawerType === 'apply' ? 'zrbm' : 'zrbmmc']: {type: 'select',label: '申请转入部门',layout: _this.drawerType === 'apply' ? 24 : 8,required: true,options: _this.glbmOptions,prop: {value: 'value',text: 'label'},attrs: {clearable: true}},bz: {type: 'textarea',label: '申请备注',layout: _this.drawerType === 'apply' ? 24 : 8,attrs: {clearable: true}},cjr: {vif: ['examineDetail', 'examine'].includes(_this.drawerType),type: 'input',label: '申请人',layout: 8},sqbm: {vif: ['examineDetail', 'examine'].includes(_this.drawerType),type: 'input',label: '申请人部门',layout: 8},sqsj: {vif: ['examineDetail', 'examine'].includes(_this.drawerType),type: 'input',label: '申请时间',layout: 8}},examineInfo: {clyj: {type: 'textarea',label: '审核备注',layout: _this.drawerType === 'examine' ? 24 : 16,attrs: {clearable: true}},clr: {vif: ['examineDetail'].includes(_this.drawerType),type: 'input',label: '审核人',layout: 8},clsj: {vif: ['examineDetail'].includes(_this.drawerType),type: 'input',label: '审核时间',layout: 16}}}
}export const operationFormDesc = (_this) => {return {auto: {lrpl: {type: 'input',label: '',labelWidth: 0,layout: 24},lrsl: {type: 'input',label: '',labelWidth: 0,layout: 24}},issued: {xfbm: {type: 'select',label: '下发部门',layout: 24,options: _this.glbmOptions,prop: {value: 'value',text: 'label'},attrs: {clearable: true}}},upload: {zgsms: {type: 'upload',label: '上传文件',layout: 24,attrs: {// accept: 'image/*',label: '上传文件',multiple: false,autoUpload: true,limit: 1,// listType: 'picture-card',blockSize: 'middle',params: { relativePath: 'NMXCFile/' },uploadAPI: '/supervise_basic/upload/oss/fileupload',token: getToken(),beforeUpload: _this.beforeUploadHandler,'on-exceed': () => {_this.$message('最多允许传一个文件')}}}}}
}

./constant/columns.js

import moment from 'moment'
export const columns = (_this) => {return [{type: 'index',label: '序号',index: (index) => {return (_this.searchData.page - 1) * _this.searchData.rows + index + 1}},{prop: 'fzjg',label: '盟市'},{prop: 'lsh',label: '流水号'},{prop: 'jczmc',label: '监测站名称'},{prop: 'hphm',label: '车牌号'},{prop: 'cllx',label: '车辆类型'},{prop: 'sffxwt',label: '是否发现问题'},{prop: 'czwt',label: '存在问题'},{prop: 'ccrq',label: '抽查日期'},{prop: 'operation',label: '操作',fixed: 'right',width: 150}]
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

开源的GPT-4o模型使用指南,Mini-Omni2集视觉、语音和双工能力于一体的

1. Mini-Omni2 是什么&#xff1f; Mini-Omni2 是一个开源的多模态语言模型&#xff0c;旨在模拟 GPT-4o 的视觉、语音和文本处理能力。它能够理解和生成视觉、听觉和文本内容&#xff0c;并支持实时的语音输出和灵活的双工交互。 Mini-Omni2 由清华大学和 Inspirai 的研究人…

Serverless + AI 让应用开发更简单

本文整理自 2024 云栖大会&#xff0c;阿里云智能高级技术专家&#xff0c;史明伟演讲议题《Serverless AI 让应用开发更简单》 随着云计算和人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;企业对于高效、灵活且成本效益高的解决方案的需求日益增长。本文旨在…

正式开源:从 Greenplum 到 Cloudberry 迁移工具 cbcopy 发布

Cloudberry Database 作为 Greenplum 衍生版本和首选开源替代&#xff0c;由 Greenplum 原始团队成员创建&#xff0c;与 Greenplum 保持原生兼容&#xff0c;并能实现无缝迁移&#xff0c;且具备更新的 PostgreSQL 内核和更丰富的功能。GitHub: https://github.com/cloudberry…

基于人工智能的搜索和推荐系统

互联网上的搜索历史分析和用户活动是个性化推荐的基础&#xff0c;这些推荐已成为电子商务行业和在线业务的强大营销工具。随着人工智能的使用&#xff0c;在线搜索也在改进&#xff0c;因为它会根据用户的视觉偏好提出建议&#xff0c;而不是根据每个客户的需求和偏好量身定制…

SpringBoot starter机制

1、出现的背景 在spring boot之前&#xff0c;想要在spring中集成redis&#xff0c;需要做的事情包括&#xff1a; &#xff08;1&#xff09;引入jar包&#xff1a;包括redis的jar包&#xff0c;redis依赖的jar包&#xff0c;相应的版本&#xff0c;与spring版本是否兼容等 …

在 JavaScript 中,`Array.prototype.filter` 方法用于创建一个新数组,该数组包含通过测试的所有元素

文章目录 1、概念在你的代码中的作用示例总结 2、实战3、formattedProducts4、filteredProducts 1、概念 在 JavaScript 中&#xff0c;Array.prototype.filter 方法用于创建一个新数组&#xff0c;该数组包含通过测试的所有元素。具体来说&#xff0c;filter 方法会遍历数组中…

通过源码分析类加载器里面可以加载的类

类列表 每一个ClassLoader里面的类列表&#xff0c;类的数量都是固定的。 对上一节中的dex反编译 使用DexClassLoader类动态加载插件dex   利用jadx对dex进行反编译可以看到有哪些类 源码分析 BaseDexClassLoader 从BaseDexClassLoader类加载器开始分析 在BaseDexClassLoade…

系统架构设计师(软考高级)一站式通关课程

系统架构设计师&#xff08;软考高级&#xff09; 一站式通关课程 系统架构设计师&#xff08;软考高级&#xff09;教程&#xff08;三连评论分享链接&#xff01;&#xff09; &#x1f3af; 课程亮点&#xff1a; 全面覆盖&#xff1a; 从基础概念到高级应用&#xff0c;涵盖…

C++ 优先算法——盛最多水的容器(双指针)

目录 题目&#xff1a;盛最多水的容器 1. 题目解析 2. 算法原理 3. 代码实现 题目&#xff1a;盛最多水的容器 1. 题目解析 题目截图: 如图所示&#xff1a; 水的高度一定是由较低的那条线的高度决定的&#xff1a;例1图中&#xff0c;是由7决定的&#xff0c;然后求出…

SQL-lab靶场less1-4

说明&#xff1a;部分内容来源于网络&#xff0c;如有侵权联系删除 前情提要&#xff1a;搭建sql-lab本地靶场的时候发现一些致命的报错&#xff1a; 这个程序只能在php 5.x上运行&#xff0c;在php 7及更高版本上&#xff0c;函数“mysql_query”和一些相关函数被删除&#xf…

Golang | Leetcode Golang题解之第535题TinyURL的加密与解密

题目&#xff1a; 题解&#xff1a; import "math/rand"type Codec map[int]stringfunc Constructor() Codec {return Codec{} }func (c Codec) encode(longUrl string) string {for {key : rand.Int()if c[key] "" {c[key] longUrlreturn "http:/…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎&#xff0c;可用于全文搜索、分析和数据可视化。传统上&#xff0c;Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名&#xff0c;其中文档基于精确或部分关键字匹配进行匹配。然而&#xff0c;Elasticsearch 已经发展到支…

计算机毕业设计Python+大模型新闻自动分类 新闻舆情预测 新闻语料情感分析 新闻推荐系统 朴素贝叶斯分类算法 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【097】基于SpringBoot+Vue实现的个人社区博客管理系统

系统介绍 演示视频 小白博客2.0&#xff08;SpringbootVue)源码数据库讲解视频设计文档 基于SpringBootVue实现的小白博客2.0系统设计了超级管理员、系统观察者、用户三种角色&#xff0c;超级管理员可对用户授权&#xff0c;具体实现的功能如下 文章采用了比较火的Markdown编…

LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096

目录 LM Head weights ChatGPT-3词汇量:175,000 llama7b 词汇量 词汇量:32000 max_position_embeddings: 4096 LM Head weights ChatGPT-3词汇量:175,000 ChatGPT-4 确切的词向量种类数量公开信息。但可以根据一些语言模型的相关知识进行推测分析。 一般来说,语言模…

ArcGIS005:ArcMap常用操作101-150例动图演示

摘要&#xff1a;本文涵盖了GIS软件操作的多方面内容&#xff0c;包括地图文档的新建、打开、保存及版本兼容性处理&#xff1b;错误与警告的查阅及帮助文档的使用技巧&#xff1b;地图打印比例尺的调整与地图信息的完善&#xff1b;图层操作的撤销与恢复&#xff0c;界面元素的…

Chrome和夸克谁更护眼

在当今数字化时代&#xff0c;我们每天长时间面对电脑和手机屏幕&#xff0c;眼睛的健康问题变得越来越重要。浏览器作为我们日常使用频率极高的工具&#xff0c;其护眼功能的优劣直接影响到我们的视觉舒适度。本文将对Chrome和夸克两款主流浏览器进行对比&#xff0c;探讨它们…

WPF+MVVM案例实战(十二)- 3D数字翻牌计时实现

文章目录 1、运行效果2、功能实现1、文件创建2、控件代码实现3、控件引用与菜单实现1.引用用户控件2.按钮菜单3、计时器界面实现4、源代码获取1、运行效果 3D数字翻牌计时 2、功能实现 1、文件创建 打开项目 Wpf_Examples ,在用户控件 UserControlLib 中创建 NumberFoldi…

一、计算机网络概述,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》

文章目录 [toc]零、前言一、什么是Internet1.1 从具体构成角度1.2 什么是协议1.3 从服务角度1.4 网络结构 二、网络边缘2.1 通讯模式2.2 采用网络设施的面向连接服务2.3 采用基础设施的无连接服务 三、网络核心3.1 认识网络核心3.2 网络核心&#xff1a;电路交换3.2.1 基本原理…

闯关leetcode——234. Palindrome Linked List

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/palindrome-linked-list/description/ 内容 Given the head of a singly linked list, return true if it is a palindrome or false otherwise. Example 1: Input: head [1,2,2,1] Output: tru…