fix: 修复边缘端映射bug
* fix: 修改登录后跳转方式 * fix: 修改物模型的其他配置按照类型配置 * feat: 登录密码加密 * fix: 应用管理赋权接口报错 * fix: 修复边缘端映射bug
This commit is contained in:
parent
8048e80aa6
commit
cd4ce56618
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue