Commit 29c9a2a669c4309014e383b7d3e37a6a96ac81fb
Merge branch 'ft' into 'main'
fix:[DEFECT-314] 修复告警联系人删除提示问题 See merge request huang/yun-teng-iot-front!185
Showing
4 changed files
with
81 additions
and
33 deletions
| @@ -127,18 +127,14 @@ | @@ -127,18 +127,14 @@ | ||
| 127 | await deleteAlarmContact([record.id]); | 127 | await deleteAlarmContact([record.id]); | 
| 128 | createMessage.success('删除联系人成功'); | 128 | createMessage.success('删除联系人成功'); | 
| 129 | handleSuccess(); | 129 | handleSuccess(); | 
| 130 | - } catch (e) { | ||
| 131 | - createMessage.error('删除失败'); | ||
| 132 | - } | 130 | + } catch (e) {} | 
| 133 | } else { | 131 | } else { | 
| 134 | try { | 132 | try { | 
| 135 | await deleteAlarmContact(selectedRowIds.value); | 133 | await deleteAlarmContact(selectedRowIds.value); | 
| 136 | createMessage.success('批量删除联系人成功'); | 134 | createMessage.success('批量删除联系人成功'); | 
| 137 | selectedRowIds.value = []; | 135 | selectedRowIds.value = []; | 
| 138 | handleSuccess(); | 136 | handleSuccess(); | 
| 139 | - } catch (e) { | ||
| 140 | - createMessage.info('删除失败'); | ||
| 141 | - } | 137 | + } catch (e) {} | 
| 142 | } | 138 | } | 
| 143 | }; | 139 | }; | 
| 144 | 140 | 
| @@ -74,7 +74,7 @@ | @@ -74,7 +74,7 @@ | ||
| 74 | </div> | 74 | </div> | 
| 75 | </template> | 75 | </template> | 
| 76 | <script lang="ts"> | 76 | <script lang="ts"> | 
| 77 | - import { defineComponent, ref, nextTick, onUnmounted } from 'vue'; | 77 | + import { defineComponent, ref, nextTick, onUnmounted, reactive } from 'vue'; | 
| 78 | import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table'; | 78 | import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table'; | 
| 79 | import { columns, searchFormSchema } from './device.profile.data'; | 79 | import { columns, searchFormSchema } from './device.profile.data'; | 
| 80 | import { useMessage } from '/@/hooks/web/useMessage'; | 80 | import { useMessage } from '/@/hooks/web/useMessage'; | 
| @@ -93,7 +93,7 @@ | @@ -93,7 +93,7 @@ | ||
| 93 | components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel, TableImg }, | 93 | components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel, TableImg }, | 
| 94 | setup() { | 94 | setup() { | 
| 95 | const deviceDetailRef = ref(null); | 95 | const deviceDetailRef = ref(null); | 
| 96 | - let selectedRowKeys: any = []; | 96 | + let selectedRowKeys: any = reactive([]); | 
| 97 | const getPathUrl = ref(''); | 97 | const getPathUrl = ref(''); | 
| 98 | const getPathUrlName = ref(''); | 98 | const getPathUrlName = ref(''); | 
| 99 | const disabled = ref(true); | 99 | const disabled = ref(true); | 
| @@ -227,22 +227,30 @@ | @@ -227,22 +227,30 @@ | ||
| 227 | }, 10); | 227 | }, 10); | 
| 228 | } | 228 | } | 
| 229 | const useSelectionChange = () => { | 229 | const useSelectionChange = () => { | 
| 230 | - selectedRowKeys = getSelectRows(); | ||
| 231 | - if (selectedRowKeys.length > 0) { | ||
| 232 | - disabled.value = false; | 230 | + let getRows = getSelectRows(); | 
| 231 | + const isJudge = getRows.map((m) => m.default); | ||
| 232 | + if (isJudge.includes(true)) { | ||
| 233 | + disabled.value = true; | ||
| 233 | } else { | 234 | } else { | 
| 235 | + disabled.value = false; | ||
| 236 | + } | ||
| 237 | + if (isJudge.length === 0) { | ||
| 234 | disabled.value = true; | 238 | disabled.value = true; | 
| 235 | } | 239 | } | 
| 236 | - }; | ||
| 237 | - async function handleTableDel() { | ||
| 238 | - selectedRowKeys = selectedRowKeys | ||
| 239 | - .filter((f: any) => f.default !== true) | ||
| 240 | - .map((m: any) => m.id); | ||
| 241 | - await deviceConfigDelete(selectedRowKeys); | ||
| 242 | - createMessage.success('删除成功'); | ||
| 243 | - handleSuccess(); | ||
| 244 | selectedRowKeys.length = 0; | 240 | selectedRowKeys.length = 0; | 
| 245 | - } | 241 | + selectedRowKeys = getRows.filter((f) => f.default !== true).map((m) => m.id); | 
| 242 | + }; | ||
| 243 | + const handleTableDel = () => { | ||
| 244 | + deviceConfigDelete(selectedRowKeys) | ||
| 245 | + .then((res) => { | ||
| 246 | + createMessage.success('删除成功'); | ||
| 247 | + selectedRowKeys.length = 0; | ||
| 248 | + handleSuccess(); | ||
| 249 | + }) | ||
| 250 | + .catch((e) => { | ||
| 251 | + selectedRowKeys.length = 0; | ||
| 252 | + }); | ||
| 253 | + }; | ||
| 246 | 254 | ||
| 247 | function handleDelete(record: Recordable) { | 255 | function handleDelete(record: Recordable) { | 
| 248 | let ids = [record.id]; | 256 | let ids = [record.id]; | 
| 1 | <template> | 1 | <template> | 
| 2 | <div> | 2 | <div> | 
| 3 | - <BasicTable @register="registerTable"> | 3 | + <BasicTable | 
| 4 | + :rowSelection="{ type: 'checkbox' }" | ||
| 5 | + @selection-change="useSelectionChange" | ||
| 6 | + @register="registerTable" | ||
| 7 | + > | ||
| 4 | <template #toolbar> | 8 | <template #toolbar> | 
| 5 | <a-button type="primary" @click="handleCreate">新增角色</a-button> | 9 | <a-button type="primary" @click="handleCreate">新增角色</a-button> | 
| 6 | - <a-button color="error" @click="handleDeleteOrBatchDelete(null)" :disabled="hasBatchDelete"> | 10 | + <a-button color="error" @click="handleDeleteOrBatchDelete(null)" :disabled="isStatus"> | 
| 7 | 批量删除 | 11 | 批量删除 | 
| 8 | </a-button> | 12 | </a-button> | 
| 9 | </template> | 13 | </template> | 
| @@ -33,24 +37,25 @@ | @@ -33,24 +37,25 @@ | ||
| 33 | </div> | 37 | </div> | 
| 34 | </template> | 38 | </template> | 
| 35 | <script lang="ts"> | 39 | <script lang="ts"> | 
| 36 | - import { defineComponent } from 'vue'; | 40 | + import { defineComponent, ref } from 'vue'; | 
| 37 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; | 41 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; | 
| 38 | import { delRole, getRoleListByPage } from '/@/api/system/system'; | 42 | import { delRole, getRoleListByPage } from '/@/api/system/system'; | 
| 39 | import { useDrawer } from '/@/components/Drawer'; | 43 | import { useDrawer } from '/@/components/Drawer'; | 
| 40 | import RoleDrawer from './RoleDrawer.vue'; | 44 | import RoleDrawer from './RoleDrawer.vue'; | 
| 41 | import { columns, searchFormSchema } from './role.data'; | 45 | import { columns, searchFormSchema } from './role.data'; | 
| 42 | import { RoleEnum } from '/@/enums/roleEnum'; | 46 | import { RoleEnum } from '/@/enums/roleEnum'; | 
| 43 | - import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; | 47 | + import { useMessage } from '/@/hooks/web/useMessage'; | 
| 48 | + | ||
| 44 | export default defineComponent({ | 49 | export default defineComponent({ | 
| 45 | name: 'RoleManagement', | 50 | name: 'RoleManagement', | 
| 46 | components: { BasicTable, RoleDrawer, TableAction }, | 51 | components: { BasicTable, RoleDrawer, TableAction }, | 
| 47 | setup() { | 52 | setup() { | 
| 53 | + const { createMessage } = useMessage(); | ||
| 48 | const [registerDrawer, { openDrawer }] = useDrawer(); | 54 | const [registerDrawer, { openDrawer }] = useDrawer(); | 
| 49 | - const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete( | ||
| 50 | - delRole, | ||
| 51 | - handleSuccess | ||
| 52 | - ); | ||
| 53 | - const [registerTable, { reload }] = useTable({ | 55 | + const isStatus = ref(true); | 
| 56 | + let selectArray: any = []; | ||
| 57 | + | ||
| 58 | + const [registerTable, { reload, getSelectRows }] = useTable({ | ||
| 54 | title: '角色列表', | 59 | title: '角色列表', | 
| 55 | api: getRoleListByPage, | 60 | api: getRoleListByPage, | 
| 56 | columns, | 61 | columns, | 
| @@ -69,7 +74,6 @@ | @@ -69,7 +74,6 @@ | ||
| 69 | slots: { customRender: 'action' }, | 74 | slots: { customRender: 'action' }, | 
| 70 | fixed: 'right', | 75 | fixed: 'right', | 
| 71 | }, | 76 | }, | 
| 72 | - ...selectionOptions, | ||
| 73 | }); | 77 | }); | 
| 74 | 78 | ||
| 75 | function handleCreate() { | 79 | function handleCreate() { | 
| @@ -88,6 +92,41 @@ | @@ -88,6 +92,41 @@ | ||
| 88 | reload(); | 92 | reload(); | 
| 89 | } | 93 | } | 
| 90 | 94 | ||
| 95 | + const useSelectionChange = () => { | ||
| 96 | + let getRows = getSelectRows(); | ||
| 97 | + const isJudge = getRows.map((m) => m.roleType); | ||
| 98 | + if (isJudge.includes('SYS_ADMIN')) { | ||
| 99 | + isStatus.value = true; | ||
| 100 | + } else { | ||
| 101 | + isStatus.value = false; | ||
| 102 | + } | ||
| 103 | + if (isJudge.length === 0) { | ||
| 104 | + isStatus.value = true; | ||
| 105 | + } | ||
| 106 | + selectArray = getRows.filter((f) => f.status !== 'SYS_ADMIN').map((m) => m.id); | ||
| 107 | + }; | ||
| 108 | + | ||
| 109 | + const handleDeleteOrBatchDelete = async (record: Recordable | null) => { | ||
| 110 | + if (record) { | ||
| 111 | + try { | ||
| 112 | + await delRole([record.id]); | ||
| 113 | + createMessage.success('删除成功'); | ||
| 114 | + handleSuccess(); | ||
| 115 | + } catch (e: any) {} | ||
| 116 | + } else { | ||
| 117 | + try { | ||
| 118 | + await delRole(selectArray); | ||
| 119 | + createMessage.success('批量删除成功'); | ||
| 120 | + handleSuccess(); | ||
| 121 | + selectArray.length = 0; | ||
| 122 | + } catch (e: any) { | ||
| 123 | + selectArray.length = 0; | ||
| 124 | + } finally { | ||
| 125 | + selectArray.length = 0; | ||
| 126 | + } | ||
| 127 | + } | ||
| 128 | + }; | ||
| 129 | + | ||
| 91 | return { | 130 | return { | 
| 92 | registerTable, | 131 | registerTable, | 
| 93 | registerDrawer, | 132 | registerDrawer, | 
| @@ -95,8 +134,9 @@ | @@ -95,8 +134,9 @@ | ||
| 95 | handleEdit, | 134 | handleEdit, | 
| 96 | handleSuccess, | 135 | handleSuccess, | 
| 97 | RoleEnum, | 136 | RoleEnum, | 
| 98 | - hasBatchDelete, | ||
| 99 | handleDeleteOrBatchDelete, | 137 | handleDeleteOrBatchDelete, | 
| 138 | + isStatus, | ||
| 139 | + useSelectionChange, | ||
| 100 | }; | 140 | }; | 
| 101 | }, | 141 | }, | 
| 102 | }); | 142 | }); | 
| @@ -111,9 +111,13 @@ | @@ -111,9 +111,13 @@ | ||
| 111 | } | 111 | } | 
| 112 | const useSelectionChange = () => { | 112 | const useSelectionChange = () => { | 
| 113 | selectedRowKeys = getSelectRows(); | 113 | selectedRowKeys = getSelectRows(); | 
| 114 | - if (selectedRowKeys.length !== 0) { | ||
| 115 | - disabled.value = false; | 114 | + let isJudge = selectedRowKeys.map((m: any) => m.default); | 
| 115 | + if (isJudge.includes(true)) { | ||
| 116 | + disabled.value = true; | ||
| 116 | } else { | 117 | } else { | 
| 118 | + disabled.value = false; | ||
| 119 | + } | ||
| 120 | + if (isJudge.length === 0) { | ||
| 117 | disabled.value = true; | 121 | disabled.value = true; | 
| 118 | } | 122 | } | 
| 119 | }; | 123 | }; |