|
@@ -0,0 +1,118 @@
|
|
|
|
+import {UIType} from "@/hook/useGraphic";
|
|
|
|
+import { toRaw } from 'vue'
|
|
|
|
+
|
|
|
|
+export const UITypeExtend = {
|
|
|
|
+ structure: "structure",
|
|
|
|
+ template: "template",
|
|
|
|
+ photo: "photo",
|
|
|
|
+ setup: "setup"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export type MenuRaw = {
|
|
|
|
+ key: string, text: string,
|
|
|
|
+ icon?: string,
|
|
|
|
+ children?: MenusRaw
|
|
|
|
+ extend?: MenusRaw
|
|
|
|
+}
|
|
|
|
+export type MenusRaw = Array<MenuRaw>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+export const structureMenusRaw = [
|
|
|
|
+ { key: UIType.CurveRoad, text: "支路" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "窄路" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "路肩" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "斑马线" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "桥" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "隧道" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "人行道" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "施工路段" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "下坡" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "上坡" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "路边水沟" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "道路与铁..." },
|
|
|
|
+ { key: UIType.CurveRoad, text: "消火栓井" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "雨水口" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "路面凹坑" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "路面凸出..." },
|
|
|
|
+ { key: UIType.CurveRoad, text: "路面积水" },
|
|
|
|
+]
|
|
|
|
+
|
|
|
|
+export const templateMenusRaw = [
|
|
|
|
+ { key: UIType.CurveRoad, text: "s型弯路" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "丁字路口" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "五岔路口" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "出口匝道" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "十字路口" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "国道(路肩)" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "室内路段" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "弯道" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "急转弯道" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "六岔路口" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "宽变窄路段" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "直角弯道" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "进口砸到" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "高速收费站" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "高速港湾" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "高速路段" }
|
|
|
|
+]
|
|
|
|
+
|
|
|
|
+export const mainMenusRaw: MenusRaw = [
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ {
|
|
|
|
+ key: UIType.Road,
|
|
|
|
+ text: "道路",
|
|
|
|
+ children: [
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UITypeExtend.structure, text: "道路结构", extend: structureMenusRaw },
|
|
|
|
+ { key: UITypeExtend.template, text: "道路模板", extend: templateMenusRaw },
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ { key: UIType.CurveRoad, text: "弯路" },
|
|
|
|
+ { key: UIType.CurveRoad, text: "图例" },
|
|
|
|
+ { key: UIType.MeasureLine, text: "测量" },
|
|
|
|
+ { key: UIType.Tag, text: "文字" },
|
|
|
|
+ { key: UIType.MeasureLine, text: "放大镜" },
|
|
|
|
+ { key: UITypeExtend.photo, text: "照片库" },
|
|
|
|
+ { key: UITypeExtend.setup, text: "设置" },
|
|
|
|
+];
|
|
|
|
+
|
|
|
|
+export const headActionMenuRaw = [
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" },
|
|
|
|
+ { key: UIType.Road, text: "画线" }
|
|
|
|
+]
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+export const isUITypeExtend = (key: string) =>
|
|
|
|
+ Object.values(UITypeExtend).some(v => v === key)
|
|
|
|
+
|
|
|
|
+type GenerateResult<T extends {}> = Array<T & { children: GenerateResult<T> }>;
|
|
|
|
+export const generateByMenus = <T>(
|
|
|
|
+ generateFn: (men: MenuRaw) => T,
|
|
|
|
+ mainMenus: MenusRaw = mainMenusRaw
|
|
|
|
+): GenerateResult<T> => {
|
|
|
|
+ return mainMenus.map(mainMenu => ({
|
|
|
|
+ ...generateFn(mainMenu),
|
|
|
|
+ children: mainMenu.children ? generateByMenus(generateFn, mainMenu.children) : []
|
|
|
|
+ }))
|
|
|
|
+}
|
|
|
|
+export const findMainMenuByExtend = (extend: MenusRaw, mainMenus = mainMenusRaw) => {
|
|
|
|
+ for (const mainMenu of mainMenus) {
|
|
|
|
+ if (toRaw(mainMenu.extend) === toRaw(extend)) {
|
|
|
|
+ return mainMenu
|
|
|
|
+ } else if (mainMenu.children) {
|
|
|
|
+ const childMainMenu = findMainMenuByExtend(extend, mainMenu.children)
|
|
|
|
+ if (childMainMenu) {
|
|
|
|
+ return childMainMenu;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|