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 5 <Authority>
6 6 <a-button type="primary" @click="handleAdd"> 新增规则链 </a-button>
7 7 </Authority>
8   - <Upload :show-upload-list="false" :customRequest="handleImport">
  8 + <Upload :show-upload-list="false" accept=".json," :customRequest="handleImport">
9 9 <Button type="primary" :loading="importLoading"> 导入规则链 </Button>
10 10 </Upload>
11 11 <Authority>
... ... @@ -64,7 +64,7 @@
64 64 ifShow: !record.root,
65 65 popConfirm: {
66 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 113
114 114 const isEmptyObject = (value: any) => isObject(value) && !Object.keys(value).length;
115 115 const importLoading = ref<boolean>(false);
116   - const hasBatchDelete = ref<boolean>(false);
  116 + const hasBatchDelete = ref<boolean>(true);
117 117
118 118 const beforeFetch = (params) => {
119 119 Reflect.set(params, 'page', params.page - 1);
... ... @@ -148,8 +148,11 @@
148 148 labelWidth: 120,
149 149 schemas: searchFormSchema,
150 150 },
  151 + resizeHeightOffset: 40,
  152 + canResize: true,
151 153 fetchSetting: {
152 154 pageField: 'page',
  155 + totalField: 'totalElements',
153 156 listField: 'data',
154 157 },
155 158 beforeFetch: (params) => beforeFetch(params),
... ... @@ -208,6 +211,7 @@
208 211 });
209 212 const { ruleChain, metadata } = data as any;
210 213
  214 + // 创建规则链
211 215 const value = await createRuleChine(ruleChain);
212 216 const { id } = value;
213 217
... ... @@ -215,6 +219,7 @@
215 219 ruleChainId: id,
216 220 ...metadata,
217 221 };
  222 + // 导入规则链详情nodes的东西
218 223 const rules = await importRuleChine(values);
219 224
220 225 rules
... ... @@ -239,9 +244,17 @@
239 244 const { firstNodeIndex, nodes, connections, ruleChainConnections } = await exportRuleChine(
240 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 255 const value = {
243 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 259 exportJSONFile(value, name);
247 260 };
... ... @@ -257,26 +270,25 @@
257 270 setProps({
258 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 278 setProps({
266 279 loading: true,
267 280 });
268 281 try {
269   - if (!record) {
  282 + if (!id) {
270 283 const ids = getSelectRowKeys();
271 284 await Promise.all(ids.map((item) => deleteRuleChine(item)));
272 285 return;
273 286 }
274   - await deleteRuleChine(record.id.id);
  287 + await deleteRuleChine(id);
275 288 } finally {
276 289 setProps({
277 290 loading: false,
278 291 });
279   -
280 292 createMessage.success('删除成功');
281 293 clearSelectedRowKeys();
282 294 reload();
... ...
... ... @@ -143,7 +143,7 @@
143 143 }
144 144 if (predicateIsRequired) return createMessage.error('请填写条件筛选');
145 145 //TODO-fengtao-设备、属性、条件筛选验证
146   - return { ...getFieldsValue(), predicate, schedule: alarmScheduleRef.value.scheduleData };
  146 + return { ...getFieldsValue(), predicate, schedule: alarmScheduleRef.value?.scheduleData };
147 147 };
148 148
149 149 //TODO-fengtao
... ...