소스 검색

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/types/components.d.ts
hmm 7 달 전
부모
커밋
0fc93aab20

+ 1 - 1
.env.production

@@ -14,7 +14,7 @@ VITE_APP_MONITOR_ADMIN = '/admin/applications'
 VITE_APP_SNAILJOB_ADMIN = '/snail-job'
 
 # 生产环境
-VITE_APP_BASE_API = '/'
+VITE_APP_BASE_API = ''
 VITE_APP_BASE_API2 = '/'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli

+ 9 - 0
src/api/emergencyCommandMap/JointDuty.ts

@@ -94,6 +94,15 @@ export function getUnits(params) {
   });
 }
 
+// 获取用户信息(静态)
+export function getUser(params) {
+  return request({
+    url: '/system/user/getInfo',
+    method: 'get',
+    params: params
+  });
+}
+
 // 任务删除
 export function deleteTask(data) {
   return request({

+ 1 - 0
src/components/Dialog/index.vue

@@ -208,6 +208,7 @@ const confirm = () => {
     padding: 0 40px;
   }
   .dialog-footer {
+    padding: 0 30px;
     height: 150px;
     display: flex;
     justify-content: flex-end;

+ 5 - 5
src/components/Map/YMap.vue

@@ -33,7 +33,7 @@ interface Props {
 const props = withDefaults(defineProps<Props>(), {});
 
 const mapState = reactive({
-  center: [110.93154257997, 21.669064031332],
+  center: [110.925175, 21.678955],
   zoom: 10,
   minZoom: 6,
   maxZoom: 16,
@@ -118,16 +118,16 @@ const setMapZoom = (value) => {
     map.setCenter([113.280637, 23.125178]);
     map.setZoom(7);
   } else if (value === 2) {
-    map.setCenter([110.93154257997, 21.6690640313328]);
+    map.setCenter([110.925175, 21.678955]);
     map.setZoom(11);
   } else if (value === 3) {
-    map.setCenter([110.93154257997, 21.669064031332]);
+    map.setCenter([110.925175, 21.678955]);
     map.setZoom(12);
   } else if (value === 4) {
-    map.setCenter([110.93154257997, 21.669064031332]);
+    map.setCenter([110.925175, 21.678955]);
     map.setZoom(15);
   } else if (value === 5) {
-    map.setCenter([110.93154257997, 21.669064031332]);
+    map.setCenter([110.925175, 21.678955]);
     map.setZoom(16);
   }
 };

+ 5 - 5
src/components/Map/YztMap/index.vue

@@ -20,7 +20,7 @@ const emits = defineEmits(['update:drawing', 'selectGraphics']);
 
 const mapRef = ref(null);
 const mapState = reactive({
-  center: [110.93154257997, 21.669064031332],
+  center: [110.925175, 21.678955],
   zoom: 7.9,
   minZoom: 6,
   maxZoom: 16,
@@ -101,16 +101,16 @@ const setMapZoom = (value) => {
     view.setCenter([113.280637, 23.125178]);
     view.setZoom(7);
   } else if (value === 2) {
-    view.setCenter([110.93154257997, 21.6690640313328]);
+    view.setCenter([110.925175, 21.678955]);
     view.setZoom(11);
   } else if (value === 3) {
-    view.setCenter([110.93154257997, 21.669064031332]);
+    view.setCenter([110.925175, 21.678955]);
     view.setZoom(12);
   } else if (value === 4) {
-    view.setCenter([110.93154257997, 21.669064031332]);
+    view.setCenter([110.925175, 21.678955]);
     view.setZoom(15);
   } else if (value === 5) {
-    view.setCenter([110.93154257997, 21.669064031332]);
+    view.setCenter([110.925175, 21.678955]);
     view.setZoom(16);
   }
 };

+ 1 - 1
src/components/Map/company-map.vue

@@ -202,7 +202,7 @@ function handlePanTo(index) {
   closeSearchList();
 }
 const initMap = async () => {
-  let position = [110.93154257997, 21.669064031332];
+  let position = [110.925175, 21.678955];
   const AMap = await AMapLoader.load({
     key: '30d3d8448efd68cb0b284549fd41adcf', // 申请好的Web端开发者Key,首次调用 load 时必填
     version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15

+ 5 - 5
src/components/Map/index.vue

@@ -75,7 +75,7 @@ const width = ref('100%');
 const height = ref('100%');
 
 const mapState = reactive({
-  center: [110.93154257997, 21.669064031332],
+  center: [110.925175, 21.678955],
   zoom: 7.9,
   minZoom: 6,
   maxZoom: 20,
@@ -403,16 +403,16 @@ const changeScaleControl = () => {
 const setMapZoom = (value) => {
   if (!map) return;
   if (value === 1) {
-    map.setCenter([113.280637, 23.125178]);
+    map.setCenter([110.925175, 21.678955]);
     map.setZoom(7.9);
   } else if (value === 2) {
-    map.setCenter([110.93154257997, 21.6690640313328]);
+    map.setCenter([110.925175, 21.6789558]);
     map.setZoom(9.21);
   } else if (value === 3) {
-    map.setCenter([110.93154257997, 21.669064031332]);
+    map.setCenter([110.925175, 21.678955]);
     map.setZoom(11.38);
   } else if (value === 4) {
-    map.setCenter([110.93154257997, 21.669064031332]);
+    map.setCenter([110.925175, 21.678955]);
     map.setZoom(12.83);
   }
 };

+ 0 - 2
src/components/NearbyVideos/index.vue

@@ -26,8 +26,6 @@
 <script lang="ts" setup name="NearbyVideos">
 // 请求参数
 import { getVideoInfo } from '@/api/globalMap';
-import { getWaterloggedRoadsUpdateTime } from '@/api/globalMap/potentialFloodHazard';
-import { parseTime } from "@/utils/ruoyi";
 
 interface Props {
   modelValue: boolean;

+ 0 - 4
src/types/auto-imports.d.ts

@@ -78,7 +78,6 @@ declare global {
   const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
   const onUnmounted: typeof import('vue')['onUnmounted']
   const onUpdated: typeof import('vue')['onUpdated']
-  const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
   const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
   const provide: typeof import('vue')['provide']
   const provideLocal: typeof import('@vueuse/core')['provideLocal']
@@ -190,7 +189,6 @@ declare global {
   const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
   const useGamepad: typeof import('@vueuse/core')['useGamepad']
   const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
-  const useId: typeof import('vue')['useId']
   const useIdle: typeof import('@vueuse/core')['useIdle']
   const useImage: typeof import('@vueuse/core')['useImage']
   const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
@@ -207,7 +205,6 @@ declare global {
   const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
   const useMemoize: typeof import('@vueuse/core')['useMemoize']
   const useMemory: typeof import('@vueuse/core')['useMemory']
-  const useModel: typeof import('vue')['useModel']
   const useMounted: typeof import('@vueuse/core')['useMounted']
   const useMouse: typeof import('@vueuse/core')['useMouse']
   const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
@@ -255,7 +252,6 @@ declare global {
   const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
   const useSupported: typeof import('@vueuse/core')['useSupported']
   const useSwipe: typeof import('@vueuse/core')['useSwipe']
-  const useTemplateRef: typeof import('vue')['useTemplateRef']
   const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
   const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
   const useTextSelection: typeof import('@vueuse/core')['useTextSelection']

+ 1 - 36
src/types/components.d.ts

@@ -17,42 +17,6 @@ declare module 'vue' {
     Dialog: typeof import('./../components/Dialog/index.vue')['default']
     DictTag: typeof import('./../components/DictTag/index.vue')['default']
     Editor: typeof import('./../components/Editor/index.vue')['default']
-    ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
-    ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
-    ElButton: typeof import('element-plus/es')['ElButton']
-    ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
-    ElCol: typeof import('element-plus/es')['ElCol']
-    ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
-    ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
-    ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
-    ElDialog: typeof import('element-plus/es')['ElDialog']
-    ElDivider: typeof import('element-plus/es')['ElDivider']
-    ElDrawer: typeof import('element-plus/es')['ElDrawer']
-    ElDropdown: typeof import('element-plus/es')['ElDropdown']
-    ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
-    ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
-    ElForm: typeof import('element-plus/es')['ElForm']
-    ElFormItem: typeof import('element-plus/es')['ElFormItem']
-    ElIcon: typeof import('element-plus/es')['ElIcon']
-    ElImage: typeof import('element-plus/es')['ElImage']
-    ElInput: typeof import('element-plus/es')['ElInput']
-    ElLink: typeof import('element-plus/es')['ElLink']
-    ElMenu: typeof import('element-plus/es')['ElMenu']
-    ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
-    ElOption: typeof import('element-plus/es')['ElOption']
-    ElPagination: typeof import('element-plus/es')['ElPagination']
-    ElRow: typeof import('element-plus/es')['ElRow']
-    ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
-    ElSelect: typeof import('element-plus/es')['ElSelect']
-    ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
-    ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
-    ElSlider: typeof import('element-plus/es')['ElSlider']
-    ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
-    ElSwitch: typeof import('element-plus/es')['ElSwitch']
-    ElTimeline: typeof import('element-plus/es')['ElTimeline']
-    ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
-    ElTree: typeof import('element-plus/es')['ElTree']
-    ElUpload: typeof import('element-plus/es')['ElUpload']
     FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
     FooterSection: typeof import('./../components/FooterSection/index.vue')['default']
     Hamburger: typeof import('./../components/Hamburger/index.vue')['default']
@@ -94,6 +58,7 @@ declare module 'vue' {
     VideoContainer: typeof import('./../components/HKVideo/video-container.vue')['default']
     VideoContainer2: typeof import('./../components/HKVideo/video-container2.vue')['default']
     YMap: typeof import('./../components/Map/YMap.vue')['default']
+    YMapold: typeof import('./../components/Map/YMapold.vue')['default']
     YztMap: typeof import('./../components/Map/YztMap/index.vue')['default']
   }
 }

+ 19 - 8
src/views/emergencyCommandMap/RightSection/RenWuDengJi.vue

@@ -5,12 +5,7 @@
       <div class="dialog-body">
         <el-form ref="taskFormRef" :model="newTask">
           <el-form-item label="任务内容" label-width="200px">
-            <el-input
-              v-model="newTask.task_description"
-              class="custom-input2"
-              clearable
-              placeholder="请输入相关任务描述"
-            />
+            <el-input v-model="newTask.task_description" class="custom-input2" clearable placeholder="请输入相关任务描述" />
           </el-form-item>
           <el-form-item label="执行单位" label-width="200px">
             <el-select
@@ -36,13 +31,13 @@
 
 <script lang="ts" setup>
 import { ref, reactive, onMounted } from 'vue';
-import { addTask, getUnits } from '@/api/emergencyCommandMap/JointDuty.ts';
+import { addTask, getUnits, getUser } from '@/api/emergencyCommandMap/JointDuty.ts';
 
 const showRegisterDialog = ref(true);
 const newTask = reactive({
   task_description: '',
   unit_name: '',
-  registrar: '当前用户'
+  registrar: ''
 });
 const units = ref([]);
 
@@ -50,6 +45,21 @@ const props = defineProps<{
   eventId?: string;
 }>();
 
+// 获取当前登录用户信息
+const fetchUser = async () => {
+  try {
+    const response = await getUser();
+    if (response.code === 200) {
+      // 假设返回的用户信息中包含 username 字段
+      newTask.registrar = response.data.user.userName;
+    } else {
+      console.error('获取用户信息失败:', response.msg);
+    }
+  } catch (error) {
+    console.error('请求用户信息失败:', error);
+  }
+};
+
 const fetchUnits = async () => {
   try {
     const response = await getUnits();
@@ -85,6 +95,7 @@ const confirmRegister = async () => {
 };
 
 onMounted(() => {
+  fetchUser();
   fetchUnits();
 });
 </script>

+ 10 - 5
src/views/emergencyCommandMap/RightSection/RenWuGengXin.vue

@@ -18,7 +18,13 @@
             </el-col>
             <el-col :span="24">
               <el-form-item label="完成进度">
-                <el-select v-model="newTask.processing_status" class="custom-select" size="large" :teleported="false" popper-class="custom-select-popper">
+                <el-select
+                  v-model="newTask.processing_status"
+                  class="custom-select"
+                  size="large"
+                  :teleported="false"
+                  popper-class="custom-select-popper"
+                >
                   <el-option v-for="unit in units" :key="unit" :label="unit" :value="unit"></el-option>
                 </el-select>
               </el-form-item>
@@ -43,7 +49,7 @@ import { updateTaskRegistration } from '@/api/emergencyCommandMap/JointDuty.ts';
 
 const props = defineProps({
   modelValue: { type: Boolean, required: true },
-  task: { type: Object, default: () => ({ task_id: '', task_description: '', unit_name: '', registrar: '' }) },
+  task: { type: Object, default: () => ({ task_id: '', task_description: '', unit_name: '', registrar: '', processing_status: '' }) },
   eventId: { type: String, required: true }
 });
 
@@ -64,16 +70,16 @@ const resetForm = () => {
   newTask.task_description = '';
   newTask.unit_name = '';
   newTask.registrar = '';
+  newTask.processing_status = '';
 };
 
 // 任务进度更新
 const confirmRegister = async () => {
   console.log('任务进度更新:', newTask);
-  console.log('提交前的任务状态:', newTask.registrar);
   try {
     const response = await updateTaskRegistration({
       task_id: newTask.task_id,
-      processing_status: newTask.registrar,
+      processing_status: newTask.processing_status,
       event_code: props.eventId
     });
     if (response.code === 200) {
@@ -95,7 +101,6 @@ watch(
   () => props.task,
   (newTaskData) => {
     Object.assign(newTask, newTaskData);
-    console.log('当前任务状态:', newTask.processing_status);
   },
   { immediate: true }
 );

+ 1 - 1
src/views/globalMap/SwitchMapTool.vue

@@ -31,7 +31,7 @@ const mapData = ref([
   // { name: '逻辑地图', key: 'logical' },
   { name: '卫星地图', key: 'satellite' },
   { name: '矢量地图', key: 'vectorgraph' },
-  { name: '影像图', key: 'imageMap' }
+  // { name: '影像图', key: 'imageMap' }
   // { name: '粤政图2', key: 'satellite3' }
 ]);
 let open = ref(false);

+ 31 - 5
src/views/globalMap/index.vue

@@ -2,7 +2,6 @@
   <div id="globalMap">
     <div class="global-map">
       <MapLogical v-if="activeMap === 'logical'" :map-data="mapData" />
-      <!--      <YMap v-else-if="['imageMap', 'satellite2', 'satellite3'].includes(activeMap)" :activeMap="activeMap" />-->
       <YztMap v-else-if="['imageMap'].includes(activeMap)" ref="map2Ref" :active-map="activeMap" :point-type="pointType" />
       <Map
         v-else
@@ -51,11 +50,14 @@ import CommunicationSupport from '@/views/globalMap/RightMenu/CommunicationSuppo
 
 const rightMenuRef = ref(null);
 const mapData = reactive(logicalData);
+let map;
 let mapRef = ref(null);
 let map2Ref = ref(null);
 let leftMenuRef = ref(null);
 //  vectorgraph satellite imageMap 废弃:logical satellite2 satellite3
 let activeMap = ref('satellite');
+// 附近视频菜单数据
+let videoMenu = ref({});
 const communicationSupport = reactive({
   show: false,
   data: {}
@@ -144,8 +146,15 @@ const clickMenu = (item, dataList) => {
       );
     }
   } else if (item.path === '3') {
+    // 通讯保障
     communicationSupport.show = !communicationSupport.show;
     communicationSupport.data = item;
+  } else if (item.path === '4') {
+    videoMenu.value = item;
+    // 附近视频
+    map = getMap();
+    //为地图注册click事件获取鼠标点击出的经纬度坐标
+    map.on('click', handleClickMap);
   }
 };
 const handleHideCommunicationSupport = () => {
@@ -229,10 +238,24 @@ const trackPlayback = (data) => {
   return {};
 };
 let showNearbyVideos = ref(false);
-let location = reactive([]);
+let location = ref([]);
+watch(showNearbyVideos, () => {
+  if (!showNearbyVideos.value) {
+    location.value = [];
+    if (!!videoMenu.value) {
+      leftMenuRef.value.setMenuChange(videoMenu.value, false);
+      videoMenu.value = {};
+      map.off('click', handleClickMap);
+    }
+  }
+});
 // 显示附近视频
 const handleShowVideo = (data) => {
-  location = [data.longitude, data.latitude];
+  location.value = [data.longitude, data.latitude];
+  showNearbyVideos.value = true;
+};
+const handleClickMap = (e) => {
+  location.value = [e.lnglat.getLng(), e.lnglat.getLat()];
   showNearbyVideos.value = true;
 };
 let showWarehouse = ref(false);
@@ -241,11 +264,14 @@ const handleShowWarehouse = (data) => {
   warehouseData.value = data;
   showWarehouse.value = true;
 };
-// const handleResize = () => {
-// }
 // onMounted(() => {
 //   mapRef.value.addEventListener('resize', handleResize);
 // })
+onBeforeUnmount(() => {
+  if (!!map) {
+    map.off('click', handleClickMap);
+  }
+});
 
 provide('getMap', getMap);
 provide('trackPlayback', trackPlayback);