bill пре 2 година
родитељ
комит
1c80bda5be
3 измењених фајлова са 118 додато и 89 уклоњено
  1. 86 67
      src/views/graphic/geos/normalLine.vue
  2. 16 6
      src/views/graphic/geos/roadEdge.vue
  3. 16 16
      src/views/graphic/menus.ts

+ 86 - 67
src/views/graphic/geos/normalLine.vue

@@ -1,144 +1,163 @@
 <template>
-  <GeoTeleport :active="active" :menus="menus" class="geo-teleport-use"/>
-  <GeoTeleport v-if="childMenus" :menus="childMenus" class="type-geo"/>
+  <GeoTeleport :active="active" :menus="menus" class="geo-teleport-use" />
+  <GeoTeleport v-if="childMenus" :menus="childMenus" class="type-geo" />
 </template>
 
 <script lang="ts" setup>
 import GeoTeleport from "@/views/graphic/geos/geo-teleport.vue";
-import {drawRef, FocusVector, VectorType} from '@/hook/useGraphic'
-import {computed, ref, toRaw, UnwrapRef} from "vue";
-import {dataService} from "@/graphic/Service/DataService";
-import GeoActions from "@/graphic/enum/GeoActions"
-import {UITypeExtend} from "@/views/graphic/menus";
+import { drawRef, FocusVector, VectorType } from "@/hook/useGraphic";
+import { computed, ref, toRaw, UnwrapRef } from "vue";
+import { dataService } from "@/graphic/Service/DataService";
+import GeoActions from "@/graphic/enum/GeoActions";
+import { UITypeExtend } from "@/views/graphic/menus";
 import VectorEvents from "@/graphic/enum/VectorEvents";
 import VectorStyle from "@/graphic/enum/VectorStyle";
 import VectorWeight from "@/graphic/enum/VectorWeight";
 import VectorCategory from "@/graphic/enum/VectorCategory";
 
-
-const props = defineProps<{ geo: FocusVector }>()
-const vector = computed(() => dataService.getLine(props.geo.vectorId))
-
-const isCurve = props.geo.type === VectorType.CurveLine
+const props = defineProps<{ geo: FocusVector }>();
+const vector = computed(() => dataService.getLine(props.geo.vectorId));
+const style = ref(vector.value.style || VectorStyle.SingleSolidLine);
+const isCurve = props.geo.type === VectorType.CurveLine;
 const clickHandlerFactory = (key) => {
-  return () => drawRef.value.uiControl.updateVectorForSelectUI(key)
-}
-console.log(props)
+  return () => drawRef.value.uiControl.updateVectorForSelectUI(key);
+};
 
 const lineTypeMenu = [
   {
     key: VectorStyle.SingleSolidLine,
     icon: "line_sf",
     text: "单实线",
-    onClick: clickHandlerFactory(VectorStyle.SingleSolidLine)
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.SingleSolidLine)();
+      style.value = VectorStyle.SingleSolidLine;
+    },
   },
   {
     key: VectorStyle.SingleDashedLine,
     icon: "line_sd",
     text: "单虚线",
-    onClick: clickHandlerFactory(VectorStyle.SingleDashedLine)
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.SingleDashedLine)();
+      style.value = VectorStyle.SingleDashedLine;
+    },
   },
   {
     hide: isCurve,
     key: VectorStyle.DoubleSolidLine,
     icon: "line_df",
     text: "双实线",
-    onClick: clickHandlerFactory(VectorStyle.DoubleSolidLine)
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.DoubleSolidLine)();
+      style.value = VectorStyle.DoubleSolidLine;
+    },
   },
   {
     hide: isCurve,
     key: VectorStyle.DoubleDashedLine,
     icon: "line_dd",
     text: "双虚线",
-    onClick: clickHandlerFactory(VectorStyle.DoubleDashedLine)
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.DoubleDashedLine)();
+      style.value = VectorStyle.DoubleDashedLine;
+    },
   },
   {
     hide: isCurve,
     key: VectorStyle.BrokenLine,
     icon: "line_broken",
     text: "折线",
-    onClick: clickHandlerFactory(VectorStyle.BrokenLine)
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.BrokenLine)();
+      style.value = VectorStyle.BrokenLine;
+    },
   },
   {
     key: VectorStyle.PointDrawLine,
     icon: "line_dot",
     text: "点画线",
-    onClick: clickHandlerFactory(VectorStyle.PointDrawLine)
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.PointDrawLine)();
+      style.value = VectorStyle.PointDrawLine;
+    },
   },
   // {key: VectorStyle.Greenbelt, icon: "treelawn", text: "绿化带 ", onClick: clickHandlerFactory(VectorStyle.Greenbelt)},
