fix: 根据协议列表展示数据采集菜单

This commit is contained in:
haodd 2023-07-13 16:54:32 +08:00
parent 1ce92713c1
commit 151ecb9fa7
3 changed files with 50 additions and 10 deletions

View File

@ -197,6 +197,7 @@ import { FormValidate, FormState } from '../data';
import type { FormInstance } from 'ant-design-vue';
import type { FormDataType } from '../type.d';
import { cloneDeep, isArray } from 'lodash-es';
import { protocolList } from '@/utils/consts';
const props = defineProps({
data: {
@ -281,17 +282,13 @@ const getCertificateList = async () => {
const getProvidersList = async () => {
const resp: any = await getProviders();
if (resp.status === 200) {
const list = [
{ label: 'OPC UA', value: 'OPC_UA' },
{ label: 'Modbus TCP', value: 'MODBUS_TCP' },
];
const arr = resp.result
.filter(
(item: any) => item.id === 'modbus-tcp' || item.id === 'opc-ua',
)
.map((it: any) => (it?.id === 'opc-ua' ? 'OPC_UA' : 'MODBUS_TCP'));
const providers: any = list.filter((item: any) =>
arr.includes(item.value),
.map((it: any) => it.id);
const providers: any = protocolList.filter((item: any) =>
arr.includes(item.alias),
);
providersList.value = providers;
if (arr.includes('OPC_UA')) {

View File

@ -14,6 +14,8 @@
import { getImage } from '@/utils/comm';
import BaseMenu, { USER_CENTER_MENU_DATA } from '../data/baseMenu'
import { getSystemPermission, updateMenus } from '@/api/initHome';
import { protocolList } from '@/utils/consts';
import { getProviders } from '@/api/data-collect/channel';
/**
* 获取菜单数据
*/
@ -36,6 +38,18 @@ const getSystemPermissionData = async () => {
menuDatas.count = _count;
}
};
/**
* 查询支持的协议
*/
let filterProtocolList: any[] = [];
const getProvidersFn = async () => {
const res: any = await getProviders();
filterProtocolList = protocolList.filter((item) => {
return res.result?.find((val: any) => item.alias == val.id);
})
}
getProvidersFn();
/**
* 过滤菜单
*/
@ -50,6 +64,9 @@ const filterMenu = (permissions: string[], menus: any[]) => {
if (item.children) {
item.children = filterMenu(permissions, item.children);
}
if (!filterProtocolList.length && item.code == 'link/DataCollect') {
return false;
}
return isShow || !!item.children?.length;
});
};
@ -71,6 +88,7 @@ const menuCount = (menus: any[]) => {
const initMenu = async () => {
return new Promise(async (resolve) => {
//
console.log([...menuDatas.current!, USER_CENTER_MENU_DATA]);
const res = await updateMenus([...menuDatas.current!, USER_CENTER_MENU_DATA]);
if (res.status === 200) {
resolve(true);

View File

@ -81,6 +81,8 @@ import { onlyMessage } from '@/utils/comm';
import {
USER_CENTER_MENU_CODE,
} from '@/utils/consts';
import { protocolList } from '@/utils/consts';
import { getProviders } from '@/api/data-collect/channel';
const selectedKeys: any = ref([]);
const treeData = ref<any>([]);
@ -111,6 +113,17 @@ const params = {
],
};
/**
* 查询支持的协议
*/
let filterProtocolList: any[] = [];
const getProvidersFn = async () => {
const res: any = await getProviders();
filterProtocolList = protocolList.filter((item) => {
return res.result?.find((val: any) => item.alias == val.id);
})
}
getProvidersFn();
function filterTree(nodes: Array<any>, selectedKeys: Array<any>) {
const filtered = [];
for (let i = 0; i < nodes.length; i++) {
@ -206,17 +219,29 @@ onMounted(() => {
const systemMenuData = initData(systemMenu.value);
selectedKeys.value = systemMenuData.checkedKeys;
const AllMenu = mergeArr(
const AllMenu = filterMenus(mergeArr(
cloneDeep(filterBaseMenu),
cloneDeep(systemMenu.value),
);
))
console.log(AllMenu);
//
treeData.value = handleSortsArr(AllMenu);
}
});
});
});
const filterMenus = (menus: any[]) => {
return menus.filter((item) => {
if (item.children) {
item.children = filterMenus(item.children);
}
if (!filterProtocolList.length && item.code == 'link/DataCollect') {
debugger
return false;
}
return item
});
};
</script>
<style lang="less" scoped>