From 476b7787e90f131b5f3cdc2b0964441403b20cd9 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 04 Feb 2026 09:37:55 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web

---
 applications/mobile-web-view/env/.env             |    2 
 /dev/null                                         |  171 ------------------------------------------
 applications/mobile-web-view/env/.env.development |   20 ----
 applications/mobile-web-view/env/.env.localhost   |    7 -
 applications/mobile-web-view/env/.env.production  |   16 ---
 applications/mobile-web-view/env/.env.test        |   11 --
 6 files changed, 5 insertions(+), 222 deletions(-)

diff --git a/applications/mobile-web-view/env/.env b/applications/mobile-web-view/env/.env
index 0020e3c..a9205bb 100644
--- a/applications/mobile-web-view/env/.env
+++ b/applications/mobile-web-view/env/.env
@@ -23,5 +23,3 @@
 #地址搜索服务
 VITE_APP_SEARCH_URL = https://wrj.shuixiongit.com/gd-restapi-amap
 
-#算法平台地址
-VITE_APP_AI_PLAT_URL = http://192.168.1.54:30800
diff --git a/applications/mobile-web-view/env/.env.development b/applications/mobile-web-view/env/.env.development
index 335cf71..903d8ac 100644
--- a/applications/mobile-web-view/env/.env.development
+++ b/applications/mobile-web-view/env/.env.development
@@ -1,13 +1,3 @@
-###
- # @Author       : yuan
- # @Date         : 2025-06-18 11:40:10
- # @LastEditors  : yuan
- # @LastEditTime : 2025-09-27 15:06:24
- # @FilePath     : \.env.development
- # @Description  :
- # Copyright 2025 OBKoro1, All Rights Reserved.
- # 2025-06-18 11:40:10
-###
 #开发环境配置
 VITE_APP_ENV = 'development'
 
@@ -27,13 +17,10 @@
 # 航线文件地址
 VITE_APP_AIRLINE_URL = https://wrj.shuixiongit.com/minio/cloud-bucket
 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket
-#管理后台地址
-VITE_APP_ADMIN_URL = 'https://wrj.shuixiongit.com/manage/'
+
 #内嵌航线规划iframe地址
 VITE_APP_WAY_LINE_PLAN = 'https://wrj.shuixiongit.com/bigScreen/#/layout/iframeWayline'
 
-# 地形存放地址
-VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/
 
 # 行政区划存放地址
 VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
@@ -41,14 +28,9 @@
 # 国土举证 图片和视频
 VITE_APP_MEDIAPANEL_API_URL = https://wrj.shuixiongit.com/minio/cloud-bucket
 
-#域名
-VITE_APP_AREA_NAME = https://wrj.shuixiongit.com
 
 # arcgis服务图层地址
 VITE_APP_ARCGIS_URL = https://wrj.shuixiongit.com/arcgis116
 
 #地址搜索服务
 VITE_APP_SEARCH_URL = https://wrj.shuixiongit.com/gd-restapi-amap
-
-# 3Dtiles地址
-VITE_APP_3DTILE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_tiles
diff --git a/applications/mobile-web-view/env/.env.localhost b/applications/mobile-web-view/env/.env.localhost
index 14ee4a4..f299240 100644
--- a/applications/mobile-web-view/env/.env.localhost
+++ b/applications/mobile-web-view/env/.env.localhost
@@ -17,13 +17,10 @@
 VITE_APP_AIRLINE_URL = http://192.168.1.227:80/minio/cloud-bucket
 
 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket
-#管理后台地址
-VITE_APP_ADMIN_URL = 'http://192.168.1.227:5174/manage/'
+
 #内嵌航线规划iframe地址
 VITE_APP_WAY_LINE_PLAN = 'http://192.168.1.227:80/bigScreen/#/layout/iframeWayline'
 
-# 地形存放地址
-VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/
 
 # 行政区划存放地址
 VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
@@ -31,8 +28,6 @@
 # 国土举证 图片和视频
 VITE_APP_MEDIAPANEL_API_URL = http://192.168.1.227:80/minio/cloud-bucket
 
-#域名
-VITE_APP_AREA_NAME = http://192.168.1.227:80/dji_in_rectangle
 
 # arcgis服务图层地址
 VITE_APP_ARCGIS_URL = http://192.168.1.227:80/arcgis116
