|
|
@@ -1,79 +1,60 @@
|
|
|
import { computed, ref } from 'vue';
|
|
|
-import {
|
|
|
- CompanyInfoItem,
|
|
|
- WorkShopInfoItem,
|
|
|
- WorkSpaceInfoItem,
|
|
|
- getShopSpaceList,
|
|
|
- getCamerasByWorkSpace,
|
|
|
-} from '@/api/scene/scene';
|
|
|
-import { cloneDeep } from 'lodash-es';
|
|
|
+import { CompanyInfoItem, getShopSpaceList, getCamerasByWorkSpace } from '@/api/scene/scene';
|
|
|
|
|
|
-type ElTreeItem = Partial<CompanyInfoItem | WorkShopInfoItem | WorkSpaceInfoItem> & {
|
|
|
+type ElTreeItem = {
|
|
|
value: any;
|
|
|
label: string;
|
|
|
children?: ElTreeItem[];
|
|
|
};
|
|
|
|
|
|
+type TreeProps = {
|
|
|
+ /** level:1-数据读取至公司 2-数据读取至工厂 3-数据读取至工位 */
|
|
|
+ level: number;
|
|
|
+ labelKey: string;
|
|
|
+ valueKey: string;
|
|
|
+ disabled?: boolean;
|
|
|
+};
|
|
|
+
|
|
|
export function useSceneInfos() {
|
|
|
const scenesInfos = ref<CompanyInfoItem[]>([]);
|
|
|
const scenesTree = ref<ElTreeItem[]>([]);
|
|
|
- /** level:1-数据读取至公司 2-数据读取至工厂 3-数据读取至工位 */
|
|
|
- const level = ref(1);
|
|
|
-
|
|
|
- const getSpaceItems = (spaces: WorkSpaceInfoItem[]): ElTreeItem[] => {
|
|
|
- return spaces.map((space) => {
|
|
|
- return {
|
|
|
- ...space,
|
|
|
- value: space.code,
|
|
|
- label: space.name,
|
|
|
- disabled: false,
|
|
|
- };
|
|
|
- });
|
|
|
- };
|
|
|
|
|
|
const flattenedWorkshops = computed(() => {
|
|
|
- return scenesInfos.value.reduce((total, next) => [...total, ...next.workshopInfoList], []);
|
|
|
+ return scenesInfos.value.reduce((total, next) => [...total, ...next.children], []);
|
|
|
});
|
|
|
|
|
|
- const getShopItems = (shops: WorkShopInfoItem[]): ElTreeItem[] => {
|
|
|
- return shops.map((shop) => {
|
|
|
- const temp: any = cloneDeep(shop);
|
|
|
- delete temp.workspaceInfoList;
|
|
|
- const shopItem: ElTreeItem = {
|
|
|
- ...temp,
|
|
|
- value: temp.code,
|
|
|
- label: shop.name,
|
|
|
- disabled: level.value > 2 ? true : false,
|
|
|
- };
|
|
|
- if (level.value >= 3 && shop.workspaceInfoList && shop.workspaceInfoList.length > 0) {
|
|
|
- shopItem.children = getSpaceItems(shop.workspaceInfoList);
|
|
|
+ const flattendWorkspaces = computed(() => {
|
|
|
+ return scenesInfos.value.reduce((total, next) => {
|
|
|
+ let newArr: any[] = [];
|
|
|
+ if (next.children && next.children.length) {
|
|
|
+ newArr = next.children.reduce(
|
|
|
+ (subTotal, subNext) => [...subTotal, ...subNext.children],
|
|
|
+ [],
|
|
|
+ );
|
|
|
}
|
|
|
- return shopItem;
|
|
|
- });
|
|
|
- };
|
|
|
+ return [...total, ...newArr];
|
|
|
+ }, []);
|
|
|
+ });
|
|
|
|
|
|
- const calculateTreeData = (infos: CompanyInfoItem[]): ElTreeItem[] => {
|
|
|
- return infos.map((company) => {
|
|
|
- const temp: any = cloneDeep(company);
|
|
|
- delete temp.workshopInfoList;
|
|
|
- const companyItem: ElTreeItem = {
|
|
|
- ...temp,
|
|
|
- value: temp.code,
|
|
|
- label: company.name,
|
|
|
- disabled: level.value > 1 ? true : false,
|
|
|
+ const calculateTreeData = (infos: any[], treeProps: TreeProps, level: number): ElTreeItem[] => {
|
|
|
+ return infos.map((data) => {
|
|
|
+ return {
|
|
|
+ value: data[treeProps.valueKey],
|
|
|
+ label: data[treeProps.labelKey],
|
|
|
+ children:
|
|
|
+ data.children && data.children.length && treeProps.level > level
|
|
|
+ ? calculateTreeData(data.children, treeProps, level + 1)
|
|
|
+ : [],
|
|
|
+ disabled: treeProps.disabled && level < treeProps.level,
|
|
|
};
|
|
|
- if (level.value >= 2 && company.workshopInfoList && company.workshopInfoList.length > 0) {
|
|
|
- companyItem.children = getShopItems(company.workshopInfoList);
|
|
|
- }
|
|
|
- return companyItem;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- const getScenesTree = (_level: number) => {
|
|
|
- level.value = _level;
|
|
|
+ const getScenesTree = (treeProps: TreeProps) => {
|
|
|
getShopSpaceList().then((res) => {
|
|
|
scenesInfos.value = res;
|
|
|
- scenesTree.value = calculateTreeData(res);
|
|
|
+ scenesTree.value = calculateTreeData(res, treeProps, 1);
|
|
|
+ console.log(flattendWorkspaces.value);
|
|
|
});
|
|
|
};
|
|
|
|
|
|
@@ -83,7 +64,14 @@ export function useSceneInfos() {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- return { scenesInfos, scenesTree, flattenedWorkshops, getScenesTree, getCameraList };
|
|
|
+ return {
|
|
|
+ scenesInfos,
|
|
|
+ scenesTree,
|
|
|
+ flattenedWorkshops,
|
|
|
+ flattendWorkspaces,
|
|
|
+ getScenesTree,
|
|
|
+ getCameraList,
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
export default useSceneInfos;
|