-]
+];
 const lineWidthMenu = [
   {
     key: VectorWeight.Bold,
-    icon: 'l_thick',
+    icon: "l_thick",
     text: "宽度",
     onClick: () => {
-      clickHandlerFactory(VectorWeight.Thinning)()
-      menus.value[1] = lineWidthMenu[1]
-    }
+      clickHandlerFactory(VectorWeight.Thinning)();
+      menus.value[1] = lineWidthMenu[1];
+    },
   },
   {
     key: VectorWeight.Thinning,
-    icon: 'l_thin',
+    icon: "l_thin",
     text: "宽度",
     onClick: () => {
-      clickHandlerFactory(VectorWeight.Bold)()
-      menus.value[1] = lineWidthMenu[0]
-    }
+      clickHandlerFactory(VectorWeight.Bold)();
+      menus.value[1] = lineWidthMenu[0];
+    },
   },
-]
+];
 
-const appendMenus = (props.geo.category === VectorCategory.Line.NormalLine || isCurve)
-  ? [
-    {
-      key: VectorEvents.AddCrossPoint,
-      icon: "control_a",
-      text: "加控制点",
-      onClick: clickHandlerFactory(VectorEvents.AddCrossPoint)
-    },
-    // {
-    //   key: VectorEvents.MinusCrossPoint,
-    //   icon: "control_d",
-    //   text: "减控制点",
-    //   onClick: clickHandlerFactory(VectorEvents.MinusCrossPoint)
-    // },
-  ]
-  : []
-const childMenus = ref<UnwrapRef<typeof menus>>()
+const appendMenus =
+  props.geo.category === VectorCategory.Line.NormalLine || isCurve
+    ? [
+        {
+          key: VectorEvents.AddCrossPoint,
+          icon: "control_a",
+          text: "加控制点",
+          onClick: clickHandlerFactory(VectorEvents.AddCrossPoint),
+        },
+        // {
+        //   key: VectorEvents.MinusCrossPoint,
+        //   icon: "control_d",
+        //   text: "减控制点",
+        //   onClick: clickHandlerFactory(VectorEvents.MinusCrossPoint)
+        // },
+      ]
+    : [];
+const childMenus = ref<UnwrapRef<typeof menus>>();
 const menus = ref([
-   {
+  {
     key: UITypeExtend.lineType,
-    text: "单实线",
-    icon: "line",
+    text: computed(() => lineTypeMenu.find((item) => item.key === style.value).text),
+    icon: computed(() => lineTypeMenu.find((item) => item.key === style.value).icon),
     onClick() {
-      childMenus.value = toRaw(childMenus.value) === lineTypeMenu ? null : lineTypeMenu
-    }
+      childMenus.value = toRaw(childMenus.value) === lineTypeMenu ? null : lineTypeMenu;
+    },
   },
   vector.value?.weight === VectorWeight.Bold ? lineWidthMenu[0] : lineWidthMenu[1],
   ...appendMenus,
   {
-    key: 'copy',
-    icon: 'copy',
+    key: "copy",
+    icon: "copy",
     text: "复制",
     onClick: () => {
-      drawRef.value.uiControl.handleGeo(GeoActions.CopyAction)
-    }
+      drawRef.value.uiControl.handleGeo(GeoActions.CopyAction);
+    },
   },
   {
-    key: 'del',
-    icon: 'del',
+    key: "del",
+    icon: "del",
     text: "删除",
     onClick: () => {
-      drawRef.value.uiControl.handleGeo(GeoActions.DeleteAction)
-    }
-  }
-])
+      drawRef.value.uiControl.handleGeo(GeoActions.DeleteAction);
+    },
+  },
+]);
 
 const active = computed(() =>
-  toRaw(childMenus.value) === lineTypeMenu ? menus.value[0]
-    : toRaw(childMenus.value) === lineWidthMenu ? menus.value[1] : null
-)
-
+  toRaw(childMenus.value) === lineTypeMenu
+    ? menus.value[0]
+    : toRaw(childMenus.value) === lineWidthMenu
+    ? menus.value[1]
+    : null
+);
 </script>
 
 <style lang="scss" scoped>

