tabs.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <div class="tabs">
  3. <el-radio-group v-model="value" @change="change" :class="size">
  4. <el-radio-button v-for="(item, index) in tabs" :disabled="item.disabled" :key="index" :label="item.value">{{
  5. item.label || item.name
  6. }}</el-radio-button>
  7. </el-radio-group>
  8. </div>
  9. </template>
  10. <script>
  11. export default {
  12. name: 'zz-tabs',
  13. props: {
  14. tabs: {
  15. type: Array,
  16. default() {
  17. return [];
  18. }
  19. },
  20. value: {
  21. type: String,
  22. default() {
  23. return '';
  24. }
  25. },
  26. size: {
  27. type: String,
  28. default() {
  29. return '';
  30. }
  31. }
  32. },
  33. data() {
  34. return {
  35. model: ''
  36. };
  37. },
  38. watch: {
  39. tabs(newVal) {
  40. this.tabs = newVal;
  41. }
  42. },
  43. methods: {
  44. change(value) {
  45. this.$emit('input', value);
  46. this.$emit('change', value);
  47. }
  48. }
  49. };
  50. </script>
  51. <style lang="scss" >
  52. @import '@assets/css/public-style.scss';
  53. .tabs {
  54. margin: 0 0 20px 20px;
  55. .el-radio-group {
  56. .el-radio-button {
  57. .el-radio-button__inner {
  58. border: none;
  59. padding: 0 !important;
  60. margin-right: 40px;
  61. box-shadow: none;
  62. font-size: 16px;
  63. height: 40px;
  64. line-height: 37px;
  65. border-radius: 0;
  66. }
  67. .el-radio-button__orig-radio:checked + .el-radio-button__inner {
  68. background: none !important;
  69. color: $mainTextColor;
  70. border: none;
  71. border-bottom: 3px solid $mainTextColor;
  72. border-radius: 0;
  73. }
  74. }
  75. &.mini {
  76. .el-radio-button .el-radio-button__inner {
  77. font-size: 14px;
  78. height: 33px;
  79. line-height: 30px;
  80. }
  81. }
  82. }
  83. }
  84. </style>