vue实现动态表格提交参数动态生成控件的操作


Posted in Javascript onNovember 09, 2020

上面要求做一个根据后台数据动态生成控件,然后让用户输入提交查询信息,然后动态生成表格在显示出来。动态控件代码如下

<el-form
    :model="formData"
    style="padding: 0 5px;">
    <div v-if="tableshow">
    <div v-for="(item,i) in control" :key="i" style="padding-left:10px; float:left" >
     <el-form-item
     v-if="item.type=='input'"
     :key="item.name"
     :prop="item.name"
     label-width="100px">
     <label slot="label">{{ item.cnname }}:</label>
     <el-input v-model="item.value" size="mini" style="width: 100px; padding-right: 5px;"/>
     </el-form-item>
     <el-form-item
     v-if="item.type=='time'"
     :key="item.name"
     :prop="item.name"
     label-width="100px">
     <label slot="label">{{ item.cnname }}:</label>
     <el-date-picker
      v-model="item.value"
      value-format="yyyy-MM-dd HH:mm:ss"
      type="date"
      placeholder="选择日期"/>
     </el-form-item>
    </div>
    <div style="padding-left:10px; float:left">
     <el-form-item prop="name" style="width: 20px; margin-bottom: 0px;">
     <el-button class="filter-item" type="primary" icon="el-icon-search" size="mini" @click="cmdsearch">
      {{ $t('table.search') }}
     </el-button>
     </el-form-item>
    </div>
    </div>
   </el-form>

data格式如下

control: [{
  name: 'input1',
  cnname: '输入框1',
  type: 'input',
  value: '这里'
  }, {
  name: 'time1',
  cnname: '时间范围',
  type: 'time',
  value: null
  }]

还要监听所有控件变化

computed: {
 // 监听所有控件变化
 formData: function() {
  var formData = {}
  this.control.forEach((item) => {
  formData[item.name] = item.value
  })
  return formData
 }
 }

动态表格如下

<el-table
    v-if="tableshow"
    id="exportTab"
    ref="multipleTable"
    :data="tables"
    border="true"
    tooltip-effect="dark"
    style="width: 100%;"
    @selection-change="selectArInfo">
    <el-table-column fixed="left" label="序号" width="62px" type="index"/>
    <template v-for="(col) in tableData">
    <el-table-column
     :show-overflow-tooltip="true"
     :formatter="fmtLength"
     :prop="col.dataItem"
     :label="col.dataName"
     :key="col.dataItem"
     resizable="true"
     width="120px"/>
    </template>
   </el-table>

需要两个数组,一个保存表格列名,一个保存表格数据

tables: [], 
  tableData: [dataItem: xxx,
   dataName: xxx], //保存表格列名

补充知识:vue table表格的使用(动态数据展示)

第一种方式

<el-table :data="tableDataalllist" border style="width: 100%" @sort-change="totalusercount">
  <el-table-column :label="head" :prop="head" v-for="(head, index) in header" :key="head" :sortable="定义自定义排序项">
  <template slot-scope="scope">
  {{tableDataalllist[scope.$index][index]}} // 当前行数据 接收两个参数scope.$index; scope.row
  <template>
  <el-table-column>
 <el-table>
<script>
 export default{
  data(){
   return{
   // 数据结构
    tableDataalllist:[{
     1,'张三','23'
    },{
     2,'李四','15'
    },{
     3,'王五','18'
    }],
    header:['id','name','age']
   } 
  },
  methods:{
  // 接受一个obj参数
   totalusercount(obj){
    console.log(obj.prop) // 排序规则
    console.log(obj.order) // 排序方式
   }
  }
 }
</script>
id name age
1 张三 23
2 李四 15
3 王五 18

第二种方式(动态进行列的添加)

<el-table :data="gameareatable" v-loading="cardBuyConsumeDataLoading" v-if="gameareatable.length> 0">
 <el-table-column align="center" v-for="(item,index) in activePlayerDataPropLabelArray" :prop="item.prop" :label="item.label"
  :key="item.prop">
  <template slot-scope="scope">
  {{scope.row[item.prop]?scope.row[item.prop]:'暂无数据'}}
  </template>
 </el-table-column>
 </el-table>

export default {
 data(){
  return{
  // 数据结构 activePlayerDataPropLabelArray为label标签显示label表示当前列th的显示的值,prop表示当前'日期'列下显示date数据,'斗地主'列下显示prop为12的数据,'麻将'列下显示prop为15的数据,
   activePlayerDataPropLabelArray:[{
    label:'日期',
    prop:'date'
   },{
    label:"斗地主",
    prop:"12"
   },{
    label:'麻将',
    prop:'15'
   }],
   gameareatable:[{
    date:"2018-09-10",
    12:'老k',
    15:'一万'
   },{
    date:"2018-08-01",
    12:'炸弹',
    15:'一条' 
   },{
    date:"2018-08-02",
    12:'对子',
    15:'五筒' 
   }]
  }
 }
}
日期 斗地主 麻将
2018-09-10 老k 一万
2018-08-01 炸弹 一条
2018-08-02 对子 一万

以上这篇vue实现动态表格提交参数动态生成控件的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
Apr 28 Javascript
JQuery实现鼠标滚轮滑动到页面节点
Jul 28 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
用原生JS实现简单的多选框功能
Jun 12 Javascript
AngularJS实现表单元素值绑定操作示例
Oct 11 Javascript
详解Vue Elememt-UI构建管理后台
Feb 27 Javascript
angular 内存溢出的问题解决
Jul 12 Javascript
vue如何进行动画的封装
Sep 26 Javascript
Emberjs 通过 axios 下载文件的方法
Sep 03 Javascript
vue实现数字动态翻牌的效果(开箱即用)
Dec 08 Javascript
es5 类与es6中class的区别小结
Nov 09 #Javascript
vue实现标签云效果的示例
Nov 09 #Javascript
写一个Vue loading 插件
Nov 09 #Javascript
解决Vue大括号字符换行踩的坑
Nov 09 #Javascript
vue data有值,但是页面{{}} 取不到值的解决
Nov 09 #Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 #Javascript
Webpack的Loader和Plugin的区别
Nov 09 #Javascript
You might like
一个很不错的PHP翻页类
2009/06/01 PHP
php编写一个简单的路由类
2011/04/13 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
python计算一个序列的平均值的方法
2015/07/11 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
俄罗斯商务邀请函
2014/01/26 职场文书
美术教师自我鉴定
2014/02/12 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers