Forráskód Böngészése

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

yangyuxuan 4 napja
szülő
commit
225e2e7cb9

+ 1 - 1
src/api/system/menu/index.ts

@@ -5,7 +5,7 @@ import { MenuQuery, MenuVO, MenuForm, MenuTreeOption, RoleMenuTree } from './typ
 // 查询菜单列表
 export const listMenu = (query?: MenuQuery): AxiosPromise<MenuVO[]> => {
   return request({
-    url: '/api/system/menu/qydt/getRouters',
+    url: '/api/layerConfiguration/getRouters',
     method: 'get',
     params: query
   });

BIN
src/assets/images/menu/icon1.png


BIN
src/assets/images/menu/icon2.png


BIN
src/assets/images/menu/icon3.png


BIN
src/assets/images/menu/icon4.png


BIN
src/assets/images/menu/icon5.png


+ 1 - 1
src/store/modules/map.ts

@@ -142,7 +142,7 @@ export const useMapStore = defineStore('map', () => {
   // 初始化左侧菜单数据
   const initMenuData = () => {
     listMenu().then((res: any) => {
-      const data = res.data ? res.data[0]?.children : [];
+      const data = res.data ? res.data : [];
       data.forEach((item: any) => {
         item.show = true;
         item.name = item.meta?.title;

+ 1 - 2
src/views/emergencyCommandMap/LeftSection/Communication.vue

@@ -151,8 +151,7 @@ import { getStartMiniParam, getStartMiniWithNoParam, getAvconDeviceTree, getAvco
 import { deepClone } from '@/utils';
 import Drone from './Drone.vue';
 import IndividualEquipment from './IndividualEquipment.vue';
-import CommunicationDialog from './Communication-dialog';
-import EventManage from '@/views/routineCommandMap/RightSection/EventReport/EventManage.vue';
+import CommunicationDialog from './Communication-dialog.vue';
 const proxy = getCurrentInstance()?.proxy;
 const props = defineProps({
   flag: Boolean

+ 48 - 0
src/views/emergencyCommandMap/RightSection/LeaderInstruction.vue

@@ -0,0 +1,48 @@
+<template>
+  <Dialog draggable custom-show type="sm" title="领导批示" height="550px" @close="handleClose" @confirm="handleSubmit">
+    <el-form ref="formRef" :model="form" :rules="rules">
+      <el-form-item label="领导审批" label-width="200px" prop="content">
+        <el-input v-model="form.content" class="custom-input2" clearable placeholder="请输入领导审批意见" />
+      </el-form-item>
+    </el-form>
+  </Dialog>
+</template>
+
+<script lang="ts" setup>
+import { showSuccessMsg } from '@/utils/notification';
+
+const props = defineProps({
+  modelValue: {
+    type: Boolean
+  },
+  id: {
+    type: String
+  }
+});
+const emits = defineEmits(['update:modelValue', 'close', 'confirm']);
+const formRef = ref();
+
+const form = ref({
+  content: ''
+});
+const rules = {
+  content: [{ required: true, message: '领导批示不能为空', trigger: 'blur' }]
+};
+// 弹窗关闭后
+const handleClose = () => {
+  emits('update:modelValue', false);
+};
+
+//
+const handleSubmit = () => {
+  formRef.value?.validate((valid) => {
+    if (valid) {
+      showSuccessMsg('批示成功');
+      emits('update:modelValue', false);
+      emits('confirm');
+    }
+  });
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 11 - 0
src/views/emergencyCommandMap/RightSection/RenWuGenZong.vue

@@ -41,6 +41,8 @@
 
   <!--弹窗-->
   <RenWuGenZongInfo v-if="eventManageState.showListDialog" v-model="eventManageState.showListDialog" :event-id="eventId" />
+
+  <LeaderInstruction v-if="leaderInstructionState.show" v-model="leaderInstructionState.show" :id="leaderInstructionState.id" />
 </template>
 
 <script lang="ts" setup>
@@ -49,6 +51,7 @@ import { selectTask } from '@/api/emergencyCommandMap/JointDuty';
 import { parseTime } from '@/utils/ruoyi';
 import RenWuGengXin from '@/views/emergencyCommandMap/RightSection/RenWuGengXin.vue';
 import RenWuGenZongInfo from '@/views/emergencyCommandMap/RightSection/RenWuGenZongInfo.vue';
+import LeaderInstruction from '@/views/emergencyCommandMap/RightSection/LeaderInstruction.vue';
 
 const newSectionState = reactive({
   showListDialog: false
@@ -80,6 +83,10 @@ const showMoreEventManageList = () => {
 
 let timer;
 let isMounted = ref(false);
+const leaderInstructionState = ref({
+  show: false,
+  id: ''
+});
 // 请求数据
 const fetchData = (unNeedTimeout?: boolean) => {
   selectTask({ event_code: props.eventId })
@@ -109,6 +116,10 @@ const handleUpdateSuccess = (updatedData) => {
 const handleLeaderInstruction = (item) => {
   // 处理领导批示逻辑
   console.log('领导批示:', item);
+  leaderInstructionState.value = {
+    show: true,
+    id: item.id
+  };
 };
 
 const toggleExpand = (item) => {

+ 4 - 21
src/views/globalMap/LeftMenu.vue

@@ -83,11 +83,7 @@
           <div class="menu-content">
             <div v-for="(item, index) in menuData[menuState.activeIndex]?.children" :key="index" class="content-box">
               <div class="box-header">
-                <div v-if="item.name === '防风防汛'" class="icon1" style="width: 24px; height: 26px"></div>
-                <div v-if="item.name === '危化品安全监测' || item.name === '危险化工品'" class="icon2" style="width: 23px; height: 26px"></div>
-                <div v-if="item.name === '其他'" class="icon3" style="width: 26px; height: 26px"></div>
-                <div v-if="item.name === '水情监测'" class="icon4" style="width: 29px; height: 26px"></div>
-                <div v-if="item.name === '自然灾害监测'" class="icon5" style="width: 25px; height: 26px"></div>
+                <img v-if="item.meta && item.meta.icon" :src="baseUrl + downLoadApi + item.meta.icon" style="height: 87px" />
                 <div>{{ item.name }}</div>
                 <div :class="item.show ? 'expand-icon down-icon' : 'expand-icon up-icon'" @click="changeBoxShow(item)"></div>
               </div>
@@ -123,6 +119,9 @@ import useMapStore from '@/store/modules/map';
 const emits = defineEmits(['switchMap', 'clickMenu', 'selectSearchMarker', 'clearAllMenu']);
 const getMapUtils = inject('getMapUtils');
 const amapKey = 'e45d4caa2bef3c84714a2ed9b1e27d98';
+
+const baseUrl = import.meta.env.VITE_APP_BASE_API;
+const downLoadApi = '/api/file/get_img/get_img_by_id/';
 let mapUtils;
 const mapStore = useMapStore();
 // 左侧菜单
@@ -516,22 +515,6 @@ defineExpose({ setMenuChange, setMenuIndex });
           height: 3px;
           background-color: rgba(142, 189, 241, 0.3);
         }
-        .icon1 {
-          background-image: url('@/assets/images/menu/icon1.png');
-        }
-
-        .icon2 {
-          background-image: url('@/assets/images/menu/icon2.png');
-        }
-        .icon3 {
-          background-image: url('@/assets/images/menu/icon3.png');
-        }
-        .icon4 {
-          background-image: url('@/assets/images/menu/icon4.png');
-        }
-        .icon5 {
-          background-image: url('@/assets/images/menu/icon5.png');
-        }
 
         .expand-icon {
           position: absolute;

+ 4 - 1
src/views/globalMap/index.vue

@@ -249,7 +249,10 @@ const clickMenu = (item, dataList) => {
       let checked = item.checked ? '1' : '2';
       // 打点信息
       addMarkers(item);
-      if (['易涝隐患点', '省政务无人机', '铁塔运行监测', '通讯保障', '救援队伍', '重点车辆', '河道监测', '水库监测'].includes(item.name) || item.isVideo) {
+      if (
+        ['易涝隐患点', '省政务无人机', '铁塔运行监测', '通讯保障', '救援队伍', '重点车辆', '河道监测', '水库监测'].includes(item.name) ||
+        item.isVideo
+      ) {
         rightMenuRef.value.updateMenu(checked, item);
       } else {
         let index = findChecked(dataList, item.name);