BigscreenManagement.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <Layout>
  3. <LayoutHeader style="background: #fff; padding: 0 16px">
  4. <Menu mode="horizontal" :selectedKeys="menuSelectedKeys">
  5. <MenuItem key="1" :icon="() => h(CodepenCircleOutlined)"
  6. >我的大屏</MenuItem
  7. >
  8. </Menu>
  9. </LayoutHeader>
  10. <layoutContent style="padding: 16px">
  11. <Flex wrap="wrap" gap="large">
  12. <Card hoverable style="width: 258px" @click="handleOpenAddModal">
  13. <template #cover>
  14. <div class="add-btn">
  15. <PlusOutlined style="font-size: 38px; margin-bottom: 12px;" />
  16. <div class="add-btn-text">新建大屏</div>
  17. </div>
  18. </template>
  19. </Card>
  20. <Card hoverable style="width: 258px" v-for="i in 10" :key="i">
  21. <template #cover>
  22. <img class="cover-img" alt="大屏封面" src="https://picsum.photos/258/200" />
  23. </template>
  24. <template #actions>
  25. <Tooltip title="删除"><DeleteOutlined /></Tooltip>
  26. <Tooltip title="编辑"><EditOutlined /></Tooltip>
  27. <Tooltip title="预览"><EyeOutlined /></Tooltip>
  28. <Tooltip title="发布"><SendOutlined /></Tooltip>
  29. </template>
  30. <CardMeta title="大屏名称XX" />
  31. </Card>
  32. </Flex>
  33. <!-- 新增大屏弹窗 -->
  34. <AddModal v-model:open="addOpen"></AddModal>
  35. </layoutContent>
  36. </Layout>
  37. </template>
  38. <script setup lang="ts">
  39. import { h, ref } from "vue";
  40. import type { Ref } from "vue";
  41. import {
  42. Layout,
  43. LayoutHeader,
  44. LayoutContent,
  45. Menu,
  46. MenuItem,
  47. Card,
  48. CardMeta,
  49. Flex,
  50. Tooltip
  51. } from "ant-design-vue";
  52. import {
  53. CodepenCircleOutlined,
  54. EditOutlined,
  55. DeleteOutlined,
  56. EyeOutlined,
  57. SendOutlined,
  58. PlusOutlined
  59. } from "@ant-design/icons-vue";
  60. import AddModal from "./AddModal.vue";
  61. const menuSelectedKeys: Ref<string[]> = ref(["1"]);
  62. const addOpen: Ref<boolean> = ref(false);
  63. const handleOpenAddModal = () => {
  64. addOpen.value = true;
  65. };
  66. </script>
  67. <style lang="less" scoped>
  68. .cover-img {
  69. width: 100%;
  70. height: 148px;
  71. object-fit: cover;
  72. }
  73. .add-btn {
  74. width: 258px;
  75. height: 260px;
  76. display: flex;
  77. flex-direction: column;
  78. align-items: center;
  79. justify-content: center;
  80. &-text {
  81. font-size: 16px;
  82. color: #333;
  83. font-weight: bold;
  84. }
  85. }
  86. </style>