+ 16 - 6
src/views/graphic/geos/roadEdge.vue

@@ -1,4 +1,5 @@
 <template>
+  {{ style }}
   <GeoTeleport :menus="menus" class="geo-teleport-use" :active="active" />
   <GeoTeleport :menus="childMenus" v-if="childMenus" class="type-geo" />
 </template>
@@ -16,7 +17,7 @@ import VectorWeight from "@/graphic/enum/VectorWeight";
 
 const props = defineProps<{ geo: FocusVector }>();
 const vector = computed(() => dataService.getRoadEdge(props.geo.vectorId));
-console.error(vector.value);
+const style = ref(vector.value.style || VectorStyle.SingleSolidLine);
 
 const clickHandlerFactory = (key) => {
   return () => drawRef.value.uiControl.updateVectorForSelectUI(key);
@@ -27,13 +28,19 @@ const lineTypeMenu = [
     key: VectorStyle.SingleSolidLine,
     icon: "line_sf",
     text: "单实线",
-    onClick: clickHandlerFactory(VectorStyle.SingleSolidLine),
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.SingleSolidLine)();
+      style.value = VectorStyle.SingleSolidLine;
+    },
   },
   {
     key: VectorStyle.SingleDashedLine,
     icon: "line_sd",
     text: "单虚线",
-    onClick: clickHandlerFactory(VectorStyle.SingleDashedLine),
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.SingleDashedLine)();
+      style.value = VectorStyle.SingleDashedLine;
+    },
   },
   // {
   //   hide: props.geo.type === VectorType.CurveRoadEdge,
@@ -60,7 +67,10 @@ const lineTypeMenu = [
     key: VectorStyle.PointDrawLine,
     icon: "line_dot",
     text: "点画线",
-    onClick: clickHandlerFactory(VectorStyle.PointDrawLine),
+    onClick: () => {
+      clickHandlerFactory(VectorStyle.PointDrawLine)();
+      style.value = VectorStyle.PointDrawLine;
+    },
   },
   // {key: VectorStyle.Greenbelt, icon: "treelawn", text: "绿化带 ", onClick: clickHandlerFactory(VectorStyle.Greenbelt)},
 ];
@@ -108,8 +118,8 @@ const childMenus = ref<UnwrapRef<typeof menus>>();
 const menus = ref([
   {
     key: UITypeExtend.lineType,
-    text: "单实线",
-    icon: "line",
+    text: computed(() => lineTypeMenu.find((item) => item.key === style.value).text),
+    icon: computed(() => lineTypeMenu.find((item) => item.key === style.value).icon),
     onClick() {
       childMenus.value = toRaw(childMenus.value) === lineTypeMenu ? null : lineTypeMenu;
     },

+ 16 - 16
src/views/graphic/menus.ts

@@ -125,22 +125,22 @@ export const measureMenusRaw = [
     //   }
     // },
   },
-  {
-    key: UIType.AllLocationMode,
-    text: "综合定位法",
-    icon: "measure_c",
-    // onClick(data) {
-    //   if (graphicState.value.canAllLocationMode) {
-    //     uiType.change(data.key);
-    //   } else {
-    //     Message.success({
-    //       msg: "请添加基准线及基准点后再执行此操作",
-    //       time: 3000,
-    //     });
-    //   }
-    // },
-    border: true,
-  },
+  // {
+  //   key: UIType.AllLocationMode,
+  //   text: "综合定位法",
+  //   icon: "measure_c",
+  //   // onClick(data) {
+  //   //   if (graphicState.value.canAllLocationMode) {
+  //   //     uiType.change(data.key);
+  //   //   } else {
+  //   //     Message.success({
+  //   //       msg: "请添加基准线及基准点后再执行此操作",
+  //   //       time: 3000,
+  //   //     });
+  //   //   }
+  //   // },
+  //   border: true,
+  // },
   {
     key: UIType.FreeMeasureLine,
     text: "自由测量",