Showing
8 changed files
with
69 additions
and
27 deletions
@@ -48,6 +48,7 @@ | @@ -48,6 +48,7 @@ | ||
48 | 'update:value', | 48 | 'update:value', |
49 | 'change', | 49 | 'change', |
50 | 'check', | 50 | 'check', |
51 | + 'unSelectAll', | ||
51 | 'update:searchValue', | 52 | 'update:searchValue', |
52 | ], | 53 | ], |
53 | setup(props, { attrs, slots, emit, expose }) { | 54 | setup(props, { attrs, slots, emit, expose }) { |
@@ -188,6 +189,7 @@ | @@ -188,6 +189,7 @@ | ||
188 | } | 189 | } |
189 | 190 | ||
190 | function checkAll(checkAll: boolean) { | 191 | function checkAll(checkAll: boolean) { |
192 | + if (!checkAll) emit('unSelectAll'); | ||
191 | state.checkedKeys = checkAll ? getEnabledKeys() : ([] as Keys); | 193 | state.checkedKeys = checkAll ? getEnabledKeys() : ([] as Keys); |
192 | } | 194 | } |
193 | 195 |
@@ -22,6 +22,16 @@ export enum ConfigurationPermission { | @@ -22,6 +22,16 @@ export enum ConfigurationPermission { | ||
22 | PREVIEW = 'api:yt:dataview:center:get_configuration_info:preview', | 22 | PREVIEW = 'api:yt:dataview:center:get_configuration_info:preview', |
23 | PUBLISH = 'api:yt:dataview:center:publish', | 23 | PUBLISH = 'api:yt:dataview:center:publish', |
24 | // CANCEL_PUBLISH = 'api:yt:dataview:center:cancel_publish', | 24 | // CANCEL_PUBLISH = 'api:yt:dataview:center:cancel_publish', |
25 | + PUBLISH_INTERFACE = 'api:yt:dataview:center:public_interface', | ||
26 | +} | ||
27 | + | ||
28 | +export enum PublicInterface { | ||
29 | + CREATE = 'api:yt:dataview:center:public_interface:post', | ||
30 | + LIST = 'api:yt:dataview:center:public_interface:list', | ||
31 | + UPDATE = 'api:yt:dataview:center:public_interface:update', | ||
32 | + DELETE = 'api:yt:dataview:center:public_interface:delete', | ||
33 | + PUBLISH = 'api:yt:dataview:center:public_interface:publish', | ||
34 | + CANCEL_PUBLISH = 'api:yt:dataview:center:public_interface:cancel', | ||
25 | } | 35 | } |
26 | 36 | ||
27 | // 查询字段 | 37 | // 查询字段 |
@@ -218,7 +218,10 @@ | @@ -218,7 +218,10 @@ | ||
218 | <Authority v-if="!isCustomerUser" :value="ConfigurationPermission.CREATE"> | 218 | <Authority v-if="!isCustomerUser" :value="ConfigurationPermission.CREATE"> |
219 | <Button type="primary" @click="handleCreateOrUpdate()"> 新增大屏 </Button> | 219 | <Button type="primary" @click="handleCreateOrUpdate()"> 新增大屏 </Button> |
220 | </Authority> | 220 | </Authority> |
221 | - <Authority v-if="hasPublicInterfacePermission" :value="ConfigurationPermission.CREATE"> | 221 | + <Authority |
222 | + v-if="hasPublicInterfacePermission" | ||
223 | + :value="ConfigurationPermission.PUBLISH_INTERFACE" | ||
224 | + > | ||
222 | <Button type="primary" @click="handleCreateOrUpdatePublicApi()">公共接口管理</Button> | 225 | <Button type="primary" @click="handleCreateOrUpdatePublicApi()">公共接口管理</Button> |
223 | </Authority> | 226 | </Authority> |
224 | <CardLayoutButton v-model:value="listColumn" @change="handleCardLayoutChange" /> | 227 | <CardLayoutButton v-model:value="listColumn" @change="handleCardLayoutChange" /> |
@@ -9,23 +9,30 @@ | @@ -9,23 +9,30 @@ | ||
9 | <a-button type="link" class="ml-2" @click="handleRecordContent(record)"> 查看 </a-button> | 9 | <a-button type="link" class="ml-2" @click="handleRecordContent(record)"> 查看 </a-button> |
10 | </template> | 10 | </template> |
11 | <template #toolbar> | 11 | <template #toolbar> |
12 | - <a-button type="primary" @click="handleCreateOrEdit(null)"> 新增公共接口 </a-button> | ||
13 | - <Popconfirm | ||
14 | - title="您确定要批量删除数据" | ||
15 | - ok-text="确定" | ||
16 | - cancel-text="取消" | ||
17 | - @confirm="handleDeleteOrBatchDelete(null)" | ||
18 | - > | ||
19 | - <a-button color="error" :disabled="hasBatchDelete"> 批量删除 </a-button> | ||
20 | - </Popconfirm> | ||
21 | - <Popconfirm | ||
22 | - title="您确定要批量发布" | ||
23 | - ok-text="确定" | ||
24 | - cancel-text="取消" | ||
25 | - @confirm="handleBatchPublish('batchPublish')" | ||
26 | - > | ||
27 | - <a-button color="error" :disabled="hasBatchPublish"> 批量发布 </a-button> | ||
28 | - </Popconfirm> | 12 | + <Authority :value="PublicInterface.CREATE"> |
13 | + <a-button type="primary" @click="handleCreateOrEdit(null)"> 新增公共接口 </a-button> | ||
14 | + </Authority> | ||
15 | + | ||
16 | + <Authority :value="PublicInterface.DELETE"> | ||
17 | + <Popconfirm | ||
18 | + title="您确定要批量删除数据" | ||
19 | + ok-text="确定" | ||
20 | + cancel-text="取消" | ||
21 | + @confirm="handleDeleteOrBatchDelete(null)" | ||
22 | + > | ||
23 | + <a-button color="error" :disabled="hasBatchDelete"> 批量删除 </a-button> | ||
24 | + </Popconfirm> | ||
25 | + </Authority> | ||
26 | + <Authority :value="PublicInterface.PUBLISH"> | ||
27 | + <Popconfirm | ||
28 | + title="您确定要批量发布" | ||
29 | + ok-text="确定" | ||
30 | + cancel-text="取消" | ||
31 | + @confirm="handleBatchPublish('batchPublish')" | ||
32 | + > | ||
33 | + <a-button color="error" :disabled="hasBatchPublish"> 批量发布 </a-button> | ||
34 | + </Popconfirm> | ||
35 | + </Authority> | ||
29 | <!-- <Popconfirm | 36 | <!-- <Popconfirm |
30 | title="您确定要批量取消发布" | 37 | title="您确定要批量取消发布" |
31 | ok-text="确定" | 38 | ok-text="确定" |
@@ -41,6 +48,7 @@ | @@ -41,6 +48,7 @@ | ||
41 | { | 48 | { |
42 | label: '发布', | 49 | label: '发布', |
43 | icon: 'ant-design:node-expand-outlined', | 50 | icon: 'ant-design:node-expand-outlined', |
51 | + auth: PublicInterface.PUBLISH, | ||
44 | onClick: handlePublish.bind(null, 'publish', record), | 52 | onClick: handlePublish.bind(null, 'publish', record), |
45 | ifShow: () => { | 53 | ifShow: () => { |
46 | return record.state === 0 && record.creator === userId; | 54 | return record.state === 0 && record.creator === userId; |
@@ -49,6 +57,7 @@ | @@ -49,6 +57,7 @@ | ||
49 | { | 57 | { |
50 | label: '取消发布', | 58 | label: '取消发布', |
51 | icon: 'ant-design:node-collapse-outlined', | 59 | icon: 'ant-design:node-collapse-outlined', |
60 | + auth: PublicInterface.CANCEL_PUBLISH, | ||
52 | onClick: handlePublish.bind(null, 'canelPublish', record), | 61 | onClick: handlePublish.bind(null, 'canelPublish', record), |
53 | ifShow: () => { | 62 | ifShow: () => { |
54 | return record.state === 1 && record.creator === userId; | 63 | return record.state === 1 && record.creator === userId; |
@@ -57,6 +66,7 @@ | @@ -57,6 +66,7 @@ | ||
57 | { | 66 | { |
58 | label: '修改', | 67 | label: '修改', |
59 | icon: 'clarity:note-edit-line', | 68 | icon: 'clarity:note-edit-line', |
69 | + auth: PublicInterface.UPDATE, | ||
60 | onClick: handleCreateOrEdit.bind(null, record), | 70 | onClick: handleCreateOrEdit.bind(null, record), |
61 | ifShow: () => { | 71 | ifShow: () => { |
62 | return record.state === 0 && record.creator === userId; | 72 | return record.state === 0 && record.creator === userId; |
@@ -65,6 +75,7 @@ | @@ -65,6 +75,7 @@ | ||
65 | { | 75 | { |
66 | label: '删除', | 76 | label: '删除', |
67 | icon: 'ant-design:delete-outlined', | 77 | icon: 'ant-design:delete-outlined', |
78 | + auth: PublicInterface.DELETE, | ||
68 | color: 'error', | 79 | color: 'error', |
69 | ifShow: () => { | 80 | ifShow: () => { |
70 | return record.state === 0 && record.creator === userId; | 81 | return record.state === 0 && record.creator === userId; |
@@ -99,6 +110,8 @@ | @@ -99,6 +110,8 @@ | ||
99 | import { useMessage } from '/@/hooks/web/useMessage'; | 110 | import { useMessage } from '/@/hooks/web/useMessage'; |
100 | import { USER_INFO_KEY } from '/@/enums/cacheEnum'; | 111 | import { USER_INFO_KEY } from '/@/enums/cacheEnum'; |
101 | import { getAuthCache } from '/@/utils/auth'; | 112 | import { getAuthCache } from '/@/utils/auth'; |
113 | + import { PublicInterface } from '../config'; | ||
114 | + import { Authority } from '/@/components/Authority'; | ||
102 | 115 | ||
103 | const userInfo = getAuthCache(USER_INFO_KEY) as any; | 116 | const userInfo = getAuthCache(USER_INFO_KEY) as any; |
104 | 117 | ||
@@ -119,7 +132,7 @@ | @@ -119,7 +132,7 @@ | ||
119 | }, | 132 | }, |
120 | useSearchForm: true, | 133 | useSearchForm: true, |
121 | actionColumn: { | 134 | actionColumn: { |
122 | - width: 150, | 135 | + width: 180, |
123 | title: '操作', | 136 | title: '操作', |
124 | dataIndex: 'action', | 137 | dataIndex: 'action', |
125 | slots: { customRender: 'action' }, | 138 | slots: { customRender: 'action' }, |
@@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
16 | :replaceFields="{ title: 'name', key: 'id' }" | 16 | :replaceFields="{ title: 'name', key: 'id' }" |
17 | :checkedKeys="roleMenus" | 17 | :checkedKeys="roleMenus" |
18 | @check="handleCheckClick" | 18 | @check="handleCheckClick" |
19 | + @unSelectAll="handleUnSelectAll" | ||
19 | checkable | 20 | checkable |
20 | toolbar | 21 | toolbar |
21 | ref="treeRef" | 22 | ref="treeRef" |
@@ -128,6 +129,11 @@ | @@ -128,6 +129,11 @@ | ||
128 | }); | 129 | }); |
129 | const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色')); | 130 | const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色')); |
130 | 131 | ||
132 | + // 取消全部的时候清除回显时获取的 | ||
133 | + const handleUnSelectAll = () => { | ||
134 | + checkedKeysWithHalfChecked.value = []; | ||
135 | + }; | ||
136 | + | ||
131 | async function handleSubmit() { | 137 | async function handleSubmit() { |
132 | setDrawerProps({ loading: true, confirmLoading: true }); | 138 | setDrawerProps({ loading: true, confirmLoading: true }); |
133 | const { createMessage } = useMessage(); | 139 | const { createMessage } = useMessage(); |
@@ -143,7 +149,9 @@ | @@ -143,7 +149,9 @@ | ||
143 | roleType: RoleEnum.TENANT_ADMIN, | 149 | roleType: RoleEnum.TENANT_ADMIN, |
144 | menu, | 150 | menu, |
145 | }; | 151 | }; |
146 | - if (req.menu == undefined) return createMessage.error('请勾选权限菜单'); | 152 | + // return; |
153 | + if (req.menu == undefined || !req.menu.length) | ||
154 | + return createMessage.error('请勾选权限菜单'); | ||
147 | const res = await saveOrUpdateRoleInfoWithMenu(req); | 155 | const res = await saveOrUpdateRoleInfoWithMenu(req); |
148 | if (res) { | 156 | if (res) { |
149 | closeDrawer(); | 157 | closeDrawer(); |
@@ -247,6 +255,7 @@ | @@ -247,6 +255,7 @@ | ||
247 | roleMenus, | 255 | roleMenus, |
248 | treeRef, | 256 | treeRef, |
249 | handleCheckClick, | 257 | handleCheckClick, |
258 | + handleUnSelectAll, | ||
250 | }; | 259 | }; |
251 | }, | 260 | }, |
252 | }); | 261 | }); |
@@ -9,6 +9,7 @@ export enum VisualBoardPermission { | @@ -9,6 +9,7 @@ export enum VisualBoardPermission { | ||
9 | UPDATE = 'api:yt:data_board:update:update', | 9 | UPDATE = 'api:yt:data_board:update:update', |
10 | DELETE = 'api:yt:data_board:delete', | 10 | DELETE = 'api:yt:data_board:delete', |
11 | CREATE = '', | 11 | CREATE = '', |
12 | + SHARE = 'api:yt:data_board:share', | ||
12 | DETAIL = 'api:yt:data_component:list', | 13 | DETAIL = 'api:yt:data_component:list', |
13 | } | 14 | } |
14 | 15 |
@@ -99,19 +99,22 @@ | @@ -99,19 +99,22 @@ | ||
99 | const dropMenuList = computed<DropMenu[]>(() => { | 99 | const dropMenuList = computed<DropMenu[]>(() => { |
100 | const hasUpdatePermission = hasPermission(VisualBoardPermission.UPDATE); | 100 | const hasUpdatePermission = hasPermission(VisualBoardPermission.UPDATE); |
101 | const hasDeletePermission = hasPermission(VisualBoardPermission.DELETE); | 101 | const hasDeletePermission = hasPermission(VisualBoardPermission.DELETE); |
102 | - const basicMenu: DropMenu[] = [ | ||
103 | - { | ||
104 | - text: '分享', | ||
105 | - event: MoreActionEvent.SHARE, | ||
106 | - icon: 'ant-design:share-alt-outlined', | ||
107 | - }, | ||
108 | - ]; | 102 | + const hasSharePermission = hasPermission(VisualBoardPermission.SHARE); |
103 | + let basicMenu: DropMenu[] = []; | ||
109 | if (hasUpdatePermission) | 104 | if (hasUpdatePermission) |
110 | basicMenu.push({ | 105 | basicMenu.push({ |
111 | text: '编辑', | 106 | text: '编辑', |
112 | event: MoreActionEvent.EDIT, | 107 | event: MoreActionEvent.EDIT, |
113 | icon: 'ant-design:edit-outlined', | 108 | icon: 'ant-design:edit-outlined', |
114 | }); | 109 | }); |
110 | + if (hasSharePermission) { | ||
111 | + basicMenu.push({ | ||
112 | + text: '分享', | ||
113 | + event: MoreActionEvent.SHARE, | ||
114 | + icon: 'ant-design:share-alt-outlined', | ||
115 | + }); | ||
116 | + } | ||
117 | + | ||
115 | if (hasDeletePermission) | 118 | if (hasDeletePermission) |
116 | basicMenu.push({ | 119 | basicMenu.push({ |
117 | text: '删除', | 120 | text: '删除', |
@@ -99,6 +99,7 @@ | @@ -99,6 +99,7 @@ | ||
99 | componentKey: TextComponent1Config.key, | 99 | componentKey: TextComponent1Config.key, |
100 | categoryKey: PackagesCategoryEnum.TEXT, | 100 | categoryKey: PackagesCategoryEnum.TEXT, |
101 | }; | 101 | }; |
102 | + activeKey.value = TabKeyEnum.BASIC; | ||
102 | dataSource.value = [genNewDataSourceItem()]; | 103 | dataSource.value = [genNewDataSourceItem()]; |
103 | } | 104 | } |
104 | } | 105 | } |