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 74 return defHttp.delete({
75 75 url: EDeviceConfigApi.DEVICE_CONFIG_DELETE,
76 76 data: {
77   - ids: ids,
  77 + ids,
78 78 },
79 79 });
80 80 };
... ...
... ... @@ -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>
... ...