Commit 3613688cbcc568e1bb249ba70577b3b5c81461e5
Merge branch 'sqy_dev' into 'main'
fix:修改首页通知信息,修改我的通知UI,解决之前遗留的bug See merge request huang/yun-teng-iot-front!46
Showing
13 changed files
with
192 additions
and
179 deletions
... | ... | @@ -16,6 +16,8 @@ import { |
16 | 16 | ChangeAccountParams, |
17 | 17 | RoleListItem, |
18 | 18 | } from './model/systemModel'; |
19 | +import { USER_INFO_KEY } from '/@/enums/cacheEnum'; | |
20 | +import { getAuthCache } from '/@/utils/auth'; | |
19 | 21 | import { defHttp } from '/@/utils/http/axios'; |
20 | 22 | |
21 | 23 | enum Api { |
... | ... | @@ -84,10 +86,20 @@ export const getAllRoleList = async (params?: RoleParams) => { |
84 | 86 | return defHttp.post<RoleListGetResultModel>({ url: Api.GetAllRoleList, params }); |
85 | 87 | }; |
86 | 88 | |
87 | -// 过滤角色列表----过滤掉不是PLATFORM_ADMIN的角色 | |
88 | -export const filterRoleList = async (params?: RoleParams) => { | |
89 | - const res = await defHttp.post<RoleListGetResultModel>({ url: Api.GetAllRoleList, params }); | |
90 | - const options = res.filter((item) => item.roleType === 'PLATFORM_ADMIN'); | |
89 | +// 过滤角色列表----根据登录的账号所属的角色-过滤掉其他平台类型的角色 | |
90 | +export const filterRoleList = async () => { | |
91 | + const res = await defHttp.post<RoleListGetResultModel>({ url: Api.GetAllRoleList }); | |
92 | + const userInfo: any = getAuthCache(USER_INFO_KEY); | |
93 | + const role = userInfo.roles[0]; | |
94 | + const options = res.filter((item) => { | |
95 | + if (role === 'SYS_ADMIN') { | |
96 | + return item.roleType === 'PLATFORM_ADMIN'; | |
97 | + } else if (role === 'PLATFORM_ADMIN') { | |
98 | + return item.roleType === 'PLATFORM_ADMIN'; | |
99 | + } else { | |
100 | + return item.roleType === 'CUSTOMER_USER'; | |
101 | + } | |
102 | + }); | |
91 | 103 | return Promise.resolve<RoleListItem[]>(options); |
92 | 104 | }; |
93 | 105 | ... | ... |
... | ... | @@ -63,7 +63,7 @@ |
63 | 63 | const BMap = (window as any).BMap; |
64 | 64 | if (!wrapEl) return; |
65 | 65 | const map = new BMap.Map(wrapEl); |
66 | - const point = new BMap.Point(116.14282, 35.19515); | |
66 | + const point = new BMap.Point(104.04666605565338, 30.543516387560476); | |
67 | 67 | |
68 | 68 | map.centerAndZoom(point, 15); |
69 | 69 | map.enableScrollWheelZoom(true); | ... | ... |
1 | 1 | <template> |
2 | 2 | <div> |
3 | - <PageWrapper dense contentFullHeight fixedHeight contentClass="flex"> | |
3 | + <PageWrapper dense contentFullHeight contentClass="flex"> | |
4 | 4 | <OrganizationIdTree |
5 | 5 | class="w-1/4 xl:w-1/5" |
6 | 6 | @select="handleSelect" |
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 | <a-button |
13 | 13 | type="primary" |
14 | 14 | color="error" |
15 | - @click="handleDeleteOrBatchDelete.bind(null)" | |
15 | + @click="handleDeleteOrBatchDelete(null)" | |
16 | 16 | :disabled="hasBatchDelete" |
17 | 17 | > |
18 | 18 | 批量删除 |
... | ... | @@ -120,7 +120,7 @@ |
120 | 120 | } |
121 | 121 | }; |
122 | 122 | // 删除或批量删除 |
123 | - const handleDeleteOrBatchDelete = async (record?: Recordable) => { | |
123 | + const handleDeleteOrBatchDelete = async (record: Recordable | null) => { | |
124 | 124 | if (record) { |
125 | 125 | try { |
126 | 126 | await deleteAlarmContact([record.id]); | ... | ... |
... | ... | @@ -14,35 +14,43 @@ |
14 | 14 | :bodyStyle="{ padding: 0 }" |
15 | 15 | > |
16 | 16 | <div v-if="activeKey === 'tab1'"> |
17 | - <List item-layout="horizontal" :data-source="data"> | |
17 | + <List item-layout="horizontal" :dataSource="dataSource"> | |
18 | 18 | <template #renderItem="{ item }"> |
19 | 19 | <ListItem> |
20 | - <ListItemMeta :description="item.description"> | |
21 | - <template #title> | |
22 | - <a href="https://www.antdv.com/">{{ item.title }}</a> | |
23 | - </template> | |
20 | + <ListItemMeta> | |
24 | 21 | <template #avatar> |
25 | - <Avatar :src="item.avatar" /> | |
22 | + <Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" /> | |
23 | + </template> | |
24 | + <template #description> | |
25 | + <span | |
26 | + @click="go('/stationnotification/mynotification')" | |
27 | + class="cursor-pointer noticeTitle" | |
28 | + >{{ item.sysNotice.title }} | |
29 | + </span> | |
30 | + </template> | |
31 | + <template #title> | |
32 | + <span>{{ item.user.realName }}</span> | |
26 | 33 | </template> |
27 | 34 | </ListItemMeta> |
28 | - <template #extra> {{ item.date }} </template> | |
35 | + <template #extra> | |
36 | + <Time :value="item.sysNotice.senderDate" /> | |
37 | + </template> | |
29 | 38 | </ListItem> |
30 | 39 | </template> |
31 | 40 | </List> |
41 | + <Card hoverable title="联系我们" :bordered="false"> | |
42 | + <template #cover> | |
43 | + <img :src="getQrCode" alt="" style="width: 150px; height: 150px; margin: 50px auto" /> | |
44 | + </template> | |
45 | + <CardMeta> | |
46 | + <template #description> | |
47 | + <p>联系人: {{ getContacts }}</p> | |
48 | + <p>联系电话: {{ getTel }}</p> | |
49 | + <p>联系地址: {{ getAddress }} </p> | |
50 | + </template> | |
51 | + </CardMeta> | |
52 | + </Card> | |
32 | 53 | </div> |
33 | - <div v-else>222</div> | |
34 | - </Card> | |
35 | - <Card hoverable title="联系我们" :bordered="false"> | |
36 | - <template #cover> | |
37 | - <img :src="getQrCode" alt="" style="width: 150px; height: 150px; margin: 50px auto" /> | |
38 | - </template> | |
39 | - <CardMeta> | |
40 | - <template #description> | |
41 | - <p>联系人: {{ getContacts }}</p> | |
42 | - <p>联系电话: {{ getTel }}</p> | |
43 | - <p>联系地址: {{ getAddress }} </p> | |
44 | - </template> | |
45 | - </CardMeta> | |
46 | 54 | </Card> |
47 | 55 | </Card> |
48 | 56 | </template> |
... | ... | @@ -52,6 +60,9 @@ |
52 | 60 | import { Card, AnchorLink, List, ListItem, ListItemMeta, Avatar, CardMeta } from 'ant-design-vue'; |
53 | 61 | import { useUserStore } from '/@/store/modules/user'; |
54 | 62 | import { getEnterPriseDetail } from '/@/api/oem'; |
63 | + import { notifyMyGetrPageApi } from '/@/api/stationnotification/stationnotifyApi'; | |
64 | + import { Time } from '/@/components/Time'; | |
65 | + import { useGo } from '/@/hooks/web/usePage'; | |
55 | 66 | export default defineComponent({ |
56 | 67 | components: { |
57 | 68 | Card, |
... | ... | @@ -60,6 +71,7 @@ |
60 | 71 | ListItem, |
61 | 72 | ListItemMeta, |
62 | 73 | Avatar, |
74 | + Time, | |
63 | 75 | CardMeta, |
64 | 76 | }, |
65 | 77 | setup() { |
... | ... | @@ -90,57 +102,13 @@ |
90 | 102 | const tabListTitle = [ |
91 | 103 | { |
92 | 104 | key: 'tab1', |
93 | - tab: '通知公告', | |
94 | - }, | |
95 | - { | |
96 | - key: 'tab2', | |
97 | - tab: '系统公告', | |
105 | + tab: '我的通知', | |
98 | 106 | }, |
99 | 107 | ]; |
100 | 108 | const onTabChange = (key) => { |
101 | 109 | activeKey.value = key; |
102 | 110 | }; |
103 | 111 | |
104 | - // 列表 | |
105 | - interface DataItem { | |
106 | - title: string; | |
107 | - description: string; | |
108 | - avatar: string; | |
109 | - date: string; | |
110 | - } | |
111 | - const data: DataItem[] = [ | |
112 | - { | |
113 | - title: '企业管理员', | |
114 | - description: '现在就来开创新的记录吧!', | |
115 | - avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', | |
116 | - date: '5分钟前', | |
117 | - }, | |
118 | - { | |
119 | - title: '企业管理员', | |
120 | - description: '有新的告警数据需要处理,现在去查看吧', | |
121 | - avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', | |
122 | - date: '7小时前', | |
123 | - }, | |
124 | - { | |
125 | - title: '管理员', | |
126 | - description: '有新的告警数据需要处理,现在去查看吧', | |
127 | - avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', | |
128 | - date: '6小时前', | |
129 | - }, | |
130 | - { | |
131 | - title: '管理员', | |
132 | - description: '现在就来开创新的记录吧!', | |
133 | - avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', | |
134 | - date: '1小时前', | |
135 | - }, | |
136 | - { | |
137 | - title: '管理员', | |
138 | - description: '现在就来开创新的记录吧!', | |
139 | - avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', | |
140 | - date: '7小时前', | |
141 | - }, | |
142 | - ]; | |
143 | - | |
144 | 112 | const userStore = useUserStore(); |
145 | 113 | const getContacts = computed(() => { |
146 | 114 | return userStore.enterPriseInfo?.contacts; |
... | ... | @@ -155,19 +123,32 @@ |
155 | 123 | return userStore.enterPriseInfo?.qrCode; |
156 | 124 | }); |
157 | 125 | |
126 | + // 通知数据 | |
127 | + const dataSource = ref([]); | |
128 | + const go = useGo(); | |
129 | + onMounted(async () => { | |
130 | + const res = await notifyMyGetrPageApi({ page: 1, pageSize: 5 }); | |
131 | + dataSource.value = res.items; | |
132 | + }); | |
133 | + | |
158 | 134 | return { |
159 | 135 | activeKey, |
160 | 136 | tabListTitle, |
161 | 137 | onTabChange, |
162 | - data, | |
163 | 138 | helpDoc, |
164 | 139 | getQrCode, |
165 | 140 | getContacts, |
166 | 141 | getAddress, |
167 | 142 | getTel, |
143 | + dataSource, | |
144 | + go, | |
168 | 145 | }; |
169 | 146 | }, |
170 | 147 | }); |
171 | 148 | </script> |
172 | 149 | |
173 | -<style lang="less" scoped></style> | |
150 | +<style lang="less" scoped> | |
151 | + .noticeTitle:hover { | |
152 | + border-bottom: 1px solid #ccc; | |
153 | + } | |
154 | +</style> | ... | ... |
... | ... | @@ -34,7 +34,7 @@ |
34 | 34 | import { useDrawerInner } from '/@/components/Drawer'; |
35 | 35 | import { columns, searchFormSchema } from './email.data'; |
36 | 36 | import { useMessage } from '/@/hooks/web/useMessage'; |
37 | - import { deleteSmsLog, mailLogPage } from '/@/api/message/records'; | |
37 | + import { deleteSmsLog, mailLogPage, deleteMailLog } from '/@/api/message/records'; | |
38 | 38 | import { useModal } from '/@/components/Modal'; |
39 | 39 | import EmailDetail from '/@/views/message/records/item/EmailDetail.vue'; |
40 | 40 | export default defineComponent({ |
... | ... | @@ -77,7 +77,7 @@ |
77 | 77 | |
78 | 78 | function handleDelete(record: Recordable) { |
79 | 79 | let ids = [record.id]; |
80 | - deleteSmsLog(ids).then((result) => { | |
80 | + deleteMailLog(ids).then((result) => { | |
81 | 81 | createMessage.success(result.message); |
82 | 82 | handleSuccess(); |
83 | 83 | }); | ... | ... |
1 | +<template> | |
2 | + <div> | |
3 | + <BasicModal | |
4 | + v-bind="$attrs" | |
5 | + @register="registerModal" | |
6 | + :showFooter="false" | |
7 | + :title="dataSource?.sysNotice?.title" | |
8 | + width="50%" | |
9 | + centered | |
10 | + :showCancelBtn="false" | |
11 | + :showOkBtn="false" | |
12 | + @cancel="handleClose" | |
13 | + > | |
14 | + <PageWrapper dense contentFullHeight contentBackground> | |
15 | + <div class="detail-notice-info"> | |
16 | + <span class="mr-6" | |
17 | + ><UserOutlined class="mr-2" />发送者:{{ dataSource?.user?.realName }}</span | |
18 | + > | |
19 | + <span class="mr-6" | |
20 | + ><SolutionOutlined class="mr-2" />通知类型:{{ | |
21 | + dataSource?.sysNotice?.type === 'NOTICE' | |
22 | + ? '公告' | |
23 | + : dataSource?.sysNotice?.type === 'MEETING' | |
24 | + ? '会议' | |
25 | + : dataSource?.sysNotice?.type === 'OTHER' | |
26 | + ? '其他' | |
27 | + : '' | |
28 | + }}</span | |
29 | + > | |
30 | + <span class="mr-6" | |
31 | + ><FieldTimeOutlined class="mr-2" />发送时间{{ dataSource?.sysNotice.senderDate }}</span | |
32 | + > | |
33 | + </div> | |
34 | + <p v-html="dataSource?.sysNotice?.content"></p> | |
35 | + </PageWrapper> | |
36 | + </BasicModal> | |
37 | + </div> | |
38 | +</template> | |
39 | +<script lang="ts"> | |
40 | + import { defineComponent, ref, unref } from 'vue'; | |
41 | + import { BasicModal, useModalInner } from '/@/components/Modal'; | |
42 | + import { UserOutlined, SolutionOutlined, FieldTimeOutlined } from '@ant-design/icons-vue'; | |
43 | + import { PageWrapper } from '/@/components/Page'; | |
44 | + import { notifyMyGetDetailApi } from '/@/api/stationnotification/stationnotifyApi'; | |
45 | + export default defineComponent({ | |
46 | + name: 'MyNoticeDrawer', | |
47 | + components: { BasicModal, PageWrapper, UserOutlined, SolutionOutlined, FieldTimeOutlined }, | |
48 | + emits: ['success', 'register'], | |
49 | + setup(_, { emit }) { | |
50 | + const dataSource = ref(); | |
51 | + const [registerModal] = useModalInner(async (data) => { | |
52 | + dataSource.value = data.record; | |
53 | + }); | |
54 | + const handleClose = async () => { | |
55 | + await notifyMyGetDetailApi(unref(dataSource).id); | |
56 | + emit('success'); | |
57 | + }; | |
58 | + return { | |
59 | + registerModal, | |
60 | + handleClose, | |
61 | + dataSource, | |
62 | + }; | |
63 | + }, | |
64 | + }); | |
65 | +</script> | |
66 | + | |
67 | +<style lang="less" scoped> | |
68 | + .detail-notice-info { | |
69 | + color: #999; | |
70 | + border-top: 1px solid #ccc; | |
71 | + border-bottom: 1px solid #ccc; | |
72 | + padding-top: 5px; | |
73 | + padding-bottom: 5px; | |
74 | + } | |
75 | +</style> | ... | ... |
... | ... | @@ -7,11 +7,8 @@ import { h } from 'vue'; |
7 | 7 | export const columns: BasicColumn[] = [ |
8 | 8 | { |
9 | 9 | title: '标题', |
10 | - dataIndex: 'title', | |
10 | + dataIndex: 'sysNotice.title', | |
11 | 11 | width: 200, |
12 | - format: (text: string, record: Recordable) => { | |
13 | - return record.sysNotice.title ?? '无'; | |
14 | - }, | |
15 | 12 | }, |
16 | 13 | { |
17 | 14 | title: '类型', |
... | ... | @@ -29,15 +26,12 @@ export const columns: BasicColumn[] = [ |
29 | 26 | }, |
30 | 27 | { |
31 | 28 | title: '发送者', |
32 | - dataIndex: 'senderName', | |
29 | + dataIndex: 'user.realName', | |
33 | 30 | width: 200, |
34 | - format: (text: string, record: Recordable) => { | |
35 | - return record.sysNotice.senderName ?? '无'; | |
36 | - }, | |
37 | 31 | }, |
38 | 32 | { |
39 | 33 | title: '发送时间', |
40 | - dataIndex: 'createTime', | |
34 | + dataIndex: 'sysNotice.senderDate', | |
41 | 35 | width: 200, |
42 | 36 | }, |
43 | 37 | { | ... | ... |
... | ... | @@ -14,21 +14,21 @@ |
14 | 14 | /> |
15 | 15 | </template> |
16 | 16 | </BasicTable> |
17 | - <NotifyDetailDrawer @register="registerDrawer" @success="handleSuccess" /> | |
17 | + <CatNoticeModal @register="registerModal" @success="handleSuccess" /> | |
18 | 18 | </div> |
19 | 19 | </template> |
20 | 20 | <script lang="ts"> |
21 | 21 | import { defineComponent } from 'vue'; |
22 | 22 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
23 | - import { useDrawer } from '/@/components/Drawer'; | |
24 | - import NotifyDetailDrawer from './useDrawer.vue'; | |
23 | + import { useModal } from '/@/components/Modal'; | |
24 | + import CatNoticeModal from './CatNoticeModal.vue'; | |
25 | 25 | import { columns, searchFormSchema } from './config.d'; |
26 | 26 | import { notifyMyGetrPageApi } from '/@/api/stationnotification/stationnotifyApi'; |
27 | 27 | export default defineComponent({ |
28 | 28 | name: 'LoginForm', |
29 | - components: { BasicTable, NotifyDetailDrawer, TableAction }, | |
29 | + components: { BasicTable, CatNoticeModal, TableAction }, | |
30 | 30 | setup() { |
31 | - const [registerDrawer, { openDrawer }] = useDrawer(); | |
31 | + const [registerModal, { openModal }] = useModal(); | |
32 | 32 | const [registerTable, { reload }] = useTable({ |
33 | 33 | api: notifyMyGetrPageApi, |
34 | 34 | columns, |
... | ... | @@ -50,7 +50,7 @@ |
50 | 50 | }); |
51 | 51 | |
52 | 52 | function handleView(record: Recordable) { |
53 | - openDrawer(true, { | |
53 | + openModal(true, { | |
54 | 54 | record, |
55 | 55 | }); |
56 | 56 | } |
... | ... | @@ -60,7 +60,7 @@ |
60 | 60 | } |
61 | 61 | return { |
62 | 62 | registerTable, |
63 | - registerDrawer, | |
63 | + registerModal, | |
64 | 64 | handleView, |
65 | 65 | handleSuccess, |
66 | 66 | }; | ... | ... |
src/views/stationnotification/mynotification/useDrawer.vue
deleted
100644 → 0
1 | -<template> | |
2 | - <div> | |
3 | - <BasicDrawer | |
4 | - v-bind="$attrs" | |
5 | - @register="registerDrawer" | |
6 | - :showFooter="false" | |
7 | - title="通知详情" | |
8 | - width="70%" | |
9 | - @close="handleClose" | |
10 | - > | |
11 | - <div v-html="DescInfo?.content"></div> | |
12 | - <Description @register="registerDesc" /> | |
13 | - </BasicDrawer> | |
14 | - </div> | |
15 | -</template> | |
16 | -<script lang="ts"> | |
17 | - import { defineComponent, ref } from 'vue'; | |
18 | - import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | |
19 | - import { Description, useDescription } from '/@/components/Description/index'; | |
20 | - import { DescDetailSchema } from './config.d'; | |
21 | - import { | |
22 | - noticeByIdGetInfo, | |
23 | - notifyMyGetDetailApi, | |
24 | - } from '/@/api/stationnotification/stationnotifyApi'; | |
25 | - export default defineComponent({ | |
26 | - name: 'MyNoticeDrawer', | |
27 | - components: { BasicDrawer, Description }, | |
28 | - emits: ['success', 'register'], | |
29 | - setup(_, { emit }) { | |
30 | - const dataSource = ref(); | |
31 | - let DescInfo = ref(); | |
32 | - const [registerDrawer] = useDrawerInner(async (data) => { | |
33 | - dataSource.value = data.record; | |
34 | - const id = data.record.noticeId; | |
35 | - let getDescInfo = await noticeByIdGetInfo(id); | |
36 | - DescInfo.value = getDescInfo; | |
37 | - }); | |
38 | - const [registerDesc] = useDescription({ | |
39 | - bordered: false, | |
40 | - schema: DescDetailSchema, | |
41 | - data: dataSource, | |
42 | - }); | |
43 | - const handleClose = async () => { | |
44 | - await notifyMyGetDetailApi(dataSource.value.id); | |
45 | - emit('success'); | |
46 | - }; | |
47 | - return { | |
48 | - DescInfo, | |
49 | - registerDesc, | |
50 | - registerDrawer, | |
51 | - handleClose, | |
52 | - }; | |
53 | - }, | |
54 | - }); | |
55 | -</script> |
1 | 1 | <template> |
2 | 2 | <div> |
3 | - <BasicTable | |
4 | - :rowSelection="{ type: 'checkbox' }" | |
5 | - @selection-change="useSelectionChange" | |
6 | - @register="registerTable" | |
7 | - > | |
3 | + <BasicTable @register="registerTable"> | |
8 | 4 | <template #toolbar> |
9 | 5 | <a-button type="primary" @click="handleAdd"> 新增 </a-button> |
10 | - <a-button color="error" @click="handleToolbarDel"> 删除 </a-button> | |
6 | + <a-button color="error" @click="handleToolbarDel" :disabled="hasBatchDelete"> | |
7 | + 批量删除 | |
8 | + </a-button> | |
11 | 9 | </template> |
12 | 10 | <template #action="{ record }"> |
13 | 11 | <TableAction |
... | ... | @@ -46,7 +44,7 @@ |
46 | 44 | </div> |
47 | 45 | </template> |
48 | 46 | <script lang="ts"> |
49 | - import { defineComponent, reactive } from 'vue'; | |
47 | + import { defineComponent, computed, unref, ref } from 'vue'; | |
50 | 48 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
51 | 49 | import { useDrawer } from '/@/components/Drawer'; |
52 | 50 | import NotifyManagerDrawer from './useDrawer.vue'; |
... | ... | @@ -56,15 +54,27 @@ |
56 | 54 | import { notifyGetTableApi, notifyDeleteApi } from '/@/api/stationnotification/stationnotifyApi'; |
57 | 55 | |
58 | 56 | export default defineComponent({ |
59 | - name: 'Index', | |
57 | + name: 'Notificationmannager', | |
60 | 58 | components: { BasicTable, NotifyManagerDrawer, TableAction, tableViewChild }, |
61 | 59 | setup() { |
62 | - let selectedRowKeys = reactive<string[]>([]); | |
63 | - | |
64 | 60 | const [registerDrawer, { openDrawer }] = useDrawer(); |
65 | 61 | const [registerAdd, { openDrawer: openDrawerAdd }] = useDrawer(); |
66 | 62 | const { createMessage } = useMessage(); |
67 | - const [registerTable, { reload, getSelectRowKeys }] = useTable({ | |
63 | + // 批量删除 | |
64 | + const selectedRowIds = ref<string[]>([]); | |
65 | + const hasBatchDelete = computed(() => unref(selectedRowIds).length <= 0); | |
66 | + const onSelectRowChange = (selectedRowKeys: string[]) => { | |
67 | + selectedRowIds.value = selectedRowKeys; | |
68 | + console.log(selectedRowKeys); | |
69 | + }; | |
70 | + async function handleToolbarDel() { | |
71 | + await notifyDeleteApi(selectedRowIds.value); | |
72 | + createMessage.success('批量删除成功'); | |
73 | + selectedRowIds.value = []; | |
74 | + reload(); | |
75 | + } | |
76 | + | |
77 | + const [registerTable, { reload }] = useTable({ | |
68 | 78 | clickToRowSelect: false, |
69 | 79 | api: notifyGetTableApi, |
70 | 80 | columns, |
... | ... | @@ -72,6 +82,10 @@ |
72 | 82 | labelWidth: 120, |
73 | 83 | schemas: searchFormSchema, |
74 | 84 | }, |
85 | + rowSelection: { | |
86 | + onChange: onSelectRowChange, | |
87 | + type: 'checkbox', | |
88 | + }, | |
75 | 89 | rowKey: 'id', |
76 | 90 | useSearchForm: true, |
77 | 91 | showTableSetting: true, |
... | ... | @@ -92,15 +106,6 @@ |
92 | 106 | }); |
93 | 107 | } |
94 | 108 | |
95 | - const useSelectionChange = () => { | |
96 | - selectedRowKeys = getSelectRowKeys(); | |
97 | - }; | |
98 | - | |
99 | - async function handleToolbarDel() { | |
100 | - await notifyDeleteApi(selectedRowKeys); | |
101 | - createMessage.success('删除成功'); | |
102 | - reload(); | |
103 | - } | |
104 | 109 | const handleView = (record: Recordable) => { |
105 | 110 | openDrawer(true, { |
106 | 111 | record, |
... | ... | @@ -122,9 +127,9 @@ |
122 | 127 | reload(); |
123 | 128 | } |
124 | 129 | return { |
130 | + hasBatchDelete, | |
125 | 131 | handleView, |
126 | 132 | registerAdd, |
127 | - useSelectionChange, | |
128 | 133 | registerTable, |
129 | 134 | registerDrawer, |
130 | 135 | handleAdd, |
... | ... | @@ -132,6 +137,7 @@ |
132 | 137 | handleEdit, |
133 | 138 | handleDelete, |
134 | 139 | handleSuccess, |
140 | + onSelectRowChange, | |
135 | 141 | }; |
136 | 142 | }, |
137 | 143 | }); | ... | ... |
... | ... | @@ -37,22 +37,22 @@ |
37 | 37 | label: '发送者', |
38 | 38 | }, |
39 | 39 | { |
40 | - field: 'senderDate', | |
41 | - label: '发送时间', | |
42 | - }, | |
43 | - { | |
44 | 40 | field: 'type', |
45 | 41 | label: '类型:', |
46 | - render: (_, data) => { | |
47 | - return data.type === 'NOTICE' | |
42 | + render: (_, { type }) => { | |
43 | + return type === 'NOTICE' | |
48 | 44 | ? '公告' |
49 | - : data.type === 'MEETING' | |
45 | + : type === 'MEETING' | |
50 | 46 | ? '会议' |
51 | - : data.type === 'OTHER' | |
47 | + : type === 'OTHER' | |
52 | 48 | ? '其他' |
53 | 49 | : ''; |
54 | 50 | }, |
55 | 51 | }, |
52 | + { | |
53 | + field: 'senderDate', | |
54 | + label: '发送时间', | |
55 | + }, | |
56 | 56 | ]; |
57 | 57 | export default defineComponent({ |
58 | 58 | name: 'ConfigDrawer', | ... | ... |