表单选项卡

可以根据输入的内容划分不用的选项卡,集合tabs组件使用

选项卡

选项卡 - 图1

集成了对form组件的封装,只需要在option中没一个选项卡column中配置option的form组件结构体即可,当然你觉的如果这个结构体太庞大的话,可以如下例子采用分组引入js,提交时候submit中返回当前选项卡的内容,如果你想获取全部选项卡对象,则给组件加一个v-model

  1. <avue-tabs :option="option" v-model="form" @submit="handleSubmit"></avue-tabs>
  2. <script>
  3. const tab1Form ={
  4. column:[{
  5. label:'内容1',
  6. prop:'text1'
  7. }]
  8. }
  9. const tab2Form ={
  10. column:[{
  11. label:'内容2',
  12. prop:'text2'
  13. }]
  14. }
  15. const tab3Form ={
  16. column:[{
  17. label:'内容3',
  18. prop:'text3'
  19. }]
  20. }
  21. export default {
  22. data(){
  23. return {
  24. form:{},
  25. option:{
  26. column: [{
  27. icon:'el-icon-info',
  28. label: '选项卡1',
  29. prop: 'tab1',
  30. option:tab1Form,
  31. }, {
  32. icon:'el-icon-warning',
  33. label: '选项卡2',
  34. prop: 'tab2',
  35. option:tab2Form,
  36. }, {
  37. icon:'el-icon-question',
  38. label: '选项卡3',
  39. prop: 'tab3',
  40. option:tab3Form,
  41. }]
  42. }
  43. }
  44. },
  45. methods:{
  46. handleSubmit(form){
  47. this.$message.success(JSON.stringify(form))
  48. }
  49. }
  50. }
  51. </script>

选项卡分组

选项卡 - 图2

按照form的分组结构配置每一个选项卡即可

  1. <avue-tabs :option="option0" v-model="form" @submit="handleSubmit"></avue-tabs>
  2. <script>
  3. const tab4Form ={
  4. group:[
  5. {
  6. icon:'el-icon-info',
  7. label: '分组1',
  8. column:[{
  9. label:'内容1',
  10. prop:'text1'
  11. }]
  12. },
  13. {
  14. icon:'el-icon-info',
  15. label: '分组2',
  16. column:[{
  17. label:'内容2',
  18. prop:'text2'
  19. }]
  20. }
  21. ]
  22. }
  23. const tab5Form ={
  24. group:[
  25. {
  26. icon:'el-icon-info',
  27. label: '分组3',
  28. column:[{
  29. label:'内容3',
  30. prop:'text3'
  31. }]
  32. },{
  33. icon:'el-icon-info',
  34. label: '分组4',
  35. column:[{
  36. label:'内容4',
  37. prop:'text4'
  38. }]
  39. }
  40. ]
  41. }
  42. export default {
  43. data(){
  44. return {
  45. form:{},
  46. option0:{
  47. column: [{
  48. icon:'el-icon-info',
  49. label: '选项卡1',
  50. prop: 'tab1',
  51. option:tab4Form,
  52. }, {
  53. icon:'el-icon-warning',
  54. label: '选项卡2',
  55. prop: 'tab2',
  56. option:tab5Form,
  57. }]
  58. }
  59. }
  60. },
  61. methods:{
  62. handleSubmit(form){
  63. this.$message.success(JSON.stringify(form))
  64. }
  65. }
  66. }
  67. </script>