Commit ea172f23 by liucan

fix:修改状态监控数字显示格式

parent e584b822
const formatExactLargeNum = (num: number | string | null) => {
if (num === null || num === undefined) return "";
if (typeof num !== "number" && typeof num !== "string") return num;
if (num === null || num === undefined) return ''
if (typeof num !== 'number' && typeof num !== 'string') return num
const parsedNum = typeof num === "string" ? Number(num.replace(/,/g, "")) : num;
const parsedNum = typeof num === 'string' ? Number(num.replace(/,/g, '')) : num
if (isNaN(parsedNum)) return num;
if (isNaN(parsedNum)) return num
// 如果大于 100 万 或大于 1 亿,使用科学计数法
if (Math.abs(parsedNum) > 1_000_000) {
return parsedNum.toExponential(2);
const absNum = Math.abs(parsedNum)
if (absNum >= 100_000_000) {
return (parsedNum / 100_000_000).toFixed(2) + '亿'
} else if (absNum >= 10_000) {
return (parsedNum / 10_000).toFixed(2) + '万'
} else {
return parsedNum.toLocaleString("en-US", {
return parsedNum.toLocaleString('en-US', {
useGrouping: true,
maximumFractionDigits: 0,
minimumFractionDigits: 0,
});
maximumFractionDigits: 2,
minimumFractionDigits: 0
})
}
};
}
export default formatExactLargeNum;
export default formatExactLargeNum
......@@ -5,7 +5,7 @@
<div class="left">
<div>
<span style="color: white">目标名称:</span>
<el-input placeholder="请输入目标名称:" v-model="searchTargetName" style="width: 180px" />
<el-input placeholder="请输入目标名称" v-model="searchTargetName" style="width: 180px" />
</div>
<div>
<span style="color: white">采集时间:</span>
......@@ -54,12 +54,12 @@
<el-table-column property="data.station" label="站点名称" width="88" show-overflow-tooltip />
<el-table-column property="data.distance" label="距离" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.data.distance === null ? "-" : scope.row.data.distance }}
{{ scope.row.data.distance === null ? '-' : scope.row.data.distance }}
</template>
</el-table-column>
<el-table-column property="data.roundTripLightTime" label="往返光时" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.data.roundTripLightTime === null ? "-" : scope.row.data.roundTripLightTime }}
{{ scope.row.data.roundTripLightTime === null ? '-' : scope.row.data.roundTripLightTime }}
</template>
</el-table-column>
<el-table-column property="data.boa" label="行动开始时间" show-overflow-tooltip>
......@@ -72,19 +72,19 @@
{{ formatTimestamp(scope.row.data.bot) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="跟踪结束时间" show-overflow-tooltip>
<el-table-column property="data.plan_txt" label="跟踪开始时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.eoa) }}
{{ formatTimestamp(scope.row.data.eot) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="跟踪开始时间" show-overflow-tooltip>
<el-table-column property="data.plan_txt" label="跟踪结束时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.eot) }}
{{ formatTimestamp(scope.row.data.eoa) }}
</template>
</el-table-column>
<el-table-column label="目标在线状态" width="110" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.data.target?.[scope.row.data.mission] === "true" ? "是" : "否" }}
{{ scope.row.data.target?.[scope.row.data.mission] === 'true' ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column property="crawl_time" label="采集时间" />
......@@ -137,11 +137,11 @@
</div>
<div class="info-item">
<span class="item-title">目标尺寸:</span>
<span class="item">{{ targetDimension ?? "--" }}</span>
<span class="item">{{ targetDimension ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">发射质量:</span>
<span class="item">{{ targetLaunchMass ?? "--" }}</span>
<span class="item">{{ targetLaunchMass ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">干质量:</span>
......@@ -167,7 +167,7 @@
</div>
<div class="info-item">
<span class="item-title">发射站点:</span>
<span class="item">{{ targetLaunchLocation ?? "--" }}</span>
<span class="item">{{ targetLaunchLocation ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">轨道周期:</span>
......@@ -175,23 +175,23 @@
</div>
<div class="info-item">
<span class="item-title">相关仪器:</span>
<span class="item">{{ targetInstruments ?? "--" }}</span>
<span class="item">{{ targetInstruments ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">服役日期:</span>
<span class="item">{{ targetServiceDate ?? "--" }}</span>
<span class="item">{{ targetServiceDate ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">是否为核心任务:</span>
<span class="item">{{ targetIsCoreMission ?? "--" }}</span>
<span class="item">{{ targetIsCoreMission ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">太阳风速:</span>
<span class="item">{{ targetSolarWindSpeed ?? "--" }}</span>
<span class="item">{{ targetSolarWindSpeed ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">太阳通量密度:</span>
<span class="item">{{ targetSolarFluxDensity ?? "--" }}</span>
<span class="item">{{ targetSolarFluxDensity ?? '--' }}</span>
</div>
<div class="info-item">
<span class="item-title">轨道倾角:</span>
......@@ -270,7 +270,7 @@
</div>
<div class="info-item">
<span class="item-title">站点气压:</span>
<span class="item">{{ stationPressure === "" ? "--" : stationPressure }}</span>
<span class="item">{{ stationPressure === '' ? '--' : stationPressure }}</span>
</div>
<div class="info-item">
<span class="item-title">站点天气情况:</span>
......@@ -328,11 +328,11 @@
</div>
<div class="info-item">
<span class="item-title">站点温度:</span>
<span class="item">{{ stationTemperature === "" ? "--" : stationTemperature }}</span>
<span class="item">{{ stationTemperature === '' ? '--' : stationTemperature }}</span>
</div>
<div class="info-item">
<span class="item-title">站点湿度:</span>
<span class="item">{{ stationHumidity === "" ? "--" : stationHumidity }}</span>
<span class="item">{{ stationHumidity === '' ? '--' : stationHumidity }}</span>
</div>
</el-col>
</el-row>
......@@ -348,307 +348,307 @@
</template>
<script setup lang="ts">
import { onMounted, ref } from "vue";
import Pagination from "@/components/pagination/index.vue";
import exportDialog from "@/components/Export/index.vue";
import { getESAList, getESAMissionDetail, getESAStationDetail } from "@/api/spiderData";
import { ElMessage } from "element-plus";
import { onMounted, ref } from 'vue'
import Pagination from '@/components/pagination/index.vue'
import exportDialog from '@/components/Export/index.vue'
import { getESAList, getESAMissionDetail, getESAStationDetail } from '@/api/spiderData'
import { ElMessage } from 'element-plus'
// ElConfigProvider 组件
import { ElConfigProvider } from "element-plus";
import { ElConfigProvider } from 'element-plus'
// 引入中文包
import zhCn from "element-plus/es/locale/lang/zh-cn";
import TableSearch from "@/components/TableSearch.vue";
defineOptions({ name: "Pagination" });
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import TableSearch from '@/components/TableSearch.vue'
defineOptions({ name: 'Pagination' })
// 更改分页文字
zhCn.el.pagination.total = "共 `{total} 条`";
zhCn.el.pagination.goto = "跳至";
zhCn.el.pagination.pagesize = "条/页";
zhCn.el.pagination.pageClassifier = "页";
zhCn.el.pagination.total = '共 `{total} 条`'
zhCn.el.pagination.goto = '跳至'
zhCn.el.pagination.pagesize = '条/页'
zhCn.el.pagination.pageClassifier = '页'
// 查找字段
const searchTargetName = ref("");
const searchTimeValue = ref("");
const searchStation = ref("");
const showDeleteDialog = ref(false);
const detailVisibleValue = ref(false);
const stationVisibleValue = ref(false);
const searchTargetName = ref('')
const searchTimeValue = ref('')
const searchStation = ref('')
const showDeleteDialog = ref(false)
const detailVisibleValue = ref(false)
const stationVisibleValue = ref(false)
// 目标详情信息
const targetName = ref("");
const targetName = ref('')
// 任务类型
const targetMissionType = ref("");
const targetMissionType = ref('')
// 目标运行轨道
const targetOrbit = ref("");
const targetOrbit = ref('')
// 目标尺寸
const targetDimension = ref("");
const targetDimension = ref('')
// 目标发射质量
const targetLaunchMass = ref("");
const targetLaunchMass = ref('')
// 目标干质量
const targetDryMass = ref("");
const targetDryMass = ref('')
// 近地点
const targetPerigee = ref("");
const targetPerigee = ref('')
// 远地点
const targetApogee = ref("");
const targetApogee = ref('')
// 目标功率
const targetPower = ref("");
const targetPower = ref('')
// 轨道倾角
const targetInclination = ref("");
const targetInclination = ref('')
// 轨道周期
const targetPeriod = ref("");
const targetPeriod = ref('')
// 发射日期
const targetLaunchDate = ref("");
const targetLaunchDate = ref('')
// 发射站点
const targetLaunchLocation = ref("");
const targetLaunchLocation = ref('')
// 相关仪器
const targetInstruments = ref("");
const targetInstruments = ref('')
// 服役日期
const targetServiceDate = ref("");
const targetServiceDate = ref('')
// 是否为核心任务
const targetIsCoreMission = ref("");
const targetIsCoreMission = ref('')
// 太阳风速
const targetSolarWindSpeed = ref("");
const targetSolarWindSpeed = ref('')
// 太阳通量密度
const targetSolarFluxDensity = ref("");
const targetSolarFluxDensity = ref('')
// 是否在仪表盘中显示
// const targetIsShowInDashboard = ref('')
// 目标类型
const targetType = ref("");
const targetType = ref('')
// 描述
const targetDescription = ref("");
const targetDescription = ref('')
// 站点详情信息
// 站点名称
const stationName = ref("");
const stationName = ref('')
// 站点所在国家
const stationCountry = ref("");
const stationCountry = ref('')
// 站点经度
const stationLongitude = ref("");
const stationLongitude = ref('')
// 站点纬度
const stationLatitude = ref("");
const stationLatitude = ref('')
// 站点海拔高度
const stationAltitude = ref("");
const stationAltitude = ref('')
// 站点直径
const stationDiameter = ref("");
const stationDiameter = ref('')
// 天线方位角速度
const stationAzimuthSpeed = ref("");
const stationAzimuthSpeed = ref('')
// 天线俯仰角速度
const stationElevationSpeed = ref("");
const stationElevationSpeed = ref('')
// 天线信号频段
const stationBand = ref("");
const stationBand = ref('')
// TMTC标准
const stationTMTC = ref("");
const stationTMTC = ref('')
// 信号频率与定时
const stationFrequencyAndTiming = ref("");
const stationFrequencyAndTiming = ref('')
// 天气
const stationWeather = ref("");
const stationWeather = ref('')
// 上行信号S频段极化
const stationUplinkSPolarization = ref("");
const stationUplinkSPolarization = ref('')
// 上行信号S频段等效全向辐射功率
const stationUplinkSEirp = ref("");
const stationUplinkSEirp = ref('')
// 上行信号X频段极化
const stationUplinkXPolarization = ref("");
const stationUplinkXPolarization = ref('')
// 上行信号X频段等效全向辐射功率
const stationUplinkXEirp = ref("");
const stationUplinkXEirp = ref('')
// 上行信号Ka频段极化
const stationUplinkKaPolarization = ref("");
const stationUplinkKaPolarization = ref('')
// 上行信号Ka频段等效全向辐射功率
const stationUplinkKaEirp = ref("");
const stationUplinkKaEirp = ref('')
// 下行信号S频段极化
const stationDownlinkSPolarization = ref("");
const stationDownlinkSPolarization = ref('')
// 下行信号S频段G/T比
const stationDownlinkSGt = ref("");
const stationDownlinkSGt = ref('')
// 下行信号X频段极化
const stationDownlinkXPolarization = ref("");
const stationDownlinkXPolarization = ref('')
// 下行信号X频段G/T比
const stationDownlinkXGt = ref("");
const stationDownlinkXGt = ref('')
// 下行信号Ka频段极化
const stationDownlinkKaPolarization = ref("");
const stationDownlinkKaPolarization = ref('')
// 下行信号Ka频段G/T比
const stationDownlinkKaGt = ref("");
const stationDownlinkKaGt = ref('')
// 温度
const stationTemperature = ref("");
const stationTemperature = ref('')
// 气压
const stationPressure = ref("");
const stationPressure = ref('')
// 湿度
const stationHumidity = ref("");
const stationHumidity = ref('')
// 站点类型
const stationType = ref("");
const stationType = ref('')
// 描述
const stationDescription = ref("");
const stationDescription = ref('')
// 查看esa站点详情的方法
const handleStationDetails = async (id: any) => {
try {
const res = await getESAStationDetail({ name: id });
const res = await getESAStationDetail({ name: id })
// 1. 初始化清空数据
stationName.value = "";
stationCountry.value = "";
stationLongitude.value = "";
stationLatitude.value = "";
stationAltitude.value = "";
stationDiameter.value = "";
stationAzimuthSpeed.value = "";
stationElevationSpeed.value = "";
stationBand.value = "";
stationTMTC.value = "";
stationFrequencyAndTiming.value = "";
stationWeather.value = "";
stationUplinkSPolarization.value = "";
stationUplinkSEirp.value = "";
stationUplinkXPolarization.value = "";
stationUplinkXEirp.value = "";
stationUplinkKaPolarization.value = "";
stationUplinkKaEirp.value = "";
stationDownlinkSPolarization.value = "";
stationDownlinkSGt.value = "";
stationDownlinkXPolarization.value = "";
stationDownlinkXGt.value = "";
stationDownlinkKaPolarization.value = "";
stationDownlinkKaGt.value = "";
stationTemperature.value = "";
stationPressure.value = "";
stationHumidity.value = "";
stationType.value = "";
stationDescription.value = "";
stationName.value = ''
stationCountry.value = ''
stationLongitude.value = ''
stationLatitude.value = ''
stationAltitude.value = ''
stationDiameter.value = ''
stationAzimuthSpeed.value = ''
stationElevationSpeed.value = ''
stationBand.value = ''
stationTMTC.value = ''
stationFrequencyAndTiming.value = ''
stationWeather.value = ''
stationUplinkSPolarization.value = ''
stationUplinkSEirp.value = ''
stationUplinkXPolarization.value = ''
stationUplinkXEirp.value = ''
stationUplinkKaPolarization.value = ''
stationUplinkKaEirp.value = ''
stationDownlinkSPolarization.value = ''
stationDownlinkSGt.value = ''
stationDownlinkXPolarization.value = ''
stationDownlinkXGt.value = ''
stationDownlinkKaPolarization.value = ''
stationDownlinkKaGt.value = ''
stationTemperature.value = ''
stationPressure.value = ''
stationHumidity.value = ''
stationType.value = ''
stationDescription.value = ''
// 2.判断 data 是否存在且非空
if (!res?.data?.data || res.data.data.length === 0) {
ElMessage.warning("未查询到该站点的详细信息");
return;
ElMessage.warning('未查询到该站点的详细信息')
return
}
// 3. 安全赋值
const stationData = res.data.data[0];
stationName.value = stationData.name || "";
stationCountry.value = stationData.country || "";
stationLongitude.value = stationData.longitude || "";
stationLatitude.value = stationData.latitude || "";
stationAltitude.value = stationData.altitude || "";
stationDiameter.value = stationData.diameter || "";
stationAzimuthSpeed.value = stationData.antennaSpeedAzimuth || "";
stationElevationSpeed.value = stationData.antennaSpeedElevation || "";
stationBand.value = stationData.band || "";
stationTMTC.value = stationData.tmtcStandards || "";
stationFrequencyAndTiming.value = stationData.frequencyAndTiming || "";
stationWeather.value = stationData.weather === null ? "--" : stationData.weather || "--";
const stationData = res.data.data[0]
stationName.value = stationData.name || ''
stationCountry.value = stationData.country || ''
stationLongitude.value = stationData.longitude || ''
stationLatitude.value = stationData.latitude || ''
stationAltitude.value = stationData.altitude || ''
stationDiameter.value = stationData.diameter || ''
stationAzimuthSpeed.value = stationData.antennaSpeedAzimuth || ''
stationElevationSpeed.value = stationData.antennaSpeedElevation || ''
stationBand.value = stationData.band || ''
stationTMTC.value = stationData.tmtcStandards || ''
stationFrequencyAndTiming.value = stationData.frequencyAndTiming || ''
stationWeather.value = stationData.weather === null ? '--' : stationData.weather || '--'
stationUplinkSPolarization.value =
stationData.uplinkSBandPolarization === null ? "--" : stationData.uplinkSBandPolarization || "--";
stationUplinkSEirp.value = stationData.uplinkSBandEirp === null ? "--" : stationData.uplinkSBandEirp || "--";
stationData.uplinkSBandPolarization === null ? '--' : stationData.uplinkSBandPolarization || '--'
stationUplinkSEirp.value = stationData.uplinkSBandEirp === null ? '--' : stationData.uplinkSBandEirp || '--'
stationUplinkXPolarization.value =
stationData.uplinkXBandPolarization === null ? "--" : stationData.uplinkXBandPolarization || "--";
stationUplinkXEirp.value = stationData.uplinkXBandEirp === null ? "--" : stationData.uplinkXBandEirp || "--";
stationData.uplinkXBandPolarization === null ? '--' : stationData.uplinkXBandPolarization || '--'
stationUplinkXEirp.value = stationData.uplinkXBandEirp === null ? '--' : stationData.uplinkXBandEirp || '--'
stationUplinkKaPolarization.value =
stationData.uplinkKaBandPolarization === null ? "--" : stationData.uplinkKaBandPolarization || "--";
stationUplinkKaEirp.value = stationData.uplinkKaBandEirp === null ? "--" : stationData.uplinkKaBandEirp || "--";
stationData.uplinkKaBandPolarization === null ? '--' : stationData.uplinkKaBandPolarization || '--'
stationUplinkKaEirp.value = stationData.uplinkKaBandEirp === null ? '--' : stationData.uplinkKaBandEirp || '--'
stationDownlinkSPolarization.value =
stationData.downlinkSBandPolarization === null ? "--" : stationData.downlinkSBandPolarization || "--";
stationDownlinkSGt.value = stationData.downlinkSBandGT === null ? "--" : stationData.downlinkSBandGT || "--";
stationData.downlinkSBandPolarization === null ? '--' : stationData.downlinkSBandPolarization || '--'
stationDownlinkSGt.value = stationData.downlinkSBandGT === null ? '--' : stationData.downlinkSBandGT || '--'
stationDownlinkXPolarization.value =
stationData.downlinkXBandPolarization === null ? "--" : stationData.downlinkXBandPolarization || "--";
stationDownlinkXGt.value = stationData.downlinkXBandGT === null ? "--" : stationData.downlinkXBandGT || "--";
stationData.downlinkXBandPolarization === null ? '--' : stationData.downlinkXBandPolarization || '--'
stationDownlinkXGt.value = stationData.downlinkXBandGT === null ? '--' : stationData.downlinkXBandGT || '--'
stationDownlinkKaPolarization.value =
stationData.downlinkKaBandPolarization === null ? "--" : stationData.downlinkKaBandPolarization || "--";
stationDownlinkKaGt.value = stationData.downlinkKaBandGT === null ? "--" : stationData.downlinkKaBandGT || "--";
stationTemperature.value = stationData.temperature || "";
stationPressure.value = stationData.airPressure || "";
stationHumidity.value = stationData.humidity || "";
stationType.value = stationData.type || "";
stationData.downlinkKaBandPolarization === null ? '--' : stationData.downlinkKaBandPolarization || '--'
stationDownlinkKaGt.value = stationData.downlinkKaBandGT === null ? '--' : stationData.downlinkKaBandGT || '--'
stationTemperature.value = stationData.temperature || ''
stationPressure.value = stationData.airPressure || ''
stationHumidity.value = stationData.humidity || ''
stationType.value = stationData.type || ''
// 处理描述信息(避免 description 为 undefined 时报错)
if (Array.isArray(stationData.description)) {
stationDescription.value = stationData.description.join("");
stationDescription.value = stationData.description.join('')
} else {
stationDescription.value = stationData.description || "--";
stationDescription.value = stationData.description || '--'
}
stationVisibleValue.value = true;
stationVisibleValue.value = true
} catch (error) {
ElMessage.error("查询站点详情失败,请稍后重试");
console.error("站点详情查询错误:", error);
ElMessage.error('查询站点详情失败,请稍后重试')
console.error('站点详情查询错误:', error)
}
};
}
const tableData = ref([]);
const tableData = ref([])
const pageObj = ref({
total: 0,
pageSize: 10,
pageNo: 1,
});
pageNo: 1
})
const formatTimestamp = (timestamp: any) => {
if (!timestamp || typeof timestamp !== "number" || timestamp <= 0) {
return "--";
if (!timestamp || typeof timestamp !== 'number' || timestamp <= 0) {
return '--'
}
const msTimestamp = String(timestamp).length === 10 ? timestamp * 1000 : timestamp;
const date = new Date(msTimestamp);
const msTimestamp = String(timestamp).length === 10 ? timestamp * 1000 : timestamp
const date = new Date(msTimestamp)
if (isNaN(date.getTime())) {
return "--";
return '--'
}
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hour = String(date.getHours()).padStart(2, "0");
const minute = String(date.getMinutes()).padStart(2, "0");
const second = String(date.getSeconds()).padStart(2, "0");
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
};
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
const hour = String(date.getHours()).padStart(2, '0')
const minute = String(date.getMinutes()).padStart(2, '0')
const second = String(date.getSeconds()).padStart(2, '0')
return `${year}-${month}-${day} ${hour}:${minute}:${second}`
}
// 查看esa任务详情的方法
const handleMissionDetails = async (id: any) => {
const res = await getESAMissionDetail({ name: id });
const res = await getESAMissionDetail({ name: id })
// 防止残留数据
targetDescription.value = "";
targetDescription.value = ''
// 字段赋值
targetName.value = res.data.data[0].name;
targetMissionType.value = res.data.data[0].type;
targetOrbit.value = res.data.data[0].orbitsAround;
targetDimension.value = res.data.data[0].dimensions;
targetLaunchMass.value = res.data.data[0].launchMass;
targetDryMass.value = res.data.data[0].dryMass;
targetPerigee.value = res.data.data[0].perigee;
targetApogee.value = res.data.data[0].apogee;
targetPower.value = res.data.data[0].power;
targetInclination.value = res.data.data[0].inclination;
targetLaunchDate.value = formatTimestamp(res.data.data[0].launchDate);
targetLaunchLocation.value = res.data.data[0].launchSite;
targetPeriod.value = res.data.data[0].period;
targetInstruments.value = res.data.data[0].instruments;
targetServiceDate.value = formatTimestamp(res.data.data[0].enteredService);
targetIsCoreMission.value = res.data.data[0].coreMission;
targetSolarWindSpeed.value = res.data.data[0].solarWindSpeed;
targetSolarFluxDensity.value = res.data.data[0].solarFluxDensity;
targetName.value = res.data.data[0].name
targetMissionType.value = res.data.data[0].type
targetOrbit.value = res.data.data[0].orbitsAround
targetDimension.value = res.data.data[0].dimensions
targetLaunchMass.value = res.data.data[0].launchMass
targetDryMass.value = res.data.data[0].dryMass
targetPerigee.value = res.data.data[0].perigee
targetApogee.value = res.data.data[0].apogee
targetPower.value = res.data.data[0].power
targetInclination.value = res.data.data[0].inclination
targetLaunchDate.value = formatTimestamp(res.data.data[0].launchDate)
targetLaunchLocation.value = res.data.data[0].launchSite
targetPeriod.value = res.data.data[0].period
targetInstruments.value = res.data.data[0].instruments
targetServiceDate.value = formatTimestamp(res.data.data[0].enteredService)
targetIsCoreMission.value = res.data.data[0].coreMission
targetSolarWindSpeed.value = res.data.data[0].solarWindSpeed
targetSolarFluxDensity.value = res.data.data[0].solarFluxDensity
for (let i = 0; i < res.data.data[0].description.length; i++) {
targetDescription.value += res.data.data[0].description[i];
targetDescription.value += res.data.data[0].description[i]
}
detailVisibleValue.value = true;
};
detailVisibleValue.value = true
}
//表格loading标记
const tableLoading = ref(false);
const tableLoading = ref(false)
//重置搜索条件
const resetForm = () => {
searchStation.value = "";
searchTargetName.value = "";
searchTimeValue.value = "";
getData();
};
searchStation.value = ''
searchTargetName.value = ''
searchTimeValue.value = ''
getData()
}
// 获取esa数据列表的方法
const getData = async () => {
tableLoading.value = true;
tableLoading.value = true
const res = await getESAList({
spacecraft: searchTargetName.value,
station: searchStation.value,
times: searchTimeValue.value,
page: pageObj.value.pageNo,
size: pageObj.value.pageSize,
});
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
tableLoading.value = false;
};
size: pageObj.value.pageSize
})
pageObj.value.total = res.data.total
tableData.value = res.data.list
tableLoading.value = false
}
const handleClose = () => {
detailVisibleValue.value = false;
};
detailVisibleValue.value = false
}
onMounted(() => {
getData();
});
getData()
})
</script>
<style scoped lang="scss">
......@@ -668,7 +668,7 @@ onMounted(() => {
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-image: url('@/assets/picture/box3.png');
background-size: 100% 100%;
background-repeat: no-repeat;
}
......
......@@ -9,21 +9,21 @@
<div class="wordStyle">
<span>总数据量(条):</span>
<span class="total-num" v-if="totalDataNumber !== null">{{
formatExactLargeNum(totalDataNumber) ?? "--"
formatExactLargeNum(totalDataNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>采集的页面数量(个):</span>
<span class="total-num" v-if="totalPageNumber !== null">
{{ formatExactLargeNum(totalPageNumber) ?? "--" }}</span
{{ formatExactLargeNum(totalPageNumber) ?? '--' }}</span
>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>采集的目标数量(个):</span>
<span class="total-num" v-if="totalTargetNumber !== null">
{{ formatExactLargeNum(totalTargetNumber) ?? "--" }}</span
{{ formatExactLargeNum(totalTargetNumber) ?? '--' }}</span
>
<span class="loading" v-else></span>
</div>
......@@ -36,17 +36,12 @@
<div class="items">
<div class="wordStyle">
<span>任务执行成功统计(个):</span>
<span class="total-num" v-if="successTask !== null">{{ formatExactLargeNum(successTask) ?? "--" }}</span>
<span class="total-num" v-if="successTask !== null">{{ formatExactLargeNum(successTask) ?? '--' }}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务执行失败统计(个):</span>
<span class="total-num" v-if="failTask !== null">{{ formatExactLargeNum(failTask) ?? "--" }}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务异常数统计(个):</span>
<span class="total-num" v-if="unusualTask !== null">{{ formatExactLargeNum(unusualTask) ?? "--" }}</span>
<span class="total-num" v-if="failTask !== null">{{ formatExactLargeNum(failTask) ?? '--' }}</span>
<span class="loading" v-else></span>
</div>
</div>
......@@ -58,17 +53,16 @@
<div class="items">
<div class="wordStyle">
<span>平均成功率:</span>
<span class="total-num" v-if="speed !== null"> {{ speed ?? "--" }}</span>
<span class="total-num" v-if="speed !== null">
{{ `${Number(Math.floor(speed * 100) / 100).toFixed(2)}%` }}</span
>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>平均错误率: </span>
<span class="total-num" v-if="errorRate !== null">{{ errorRate ?? "--" }}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>平均异常率:</span>
<span class="total-num" v-if="unusualRate !== null">{{ unusualRate ?? "--" }}</span>
<span class="total-num" v-if="errorRate !== null">{{
`${Number(Math.ceil(errorRate * 100) / 100).toFixed(2)}%`
}}</span>
<span class="loading" v-else></span>
</div>
</div>
......@@ -77,73 +71,73 @@
</template>
<script lang="ts" setup>
import { useRouter } from "vue-router";
import { getStatsDataList, getSpiderTaskList, getPerformanceList } from "@/api/staticData";
import { onMounted, ref } from "vue";
import formatExactLargeNum from "@/utils/formatExactLargeNum";
import { useSlideStateStore } from "@/store/slideState";
import { storeToRefs } from "pinia";
const slideStateStore = useSlideStateStore();
const { slideState } = storeToRefs(slideStateStore);
const router = useRouter();
const totalDataNumber = ref(null);
const totalPageNumber = ref(null);
const totalTargetNumber = ref(null);
const successTask = ref(null);
const failTask = ref(null);
const unusualTask = ref(null);
const speed = ref(null);
const errorRate = ref(null);
const unusualRate = ref(null);
import { useRouter } from 'vue-router'
import { getStatsDataList, getSpiderTaskList, getPerformanceList } from '@/api/staticData'
import { onMounted, ref } from 'vue'
import formatExactLargeNum from '@/utils/formatExactLargeNum'
import { useSlideStateStore } from '@/store/slideState'
import { storeToRefs } from 'pinia'
const slideStateStore = useSlideStateStore()
const { slideState } = storeToRefs(slideStateStore)
const router = useRouter()
const totalDataNumber = ref(null)
const totalPageNumber = ref(null)
const totalTargetNumber = ref(null)
const successTask = ref(null)
const failTask = ref(null)
const unusualTask = ref(null)
const speed = ref(null)
const errorRate = ref(null)
const unusualRate = ref(null)
const goToAllDataPage = () => {
router.push({
path: "/osDataDisplay/list",
path: '/osDataDisplay/list',
query: {
jump: "yes",
mode: "DSN数据",
},
});
};
jump: 'yes',
mode: 'DSN数据'
}
})
}
const goToTaskRecordPage = () => {
router.push({
path: "/osTaskRecord/list",
path: '/osTaskRecord/list',
query: {
jump: "yes",
mode: "状态监控",
},
});
};
jump: 'yes',
mode: '状态监控'
}
})
}
// 获取数据统计数据的方法
const getData = async () => {
const staticData = await getStatsDataList({});
const spiderTask = await getSpiderTaskList({});
const performance = await getPerformanceList({});
totalDataNumber.value = staticData.data.totalData;
totalPageNumber.value = staticData.data.ituPage;
totalTargetNumber.value = staticData.data.spaceTrackItemCount;
successTask.value = spiderTask.data.successCount;
failTask.value = spiderTask.data.failCount;
unusualTask.value = spiderTask.data.exceptionCount;
speed.value = performance.data.success;
errorRate.value = performance.data.error;
unusualRate.value = performance.data.exception;
};
const staticData = await getStatsDataList({})
const spiderTask = await getSpiderTaskList({})
const performance = await getPerformanceList({})
totalDataNumber.value = staticData.data.totalData
totalPageNumber.value = staticData.data.ituPage
totalTargetNumber.value = staticData.data.spaceTrackItemCount
successTask.value = spiderTask.data.successCount
failTask.value = spiderTask.data.failCount
unusualTask.value = spiderTask.data.exceptionCount
speed.value = performance.data.success
errorRate.value = performance.data.error
unusualRate.value = performance.data.exception
}
//sidebarStatus
onMounted(() => {
getData();
});
getData()
})
</script>
<style lang="scss" scoped>
.dataCard {
background-image: url("@/assets/picture/box2.png");
background-image: url('@/assets/picture/box2.png');
background-size: 100% 100%;
background-repeat: no-repeat;
// background: #c6ebfc;
......@@ -221,22 +215,37 @@ onMounted(() => {
aspect-ratio: 2;
margin-right: 30px;
--_g: no-repeat radial-gradient(circle closest-side, #4edaff 90%, #0000);
background: var(--_g) 0% 50%, var(--_g) 50% 50%, var(--_g) 100% 50%;
background:
var(--_g) 0% 50%,
var(--_g) 50% 50%,
var(--_g) 100% 50%;
background-size: calc(100% / 3) 50%;
animation: l3 1s infinite linear;
}
@keyframes l3 {
20% {
background-position: 0% 0%, 50% 50%, 100% 50%;
background-position:
0% 0%,
50% 50%,
100% 50%;
}
40% {
background-position: 0% 100%, 50% 0%, 100% 50%;
background-position:
0% 100%,
50% 0%,
100% 50%;
}
60% {
background-position: 0% 50%, 50% 100%, 100% 0%;
background-position:
0% 50%,
50% 100%,
100% 0%;
}
80% {
background-position: 0% 50%, 50% 50%, 100% 100%;
background-position:
0% 50%,
50% 50%,
100% 100%;
}
}
</style>
......@@ -9,27 +9,27 @@
<div class="wordStyle">
<span>DSN爬虫任务数(个):</span>
<span class="total-num" v-if="dsnTotalTaskNumber !== null">{{
formatExactLargeNum(dsnTotalTaskNumber) ?? "--"
formatExactLargeNum(dsnTotalTaskNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务执行成功统计(个):</span>
<span class="total-num" v-if="dsnTaskSuccessNumber !== null">{{
formatExactLargeNum(dsnTaskSuccessNumber) ?? "--"
formatExactLargeNum(dsnTaskSuccessNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务执行失败统计(个):</span>
<span class="total-num" v-if="dsnTaskFailNumber !== null">{{
formatExactLargeNum(dsnTaskFailNumber) ?? "--"
formatExactLargeNum(dsnTaskFailNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>错误率: </span>
<span class="total-num" v-if="dsnErrorRate !== null">{{ dsnErrorRate ?? "--" }}</span>
<span class="total-num" v-if="dsnErrorRate !== null">{{ Number(dsnErrorRate).toFixed(2) + '%' }}</span>
<span class="loading" v-else></span>
</div>
</div>
......@@ -42,27 +42,27 @@
<div class="wordStyle">
<span>ITU爬虫任务数(个):</span>
<span class="total-num" v-if="ituTotalTaskNumber !== null">{{
formatExactLargeNum(ituTotalTaskNumber) ?? "--"
formatExactLargeNum(ituTotalTaskNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>ITU爬取成功数据统计(个):</span>
<span>任务执行成功统计(个):</span>
<span class="total-num" v-if="ituTaskSuccessNumber !== null">{{
formatExactLargeNum(ituTaskSuccessNumber) ?? "--"
formatExactLargeNum(ituTaskSuccessNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>ITU爬取失败数据统计(个):</span>
<span>任务执行失败统计(个):</span>
<span class="total-num" v-if="ituTaskFailNumber !== null">{{
formatExactLargeNum(ituTaskFailNumber) ?? "--"
formatExactLargeNum(ituTaskFailNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>错误率:</span>
<span class="total-num" v-if="ituErrorRate !== null">{{ ituErrorRate ?? "--" }}</span>
<span class="total-num" v-if="ituErrorRate !== null">{{ Number(ituErrorRate).toFixed(2) + '%' }}</span>
<span class="loading" v-else></span>
</div>
</div>
......@@ -75,27 +75,27 @@
<div class="wordStyle">
<span>ST爬虫任务数(个):</span>
<span class="total-num" v-if="stTotalTaskNumber !== null">{{
formatExactLargeNum(stTotalTaskNumber) ?? "--"
formatExactLargeNum(stTotalTaskNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务执行成功统计(个):</span>
<span class="total-num" v-if="stTaskSuccessNumber !== null">{{
formatExactLargeNum(stTaskSuccessNumber) ?? "--"
formatExactLargeNum(stTaskSuccessNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务执行失败统计(个):</span>
<span class="total-num" v-if="stTaskFailNumber !== null">{{
formatExactLargeNum(stTaskFailNumber) ?? "--"
formatExactLargeNum(stTaskFailNumber) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>错误率:</span>
<span class="total-num" v-if="stErrorRate !== null">{{ stErrorRate ?? "--" }}</span>
<span class="total-num" v-if="stErrorRate !== null">{{ Number(stErrorRate).toFixed(2) + '%' }}</span>
<span class="loading" v-else></span>
</div>
</div>
......@@ -107,24 +107,24 @@
<div class="items">
<div class="wordStyle">
<span>ESA爬虫任务数(个):</span>
<span class="total-num" v-if="esaTotalCount !== null">{{ formatExactLargeNum(esaTotalCount) ?? "--" }}</span>
<span class="total-num" v-if="esaTotalCount !== null">{{ formatExactLargeNum(esaTotalCount) ?? '--' }}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务执行成功统计(个):</span>
<span class="total-num" v-if="esaSuccessCount !== null">{{
formatExactLargeNum(esaSuccessCount) ?? "--"
formatExactLargeNum(esaSuccessCount) ?? '--'
}}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>任务执行失败统计(个):</span>
<span class="total-num" v-if="esaFailCount !== null">{{ formatExactLargeNum(esaFailCount) ?? "--" }}</span>
<span class="total-num" v-if="esaFailCount !== null">{{ formatExactLargeNum(esaFailCount) ?? '--' }}</span>
<span class="loading" v-else></span>
</div>
<div class="wordStyle">
<span>错误率:</span>
<span class="total-num" v-if="esaErrorRate !== null">{{ esaErrorRate ?? "--" }}</span>
<span class="total-num" v-if="esaErrorRate !== null">{{ Number(esaErrorRate).toFixed(2) + '%' }}</span>
<span class="loading" v-else></span>
</div>
</div>
......@@ -133,109 +133,116 @@
</template>
<script lang="ts" setup>
import { useRouter } from "vue-router";
import { getAllSpiderTaskStatistics } from "@/api/staticData";
import { onMounted, ref } from "vue";
import { getAllTaskStatistics, getSpiderTaskList } from "@/api/spiderTask";
import { useSlideStateStore } from "@/store/slideState";
import { storeToRefs } from "pinia";
import formatExactLargeNum from "@/utils/formatExactLargeNum";
import { useRouter } from 'vue-router'
import { getAllSpiderTaskStatistics } from '@/api/staticData'
import { onMounted, ref } from 'vue'
import { getAllTaskStatistics, getSpiderTaskList } from '@/api/spiderTask'
import { useSlideStateStore } from '@/store/slideState'
import { storeToRefs } from 'pinia'
import formatExactLargeNum from '@/utils/formatExactLargeNum'
const slideStateStore = useSlideStateStore();
const { slideState } = storeToRefs(slideStateStore);
const slideStateStore = useSlideStateStore()
const { slideState } = storeToRefs(slideStateStore)
const router = useRouter();
const router = useRouter()
const dsnTotalTaskNumber = ref(null);
const dsnTaskSuccessNumber = ref(null);
const dsnTaskFailNumber = ref(null);
const dsnErrorRate = ref(null);
const ituTotalTaskNumber = ref(null);
const ituTaskSuccessNumber = ref(null);
const ituTaskFailNumber = ref(null);
const ituErrorRate = ref(null);
const stTotalTaskNumber = ref(null);
const stTaskSuccessNumber = ref(null);
const stTaskFailNumber = ref(null);
const stErrorRate = ref(null);
const esaTotalCount = ref(null);
const esaSuccessCount = ref(null);
const esaErrorRate = ref(null);
const esaFailCount = ref(null);
const dsnTotalTaskNumber = ref(null)
const dsnTaskSuccessNumber = ref(null)
const dsnTaskFailNumber = ref(null)
const dsnErrorRate = ref(null)
const ituTotalTaskNumber = ref(null)
const ituTaskSuccessNumber = ref(null)
const ituTaskFailNumber = ref(null)
const ituErrorRate = ref(null)
const stTotalTaskNumber = ref(null)
const stTaskSuccessNumber = ref(null)
const stTaskFailNumber = ref(null)
const stErrorRate = ref(null)
const esaTotalCount = ref(null)
const esaSuccessCount = ref(null)
const esaErrorRate = ref(null)
const esaFailCount = ref(null)
const goToDSNTaskRecordPage = () => {
router.push({
path: "/osTaskInformation/list",
path: '/osTaskInformation/list',
query: {
spiderType: "dsn_now",
jump: "yes",
page: "statusMonitor",
},
});
};
spiderType: 'dsn_now',
jump: 'yes',
page: 'statusMonitor'
}
})
}
const goToITUTaskRecordPage = () => {
router.push({
path: "/osTaskInformation/list",
path: '/osTaskInformation/list',
query: {
spiderType: "itu_space_explorer",
jump: "yes",
page: "statusMonitor",
},
});
};
spiderType: 'itu_space_explorer',
jump: 'yes',
page: 'statusMonitor'
}
})
}
const goToSTTaskRecordPage = () => {
router.push({
path: "/osTaskInformation/list",
path: '/osTaskInformation/list',
query: {
spiderType: "space_track",
jump: "yes",
page: "statusMonitor",
},
});
};
spiderType: 'space_track',
jump: 'yes',
page: 'statusMonitor'
}
})
}
const goToESATaskRecordPage = () => {
router.push({
path: "/osTaskInformation/list",
path: '/osTaskInformation/list',
query: {
spiderType: "es_track_transmission",
jump: "yes",
page: "statusMonitor",
},
});
};
spiderType: 'es_track_transmission',
jump: 'yes',
page: 'statusMonitor'
}
})
}
// 获取任务统计数据的方法
const getData = async () => {
const res = await getAllSpiderTaskStatistics({});
const stTask = await getSpiderTaskList({ spiders: "itu_space_explorer" });
const allTask = await getAllTaskStatistics();
const res = await getAllSpiderTaskStatistics({})
const tasks = [
getSpiderTaskList({ spiders: 'itu_space_explorer' }),
getSpiderTaskList({ spiders: 'dsn_now' }),
getSpiderTaskList({ spiders: 'es_track_transmission' }),
getSpiderTaskList({ spiders: 'space_track' })
]
dsnTotalTaskNumber.value = allTask.data.dsn_now.totalCount;
dsnTaskSuccessNumber.value = res.data.dsn_now.successCount;
dsnTaskFailNumber.value = res.data.dsn_now.failCount;
dsnErrorRate.value = res.data.dsn_now.errorRate;
ituTotalTaskNumber.value = allTask.data.itu_space_explorer?.totalCount;
ituTaskSuccessNumber.value = res.data.itu_space_explorer?.successCount;
ituTaskFailNumber.value = res.data.itu_space_explorer?.failCount;
ituErrorRate.value = res.data.itu_space_explorer?.errorRate;
stTotalTaskNumber.value = allTask.data.space_track?.totalCount;
stTaskSuccessNumber.value = res.data.space_track?.successCount;
stTaskFailNumber.value = res.data.space_track?.failCount;
stErrorRate.value = res.data.space_track?.errorRate;
esaTotalCount.value = res.data.es_track_transmission?.totalCount;
esaSuccessCount.value = res.data.es_track_transmission?.successCount;
esaFailCount.value = res.data.es_track_transmission?.failCount;
esaErrorRate.value = res.data.es_track_transmission?.errorRate;
};
const [ituTask, dsnTask, esaTask, stTask] = await Promise.all(tasks)
const allTask = await getAllTaskStatistics()
dsnTotalTaskNumber.value = dsnTask.data.length
dsnTaskSuccessNumber.value = res.data.dsn_now.successCount
dsnTaskFailNumber.value = res.data.dsn_now.failCount
dsnErrorRate.value = res.data.dsn_now.errorRate
ituTotalTaskNumber.value = ituTask.data.length
ituTaskSuccessNumber.value = res.data.itu_space_explorer?.successCount
ituTaskFailNumber.value = res.data.itu_space_explorer?.failCount
ituErrorRate.value = res.data.itu_space_explorer?.errorRate
stTotalTaskNumber.value = stTask.data.length
stTaskSuccessNumber.value = res.data.space_track?.successCount
stTaskFailNumber.value = res.data.space_track?.failCount
stErrorRate.value = res.data.space_track?.errorRate
esaTotalCount.value = esaTask.data.length
esaSuccessCount.value = res.data.es_track_transmission?.successCount
esaFailCount.value = res.data.es_track_transmission?.failCount
esaErrorRate.value = res.data.es_track_transmission?.errorRate
}
onMounted(() => {
getData();
});
getData()
})
</script>
<style lang="scss" scoped>
.dataCard {
background-image: url("@/assets/picture/box2.png");
background-image: url('@/assets/picture/box2.png');
background-size: 100% 100%;
background-repeat: no-repeat;
width: 275px;
......@@ -298,22 +305,37 @@ onMounted(() => {
aspect-ratio: 2;
margin-right: 30px;
--_g: no-repeat radial-gradient(circle closest-side, #4edaff 90%, #0000);
background: var(--_g) 0% 50%, var(--_g) 50% 50%, var(--_g) 100% 50%;
background:
var(--_g) 0% 50%,
var(--_g) 50% 50%,
var(--_g) 100% 50%;
background-size: calc(100% / 3) 50%;
animation: l3 1s infinite linear;
}
@keyframes l3 {
20% {
background-position: 0% 0%, 50% 50%, 100% 50%;
background-position:
0% 0%,
50% 50%,
100% 50%;
}
40% {
background-position: 0% 100%, 50% 0%, 100% 50%;
background-position:
0% 100%,
50% 0%,
100% 50%;
}
60% {
background-position: 0% 50%, 50% 100%, 100% 0%;
background-position:
0% 50%,
50% 100%,
100% 0%;
}
80% {
background-position: 0% 50%, 50% 50%, 100% 100%;
background-position:
0% 50%,
50% 50%,
100% 100%;
}
}
......
......@@ -50,27 +50,32 @@
:cell-style="{ textAlign: 'center' }"
>
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column label="任务名称" show-overflow-tooltip>
<template #default="scope">
{{ JSON.parse(scope.row.options).jobName }}
</template>
</el-table-column>
<el-table-column property="spider" label="所属爬虫" show-overflow-tooltip />
<el-table-column property="schedule_mode" label="调度模式" show-overflow-tooltip />
<el-table-column property="run_status" label="调度状态" show-overflow-tooltip>
<template #default="scope">
{{ "已完成" }}
{{ scope.row.status ? '已完成' : '未完成' }}
</template>
</el-table-column>
<el-table-column label="错误消息" show-overflow-tooltip>
<!-- 当错误消息为空时默认值为'-' -->
<template #default="scope">
{{ scope.row.message || "-" }}
{{ scope.row.message || '-' }}
</template>
</el-table-column>
<el-table-column property="run_status" label="运行状态" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.run_status === "unknown" ? "已结束" : scope.row.run_status }}
{{ scope.row.run_status === 'unknown' ? '已结束' : scope.row.run_status }}
</template>
</el-table-column>
<el-table-column label="运行耗时/ms">
<template #default="scope">
{{ scope.row.duration == 0 ? "-" : scope.row.duration }}
{{ scope.row.duration == 0 ? '-' : scope.row.duration }}
</template>
</el-table-column>
<el-table-column property="create_time" label="采集时间" width="200" show-overflow-tooltip />
......@@ -90,126 +95,123 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from "vue";
import Pagination from "@/components/pagination/index.vue";
import { useRoute } from "vue-router";
import { useRouter } from "vue-router";
import { getSpiderTaskRecord } from "@/api/spiderTask.ts";
import { ElMessage } from "element-plus";
import MenuTitle from "@/components/MenuTitle.vue";
import TableSearch from "@/components/TableSearch.vue";
import { ref, onMounted } from 'vue'
import Pagination from '@/components/pagination/index.vue'
import { useRoute } from 'vue-router'
import { useRouter } from 'vue-router'
import { getSpiderTaskRecord } from '@/api/spiderTask.ts'
import MenuTitle from '@/components/MenuTitle.vue'
import TableSearch from '@/components/TableSearch.vue'
//时间处理库
import dayjs from "dayjs";
import dayjs from 'dayjs'
// ElConfigProvider 组件
import { ElConfigProvider } from "element-plus";
import { ElConfigProvider } from 'element-plus'
// 引入中文包
import zhCn from "element-plus/es/locale/lang/zh-cn";
defineOptions({ name: "Pagination" });
import zhCn from 'element-plus/es/locale/lang/zh-cn'
defineOptions({ name: 'Pagination' })
// 更改分页文字
zhCn.el.pagination.total = "共 `{total} 条`";
zhCn.el.pagination.goto = "跳至";
zhCn.el.pagination.pagesize = "条/页";
zhCn.el.pagination.pageClassifier = "页";
const route = useRoute();
const router = useRouter();
zhCn.el.pagination.total = '共 `{total} 条`'
zhCn.el.pagination.goto = '跳至'
zhCn.el.pagination.pagesize = '条/页'
zhCn.el.pagination.pageClassifier = '页'
const route = useRoute()
const router = useRouter()
//初始数据为近七天
const timeValue = ref<string[]>([]);
const tableData = ref([]);
const timeValue = ref<string[]>([])
const tableData = ref([])
const pageObj = ref({
total: 10,
pageSize: 10,
pageNo: 1,
pagerCount: 5,
});
pagerCount: 5
})
const goToStatus = () => {
if (route.query.mode === "状态监控") {
if (route.query.mode === '状态监控') {
router.push({
path: "/osStatus/list",
});
path: '/osStatus/list'
})
} else {
router.push({
path: "/osTaskInformation/list",
});
path: '/osTaskInformation/list'
})
}
};
}
const spideOptions = [
{
label: "dsn_now",
value: "dsn_now",
label: 'dsn_now',
value: 'dsn_now'
},
{
label: "itu_space_expolorer",
value: "itu_space_expolorer",
label: 'itu_space_expolorer',
value: 'itu_space_expolorer'
},
{
label: "space_track",
value: "space_track",
label: 'space_track',
value: 'space_track'
},
{
label: "es_track_transmission",
value: "es_track_transmission",
},
];
label: 'es_track_transmission',
value: 'es_track_transmission'
}
]
//表单loading标记
const tableLoading = ref(false);
const tableLoading = ref(false)
//重置查询
const resetQuery = () => {
timeValue.value = [];
spidername.value = "";
getData();
};
timeValue.value = []
spidername.value = ''
getData()
}
// 获取任务执行记录列表
const getData = async () => {
let resTime: any[] = [];
resTime.push(dayjs().subtract(7, "day").format("YYYY-MM-DD HH:mm:ss"));
resTime.push(dayjs().format("YYYY-MM-DD HH:mm:ss"));
let resTime: any[] = []
resTime.push(dayjs().subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss'))
resTime.push(dayjs().format('YYYY-MM-DD HH:mm:ss'))
tableLoading.value = true;
tableLoading.value = true
const res = await getSpiderTaskRecord({
page: pageObj.value.pageNo,
size: pageObj.value.pageSize,
status: "total",
times: resTime,
});
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
tableLoading.value = false;
};
status: 'total',
times: resTime
})
pageObj.value.total = res.data.total
tableData.value = res.data.list
tableLoading.value = false
}
const spidername = ref("");
const spidername = ref('')
//查询数据的方法
const searchData = async () => {
let resTime: any[] = [];
let resTime: any[] = []
if (timeValue.value.length !== 0) {
const startTime = timeValue.value[0];
const endTime = timeValue.value[1];
resTime.push(dayjs(startTime).format("YYYY-MM-DD HH:mm:ss"));
resTime.push(dayjs(endTime).format("YYYY-MM-DD HH:mm:ss"));
const startTime = timeValue.value[0]
const endTime = timeValue.value[1]
resTime.push(dayjs(startTime).format('YYYY-MM-DD HH:mm:ss'))
resTime.push(dayjs(endTime).format('YYYY-MM-DD HH:mm:ss'))
}
tableLoading.value = true;
tableLoading.value = true
const res = await getSpiderTaskRecord({
page: pageObj.value.pageNo,
size: pageObj.value.pageSize,
status: "total",
status: 'total',
spider: spidername.value,
times: resTime,
});
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
console.log(tableData.value);
tableLoading.value = false;
};
times: resTime
})
pageObj.value.total = res.data.total
tableData.value = res.data.list
tableLoading.value = false
}
onMounted(() => {
getData();
});
getData()
})
</script>
<style scoped>
......@@ -218,7 +220,7 @@ onMounted(() => {
}
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-image: url('@/assets/picture/box3.png');
background-size: 100% 100%;
background-repeat: no-repeat;
}
......@@ -244,7 +246,7 @@ onMounted(() => {
}
.backStyle {
background-image: url("@/assets/picture/back.png");
background-image: url('@/assets/picture/back.png');
background-size: 100% 100%;
background-repeat: no-repeat;
height: 5vh;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment