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> | ... | ... |