Commit 6d9b6617e6557089d5676ecf760c33258bbd4ef3
Merge branch 'ft' into 'main'
fix:[DEFECT-312,DEFECT-317,DEFECT-319,DEFECT-311],fix:修复设备分配删除问题,转换脚本启用删除问题,消息模板启用时删除问题,设备配置删除缓存问题 See merge request huang/yun-teng-iot-front!187
Showing
6 changed files
with
203 additions
and
74 deletions
| ... | ... | @@ -7,9 +7,9 @@ |
| 7 | 7 | ref="organizationIdTreeRef" |
| 8 | 8 | /> |
| 9 | 9 | <BasicTable |
| 10 | - @selection-change="useSelectionChange" | |
| 11 | 10 | @register="registerTable" |
| 12 | 11 | :searchInfo="searchInfo" |
| 12 | + @selection-change="useSelectionChange" | |
| 13 | 13 | :rowSelection="{ type: 'checkbox' }" |
| 14 | 14 | class="w-3/4 xl:w-4/5" |
| 15 | 15 | > |
| ... | ... | @@ -95,7 +95,7 @@ |
| 95 | 95 | const searchInfo = reactive<Recordable>({}); |
| 96 | 96 | const { organizationIdTreeRef, resetFn } = useResetOrganizationTree(searchInfo); |
| 97 | 97 | // 表格hooks |
| 98 | - const [registerTable, { reload, getSelectRows }] = useTable({ | |
| 98 | + const [registerTable, { reload, getSelectRows, getSelectRowKeys }] = useTable({ | |
| 99 | 99 | title: '告警配置列表', |
| 100 | 100 | api: queryAlarmConfig, |
| 101 | 101 | columns, |
| ... | ... | @@ -140,6 +140,10 @@ |
| 140 | 140 | } |
| 141 | 141 | }; |
| 142 | 142 | const useSelectionChange = () => { |
| 143 | + selectArray = getSelectRowKeys(); | |
| 144 | + if (selectArray.length > 0) { | |
| 145 | + hasBatchDelete.value = false; | |
| 146 | + } | |
| 143 | 147 | let getRows = getSelectRows(); |
| 144 | 148 | const isJudge = getRows.map((m) => m.status); |
| 145 | 149 | if (isJudge.length === 0) { |
| ... | ... | @@ -152,7 +156,6 @@ |
| 152 | 156 | } else if (!isJudge.includes(1) && isJudge.includes(0)) { |
| 153 | 157 | hasBatchDelete.value = false; |
| 154 | 158 | } |
| 155 | - selectArray = getRows.filter((f) => f.status !== 1).map((m) => m.id); | |
| 156 | 159 | }; |
| 157 | 160 | // 删除或批量删除 |
| 158 | 161 | const handleDeleteOrBatchDelete = async (record: Recordable | null) => { | ... | ... |
| ... | ... | @@ -6,14 +6,19 @@ |
| 6 | 6 | @select="handleSelect" |
| 7 | 7 | ref="organizationIdTreeRef" |
| 8 | 8 | /> |
| 9 | - <BasicTable @register="registerTable" class="w-5/6 xl:w-4/5"> | |
| 9 | + <BasicTable | |
| 10 | + @selection-change="useSelectionChange" | |
| 11 | + :rowSelection="{ type: 'checkbox' }" | |
| 12 | + @register="registerTable" | |
| 13 | + class="w-5/6 xl:w-4/5" | |
| 14 | + > | |
| 10 | 15 | <template #toolbar> |
| 11 | 16 | <a-button type="primary" @click="handleCreate" v-if="authBtn(role)"> 新增设备 </a-button> |
| 12 | 17 | <a-button |
| 13 | 18 | color="error" |
| 14 | 19 | v-if="authBtn(role)" |
| 15 | 20 | @click="handleDeleteOrBatchDelete(null)" |
| 16 | - :disabled="hasBatchDelete" | |
| 21 | + :disabled="disabled" | |
| 17 | 22 | > |
| 18 | 23 | 批量删除 |
| 19 | 24 | </a-button> |
| ... | ... | @@ -121,7 +126,7 @@ |
| 121 | 126 | </div> |
| 122 | 127 | </template> |
| 123 | 128 | <script lang="ts"> |
| 124 | - import { defineComponent, reactive } from 'vue'; | |
| 129 | + import { defineComponent, reactive, ref } from 'vue'; | |
| 125 | 130 | import { DeviceState, DeviceTypeEnum } from '/@/api/device/model/deviceModel'; |
| 126 | 131 | import { BasicTable, useTable, TableAction, TableImg } from '/@/components/Table'; |
| 127 | 132 | import { columns, searchFormSchema } from './config/device.data'; |
| ... | ... | @@ -137,16 +142,14 @@ |
| 137 | 142 | import { PageWrapper } from '/@/components/Page'; |
| 138 | 143 | import { useModal } from '/@/components/Modal'; |
| 139 | 144 | import { OrganizationIdTree, useResetOrganizationTree } from '/@/views/common/organizationIdTree'; |
| 140 | - | |
| 141 | 145 | import DeviceModal from './cpns/modal/DeviceModal.vue'; |
| 142 | 146 | import { useDrawer } from '/@/components/Drawer'; |
| 143 | 147 | import DeviceDetailDrawer from './cpns/modal/DeviceDetailDrawer.vue'; |
| 144 | 148 | import CustomerModal from './cpns/modal/CustomerModal.vue'; |
| 145 | - | |
| 149 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
| 146 | 150 | import { USER_INFO_KEY } from '/@/enums/cacheEnum'; |
| 147 | 151 | import { getAuthCache } from '/@/utils/auth'; |
| 148 | 152 | import { authBtn } from '/@/enums/roleEnum'; |
| 149 | - import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; | |
| 150 | 153 | |
| 151 | 154 | export default defineComponent({ |
| 152 | 155 | name: 'DeviceManagement', |
| ... | ... | @@ -162,17 +165,16 @@ |
| 162 | 165 | TableImg, |
| 163 | 166 | }, |
| 164 | 167 | setup(_) { |
| 168 | + const { createMessage } = useMessage(); | |
| 169 | + let selectedRowKeys: any = []; | |
| 170 | + const disabled = ref(true); | |
| 165 | 171 | const go = useGo(); |
| 166 | - const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete( | |
| 167 | - deleteDevice, | |
| 168 | - handleSuccess | |
| 169 | - ); | |
| 170 | 172 | const searchInfo = reactive<Recordable>({}); |
| 171 | 173 | const { organizationIdTreeRef, resetFn } = useResetOrganizationTree(searchInfo); |
| 172 | 174 | const [registerModal, { openModal }] = useModal(); |
| 173 | 175 | const [registerCustomerModal, { openModal: openCustomerModal }] = useModal(); |
| 174 | 176 | const [registerDetailDrawer, { openDrawer }] = useDrawer(); |
| 175 | - const [registerTable, { reload }] = useTable({ | |
| 177 | + const [registerTable, { reload, getSelectRows, getSelectRowKeys }] = useTable({ | |
| 176 | 178 | title: '设备列表', |
| 177 | 179 | api: devicePage, |
| 178 | 180 | columns, |
| ... | ... | @@ -185,6 +187,7 @@ |
| 185 | 187 | showTableSetting: true, |
| 186 | 188 | bordered: true, |
| 187 | 189 | showIndexColumn: false, |
| 190 | + rowKey: 'id', | |
| 188 | 191 | searchInfo: searchInfo, |
| 189 | 192 | actionColumn: { |
| 190 | 193 | width: 300, |
| ... | ... | @@ -192,7 +195,6 @@ |
| 192 | 195 | slots: { customRender: 'action' }, |
| 193 | 196 | fixed: 'right', |
| 194 | 197 | }, |
| 195 | - ...selectionOptions, | |
| 196 | 198 | }); |
| 197 | 199 | |
| 198 | 200 | const userInfo: any = getAuthCache(USER_INFO_KEY); |
| ... | ... | @@ -241,6 +243,44 @@ |
| 241 | 243 | function goDeviceProfile(e) { |
| 242 | 244 | go(PageEnum.DEVICE_PROFILE + '?name=' + String(e)); |
| 243 | 245 | } |
| 246 | + const useSelectionChange = () => { | |
| 247 | + selectedRowKeys = getSelectRowKeys(); | |
| 248 | + if (selectedRowKeys.length > 0) { | |
| 249 | + disabled.value = false; | |
| 250 | + } | |
| 251 | + const isJudge = getSelectRows().map((m) => { | |
| 252 | + return { | |
| 253 | + status: m.customerId, | |
| 254 | + id: m.id, | |
| 255 | + }; | |
| 256 | + }); | |
| 257 | + isJudge.some((s) => { | |
| 258 | + if (s.status != undefined) { | |
| 259 | + disabled.value = true; | |
| 260 | + } | |
| 261 | + }); | |
| 262 | + }; | |
| 263 | + // 删除或批量删除 | |
| 264 | + const handleDeleteOrBatchDelete = async (record: Recordable | null) => { | |
| 265 | + if (record) { | |
| 266 | + try { | |
| 267 | + await deleteDevice([record.id]); | |
| 268 | + createMessage.success('删除成功'); | |
| 269 | + handleSuccess(); | |
| 270 | + } catch (e: any) {} | |
| 271 | + } else { | |
| 272 | + try { | |
| 273 | + await deleteDevice(selectedRowKeys); | |
| 274 | + createMessage.success('批量删除成功'); | |
| 275 | + handleSuccess(); | |
| 276 | + selectedRowKeys.length = 0; | |
| 277 | + } catch (e: any) { | |
| 278 | + selectedRowKeys.length = 0; | |
| 279 | + } finally { | |
| 280 | + selectedRowKeys.length = 0; | |
| 281 | + } | |
| 282 | + } | |
| 283 | + }; | |
| 244 | 284 | |
| 245 | 285 | return { |
| 246 | 286 | registerTable, |
| ... | ... | @@ -262,7 +302,8 @@ |
| 262 | 302 | authBtn, |
| 263 | 303 | role, |
| 264 | 304 | handleDeleteOrBatchDelete, |
| 265 | - hasBatchDelete, | |
| 305 | + disabled, | |
| 306 | + useSelectionChange, | |
| 266 | 307 | }; |
| 267 | 308 | }, |
| 268 | 309 | }); | ... | ... |
| ... | ... | @@ -2,8 +2,8 @@ |
| 2 | 2 | <div> |
| 3 | 3 | <BasicTable |
| 4 | 4 | class="devide-profiles" |
| 5 | - @selection-change="useSelectionChange" | |
| 6 | 5 | @register="registerTable" |
| 6 | + @selection-change="useSelectionChange" | |
| 7 | 7 | :rowSelection="{ type: 'checkbox' }" |
| 8 | 8 | > |
| 9 | 9 | <template #toolbar> |
| ... | ... | @@ -74,7 +74,7 @@ |
| 74 | 74 | </div> |
| 75 | 75 | </template> |
| 76 | 76 | <script lang="ts"> |
| 77 | - import { defineComponent, ref, nextTick, onUnmounted, reactive } from 'vue'; | |
| 77 | + import { defineComponent, ref, nextTick, onUnmounted } from 'vue'; | |
| 78 | 78 | import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table'; |
| 79 | 79 | import { columns, searchFormSchema } from './device.profile.data'; |
| 80 | 80 | import { useMessage } from '/@/hooks/web/useMessage'; |
| ... | ... | @@ -92,8 +92,8 @@ |
| 92 | 92 | name: 'DeviceProfileManagement', |
| 93 | 93 | components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel, TableImg }, |
| 94 | 94 | setup() { |
| 95 | + let selectedRowKeys: any = []; | |
| 95 | 96 | const deviceDetailRef = ref(null); |
| 96 | - let selectedRowKeys: any = reactive([]); | |
| 97 | 97 | const getPathUrl = ref(''); |
| 98 | 98 | const getPathUrlName = ref(''); |
| 99 | 99 | const disabled = ref(true); |
| ... | ... | @@ -103,29 +103,30 @@ |
| 103 | 103 | const { createMessage } = useMessage(); |
| 104 | 104 | const [registerModal, { openModal }] = useModal(); |
| 105 | 105 | const [registerModalDetail] = useModal(); |
| 106 | - const [registerTable, { reload, getSelectRows, setTableData, getForm }] = useTable({ | |
| 107 | - title: '设备配置列表', | |
| 108 | - clickToRowSelect: false, | |
| 109 | - api: deviceConfigGetQuery, | |
| 110 | - immediate: immediateStatus.value, | |
| 111 | - columns, | |
| 112 | - formConfig: { | |
| 113 | - labelWidth: 120, | |
| 114 | - schemas: searchFormSchema, | |
| 115 | - }, | |
| 116 | - rowKey: 'id', | |
| 117 | - useSearchForm: true, | |
| 118 | - showTableSetting: true, | |
| 119 | - bordered: true, | |
| 120 | - showIndexColumn: false, | |
| 121 | - actionColumn: { | |
| 122 | - width: 240, | |
| 123 | - title: '操作', | |
| 124 | - dataIndex: 'action', | |
| 125 | - slots: { customRender: 'action' }, | |
| 126 | - fixed: 'right', | |
| 127 | - }, | |
| 128 | - }); | |
| 106 | + const [registerTable, { reload, getSelectRows, setTableData, getForm, getSelectRowKeys }] = | |
| 107 | + useTable({ | |
| 108 | + title: '设备配置列表', | |
| 109 | + clickToRowSelect: false, | |
| 110 | + api: deviceConfigGetQuery, | |
| 111 | + immediate: immediateStatus.value, | |
| 112 | + columns, | |
| 113 | + formConfig: { | |
| 114 | + labelWidth: 120, | |
| 115 | + schemas: searchFormSchema, | |
| 116 | + }, | |
| 117 | + rowKey: 'id', | |
| 118 | + useSearchForm: true, | |
| 119 | + showTableSetting: true, | |
| 120 | + bordered: true, | |
| 121 | + showIndexColumn: false, | |
| 122 | + actionColumn: { | |
| 123 | + width: 240, | |
| 124 | + title: '操作', | |
| 125 | + dataIndex: 'action', | |
| 126 | + slots: { customRender: 'action' }, | |
| 127 | + fixed: 'right', | |
| 128 | + }, | |
| 129 | + }); | |
| 129 | 130 | |
| 130 | 131 | /** |
| 131 | 132 | *@param url,name |
| ... | ... | @@ -227,8 +228,11 @@ |
| 227 | 228 | }, 10); |
| 228 | 229 | } |
| 229 | 230 | const useSelectionChange = () => { |
| 230 | - let getRows = getSelectRows(); | |
| 231 | - const isJudge = getRows.map((m) => m.default); | |
| 231 | + selectedRowKeys = getSelectRowKeys(); | |
| 232 | + if (selectedRowKeys.length > 0) { | |
| 233 | + disabled.value = false; | |
| 234 | + } | |
| 235 | + const isJudge = getSelectRows().map((m) => m.default); | |
| 232 | 236 | if (isJudge.includes(true)) { |
| 233 | 237 | disabled.value = true; |
| 234 | 238 | } else { |
| ... | ... | @@ -237,19 +241,18 @@ |
| 237 | 241 | if (isJudge.length === 0) { |
| 238 | 242 | disabled.value = true; |
| 239 | 243 | } |
| 240 | - selectedRowKeys.length = 0; | |
| 241 | - selectedRowKeys = getRows.filter((f) => f.default !== true).map((m) => m.id); | |
| 242 | 244 | }; |
| 243 | 245 | const handleTableDel = () => { |
| 244 | 246 | deviceConfigDelete(selectedRowKeys) |
| 245 | - .then((res) => { | |
| 246 | - createMessage.success('删除成功'); | |
| 247 | - selectedRowKeys.length = 0; | |
| 247 | + .then(() => { | |
| 248 | + createMessage.success('删除设备配置成功'); | |
| 248 | 249 | handleSuccess(); |
| 250 | + selectedRowKeys.length = 0; | |
| 249 | 251 | }) |
| 250 | - .catch((e) => { | |
| 252 | + .catch(() => { | |
| 251 | 253 | selectedRowKeys.length = 0; |
| 252 | 254 | }); |
| 255 | + selectedRowKeys.length = 0; | |
| 253 | 256 | }; |
| 254 | 257 | |
| 255 | 258 | function handleDelete(record: Recordable) { | ... | ... |
| 1 | 1 | <template> |
| 2 | 2 | <div> |
| 3 | - <BasicTable @register="registerTable"> | |
| 3 | + <BasicTable | |
| 4 | + @selection-change="useSelectionChange" | |
| 5 | + :rowSelection="{ type: 'checkbox' }" | |
| 6 | + @register="registerTable" | |
| 7 | + > | |
| 4 | 8 | <template #toolbar> |
| 5 | 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="disabled"> | |
| 7 | 11 | 批量删除 |
| 8 | 12 | </a-button> |
| 9 | 13 | </template> |
| ... | ... | @@ -36,8 +40,7 @@ |
| 36 | 40 | </div> |
| 37 | 41 | </template> |
| 38 | 42 | <script lang="ts"> |
| 39 | - import { defineComponent, h } from 'vue'; | |
| 40 | - | |
| 43 | + import { defineComponent, h, ref } from 'vue'; | |
| 41 | 44 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
| 42 | 45 | import { messageConfigPage, deleteMessageConfig } from '/@/api/message/config'; |
| 43 | 46 | import { useDrawer } from '/@/components/Drawer'; |
| ... | ... | @@ -45,17 +48,18 @@ |
| 45 | 48 | import { columns, searchFormSchema } from './config.data'; |
| 46 | 49 | import { Modal } from 'ant-design-vue'; |
| 47 | 50 | import { JsonPreview } from '/@/components/CodeEditor'; |
| 48 | - import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; | |
| 51 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
| 52 | + | |
| 49 | 53 | export default defineComponent({ |
| 50 | 54 | name: 'MessageConfigManagement', |
| 51 | 55 | components: { BasicTable, ConfigDrawer, TableAction }, |
| 52 | 56 | setup() { |
| 57 | + let selectedRowKeys: any = []; | |
| 58 | + const disabled = ref(true); | |
| 59 | + const { createMessage } = useMessage(); | |
| 60 | + | |
| 53 | 61 | const [registerDrawer, { openDrawer }] = useDrawer(); |
| 54 | - const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete( | |
| 55 | - deleteMessageConfig, | |
| 56 | - handleSuccess | |
| 57 | - ); | |
| 58 | - const [registerTable, { reload }] = useTable({ | |
| 62 | + const [registerTable, { reload, getSelectRows, getSelectRowKeys }] = useTable({ | |
| 59 | 63 | title: '消息配置列表', |
| 60 | 64 | api: messageConfigPage, |
| 61 | 65 | columns, |
| ... | ... | @@ -64,6 +68,7 @@ |
| 64 | 68 | schemas: searchFormSchema, |
| 65 | 69 | }, |
| 66 | 70 | useSearchForm: true, |
| 71 | + rowKey: 'id', | |
| 67 | 72 | showTableSetting: true, |
| 68 | 73 | bordered: true, |
| 69 | 74 | showIndexColumn: false, |
| ... | ... | @@ -74,7 +79,6 @@ |
| 74 | 79 | slots: { customRender: 'action' }, |
| 75 | 80 | fixed: 'right', |
| 76 | 81 | }, |
| 77 | - ...selectionOptions, | |
| 78 | 82 | }); |
| 79 | 83 | |
| 80 | 84 | function handleCreate() { |
| ... | ... | @@ -100,6 +104,43 @@ |
| 100 | 104 | content: h(JsonPreview, { data: JSON.parse(JSON.stringify(record.config)) }), |
| 101 | 105 | }); |
| 102 | 106 | } |
| 107 | + | |
| 108 | + const useSelectionChange = () => { | |
| 109 | + selectedRowKeys = getSelectRowKeys(); | |
| 110 | + if (selectedRowKeys.length > 0) { | |
| 111 | + disabled.value = false; | |
| 112 | + } | |
| 113 | + const isJudge = getSelectRows().map((m) => m.status); | |
| 114 | + if (isJudge.includes(1)) { | |
| 115 | + disabled.value = true; | |
| 116 | + } else { | |
| 117 | + disabled.value = false; | |
| 118 | + } | |
| 119 | + if (isJudge.length === 0) { | |
| 120 | + disabled.value = true; | |
| 121 | + } | |
| 122 | + }; | |
| 123 | + // 删除或批量删除 | |
| 124 | + const handleDeleteOrBatchDelete = async (record: Recordable | null) => { | |
| 125 | + if (record) { | |
| 126 | + try { | |
| 127 | + await deleteMessageConfig([record.id]); | |
| 128 | + createMessage.success('删除成功'); | |
| 129 | + handleSuccess(); | |
| 130 | + } catch (e: any) {} | |
| 131 | + } else { | |
| 132 | + try { | |
| 133 | + await deleteMessageConfig(selectedRowKeys); | |
| 134 | + createMessage.success('批量删除成功'); | |
| 135 | + handleSuccess(); | |
| 136 | + selectedRowKeys.length = 0; | |
| 137 | + } catch (e: any) { | |
| 138 | + selectedRowKeys.length = 0; | |
| 139 | + } finally { | |
| 140 | + selectedRowKeys.length = 0; | |
| 141 | + } | |
| 142 | + } | |
| 143 | + }; | |
| 103 | 144 | return { |
| 104 | 145 | registerTable, |
| 105 | 146 | registerDrawer, |
| ... | ... | @@ -107,8 +148,9 @@ |
| 107 | 148 | handleCreate, |
| 108 | 149 | handleEdit, |
| 109 | 150 | handleSuccess, |
| 110 | - hasBatchDelete, | |
| 151 | + disabled, | |
| 111 | 152 | handleDeleteOrBatchDelete, |
| 153 | + useSelectionChange, | |
| 112 | 154 | }; |
| 113 | 155 | }, |
| 114 | 156 | }); | ... | ... |
| 1 | 1 | <template> |
| 2 | 2 | <div> |
| 3 | - <BasicTable @register="registerTable" v-show="isStatus === 0"> | |
| 3 | + <BasicTable | |
| 4 | + @selection-change="useSelectionChange" | |
| 5 | + :rowSelection="{ type: 'checkbox' }" | |
| 6 | + @register="registerTable" | |
| 7 | + v-show="isStatus === 0" | |
| 8 | + > | |
| 4 | 9 | <template #toolbar> |
| 5 | 10 | <a-button type="primary" @click="handleCreate"> 新增转换脚本 </a-button> |
| 6 | - <a-button color="error" @click="handleDeleteOrBatchDelete(null)" :disabled="hasBatchDelete"> | |
| 11 | + <a-button color="error" @click="handleDeleteOrBatchDelete(null)" :disabled="disabled"> | |
| 7 | 12 | 批量删除 |
| 8 | 13 | </a-button> |
| 9 | 14 | </template> |
| ... | ... | @@ -43,20 +48,20 @@ |
| 43 | 48 | <script lang="ts" setup> |
| 44 | 49 | import { ref } from 'vue'; |
| 45 | 50 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
| 46 | - import { columns, searchFormSchema } from './config/config.data.ts'; | |
| 51 | + import { columns, searchFormSchema } from './config/config.data'; | |
| 47 | 52 | import { getConvertApi, deleteTransformApi } from '/@/api/device/TransformScriptApi'; |
| 48 | - import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; | |
| 49 | 53 | import { useDrawer } from '/@/components/Drawer/index'; |
| 50 | 54 | import ScriptDrawer from './cpns/ScriptDrawer.vue'; |
| 51 | 55 | import TestScript from './cpns/TestScript.vue'; |
| 56 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
| 57 | + | |
| 52 | 58 | const handleSuccess = () => { |
| 53 | 59 | reload(); |
| 54 | 60 | }; |
| 55 | - const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete( | |
| 56 | - deleteTransformApi, | |
| 57 | - handleSuccess | |
| 58 | - ); | |
| 59 | - const [registerTable, { reload }] = useTable({ | |
| 61 | + const { createMessage } = useMessage(); | |
| 62 | + let selectedRowKeys: any = []; | |
| 63 | + const disabled = ref(true); | |
| 64 | + const [registerTable, { reload, getSelectRowKeys, getSelectRows }] = useTable({ | |
| 60 | 65 | api: getConvertApi, |
| 61 | 66 | title: '转换脚本列表', |
| 62 | 67 | columns, |
| ... | ... | @@ -68,6 +73,7 @@ |
| 68 | 73 | labelWidth: 100, |
| 69 | 74 | schemas: searchFormSchema, |
| 70 | 75 | }, |
| 76 | + rowKey: 'id', | |
| 71 | 77 | actionColumn: { |
| 72 | 78 | width: 180, |
| 73 | 79 | title: '操作', |
| ... | ... | @@ -75,9 +81,8 @@ |
| 75 | 81 | slots: { customRender: 'action' }, |
| 76 | 82 | fixed: 'right', |
| 77 | 83 | }, |
| 78 | - ...selectionOptions, | |
| 79 | 84 | }); |
| 80 | - const [registerDrawer, { openDrawer }] = useDrawer({}); | |
| 85 | + const [registerDrawer, { openDrawer }] = useDrawer(); | |
| 81 | 86 | |
| 82 | 87 | const isStatus = ref(0); |
| 83 | 88 | const testScriptRef = ref(); |
| ... | ... | @@ -102,4 +107,39 @@ |
| 102 | 107 | const handleEdit = (record: Recordable) => { |
| 103 | 108 | openDrawer(true, { isUpdate: true, record }); |
| 104 | 109 | }; |
| 110 | + const useSelectionChange = () => { | |
| 111 | + selectedRowKeys = getSelectRowKeys(); | |
| 112 | + if (selectedRowKeys.length > 0) { | |
| 113 | + disabled.value = false; | |
| 114 | + } | |
| 115 | + let getRows = getSelectRows(); | |
| 116 | + const isJudge = getRows.map((m) => m.status); | |
| 117 | + if (isJudge.length === 0) { | |
| 118 | + disabled.value = true; | |
| 119 | + } | |
| 120 | + if (isJudge.includes(1)) { | |
| 121 | + disabled.value = true; | |
| 122 | + } | |
| 123 | + }; | |
| 124 | + // 删除或批量删除 | |
| 125 | + const handleDeleteOrBatchDelete = async (record: Recordable | null) => { | |
| 126 | + if (record) { | |
| 127 | + try { | |
| 128 | + await deleteTransformApi([record.id]); | |
| 129 | + createMessage.success('删除成功'); | |
| 130 | + handleSuccess(); | |
| 131 | + } catch (e: any) {} | |
| 132 | + } else { | |
| 133 | + try { | |
| 134 | + await deleteTransformApi(selectedRowKeys); | |
| 135 | + createMessage.success('批量删除成功'); | |
| 136 | + handleSuccess(); | |
| 137 | + selectedRowKeys.length = 0; | |
| 138 | + } catch (e: any) { | |
| 139 | + selectedRowKeys.length = 0; | |
| 140 | + } finally { | |
| 141 | + selectedRowKeys.length = 0; | |
| 142 | + } | |
| 143 | + } | |
| 144 | + }; | |
| 105 | 145 | </script> | ... | ... |