Commit ced7badbe9fa49ad135b91b0fb5675dfeb505573

Authored by xp.Huang
2 parents 6fdcb5ca a61532d7

Merge branch 'fix/rule-chain-export' into 'main_dev'

fix: 修复规则链导出问题和分页问题

See merge request yunteng/thingskit-front!906
1 -<template>  
2 - <div>属性</div>  
3 -</template>  
4 -  
5 -<script setup lang="ts"></script>  
6 -  
7 -<style lang="less" scoped></style>  
1 -<template>  
2 - <div>警告</div>  
3 -</template>  
4 -  
5 -<script setup lang="ts"></script>  
6 -  
7 -<style lang="less" scoped></style>  
1 -import ChainDetailDrawer from './index.vue';  
2 -export { ChainDetailDrawer };  
1 -<template>  
2 - <BasicDrawer  
3 - v-bind="$attrs"  
4 - isDetail  
5 - @register="register"  
6 - destroyOnClose  
7 - @close="closeDrawer"  
8 - :title="deviceDetail.alias || deviceDetail.name"  
9 - width="80%"  
10 - >  
11 - <Tabs v-model:activeKey="activeKey" :size="size">  
12 - <TabPane key="1" tab="详情">  
13 - <div>详情</div>  
14 - </TabPane>  
15 - <TabPane key="2" tab="属性">  
16 - <Attribute />  
17 - </TabPane>  
18 - <TabPane key="3" tab="最新遥测数据"><div>最新遥测数据</div></TabPane>  
19 - <TabPane key="4" tab="警告">  
20 - <div>警告</div>  
21 - </TabPane>  
22 - <TabPane key="5" tab="事件">  
23 - <div>事件</div>  
24 - </TabPane>  
25 - <!-- 网关设备并且场家是TBox -->  
26 - <TabPane key="6" tab="关联">  
27 - <div>关联</div>  
28 - </TabPane>  
29 - <!-- 网关设备并且是TBox -->  
30 -  
31 - <TabPane key="7" tab="审计日志">  
32 - <div>审计日志</div>  
33 - </TabPane>  
34 - </Tabs>  
35 - </BasicDrawer>  
36 -</template>  
37 -<script lang="ts" setup>  
38 - import { ref } from 'vue';  
39 - import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';  
40 -  
41 - import { Tabs, TabPane } from 'ant-design-vue';  
42 - import { DeviceRecord } from '/@/api/device/model/deviceModel';  
43 -  
44 - import Attribute from './component/Attribute.vue';  
45 -  
46 - // defineProps({});  
47 -  
48 - // defineEmits([]);  
49 -  
50 - const activeKey = ref('1');  
51 - const size = ref('small');  
52 - const deviceDetail = ref<DeviceRecord>({} as unknown as DeviceRecord);  
53 - // 详情回显  
54 - const [register] = useDrawerInner(async (data) => {  
55 - console.log(data, 'data');  
56 - });  
57 - const closeDrawer = () => {  
58 - activeKey.value = '1';  
59 - };  
60 -</script>  
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 <Authority> 5 <Authority>
6 <a-button type="primary" @click="handleAdd"> 新增规则链 </a-button> 6 <a-button type="primary" @click="handleAdd"> 新增规则链 </a-button>
7 </Authority> 7 </Authority>
8 - <Upload :show-upload-list="false" :customRequest="handleImport"> 8 + <Upload :show-upload-list="false" accept=".json," :customRequest="handleImport">
9 <Button type="primary" :loading="importLoading"> 导入规则链 </Button> 9 <Button type="primary" :loading="importLoading"> 导入规则链 </Button>
10 </Upload> 10 </Upload>
11 <Authority> 11 <Authority>
@@ -64,7 +64,7 @@ @@ -64,7 +64,7 @@
64 ifShow: !record.root, 64 ifShow: !record.root,
65 popConfirm: { 65 popConfirm: {
66 title: '是否确认删除', 66 title: '是否确认删除',
67 - confirm: handleDeleteOrBatchDelete.bind(null, record), 67 + confirm: handleDeleteOrBatchDelete.bind(null, record.id.id),
68 }, 68 },
69 }, 69 },
70 ]" 70 ]"
@@ -113,7 +113,7 @@ @@ -113,7 +113,7 @@
113 113
114 const isEmptyObject = (value: any) => isObject(value) && !Object.keys(value).length; 114 const isEmptyObject = (value: any) => isObject(value) && !Object.keys(value).length;
115 const importLoading = ref<boolean>(false); 115 const importLoading = ref<boolean>(false);
116 - const hasBatchDelete = ref<boolean>(false); 116 + const hasBatchDelete = ref<boolean>(true);
117 117
118 const beforeFetch = (params) => { 118 const beforeFetch = (params) => {
119 Reflect.set(params, 'page', params.page - 1); 119 Reflect.set(params, 'page', params.page - 1);
@@ -148,8 +148,11 @@ @@ -148,8 +148,11 @@
148 labelWidth: 120, 148 labelWidth: 120,
149 schemas: searchFormSchema, 149 schemas: searchFormSchema,
150 }, 150 },
  151 + resizeHeightOffset: 40,
  152 + canResize: true,
