Showing
2 changed files
with
137 additions
and
0 deletions
src/views/data/board/detail/index.vue
0 → 100644
1 | +<script lang="ts" setup> | |
2 | + import { PageWrapper } from '/@/components/Page'; | |
3 | + import { Button } from 'ant-design-vue'; | |
4 | + const handleBack = () => {}; | |
5 | +</script> | |
6 | + | |
7 | +<template> | |
8 | + <PageWrapper title="水电表看板" @back="handleBack" content="已创建组件: 3个"> | |
9 | + <template #extra> | |
10 | + <Button type="primary">创建组件</Button> | |
11 | + </template> | |
12 | + <section class="bg-light-50 h-full w-full"> </section> | |
13 | + </PageWrapper> | |
14 | +</template> | ... | ... |
src/views/data/board/index.vue
0 → 100644
1 | +<script lang="ts" setup> | |
2 | + import { List, Card, Statistic, Dropdown, Menu } from 'ant-design-vue'; | |
3 | + import { ref, unref } from 'vue'; | |
4 | + import { PageWrapper } from '/@/components/Page'; | |
5 | + import { | |
6 | + MoreOutlined, | |
7 | + ShareAltOutlined, | |
8 | + EditOutlined, | |
9 | + DeleteOutlined, | |
10 | + } from '@ant-design/icons-vue'; | |
11 | + import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard'; | |
12 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
13 | + import { useRoute, useRouter } from 'vue-router'; | |
14 | + const ListItem = List.Item; | |
15 | + const MenuItem = Menu.Item; | |
16 | + | |
17 | + const router = useRouter(); | |
18 | + const { createMessage } = useMessage(); | |
19 | + | |
20 | + const data = ref([{ title: 1 }, { title: 2 }, { title: 3 }]); | |
21 | + //分页相关 | |
22 | + const page = ref(1); | |
23 | + const pageSize = ref(36); | |
24 | + const total = ref(0); | |
25 | + const paginationProp = ref({ | |
26 | + showSizeChanger: false, | |
27 | + showQuickJumper: true, | |
28 | + pageSize, | |
29 | + current: page, | |
30 | + total, | |
31 | + showTotal: (total) => `总 ${total} 条`, | |
32 | + onChange: pageChange, | |
33 | + onShowSizeChange: pageSizeChange, | |
34 | + }); | |
35 | + | |
36 | + function pageChange(p, pz) { | |
37 | + page.value = p; | |
38 | + pageSize.value = pz; | |
39 | + } | |
40 | + function pageSizeChange(_current, size) { | |
41 | + pageSize.value = size; | |
42 | + } | |
43 | + | |
44 | + const { clipboardRef } = useCopyToClipboard(); | |
45 | + const handleCopyShareUrl = () => { | |
46 | + clipboardRef.value = '123'; | |
47 | + unref(clipboardRef) && createMessage.success('复制成功'); | |
48 | + }; | |
49 | + | |
50 | + const handleEdit = () => { | |
51 | + router.push('/data/board/detail'); | |
52 | + }; | |
53 | + | |
54 | + const handleRemove = () => {}; | |
55 | +</script> | |
56 | + | |
57 | +<template> | |
58 | + <PageWrapper> | |
59 | + <template #header> 自定义看板 </template> | |
60 | + <List | |
61 | + :pagination="paginationProp" | |
62 | + :data-source="data" | |
63 | + :grid="{ gutter: 5, column: 4, xs: 1, sm: 2, md: 2, lg: 3, xl: 3, xxl: 3 }" | |
64 | + > | |
65 | + <template #renderItem="{ item }"> | |
66 | + <ListItem> | |
67 | + <Card class="data-card cursor-pointer"> | |
68 | + <template #extra> | |
69 | + <Dropdown> | |
70 | + <template #overlay> | |
71 | + <Menu> | |
72 | + <MenuItem key="edit" @click="handleEdit"> | |
73 | + <EditOutlined /> | |
74 | + <span>编辑</span> | |
75 | + </MenuItem> | |
76 | + <MenuItem key="remove" @click="handleRemove"> | |
77 | + <DeleteOutlined /> | |
78 | + <span>删除</span> | |
79 | + </MenuItem> | |
80 | + </Menu> | |
81 | + </template> | |
82 | + <MoreOutlined class="rotate-90 transform cursor-pointer" /> | |
83 | + </Dropdown> | |
84 | + </template> | |
85 | + <!-- <template #cover>title</template> --> | |
86 | + <section> | |
87 | + <div class="flex justify-between items-center"> | |
88 | + <div>设备看板名</div> | |
89 | + <div class="flex content-center"> | |
90 | + <Statistic value="12"> | |
91 | + <template #suffix> | |
92 | + <span class="text-sm">个组件</span> | |
93 | + </template> | |
94 | + </Statistic> | |
95 | + </div> | |
96 | + </div> | |
97 | + <div class="flex justify-between mt-4"> | |
98 | + <div> | |
99 | + <span>看板类型</span> | |
100 | + <span> | |
101 | + <ShareAltOutlined @click="handleCopyShareUrl" /> | |
102 | + </span> | |
103 | + </div> | |
104 | + <div>2021-02-11 12:00:00</div> | |
105 | + </div> | |
106 | + </section> | |
107 | + </Card> | |
108 | + </ListItem> | |
109 | + </template> | |
110 | + </List> | |
111 | + </PageWrapper> | |
112 | +</template> | |
113 | + | |
114 | +<style scoped> | |
115 | + .data-card:deep(.ant-card-head) { | |
116 | + padding: 0; | |
117 | + height: 40px; | |
118 | + min-height: 40px; | |
119 | + } | |
120 | + .data-card:deep(.ant-card-extra) { | |
121 | + padding: 8px; | |
122 | + } | |
123 | +</style> | ... | ... |