• 表格批量操作
    • 普通用法
    • 自定义用法

    表格批量操作

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

    普通用法

    批量操作 - 图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>