소스 검색

feat: 增加focus

gemercheung 1 년 전
부모
커밋
4ee230ca07
4개의 변경된 파일52개의 추가작업 그리고 12개의 파일을 삭제
  1. 4 3
      src/locales/lang/json/zh-CN.json
  2. 21 2
      src/views/map/index.vue
  3. 24 6
      src/views/map/sceneModal.vue
  4. 3 1
      src/views/map/share.vue

+ 4 - 3
src/locales/lang/json/zh-CN.json

@@ -326,8 +326,6 @@
   "routes.corporation.subNum": "已添加员工数",
   "routes.corporation.sub_account": "员工账号",
   "routes.corporation.submitTime": "提交时间",
-  "routes.corporation.test123": "zh-test123 ",
-  "routes.corporation.test1232": "zh-test1232 ",
   "routes.corporation.timeField": "提交时间",
   "routes.corporation.unBind": "解除绑定",
   "routes.corporation.website": "企业官网",
@@ -624,5 +622,8 @@
   "layout.map.location": "位置",
   "layout.map.allProject": "全部项目",
   "layout.map.allScene": "全部场景",
-  "layout.map.mapShare": "地图分享"
+  "layout.map.mapShare": "地图分享",
+  "layout.map.view": "查看",
+  "layout.map.addScene": "添加场景",
+  "layout.map.projectScene": "项目场景"
 }

+ 21 - 2
src/views/map/index.vue

@@ -185,6 +185,7 @@
       lng: string;
       title: string;
       webSite: string;
+      num?: string;
     }[]
   >([]);
   // locations.value = locations.value.concat(all);
@@ -248,8 +249,22 @@
     data.webSite && window.open(data.webSite);
   };
 
-  const handleSelect = (item: any) => {
-    console.log('onSelect', item);
+  const handleSelect = (num: any) => {
+    const select = locations.value.find((item) => item?.num === num);
+    console.log('onSelect', num, select);
+    if (select) {
+      const { lat, lng } = select;
+      setCenter(Number(lat), Number(lng));
+    }
+  };
+
+  const setCenter = (lat: number, lng: number) => {
+    if (mapRef.value) {
+      // debugger;
+      // console.log('mapRef.value', mapRef.value);
+      mapRef.value.map?.setCenter({ lat, lng });
+      mapRef.value.map?.setZoom(14);
+    }
   };
 
   const handleShare = async () => {
@@ -271,6 +286,7 @@
       mapper.lat = Number(item.lat);
       mapper.lng = Number(item.lon);
       mapper.title = item.title;
+      mapper.num = item.num;
       mapper.webSite = item.webSite;
       return mapper;
     });
@@ -363,4 +379,7 @@
   :global(.ant-popover-inner) {
     background: rgba(26, 26, 26, 0.8);
   }
+  :global(.ant-popover-arrow-content) {
+    background: rgba(26, 26, 26, 0.8);
+  }
 </style>

+ 24 - 6
src/views/map/sceneModal.vue

@@ -2,7 +2,7 @@
   <BasicModal
     v-bind="$attrs"
     @register="register"
-    title="项目场景"
+    :title="t('layout.map.projectScene')"
     @ok="handleSubmit"
     :width="850"
     @cancel="handleCancel"
@@ -10,22 +10,34 @@
   >
     <BasicTable @register="registerTable" v-if="!isAdding">
       <template #toolbar>
-        <a-button type="primary" @click="isAdding = true">添加场景</a-button>
+        <a-button type="primary" @click="isAdding = true">{{ t('layout.map.addScene') }}</a-button>
+      </template>
+      <template #cameraType="{ record }">
+        <!-- <span v-if="Number(record.sceneSource) === 0">{{ t('routes.scenes.4dkk') }}</span>
+        <span v-if="Number(record.sceneSource) === 1">{{ t('routes.scenes.4dkj') }}</span>
+        <span v-if="Number(record.sceneSource) === 2">{{ t('routes.scenes.4dssdy') }}</span> -->
+        <span v-if="Number(record.sceneSource) === 3">{{ t('routes.scenes.4dkj') }}</span>
+        <span v-else-if="Number(record.sceneSource) === 4">{{ t('routes.scenes.obj') }}</span>
+        <span v-else-if="Number(record.sceneSource) === 5">{{ t('routes.scenes.4dsg') }}</span>
+        <span v-else>{{ t('routes.scenes.4dkk') }}</span>
+        <!-- <span v-if="Number(record.sceneSource) === 4">{{ t('routes.scenes.obj') }}</span>
+        <span v-if="Number(record.sceneSource) === 5">{{ t('routes.scenes.4dsg') }}</span>
+        <span v-if="Number(record.sceneSource) === 6">{{ t('routes.scenes.4dsgobj') }}</span> -->
       </template>
       <template #action="{ record }">
         <TableAction
           :actions="[
             {
-              label: '查看',
-              tooltip: '查看',
+              label: t('layout.map.view'),
+              tooltip: t('layout.map.view'),
               disabled: !record.webSite,
               onClick: () => handleSceneOpen(record),
             },
             {
               color: 'error',
               // icon: 'mage:edit-fill',
-              label: '删除',
-              tooltip: '删除',
+              label: t('common.delText'),
+              tooltip: t('common.delText'),
               popConfirm: {
                 title: t('common.delConfirm'),
                 confirm: () => handleSceneDel(record),
@@ -119,6 +131,12 @@
           width: 100,
         },
         {
+          title: t('routes.devices.cameraType'),
+          dataIndex: 'cameraType',
+          slots: { customRender: 'cameraType' },
+          width: 100,
+        },
+        {
           title: t('routes.scenes.snCode'),
           dataIndex: 'snCode',
           width: 100,

+ 3 - 1
src/views/map/share.vue

@@ -143,7 +143,6 @@
   // import { QrCode } from '/@/components/Qrcode/index';
   // import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
   // import { useMessage } from '/@/hooks/web/useMessage';
-
   const { t } = useI18n();
   // const router = useRouter();
   const googleKey = computed(() => import.meta.env.VITE_GOOGLE_KEY);
@@ -196,6 +195,9 @@
 
   onMounted(async () => {
     watchEffect(async () => {
+      if (type.value) {
+        form.value.type = Number(type.value);
+      }
       if (type.value && ciphertext.value) {
         await sceneFetch({
           type: type.value,