diff --git a/src/views/DataCollect/Channel/Save/index.vue b/src/views/DataCollect/Channel/Save/index.vue index 136f6950..ab13be20 100644 --- a/src/views/DataCollect/Channel/Save/index.vue +++ b/src/views/DataCollect/Channel/Save/index.vue @@ -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')) { diff --git a/src/views/init-home/Menu/index.vue b/src/views/init-home/Menu/index.vue index 29a00f48..a0266104 100644 --- a/src/views/init-home/Menu/index.vue +++ b/src/views/init-home/Menu/index.vue @@ -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); diff --git a/src/views/system/Menu/Setting/index.vue b/src/views/system/Menu/Setting/index.vue index 41ab9ba9..64450986 100644 --- a/src/views/system/Menu/Setting/index.vue +++ b/src/views/system/Menu/Setting/index.vue @@ -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([]); @@ -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, selectedKeys: Array) { 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 + }); +};