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