fix: 修复边缘端映射bug

* fix: 修改登录后跳转方式

* fix: 修改物模型的其他配置按照类型配置

* feat: 登录密码加密

* fix: 应用管理赋权接口报错

* fix: 修复边缘端映射bug
This commit is contained in:
XieYongHong 2023-07-11 11:26:10 +08:00 committed by GitHub
parent 8048e80aa6
commit cd4ce56618
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 121 additions and 32 deletions

View File

@ -16,8 +16,9 @@
<j-tree
checkable
:height="300"
:tree-data="dataSource"
:tree-data="treeList"
:checkedKeys="checkedKeys"
:load-data="onLoadData"
@check="onCheck"
/>
</j-card>
@ -56,12 +57,20 @@
</template>
<script lang="ts" setup>
import { treeEdgeMap, saveEdgeMap } from '@/api/device/instance';
import { onlyMessage } from '@/utils/comm';
import {
treeEdgeMap,
saveEdgeMap,
edgeChannel,
edgeCollector,
edgePoint,
} from '@/api/device/instance';
import { useInstanceStore } from '@/store/instance';
import { message } from 'ant-design-vue/es';
import type { TreeProps } from 'ant-design-vue';
const _props = defineProps({
metaData: {
type: Array,
default: () => []
default: () => [],
},
deviceId: {
type: String,
@ -70,11 +79,12 @@ const _props = defineProps({
edgeId: {
type: String,
default: '',
}
},
});
const _emits = defineEmits(['close', 'save']);
const checkedKeys = ref<string[]>([]);
const instanceStore = useInstanceStore();
const leftList = ref<any[]>([]);
const rightList = ref<any[]>([]);
@ -119,6 +129,71 @@ const onRight = () => {
rightList.value = leftList.value;
};
const treeList = ref<any[]>([]);
const getChannel = async () => {
if (instanceStore.current?.parentId) {
loading.value = true;
const resp: any = await edgeChannel(instanceStore.current.parentId);
loading.value = false;
if (resp.status === 200) {
treeList.value = resp.result?.[0]?.map((item: any) => ({
...item,
title: item.name,
key: item.id,
checkable: false,
type: 'channel',
parentId: '',
provider: item.provider,
}));
}
}
};
const onLoadData: TreeProps['loadData'] = (treeNode) => {
return new Promise(async (resolve) => {
if (treeNode.dataRef?.children) {
resolve();
return;
}
const params = {
terms: [
{
terms: [
{
column:
treeNode.type === 'channel'
? 'channelId'
: 'collectorId',
value: treeNode.key,
},
],
},
],
};
const res =
treeNode.type === 'channel'
? await edgeCollector(
<string>instanceStore.current.parentId,
params,
)
: await edgePoint(
<string>instanceStore.current.parentId,
params,
);
(<any>treeNode.dataRef).children = res.result?.[0].map((item: any) => ({
...item,
title: item.name,
key: item.id,
type: treeNode.type === 'channel' ? 'collector' : 'point',
parentId: treeNode.key,
checkable: treeNode.type === 'channel' ? true : false,
isLeaf: treeNode.type === 'channel' ? false : true,
}));
treeList.value = [...treeList.value];
resolve();
});
};
const _delete = (_key: string) => {
const _index = rightList.value.findIndex((i) => i.key === _key);
rightList.value.splice(_index, 1);
@ -128,7 +203,7 @@ const _delete = (_key: string) => {
const handleClick = async () => {
if (!rightList.value.length) {
onlyMessage('请选择采集器', 'warning');
message.warning('请选择采集器');
} else {
const params: any[] = [];
rightList.value.map((item: any) => {
@ -137,12 +212,16 @@ const handleClick = async () => {
collectorId: element.collectorId,
pointId: element.id,
metadataType: 'property',
metadataId: (_props.metaData as any[]).find((i: any) => i.name === element.name)
?.metadataId,
provider: dataSource.value.find((it: any) => it.id === item.parentId).provider,
metadataId: (_props.metaData as any[]).find(
(i: any) => i.name === element.name,
)?.id,
provider: treeList.value.find(
(it: any) => it.id === item.parentId,
)?.provider,
}));
params.push(...array);
});
console.log(params);
const filterParms = params.filter((item) => !!item.metadataId);
if (filterParms && filterParms.length !== 0) {
const res = await saveEdgeMap(_props.edgeId, {
@ -151,11 +230,11 @@ const handleClick = async () => {
requestList: filterParms,
});
if (res.status === 200) {
onlyMessage('操作成功');
message.success('操作成功');
_emits('save');
}
} else {
onlyMessage('暂无对应属性的映射', 'error');
message.error('暂无对应属性的映射');
}
}
};
@ -165,7 +244,8 @@ const handleClose = () => {
onMounted(() => {
if (_props.edgeId) {
handleSearch();
// handleSearch();
getChannel();
}
});
</script>

View File

@ -22,6 +22,10 @@
</template>
</template>
<template #bodyCell="{ column, record, index }">
<template v-if="column.dataIndex === 'metadataName'">
<span v-if="record.metadataName">{{ record.metadataName }}</span>
<span v-else style="color: red;">{{ record.metadataId }}</span>
</template>
<template v-if="column.dataIndex === 'channelId'">
<j-form-item
:name="['dataSource', index, 'channelId']"
@ -90,12 +94,12 @@
<j-badge
v-if="record.state.value === 'enabled'"
status="success"
text="在线"
text="启用"
/>
<j-badge
v-else
status="warning"
text="离线"
text="禁用"
/>
</template>
<j-badge v-else status="error" text="未绑定" />
@ -184,7 +188,7 @@
v-if="visible"
@close="visible = false"
@save="onPatchBind"
:metaData="modelRef.dataSource"
:metaData="metadata.properties"
:edgeId="instanceStore.current.parentId"
/>
</j-spin>
@ -193,7 +197,7 @@
</j-card>
</template>
<script lang="ts" setup>
<script lang="ts" setup name="EdgeMap">
import { useInstanceStore } from '@/store/instance';
import {
getEdgeMap,
@ -249,7 +253,7 @@ const permissionStore = usePermissionStore();
const isPermission = permissionStore.hasPermission('device/Instance:update');
const current = ref<number>(0);
const current = ref<number>(1);
const pageSize = ref<number>(10);
const instanceStore = useInstanceStore();
@ -304,17 +308,22 @@ const handleSearch = async (_array: any[]) => {
loading.value = false;
});
if (resp.status === 200) {
const array = resp.result?.[0].reduce((x: any, y: any) => {
const metadataId = _metadata.find(
(item: any) => item.metadataId === y.metadataId,
);
if (metadataId) {
Object.assign(metadataId, y);
} else {
x.push(y);
}
return x;
}, _metadata);
const array = _metadata.map((item: any) => {
const metadataId = resp.result?.[0].find((x: any) => x.metadataId === item.metadataId);
Object.assign(item, metadataId);
return item
})
// const array = resp.result?.[0].reduce((x: any, y: any) => {
// const metadataId = _metadata.find(
// (item: any) => item.metadataId === y.metadataId,
// );
// if (metadataId) {
// Object.assign(metadataId, y);
// } else {
// x.push(y);
// }
// return x;
// }, _metadata);
modelRef.dataSource = array;
}
}
@ -428,14 +437,14 @@ const onRefresh = async () => {
});
if (resp.status === 200) {
const arr = cloneDeep(modelRef.dataSource);
const array = resp.result?.[0].map((x: any) => {
const _item = arr.find(
const array = arr.map((x: any) => {
const _item = resp.result?.[0].find(
(item: any) => item.metadataId === x.metadataId,
);
if (_item) {
return {
..._item,
...x,
..._item,
};
} else {
return x;