useTreeWorkspaceInfo.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /**
  2. * description:
  3. * 获取公司-车间-工位(树结构)信息,适用于添加相机(三种方式)- 所属工位下拉框选项
  4. */
  5. import { ref } from 'vue';
  6. import { getTreeWorkspaceInfo } from '@/api/camera/camera-overview';
  7. interface TreeWorkspaceInfoType {
  8. id: number; // 自增主键
  9. name: string; // 公司名称
  10. code?: string; // 公司编号
  11. nodeType: string; // 节点类型
  12. workshopId?: number; // nodeType=workspace时携带车间Id
  13. principalName?: string; // nodeType=workspace时携带负责人name
  14. children?: TreeWorkspaceInfoType[];
  15. }
  16. interface ElTreeItem {
  17. value: any;
  18. label: string;
  19. children?: ElTreeItem[];
  20. disabled?: boolean;
  21. workshopId?: number;
  22. principalName?: string;
  23. }
  24. export function useTreeWorkspaceInfo() {
  25. const workspaceInfo = ref<ElTreeItem[]>([]);
  26. const setTreeWorkspaceInfo = (infos: TreeWorkspaceInfoType[]): ElTreeItem[] => {
  27. return infos.map((item) => {
  28. return {
  29. value: item.id,
  30. label: item.name,
  31. workshopId: item.workshopId,
  32. principalName: item.principalName,
  33. disabled: item.nodeType === 'workspace' ? false : true,
  34. children:
  35. item.children && item.children.length > 0 ? setTreeWorkspaceInfo(item.children) : [],
  36. };
  37. });
  38. };
  39. const getWorkspaceFromTreeInfo = async () => {
  40. await getTreeWorkspaceInfo().then((res) => {
  41. workspaceInfo.value = setTreeWorkspaceInfo(res);
  42. });
  43. };
  44. return {
  45. workspaceInfo,
  46. getWorkspaceFromTreeInfo,
  47. };
  48. }
  49. export default useTreeWorkspaceInfo;