ShortcutCard.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <el-card shadow="never">
  3. <template #header>
  4. <CardTitle title="快捷入口" />
  5. </template>
  6. <div class="flex flex-row flex-wrap gap-8 p-4">
  7. <div
  8. v-for="menu in menuList"
  9. :key="menu.name"
  10. class="h-20 w-20% flex flex-col cursor-pointer items-center justify-center gap-2"
  11. @click="handleMenuClick(menu.routerName)"
  12. >
  13. <div
  14. :class="menu.bgColor"
  15. class="h-48px w-48px flex items-center justify-center rounded text-white"
  16. >
  17. <Icon :icon="menu.icon" class="text-7.5!" />
  18. </div>
  19. <span>{{ menu.name }}</span>
  20. </div>
  21. </div>
  22. </el-card>
  23. </template>
  24. <script lang="ts" setup>
  25. /** 快捷入口卡片 */
  26. import { CardTitle } from '@/components/Card'
  27. defineOptions({ name: 'ShortcutCard' })
  28. const router = useRouter() // 路由
  29. /** 菜单列表 */
  30. const menuList = [
  31. { name: '用户管理', icon: 'ep:user-filled', bgColor: 'bg-red-400', routerName: 'MemberUser' },
  32. {
  33. name: '产品管理',
  34. icon: 'fluent-mdl2:product',
  35. bgColor: 'bg-orange-400',
  36. routerName: 'ProductSpu'
  37. },
  38. { name: '订单管理', icon: 'ep:list', bgColor: 'bg-yellow-500', routerName: 'TradeOrder' },
  39. {
  40. name: '售后管理',
  41. icon: 'ri:refund-2-line',
  42. bgColor: 'bg-green-600',
  43. routerName: 'TradeAfterSale'
  44. },
  45. {
  46. name: '分销管理',
  47. icon: 'fa-solid:project-diagram',
  48. bgColor: 'bg-cyan-500',
  49. routerName: 'TradeBrokerageUser'
  50. },
  51. {
  52. name: '优惠券',
  53. icon: 'ep:ticket',
  54. bgColor: 'bg-blue-500',
  55. routerName: 'PromotionCoupon'
  56. },
  57. {
  58. name: '拼团活动',
  59. icon: 'fa:group',
  60. bgColor: 'bg-purple-500',
  61. routerName: 'PromotionBargainActivity'
  62. },
  63. {
  64. name: '佣金提现',
  65. icon: 'vaadin:money-withdraw',
  66. bgColor: 'bg-rose-500',
  67. routerName: 'TradeBrokerageWithdraw'
  68. }
  69. ]
  70. /**
  71. * 跳转到菜单对应页面
  72. *
  73. * @param routerName 路由页面组件的名称
  74. */
  75. const handleMenuClick = (routerName: string) => {
  76. router.push({ name: routerName })
  77. }
  78. </script>