提交 1fc92cc5 authored 作者: 周文艺's avatar 周文艺

zuixin

上级 91845458
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
"qs": "^6.13.1", "qs": "^6.13.1",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-element-plus-x": "^1.3.98", "vue-element-plus-x": "^1.3.98",
"vue-logger": "^0.0.4",
"vue-router": "^4.5.0", "vue-router": "^4.5.0",
"vuedraggable": "4.1.0", "vuedraggable": "4.1.0",
"vxe-pc-ui": "~4.8.20", "vxe-pc-ui": "~4.8.20",
...@@ -9982,6 +9983,12 @@ ...@@ -9982,6 +9983,12 @@
"vue": "^3.5.0" "vue": "^3.5.0"
} }
}, },
"node_modules/vue-logger": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/vue-logger/-/vue-logger-0.0.4.tgz",
"integrity": "sha512-UHP8IS/85bxNA1YQ/AQnwPJpI68zRQaelM6XMchTfc7Ax5U51ISPGfGTxE8OXYoSvT09vYUwyQdtX9+D2PVu+w==",
"license": "MIT"
},
"node_modules/vue-router": { "node_modules/vue-router": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz",
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
"qs": "^6.13.1", "qs": "^6.13.1",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-element-plus-x": "^1.3.98", "vue-element-plus-x": "^1.3.98",
"vue-logger": "^0.0.4",
"vue-router": "^4.5.0", "vue-router": "^4.5.0",
"vuedraggable": "4.1.0", "vuedraggable": "4.1.0",
"vxe-pc-ui": "~4.8.20", "vxe-pc-ui": "~4.8.20",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: Z 1518051043@qq.com * @Author: Z 1518051043@qq.com
* @Date: 2025-12-08 17:37:05 * @Date: 2025-12-08 17:37:05
* @LastEditors: zwy 1518051043@qq.com * @LastEditors: zwy 1518051043@qq.com
* @LastEditTime: 2025-12-27 17:21:52 * @LastEditTime: 2026-01-04 09:56:36
* @FilePath: \yuanxinPro\src\api\Zodiac.js * @FilePath: \yuanxinPro\src\api\Zodiac.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A
*/ */
...@@ -51,26 +51,33 @@ export function groundSystemStatisticsInfoApi() { ...@@ -51,26 +51,33 @@ export function groundSystemStatisticsInfoApi() {
} }
export function subSystemStatisticsInfoApi(data) { export function subSystemStatisticsInfoApi() {
return request({ return request({
url: '/GroundSystem/statistics', url: '/GroundSystem/statistics',
method: 'get', method: 'get',
data: data // data: data
}) })
} }
export function getSubSystemOpitionListApi(data) { export function getSubSystemOpitionListApi(data) {
return request({ return request({
url: '/subSystem/getSubSystem', url: '/subSystem/getSubSystem?subSystemType='+data.subSystemType,
method: 'get', method: 'get',
params: data
}) })
} }
// console.log("propsDate-min--3333333333--------",{
// endTime: historyTimeDateRange.value[1],
// satelliteId: useAppStoreInstance.globalSatelliteSearchID==='0'? "4097": (useAppStoreInstance.globalSatelliteSearchID),
// startTime: historyTimeDateRange.value[0],
// subSystemType: arcHistorySubSystemOptions[arcHistoryActiveIndex.value],
// code: historyCode.value,
// });
export function getSubSystemCurveListApi(data) { export function getSubSystemCurveListApi(data) {
return request({ return request({
url: '/subSystem/getSubSystemCurve', url: '/subSystem/getSubSystemCurve?satelliteId='+data.satelliteId+'&startTime='+data.startTime+'&endTime='+data.endTime+'&code='+data.code +'&subSystemType='+data.subSystemType,
method: 'post', method: 'get'
data: data
}) })
} }
\ No newline at end of file
/* /*
* @Author: Z 1518051043@qq.com * @Author: Z 1518051043@qq.com
* @Date: 2025-09-12 13:51:43 * @Date: 2025-09-12 13:51:43
* @LastEditors: Z 1518051043@qq.com * @LastEditors: zwy 1518051043@qq.com
* @LastEditTime: 2025-12-10 13:36:39 * @LastEditTime: 2025-12-30 11:11:21
* @FilePath: \yuanxinPro\src\main.js * @FilePath: \yuanxinPro\src\main.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
...@@ -11,7 +11,7 @@ import { createPinia } from 'pinia' ...@@ -11,7 +11,7 @@ import { createPinia } from 'pinia'
import './style.css' import './style.css'
import App from './App.vue' import App from './App.vue'
//导入ant-design-vue框架 //导入ant-design-vue框架
import Antd from 'ant-design-vue'; // import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css'; import 'ant-design-vue/dist/reset.css';
// 导入element-plus框架 // 导入element-plus框架
...@@ -68,7 +68,7 @@ app.use(elementIcons) ...@@ -68,7 +68,7 @@ app.use(elementIcons)
app.component('svg-icon', SvgIcon) app.component('svg-icon', SvgIcon)
directive(app)//挂载全局函数 directive(app)//挂载全局函数
app.use(Antd) // app.use(Antd)
app.use(pinia) app.use(pinia)
// 使用element-plus 并且设置全局的大小 // 使用element-plus 并且设置全局的大小
app.use(ElementPlus, { app.use(ElementPlus, {
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
import { ref, onMounted, onUnmounted } from 'vue'; import { ref, onMounted, onUnmounted } from 'vue';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { el } from 'element-plus/es/locales.mjs'; import { el } from 'element-plus/es/locales.mjs';
import { message } from 'ant-design-vue';
const props = defineProps(['devices','isDetialDialogVisible']) const props = defineProps(['devices','isDetialDialogVisible'])
...@@ -182,9 +182,9 @@ function handleDateRangeChange() { ...@@ -182,9 +182,9 @@ function handleDateRangeChange() {
} }
}); });
}else { }else {
message.warning({content:'完善开始时间和结束时间的选择', ElMessage({
duration: 5.5, type: 'warning',
message: '完善开始时间和结束时间的选择',
}); });
} }
......
...@@ -434,6 +434,7 @@ function initChart() { ...@@ -434,6 +434,7 @@ function initChart() {
chartDom.style.width = '100%'; chartDom.style.width = '100%';
chartDom.style.height = '150px'; chartDom.style.height = '150px';
if (!chartDom) return; if (!chartDom) return;
myChart = echarts.init(chartDom); myChart = echarts.init(chartDom);
......
const Loading = (function() {
let loadingCount = 0;
let loadingInstance = null;
let styleInstance = null;
function createLoading(options = {}) {
const {
text = 'Loading...',
background = 'rgba(0, 0, 0, 0.57)',
color = '#fff',
zIndex = 9999,
spinnerColor = color,
spinnerSize = '40px'
} = options;
if (loadingCount === 0) {
// Create loading element if it doesn't exist
loadingInstance = document.createElement('div');
loadingInstance.className = 'custom-loading';
loadingInstance.style.position = 'fixed';
loadingInstance.style.top = '0';
loadingInstance.style.left = '0';
loadingInstance.style.width = '100%';
loadingInstance.style.height = '100%';
loadingInstance.style.backgroundColor = background;
loadingInstance.style.display = 'flex';
loadingInstance.style.justifyContent = 'center';
loadingInstance.style.alignItems = 'center';
loadingInstance.style.zIndex = zIndex;
loadingInstance.style.flexDirection = 'column';
// Create spinner element
const spinnerEl = document.createElement('div');
spinnerEl.className = 'custom-loading-spinner';
spinnerEl.style.border = `4px solid rgba(0, 0, 0, 0.3)`;
spinnerEl.style.borderRadius = '50%';
spinnerEl.style.borderTop = `4px solid ${spinnerColor}`;
spinnerEl.style.width = spinnerSize;
spinnerEl.style.height = spinnerSize;
spinnerEl.style.animation = 'spin 1s linear infinite';
// Create text element
const textEl = document.createElement('p');
textEl.className = 'custom-loading-text';
textEl.textContent = text;
textEl.style.color = color;
textEl.style.marginTop = '20px';
textEl.style.fontFamily = 'Arial, sans-serif';
// Add animation styles
styleInstance = document.createElement('style');
styleInstance.textContent = `
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
`;
// Assemble elements
loadingInstance.appendChild(spinnerEl);
loadingInstance.appendChild(textEl);
document.head.appendChild(styleInstance);
document.body.appendChild(loadingInstance);
}
loadingCount++;
}
function destroyLoading() {
if (loadingCount <= 0) return;
loadingCount--;
if (loadingCount === 0 && loadingInstance) {
document.body.removeChild(loadingInstance);
document.head.removeChild(styleInstance);
loadingInstance = null;
styleInstance = null;
}
}
return {
show: createLoading,
hide: destroyLoading,
getCount: () => loadingCount // Optional: add method to get current loading count
};
})();
export default Loading;
\ No newline at end of file
<template> <template>
<div class="common-layout" :style="{ '--headerHeight': headerHeight, '--asideWidth': asideWidth }"> <div class="common-layout" :style="{ '--headerHeight': headerHeight, '--asideWidth': asideWidth }">
<!-- 悬浮控制窗口 --> <!-- 悬浮控制窗口 -->
<div class="control-panel" id="control_panel" v-if="useAppStoreInstance.iscontrolPanelShow"> <div class="control-panel" id="control_panel1" v-if="useAppStoreInstance.iscontrolPanelShow">
<div class="panel-content"> <div class="panel-content">
<div class="controls-list"> <div class="controls-list">
<div class="control-item" v-for="item in controls" :key="item.label"> <div class="control-item" v-for="item in controls" :key="item.label">
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
</template> </template>
<script setup> <script setup>
import { message } from 'ant-design-vue'
import { ref, onMounted, onUnmounted, watch, onActivated } from 'vue' import { ref, onMounted, onUnmounted, watch, onActivated } from 'vue'
import useAppStore from '@/store/module/app' import useAppStore from '@/store/module/app'
...@@ -108,37 +108,7 @@ const handleControlChange = (item, value) => { ...@@ -108,37 +108,7 @@ const handleControlChange = (item, value) => {
const searchSatelliteContent = ref('') const searchSatelliteContent = ref('')
const searchSatelliteRef = ref(null) const searchSatelliteRef = ref(null)
const searchSatellite = () => {
const isNumeric = /^\d+$/.test(searchSatelliteContent.value)
if (searchSatelliteContent.value !== '') {
if (isNumeric) {
console.log('搜索卫星:', searchSatelliteContent.value)
if (window.ue5) {
window.ue5("callBackSearchSatelliteFn", String(JSON.stringify(
{value: searchSatelliteContent.value,
})));
}
// 执行搜索逻辑
} else {
console.log('输入无效,只能输入数字:', searchSatelliteRef)
// alert(`输入值 ${searchSatelliteContent.value}无效,只能输入数字`)
message.error({
content: h('div', {
innerHTML: ` <span style="color: #ff4444; font-weight: bold;">${searchSatelliteContent.value}</span> 无效,只能输入数字`
}),
duration: 3,
className: 'searchSatellite_message'
})
searchSatelliteContent.value = ''
}
}
// console.log('搜索卫星:', isNumeric)
}
...@@ -176,7 +146,11 @@ const handleSwitchChange = (item) => { ...@@ -176,7 +146,11 @@ const handleSwitchChange = (item) => {
break; break;
default: default:
message.error('界面显示实例类型错误!');
ElMessage({
type: 'error',
message: `界面显示实例类型错误!`,
})
break; break;
} }
} }
...@@ -207,7 +181,7 @@ watch(useAppStoreInstance, () => { ...@@ -207,7 +181,7 @@ watch(useAppStoreInstance, () => {
// if (!useAppStoreInstance.islegendShow) {document.getElementById('all_footer').style.bottom = '20px'} // if (!useAppStoreInstance.islegendShow) {document.getElementById('all_footer').style.bottom = '20px'}
// document.getElementById('search_panel').style.left = '30px' // document.getElementById('search_panel').style.left = '30px'
document.getElementById('control_panel').style.right = '-30px' document.getElementById('control_panel1').style.right = '-30px'
} }
......
...@@ -55,7 +55,9 @@ ...@@ -55,7 +55,9 @@
<img v-if="isPlaying" src="@/assets/images/footers/videoPlay.png" alt="" style="width: 8px; height: 10px;" /> <img v-if="isPlaying" src="@/assets/images/footers/videoPlay.png" alt="" style="width: 8px; height: 10px;" />
</el-icon> </el-icon>
</el-button> </el-button>
<el-button size="mini" @click="jumpToSpecificTime(new Date('2025-11-03 00:00:00'))">时间</el-button>
<!-- <el-button circle class="right_block_conter_btn" @click="playForward"> <!-- <el-button circle class="right_block_conter_btn" @click="playForward">
<el-button circle class="right_block_conter_btn" @click="playForward">
<el-icon> <el-icon>
<img src="@/assets/images/footers/videoPlay_right.png" alt="" style="width: 8px; height: 10px;" /> <img src="@/assets/images/footers/videoPlay_right.png" alt="" style="width: 8px; height: 10px;" />
</el-icon> </el-icon>
...@@ -114,7 +116,7 @@ ...@@ -114,7 +116,7 @@
@mousedown="startDrag('end', $event)" @mousedown="startDrag('end', $event)"
> >
<div class="handle-rail"> <div class="handle-rail">
<div class="handle-tooltip" :class="{'handle-tooltip_auto': isPlaying}">{{ formatDateTime(selectedEndTime) }}</div> <div class="handle-tooltip" :class="{'handle-tooltip_auto': !is_flag_isRealtime}">{{ formatDateTime(selectedEndTime) }}</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -126,17 +128,98 @@ ...@@ -126,17 +128,98 @@
<script setup> <script setup>
import { VideoPlay, VideoPause, CaretLeft, CaretRight } from '@element-plus/icons-vue'; import { VideoPlay, VideoPause, CaretLeft, CaretRight } from '@element-plus/icons-vue';
import { message } from 'ant-design-vue';
import { ElLoading } from 'element-plus'
import { ElLoading, ElMessage } from 'element-plus'
import Loading from '@/pages/all/components/loadingComponent/index.js'
import { ref, onMounted, onUnmounted, computed, watch, nextTick } from 'vue'; import { ref, onMounted, onUnmounted, computed, watch, nextTick } from 'vue';
// import wss from '@/utils/subSystemRequestSocket.js' // import wss from '@/utils/subSystemRequestSocket.js'
import useAppStore from '@/store/module/app' import useAppStore from '@/store/module/app'
import { Hide, View } from '@element-plus/icons-vue' import { Hide, View } from '@element-plus/icons-vue'
import { start } from 'nprogress';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { el } from 'element-plus/es/locales.mjs';
import { objectType } from 'ant-design-vue/es/_util/type';
// 跳转到指定时间点
const jumpToSpecificTime = (targetTime) => {
try {
if (!startDateTime.value || !endDateTime.value) {
console.error("时间轴起始时间或结束时间未定义");
ElMessage.error('时间轴未初始化');
return false;
}
// 停止当前自动播放
if (isPlaying.value) {
stopAutoPlay();
}
const start = new Date(startDateTime.value).getTime();
const end = new Date(endDateTime.value).getTime();
const totalMs = totalMilliseconds.value;
// 校验目标时间是否有效
if (!(targetTime instanceof Date) || isNaN(targetTime.getTime())) {
console.error("目标时间无效:", targetTime);
ElMessage.error('目标时间格式无效');
return false;
}
const targetMs = targetTime.getTime();
// 校验目标时间是否在范围内
if (targetMs < start || targetMs > end) {
console.error("目标时间不在时间轴范围内:", targetTime);
ElMessage.warning('目标时间不在当前时间轴范围内');
return false;
}
// 计算目标时间点的百分比位置
const percentPosition = ((targetMs - start) / totalMs) * 100;
// 只更新结束滑块位置
endHandlePercent.value = Math.max(0, Math.min(100, percentPosition));
// 更新选中时间
updateSelectedTimes();
// 标记为手动选择时间点
isDraged.value = false;
is_flag_isRealtime.value = false;
isConfirmedWithRange.value = false; // 设置为false以显示完整的选中区域
// 强制更新视图
// nextTick(() => {
// updateSelectedTimes();
// console.log("跳转到指定时间:", targetTime, "滑块位置:", percentPosition);
// // 调用UE5回调函数
wssOpenHandle({
// isRealtime: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
isFastForward: useAppStoreInstance.globalSubsystemIsFastForward? true: false,
speed: useAppStoreInstance.globalSubsystemSpeed,
replayTime: formatDateTime(selectedEndTime.value),
taskCode: toNumber(useAppStoreInstance.globalSubsystemTaskCode),
satelliteId: useAppStoreInstance.globalSatelliteSearchID,
})
// });
// playForward();
// toggleAutoPlay();
return true;
} catch (error) {
console.error("跳转到指定时间点出错:", error);
ElMessage.error('跳转时间点失败');
return false;
}
};
const route = useRoute(); const route = useRoute();
const useAppStoreInstance = useAppStore(); const useAppStoreInstance = useAppStore();
const isFlagTimeLineShow = ref(true); const isFlagTimeLineShow = ref(true);
...@@ -158,21 +241,42 @@ const loading = ref(''); ...@@ -158,21 +241,42 @@ const loading = ref('');
const wssMessageHandle = () => { const wssMessageHandle = () => {
useAppStoreInstance.subsystemSocket.onmessage = (event) => { useAppStoreInstance.subsystemSocket.onmessage = (event) => {
const Jsondata = JSON.parse(event.data); const Jsondata = JSON.parse(event.data);
console.log("222222222FOOT2---------",Jsondata); // wssOpenHandle({
// type: "confirm",
// taskCode: toNumber(useAppStoreInstance.globalSubsystemTaskCode),
// clientType: "web"
// })
let flagToNext = 0
// console.log("222222222FOOT2---------",Jsondata);
if (Jsondata.type === 'no_data') { if (Jsondata.type === 'no_data') {
// wssResponeFlag_isSuccess.value = false; // wssResponeFlag_isSuccess.value = false;
(loading.value).close() // 关闭eleplate loading
message.error("已暂停,没有查询到该时间段的历史数据!!!"); // (loading.value).close()
Loading.hide()
ElMessage({
type: 'error',
message: `已暂停,没有查询到该时间段的历史数据!!!`,
})
stopAutoPlay();
// console.log("获取的wssResponeFlag_isSuccess信息2:", wssResponeFlag_isSuccess.value); // console.log("获取的wssResponeFlag_isSuccess信息2:", wssResponeFlag_isSuccess.value);
}else if (Jsondata.type === 'data_end') { }else if (Jsondata.type === 'data_end') {
(loading.value).close() Loading.hide()
message.error("已暂停,数据推送完成!!!"); ElMessage({
type: 'error',
message: `已暂停,数据推送完成!!!`,
})
stopAutoPlay();
}else { }else {
useAppStoreInstance.setSubsystemSocketContent(Jsondata) useAppStoreInstance.setSubsystemSocketContent(Jsondata)
if(loading.value){ // if(loading.value){
(loading.value).close() // (loading.value).close()
// }
Loading.hide()
if (flagToNext !== 0) {
clearTimeout(flagToNext);
} }
// startAutoPlay(); // startAutoPlay();
if (endDateTime.value === selectedEndTime.value.toISOString()) { if (endDateTime.value === selectedEndTime.value.toISOString()) {
...@@ -225,7 +329,10 @@ const loading = ref(''); ...@@ -225,7 +329,10 @@ const loading = ref('');
// // console.log('我是left,type == time获取的wssRespone:', JSONdata.time.toLocaleString(), typeof JSONdata.time.toLocaleString()); // // console.log('我是left,type == time获取的wssRespone:', JSONdata.time.toLocaleString(), typeof JSONdata.time.toLocaleString());
// } // }
// 处理服务器返回的数据 // 处理服务器返回的数据后续处理是否暂停处理
flagToNext = setTimeout(() => {
stopAutoPlay();
}, (1000*60)/playbackSpeed.value);
}; };
} }
...@@ -311,7 +418,7 @@ const shortcuts = [ ...@@ -311,7 +418,7 @@ const shortcuts = [
}, },
]; ];
const pick_select_date = ref(); const pick_select_date = ref();//未使用
const pick_select_date_handFn = (val) => { const pick_select_date_handFn = (val) => {
if (!isDraged.value) { if (!isDraged.value) {
// window.ue5("callBackTimeFn", String(JSON.stringify({ // window.ue5("callBackTimeFn", String(JSON.stringify({
...@@ -326,8 +433,8 @@ const pick_select_date_handFn = (val) => { ...@@ -326,8 +433,8 @@ const pick_select_date_handFn = (val) => {
isChange_flag_select_date.value = true; isChange_flag_select_date.value = true;
} }
const isChange_flag_select_date = ref(false); const isChange_flag_select_date = ref(false);//未使用
const taskCode_everyChange = ref(Date.now()); const taskCode_everyChange = ref(Date.now());//每次进入分系统时,生成一个新的taskCode
const toNumber = (value) => { const toNumber = (value) => {
...@@ -337,18 +444,20 @@ const toNumber = (value) => { ...@@ -337,18 +444,20 @@ const toNumber = (value) => {
// 点击确认后,处理日期范围变化 // 点击确认后,处理日期范围变化
const handleDateRangeChange = async (val) => { const handleDateRangeChange = async (val) => {
// taskCode_everyChange.value = String(Date.now()); // taskCode_everyChange.value = String(Date.now());
console.log("/****/*/*/*/*",val); // console.log("/****/*/*/*/*",val);
useAppStoreInstance.setglobalSubsystemTaskCode(taskCode_everyChange.value); useAppStoreInstance.setglobalSubsystemTaskCode(taskCode_everyChange.value);
if (val && val.length > 0) { if (val && val.length > 0) {
// if(isChange_flag_select_date.value) { // if(isChange_flag_select_date.value) {
wssResponeFlag_isSuccess.value = true; wssResponeFlag_isSuccess.value = true;
isPlaying.value = false; isPlaying.value = false;
loading.value = ElLoading.service({ //element plus组件显示加载中
lock: true, // loading.value = ElLoading.service({
text: 'Loading', // lock: true,
background: 'rgba(0, 0, 0, 0.7)', // text: 'Loading',
}) // background: 'rgba(0, 0, 0, 0.7)',
// })
Loading.show()
if (val && val.length === 2) { if (val && val.length === 2) {
console.log("11111111111111111",val[0]); console.log("11111111111111111",val[0]);
...@@ -407,7 +516,10 @@ const handleDateRangeChange = async (val) => { ...@@ -407,7 +516,10 @@ const handleDateRangeChange = async (val) => {
// } // }
isChange_flag_select_date.value = false; isChange_flag_select_date.value = false;
} else { } else {
message.warning("时间范围为空,自动执行最近24小时"); ElMessage({
type: 'warning',
message: "时间范围为空,自动执行最近24小时",
})
isDateRangeNotEmpty.value = true; isDateRangeNotEmpty.value = true;
isConfirmedWithRange.value = false; // 重置标记 isConfirmedWithRange.value = false; // 重置标记
is_flag_isRealtime.value = true;//实时模式 is_flag_isRealtime.value = true;//实时模式
...@@ -655,7 +767,10 @@ const curplaybackDirection = ref(false); ...@@ -655,7 +767,10 @@ const curplaybackDirection = ref(false);
// 切换自动播放状态 // 切换自动播放状态
const toggleAutoPlay = () => { const toggleAutoPlay = () => {
if (is_flag_isRealtime.value) { if (is_flag_isRealtime.value) {
message.warning('当前为实时播放模式,不可执行播放操作!'); ElMessage({
type: 'warning',
message: '当前为实时播放模式,不可执行播放操作!',
})
}else{ }else{
is_flag_playBackwarding.value = true; is_flag_playBackwarding.value = true;
...@@ -727,7 +842,10 @@ const playForward = async () => { ...@@ -727,7 +842,10 @@ const playForward = async () => {
updateSelectedTimes(); updateSelectedTimes();
}); });
} else { } else {
message.warning('正在前向播放!'); ElMessage({
type: 'warning',
message: '正在前向播放!',
})
} }
is_flag_playForwarding.value = false; is_flag_playForwarding.value = false;
...@@ -968,7 +1086,7 @@ const stratEndTimeTransformTime = (time) => { ...@@ -968,7 +1086,7 @@ const stratEndTimeTransformTime = (time) => {
}; };
onMounted(() => { onMounted(() => {
updateTimeline(); updateTimeline();
console.log("我是初始",useAppStoreInstance.globalSubsystemSelectedStartTime[0].getFullYear(),useAppStoreInstance.globalSubsystemSelectedStartTime); console.log("我是初始",useAppStoreInstance.globalSubsystemSelectedStartTime);
dataPickFalg.value = route.query.disabled || false; dataPickFalg.value = route.query.disabled || false;
dateRange.value = useAppStoreInstance.globalSubsystemSelectedStartTime dateRange.value = useAppStoreInstance.globalSubsystemSelectedStartTime
dataPickStartTime.value = formatDateTime(useAppStoreInstance.globalSubsystemSelectedStartTime[0]); dataPickStartTime.value = formatDateTime(useAppStoreInstance.globalSubsystemSelectedStartTime[0]);
......
...@@ -280,7 +280,9 @@ const objectSelector = [ ...@@ -280,7 +280,9 @@ const objectSelector = [
position: relative; position: relative;
width: 100%; /* 自适应宽度 */ width: 100%; /* 自适应宽度 */
} }
:deep(.custom-select .el-select__wrapper) {
height: 12.5px;
}
.section-item_content_down{ .section-item_content_down{
width: 100%; width: 100%;
/* background-color: #9520a0; */ /* background-color: #9520a0; */
......
...@@ -574,7 +574,9 @@ const indicatorStyle = computed(() => { ...@@ -574,7 +574,9 @@ const indicatorStyle = computed(() => {
/* color: #ffffff; */ /* color: #ffffff; */
border:1px solid #000000; border:1px solid #000000;
} }
:deep(.custom-select .el-select__wrapper) {
height: 12.5px;
}
:deep(.custom-select .el-select ){ :deep(.custom-select .el-select ){
background: #000000; background: #000000;
border:1px solid #000000; border:1px solid #000000;
......
...@@ -210,7 +210,7 @@ ...@@ -210,7 +210,7 @@
<img src='@/assets/images/lefts/info.png' alt="" class="satellite-icon_bottom"> <img src='@/assets/images/lefts/info.png' alt="" class="satellite-icon_bottom">
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="station" label="地面站名称" row-class-name="hover-row" width="72"></el-table-column> <el-table-column prop="station" label="地面站名称" row-class-name="hover-row" width="95"></el-table-column>
<el-table-column label="KU天线" width="62" align="center"> <el-table-column label="KU天线" width="62" align="center">
<template #default="scope"> <template #default="scope">
<div :class="{ 'errorRed': activeTab != 'equipment' && scope.row.ku != '-' }">{{ scope.row.ku }}</div> <div :class="{ 'errorRed': activeTab != 'equipment' && scope.row.ku != '-' }">{{ scope.row.ku }}</div>
......
...@@ -35,7 +35,7 @@ const props = defineProps({ ...@@ -35,7 +35,7 @@ const props = defineProps({
watch(() => props.propsDate, (newVal, oldVal) => { watch(() => props.propsDate, (newVal, oldVal) => {
if (newVal?.isFirstSearch) { if (newVal?.isFirstSearch) {
changeCharte(); changeCharte();
console.log("完全不一样的数据"); console.log("完全不一样的数据",newVal);
} }
}, { immediate: true, deep: true }) }, { immediate: true, deep: true })
...@@ -108,9 +108,34 @@ function changeCharte() { ...@@ -108,9 +108,34 @@ function changeCharte() {
// saveAsImage: {} // saveAsImage: {}
// } // }
// }, // },
legend: {
show: true,
data: [props.propsDate.chartName],
textStyle: {
color: '#fff',
fontSize: 12
},
top: '10px',
// left: '-5px',
backgroundColor: 'transparent',
borderColor: 'transparent',
padding: [5, 10],
// 添加图标样式控制
icon: 'rect', // 使用矩形图标
itemWidth: 15, // 图例宽度
itemHeight: 5, // 图例高度,设为较小值形成线条效果
},
grid: {
// top: '-1%',
right: '8%',
// bottom: '16%',
left: '15%'
},
xAxis: { xAxis: {
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
show:false,
data: props.propsDate.dataX, data: props.propsDate.dataX,
axisLine: { axisLine: {
lineStyle: { lineStyle: {
...@@ -123,6 +148,9 @@ function changeCharte() { ...@@ -123,6 +148,9 @@ function changeCharte() {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
min:props.propsDate.minY,
max:props.propsDate.maxY,
boundaryGap: [0, '100%'], boundaryGap: [0, '100%'],
axisLine: { axisLine: {
lineStyle: { lineStyle: {
...@@ -130,7 +158,10 @@ function changeCharte() { ...@@ -130,7 +158,10 @@ function changeCharte() {
} }
}, },
axisLabel: { axisLabel: {
color: '#fff' color: '#fff',
formatter: function (value) {
return value.toFixed(2); // 保留三位小数
}
}, },
splitLine: { splitLine: {
lineStyle: { lineStyle: {
...@@ -144,10 +175,10 @@ function changeCharte() { ...@@ -144,10 +175,10 @@ function changeCharte() {
start: 0, start: 0,
end: 100 end: 100
}, },
{ // {
start: 0, // start: 0,
end: 100 // end: 100
} // }
], ],
series: [ series: [
{ {
...@@ -186,7 +217,9 @@ function changeCharte() { ...@@ -186,7 +217,9 @@ function changeCharte() {
fontSize: 12 fontSize: 12
}, },
// 固定tooltip位置在顶部 // 固定tooltip位置在顶部
position: function (pos, params, dom, rect, size) {
return ['15%', pos[1]];
}
} }
}; };
...@@ -231,14 +264,22 @@ function initChart() { ...@@ -231,14 +264,22 @@ function initChart() {
// saveAsImage: {} // saveAsImage: {}
// } // }
// }, // },
grid: {
top: '-1%',
right: '8%',
// bottom: '16%',
left: '15%'
},
xAxis: { xAxis: {
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
show:false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: '#fff' color: '#fff'
} }
}, },
axisLabel: { axisLabel: {
color: '#fff' color: '#fff'
...@@ -246,6 +287,8 @@ function initChart() { ...@@ -246,6 +287,8 @@ function initChart() {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
min:props.propsDate.minY,
max:props.propsDate.maxY,
boundaryGap: [0, '100%'], boundaryGap: [0, '100%'],
axisLine: { axisLine: {
lineStyle: { lineStyle: {
...@@ -270,14 +313,11 @@ function initChart() { ...@@ -270,14 +313,11 @@ function initChart() {
start: 0, start: 0,
end: 100 end: 100
}, },
{
start: 0,
end: 100
}
], ],
series: [ series: [
{ {
name: 'CDF', name: props.propsDate.chartName || 'CDF',
type: 'line', type: 'line',
smooth: true, smooth: true,
symbol: 'none', symbol: 'none',
...@@ -313,7 +353,9 @@ function initChart() { ...@@ -313,7 +353,9 @@ function initChart() {
fontSize: 12 fontSize: 12
}, },
// 固定tooltip位置在顶部 // 固定tooltip位置在顶部
position: function (pos, params, dom, rect, size) {
return ['15%', pos[1]];
}
} }
}; };
......
差异被折叠。
...@@ -239,7 +239,7 @@ export const constantRoutes = [ ...@@ -239,7 +239,7 @@ export const constantRoutes = [
] ]
const router = createRouter({ const router = createRouter({
history: createWebHistory(), history: createWebHashHistory(),
routes: constantRoutes, routes: constantRoutes,
scrollBehavior(to, from, savedPosition) { scrollBehavior(to, from, savedPosition) {
if (savedPosition) { if (savedPosition) {
......
/* /*
* @Author: Z 1518051043@qq.com * @Author: Z 1518051043@qq.com
* @Date: 2025-09-12 13:51:43 * @Date: 2025-09-12 13:51:43
* @LastEditors: Z 1518051043@qq.com * @LastEditors: zwy 1518051043@qq.com
* @LastEditTime: 2025-12-26 09:06:43 * @LastEditTime: 2025-12-31 17:50:03
* @FilePath: \yuanxinPro\src\store\module\app.js * @FilePath: \yuanxinPro\src\store\module\app.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
...@@ -33,8 +33,8 @@ const useAppStore = defineStore( ...@@ -33,8 +33,8 @@ const useAppStore = defineStore(
globalSubsystemIsFastForward: false, globalSubsystemIsFastForward: false,
globalSubsystemSpeed: 1, globalSubsystemSpeed: 1,
globalSubsystemTaskCode: 0, globalSubsystemTaskCode: 0,
globalSubsystemSelectedStartTime: '2025-11-03 00:00:00', globalSubsystemSelectedStartTime: ['Sun Nov 02 2025 00:00:00 GMT+0800 (中国标准时间) ','Tue Nov 04 2025 00:00:00 GMT+0800 (中国标准时间) '],
globalSubsystemSelectedEndTime: '2025-11-04 00:00:00', globalSubsystemSelectedEndTime: '2025-11-04 00:00:00',//暂未使用
globalDisableTimeLine: true, globalDisableTimeLine: true,
}), }),
......
/* /*
* @Author: Z 1518051043@qq.com * @Author: Z 1518051043@qq.com
* @Date: 2025-12-01 13:52:20 * @Date: 2025-12-01 13:52:20
* @LastEditors: Z 1518051043@qq.com * @LastEditors: zwy 1518051043@qq.com
* @LastEditTime: 2025-12-18 11:18:24 * @LastEditTime: 2025-12-31 15:46:20
* @FilePath: \yuanxinPro\src\utils\requestSocekt.js * @FilePath: \yuanxinPro\src\utils\requestSocekt.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
import HeartbeatInterval from '@/store/module/app.js' import HeartbeatInterval from '@/store/module/app.js'
const apiUrl = `ws://121.229.107.155:19021/trackInfo` // const apiUrl = `ws://121.229.107.155:19021/trackInfo`
const apiUrl = `ws://121.229.107.155:19021/TestTimeSend`
const wss = new WebSocket(apiUrl); const wss = new WebSocket(apiUrl);
wss.onopen = () => { wss.onopen = () => {
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论