MenuTask.vue 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <div class="quality-content-box task">
  3. <n-grid x-gap="20" :y-gap="20" :cols="2">
  4. <n-gi v-for='item in datas'>
  5. <div class="quality-content-item" @click="MenuClick(item)">
  6. <n-badge :value="20" processing v-if="item.key==='tasks-data'">
  7. <div class="quality-content">
  8. <div class="quality-icon">
  9. <i :class="item.icon"/>
  10. </div>
  11. <div class="quality-text">{{item.name}}</div>
  12. </div>
  13. </n-badge>
  14. <n-badge :value="23" processing v-else-if="item.key==='message-data'">
  15. <div class="quality-content">
  16. <div class="quality-icon">
  17. <i :class="item.icon"/>
  18. </div>
  19. <div class="quality-text">{{item.name}}</div>
  20. </div>
  21. </n-badge>
  22. <template v-else>
  23. <div class="quality-content">
  24. <div class="quality-icon">
  25. <i :class="item.icon"/>
  26. </div>
  27. <div class="quality-text">{{item.name}}</div>
  28. </div>
  29. </template>
  30. </div>
  31. </n-gi>
  32. </n-grid>
  33. </div>
  34. </template>
  35. <script setup>
  36. defineProps({
  37. datas: {
  38. type: Array,
  39. default: () => ([])
  40. }
  41. })
  42. const emit = defineEmits(['change'])
  43. const MenuClick = (item) => {
  44. emit('change', {key: 'tasks', item})
  45. }
  46. </script>
  47. <style lang="scss" scoped>
  48. .quality-content-box.task {
  49. position: relative;
  50. padding: 12px 5px;
  51. .quality-content-item {
  52. background-color: #F9F9F9;
  53. border-radius: 10px;
  54. padding: 15px;
  55. cursor: pointer;
  56. width: 115px;
  57. height: 115px;
  58. display: flex;
  59. justify-content: center;
  60. align-items: center;
  61. text-align: center;
  62. transition: background-color 0.3s;
  63. .quality-content {
  64. position: relative;
  65. .quality-icon {
  66. position: relative;
  67. font-size: 32px;
  68. }
  69. .quality-text {
  70. font-size: 12px;
  71. line-height: 1.6;
  72. color: #707070;
  73. }
  74. }
  75. &:hover {
  76. background-color: var(--hc-primary-light-7);
  77. }
  78. }
  79. }
  80. html.theme-dark {
  81. .quality-content-box.task .quality-content-item {
  82. background-color: #2e2e2e;
  83. &:hover {
  84. background-color: #404041;
  85. }
  86. }
  87. }
  88. </style>