/** * description: * 获取公司-车间-工位(树结构)信息,适用于添加相机(三种方式)- 所属工位下拉框选项 */ import { ref } from 'vue'; import { getTreeWorkspaceInfo } from '@/api/camera/camera-overview'; interface TreeWorkspaceInfoType { id: number; // 自增主键 name: string; // 公司名称 code?: string; // 公司编号 nodeType: string; // 节点类型 workshopId?: number; // nodeType=workspace时携带车间Id principalName?: string; // nodeType=workspace时携带负责人name children?: TreeWorkspaceInfoType[]; } interface ElTreeItem { value: any; label: string; children?: ElTreeItem[]; disabled?: boolean; workshopId?: number; principalName?: string; } export function useTreeWorkspaceInfo() { const workspaceInfo = ref([]); const setTreeWorkspaceInfo = (infos: TreeWorkspaceInfoType[]): ElTreeItem[] => { return infos.map((item) => { return { value: item.id, label: item.name, workshopId: item.workshopId, principalName: item.principalName, disabled: item.nodeType === 'workspace' ? false : true, children: item.children && item.children.length > 0 ? setTreeWorkspaceInfo(item.children) : [], }; }); }; const getWorkspaceFromTreeInfo = async () => { await getTreeWorkspaceInfo().then((res) => { workspaceInfo.value = setTreeWorkspaceInfo(res); }); }; return { workspaceInfo, getWorkspaceFromTreeInfo, }; } export default useTreeWorkspaceInfo;