This commit is contained in:
zyl
2025-12-05 18:35:24 +08:00
25 changed files with 357 additions and 228 deletions

File diff suppressed because one or more lines are too long

View File

@ -49,13 +49,8 @@
--color-text-shadow: rgba(20, 118, 255, 1);
}
/* .cesium-viewer.\32 d{
opacity: 0;
} */
.cesium-viewer-cesiumWidgetContainer {
position: relative;
overflow: hidden;
}
.cesium-viewer-cesiumWidgetContainer .cesium-widget:nth-of-type(1) {
@ -176,14 +171,9 @@
.YJ-custom-base-dialog button:not(button[disabled]):hover {
border-color: rgba(var(--color-base1), 1) !important;
color: rgba(var(--color-base1), 1) !important;
cursor: pointer;
}
.YJ-custom-base-dialog button:not(button[disabled]):hover svg {
fill: rgba(var(--color-base1), 1) !important;
}
.YJ-custom-base-dialog button:focus-visible {
outline: none;
}
@ -289,10 +279,6 @@
padding: 0px 24px;
}
.YJ-custom-base-dialog>.content .el-tabs .el-tabs__header {
margin-bottom: 0;
}
.YJ-custom-base-dialog>.content .div-item {
/* border-top: 1px solid rgba(204, 204, 204, 0.2); */
padding: 12px 0;
@ -343,7 +329,7 @@
.YJ-custom-base-dialog>.content input,
.YJ-custom-base-dialog>.content textarea {
font-size: 14px;
font-size: 16px;
background-color: rgba(0, 0, 0, 0.5);
border: 1px solid rgba(var(--color-base1), 0.5);
border-radius: 5px;
@ -487,9 +473,6 @@
.YJ-custom-base-dialog>.content .table .table-body .tr:first-child {
border-top: none;
}
.YJ-custom-base-dialog>.content .table .table-body .tr:last-child {
border-bottom: 1px solid rgba(var(--color-base1), 0.5);
}
.YJ-custom-base-dialog>.content .table .table-empty {
display: flex;
@ -1789,7 +1772,7 @@
/* 轨迹运动 */
.YJ-custom-base-dialog.trajectory-motion>.content {
width: 562px;
width: 550px;
}
.YJ-custom-base-dialog.trajectory-motion>.content .div-item>.row>.col {
@ -1818,10 +1801,6 @@
.YJ-custom-base-dialog.trajectory-motion>.content .btn.is-active {
border-color: rgba(var(--color-base1));
color: rgba(var(--color-base1));
}
.YJ-custom-base-dialog.trajectory-motion>.content .btn.is-active svg {
fill: rgba(var(--color-base1));
}
.YJ-custom-base-dialog.trajectory-motion>.content .btn-group .btn.is-active>span {
@ -1847,6 +1826,7 @@
.YJ-custom-base-dialog.trajectory-motion>.content .icon-rubric {
width: 16px;
height: 16px;
margin-left: 12px;
}
.YJ-custom-base-dialog.trajectory-motion>.content .custom__popper__arrow::after {
@ -2536,8 +2516,8 @@
.YJ-custom-base-dialog.polygon>.content .attribute-content-vr .table .tr .td:nth-child(3),
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
flex: 0 0 175px;
width: 175px;
flex: 0 0 165px;
width: 165px;
justify-content: center;
}
@ -2620,8 +2600,8 @@
.YJ-custom-base-dialog.assemble>.content .attribute-content-vr .table .tr .td:nth-child(3),
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
flex: 0 0 175px;
width: 175px;
flex: 0 0 165px;
width: 165px;
justify-content: center;
}
@ -2680,8 +2660,8 @@
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-vr .table .tr .td:nth-child(3),
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
flex: 0 0 175px;
width: 175px;
flex: 0 0 165px;
width: 165px;
justify-content: center;
}
@ -2763,7 +2743,7 @@
/* 折线 */
.YJ-custom-base-dialog.polyline>.content {
width: 600px;
width: 580px;
}
.YJ-custom-base-dialog.polyline>.content>div #dashTextureDom {
@ -3798,7 +3778,7 @@
.yj-custom-icon {
display: inline-block;
width: 22px;
height: 18px;
height: 10px;
margin-right: 5px;
}

View File

@ -8,6 +8,7 @@
:on-success="handleSuccess"
:on-error="handleError"
class="simple-upload"
accept=".YJ"
>
<el-button class="clickBut" color="#005c5c" :loading="isUploading">
<UploadFilled class="mr-2" />
@ -53,7 +54,7 @@ const isUploading = ref(false)
const uploadUrl = () => {
//process.env.BASE_API +
console.log(process.env.BASE_API, 'yyyyy')
let url = (localStorage.getItem("ip") || 'http://127.0.0.1:8848') + '/auth/import'
let url = (localStorage.getItem('ip') || 'http://127.0.0.1:8848') + '/auth/import'
return url
}
// 上传前处理

View File

@ -204,22 +204,22 @@ const getAuthInfo = async () => {
} catch (error) {
// 统一处理错误
ElMessageBox.confirm('您没有进行系统授权哦,系统功能将无法使用!', '提示', {
confirmButtonText: '去授权',
cancelButtonText: '退出系统',
confirmButtonText: '退出系统',
cancelButtonText: '去授权',
type: 'warning',
closeOnClickModal: false
})
.then(async () => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
.catch(() => {
try {
baseDialog.value?.open()
} catch (error) {
console.error('打开授权对话框失败:', error)
}
})
.catch(() => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
}
}
const selectedService = ref('接口服务')
@ -233,22 +233,22 @@ const getStatus = (date) => {
router.push({ path: '/login' })
} else {
ElMessageBox.confirm('您没有进行系统授权哦,系统功能将无法使用!', '提示', {
confirmButtonText: '去授权',
cancelButtonText: '退出系统',
confirmButtonText: '退出系统',
cancelButtonText: '去授权',
type: 'warning',
closeOnClickModal: false
})
.then(async () => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
.catch(() => {
try {
baseDialog.value?.open()
} catch (error) {
console.error('打开授权对话框失败:', error)
}
})
.catch(() => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
}
}
setTimeout(() => {

View File

@ -205,7 +205,7 @@ const props = defineProps({
const routeImport = () => {
let option = {
properties: ['openFile'],
properties: ['openFile', 'multiSelections'],
filters: [
{
name: '路网', //、底图
@ -215,10 +215,11 @@ const routeImport = () => {
}
$sendElectronChanel('open-directory-dialog', option)
$recvElectronChanel('selectedItem', (e, path) => {
console.log(path, 'path')
if (path.length) {
RouteApi.loadRoute({
path: path[0]
}).then((res) => {
const formData = new FormData()
formData.append('paths', path)
RouteApi.loadRoute(formData).then((res) => {
if (res.code === 200) {
RouteApi.getRouteList().then((list) => {
routeList.splice(0, routeList.length, ...list.data)
@ -253,7 +254,7 @@ const routeImport = () => {
}
const poiImport = () => {
let option = {
properties: ['openFile'],
properties: ['openFile', 'multiSelections'],
filters: [
{
name: 'poi', //、底图
@ -264,9 +265,9 @@ const poiImport = () => {
$sendElectronChanel('open-directory-dialog', option)
$recvElectronChanel('selectedItem', (e, path) => {
if (path.length) {
PoiApi.loadPoi({
path: path[0]
}).then((res) => {
const formData = new FormData()
formData.append('paths', path)
PoiApi.loadPoi(formData).then((res) => {
if (res.code === 200) {
PoiApi.getPoiList().then((list) => {
poiList.splice(0, poiList.length, ...list.data)
@ -458,12 +459,12 @@ const handleError = (error: Error) => {
}
//工程合并导入
const mergeProject = () => {
ElMessageBox.confirm(`项目已存在,继续导入将合并项目,是否执行?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
// ElMessageBox.confirm(`项目已存在,继续导入将合并项目,是否执行?`, '提示', {
// confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'warning'
// })
// .then(() => {
let option = {
properties: ['openFile'],
filters: [
@ -493,8 +494,8 @@ const mergeProject = () => {
})
}
})
})
.catch(() => {})
// })
// .catch(() => {})
}
//工程导入(单机)
@ -666,6 +667,7 @@ function derive() {
arr[arr.length - 1] = 'yjearth/app.db'
let db_path: any = arr.join('/')
// let db_path: any = 'C:/Users/Administrator/AppData/Roaming/yjearth/app.db'
try {
zip_file([db_path], path, () => {
// loadingInstance.close()
ElMessage({
@ -673,6 +675,12 @@ function derive() {
type: 'success'
})
})
} catch (error) {
ElMessage({
message: error,
type: 'error'
})
}
}
})

View File

@ -32,12 +32,12 @@
<span>批量导入</span>
</el-button>
<el-input
v-model="input3"
v-model.trim="input3"
style="max-width: 250px"
placeholder="请输入设备名称进行搜索"
class="input-with-select"
:suffix-icon="Search"
@input="getTableList()"
@change="getTableList()"
>
</el-input>
</div>
@ -153,6 +153,7 @@ const getTableList = async () => {
if (res.code === 200) {
tableData.value = res.data.records
total.value = res.data.total
console.log(tableData.value.length, 'leleleleele')
}
}
@ -292,8 +293,11 @@ const downloadTemp = async () => {
</script>
<style lang="scss">
::v-deep .addDevice {
background:
linear-gradient(180deg, rgba(var(--color-base1), 0.2) 0%, rgba(var(--color-base1), 0) 100%),
background: linear-gradient(
180deg,
rgba(var(--color-base1), 0.2) 0%,
rgba(var(--color-base1), 0) 100%
),
rgba(0, 0, 0, 1) !important;
.el-dialog__title {
color: #fff !important;

View File

@ -312,13 +312,33 @@ eventBus.on('settingPop', (data) => {
}
})
let openfunc = () => {
if (haventModel) {
ElMessage.warning('请先创建或导入军标库文件')
}
}
//获取模型列表
onMounted(() => {
eventBus.on('openGraphLabel', openfunc)
})
onUnmounted(() => {
eventBus.off('openGraphLabel', openfunc)
})
let haventModel = false
const getModelList = async () => {
const params = new URLSearchParams()
params.append('militaryName', photoName.value)
const res: any = await GraphApi.modelTypeList(params)
if (res.code == 0 || res.code == 200) {
if (res.message != '请先创建或导入军标库') {
let data = transformNestedJson(res.data, 'name', 'label')
typeTreeData.value = data
haventModel = false
} else {
//标识没得库文件
haventModel = true
}
}
}
const transformNestedJson = (data, oldKey, newKey) => {

View File

@ -12,12 +12,12 @@
<span>添加物资</span>
</el-button>
<el-input
v-model="input3"
v-model.trim="input3"
style="max-width: 250px"
placeholder="请输入物资名称进行搜索"
class="input-with-select"
:suffix-icon="Search"
@input="getTableList()"
@change="getTableList()"
>
</el-input>
</div>
@ -185,8 +185,11 @@ var delFun = (row) => {
</script>
<style lang="scss">
::v-deep .addDevice {
background:
linear-gradient(180deg, rgba(var(--color-base1), 0.2) 0%, rgba(var(--color-base1), 0) 100%),
background: linear-gradient(
180deg,
rgba(var(--color-base1), 0.2) 0%,
rgba(var(--color-base1), 0) 100%
),
rgba(0, 0, 0, 1) !important;
.el-dialog__title {
color: #fff !important;

View File

@ -312,12 +312,21 @@ let setFunc = (data) => {
showImageRow = null
}
}
let openfunc = () => {
if (haventModel) {
ElMessage.warning('请先创建或导入模型库文件')
}
}
//获取模型列表
onMounted(() => {
eventBus.off('settingPop', setFunc)
eventBus.on('settingPop', setFunc)
eventBus.on('openModelManage', openfunc)
})
onUnmounted(() => {
eventBus.off('settingPop', setFunc)
eventBus.off('openModelManage', openfunc)
})
//获取模型列表
// eventBus.on('settingPop', (data) => {
@ -344,11 +353,13 @@ const updateExpandedState = () => {
const keys = getExpandedKeys()
expandedKeys.value = keys
}
let haventModel = false
const getModelList = async () => {
const params = new URLSearchParams()
params.append('modelName', photoName.value)
const res: any = await ModelApi.modelTypeList(params)
if (res.code == 0 || res.code == 200) {
if (res.message != '请先创建或导入模型库') {
let data = transformNestedJson(res.data, 'name', 'label')
typeTreeData.value = data
const saved = localStorage.getItem('tree-expanded-keys')
@ -368,6 +379,11 @@ const getModelList = async () => {
localStorage.removeItem('tree-click-node')
}
haventModel = false
} else {
//标识没得库文件
haventModel = true
}
}
}
const transformNestedJson = (data, oldKey, newKey) => {

View File

@ -383,6 +383,20 @@ eventBus.on('settingPop', (data) => {
}
})
let openfunc = () => {
if (haventModel) {
ElMessage.warning('请先创建或导入图标库文件')
}
}
//获取模型列表
onMounted(() => {
eventBus.on('openPhotoManage', openfunc)
})
onUnmounted(() => {
eventBus.off('openPhotoManage', openfunc)
})
let haventModel = false
const getModelList = async () => {
if (activeIndex.value !== 2) {
typeTreeData.value = [
@ -398,8 +412,14 @@ const getModelList = async () => {
params.append('iconName', photoName.value)
const res: any = await PhotoApi.modelTypeList(params)
if (res.code == 0 || res.code == 200) {
if (res.message != '请先创建或导入图标库') {
let data = transformNestedJson(res.data, 'name', 'label')
typeTreeData.value = data
haventModel = false
} else {
//标识没得库文件
haventModel = true
}
}
}
}

View File

@ -484,8 +484,8 @@ import { sysChange as utilsSysChange } from '@/utils/sysChange'
const eventBus: any = inject('bus')
const { t, locale } = useI18n()
const isHotGroupOpen: any = ref(false)
const isHotGroupOpen2: any = ref(false)
const isHotGroupOpen: any = ref(true)
const isHotGroupOpen2: any = ref(true)
const showPosiType: any = ref(false)
const systemSetting = ref({
@ -583,7 +583,7 @@ const searchWay = ref()
const concurrentcode = ref()
const showBattery = ref()
searchWay.value = localStorage.getItem('searchWay') || 'net'
concurrentcode.value = localStorage.getItem('concurrentcode') || 10
concurrentcode.value = localStorage.getItem('concurrentcode') || 30
//系统坐标系
let tool = new YJ.Tools(window.earth)
name_map.value = Array.from(tool.name_map.values())

View File

@ -149,6 +149,19 @@ const open = (data) => {
}
const changeTab = (x, j) => {
switch (x) {
case 'modelManage':
eventBus.emit('openModelManage')
break
case 'photoManage':
eventBus.emit('openPhotoManage')
break
case 'graphLabelManage':
eventBus.emit('openGraphLabel')
break
default:
break
}
switch (j) {
case 'device':
eventBus.emit('closeAddDevice')
@ -168,8 +181,7 @@ onMounted(() => {
// 可以在这里添加初始化逻辑
if (locale.value === 'zh-EN') {
isEN.value = true
}
else {
} else {
isEN.value = false
}
})
@ -177,8 +189,7 @@ onMounted(() => {
watch(locale, () => {
if (locale.value === 'zh-EN') {
isEN.value = true
}
else {
} else {
isEN.value = false
}
})

View File

@ -17,7 +17,13 @@
<el-select style="width: 175px" v-model="coordinate" @change="sysChange">
<div
class="group-header"
:class="isHotGroupOpen ? 'arrowActive' : ''"
:class="
name_map1.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'arrowActive'
: ''
"
@click="toggleGroup('hot')"
>
地理坐标系
@ -25,14 +31,26 @@
v-if="isHotGroupOpen"
name="arrow2"
:size="10"
color="rgba(0, 255, 255, 1)"
:color="
name_map1.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
<svg-icon
v-else
name="arrow1"
:size="10"
color="rgba(255, 255, 255, 1)"
:color="
name_map1.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
</div>
@ -46,7 +64,13 @@
</div>
<div
class="group-header"
:class="isHotGroupOpen2 ? 'arrowActive' : ''"
:class="
name_map2.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'arrowActive'
: ''
"
@click="toggleGroup('ty')"
>
投影坐标系
@ -54,14 +78,26 @@
v-if="isHotGroupOpen2"
name="arrow2"
:size="10"
color="rgba(0, 255, 255, 1)"
:color="
name_map2.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
<svg-icon
v-else
name="arrow1"
:size="10"
color="rgba(255, 255, 255, 1)"
:color="
name_map2.filter((item) => {
return item.epsg == coordinate
}).length > 0
? 'rgba(0, 255, 255, 1)'
: 'rgba(255, 255, 255, 1)'
"
style="margin-left: 10px"
></svg-icon>
</div>
@ -122,9 +158,9 @@
<div class="row">
<div class="col" style="flex: 0 0 78%">
<span class="label">经度</span>
<input class="input" type="number" placeholder="请输入内容" v-model="longitude" />
<input class="input" type="number" placeholder="请输入数值" v-model="longitude" />
<span class="label2"></span>
<input class="input" type="number" placeholder="请输入内容" v-model="lngMin" />
<input class="input" type="number" placeholder="请输入数值" v-model="lngMin" />
<span class="label2"></span>
</div>
<div class="col"></div>
@ -132,9 +168,9 @@
<div class="row">
<div class="col" style="flex: 0 0 78%">
<span class="label">纬度</span>
<input class="input" type="number" placeholder="请输入内容" v-model="latitude" />
<input class="input" type="number" placeholder="请输入数值" v-model="latitude" />
<span class="label2"></span>
<input class="input" type="number" placeholder="请输入内容" v-model="latMin" />
<input class="input" type="number" placeholder="请输入数值" v-model="latMin" />
<span class="label2"></span>
</div>
<div class="col"></div>
@ -155,11 +191,11 @@
<div class="row">
<div class="col" style="flex: 0 0 90%">
<span class="label">经度</span>
<input class="input" type="number" placeholder="请输入内容" v-model="longitude" />
<input class="input" type="number" placeholder="请输入数值" v-model="longitude" />
<span class="label2"></span>
<input class="input" type="number" placeholder="请输入内容" v-model="lngMin" />
<input class="input" type="number" placeholder="请输入数值" v-model="lngMin" />
<span class="label2"></span>
<input class="input" type="number" placeholder="请输入内容" v-model="lngSec" />
<input class="input" type="number" placeholder="请输入数值" v-model="lngSec" />
<span class="label2"></span>
</div>
<div class="col"></div>
@ -167,11 +203,11 @@
<div class="row">
<div class="col" style="flex: 0 0 90%">
<span class="label">纬度</span>
<input class="input" type="number" placeholder="请输入内容" v-model="latitude" />
<input class="input" type="number" placeholder="请输入数值" v-model="latitude" />
<span class="label2"></span>
<input class="input" type="number" placeholder="请输入内容" v-model="latMin" />
<input class="input" type="number" placeholder="请输入数值" v-model="latMin" />
<span class="label2"></span>
<input class="input" type="number" placeholder="请输入内容" v-model="latSec" />
<input class="input" type="number" placeholder="请输入数值" v-model="latSec" />
<span class="label2"></span>
</div>
<div class="col"></div>
@ -365,6 +401,7 @@ const turnToPosition = async () => {
}
break
case 'second':
console.log(longitude.value, lngMin.value, 'klklkl')
// @ts-ignore (define in dts)
var lng = Math.abs(longitude.value) + Math.abs(lngMin.value) / 60
// @ts-ignore (define in dts)
@ -379,8 +416,8 @@ const turnToPosition = async () => {
window.earth
)
position = {
lng: lng,
lat: lat,
lng: longitude.value != null && lngMin.value != null ? lng : null,
lat: latitude.value != null && latMin.value != null ? lat : null,
alt: point2[0].height < 0 ? 0 : point2[0].height
}
@ -403,8 +440,8 @@ const turnToPosition = async () => {
window.earth
)
position = {
lng: lng,
lat: lat,
lng: longitude.value != null && lngMin.value != null && lngSec.value != null ? lng : null,
lat: latitude.value != null && latMin.value != null && latSec.value != null ? lat : null,
alt: point3[0].height < 0 ? 0 : point3[0].height
}
break
@ -444,6 +481,7 @@ const getPosition = async () => {
}
const flyto = async (e) => {
await getPosition()
console.log(pointPosi.lng, pointPosi.lng !== 0, pointPosi.lat, 'ooppp')
if ((!pointPosi.lng && pointPosi.lng !== 0) || (!pointPosi.lat && pointPosi.lng !== 0)) {
ElMessage({
message: '请正确填写坐标信息!',

View File

@ -1,5 +1,5 @@
<template>
<Dialog ref="baseDialog" title="物统计" left="180px" top="100px" :closeCallback="closeCallBack">
<Dialog ref="baseDialog" title="物统计" left="180px" top="100px" :closeCallback="closeCallBack">
<template #content>
<div id="goodSearchEchart" style="width: 650px; height: 400px"></div>
</template>

View File

@ -1,5 +1,5 @@
<template>
<Dialog ref="baseDialog" title="物统计" left="180px" top="100px" :closeCallback="closeCallBack">
<Dialog ref="baseDialog" title="物统计" left="180px" top="100px" :closeCallback="closeCallBack">
<template #content>
<div id="goodSearchEchart2" style="width: 650px; height: 400px"></div>
</template>

View File

@ -207,6 +207,7 @@
import { ref, reactive, onBeforeUnmount } from 'vue'
import { inject } from 'vue'
import Dialog from '@/components/dialog/baseDialog.vue'
import { set } from 'date-fns'
const baseDialog: any = ref(null)
const eventBus: any = inject('bus')
@ -228,7 +229,7 @@ var readOnly = ref(true)
eventBus.on('submergeDialog', () => {
baseDialog.value?.open()
submerge = new YJ.Analysis.Submerge(window.earth)
submerge = new YJ.Analysis.Submerge(window.earth, {}, {}, animationEnd)
submerge.onEnd = (areaV, posi) => {
isPausng.value = false
minWaterLevel.value = submerge.minWaterLevel
@ -244,7 +245,7 @@ eventBus.on('submergeDialog', () => {
const open = () => {
baseDialog.value?.open()
submerge = new YJ.Analysis.Submerge(window.earth)
submerge = new YJ.Analysis.Submerge(window.earth, {}, {}, animationEnd)
submerge.onEnd = (areaV, posi) => {
isPausng.value = false
minWaterLevel.value = submerge.minWaterLevel
@ -257,6 +258,12 @@ const open = () => {
}
}
let restart = false
const animationEnd = () => {
isPausng.value = false
restart = true
}
const closeCallBack = (e) => {
minWaterLevel.value = 0
maxWaterLevel.value = 0
@ -287,19 +294,31 @@ function flyTo() {
function reset() {
isPausng.value = false
submerge.restart()
restart = false
}
function pause() {
if (risingSpeed.value != 0) {
if (!isPausng.value) {
//暂停中
console.log('暂停中')
if (!restart) {
submerge.move()
submerge.start()
} else {
submerge.restart()
setTimeout(() => {
submerge.move()
submerge.start()
}, 10)
restart = false
}
} else {
//播放中
submerge.pause()
}
isPausng.value = !isPausng.value
}
}
function analog() {
isPausng.value = false
submerge.move()

View File

@ -25,7 +25,7 @@
<el-input v-model.trim="addForm.password" clearable placeholder="请输入密码"></el-input>
</el-form-item>
<el-form-item label="设备类型" prop="type">
<el-select v-model.trim="addForm.type" filterable placeholder="请选择设备类型">
<el-select v-model.trim="addForm.type" placeholder="请选择设备类型">
<el-option label="海康" value="海康"></el-option>
<el-option label="大华" value="大华"></el-option>
<!-- <el-option label="手动录入" value="3"> </el-option> -->
@ -221,10 +221,12 @@ defineExpose({
::v-deep .el-form-item--label-right .el-form-item__label {
color: #fff !important;
}
::v-deep .el-form-item .el-input__wrapper {
background-color: rgba(0, 0, 0, 0.5) !important;
box-shadow: 0 0 0 0.5px rgba(var(--color-base1), 1) inset !important; /* 新增此行 */
}
::v-deep .el-form-item .el-select__wrapper {
background-color: rgba(0, 0, 0, 0.5) !important;
box-shadow: 0 0 0 0.5px rgba(var(--color-base1), 1) inset !important; /* 新增此行 */
@ -233,15 +235,19 @@ defineExpose({
border: unset !important;
}
}
::v-deep .el-form-item .el-input__inner {
color: #fff !important;
}
::v-deep .el-form-item .el-select__placeholder {
color: #fff !important;
}
::v-deep .el-input__wrapper {
padding: 0px !important;
}
::v-deep .el-button:hover {
background-color: rgba(var(--color-base1), 0.2) !important;
color: rgba(var(--color-base1), 1) !important;

View File

@ -415,6 +415,7 @@ const router = useRouter()
const getAuthInfo = async () => {
try {
const res = await AuthApi.showAuth()
console.log(res, 'resresres')
if (typeof res.data === 'object') {
authInfo.value.generateTime = res.data.generateTime
authInfo.value.expireTime = res.data.expireTime
@ -423,23 +424,24 @@ const getAuthInfo = async () => {
}
} catch (error) {
// 统一处理错误
console.log('认证请求失败:', error)
ElMessageBox.confirm('您没有进行系统授权哦,系统功能将无法使用!', '提示', {
confirmButtonText: '去授权',
cancelButtonText: '退出系统',
confirmButtonText: '退出系统',
cancelButtonText: '去授权',
type: 'warning',
closeOnClickModal: false
})
.then(async () => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
.catch(() => {
try {
baseDialog.value?.open()
} catch (error) {
console.error('打开授权对话框失败:', error)
}
})
.catch(() => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
}
}
const baseDialog = ref(null)
@ -451,23 +453,24 @@ const getStatus = (date) => {
// router.push({ path: '/login' })
isAuth.value = false
} else {
console.log('授权时间已过')
ElMessageBox.confirm('您没有进行系统授权哦,系统功能将无法使用!', '提示', {
confirmButtonText: '去授权',
cancelButtonText: '退出系统',
confirmButtonText: '退出系统',
cancelButtonText: '去授权',
type: 'warning',
closeOnClickModal: false
})
.then(async () => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
.catch(() => {
try {
baseDialog.value?.open()
} catch (error) {
console.error('打开授权对话框失败:', error)
}
})
.catch(() => {
// 用户点击取消,不执行任何操作
ipcRenderer.send('quit-app')
})
}
}
@ -601,7 +604,7 @@ const validatePortRange = (rule, value, callback) => {
.content {
.el-input__wrapper {
// background-color: transparent;
border: 0.2px solid rgba(var(--color-base1), 1);
// border: 0.2px solid rgba(var(--color-base1), 1);
box-shadow: 0 0 0 0.2px rgba(var(--color-base1), 1) inset !important;
border-radius: 0;
padding: 3px 11px;