表格批量操作

可以批量对表格编辑和新增等操作

普通用法

批量操作 - 图1

addRowBtn为行新增按钮,cellBtn设置为true则开启行编辑按钮,在配置中将编辑的字段设置celltrue,增删改查方法和crud组件使用一致,keyId为主键的key,用于检测是否添加成功或失败。

  1. <avue-crud ref="crud" :option="option" :data="data" @row-update="addUpdate">
  2. <template slot="menuLeft">
  3. <el-button @click="addRow" size="small">添加10条</el-button>
  4. </template>
  5. </avue-crud>
  6. <script>
  7. export default {
  8. data(){
  9. return {
  10. data:[{
  11. id:0,
  12. name:'张三',
  13. sex:1,
  14. },{
  15. id:1,
  16. name:'李四',
  17. sex:0,
  18. }],
  19. option:{
  20. keyId:'id',
  21. addBtn:false,
  22. editBtn:false,
  23. addRowBtn:true,
  24. cellBtn:true,
  25. keyId: 'id',
  26. column: [{
  27. label:'姓名',
  28. prop: 'name',
  29. cell: true,
  30. rules: [
  31. {
  32. required: true,
  33. message: '请输入姓名',
  34. trigger: 'blur'
  35. }
  36. ]
  37. },{
  38. label:'性别',
  39. prop: 'sex',
  40. type:'select',
  41. dicData:[{
  42. label:'男',
  43. value:0
  44. },{
  45. label:'女',
  46. value:1
  47. }],
  48. cell: true
  49. },{
  50. label:'开关',
  51. prop: 'switch',
  52. type:'switch',
  53. cell: true
  54. }]
  55. }
  56. }
  57. },
  58. methods:{
  59. addUpdate(form,index,done,loading){
  60. this.$message.success('模拟网络请求')
  61. setTimeout(() => {
  62. this.$message.success('关闭按钮等待')
  63. loading()
  64. }, 1000)
  65. setTimeout(() => {
  66. this.$message.success(
  67. '编辑数据' + JSON.stringify(form) + '数据序号' + index
  68. )
  69. done()
  70. }, 2000)
  71. },
  72. addRow() {
  73. this.$message.success('正在添加,请稍后')
  74. setTimeout(() => {
  75. for (let i = 0; i < 10; i++) {
  76. this.$refs.crud.rowCellAdd({
  77. name: '',
  78. });
  79. }
  80. }, 500)
  81. },
  82. }
  83. }
  84. </script>

自定义用法

批量操作 - 图2

cancelBtn为取消按钮

  1. <avue-crud ref="crud" :option="option1" :data="data" @row-update="addUpdate">
  2. <template slot="menuLeft">
  3. <el-button @click="addRow" size="small">添加10条</el-button>
  4. </template>
  5. <template slot-scope="{row,index}" slot="menu">
  6. <el-button
  7. type="text"
  8. size="small"
  9. @click="rowCell(row,index)"
  10. >自定义修改</el-button
  11. >
  12. </template>
  13. </avue-crud>
  14. <script>
  15. export default {
  16. data(){
  17. return {
  18. data:[{
  19. id:0,
  20. name:'张三',
  21. sex:1,
  22. },{
  23. id:1,
  24. name:'李四',
  25. sex:0,
  26. }],
  27. option1:{
  28. keyId:'id',
  29. addBtn:false,
  30. editBtn:false,
  31. addRowBtn:true,
  32. cellBtn:false,
  33. cancelBtn:false,
  34. keyId: 'id',
  35. column: [{
  36. label:'姓名',
  37. prop: 'name',
  38. cell: true,
  39. rules: [
  40. {
  41. required: true,
  42. message: '请输入姓名',
  43. trigger: 'blur'
  44. }
  45. ]
  46. },{
  47. label:'性别',
  48. prop: 'sex',
  49. type:'select',
  50. dicData:[{
  51. label:'男',
  52. value:0
  53. },{
  54. label:'女',
  55. value:1
  56. }],
  57. cell: true
  58. },{
  59. label:'开关',
  60. prop: 'switch',
  61. type:'switch',
  62. cell: true
  63. }]
  64. }
  65. }
  66. },
  67. methods:{
  68. rowCell(row, index) {
  69. this.$refs.crud.rowCell(row, index)
  70. },
  71. rowUpdate(form, index, done) {
  72. this.$message.success(
  73. '编辑数据' + JSON.stringify(form) + '数据序号' + index
  74. )
  75. done()
  76. }
  77. }
  78. }
  79. </script>