151 fetchSetting: { 153 fetchSetting: {
152 pageField: 'page', 154 pageField: 'page',
  155 + totalField: 'totalElements',
153 listField: 'data', 156 listField: 'data',
154 }, 157 },
155 beforeFetch: (params) => beforeFetch(params), 158 beforeFetch: (params) => beforeFetch(params),
@@ -208,6 +211,7 @@ @@ -208,6 +211,7 @@
208 }); 211 });
209 const { ruleChain, metadata } = data as any; 212 const { ruleChain, metadata } = data as any;
210 213
  214 + // 创建规则链
211 const value = await createRuleChine(ruleChain); 215 const value = await createRuleChine(ruleChain);
212 const { id } = value; 216 const { id } = value;
213 217
@@ -215,6 +219,7 @@ @@ -215,6 +219,7 @@
215 ruleChainId: id, 219 ruleChainId: id,
216 ...metadata, 220 ...metadata,
217 }; 221 };
  222 + // 导入规则链详情nodes的东西
218 const rules = await importRuleChine(values); 223 const rules = await importRuleChine(values);
219 224
220 rules 225 rules
@@ -239,9 +244,17 @@ @@ -239,9 +244,17 @@
239 const { firstNodeIndex, nodes, connections, ruleChainConnections } = await exportRuleChine( 244 const { firstNodeIndex, nodes, connections, ruleChainConnections } = await exportRuleChine(
240 record.id.id 245 record.id.id
241 ); 246 );
  247 +
  248 + const node = nodes.map((item) => {
  249 + return {
  250 + ...item,
  251 + id: undefined,
  252 + ruleChainId: undefined,
  253 + };
  254 + });
242 const value = { 255 const value = {
243 ruleChain: { additionalInfo, name, type, firstRuleNodeId, root, debugMode, configuration }, 256 ruleChain: { additionalInfo, name, type, firstRuleNodeId, root, debugMode, configuration },
244 - metadata: { firstNodeIndex, nodes, connections, ruleChainConnections }, 257 + metadata: { firstNodeIndex, nodes: node, connections, ruleChainConnections },
245 }; 258 };
246 exportJSONFile(value, name); 259 exportJSONFile(value, name);
247 }; 260 };
@@ -257,26 +270,25 @@ @@ -257,26 +270,25 @@
257 setProps({ 270 setProps({
258 loading: false, 271 loading: false,
259 }); 272 });
  273 + reload();
260 } 274 }
261 - reload();  
262 }; 275 };
263 276
264 - const handleDeleteOrBatchDelete = async (record: Recordable | null) => { 277 + const handleDeleteOrBatchDelete = async (id: string | null) => {
265 setProps({ 278 setProps({
266 loading: true, 279 loading: true,
267 }); 280 });
268 try { 281 try {
269 - if (!record) { 282 + if (!id) {
270 const ids = getSelectRowKeys(); 283 const ids = getSelectRowKeys();
271 await Promise.all(ids.map((item) => deleteRuleChine(item))); 284 await Promise.all(ids.map((item) => deleteRuleChine(item)));
272 return; 285 return;
273 } 286 }
274 - await deleteRuleChine(record.id.id); 287 + await deleteRuleChine(id);
275 } finally { 288 } finally {
276 setProps({ 289 setProps({
277 loading: false, 290 loading: false,
278 }); 291 });
279 -  
280 createMessage.success('删除成功'); 292 createMessage.success('删除成功');
281 clearSelectedRowKeys(); 293 clearSelectedRowKeys();
282 reload(); 294 reload();
@@ -143,7 +143,7 @@ @@ -143,7 +143,7 @@
143 } 143 }
144 if (predicateIsRequired) return createMessage.error('请填写条件筛选'); 144 if (predicateIsRequired) return createMessage.error('请填写条件筛选');
145 //TODO-fengtao-设备、属性、条件筛选验证 145 //TODO-fengtao-设备、属性、条件筛选验证
146 - return { ...getFieldsValue(), predicate, schedule: alarmScheduleRef.value.scheduleData }; 146 + return { ...getFieldsValue(), predicate, schedule: alarmScheduleRef.value?.scheduleData };
147 }; 147 };
148 148
149 //TODO-fengtao 149 //TODO-fengtao