diff --git a/applications/mobile-web-view/env/.env.production b/applications/mobile-web-view/env/.env.production
index 475e309..bc56c1b 100644
--- a/applications/mobile-web-view/env/.env.production
+++ b/applications/mobile-web-view/env/.env.production
@@ -4,10 +4,10 @@
  # @LastEditors  : yuan
  # @LastEditTime : 2025-09-27 15:09:17
  # @FilePath     : \.env.production
- # @Description  : 
- # Copyright 2025 OBKoro1, All Rights Reserved. 
+ # @Description  :
+ # Copyright 2025 OBKoro1, All Rights Reserved.
  # 2025-09-26 16:06:57
-### 
+###
 #生产环境配置
 VITE_APP_ENV = 'production'
 
@@ -27,14 +27,10 @@
 
 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket
 
-# 管理后台地址
-VITE_APP_ADMIN_URL = 'https://aisky.org.cn/manage/'
 
 #内嵌航线规划iframe地址
 VITE_APP_WAY_LINE_PLAN = 'https://aisky.org.cn/bigScreen/#/layout/iframeWayline'
 
-# 地形存放地址
-VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/
 
 # 行政区划存放地址
 VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
@@ -42,14 +38,8 @@
 # 国土举证 图片和视频
 VITE_APP_MEDIAPANEL_API_URL =  https://aisky.org.cn/minio/cloud-bucket
 
-#域名
-VITE_APP_AREA_NAME = https://aisky.org.cn
-
 # arcgis服务图层地址
 VITE_APP_ARCGIS_URL =  https://aisky.org.cn/arcgis116
 
 #地址搜索服务
 VITE_APP_SEARCH_URL = https://aisky.org.cn/gd-restapi-amap
-
-# 3Dtiles地址
-VITE_APP_3DTILE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_tiles
diff --git a/applications/mobile-web-view/env/.env.test b/applications/mobile-web-view/env/.env.test
index 0d93f42..f285209 100644
--- a/applications/mobile-web-view/env/.env.test
+++ b/applications/mobile-web-view/env/.env.test
@@ -24,14 +24,9 @@
 VITE_APP_AIRLINE_URL = https://wrj.shuixiongit.com/minio/cloud-bucket
 
 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket
-#管理后台地址
-VITE_APP_ADMIN_URL = 'https://wrj.shuixiongit.com/manage/'
 
 #内嵌航线规划iframe地址
 VITE_APP_WAY_LINE_PLAN = 'https://wrj.shuixiongit.com/bigScreen/#/layout/iframeWayline'
-
-# 地形存放地址
-VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/
 
 # 行政区划存放地址
 VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
@@ -39,11 +34,5 @@
 # 国土举证 图片和视频
 VITE_APP_MEDIAPANEL_API_URL = https://wrj.shuixiongit.com/minio/cloud-bucket
 
-#域名
-VITE_APP_AREA_NAME = https://wrj.shuixiongit.com
-
 # arcgis服务图层地址
 VITE_APP_ARCGIS_URL = https://wrj.shuixiongit.com/arcgis116
