提交
This commit is contained in:
@ -11,7 +11,8 @@ spring:
|
||||
active: sqlite
|
||||
mysql:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://192.168.110.65:6975/yjearth?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
url: >-
|
||||
jdbc:mysql://192.168.110.65:6975/yjearth?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: yjearth
|
||||
password: kNGxrsSSYMexZ2t4
|
||||
servlet:
|
||||
|
||||
@ -20096,8 +20096,8 @@
|
||||
var testing =
|
||||
'<div class="compass" title="拖动外圈:旋转视图,' +
|
||||
'拖动内陀螺仪:自由轨道,' +
|
||||
'双击:重置视图,' +
|
||||
'提示:您还可以按住CTRL键并拖动地图来释放轨道." data-bind="visible: showCompass, event: { mousedown: handleMouseDown, dblclick: handleDoubleClick }">' +
|
||||
'双击:重置视图' +
|
||||
'" data-bind="visible: showCompass, event: { mousedown: handleMouseDown, dblclick: handleDoubleClick }">' +
|
||||
'<div class="compass-outer-ring-background"></div>' +
|
||||
" <div class=\"compass-rotation-marker\" data-bind=\"visible: isOrbiting, style: { transform: 'rotate(-' + orbitCursorAngle + 'rad)', '-webkit-transform': 'rotate(-' + orbitCursorAngle + 'rad)', opacity: orbitCursorOpacity }, cesiumSvgPath: { path: svgCompassRotationMarker, width: 145, height: 145 }\"></div>" +
|
||||
" <div class=\"compass-outer-ring\" title=\"单击并拖动以旋转相机\" data-bind=\"style: { transform: 'rotate(-' + heading + 'rad)', '-webkit-transform': 'rotate(-' + heading + 'rad)' }, cesiumSvgPath: { path: svgCompassOuterRing, width: 145, height: 145 }\"></div>" +
|
||||
|
||||
@ -29,6 +29,14 @@
|
||||
--color-background-mute: var(--ev-c-black-mute);
|
||||
|
||||
--color-text: var(--ev-c-text-1);
|
||||
|
||||
|
||||
|
||||
--color-border1: rgba(0, 194, 142, 1);
|
||||
--color-border2: rgba(0, 255, 200, 1);
|
||||
--color-border3: rgba(42, 200, 251, 1);
|
||||
--color-border4: rgba(229, 93, 93, 1);
|
||||
--color-border5: rgba(255, 165, 92, 1);
|
||||
}
|
||||
|
||||
*,
|
||||
|
||||
32
src/renderer/src/utils/theme.ts
Normal file
32
src/renderer/src/utils/theme.ts
Normal file
@ -0,0 +1,32 @@
|
||||
let theme = {
|
||||
"yingguangse": new Map(),
|
||||
"gonganlan": new Map(),
|
||||
"hong": new Map(),
|
||||
}
|
||||
theme.yingguangse.set("--svg-headColor1", "rgba(11, 37, 40, 0.6)")
|
||||
theme.yingguangse.set("--svg-headColor2", "rgba(11, 37, 40, 0.8)")
|
||||
theme.yingguangse.set("--svg-headColor3", "#0ff")
|
||||
theme.yingguangse.set("--svg-headColorbg", "rgba(0,255,255,0.1)")
|
||||
// theme.yingguangse.set("--svg-headColor3", "#0ff")
|
||||
theme.yingguangse.set("--svg-baseLineColor", "#0ff")
|
||||
theme.yingguangse.set("--svg-divBgColor", "rgba(0, 0, 0, .5)")
|
||||
|
||||
theme.gonganlan.set("--svg-headColor1", "rgba(11, 37, 40, 0.6)")
|
||||
theme.gonganlan.set("--svg-headColor2", "rgba(17, 19, 69, 0.8)")
|
||||
theme.gonganlan.set("--svg-headColor3", "#2ac8fb")
|
||||
theme.gonganlan.set("--svg-headColorbg", "rgba(34,39,142,0.1)")
|
||||
theme.gonganlan.set("--svg-headLineColor", "#22278e")
|
||||
theme.gonganlan.set("--svg-baseLineColor", "#2ac8fb")
|
||||
// theme.gonganlan.set("--svg-baseLineColor", "#fb2a2a")
|
||||
theme.gonganlan.set("--svg-divBgColor", "rgba(0, 0, 0, .5)")
|
||||
|
||||
|
||||
theme.hong.set("--svg-headColor1", "rgba(11, 37, 40, 0.6)")
|
||||
theme.hong.set("--svg-headColor2", "rgba(17, 19, 69, 0.8)")
|
||||
theme.hong.set("--svg-headColor3", "#bb1a29")
|
||||
theme.hong.set("--svg-headColorbg", "rgba(187,26,41,0.1)")
|
||||
theme.hong.set("--svg-headLineColor", "#bb1a29")
|
||||
theme.hong.set("--svg-baseLineColor", "#bb1a29")
|
||||
// theme.gonganlan.set("--svg-baseLineColor", "#fb2a2a")
|
||||
theme.hong.set("--svg-divBgColor", "rgba(0, 0, 0, .5)")
|
||||
export default theme;
|
||||
@ -410,6 +410,7 @@ import { ElMessage } from 'element-plus'
|
||||
import { inject, onMounted } from 'vue'
|
||||
import { TreeApi } from '@/api/tree'
|
||||
import { $sendElectronChanel } from '@/utils/communication'
|
||||
import theme from "@/utils/theme";
|
||||
|
||||
const eventBus: any = inject('bus')
|
||||
|
||||
@ -523,7 +524,7 @@ const sysChange = async () => {
|
||||
let coor = systemSetting.value.coordinate ? systemSetting.value.coordinate : 'EPSG:4326'
|
||||
YJ.Global.setCoordinateSystem(window.earth, coor)
|
||||
//设置坐标格式
|
||||
YJ.Global.setDMS(window.earth, systemSetting.value.positionType)
|
||||
// YJ.Global.setDMS(window.earth, systemSetting.value.positionType)
|
||||
|
||||
//比例尺
|
||||
await YJ.Global.SheetIndexStatusSwitch(window.earth, systemSetting.value.sheetIndexStatusSwitch)
|
||||
@ -535,6 +536,13 @@ const sysChange = async () => {
|
||||
} else {
|
||||
YJ.Global.MapX.close(window.earth)
|
||||
}
|
||||
|
||||
let skin = systemSetting.value.skinInfo ? systemSetting.value.skinInfo : "yingguangse";
|
||||
let colorVariable = Array.from(theme[skin].keys());
|
||||
colorVariable.forEach((key:any) => {
|
||||
console.log('key', key)
|
||||
document.documentElement.style.setProperty(key, theme[skin].get(key));
|
||||
});
|
||||
}
|
||||
const searchWayChange = (val) => {
|
||||
localStorage.setItem('searchWay', val)
|
||||
|
||||
@ -2,19 +2,52 @@
|
||||
<div class="leftBox">
|
||||
<div class="left animate__animated">
|
||||
<div class="menus">
|
||||
<div
|
||||
class="menus_itemBox"
|
||||
v-for="(item, index) in menuList"
|
||||
:title="t(`firstMenu.${item.name}`)"
|
||||
>
|
||||
<div
|
||||
class="item_icon"
|
||||
@click="
|
||||
(e) => {
|
||||
<div class="menus_itemBox" v-for="(item, index) in menuList" :title="t(`firstMenu.${item.name}`)">
|
||||
<div class="item_icon" @click="(e) => {
|
||||
handleClick(item, e)
|
||||
}
|
||||
"
|
||||
>
|
||||
">
|
||||
<!-- <svg class="item_icon_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="162" height="44" viewBox="0 0 162 44" fill="none" preserveAspectRatio="none">
|
||||
<path fill="#000000" fill-opacity="0.5" d="M0 44L136.639 44L162 18L162 0L0 0L0 44Z" />
|
||||
<path fill-rule="evenodd" fill="rgba(42, 200, 251, 1)"
|
||||
d="M136.006 42.5L1.5 42.5L1.5 1.5L160.5 1.5L160.5 17.3896L136.006 42.5ZM136.639 44L0 44L0 0L162 0L162 18L136.639 44Z" />
|
||||
<path d="M0 0L15.0533 0L49.1742 41L98.4484 41.2681L102 44L0 44L0 0Z" fill="#45AEF7" fill-opacity="0.2" />
|
||||
<path d="M3 34L3 41L10 41L3 34Z" stroke="rgba(198, 248, 255, 1)" stroke-width="0.5"
|
||||
stroke-linejoin="round" />
|
||||
<path d="M159 10L159 3L152 3L159 10Z" stroke="rgba(198, 248, 255, 1)" stroke-width="0.5"
|
||||
stroke-linejoin="round" />
|
||||
</svg> -->
|
||||
<svg class="item_icon_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="162" height="44" viewBox="0 0 162 44" fill="none" preserveAspectRatio="none">
|
||||
<path fill="#000000" fill-opacity="0.5" d="M0 44L136.639 44L162 18L162 0L0 0L0 44Z" />
|
||||
<path fill-rule="evenodd" fill="url(#linear_border_2218_109_0)"
|
||||
d="M136.006 42.5L1.5 42.5L1.5 1.5L160.5 1.5L160.5 17.3896L136.006 42.5ZM136.639 44L0 44L0 0L162 0L162 18L136.639 44Z" />
|
||||
<path d="M0 0L15.0533 0L49.1742 41L98.4484 41.2681L102 44L0 44L0 0Z" fill="#00FFFF" fill-opacity="0.2" />
|
||||
<path d="M3 34L3 41L10 41L3 34Z" stroke="rgba(0, 255, 255, 1)" stroke-width="0.5"
|
||||
stroke-linejoin="round" />
|
||||
<path d="M159 10L159 3L152 3L159 10Z" stroke="rgba(0, 255, 255, 1)" stroke-width="0.5"
|
||||
stroke-linejoin="round" />
|
||||
<defs>
|
||||
<linearGradient id="linear_border_2218_109_0" x1="0" y1="-1.7520751953125" x2="140.2142333984375"
|
||||
y2="40.473846435546875" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.0625" stop-color="#00FFFF" />
|
||||
<stop offset="1" stop-color="#00C8FF" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
<svg class="item_icon_bg item_icon_bg_hover" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="163" height="45"
|
||||
viewBox="0 0 163 45" fill="none" preserveAspectRatio="none">
|
||||
<path fill="url(#linear_fill_2218_82_1)"
|
||||
d="M0.5 44.5L137.139 44.5L162.5 18.5L162.5 0.5L0.5 0.5L0.5 44.5Z" />
|
||||
<defs>
|
||||
<linearGradient id="linear_fill_2218_82_1" x1="84.9554443359375" y1="44.49997329711914"
|
||||
x2="84.95498657226562" y2="0.5" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#00FFFF" stop-opacity="0.6" />
|
||||
<stop offset="1" stop-color="#00FFFF" stop-opacity="0" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
<!-- <svg-icon :class-name="['absolute', 'zIndex-1', 'left_item_bg']" icon-class="bg2"></svg-icon> -->
|
||||
<svg-icon :name="item.svg" :size="16" color="rgba(0, 255, 255, 1)"></svg-icon>
|
||||
<div class="item_text">
|
||||
@ -22,10 +55,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<leftSideSecond
|
||||
class="absolute zIndex99 leftSideSecond"
|
||||
ref="leftSideSecondRef"
|
||||
></leftSideSecond>
|
||||
<leftSideSecond class="absolute zIndex99 leftSideSecond" ref="leftSideSecondRef"></leftSideSecond>
|
||||
</div>
|
||||
</div>
|
||||
<div class="left_bottom" @click="fold"></div>
|
||||
@ -33,16 +63,16 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {useI18n} from 'vue-i18n'
|
||||
import {useRouter} from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
import {bus} from '@/utils/bus'
|
||||
import { bus } from '@/utils/bus'
|
||||
import leftSideSecond from '@/views/components/leftSide/leftSideSecond.vue'
|
||||
import {ElMessage, ElLoading} from 'element-plus'
|
||||
import { ElMessage, ElLoading } from 'element-plus'
|
||||
|
||||
const {ipcRenderer} = require('electron')
|
||||
const { ipcRenderer } = require('electron')
|
||||
const router = useRouter() // 路由实例
|
||||
const {t} = useI18n()
|
||||
const { t } = useI18n()
|
||||
const eventBus: any = inject('bus')
|
||||
const menuList: any = ref([
|
||||
// 方案推演
|
||||
@ -202,7 +232,7 @@ const handleClick = (item: any, e) => {
|
||||
if ((window as any).checkAuthIsValid) {
|
||||
console.log('打开态势推演')
|
||||
ipcRenderer.send('toggle-fullscreen', true)
|
||||
router.push({path: '/ts'})
|
||||
router.push({ path: '/ts' })
|
||||
|
||||
} else {
|
||||
ElMessage({
|
||||
@ -368,20 +398,27 @@ const clickMenu = (item: any) => {
|
||||
.item_icon {
|
||||
width: 100%;
|
||||
height: 4.2vh;
|
||||
background: url('../../../assets/images/hongse/left.png') no-repeat;
|
||||
// background: url('../../../assets/images/hongse/left.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
position: relative;
|
||||
|
||||
.item_icon:hover .item_text {
|
||||
color: rgba(0, 255, 255, 1);
|
||||
>.item_icon_bg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
}
|
||||
}
|
||||
|
||||
.item_icon:hover {
|
||||
background: url('../../../assets/images/hongse/left1.png') no-repeat;
|
||||
// background: url('../../../assets/images/hongse/left1.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
>.item_icon_bg_hover {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.item_text {
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
<div class="table-body" v-if="cameraList && cameraList.length > 0">
|
||||
<div class="tr" v-for="(item, index) in cameraList">
|
||||
<div class="td">
|
||||
<input type="checkbox" :value="item.deviceId" v-model="item.checked"
|
||||
<input type="checkbox" :value="item.id" v-model="item.checked"
|
||||
@change="changeAttributeCamera(item)" />
|
||||
<span>绑定</span>
|
||||
</div>
|
||||
@ -228,6 +228,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
import { inject } from 'vue'
|
||||
import { deviceApi } from '@/api/deviceManage'
|
||||
|
||||
let ipcRenderer;
|
||||
if (window && window.process && window.process.type === 'renderer') {
|
||||
@ -244,7 +245,7 @@ const cameraParams = ref({
|
||||
page: 1,
|
||||
total: 0
|
||||
})
|
||||
const cameraList = ref()
|
||||
const cameraList:any = ref([])
|
||||
|
||||
const props = defineProps({
|
||||
entityOptions: {
|
||||
@ -349,30 +350,19 @@ const cameraSelect = ({ page, limit }) => {
|
||||
let url = ""
|
||||
const params:any = {
|
||||
cameraName: cameraParams.value.keyWord,
|
||||
page: cameraParams.value.page,
|
||||
pageNum: cameraParams.value.page,
|
||||
pageSize: cameraParams.value.pageSize
|
||||
};
|
||||
const queryString = new URLSearchParams(params).toString();
|
||||
url = `http://localhost:8891/yjearth4.0/api/v1/cameraData/list?${queryString}`
|
||||
fetch(url, {
|
||||
method: 'get',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
"token": 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzYwOTQyMzU2fQ.TKwa0hMzsSl9bD4-iItoay2VDTQZf2zt0Lu0qgiRaUM',
|
||||
"Authorization": "Bearer " + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzYwOTQyMzU2fQ.TKwa0hMzsSl9bD4-iItoay2VDTQZf2zt0Lu0qgiRaUM',
|
||||
}
|
||||
}).then((response) => {
|
||||
if (response.status === 200) {
|
||||
response.json().then((data) => {
|
||||
if (data.code === 200 || data.code === 0) {
|
||||
if (data.data) {
|
||||
cameraParams.value.total = data.data.total
|
||||
if (data.data.list && data.data.list.length > 0) {
|
||||
cameraList.value = data.data.list
|
||||
deviceApi.deviceList(params).then((res) => {
|
||||
if (res.code === 0 || res.code === 200) {
|
||||
if (res.data) {
|
||||
cameraParams.value.total = res.data.total
|
||||
if (res.data.records && res.data.records.length > 0) {
|
||||
cameraList.value = res.data.records
|
||||
for (let i = 0; i < cameraList.value.length; i++) {
|
||||
cameraList.value[i].checked = false
|
||||
for (let j = 0; j < props.entityOptions.attributeCamera.length; j++) {
|
||||
if (cameraList.value[i].deviceId == props.entityOptions.attributeCamera[j].deviceId) {
|
||||
if (cameraList.value[i].id == props.entityOptions.attributeCamera[j].id) {
|
||||
cameraList.value[i].checked = true
|
||||
}
|
||||
}
|
||||
@ -380,9 +370,7 @@ const cameraSelect = ({ page, limit }) => {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.error(data.message)
|
||||
}
|
||||
})
|
||||
console.error(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -636,7 +624,7 @@ const changeAttributeCamera = (e) => {
|
||||
console.log(e)
|
||||
props.entityOptions.attributeCamera = [{ ...e }]
|
||||
for (let i = 0; i < cameraList.value.length; i++) {
|
||||
if (cameraList.value[i].deviceId !== e.deviceId) {
|
||||
if (cameraList.value[i].id !== e.id) {
|
||||
cameraList.value[i].checked = false
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,11 +101,12 @@ function leftClick(options) {
|
||||
info.camera.forEach((item) => {
|
||||
index++;
|
||||
ipcRenderer.send("openFFPlay", {
|
||||
url: item.rtspUrl, //
|
||||
// url: 'rtsp://admin:admin123456@192.168.110.32:554/cam/realmonitor?channel=1&subtype=0', //
|
||||
url: `rtsp://${item.username}:${item.password}@${item.ip}:${item.port}/cam/realmonitor?channel=${item.channel}&subtype=0`, //
|
||||
cameraName: item.cameraName, //
|
||||
ip: item.ip, //
|
||||
name: node.sourceName,
|
||||
deviceId: item.deviceId, //
|
||||
deviceId: item.id, //
|
||||
});
|
||||
ipcRenderer.once(
|
||||
"openFFPlayOut",
|
||||
|
||||
Reference in New Issue
Block a user