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 相关文章推荐
JavaScript 模拟用户单击事件
Dec 31 Javascript
THREE.JS入门教程(2)着色器-上
Jan 24 Javascript
JavaScript instanceof 的使用方法示例介绍
Oct 23 Javascript
javascript控制在光标位置插入文字适合表情的插入
Jun 09 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
jQuery ajax应用总结
Jun 02 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
Mar 25 Javascript
phantomjs导出html到pdf的方法总结
Oct 19 Javascript
vue源码学习之Object.defineProperty 对数组监听
May 30 Javascript
node.js实现微信开发之获取用户授权
Mar 18 Javascript
vue postcss-px2rem 自适应布局
May 15 Vue.js
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 session应用实例 登录验证
2009/03/16 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
Python socket实现简单聊天室
2018/04/01 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
Python操作Excel的学习笔记
2021/02/18 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
两只小狮子教学反思
2014/02/05 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
授权收款委托书范本
2014/10/10 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
物业保安辞职信
2015/05/12 职场文书
夏洛特的网观后感
2015/06/15 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书