forked from integrated_whb/integrated_whb_vue
				
			实时追踪
							parent
							
								
									3ad5910d14
								
							
						
					
					
						commit
						b7727b0f5e
					
				
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.5 KiB | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.5 KiB | 
|  | @ -74,18 +74,25 @@ const props = defineProps({ | |||
|     required: true, | ||||
|     default: false, | ||||
|   }, | ||||
|   isRealTimeTracking: { | ||||
|     type: Boolean, | ||||
|     required: true, | ||||
|     default: false, | ||||
|   }, | ||||
| }); | ||||
| const emits = defineEmits([ | ||||
|   "update:leftCurrentComponent", | ||||
|   "update:rightCurrentComponent", | ||||
|   "update:rightOption", | ||||
|   "update:isHistoricalTrajectory", | ||||
|   "update:isRealTimeTracking", | ||||
| ]); | ||||
| const { | ||||
|   leftCurrentComponent, | ||||
|   rightCurrentComponent, | ||||
|   rightOption, | ||||
|   isHistoricalTrajectory, | ||||
|   isRealTimeTracking, | ||||
| } = useVModels(props, emits); | ||||
| 
 | ||||
| const bottomOptionsList = [ | ||||
|  | @ -144,6 +151,17 @@ const bottomOptionsList = [ | |||
|         type: "historicalTrajectory", | ||||
|         check: false, | ||||
|       }, | ||||
|       { | ||||
|         img: new URL("/src/assets/images/map/bottom/ico19.png", import.meta.url) | ||||
|           .href, | ||||
|         imgSelect: new URL( | ||||
|           "/src/assets/images/map/bottom/ico19_on.png", | ||||
|           import.meta.url | ||||
|         ).href, | ||||
|         title: "实时追踪", | ||||
|         type: "realTimeTracking", | ||||
|         check: false, | ||||
|       }, | ||||
|     ], | ||||
|   }, | ||||
|   { | ||||
|  | @ -376,8 +394,9 @@ const fnBottomOptionsListChange = (item, index) => { | |||
|   rightOption.value = index !== 4; | ||||
| }; | ||||
| const fnBottomChildOptionsListChange = (index, item1, index1) => { | ||||
|   const singleChoiceType = ["historicalTrajectory", "realTimeTracking"]; | ||||
|   const currentItem = data.bottomOptionsList[index].list[index1]; | ||||
|   if (item1.type === "historicalTrajectory") { | ||||
|   if (singleChoiceType.includes(item1.type)) { | ||||
|     for (let i = 0; i < data.bottomOptionsList.length; i++) { | ||||
|       for (let j = 0; j < data.bottomOptionsList[i].list.length; j++) { | ||||
|         const currentForItem = data.bottomOptionsList[i].list[j]; | ||||
|  | @ -388,20 +407,26 @@ const fnBottomChildOptionsListChange = (index, item1, index1) => { | |||
|       } | ||||
|     } | ||||
|     currentItem.check = !currentItem.check; | ||||
|     if (item1.type === "historicalTrajectory") { | ||||
|       isHistoricalTrajectory.value = !isHistoricalTrajectory.value; | ||||
|       isRealTimeTracking.value = false; | ||||
|     } | ||||
|     if (item1.type === "realTimeTracking") { | ||||
|       isRealTimeTracking.value = !isRealTimeTracking.value; | ||||
|       isHistoricalTrajectory.value = false; | ||||
|     } | ||||
|   } else { | ||||
|     let isSelf = false; | ||||
|     for (let i = 0; i < data.bottomOptionsList.length; i++) { | ||||
|       for (let j = 0; j < data.bottomOptionsList[i].list.length; j++) { | ||||
|         const currentForItem = data.bottomOptionsList[i].list[j]; | ||||
|         if (currentForItem.type === "historicalTrajectory") { | ||||
|         if (singleChoiceType.includes(currentForItem.type)) { | ||||
|           if (currentForItem.check) { | ||||
|             currentForItem.check = false; | ||||
|             isHistoricalTrajectory.value = false; | ||||
|           isSelf = true; | ||||
|           break; | ||||
|             isRealTimeTracking.value = false; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       if (isSelf) break; | ||||
|     } | ||||
|     currentItem.check = !currentItem.check; | ||||
|     if (currentItem.action) currentItem.action(currentItem.check, item1.type); | ||||
|  |  | |||
|  | @ -0,0 +1,88 @@ | |||
| <template> | ||||
|   <div class="container"> | ||||
|     <el-row align="middle"> | ||||
|       <el-col :span="24"> | ||||
|         <el-form | ||||
|           :model="data.searchForm" | ||||
|           label-width="10px" | ||||
|           @submit.prevent="fnGetData" | ||||
|         > | ||||
|           <el-row> | ||||
|             <el-col :span="16"> | ||||
|               <el-form-item prop="personnel"> | ||||
|                 <el-select v-model="data.searchForm.personnel" filterable> | ||||
|                   <el-option | ||||
|                     v-for="item in data.personList" | ||||
|                     :key="item.id" | ||||
|                     :label="`${item.name}(${item.id})`" | ||||
|                     :value="item.id" | ||||
|                   /> | ||||
|                 </el-select> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|             <el-col :span="8"> | ||||
|               <el-form-item> | ||||
|                 <el-button type="primary" native-type="submit">追踪</el-button> | ||||
|                 <el-button native-type="reset" @click="fnReset" | ||||
|                   >更新数据</el-button | ||||
|                 > | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|           </el-row> | ||||
|         </el-form> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script setup> | ||||
| import { onBeforeUnmount, reactive } from "vue"; | ||||
| import { getRealTimeList } from "@/request/map.js"; | ||||
| import { ElMessage } from "element-plus"; | ||||
| import { trackUser } from "../js/trajectory.js"; | ||||
| 
 | ||||
| const data = reactive({ | ||||
|   searchForm: { | ||||
|     personnel: "", | ||||
|   }, | ||||
|   personList: [], | ||||
| }); | ||||
| const fnGetPersonList = async () => { | ||||
|   const resData = await getRealTimeList(); | ||||
|   const personList = resData.data.data.list; | ||||
|   for (let i = 0; i < personList.length; i++) { | ||||
|     personList[i] = personList[i].split(","); | ||||
|     data.personList.push({ | ||||
|       id: personList[i][0], | ||||
|       name: personList[i][5], | ||||
|     }); | ||||
|   } | ||||
| }; | ||||
| fnGetPersonList(); | ||||
| const fnGetData = () => { | ||||
|   if (!data.searchForm.personnel) { | ||||
|     ElMessage.warning("请选择人员"); | ||||
|     return; | ||||
|   } | ||||
|   trackUser(data.searchForm.personnel, true); | ||||
| }; | ||||
| const fnReset = () => { | ||||
|   fnGetPersonList(); | ||||
|   trackUser("", false); | ||||
| }; | ||||
| onBeforeUnmount(() => { | ||||
|   trackUser("", false); | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
| <style scoped lang="scss"> | ||||
| .container { | ||||
|   position: absolute; | ||||
|   left: 500px; | ||||
|   bottom: 240px; | ||||
|   background-color: rgba(42, 86, 158, 0.53); | ||||
|   width: 30%; | ||||
|   padding: 18px 10px 0; | ||||
|   border-radius: 5px; | ||||
| } | ||||
| </style> | ||||
|  | @ -38,6 +38,7 @@ | |||
|             v-model:right-current-component="rightCurrentComponent" | ||||
|             v-model:right-option="right_option" | ||||
|             v-model:is-historical-trajectory="isHistoricalTrajectory" | ||||
|             v-model:is-real-time-tracking="isRealTimeTracking" | ||||
|           /> | ||||
|         </div> | ||||
|       </transition> | ||||
|  | @ -68,6 +69,13 @@ | |||
|         v-if="isHistoricalTrajectory && !isPureMap" | ||||
|       /> | ||||
|     </transition> | ||||
|     <transition | ||||
|       enter-active-class="animate__animated animate__fadeInDown" | ||||
|       leave-active-class="animate__animated animate__fadeOutDown" | ||||
|       mode="out-in" | ||||
|     > | ||||
|       <real-time-tracking v-if="isRealTimeTracking && !isPureMap" /> | ||||
|     </transition> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
|  | @ -81,6 +89,7 @@ import { initMap } from "./js/map"; | |||
| import { useUserStore } from "@/pinia/user.js"; | ||||
| import { getEnterpriseInfo } from "@/request/enterprise_management.js"; | ||||
| import HistoricalTrajectoryOptions from "@/views/BI/components/historical_trajectory_options.vue"; | ||||
| import RealTimeTracking from "@/views/BI/components/real_time_tracking.vue"; | ||||
| 
 | ||||
| const router = useRouter(); | ||||
| const right_option = ref(true); | ||||
|  | @ -88,6 +97,7 @@ const transitionKey = ref(0); | |||
| const leftCurrentComponent = ref(""); | ||||
| const rightCurrentComponent = ref(""); | ||||
| const isHistoricalTrajectory = ref(false); | ||||
| const isRealTimeTracking = ref(false); | ||||
| const isPureMap = ref(false); | ||||
| const userStore = useUserStore(); | ||||
| const CORPINFO_ID = userStore.getUserInfo.CORPINFO_ID; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue