Commit a405b059b52ef2252bb75386fbcb1b2d790bb6ac

Authored by fengtao
1 parent 6824f231

fix:[DEFECT-312,DEFECT-317,DEFECT-319,DEFECT-311],fix:修复设备分配删除问题,转换脚本启用删除问题,消息模板启用时删除问题,设备配置删除缓存问题

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