-
-# 3Dtiles地址
-VITE_APP_3DTILE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_tiles
diff --git a/applications/mobile-web-view/src/layout/Header.vue b/applications/mobile-web-view/src/layout/Header.vue
deleted file mode 100644
index 8356c79..0000000
--- a/applications/mobile-web-view/src/layout/Header.vue
+++ /dev/null
@@ -1,251 +0,0 @@
-<!--
- * @Author       : yuan
- * @Date         : 2025-06-13 09:42:10
- * @LastEditors  : yuan
- * @LastEditTime : 2025-06-13 11:23:40
- * @FilePath     : \src\layout\Header.vue
- * @Description  :
- * Copyright 2025 OBKoro1, All Rights Reserved.
- * 2025-06-13 09:42:10
--->
-<template>
-	<div class="header">
-		<div class="h-left">
-			<div
-				v-for="(item, index) in leftList"
-				:key="index"
-				class="left-item"
-				:class="{ active: item.active, 'dom-visibility': item.hidden }"
-				@click="handleClick(item)"
-			>
-				{{ item.name }}
-			</div>
-		</div>
-		<div class="big-title">{{ baseHeaderTitle }}</div>
-		<div class="h-right">
-			<div
-				v-for="(item, index) in rightList"
-				:key="index"
-				class="right-item"
-				:class="{ active: item.active, 'dom-visibility': item.hidden }"
-				@click="handleClick(item)"
-			>
-				{{ item.name }}
-			</div>
-		</div>
-	</div>
-</template>
-
-<script setup>
-import { ref, onMounted } from 'vue'
-import { useRouter, useRoute } from 'vue-router'
-import { Message } from '@element-plus/icons-vue'
-import { ElMessage } from 'element-plus'
-import { ELocalStorageKey } from '@/utils/http/enums'
-import { useStore } from 'vuex'
-
-import getBaseConfig from '@/buildConfig/config'
-import { getConfigApi } from '@/api/home'
-
-const { menuLeftList, meneRightList, headerTitle } = getBaseConfig()
-
-const router = useRouter()
-const route = useRoute()
-
-const store = useStore()
-
-const baseHeaderTitle = ref(headerTitle)
-
-const leftList = ref(menuLeftList)
-
-const rightList = ref(meneRightList)
-
-const handleClick = ({ path, name }) => {
-	const adminUrl = import.meta.env.VITE_APP_ADMIN_URL
-	if (['系统运维'].includes(name)) {
-		window.open(`${adminUrl}wel/index`, '_blank')
-		return
-	}
-	// if (!['首页', '任务管理', '集群调度', '航线规划', 'AI识别分析', '数据中心'].includes(name))
-	// 	return ElMessage.warning('正在加急开发中...')
-	// 更新 leftList 的 active 状态
-	leftList.value.forEach(item => {
-		item.active = item.path === path
-	})
-
-	// 更新 rightList 的 active 状态
-	rightList.value.forEach(item => {
-		item.active = item.path === path
-	})
-	// 跳转到指定页面
-	router.push(path)
-}
-// 重置所有菜单项的active状态
-const updateActiveMenu = path => {
-	leftList.value.forEach(item => {
-		item.active = item.path === path
-	})
-	rightList.value.forEach(item => {
-		item.active = item.path === path
-	})
-}
-// 监听跳转到数据中心
-watch(
-	[() => store.state.dataCenter?.jumpDataCenter, () => route.path],
-	([jumpVal, currentPath], [oldJumpVal, oldPath]) => {
-		// 跳转数据中心逻辑
-		if (jumpVal) {
-			updateActiveMenu('/dataCenter')
-		}
-
-		// 路由变化时恢复状态
-		if (currentPath !== oldPath) {
-			if (currentPath !== '/dataCenter') {
-				store.commit('setJumpDataCenter', null)
-			}
-			updateActiveMenu(currentPath)
-		}
-	},
-	{ immediate: true }
-)
-// 监听从巡检任务概况提交的数据
-watch(
-	[() => store.state.task.jumpTask, () => route.path],
-	([newVal, newPath], [oldVal, oldPath]) => {
-		if (newVal) {
-			const currentPath = '/taskManage'
-			leftList.value.forEach(item => {
-				item.active = item.path === currentPath
-			})
-		}
-
-		if (newPath !== oldPath) {
-			if (newPath !== '/taskManage') {
-				store.commit('setJumpTask', {})
-			}
-		}
-		leftList.value.forEach(item => {
-			item.active = item.path === newPath
-		})
-	},
-	{ deep: true, immediate: true }
-)
-
-// 获取系统配置
-function getConfig() {
-	getConfigApi().then(res => {
-		const title = res?.data?.data?.name
-		if (title){
-			baseHeaderTitle.value = title
-		}
-	})
-}
-onMounted(() => {
-	// 初始化 leftList 的 active 状态
-	const currentPath = route.path
-	leftList.value.forEach(item => {
-		item.active = item.path === currentPath
-	})
-
-	// 初始化 rightList 的 active 状态
-	rightList.value.forEach(item => {
-		item.active = item.path === currentPath
-	})
-	getConfig()
-})
-</script>
-
-<style scoped lang="scss">
-.header {
-	width: calc(100% - 57px - 59px);
-	margin-left: 57px;
-	padding-top: 30px;
-	display: flex;
-	justify-content: space-between;
-	// position: relative;
-
-	.h-left {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-
-		.left-item {
-			width: 105px;
-			height: 39px;
-			background: url(@/assets/images/header-left.png) no-repeat;
-			background-size: 100% 100%;
-			margin-right: 3px;
-			font-family: YouSheBiaoTiHei, YouSheBiaoTiHei, serif;
-			font-weight: 400;
-			font-size: 18px;
-			color: #ffffff;
-			line-height: 42px;
-			text-align: center;
-			font-style: normal;
-			text-transform: none;
-			cursor: pointer;
-		}
-
-		.active {
-			background: url(@/assets/images/header-active.png) no-repeat;
-			background-size: 100% 100%;
-		}
-	}
-
-	.big-title {
-		position: relative;
-		top: -12px;
-		left: 8px;
-		// border: 1px solid red;
-		width: 710px;
-		height: 58px;
-		line-height: 58px;
-		font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
-		font-weight: 400;
-		font-size: 48px;
-		line-height: 53px;
-		letter-spacing: 3px;
-		text-shadow: 0px 4px 1px rgba(19, 80, 143, 0.66), 0px 0px 18px rgba(130, 165, 255, 0.4),
-			inset 0px 0px 2px rgba(255, 255, 255, 0.8);
-		text-align: center;
-		font-style: normal;
-		text-transform: none;
-		background: linear-gradient(180deg, #ffffff 23%, #e9f8ff 46%, #77baff 76%);
-		-webkit-background-clip: text;
-		color: transparent;
-		background-clip: text;
-	}
-
-	.h-right {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-
-		.right-item {
-			width: 105px;
-			height: 39px;
-			background: url(@/assets/images/header-right.png) no-repeat;
-			background-size: 100% 100%;
-			margin-right: 3px;
-			font-family: YouSheBiaoTiHei, YouSheBiaoTiHei, serif;
-			font-weight: 400;
-			font-size: 18px;
-			color: #ffffff;
-			line-height: 42px;
-			text-align: center;
-			font-style: normal;
-			text-transform: none;
-			cursor: pointer;
-		}
-
-		.active {
-			background: url(@/assets/images/header-active-right.png) no-repeat;
-			background-size: 100% 100%;
-		}
-	}
-}
-
-.dom-visibility {
-	visibility: hidden;
-}
-</style>
diff --git a/applications/mobile-web-view/src/layout/showTips.vue b/applications/mobile-web-view/src/layout/showTips.vue
deleted file mode 100644
index 9bfee92..0000000
--- a/applications/mobile-web-view/src/layout/showTips.vue
+++ /dev/null
@@ -1,189 +0,0 @@
-<template>
-	<div class="messagePrompt" v-if="allUnreadItems.length > 0 && showTip">
-		<div
-			class="messageList"
-			:style="{ transform: `translateY(-${currentIndex * 3.8}rem)`, transition: 'transform 0.5s ease' }"
-		>
-			<div class="messageItem" v-for="(item, index) in allUnreadItems" :key="index">
-				<div class="messageleft">
-					<img src="@/assets/images/warning.png" alt="" />
-					<span class="dots"></span>
-					<div class="infodetail">
-						<span>{{ item.name }}</span>
-						<span>{{ item.date }}</span>
-					</div>
-				</div>
-				<div class="messagebtn" @click="stopmessagetip">不再提醒</div>
-			</div>
-		</div>
-	</div>
-</template>
-
-<script setup>
-import { useStore } from 'vuex'
-import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
-import notificationSound from '@/assets/audio/audio_8652e075da.mp3'
-import { getOrderOrEventApi } from '@/api/home'
-
-const store = useStore()
-const consoleShow = computed(() => store?.state?.task?.consoleShow)
-let audio = new Audio()
-audio.src = notificationSound
-audio.volume = 1
-audio.loop = true
-audio?.pause()
-const userInfo = computed(() => store.getters.userInfo)
-const todosData = computed(() => store.state.common?.todosData)
-const dateRange = computed(() => store.state.home.eventTimeRang)
-const showTip = ref(true)
-const currentIndex = ref(0)
-let carouselTimer = null
-const hasUnread = computed(() => todosData.value?.some(i => !i?.is_read))
-const allUnreadItems = computed(() => todosData.value?.filter(i => !i.is_read) || [])
-const newunread = ref(null)
-let refreshInterval = null // 自动刷新待办事项(每5秒)
-let pauseTimeout = null // 1分钟后暂停播放
-let cfTimeout = null //5分钟重复一次
-let retryTimeout = null // 1分钟后重试弹框
-const yzxs = ref(true) //一值提醒
-const todosParams = {
-	type: 1,
-	area_code: userInfo.value.detail.areaCode,
-	start_time: dateRange.value[0],
-	end_time: dateRange.value[1],
-}
-
-// 轮播
-const startCarousel = () => {
-	if (carouselTimer) clearInterval(carouselTimer)
-	if (allUnreadItems.value.length <= 1) return
-
-	carouselTimer = setInterval(() => {
-		currentIndex.value = (currentIndex.value + 1) % allUnreadItems.value.length
-	}, 3000)
-}
-// 停止消息提示
-const stopmessagetip = () => {
-	showTip.value = false
-	yzxs.value = false // 设置手动关闭标志
-	clearInterval(carouselTimer)
-	audio?.pause()
-}
-watch(allUnreadItems, val => {
-	if (!showTip.value) return
-
-	if (val && !consoleShow.value && yzxs.value) {
-		startCarousel()
-		audio?.play()
-	} else {
-		audio?.pause()
-		clearInterval(carouselTimer)
-	}
-})
-
-// 获取待办事项
-const getListMatter = async () => {
-	const res = await getOrderOrEventApi(todosParams)
-	if (!res.data.data || res.data.data?.length === 0) {
-		store.commit('setTodosData', [])
-		return
-	}
-	const oldList = (todosData.value || []).filter(i => !i.is_read).map(i => i.id)
-	const newList = (res.data.data || []).filter(i => !i.is_read).map(i => i.id)
-	const hasNewItem = newList.filter(item => !oldList.includes(item))
-	newunread.value = hasNewItem
-	if (hasNewItem.length > 0) {
-		showTip.value = true
-		audio?.play()
-		startCarousel()
-	}
-	store.commit('setTodosData', res.data.data)
-}
-const startAutoRefresh = () => {
-	refreshInterval = setInterval(getListMatter, 5000)
-}
-
-watch(
-	dateRange,
-	newVal => {
-		if (newVal) {
-			todosParams.start_time = newVal[0]
-			todosParams.end_time = newVal[1]
-			getListMatter()
-		}
-	},
-	{ deep: true }
-)
-
-onMounted(() => {
-	getListMatter()
-	startAutoRefresh()
-	startCarousel()
-})
-
-onBeforeUnmount(() => {
-	refreshInterval && clearInterval(refreshInterval)
-	pauseTimeout && clearTimeout(pauseTimeout)
-	cfTimeout && clearInterval(cfTimeout)
-	retryTimeout && clearTimeout(retryTimeout)
-	clearInterval(carouselTimer)
-	audio?.pause()
-	audio = null
-})
-</script>
-
-<style scoped lang="scss">
-.messagePrompt {
-	position: absolute;
-	top: 105px;
-	left: 50%;
-	transform: translateX(-50%);
-	color: #ffffff;
-	border-radius: 4px;
-	font-size: 14px;
-	width: 633px;
-	height: 38px;
-	overflow: hidden;
-	background: url('@/assets/images/warninfobg.png') no-repeat center;
-	background-size: 100% 100%;
-
-	.messageList {
-		height: 38px;
-		width: 100%;
-	}
-
-	.messageItem {
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		width: 633px;
-		height: 38px;
-		.messageleft {
-			display: flex;
-			align-items: center;
-			margin-left: 85px;
-			img {
-				width: 32px;
-				height: 32px;
-			}
-			.dots {
-				display: inline-block;
-				width: 6px;
-				height: 6px;
-				background: #ff5741;
-				border-radius: 50%;
-			}
-			.infodetail {
-				display: flex;
-				width: 332px;
-				justify-content: space-between;
-				margin-left: 7px;
-			}
-		}
-		.messagebtn {
-			cursor: pointer;
-			margin-right: 57px;
-		}
-	}
-}
-</style>
diff --git a/applications/mobile-web-view/src/layout/useGlobalWS.js b/applications/mobile-web-view/src/layout/useGlobalWS.js
deleted file mode 100644
index 2bf11b0..0000000
--- a/applications/mobile-web-view/src/layout/useGlobalWS.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import { onMounted } from 'vue'
-import { getWebsocketUrl } from '@/utils/websocket/config'
-import { useConnectWebSocket } from '@/utils/websocket/connect-websocket'
-import { useStore } from 'vuex'
-import dayjs from 'dayjs'
-import { aLinkDownloadUtil } from '@/utils/util'
-import EventBus from '@/utils/eventBus'
-import { getStore, setStore } from '@/utils/store'
-
-export const useGlobalWS = () => {
-	const store = useStore()
-	const loginUserInfo = computed(() => store.state.user.userInfo)
-	const downloadProgress = computed(() => store.state.common.downloadProgress)
-	let currentWebSocket = null
-
-	// 下载进度处理
-	function downloadProcessing(payload) {
-		const {type,status,progress,download_url} = payload?.data || {}
-		let setProgress = 0
-		if (status === 'PENDING'){
-			setProgress = 1
-		}else if(status === 'CANCELLED'){
-			setProgress = 100
-		}else if(status !== 'COMPLETED' && progress === 100){
-			setProgress = 99
-		}else{
-			setProgress = progress
-		}
-		store.commit('setDownloadProgress', {
-			...downloadProgress.value,
-			[type]: setProgress,
-		})
-		if (status === 'COMPLETED' && ['dpsjzx','dplsrwxq'].includes(type)) {
-			const name = `数据中心-${dayjs().format('YYYYMMDDHHmmss')}.zip`
-			const currentUrl = getStore({name: 'downloadUrl'})
-			if (currentUrl === download_url && download_url!== undefined) return
-			aLinkDownloadUtil(download_url, name)
-			setStore({ name: 'downloadUrl', content: download_url })
-		}
-	}
-
-	const logOut = () => {
-		store.commit('SET_THEME_NAME', '')
-		store.dispatch('LogOut').then(() => {
-			router.push({ path: '/login' })
-			setTimeout(() => location.reload())
-		})
-	}
-	function messageHandler(payload) {
-		switch (payload.biz_code) {
-			case 'JOB_ISREFRESH':
-				store.commit('jobUpdateKeyAdd')
-				break
-			case 'DEVICE_ISREFRESH':
-				store.commit('deviceUpdateKeyAdd')
-				break
-			case 'DOWNLOAD_PROGRESS':
-				downloadProcessing(payload)
-				break
-			case 'LOGOUT_USER':
-				logOut()
-				break
-		}
-	}
-
-	onMounted(() => {
-		let webSocketUrl = getWebsocketUrl() + `&model_type=3&workspace-id=${loginUserInfo.value.userId}`
-		currentWebSocket = useConnectWebSocket((result)=>{
-			const payload = JSON.parse(result)
-			messageHandler(payload)
-		}, webSocketUrl)
-		EventBus.on('useGlobalWS-messageHandler',messageHandler)
-	})
-
-	onBeforeUnmount(() => {
-		currentWebSocket?.close()
-		EventBus.off('useGlobalWS-messageHandler',messageHandler)
-	})
-	return {}
-}
diff --git a/applications/mobile-web-view/src/page/GatewayPage/GatewayPage.vue b/applications/mobile-web-view/src/page/GatewayPage/GatewayPage.vue
deleted file mode 100644
index 42f8394..0000000
--- a/applications/mobile-web-view/src/page/GatewayPage/GatewayPage.vue
+++ /dev/null
@@ -1,171 +0,0 @@
-<template>
-	<div :class="{ GatewayPage: true, 'narrowScreen': narrowScreen }">
-		<div class="gateway-page">
-			<div class="logo" v-if="isShowAiSkyLogo">
-				<img src="@/assets/images/login/aisky-logo.png" alt="" />
-			</div>
-			<div class="title">{{ gateTitle }}</div>
-			<div class="en-title">{{ gateTitleEn }}</div>
-			<div class="card-warp">
-				<div
-					class="card"
-					v-for="(item, index) in cardList"
-					:key="index"
-					@mouseenter="activeIndex = index"
-					@mouseleave="activeIndex = -1"
-				>
-					<div
-						@click="activeClick(activeIndex)"
-						class="card-bg"
-						:style="{
-							background: `url(${activeIndex === index ? item.active : item.normal}) no-repeat center 100% / 100%`,
-						}"
-						:class="{
-							'hover-image': activeIndex === index,
-						}"
-					></div>
-				</div>
-			</div>
-		</div>
-	</div>
-</template>
-
-<script setup>
-import { useRouter, useRoute } from 'vue-router'
-import { ElMessage } from 'element-plus'
-
-import getBaseConfig from '@/buildConfig/config'
-
-const { gateTitle, gateTitleEn, isShowAiSkyLogo, gatewayMenu } = getBaseConfig()
-
-const router = useRouter()
-
-// 图片数据
-const cardList = ref([...gatewayMenu])
-const activeIndex = ref(-1) // 当前激活的卡片索引
-
-function activeClick(index) {
-	if (index === 0) {
-		const adminUrl = import.meta.env.VITE_APP_ADMIN_URL
-		window.location.href = `${adminUrl}wel/index`
-	}
-	if (index === 1) {
-		router.push('/index')
-	}
-	if (index === 2) {
-		const url = encodeURIComponent(window.location.href)
-		const { VITE_APP_AI_PLAT_URL } = import.meta.env
-		window.location.href = `${VITE_APP_AI_PLAT_URL}/login?autoEnter=1&formUrl=${url}`
-		// window.open(`http://localhost:8013/login?autoEnter=1&formUrl=${url}`)
-	}
-}
-
-const narrowScreen = ref(false)
-const narrowScreenFun = () => {
-	// 监听窗口变化,计算是不是 窄屏幕
-	narrowScreen.value = window.innerWidth / window.innerHeight < 16 / 9
-}
-
-onMounted(() => {
-	narrowScreenFun()
-	window.addEventListener('resize', narrowScreenFun)
-	document.title = 'appWebview'
-})
-</script>
-
-<style lang="scss" scoped>
-.GatewayPage {
-	position: relative;
-	background: #020f25;
-	width: 100%;
-	height: 100%;
-
-	overflow-x: auto;
-	scrollbar-width: none; /* Firefox 隐藏滚动条 */
-	&::-webkit-scrollbar {
-		display: none; /* Chrome、Safari 隐藏滚动条 */
-	}
-
-	&.narrowScreen {
-		> div {
-			left: 50%;
-			top: 50%;
-			transform: translate(-50%, -50%);
-		}
-	}
-	> div {
-		left: 0;
-		top: 0;
-		position: absolute;
-		height: 1080px;
-		width: 1920px;
-	}
-	.gateway-page {
-		background: url('@/assets/images/login/gateway-bg.png') center no-repeat;
-		background-size: 100% 100%;
-	}
-	.logo {
-		position: absolute;
-		left: 52px;
-		top: 44px;
-		img {
-			width: 156px;
-			height: 44px;
-		}
-	}
-	.title {
-		position: absolute;
-		left: 184px;
-		top: 294px;
-		width: 968px;
-		height: 110px;
-		font-family: Segoe UI, Segoe UI;
-		font-weight: bold;
-		font-size: 60px;
-		color: #ffffff;
-		line-height: 99px;
-		letter-spacing: 5px;
-		text-align: left;
-	}
-	.en-title {
-		position: absolute;
-		left: 190px;
-		top: 396px;
-		width: 968px;
-		height: 80px;
-		font-family: Segoe UI, Segoe UI;
-		font-weight: 600;
-		font-size: 26px;
-		color: #ffffff;
-		line-height: 72px;
-		letter-spacing: 3px;
-		text-align: left;
-	}
-	.card-warp {
-		position: absolute;
-		top: 540px;
-		left: 50%;
-		display: flex;
-		gap: 50px; /* 卡片间距 */
-		z-index: 1;
-		transform: translate(-50%, 0);
-
-		.card {
-			position: relative; /* 确保子元素绝对定位基于卡片 */
-			width: 564px;
-			height: 416px;
-			cursor: pointer;
-
-			.card-bg {
-				width: 564px;
-				height: 416px;
-				border-radius: 8px; /* 可选:圆角效果 */
-			}
-
-			.hover-image {
-				transform: scale(1.05);
-			}
-		}
-	}
-}
-</style>

--
Gitblit v1.9.3