Commit 1c213f76 by liucan

pref:调整页面样式布局

parent 85fdc758
......@@ -96,4 +96,23 @@
.el-date-editor .el-range-input{
color: #ffffff;
}
.el-loading-spinner .path {
stroke: white !important;
/* 替换为你需要的颜色(如 #304156 或 rgb(48, 65, 86)) */
}
/* 卡片外层容器透明 */
.el-card {
background-color: transparent !important;
border: none;
/* 可选:去除边框 */
}
/* 卡片内容区域透明 */
.el-card__body {
background-color: transparent !important;
padding: 16px;
/* 保持默认内边距,可按需调整 */
}
\ No newline at end of file
const formatExactLargeNum = (num: number | string) => {
if (num === null || num === undefined) return num;
if (typeof num !== "number" && typeof num !== "string") return num;
const parsedNum = typeof num === "string" ? Number(num.replace(/,/g, "")) : num;
if (isNaN(parsedNum)) return num;
if (Math.abs(parsedNum) > 100000000) {
return parsedNum.toExponential(2);
} else {
return parsedNum.toLocaleString("en-US", {
useGrouping: true,
maximumFractionDigits: 0,
minimumFractionDigits: 0,
});
}
};
export default formatExactLargeNum;
\ No newline at end of file
<template>
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请选择" style="width: 220px" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">时间:</el-text>
</el-form-item>
<el-form-item>
<el-date-picker v-model="timeValue" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss" date-format="YYYY/MM/DD ddd" time-format="A hh:mm:ss" />
</el-form-item>
<el-form-item>
<el-text class="mx-1">站点名称:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 220px" />
</el-form-item>
<br></br>
<el-form-item>
<el-text class="mx-1">Norad Cat ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 220px" />
</el-form-item>
<el-form-item>
<el-text class="mx-1">SNS Notice ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 220px" />
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleExport">导出最近</el-button>
</el-space>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleExport">导出选中</el-button>
</el-space>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary">查询</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<div class="m-t-5" />
<div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '45px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" />
<el-table-column property="targetName" label="目标名称" show-overflow-tooltip />
<el-table-column property="stationPosition" label="站点位置" show-overflow-tooltip />
<el-table-column property="stationName" label="站点名称" show-overflow-tooltip />
<el-table-column property="NoradCatId" label="Norad Cat ID" show-overflow-tooltip />
<el-table-column property="SNSNoticeId" label="SNS Notice ID" show-overflow-tooltip />
<el-table-column property="dataTime" label="数据时间" show-overflow-tooltip />
<el-table-column property="recordTime" label="记录时间" show-overflow-tooltip />
<el-table-column property="tle" label="TLE" show-overflow-tooltip />
<el-table-column property="isSync" label="是否为同步" show-overflow-tooltip />
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" />
</div>
</div>
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">
详情
</div>
</template>
<el-form label-width="155px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="SNS Notice ID:" label-position="left">
<el-input v-model="snsId" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主管部门:" label-position="left">
<el-input v-model="department" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划/非计划类型:" label-position="left">
<el-select placeholder=" ">
<el-option label="计划" value="planned" />
<el-option label="非计划" value="unplanned" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否为同步:" label-position="left">
<el-input v-model="syncType" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="同步位置:" label-position="left">
<el-input v-model="syncPosition" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input v-model="perigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input v-model="apogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低海拔:" label-position="left">
<el-input v-model="lowestAltitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="参考主体:" label-position="left">
<el-input v-model="referenceSubject" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低频率:" label-position="left">
<el-input v-model="lowestFrequency" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最高频率:" label-position="left">
<el-input v-model="highestFrequency" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="状态:" label-position="left">
<el-input v-model="status" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有效期:" label-position="left">
<el-input v-model="validityPeriod" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最早使用日期:" label-position="left">
<el-input v-model="earliestUsageDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否确认使用:" label-position="left">
<el-input v-model="isUsed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否暂停使用:" label-position="left">
<el-input v-model="isPauseUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="记录时间:" label-position="left">
<el-input v-model="recordTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否纳入国际频率总表:" label-position="left">
<el-input v-model="IsInTheInternationalFrequencyList" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最早监管日期:" label-position="left">
<el-input v-model="earliestRegulatoryDate" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否恢复使用:" label-position="left">
<el-input v-model="isRestoreUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有效期卫星网络旧名称:" label-position="left">
<el-input v-model="BFIFICdate" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="最新相关 BR IFIC 发布日期:" label-position="left">
<el-input v-model="roundTripTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="往返光时(s):" label-position="left">
<el-input v-model="distance" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="距离(km):" label-position="left">
<el-input v-model="targetAzimuth" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标方位:" label-position="left">
<el-input v-model="targetElevation" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标俯仰:" label-position="left">
<el-input v-model="upstreamSignalSource" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号来源:" label-position="left">
<el-input v-model="upstreamSignalSource" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行发射功率:" label-position="left">
<el-input v-model="upstreamLaunchPower" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号频段:" label-position="left">
<el-input v-model="upstreamFrequencyBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="风速(km/kr):" label-position="left">
<el-input v-model="windSpeed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号来源:" label-position="left">
<el-input v-model="downstreamSignalSource" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号频段:" label-position="left">
<el-input v-model="downstreamFrequencyBand" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行接收功率:" label-position="left">
<el-input v-model="downstreamReceptionPower" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型:" label-position="left">
<el-input v-model="type" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="INTLDES:" label-position="left">
<el-input v-model="intldes" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="失效时间:" label-position="left">
<el-input v-model="expirationTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="周期(min):" label-position="left">
<el-input v-model="period" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="INCL:" label-position="left">
<el-input v-model="incl" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="RCS:" label-position="left">
<el-input v-model="rcs" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="SITE:" label-position="left">
<el-input v-model="site" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="TLE:" label-position="left">
<el-input type="textarea" :rows="3" v-model="tle" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" @confirm="handleExportConfirm" />
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请选择" style="width: 220px" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">时间:</el-text>
</el-form-item>
<el-form-item>
<el-date-picker
v-model="timeValue"
type="datetimerange"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss"
date-format="YYYY/MM/DD ddd"
time-format="A hh:mm:ss"
/>
</el-form-item>
<el-form-item>
<el-text class="mx-1">站点名称:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 220px" />
</el-form-item>
<el-form-item>
<el-text class="mx-1">Norad Cat ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 220px" />
</el-form-item>
<el-form-item>
<el-text class="mx-1">SNS Notice ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 220px" />
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleExport">导出最近</el-button>
</el-space>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleExport">导出选中</el-button>
</el-space>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary">查询</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<div class="m-t-5" />
<div>
<el-table
:data="tableData"
style="width: 100%"
border
:row-style="{ height: '45px' }"
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
>
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" />
<el-table-column property="targetName" label="目标名称" show-overflow-tooltip />
<el-table-column property="stationPosition" label="站点位置" show-overflow-tooltip />
<el-table-column property="stationName" label="站点名称" show-overflow-tooltip />
<el-table-column property="NoradCatId" label="Norad Cat ID" show-overflow-tooltip />
<el-table-column property="SNSNoticeId" label="SNS Notice ID" show-overflow-tooltip />
<el-table-column property="dataTime" label="数据时间" show-overflow-tooltip />
<el-table-column property="recordTime" label="记录时间" show-overflow-tooltip />
<el-table-column property="tle" label="TLE" show-overflow-tooltip />
<el-table-column property="isSync" label="是否为同步" show-overflow-tooltip />
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)"> 详情 </el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getData"
/>
</div>
</div>
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">详情</div>
</template>
<el-form label-width="155px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="SNS Notice ID:" label-position="left">
<el-input v-model="snsId" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主管部门:" label-position="left">
<el-input v-model="department" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划/非计划类型:" label-position="left">
<el-select placeholder=" ">
<el-option label="计划" value="planned" />
<el-option label="非计划" value="unplanned" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否为同步:" label-position="left">
<el-input v-model="syncType" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="同步位置:" label-position="left">
<el-input v-model="syncPosition" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input v-model="perigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input v-model="apogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低海拔:" label-position="left">
<el-input v-model="lowestAltitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="参考主体:" label-position="left">
<el-input v-model="referenceSubject" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低频率:" label-position="left">
<el-input v-model="lowestFrequency" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最高频率:" label-position="left">
<el-input v-model="highestFrequency" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="状态:" label-position="left">
<el-input v-model="status" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有效期:" label-position="left">
<el-input v-model="validityPeriod" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最早使用日期:" label-position="left">
<el-input v-model="earliestUsageDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否确认使用:" label-position="left">
<el-input v-model="isUsed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否暂停使用:" label-position="left">
<el-input v-model="isPauseUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="记录时间:" label-position="left">
<el-input v-model="recordTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否纳入国际频率总表:" label-position="left">
<el-input v-model="IsInTheInternationalFrequencyList" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最早监管日期:" label-position="left">
<el-input v-model="earliestRegulatoryDate" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否恢复使用:" label-position="left">
<el-input v-model="isRestoreUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有效期卫星网络旧名称:" label-position="left">
<el-input v-model="BFIFICdate" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="最新相关 BR IFIC 发布日期:" label-position="left">
<el-input v-model="roundTripTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="往返光时(s):" label-position="left">
<el-input v-model="distance" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="距离(km):" label-position="left">
<el-input v-model="targetAzimuth" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标方位:" label-position="left">
<el-input v-model="targetElevation" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标俯仰:" label-position="left">
<el-input v-model="upstreamSignalSource" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号来源:" label-position="left">
<el-input v-model="upstreamSignalSource" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行发射功率:" label-position="left">
<el-input v-model="upstreamLaunchPower" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号频段:" label-position="left">
<el-input v-model="upstreamFrequencyBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="风速(km/kr):" label-position="left">
<el-input v-model="windSpeed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号来源:" label-position="left">
<el-input v-model="downstreamSignalSource" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号频段:" label-position="left">
<el-input v-model="downstreamFrequencyBand" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行接收功率:" label-position="left">
<el-input v-model="downstreamReceptionPower" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型:" label-position="left">
<el-input v-model="type" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="INTLDES:" label-position="left">
<el-input v-model="intldes" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="失效时间:" label-position="left">
<el-input v-model="expirationTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="周期(min):" label-position="left">
<el-input v-model="period" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="INCL:" label-position="left">
<el-input v-model="incl" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="RCS:" label-position="left">
<el-input v-model="rcs" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="SITE:" label-position="left">
<el-input v-model="site" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="TLE:" label-position="left">
<el-input type="textarea" :rows="3" v-model="tle" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" @confirm="handleExportConfirm" />
</template>
<script setup lang="ts">
import { ref } from 'vue'
import Pagination from '@/components/pagination/index.vue'
import exportDialog from '@/components/Export/index.vue'
const timeValue = ref('')
const detailVisibleValue = ref(false)
const showDeleteDialog = ref(false)
import { ref } from "vue";
import Pagination from "@/components/pagination/index.vue";
import exportDialog from "@/components/Export/index.vue";
const timeValue = ref("");
const detailVisibleValue = ref(false);
const showDeleteDialog = ref(false);
// SNS Notice ID
const snsId = ref('')
const snsId = ref("");
// 主管部门
const department = ref('')
const department = ref("");
// 目标名称
const targetName = ref('')
const targetName = ref("");
// 计划类型
const planType = ref('')
const planType = ref("");
// 是否为同步
const syncType = ref('')
const syncType = ref("");
// 同步位置
const syncPosition = ref('')
const syncPosition = ref("");
// 近地点
const perigee = ref('')
const perigee = ref("");
// 远地点
const apogee = ref('')
const apogee = ref("");
// 最低海拔
const lowestAltitude = ref('')
const lowestAltitude = ref("");
// 参考主体
const referenceSubject = ref('')
const referenceSubject = ref("");
// 最低频率
const lowestFrequency = ref('')
const lowestFrequency = ref("");
// 最高频率
const highestFrequency = ref('')
const highestFrequency = ref("");
// 状态
const status = ref('')
const status = ref("");
// 有效期
const validityPeriod = ref('')
const validityPeriod = ref("");
// 最早使用日期
const earliestUsageDate = ref('')
const earliestUsageDate = ref("");
// 是否确认使用
const isUsed = ref('')
const isUsed = ref("");
// 是否暂停使用
const isPauseUsed = ref('')
const isPauseUsed = ref("");
// 记录时间
const recordTime = ref('')
const recordTime = ref("");
// 是否在国际频率列表中
const IsInTheInternationalFrequencyList = ref('')
const IsInTheInternationalFrequencyList = ref("");
// 最早监管日期
const earliestRegulatoryDate = ref('')
const earliestRegulatoryDate = ref("");
// 是否恢复使用
const isRestoreUsed = ref('')
const isRestoreUsed = ref("");
// 最新相关BF IFIC发布日期
const BFIFICdate = ref('')
const BFIFICdate = ref("");
// 往返光时
const roundTripTime = ref('')
const roundTripTime = ref("");
// 距离
const distance = ref('')
const distance = ref("");
// 目标方位
const targetAzimuth = ref('')
const targetAzimuth = ref("");
// 目标俯仰
const targetElevation = ref('')
const targetElevation = ref("");
// 上行信号来源
const upstreamSignalSource = ref('')
const upstreamSignalSource = ref("");
// 上行发射功率
const upstreamLaunchPower = ref('')
const upstreamLaunchPower = ref("");
// 上行信号频段
const upstreamFrequencyBand = ref('')
const upstreamFrequencyBand = ref("");
// 风速
const windSpeed = ref('')
const windSpeed = ref("");
// 下行信号来源
const downstreamSignalSource = ref('')
const downstreamSignalSource = ref("");
// 下行信号频段
const downstreamFrequencyBand = ref('')
const downstreamFrequencyBand = ref("");
// 下行接收功率
const downstreamReceptionPower = ref('')
const downstreamReceptionPower = ref("");
// 类型
const type = ref('')
const type = ref("");
// INTLDES
const intldes = ref('')
const intldes = ref("");
// 失效时间
const expirationTime = ref('')
const expirationTime = ref("");
// 周期
const period = ref('')
const period = ref("");
// INCL
const incl = ref('')
const incl = ref("");
// RCS
const rcs = ref('')
const rcs = ref("");
// SITE
const site = ref('')
const site = ref("");
// TLE
const tle = ref('')
const tle = ref("");
const tableData = ref([
{
number: '1',
targetName: 'VOYAGER-2',
stationPosition: '[148.98,-35.22]',
stationName: 'CANBERRA',
NoradCatId: '2134',
SNSNoticeId: '90504649',
dataTime: '2025-06-24 14:35:23',
recordTime: '2025-06-25 14:35:23',
tle: '-',
isSync: '是',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
])
{
number: "1",
targetName: "VOYAGER-2",
stationPosition: "[148.98,-35.22]",
stationName: "CANBERRA",
NoradCatId: "2134",
SNSNoticeId: "90504649",
dataTime: "2025-06-24 14:35:23",
recordTime: "2025-06-25 14:35:23",
tle: "-",
isSync: "是",
},
{
name: "1",
},
{
name: "1",
},
{
name: "1",
},
{
name: "1",
},
{
name: "1",
},
{
name: "1",
},
{
name: "1",
},
{
name: "1",
},
{
name: "1",
},
]);
const pageObj = ref({
total: 10,
pageSize: 10,
pageNo: 1
})
total: 10,
pageSize: 10,
pageNo: 1,
});
const handleDetails = (row: any) => {
console.log(row);
detailVisibleValue.value = true
}
console.log(row);
detailVisibleValue.value = true;
};
const getData = () => {
console.log('getData');
}
console.log("getData");
};
const handleClose = () => {
detailVisibleValue.value = false
}
detailVisibleValue.value = false;
};
const handleExportConfirm = () => {
}
const handleExportConfirm = () => {};
const handleExport = () => {
showDeleteDialog.value = true
}
showDeleteDialog.value = true;
};
</script>
<style scoped lang="scss">
// 调整表单项间距
.detailForm {
.el-form-item {
margin-bottom: 7px !important;
}
.el-form-item {
margin-bottom: 7px !important;
}
}
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
/* 表格样式 */
.formStyle {
display: flex;
justify-content: space-around;
padding: 1px;
margin-top: 1%;
display: flex;
justify-content: space-around;
padding: 1px;
margin-top: 1%;
}
/* 文字样式 */
.el-text {
color: #FFFFFF;
color: #ffffff;
}
</style>
<style>
/* 修改el文本域的背景颜色与边框 */
.el-textarea__inner {
background-color: #1d5484;
--el-input-border-color: none;
background-color: #1d5484;
--el-input-border-color: none;
}
/* 修改el选择器的样式 */
.el-select__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 删除el选择器选中时的边框 */
.is-hovering {
box-shadow: none !important;
box-shadow: none !important;
}
/* 修改el输入框的样式 */
.el-input__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 修改el下拉框的背景颜色 */
.el-select-dropdown {
background-color: #1d5484;
background-color: #1d5484;
}
/* 修改el下拉框选项的字体颜色 */
.el-select-dropdown__item {
color: #FFFFFF;
color: #ffffff;
}
/* 修改el下拉框选项选中时的文字颜色 */
.el-select-dropdown__item:hover {
color: #409eff;
color: #409eff;
}
/* 修改el日期选择器的边框为none */
.el-date-editor {
--el-input-border-color: none
--el-input-border-color: none;
}
/* 去除按钮点击后的黑边框 */
.el-button:focus {
outline: none;
outline: none;
}
</style>
<style>
/* 修改弹窗样式 */
.el-dialog {
background: transparent;
background-image: url("@/assets/picture/dialog1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
color: #ffffff;
background: transparent;
background-image: url("@/assets/picture/dialog1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
color: #ffffff;
.el-dialog__title {
color: #ffffff;
}
.el-dialog__title {
color: #ffffff;
}
}
/* 修改表单样式 */
.el-form {
.el-form-item__label {
color: #ffffff;
}
.el-form-item__label {
color: #ffffff;
}
}
</style>
\ No newline at end of file
</style>
<template>
<!-- <div class="text-left p-1 toolbarStyle">
<!-- <div class="text-left p-1 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
......@@ -32,104 +32,107 @@
</el-form>
</div>
</div> -->
<div class="flex justify-left m-l-1%">
<el-button :type="statusMode === false ? 'primary' : 'danger'" @click="handleRefresh" size="small">{{ statusMode === false ?
'开始刷新' : '停止刷新' }}</el-button>
</div>
<div class="m-t-5" />
<div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '46px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="name" label="天线名称" show-overflow-tooltip />
<el-table-column property="targets[0].name" label="目标名称" show-overflow-tooltip />
<!-- <el-table-column property="distance" label="距离(km)" show-overflow-tooltip />
<div class="flex justify-left" style="padding-left: 10px">
<el-button :type="statusMode === false ? 'primary' : 'danger'" @click="handleRefresh" size="small">{{
statusMode === false ? "开始刷新" : "停止刷新"
}}</el-button>
</div>
<div class="m-t-5" />
<div class="table-content">
<el-table
v-loading="!tableData"
element-loading-background="rgba(48, 65, 86, 0.7)"
:data="tableData"
style="width: 100%"
border
:row-style="{ height: '46px' }"
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
>
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="name" label="天线名称" show-overflow-tooltip />
<el-table-column property="targets[0].name" label="目标名称" show-overflow-tooltip />
<!-- <el-table-column property="distance" label="距离(km)" show-overflow-tooltip />
<el-table-column property="roundTripTime" label="往返光时(s)" show-overflow-tooltip />
<el-table-column property="stationName" label="站点名称" show-overflow-tooltip /> -->
<el-table-column property="azimuthAngle" label="目标方位" show-overflow-tooltip />
<el-table-column property="elevationAngle" label="目标俯仰" show-overflow-tooltip />
<!-- <el-table-column property="targetDistance" label="目标距离" show-overflow-tooltip /> -->
<el-table-column property="windSpeed" label="风速(km/hr)" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.windSpeed === '' ? '无' : scope.row.windSpeed }}
</template>
</el-table-column>
<el-table-column property="targets[0].name" label="上行信号来源" show-overflow-tooltip />
<el-table-column property="signals[0].band" label="上行信号频段" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.signals.length === 0 ? '无' : scope.row.signals[0].band }}
</template>
</el-table-column>
<el-table-column property="signals[0].power" label="上行发射功率" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.signals.length === 0 ? '无' : scope.row.signals[0].power }}
</template>
</el-table-column>
<el-table-column property="targets[0].name" label="下行信号来源" show-overflow-tooltip />
<el-table-column property="signals[1].band" label="下行信号频段" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.signals.length < 2 ? '无' : scope.row.signals[1].band }} </template>
</el-table-column>
<el-table-column property="signals[1].power" label="下行接收功率" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.signals.length < 2 ? '无' : scope.row.signals[1].power }} </template>
</el-table-column>
<!-- <el-table-column property="dataTime" label="数据时间" show-overflow-tooltip /> -->
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
<!-- <div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<el-table-column property="azimuthAngle" label="目标方位" show-overflow-tooltip />
<el-table-column property="elevationAngle" label="目标俯仰" show-overflow-tooltip />
<!-- <el-table-column property="targetDistance" label="目标距离" show-overflow-tooltip /> -->
<el-table-column property="windSpeed" label="风速(km/hr)" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.windSpeed === "" ? "无" : scope.row.windSpeed }}
</template>
</el-table-column>
<el-table-column property="targets[0].name" label="上行信号来源" show-overflow-tooltip />
<el-table-column property="signals[0].band" label="上行信号频段" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.signals.length === 0 ? "无" : scope.row.signals[0].band }}
</template>
</el-table-column>
<el-table-column property="signals[0].power" label="上行发射功率" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.signals.length === 0 ? "无" : scope.row.signals[0].power }}
</template>
</el-table-column>
<el-table-column property="targets[0].name" label="下行信号来源" show-overflow-tooltip />
<el-table-column property="signals[1].band" label="下行信号频段" show-overflow-tooltip>
<template #default="scope"> {{ scope.row.signals.length < 2 ? "无" : scope.row.signals[1].band }} </template>
</el-table-column>
<el-table-column property="signals[1].power" label="下行接收功率" show-overflow-tooltip>
<template #default="scope"> {{ scope.row.signals.length < 2 ? "无" : scope.row.signals[1].power }} </template>
</el-table-column>
<!-- <el-table-column property="dataTime" label="数据时间" show-overflow-tooltip /> -->
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)"> 详情 </el-button>
</template>
</el-table-column>
</el-table>
<!-- <div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" />
</div> -->
</div>
</div>
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="800px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">
详情
</div>
</template>
<el-form label-width="94px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="天线名称:" label-position="left">
<el-input v-model="antennaName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="风速(km/hr):" label-position="left">
<el-input v-model="windSpeed" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="800px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">详情</div>
</template>
<el-form label-width="94px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="天线名称:" label-position="left">
<el-input v-model="antennaName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="风速(km/hr):" label-position="left">
<el-input v-model="windSpeed" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="距离(km):" label-position="left">
<el-input v-model="distance" />
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="天线状态:" label-position="left">
<el-input v-model="antennaStatus" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- <el-col :span="12">
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="天线状态:" label-position="left">
<el-input v-model="antennaStatus" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- <el-col :span="12">
<el-form-item label="往返光时:" label-position="left">
<el-input v-model="roundTripTime" />
</el-form-item>
......@@ -139,92 +142,92 @@
<el-input v-model="stationName" />
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标方位:" label-position="left">
<el-input v-model="targetAzimuth" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标俯仰:" label-position="left">
<el-input v-model="targetElevation" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20"> -->
<!-- <el-col :span="12">
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标方位:" label-position="left">
<el-input v-model="targetAzimuth" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标俯仰:" label-position="left">
<el-input v-model="targetElevation" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20"> -->
<!-- <el-col :span="12">
<el-form-item label="目标距离:" label-position="left">
<el-input v-model="targetDistance" />
</el-form-item>
</el-col> -->
<!-- <el-col :span="12">
<!-- <el-col :span="12">
<el-form-item label="风速(km/hr):" label-position="left">
<el-input v-model="windSpeed" />
</el-form-item>
</el-col> -->
<!-- </el-row> -->
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号状态:" label-position="left">
<el-input v-model="upSignalStatus" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号来源:" label-position="left">
<el-input v-model="upSignalSource" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号频段:" label-position="left">
<el-input v-model="upSignalFrequencyBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行发射功率:" label-position="left">
<el-input v-model="upSignalLaunchPower" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<!-- </el-row> -->
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号状态:" label-position="left">
<el-input v-model="upSignalStatus" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号来源:" label-position="left">
<el-input v-model="upSignalSource" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号频段:" label-position="left">
<el-input v-model="upSignalFrequencyBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行发射功率:" label-position="left">
<el-input v-model="upSignalLaunchPower" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="下行信号来源:" label-position="left">
<el-input v-model="downSignalSignalSource" />
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号状态:" label-position="left">
<el-input v-model="downSignalStatus" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号来源:" label-position="left">
<el-input v-model="downSignalSource" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号频段:" label-position="left">
<el-input v-model="downSignalFrequencyBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行接收功率:" label-position="left">
<el-input v-model="downSignalReceptionPower" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="往返光时(s):" label-position="left">
<el-input v-model="roundTripTime" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号状态:" label-position="left">
<el-input v-model="downSignalStatus" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号来源:" label-position="left">
<el-input v-model="downSignalSource" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号频段:" label-position="left">
<el-input v-model="downSignalFrequencyBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行接收功率:" label-position="left">
<el-input v-model="downSignalReceptionPower" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="往返光时(s):" label-position="left">
<el-input v-model="roundTripTime" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="数据时间:" label-position="left">
<el-input v-model="dataTime" />
......@@ -236,229 +239,232 @@
</el-form-item>
</el-col>
</el-row> -->
<!-- <el-row :gutter="20">
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否暂停使用:" label-position="left">
<el-input v-model="isSuspended" />
</el-form-item>
</el-col>
</el-row> -->
</div>
</el-form>
</el-dialog>
</div>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import Pagination from '@/components/pagination/index.vue'
import { getDsnList } from '@/api/spiderData'
import { ElMessage } from 'element-plus'
import { onMounted, ref } from "vue";
import Pagination from "@/components/pagination/index.vue";
import { getDsnList } from "@/api/spiderData";
import { ElMessage } from "element-plus";
const timeValue = ref('')
const statusMode = ref(false)
const detailVisibleValue = ref(false)
const timeValue = ref("");
const statusMode = ref(false);
const detailVisibleValue = ref(false);
// 目标名称
const targetName = ref('')
const targetName = ref("");
// 距离(km)
const distance = ref('')
const distance = ref("");
// 往返光时
const roundTripTime = ref('')
const roundTripTime = ref("");
// 站点名称
const stationName = ref('')
const stationName = ref("");
// 天线名称
const antennaName = ref('')
const antennaName = ref("");
// 天线状态
const antennaStatus = ref('')
const antennaStatus = ref("");
// 目标方位
const targetAzimuth = ref('')
const targetAzimuth = ref("");
// 目标俯仰
const targetElevation = ref('')
const targetElevation = ref("");
// 目标距离
const targetDistance = ref('')
const targetDistance = ref("");
// 风速(km/hr)
const windSpeed = ref('')
const windSpeed = ref("");
// 上行信号状态
const upSignalStatus = ref('')
const upSignalStatus = ref("");
// 上行信号来源
const upSignalSource = ref('')
const upSignalSource = ref("");
// 上行信号频段
const upSignalFrequencyBand = ref('')
const upSignalFrequencyBand = ref("");
// 上行发射功率
const upSignalLaunchPower = ref('')
const upSignalLaunchPower = ref("");
// 下行信号状态
const downSignalStatus = ref('')
const downSignalStatus = ref("");
// 下行信号来源
const downSignalSource = ref('')
const downSignalSource = ref("");
// 下行信号频段
const downSignalFrequencyBand = ref('')
const downSignalFrequencyBand = ref("");
// 下行接收功率
const downSignalReceptionPower = ref('')
const downSignalReceptionPower = ref("");
// 数据时间
const dataTime = ref('')
const dataTime = ref("");
// 记录时间
const recordTime = ref('')
const recordTime = ref("");
// 是否暂停使用
const isSuspended = ref('')
const isSuspended = ref("");
interface dsnInfo {
targetName:string
targetNam:string
targetName: string;
targetNam: string;
}
const dsnInfoDialog = ref<dsnInfo>()
const dsnInfoDialog = ref<dsnInfo>();
// 存放定时器的id
const timerId = ref<number | null>()
const tableData = ref()
const timerId = ref<number | null>();
const tableData = ref();
const pageObj = ref({
total: 10,
pageSize: 1,
pageNo: 1
})
total: 10,
pageSize: 1,
pageNo: 1,
});
// 查看数据详情的方法
const handleDetails = (row: any) => {
console.log(row);
targetName.value = row.targets[0].name
windSpeed.value = row.windSpeed === '' ? '无' : row.windSpeed
antennaName.value = row.name
antennaStatus.value = row.activity
targetAzimuth.value = row.azimuthAngle
targetElevation.value = row.elevationAngle
upSignalStatus.value = row.signals.length < 1 ? '无' : row.signals[0].active
upSignalSource.value = row.signals.length < 1 ? '无' : row.targets[0].name
upSignalFrequencyBand.value = row.signals.length < 1 ? '无' : row.signals[0].band
upSignalLaunchPower.value = row.signals.length < 1 ? '无' : row.signals[0].power
downSignalStatus.value = row.signals.length < 2 ? '无' : row.signals[1].active
downSignalSource.value = row.signals.length < 2 ? '无' : row.targets[0].name
downSignalFrequencyBand.value = row.signals.length < 2 ? '无' : row.signals[1].band
downSignalReceptionPower.value = row.signals.length < 2 ? '无' : row.signals[1].power
roundTripTime.value = row.targets[0].rtlt
detailVisibleValue.value = true
}
console.log(row);
targetName.value = row.targets[0].name;
windSpeed.value = row.windSpeed === "" ? "无" : row.windSpeed;
antennaName.value = row.name;
antennaStatus.value = row.activity;
targetAzimuth.value = row.azimuthAngle;
targetElevation.value = row.elevationAngle;
upSignalStatus.value = row.signals.length < 1 ? "无" : row.signals[0].active;
upSignalSource.value = row.signals.length < 1 ? "无" : row.targets[0].name;
upSignalFrequencyBand.value = row.signals.length < 1 ? "无" : row.signals[0].band;
upSignalLaunchPower.value = row.signals.length < 1 ? "无" : row.signals[0].power;
downSignalStatus.value = row.signals.length < 2 ? "无" : row.signals[1].active;
downSignalSource.value = row.signals.length < 2 ? "无" : row.targets[0].name;
downSignalFrequencyBand.value = row.signals.length < 2 ? "无" : row.signals[1].band;
downSignalReceptionPower.value = row.signals.length < 2 ? "无" : row.signals[1].power;
roundTripTime.value = row.targets[0].rtlt;
detailVisibleValue.value = true;
};
// 获取dsn数据列表的方法
const getData = async () => {
const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
let dishesData = []
for(let i = 0; i < res.data.list[0].stations.length; i++){
for(let j = 0; j < res.data.list[0].stations[i].dishes.length; j++){
dishesData.push(res.data.list[0].stations[i].dishes[j])
}
}
pageObj.value.total = dishesData.length
tableData.value = dishesData
}
const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize });
let dishesData = [];
for (let i = 0; i < res.data.list[0].stations.length; i++) {
for (let j = 0; j < res.data.list[0].stations[i].dishes.length; j++) {
dishesData.push(res.data.list[0].stations[i].dishes[j]);
}
}
pageObj.value.total = dishesData.length;
tableData.value = dishesData;
};
const handleClose = () => {
detailVisibleValue.value = false
}
detailVisibleValue.value = false;
};
// 刷新数据的方法
const handleRefresh = () => {
// 切换是否开始刷新的状态
statusMode.value = !statusMode.value
// 删除定时器
if (timerId.value !== null) {
clearInterval(timerId.value);
timerId.value = null;
}
// 开始刷新时重新设置一个定时器
if (statusMode.value) {
ElMessage.success('开始刷新')
// 保存id删除的时候用
timerId.value = setInterval(async () => {
const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize });
tableData.value = res.data.list[0].dishes
}, 5000);
} else {
ElMessage.success('停止刷新')
getData()
}
}
// 切换是否开始刷新的状态
statusMode.value = !statusMode.value;
// 删除定时器
if (timerId.value !== null) {
clearInterval(timerId.value);
timerId.value = null;
}
// 开始刷新时重新设置一个定时器
if (statusMode.value) {
ElMessage.success("开始刷新");
// 保存id删除的时候用
timerId.value = setInterval(async () => {
const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize });
tableData.value = res.data.list[0].dishes;
}, 5000);
} else {
ElMessage.success("停止刷新");
getData();
}
};
onMounted(async () => {
// 进入页面时先删除定时器
if (timerId.value !== null) {
// 进入页面时先删除定时器
if (timerId.value !== null) {
clearInterval(timerId.value);
}
statusMode.value = false
// 先获取一次
getData()
})
statusMode.value = false;
// 先获取一次
getData();
});
</script>
<style scoped lang="scss">
// 调整表单项间距
.detailForm {
.el-dialog-title {
font-size: 180px;
}
.el-dialog-title {
font-size: 180px;
}
.el-form-item {
margin-bottom: 30px !important;
}
.el-form-item {
margin-bottom: 30px !important;
}
}
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
/* 表格样式 */
.formStyle {
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
}
/* 文字样式 */
.el-text {
color: #FFFFFF;
color: #ffffff;
}
</style>
<style>
.el-input {
--el-input-text-color: #FFFFFF;
--el-input-text-color: #ffffff;
}
/* 修改el选择器的样式 */
.el-select__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 删除el选择器选中时的边框 */
.is-hovering {
box-shadow: none !important;
box-shadow: none !important;
}
/* 修改el输入框的样式 */
.el-input__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 修改el下拉框的背景颜色 */
.el-select-dropdown {
background-color: #1d5484;
background-color: #1d5484;
}
/* 修改el下拉框选项的字体颜色 */
.el-select-dropdown__item {
color: #FFFFFF;
color: #ffffff;
}
/* 修改el下拉框选项选中时的文字颜色 */
.el-select-dropdown__item:hover {
color: #409eff;
color: #409eff;
}
/* 修改el日期选择器的边框为none */
.el-date-editor {
--el-input-border-color: none
--el-input-border-color: none;
}
.el-button:focus {
outline: none;
outline: none;
}
.table-content {
padding: 0 10px;
}
</style>
\ No newline at end of file
</style>
<template>
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请输入" v-model="searchTargetName" style="width: 180px" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">获取时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker type="datetimerange" format="YYYY-MM-DD HH:mm:ss" v-model="searchTimeValue"
start-placeholder="开始时间" style="width: 330px" end-placeholder="结束时间"
date-format="YYYY/MM/DD ddd" time-format="A hh:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
</el-config-provider>
</el-form-item>
<el-form-item>
<el-text class="mx-1">站点名称:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" v-model="searchStation" style="width: 170.5px" />
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请输入" v-model="searchTargetName" style="width: 180px" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">获取时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
v-model="searchTimeValue"
start-placeholder="开始时间"
style="width: 200px"
end-placeholder="结束时间"
date-format="YYYY/MM/DD ddd"
time-format="A hh:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-config-provider>
</el-form-item>
<el-form-item>
<el-text class="mx-1">站点名称:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" v-model="searchStation" style="width: 170.5px" />
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<div class="m-t-5" />
<div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '45.5px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="data.mission" label="目标名称" width="86" show-overflow-tooltip />
<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 }}
</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 }}
</template>
</el-table-column>
<el-table-column property="data.boa" label="行动开始时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.boa) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="行动结束时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.bot) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="跟踪结束时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.eoa) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="跟踪开始时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.eot) }}
</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' ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" min-width="85">
<template #default="scope">
<el-button link type="primary" size="small" @click="handleMissionDetails(scope.row.data.mission)">
目标信息
</el-button>
<el-button link type="primary" size="small"
@click="handleStationDetails(scope.row.data.station)">站点信息</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" />
</div>
<div class="m-t-5" />
<div class="table-content">
<el-table
:data="tableData"
style="width: 100%"
border
:row-style="{ height: '45.5px' }"
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
v-loading="tableData.length == 0"
element-loading-background="rgba(48, 65, 86, 0.7)"
>
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="data.mission" label="目标名称" width="86" show-overflow-tooltip />
<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 }}
</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 }}
</template>
</el-table-column>
<el-table-column property="data.boa" label="行动开始时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.boa) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="行动结束时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.bot) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="跟踪结束时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.eoa) }}
</template>
</el-table-column>
<el-table-column property="data.plan_txt" label="跟踪开始时间" show-overflow-tooltip>
<template #default="scope">
{{ formatTimestamp(scope.row.data.eot) }}
</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" ? "是" : "否" }}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" min-width="85">
<template #default="scope">
<el-button link type="primary" size="small" @click="handleMissionDetails(scope.row.data.mission)">
目标信息
</el-button>
<el-button link type="primary" size="small" @click="handleStationDetails(scope.row.data.station)"
>站点信息</el-button
>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getData"
/>
</div>
</div>
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">
详情
</div>
</template>
<el-form label-width="155px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务类型:" label-position="left">
<el-input v-model="targetMissionType" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标运行轨道:" label-position="left">
<el-input v-model="targetOrbit" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标尺寸:" label-position="left">
<el-input v-model="targetDimension" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标发射质量:" label-position="left">
<el-input v-model="targetLaunchMass" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标干质量:" label-position="left">
<el-input v-model="targetDryMass" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input v-model="targetPerigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input v-model="targetApogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标功率:" label-position="left">
<el-input v-model="targetPower" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="轨道倾角:" label-position="left">
<el-input v-model="targetInclination" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="发射日期:" label-position="left">
<el-input v-model="targetLaunchDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发射站点:" label-position="left">
<el-input v-model="targetLaunchLocation" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="轨道周期:" label-position="left">
<el-input v-model="targetPeriod" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="相关仪器:" label-position="left">
<el-input v-model="targetInstruments" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="服役日期:" label-position="left">
<el-input v-model="targetServiceDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否为核心任务:" label-position="left">
<el-input v-model="targetIsCoreMission" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="太阳风速:" label-position="left">
<el-input v-model="targetSolarWindSpeed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="太阳通量密度:" label-position="left">
<el-input v-model="targetSolarFluxDensity" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">详情</div>
</template>
<el-form label-width="155px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务类型:" label-position="left">
<el-input v-model="targetMissionType" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标运行轨道:" label-position="left">
<el-input v-model="targetOrbit" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标尺寸:" label-position="left">
<el-input v-model="targetDimension" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标发射质量:" label-position="left">
<el-input v-model="targetLaunchMass" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标干质量:" label-position="left">
<el-input v-model="targetDryMass" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input v-model="targetPerigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input v-model="targetApogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标功率:" label-position="left">
<el-input v-model="targetPower" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="轨道倾角:" label-position="left">
<el-input v-model="targetInclination" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="发射日期:" label-position="left">
<el-input v-model="targetLaunchDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发射站点:" label-position="left">
<el-input v-model="targetLaunchLocation" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="轨道周期:" label-position="left">
<el-input v-model="targetPeriod" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="相关仪器:" label-position="left">
<el-input v-model="targetInstruments" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="服役日期:" label-position="left">
<el-input v-model="targetServiceDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否为核心任务:" label-position="left">
<el-input v-model="targetIsCoreMission" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="太阳风速:" label-position="left">
<el-input v-model="targetSolarWindSpeed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="太阳通量密度:" label-position="left">
<el-input v-model="targetSolarFluxDensity" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否在仪表盘中显示:" label-position="left">
<el-input v-model="targetIsShowInDashboard" />
......@@ -223,532 +242,545 @@
</el-form-item>
</el-col>
</el-row> -->
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="描述:" label-position="left">
<el-input v-model="targetDescription" type="textarea" :rows="3" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="描述:" label-position="left">
<el-input v-model="targetDescription" type="textarea" :rows="3" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<div class="detailForm">
<el-dialog v-model="stationVisibleValue" center width="880px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">
详情
</div>
</template>
<el-form label-width="196px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点名称:" label-position="left">
<el-input v-model="stationName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所在国家:" label-position="left">
<el-input v-model="stationCountry" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点经度:" label-position="left">
<el-input v-model="stationLongitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点纬度:" label-position="left">
<el-input v-model="stationLatitude" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点海拔:" label-position="left">
<el-input v-model="stationAltitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点直径:" label-position="left">
<el-input v-model="stationDiameter" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="天线方位角速度:" label-position="left">
<el-input v-model="stationAzimuthSpeed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="天线俯仰角速度:" label-position="left">
<el-input v-model="stationElevationSpeed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="信号频段:" label-position="left">
<el-input v-model="stationBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="TMTC标准:" label-position="left">
<el-input v-model="stationTMTC" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="信号频率与定时:" label-position="left">
<el-input v-model="stationFrequencyAndTiming" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点天气情况:" label-position="left">
<el-input v-model="stationWeather" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号S频段极化:" label-position="left">
<el-input v-model="stationUplinkSPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号S频段等效全向辐射功率:" label-position="left">
<el-input v-model="stationUplinkSEirp" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号X频段极化:" label-position="left">
<el-input v-model="stationUplinkXPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号X频段等效全向辐射功率:" label-position="left">
<el-input v-model="stationUplinkXEirp" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号Ka频段极化:" label-position="left">
<el-input v-model="stationUplinkKaPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号Ka频段等效全向辐射功率:" label-position="left">
<el-input v-model="stationUplinkKaEirp" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号S频段极化:" label-position="left">
<el-input v-model="stationDownlinkSPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号S频段G/T比:" label-position="left">
<el-input v-model="stationDownlinkSGt" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号X频段极化:" label-position="left">
<el-input v-model="stationDownlinkXPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号X频段G/T比:" label-position="left">
<el-input v-model="stationDownlinkXGt" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号Ka频段极化:" label-position="left">
<el-input v-model="stationDownlinkKaPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号Ka频段G/T比:" label-position="left">
<el-input v-model="stationDownlinkKaGt" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点温度:" label-position="left">
<el-input v-model="stationTemperature" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点气压:" label-position="left">
<el-input v-model="stationPressure" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点湿度:" label-position="left">
<el-input v-model="stationHumidity" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点类型:" label-position="left">
<el-input v-model="stationType" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="描述:" label-position="left">
<el-input v-model="stationDescription" type="textarea" :rows="3" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<div class="detailForm">
<el-dialog v-model="stationVisibleValue" center width="880px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">详情</div>
</template>
<el-form label-width="196px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点名称:" label-position="left">
<el-input v-model="stationName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所在国家:" label-position="left">
<el-input v-model="stationCountry" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点经度:" label-position="left">
<el-input v-model="stationLongitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点纬度:" label-position="left">
<el-input v-model="stationLatitude" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点海拔:" label-position="left">
<el-input v-model="stationAltitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点直径:" label-position="left">
<el-input v-model="stationDiameter" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="天线方位角速度:" label-position="left">
<el-input v-model="stationAzimuthSpeed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="天线俯仰角速度:" label-position="left">
<el-input v-model="stationElevationSpeed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="信号频段:" label-position="left">
<el-input v-model="stationBand" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="TMTC标准:" label-position="left">
<el-input v-model="stationTMTC" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="信号频率与定时:" label-position="left">
<el-input v-model="stationFrequencyAndTiming" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点天气情况:" label-position="left">
<el-input v-model="stationWeather" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号S频段极化:" label-position="left">
<el-input v-model="stationUplinkSPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号S频段等效全向辐射功率:" label-position="left">
<el-input v-model="stationUplinkSEirp" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号X频段极化:" label-position="left">
<el-input v-model="stationUplinkXPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号X频段等效全向辐射功率:" label-position="left">
<el-input v-model="stationUplinkXEirp" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="上行信号Ka频段极化:" label-position="left">
<el-input v-model="stationUplinkKaPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上行信号Ka频段等效全向辐射功率:" label-position="left">
<el-input v-model="stationUplinkKaEirp" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号S频段极化:" label-position="left">
<el-input v-model="stationDownlinkSPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号S频段G/T比:" label-position="left">
<el-input v-model="stationDownlinkSGt" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号X频段极化:" label-position="left">
<el-input v-model="stationDownlinkXPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号X频段G/T比:" label-position="left">
<el-input v-model="stationDownlinkXGt" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="下行信号Ka频段极化:" label-position="left">
<el-input v-model="stationDownlinkKaPolarization" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下行信号Ka频段G/T比:" label-position="left">
<el-input v-model="stationDownlinkKaGt" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点温度:" label-position="left">
<el-input v-model="stationTemperature" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点气压:" label-position="left">
<el-input v-model="stationPressure" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="站点湿度:" label-position="left">
<el-input v-model="stationHumidity" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点类型:" label-position="left">
<el-input v-model="stationType" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="描述:" label-position="left">
<el-input v-model="stationDescription" type="textarea" :rows="3" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" />
<exportDialog v-model:dialogVisible="showDeleteDialog" />
</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';
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 = '页';
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) => {
const res = await getESAStationDetail({ name: id })
// 防止残留数据
stationDescription.value = ''
// 字段赋值
stationName.value = res.data.data[0].name
stationCountry.value = res.data.data[0].country
stationLongitude.value = res.data.data[0].longitude
stationLatitude.value = res.data.data[0].latitude
stationAltitude.value = res.data.data[0].altitude
stationDiameter.value = res.data.data[0].diameter
stationAzimuthSpeed.value = res.data.data[0].antennaSpeedAzimuth
stationElevationSpeed.value = res.data.data[0].antennaSpeedElevation
stationBand.value = res.data.data[0].band
stationTMTC.value = res.data.data[0].tmtcStandards
stationFrequencyAndTiming.value = res.data.data[0].frequencyAndTiming
stationWeather.value = res.data.data[0].weather === null ? '无' : res.data.data[0].weather
stationUplinkSPolarization.value = res.data.data[0].uplinkSBandPolarization === null ? '无' : res.data.data[0].uplinkSBandPolarization
stationUplinkSEirp.value = res.data.data[0].uplinkSBandEirp === null ? '无' : res.data.data[0].uplinkSBandEirp
stationUplinkXPolarization.value = res.data.data[0].uplinkXBandPolarization === null ? '无' : res.data.data[0].uplinkXBandPolarization
stationUplinkXEirp.value = res.data.data[0].uplinkXBandEirp === null ? '无' : res.data.data[0].uplinkXBandEirp
stationUplinkKaPolarization.value = res.data.data[0].uplinkKaBandPolarization === null ? '无' : res.data.data[0].uplinkKaBandPolarization
stationUplinkKaEirp.value = res.data.data[0].uplinkKaBandEirp === null ? '无' : res.data.data[0].uplinkKaBandEirp
stationDownlinkSPolarization.value = res.data.data[0].downlinkSBandPolarization === null ? '无' : res.data.data[0].downlinkSBandPolarization
stationDownlinkSGt.value = res.data.data[0].downlinkSBandGT === null ? '无' : res.data.data[0].downlinkSBandGT
stationDownlinkXPolarization.value = res.data.data[0].downlinkXBandPolarization === null ? '无' : res.data.data[0].downlinkXBandPolarization
stationDownlinkXGt.value = res.data.data[0].downlinkXBandGT === null ? '无' : res.data.data[0].downlinkXBandGT
stationDownlinkKaPolarization.value = res.data.data[0].downlinkKaBandPolarization === null ? '无' : res.data.data[0].downlinkKaBandPolarization
stationDownlinkKaGt.value = res.data.data[0].downlinkKaBandGT === null ? '无' : res.data.data[0].downlinkKaBandGT
stationTemperature.value = res.data.data[0].temperature
stationPressure.value = res.data.data[0].airPressure
stationHumidity.value = res.data.data[0].humidity
stationType.value = res.data.data[0].type
for (let i = 0; i < res.data.data[0].description.length; i++) {
stationDescription.value += res.data.data[0].description[i]
}
stationVisibleValue.value = true
}
const res = await getESAStationDetail({ name: id });
// 防止残留数据
stationDescription.value = "";
// 字段赋值
stationName.value = res.data.data[0].name;
stationCountry.value = res.data.data[0].country;
stationLongitude.value = res.data.data[0].longitude;
stationLatitude.value = res.data.data[0].latitude;
stationAltitude.value = res.data.data[0].altitude;
stationDiameter.value = res.data.data[0].diameter;
stationAzimuthSpeed.value = res.data.data[0].antennaSpeedAzimuth;
stationElevationSpeed.value = res.data.data[0].antennaSpeedElevation;
stationBand.value = res.data.data[0].band;
stationTMTC.value = res.data.data[0].tmtcStandards;
stationFrequencyAndTiming.value = res.data.data[0].frequencyAndTiming;
stationWeather.value = res.data.data[0].weather === null ? "无" : res.data.data[0].weather;
stationUplinkSPolarization.value =
res.data.data[0].uplinkSBandPolarization === null ? "无" : res.data.data[0].uplinkSBandPolarization;
stationUplinkSEirp.value = res.data.data[0].uplinkSBandEirp === null ? "无" : res.data.data[0].uplinkSBandEirp;
stationUplinkXPolarization.value =
res.data.data[0].uplinkXBandPolarization === null ? "无" : res.data.data[0].uplinkXBandPolarization;
stationUplinkXEirp.value = res.data.data[0].uplinkXBandEirp === null ? "无" : res.data.data[0].uplinkXBandEirp;
stationUplinkKaPolarization.value =
res.data.data[0].uplinkKaBandPolarization === null ? "无" : res.data.data[0].uplinkKaBandPolarization;
stationUplinkKaEirp.value = res.data.data[0].uplinkKaBandEirp === null ? "无" : res.data.data[0].uplinkKaBandEirp;
stationDownlinkSPolarization.value =
res.data.data[0].downlinkSBandPolarization === null ? "无" : res.data.data[0].downlinkSBandPolarization;
stationDownlinkSGt.value = res.data.data[0].downlinkSBandGT === null ? "无" : res.data.data[0].downlinkSBandGT;
stationDownlinkXPolarization.value =
res.data.data[0].downlinkXBandPolarization === null ? "无" : res.data.data[0].downlinkXBandPolarization;
stationDownlinkXGt.value = res.data.data[0].downlinkXBandGT === null ? "无" : res.data.data[0].downlinkXBandGT;
stationDownlinkKaPolarization.value =
res.data.data[0].downlinkKaBandPolarization === null ? "无" : res.data.data[0].downlinkKaBandPolarization;
stationDownlinkKaGt.value = res.data.data[0].downlinkKaBandGT === null ? "无" : res.data.data[0].downlinkKaBandGT;
stationTemperature.value = res.data.data[0].temperature;
stationPressure.value = res.data.data[0].airPressure;
stationHumidity.value = res.data.data[0].humidity;
stationType.value = res.data.data[0].type;
for (let i = 0; i < res.data.data[0].description.length; i++) {
stationDescription.value += res.data.data[0].description[i];
}
stationVisibleValue.value = true;
};
const tableData = ref([])
const tableData = ref([]);
const pageObj = ref({
total: 0,
pageSize: 10,
pageNo: 1
})
total: 0,
pageSize: 10,
pageNo: 1,
});
const formatTimestamp = (timestamp: any) => {
if (!timestamp || typeof timestamp !== 'number' || timestamp <= 0) {
return '-';
}
const msTimestamp = String(timestamp).length === 10 ? timestamp * 1000 : timestamp;
const date = new Date(msTimestamp);
if (isNaN(date.getTime())) {
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}`;
if (!timestamp || typeof timestamp !== "number" || timestamp <= 0) {
return "-";
}
const msTimestamp = String(timestamp).length === 10 ? timestamp * 1000 : timestamp;
const date = new Date(msTimestamp);
if (isNaN(date.getTime())) {
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}`;
};
// 查看esa任务详情的方法
const handleMissionDetails = async (id: any) => {
const res = await getESAMissionDetail({ name: id })
// 防止残留数据
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
for (let i = 0; i < res.data.data[0].description.length; i++) {
targetDescription.value += res.data.data[0].description[i]
}
detailVisibleValue.value = true
}
const res = await getESAMissionDetail({ name: id });
// 防止残留数据
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;
for (let i = 0; i < res.data.data[0].description.length; i++) {
targetDescription.value += res.data.data[0].description[i];
}
detailVisibleValue.value = true;
};
// 获取esa数据列表的方法
const getData = async () => {
searchStation.value = ''
searchTargetName.value = ''
searchTimeValue.value = ''
const res = await getESAList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
pageObj.value.total = res.data.total
tableData.value = res.data.list
}
searchStation.value = "";
searchTargetName.value = "";
searchTimeValue.value = "";
const res = await getESAList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize });
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
};
const handleClose = () => {
detailVisibleValue.value = false
}
detailVisibleValue.value = false;
};
const handleSearch = async () => {
if (searchTargetName.value === '' && searchStation.value === '' && searchTimeValue.value === '') {
ElMessage.warning('请输入搜索内容')
return
}
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
}
if (searchTargetName.value === "" && searchStation.value === "" && searchTimeValue.value === "") {
ElMessage.warning("请输入搜索内容");
return;
}
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;
};
onMounted(() => {
getData()
})
getData();
});
</script>
<style scoped lang="scss">
// 调整表单项间距
.detailForm {
.el-dialog-title {
font-size: 180px;
}
.el-dialog-title {
font-size: 180px;
}
.el-form-item {
margin-bottom: 20px !important;
}
.el-form-item {
margin-bottom: 20px !important;
}
}
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
/* 表格样式 */
.formStyle {
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
}
/* 文字样式 */
.el-text {
color: #FFFFFF;
color: #ffffff;
}
</style>
<style>
.el-input {
--el-input-text-color: #FFFFFF;
--el-input-text-color: #ffffff;
}
/* 修改el选择器的样式 */
.el-select__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 删除el选择器选中时的边框 */
.is-hovering {
box-shadow: none !important;
box-shadow: none !important;
}
/* 修改el输入框的样式 */
.el-input__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 修改el下拉框的背景颜色 */
.el-select-dropdown {
background-color: #1d5484;
background-color: #1d5484;
}
/* 修改el下拉框选项的字体颜色 */
.el-select-dropdown__item {
color: #FFFFFF;
color: #ffffff;
}
/* 修改el下拉框选项选中时的文字颜色 */
.el-select-dropdown__item:hover {
color: #409eff;
color: #409eff;
}
/* 修改el日期选择器的边框为none */
.el-date-editor {
--el-input-border-color: none
--el-input-border-color: none;
}
.el-button:focus {
outline: none;
outline: none;
}
</style>
\ No newline at end of file
.table-content {
padding: 0 10px;
}
</style>
<template>
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请输入" v-model="searchTargetName" style="width: 180px" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">获取时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker type="datetimerange" format="YYYY-MM-DD HH:mm:ss" v-model="searchTimeValue"
start-placeholder="开始时间" style="width: 330px" end-placeholder="结束时间"
date-format="YYYY/MM/DD ddd" time-format="A hh:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
</el-config-provider>
</el-form-item>
<el-form-item>
<el-text class="mx-1">SNS Notice ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" v-model="searchTargetId" style="width: 170.5px" />
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请输入" v-model="searchTargetName" style="width: 180px" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">获取时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
v-model="searchTimeValue"
start-placeholder="开始时间"
style="width: 200px"
end-placeholder="结束时间"
date-format="YYYY/MM/DD ddd"
time-format="A hh:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-config-provider>
</el-form-item>
<el-form-item>
<el-text class="mx-1">SNS Notice ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" v-model="searchTargetId" style="width: 170.5px" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-form-item>
</el-form>
</div>
</div>
<div class="m-t-5" />
<div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '45px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="item.ntc_id" label="SNS Notice ID" show-overflow-tooltip />
<el-table-column property="identity.adm_name_e" label="主管部门" show-overflow-tooltip />
<el-table-column property="identity.sat_name" label="目标名称" show-overflow-tooltip />
<el-table-column property="item.plan_txt" label="计划/非计划类型" show-overflow-tooltip />
<el-table-column property="identity.ntc_type" label="是否为同步" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.identity.ntc_type === 'G' ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column property="identity.long_nom" label="同步位置" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.identity.long_nom === null ? '-' : scope.row.identity.long_nom }}
</template>
</el-table-column>
<!-- <el-table-column property="item.minPerigee" label="近地点" show-overflow-tooltip>
<div class="m-t-5" />
<div class="itu-table">
<el-table
:data="tableData"
style="width: 100%"
border
:row-style="{ height: '45px' }"
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
v-loading="tableData.length == 0"
element-loading-background="rgba(48, 65, 86, 0.7)"
>
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="item.ntc_id" label="SNS Notice ID" show-overflow-tooltip />
<el-table-column property="identity.adm_name_e" label="主管部门" show-overflow-tooltip />
<el-table-column property="identity.sat_name" label="目标名称" show-overflow-tooltip />
<el-table-column property="item.plan_txt" label="计划/非计划类型" show-overflow-tooltip />
<el-table-column property="identity.ntc_type" label="是否为同步" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.identity.ntc_type === "G" ? "是" : "否" }}
</template>
</el-table-column>
<el-table-column property="identity.long_nom" label="同步位置" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.identity.long_nom === null ? "-" : scope.row.identity.long_nom }}
</template>
</el-table-column>
<!-- <el-table-column property="item.minPerigee" label="近地点" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.item.minPerigee === null ? '-' : scope.row.item.minPerigee }}
</template>
......@@ -76,404 +90,413 @@
{{ scope.row.item.ref_body === null ? '-' : scope.row.item.ref_body }}
</template>
</el-table-column> -->
<el-table-column property="item.freq_min" label="最低频率" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.item.freq_min === null ? '-' : scope.row.item.freq_min }}
</template>
</el-table-column>
<el-table-column property="item.freq_max" label="最高频率" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.item.freq_max === null ? '-' : scope.row.item.freq_max }}
</template>
</el-table-column>
<el-table-column property="regulatory_status.active_status" label="状态" show-overflow-tooltip />
<el-table-column property="regulatory_status.prd_valid" label="有效期" show-overflow-tooltip />
<el-table-column property="regulatory_status.d_reg_limit" label="最早使用日期" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.regulatory_status.d_reg_limit === null ? '-' : scope.row.regulatory_status.d_reg_limit
}}
</template>
</el-table-column>
<el-table-column property="regulatory_status.f_biu_grps" label="是否确认使用" show-overflow-tooltip />
<el-table-column property="regulatory_status.resumption_list" label="是否暂停使用" show-overflow-tooltip />
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" />
</div>
</div>
<el-table-column property="item.freq_min" label="最低频率" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.item.freq_min === null ? "-" : scope.row.item.freq_min }}
</template>
</el-table-column>
<el-table-column property="item.freq_max" label="最高频率" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.item.freq_max === null ? "-" : scope.row.item.freq_max }}
</template>
</el-table-column>
<el-table-column property="regulatory_status.active_status" label="状态" show-overflow-tooltip />
<el-table-column property="regulatory_status.prd_valid" label="有效期" show-overflow-tooltip />
<el-table-column property="regulatory_status.d_reg_limit" label="最早使用日期" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.regulatory_status.d_reg_limit === null ? "-" : scope.row.regulatory_status.d_reg_limit }}
</template>
</el-table-column>
<el-table-column property="regulatory_status.f_biu_grps" label="是否确认使用" show-overflow-tooltip />
<el-table-column property="regulatory_status.resumption_list" label="是否暂停使用" show-overflow-tooltip />
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)"> 详情 </el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getData"
/>
</div>
</div>
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">
详情
</div>
</template>
<el-form label-width="155px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="SNS Notice ID:" label-position="left">
<el-input v-model="snsId" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主管部门:" label-position="left">
<el-input v-model="department" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划/非计划类型:" label-position="left">
<el-input v-model="planType" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否为同步:" label-position="left">
<el-input v-model="syncType" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="同步位置:" label-position="left">
<el-input v-model="syncPosition" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input v-model="perigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input v-model="apogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低海拔:" label-position="left">
<el-input v-model="lowestAltitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="参考主体:" label-position="left">
<el-input v-model="referenceSubject" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低频率:" label-position="left">
<el-input v-model="lowestFrequency" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最高频率:" label-position="left">
<el-input v-model="highestFrequency" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="状态:" label-position="left">
<el-input v-model="status" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有效期:" label-position="left">
<el-input v-model="validityPeriod" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最早使用日期:" label-position="left">
<el-input v-model="earliestUsageDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否确认使用:" label-position="left">
<el-input v-model="isUsed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否暂停使用:" label-position="left">
<el-input v-model="isPauseUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="记录时间:" label-position="left">
<el-input v-model="recordTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否纳入国际频率总表:" label-position="left">
<el-input v-model="IsInTheInternationalFrequencyList" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最早监管日期:" label-position="left">
<el-input v-model="earliestRegulatoryDate" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否恢复使用:" label-position="left">
<el-input v-model="isRestoreUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最新相关 BR IFIC 发布日期:" label-position="left">
<el-input v-model="BFIFICdate" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">详情</div>
</template>
<el-form label-width="155px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="SNS Notice ID:" label-position="left">
<el-input disabled v-model="snsId" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主管部门:" label-position="left">
<el-input disabled v-model="department" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input disabled v-model="targetName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划/非计划类型:" label-position="left">
<el-input disabled v-model="planType" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否为同步:" label-position="left">
<el-input disabled v-model="syncType" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="同步位置:" label-position="left">
<el-input disabled v-model="syncPosition" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input disabled v-model="perigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input disabled v-model="apogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低海拔:" label-position="left">
<el-input disabled v-model="lowestAltitude" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="参考主体:" label-position="left">
<el-input disabled v-model="referenceSubject" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最低频率:" label-position="left">
<el-input disabled v-model="lowestFrequency" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最高频率:" label-position="left">
<el-input disabled v-model="highestFrequency" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="状态:" label-position="left">
<el-input v-model="status" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有效期:" label-position="left">
<el-input disabled v-model="validityPeriod" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="最早使用日期:" label-position="left">
<el-input disabled v-model="earliestUsageDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否确认使用:" label-position="left">
<el-input disabled v-model="isUsed" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否暂停使用:" label-position="left">
<el-input disabled v-model="isPauseUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="记录时间:" label-position="left">
<el-input disabled v-model="recordTime" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否纳入国际频率总表:" label-position="left">
<el-input disabled v-model="IsInTheInternationalFrequencyList" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最早监管日期:" label-position="left">
<el-input disabled v-model="earliestRegulatoryDate" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否恢复使用:" label-position="left">
<el-input disabled v-model="isRestoreUsed" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最新相关 BR IFIC 发布日期:" label-position="left">
<el-input disabled v-model="BFIFICdate" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
<el-col :span="24">
<el-form-item label="最新相关 BR IFIC 发布日期:" label-position="top">
<el-input v-model="BRIFICdate" />
</el-form-item>
</el-col>
</el-row> -->
</div>
</el-form>
</el-dialog>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" />
</div>
</el-form>
</el-dialog>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" />
</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 { getItuList, getItuDetail, deleteItuData } 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 { getItuList, getItuDetail, deleteItuData } 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';
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 searchTargetName = ref('')
const searchTimeValue = ref('')
const searchTargetId = ref('')
const showDeleteDialog = ref(false)
const detailVisibleValue = ref(false)
zhCn.el.pagination.total = "共 `{total} 条`";
zhCn.el.pagination.goto = "跳至";
zhCn.el.pagination.pagesize = "条/页";
zhCn.el.pagination.pageClassifier = "页";
const searchTargetName = ref("");
const searchTimeValue = ref("");
const searchTargetId = ref("");
const showDeleteDialog = ref(false);
const detailVisibleValue = ref(false);
// SNS Notice ID
const snsId = ref('')
const snsId = ref("");
// 主管部门
const department = ref('')
const department = ref("");
// 目标名称
const targetName = ref('')
const targetName = ref("");
// 计划/非计划类型
const planType = ref('')
const planType = ref("");
// 是否为同步
const syncType = ref('')
const syncType = ref("");
// 同步位置
const syncPosition = ref('')
const syncPosition = ref("");
// 近地点
const perigee = ref('')
const perigee = ref("");
// 远地点
const apogee = ref('')
const apogee = ref("");
// 最低海拔
const lowestAltitude = ref('')
const lowestAltitude = ref("");
// 参考主体
const referenceSubject = ref('')
const referenceSubject = ref("");
// 最低频率
const lowestFrequency = ref('')
const lowestFrequency = ref("");
// 最高频率
const highestFrequency = ref('')
const highestFrequency = ref("");
// 状态
const status = ref('')
const status = ref("");
// 有效期
const validityPeriod = ref('')
const validityPeriod = ref("");
// 最早使用日期
const earliestUsageDate = ref('')
const earliestUsageDate = ref("");
// 是否确认使用
const isUsed = ref('')
const isUsed = ref("");
// 是否暂停使用
const isPauseUsed = ref('')
const isPauseUsed = ref("");
// 记录时间
const recordTime = ref('')
const recordTime = ref("");
// 是否纳入国际频率总表
const IsInTheInternationalFrequencyList = ref('')
const IsInTheInternationalFrequencyList = ref("");
// 最早监管日期
const earliestRegulatoryDate = ref('')
const earliestRegulatoryDate = ref("");
// 是否恢复使用
const isRestoreUsed = ref('')
const isRestoreUsed = ref("");
// 有效期卫星网络旧名称
const validityPeriodSatelliteNetworkOldName = ref('')
const validityPeriodSatelliteNetworkOldName = ref("");
// 最新相关 BR IFIC 发布日期
const BFIFICdate = ref('')
const tableData = ref([])
const BFIFICdate = ref("");
const tableData = ref([]);
const pageObj = ref({
total: 0,
pageSize: 10,
pageNo: 1
})
total: 0,
pageSize: 10,
pageNo: 1,
});
// 查看数据详情的方法
const handleDetails = async (id: any) => {
const res = await getItuDetail({ id: id._id })
console.log(res);
snsId.value = res.data.item.ntc_id
department.value = res.data.item.adm
targetName.value = res.data.identity.sat_name
planType.value = res.data.identity.plan_type
syncType.value = res.data.identity.ntc_type
syncPosition.value = res.data.identity.long_nom === null ? '无' : res.data.identity.long_nom
perigee.value = res.data.item.minPerigee === null ? '无' : res.data.item.minPerigee
apogee.value = res.data.item.maxApog === null ? '无' : res.data.item.maxApog
lowestAltitude.value = res.data.item.minAltitude === null ? '无' : res.data.item.minAltitude
referenceSubject.value = res.data.item.ref_body === null ? '无' : res.data.item.ref_body
lowestFrequency.value = res.data.item.freq_min === null ? '无' : res.data.item.freq_min
highestFrequency.value = res.data.item.freq_max === null ? '无' : res.data.item.freq_max
status.value = res.data.regulatory_status.active_status
validityPeriod.value = res.data.regulatory_status.prd_valid
earliestUsageDate.value = res.data.regulatory_status.d_reg_limit === null ? '无' : res.data.regulatory_status.d_reg_limit
isUsed.value = res.data.regulatory_status.f_biu_grps
isPauseUsed.value = res.data.regulatory_status.resumption_list
recordTime.value = res.data.crawl_time
IsInTheInternationalFrequencyList.value = res.data.regulatory_status.mifr
earliestRegulatoryDate.value = res.data.regulatory_status.d_inuse_list
isRestoreUsed.value = res.data.regulatory_status.resumption_list
validityPeriodSatelliteNetworkOldName.value = res.data.regulatory_status.old_satellite_network_name
BFIFICdate.value = res.data.regulatory_status.d_wic === null ? '无' : res.data.regulatory_status.d_wic
detailVisibleValue.value = true
}
const res = await getItuDetail({ id: id._id });
console.log(res);
snsId.value = res.data.item.ntc_id;
department.value = res.data.item.adm;
targetName.value = res.data.identity.sat_name;
planType.value = res.data.identity.plan_type;
syncType.value = res.data.identity.ntc_type;
syncPosition.value = res.data.identity.long_nom === null ? "无" : res.data.identity.long_nom;
perigee.value = res.data.item.minPerigee === null ? "无" : res.data.item.minPerigee;
apogee.value = res.data.item.maxApog === null ? "无" : res.data.item.maxApog;
lowestAltitude.value = res.data.item.minAltitude === null ? "无" : res.data.item.minAltitude;
referenceSubject.value = res.data.item.ref_body === null ? "无" : res.data.item.ref_body;
lowestFrequency.value = res.data.item.freq_min === null ? "无" : res.data.item.freq_min;
highestFrequency.value = res.data.item.freq_max === null ? "无" : res.data.item.freq_max;
status.value = res.data.regulatory_status.active_status;
validityPeriod.value = res.data.regulatory_status.prd_valid;
earliestUsageDate.value =
res.data.regulatory_status.d_reg_limit === null ? "无" : res.data.regulatory_status.d_reg_limit;
isUsed.value = res.data.regulatory_status.f_biu_grps;
isPauseUsed.value = res.data.regulatory_status.resumption_list;
recordTime.value = res.data.crawl_time;
IsInTheInternationalFrequencyList.value = res.data.regulatory_status.mifr;
earliestRegulatoryDate.value = res.data.regulatory_status.d_inuse_list;
isRestoreUsed.value = res.data.regulatory_status.resumption_list;
validityPeriodSatelliteNetworkOldName.value = res.data.regulatory_status.old_satellite_network_name;
BFIFICdate.value = res.data.regulatory_status.d_wic === null ? "无" : res.data.regulatory_status.d_wic;
detailVisibleValue.value = true;
};
// 获取itu数据列表的方法
const getData = async () => {
const res = await getItuList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
searchTargetName.value = ''
searchTargetId.value = ''
searchTimeValue.value = ''
pageObj.value.total = res.data.total
tableData.value = res.data.list
}
const res = await getItuList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize });
searchTargetName.value = "";
searchTargetId.value = "";
searchTimeValue.value = "";
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
console.log(res.data.list);
};
const handleClose = () => {
detailVisibleValue.value = false
}
detailVisibleValue.value = false;
};
const handleSearch = async () => {
if (searchTargetName.value === '' && searchTargetId.value === '' && searchTimeValue.value === '') {
ElMessage.warning('请输入搜索内容')
return
}
const res = await getItuList({ sat_name: searchTargetName.value, ntc_id: searchTargetId.value, times: searchTimeValue.value, page: pageObj.value.pageNo, size: pageObj.value.pageSize })
pageObj.value.total = res.data.total
tableData.value = res.data.list
}
if (searchTargetName.value === "" && searchTargetId.value === "" && searchTimeValue.value === "") {
ElMessage.warning("请输入搜索内容");
return;
}
const res = await getItuList({
sat_name: searchTargetName.value,
ntc_id: searchTargetId.value,
times: searchTimeValue.value,
page: pageObj.value.pageNo,
size: pageObj.value.pageSize,
});
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
};
onMounted(() => {
getData()
})
getData();
});
</script>
<style scoped lang="scss">
// 调整表单项间距
.detailForm {
// background-image: url("@/assets/picture/dialog1.png");
// background-size: 100% 100%;
// background-repeat: no-repeat;
.el-dialog-title {
font-size: 180px;
}
// background-image: url("@/assets/picture/dialog1.png");
// background-size: 100% 100%;
// background-repeat: no-repeat;
.el-dialog-title {
font-size: 180px;
}
.el-form-item {
margin-bottom: 20px !important;
}
.el-form-item {
margin-bottom: 20px !important;
}
}
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
.itu-table {
padding: 0 10px;
}
/* 表格样式 */
.formStyle {
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
}
/* 文字样式 */
.el-text {
color: #FFFFFF;
color: #ffffff;
}
</style>
<style>
.el-input {
--el-input-text-color: #FFFFFF;
--el-input-text-color: #ffffff;
}
/* 修改el选择器的样式 */
.el-select__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 删除el选择器选中时的边框 */
.is-hovering {
box-shadow: none !important;
box-shadow: none !important;
}
/* 修改el输入框的样式 */
.el-input__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 修改el下拉框的背景颜色 */
.el-select-dropdown {
background-color: #1d5484;
background-color: #1d5484;
}
/* 修改el下拉框选项的字体颜色 */
.el-select-dropdown__item {
color: #FFFFFF;
color: #ffffff;
}
/* 修改el下拉框选项选中时的文字颜色 */
.el-select-dropdown__item:hover {
color: #409eff;
color: #409eff;
}
/* 修改el日期选择器的边框为none */
.el-date-editor {
--el-input-border-color: none
--el-input-border-color: none;
}
.el-button:focus {
outline: none;
outline: none;
}
</style>
\ No newline at end of file
</style>
<template>
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请输入" style="width: 180px" v-model="searchTargetName" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">获取时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker v-model="timeValue" type="datetimerange" format="YYYY-MM-DD HH:mm:ss"
start-placeholder="开始时间" end-placeholder="结束时间" date-format="YYYY/MM/DD ddd"
time-format="A hh:mm:ss" style="width: 330px" value-format="YYYY-MM-DD HH:mm:ss" />
</el-config-provider>
</el-form-item>
<el-form-item>
<el-text class="mx-1">NORAD CAT ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 170.5px" v-model="noradCatId" />
</el-form-item>
<!-- <el-form-item>
<div class="text-left p-4 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">目标名称:</el-text>
</el-form-item>
<el-form-item>
<div>
<el-input placeholder="请输入" style="width: 180px" v-model="searchTargetName" />
</div>
</el-form-item>
<el-form-item>
<el-text class="mx-1">获取时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker
v-model="timeValue"
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
start-placeholder="开始时间"
end-placeholder="结束时间"
date-format="YYYY/MM/DD ddd"
time-format="A hh:mm:ss"
style="width: 200px"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-config-provider>
</el-form-item>
<el-form-item>
<el-text class="mx-1">NORAD CAT ID:</el-text>
</el-form-item>
<el-form-item>
<el-input placeholder="请输入" style="width: 170.5px" v-model="noradCatId" />
</el-form-item>
<!-- <el-form-item>
<el-space>
<el-button type="primary" @click="handleExport">导出最近</el-button>
</el-space>
</el-form-item> -->
<el-form-item>
<el-space>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<el-form-item>
<el-space>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<div class="m-t-5" />
<div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '45.5px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="data[0].NORAD_CAT_ID" label="Norad Cat ID" show-overflow-tooltip />
<el-table-column property="data[0].OBJECT_NAME" label="目标名称" show-overflow-tooltip />
<!-- <el-table-column property="intleds" label="INTLDES" show-overflow-tooltip /> -->
<el-table-column property="data[0].OBJECT_TYPE" label="类型" show-overflow-tooltip />
<el-table-column property="data[0].COUNTRY_CODE" label="所属国家" width="82" show-overflow-tooltip />
<!-- <el-table-column property="runningTime" label="运行时间" show-overflow-tooltip /> -->
<el-table-column property="data[0].SITE" label="SITE" show-overflow-tooltip />
<!-- <el-table-column property="failTime" label="失效时间" show-overflow-tooltip /> -->
<el-table-column property="data[0].PERIOD" label="周期" show-overflow-tooltip />
<el-table-column property="data[0].PERIAPSIS" label="近地点" show-overflow-tooltip />
<el-table-column property="data[0].APOAPSIS" label="远地点" show-overflow-tooltip />
<!-- <el-table-column property="incl" label="INCL" show-overflow-tooltip /> -->
<el-table-column property="data[0].RCS_SIZE" label="RCS" show-overflow-tooltip />
<el-table-column property="data[0].TLE_LINE0" label="TLE_LINE0" show-overflow-tooltip />
<el-table-column property="data[0].TLE_LINE1" label="TLE_LINE1" show-overflow-tooltip />
<el-table-column property="data[0].TLE_LINE2" label="TLE_LINE2" show-overflow-tooltip />
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" />
</div>
</div>
<div class="m-t-5" />
<div class="table-content">
<el-table
:data="tableData"
style="width: 100%"
border
:row-style="{ height: '45.5px' }"
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
>
<!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="data[0].NORAD_CAT_ID" label="Norad Cat ID" show-overflow-tooltip />
<el-table-column property="data[0].OBJECT_NAME" label="目标名称" show-overflow-tooltip />
<!-- <el-table-column property="intleds" label="INTLDES" show-overflow-tooltip /> -->
<el-table-column property="data[0].OBJECT_TYPE" label="类型" show-overflow-tooltip />
<el-table-column property="data[0].COUNTRY_CODE" label="所属国家" width="82" show-overflow-tooltip />
<!-- <el-table-column property="runningTime" label="运行时间" show-overflow-tooltip /> -->
<el-table-column property="data[0].SITE" label="SITE" show-overflow-tooltip />
<!-- <el-table-column property="failTime" label="失效时间" show-overflow-tooltip /> -->
<el-table-column property="data[0].PERIOD" label="周期" show-overflow-tooltip />
<el-table-column property="data[0].PERIAPSIS" label="近地点" show-overflow-tooltip />
<el-table-column property="data[0].APOAPSIS" label="远地点" show-overflow-tooltip />
<!-- <el-table-column property="incl" label="INCL" show-overflow-tooltip /> -->
<el-table-column property="data[0].RCS_SIZE" label="RCS" show-overflow-tooltip />
<el-table-column property="data[0].TLE_LINE0" label="TLE_LINE0" show-overflow-tooltip />
<el-table-column property="data[0].TLE_LINE1" label="TLE_LINE1" show-overflow-tooltip />
<el-table-column property="data[0].TLE_LINE2" label="TLE_LINE2" show-overflow-tooltip />
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)"> 详情 </el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getData"
/>
</div>
</div>
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">
详情
</div>
</template>
<el-form label-width="70px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="NoradCatID:" label-position="left">
<el-input v-model="NoradCatID" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="周期(min):" label-position="left">
<el-input v-model="period" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型:" label-position="left">
<el-input v-model="type" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
<div class="detailForm">
<el-dialog v-model="detailVisibleValue" center width="765px" align-center @close="handleClose" draggable>
<template #header>
<div class="text-center font-size-8">详情</div>
</template>
<el-form label-width="70px" size="small" class="px-4">
<div>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="NoradCatID:" label-position="left">
<el-input v-model="NoradCatID" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标名称:" label-position="left">
<el-input v-model="targetName" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="周期(min):" label-position="left">
<el-input v-model="period" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型:" label-position="left">
<el-input v-model="type" />
</el-form-item>
</el-col>
</el-row>
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="运行时间:" label-position="left">
<el-input v-model="workTime" />
......@@ -122,235 +136,245 @@
</el-form-item>
</el-col>
</el-row> -->
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="记录时间:" label-position="left">
<el-input v-model="recordTime" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属国家:" label-position="left">
<el-input v-model="belongCountry" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input v-model="perigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input v-model="apogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="RCS:" label-position="left">
<el-input v-model="rcs" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="SITE:" label-position="left">
<el-input v-model="site" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="TLE:" label-position="left">
<el-input type="textarea" :rows="3" v-model="tle" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" />
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="记录时间:" label-position="left">
<el-input v-model="recordTime" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属国家:" label-position="left">
<el-input v-model="belongCountry" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="近地点:" label-position="left">
<el-input v-model="perigee" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="远地点:" label-position="left">
<el-input v-model="apogee" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="RCS:" label-position="left">
<el-input v-model="rcs" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="SITE:" label-position="left">
<el-input v-model="site" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="TLE:" label-position="left">
<el-input type="textarea" :rows="3" v-model="tle" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-dialog>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" />
</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 { getStList, getStDetail, deleteStData } 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 { getStList, getStDetail, deleteStData } 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';
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 searchTargetName = ref('')
const noradCatId = ref('')
const showDeleteDialog = ref(false)
const timeValue = ref('')
const detailVisibleValue = ref(false)
zhCn.el.pagination.total = "共 `{total} 条`";
zhCn.el.pagination.goto = "跳至";
zhCn.el.pagination.pagesize = "条/页";
zhCn.el.pagination.pageClassifier = "页";
const searchTargetName = ref("");
const noradCatId = ref("");
const showDeleteDialog = ref(false);
const timeValue = ref("");
const detailVisibleValue = ref(false);
// NoradCatID
const NoradCatID = ref('')
const NoradCatID = ref("");
// 目标名称
const targetName = ref('')
const targetName = ref("");
// INTLDES
const intleds = ref('')
const intleds = ref("");
// 类型
const type = ref('')
const type = ref("");
// 记录时间
const recordTime = ref('')
const recordTime = ref("");
// 所属国家
const belongCountry = ref('')
const belongCountry = ref("");
// 近地点
const perigee = ref('')
const perigee = ref("");
// 远地点
const apogee = ref('')
const apogee = ref("");
// 周期
const period = ref('')
const period = ref("");
// INCL
const incl = ref('')
const incl = ref("");
// RCS
const rcs = ref('')
const rcs = ref("");
// SITE
const site = ref('')
const site = ref("");
// TLE
const tle = ref('')
const tle = ref("");
const tableData = ref([])
const tableData = ref([]);
const pageObj = ref({
total: 10,
pageSize: 10,
pageNo: 1
})
total: 10,
pageSize: 10,
pageNo: 1,
});
// 查看数据详情的方法
const handleDetails = async (row: any) => {
const res = await getStDetail({ id: row._id })
NoradCatID.value = res.data.data[0].NORAD_CAT_ID
targetName.value = res.data.data[0].OBJECT_NAME
type.value = res.data.data[0].OBJECT_TYPE
period.value = res.data.data[0].PERIOD
intleds.value = res.data.data[0].INTLDES
recordTime.value = res.data.data[0].CREATION_DATE
belongCountry.value = res.data.data[0].COUNTRY_CODE
perigee.value = res.data.data[0].PERIAPSIS
apogee.value = res.data.data[0].APOAPSIS
rcs.value = res.data.data[0].RCS_SIZE
site.value = res.data.data[0].SITE
tle.value = `${res.data.data[0].TLE_LINE0}
const res = await getStDetail({ id: row._id });
NoradCatID.value = res.data.data[0].NORAD_CAT_ID;
targetName.value = res.data.data[0].OBJECT_NAME;
type.value = res.data.data[0].OBJECT_TYPE;
period.value = res.data.data[0].PERIOD;
intleds.value = res.data.data[0].INTLDES;
recordTime.value = res.data.data[0].CREATION_DATE;
belongCountry.value = res.data.data[0].COUNTRY_CODE;
perigee.value = res.data.data[0].PERIAPSIS;
apogee.value = res.data.data[0].APOAPSIS;
rcs.value = res.data.data[0].RCS_SIZE;
site.value = res.data.data[0].SITE;
tle.value = `${res.data.data[0].TLE_LINE0}
${res.data.data[0].TLE_LINE1}
${res.data.data[0].TLE_LINE2}`
detailVisibleValue.value = true
}
${res.data.data[0].TLE_LINE2}`;
detailVisibleValue.value = true;
};
// 获取st数据列表的方法
const getData = async () => {
const res = await getStList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
pageObj.value.total = res.data.total
tableData.value = res.data.list
noradCatId.value = ''
searchTargetName.value = ''
timeValue.value = ''
}
const res = await getStList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize });
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
noradCatId.value = "";
searchTargetName.value = "";
timeValue.value = "";
};
const handleClose = () => {
detailVisibleValue.value = false
}
detailVisibleValue.value = false;
};
const handleSearch = async () => {
if (searchTargetName.value === '' && noradCatId.value === '' && timeValue.value === '') {
ElMessage.warning('请输入搜索内容')
return
}
const res = await getStList({ norad_cat_id: noradCatId.value, object_name: searchTargetName.value, times: timeValue.value, page: pageObj.value.pageNo, size: pageObj.value.pageSize })
tableData.value = res.data.list
pageObj.value.total = res.data.total
}
if (searchTargetName.value === "" && noradCatId.value === "" && timeValue.value === "") {
ElMessage.warning("请输入搜索内容");
return;
}
const res = await getStList({
norad_cat_id: noradCatId.value,
object_name: searchTargetName.value,
times: timeValue.value,
page: pageObj.value.pageNo,
size: pageObj.value.pageSize,
});
tableData.value = res.data.list;
pageObj.value.total = res.data.total;
};
onMounted(() => {
getData()
})
getData();
});
</script>
<style scoped lang="scss">
// 调整表单项间距
.detailForm {
.el-dialog-title {
font-size: 180px;
}
.el-dialog-title {
font-size: 180px;
}
.el-form-item {
margin-bottom: 30px !important;
}
.el-form-item {
margin-bottom: 30px !important;
}
}
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
/* 表格样式 */
.formStyle {
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
display: flex;
justify-content: space-around;
padding: 3px;
margin-top: 1%;
}
/* 文字样式 */
.el-text {
color: #FFFFFF;
color: #ffffff;
}
</style>
<style>
.el-textarea__inner {
color: #FFFFFF;
color: #ffffff;
}
.el-input {
--el-input-text-color: #FFFFFF;
--el-input-text-color: #ffffff;
}
/* 修改el选择器的样式 */
.el-select__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 删除el选择器选中时的边框 */
.is-hovering {
box-shadow: none !important;
box-shadow: none !important;
}
/* 修改el输入框的样式 */
.el-input__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 修改el下拉框的背景颜色 */
.el-select-dropdown {
background-color: #1d5484;
background-color: #1d252c;
}
/* 修改el下拉框选项的字体颜色 */
.el-select-dropdown__item {
color: #FFFFFF;
color: #ffffff;
}
/* 修改el下拉框选项选中时的文字颜色 */
.el-select-dropdown__item:hover {
color: #409eff;
color: #409eff;
}
/* 修改el日期选择器的边框为none */
.el-date-editor {
--el-input-border-color: none
--el-input-border-color: none;
}
.el-button:focus {
outline: none;
outline: none;
}
</style>
\ No newline at end of file
.table-contet {
padding: 0 10px;
}
</style>
<template>
<div>
<div class="backStyle" v-if="route.query.jump === 'yes'" @click="goToStatus" />
<div class="text-left p-4 ">
<div class="custom-style flex gap-4">
<el-segmented v-model="mode" :options="sizeOptions" style="margin-bottom: 1rem" size="default" />
<el-button type="primary" @click="handleExport">导出</el-button>
</div>
</div>
<!-- 综合数据页面组件 -->
<!-- <allDataTab v-if="mode === '综合数据'">
<div>
<div class="backStyle" v-if="route.query.jump === 'yes'" @click="goToStatus" />
<div class="segment-content">
<div class="custom-style flex gap-4">
<el-segmented v-model="mode" :options="sizeOptions" style="margin-bottom: 1rem" size="default" />
<el-button type="primary" @click="handleExport">导出</el-button>
</div>
</div>
<!-- 综合数据页面组件 -->
<!-- <allDataTab v-if="mode === '综合数据'">
</allDataTab> -->
<!-- DSN数据页面组件 -->
<dsnDataTab v-if="mode === 'DSN数据'">
</dsnDataTab>
<!-- ITU数据页面组件 -->
<ituDataTab v-if="mode === 'ITU数据'">
</ituDataTab>
<!-- ST数据页面组件 -->
<stDataTab v-if="mode === 'ST数据'">
</stDataTab>
<!-- ESA数据页面组件 -->
<esDataTab v-if="mode === 'ESA数据'">
</esDataTab>
</div>
<!-- DSN数据页面组件 -->
<dsnDataTab v-if="mode === 'DSN数据'"> </dsnDataTab>
<!-- ITU数据页面组件 -->
<ituDataTab v-if="mode === 'ITU数据'"> </ituDataTab>
<!-- ST数据页面组件 -->
<stDataTab v-if="mode === 'ST数据'"> </stDataTab>
<!-- ESA数据页面组件 -->
<esDataTab v-if="mode === 'ESA数据'"> </esDataTab>
</div>
<exportDialog v-model:dialogVisible="showDeleteDialog" @confirm="handleExportConfirm" />
<exportDialog v-model:dialogVisible="showDeleteDialog" @confirm="handleExportConfirm" />
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { useRoute } from 'vue-router'
import { useRouter } from 'vue-router'
import allDataTab from './components/allDataTab.vue'
import ituDataTab from './components/ituDataTab.vue'
import stDataTab from './components/stDataTab.vue'
import dsnDataTab from './components/dsnData/dsnTab.vue'
import esDataTab from './components/esDataTab.vue'
import exportDialog from '@/components/Export/index.vue'
import { genFileId } from 'element-plus'
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
import { ref, onMounted } from "vue";
import { useRoute } from "vue-router";
import { useRouter } from "vue-router";
import allDataTab from "./components/allDataTab.vue";
import ituDataTab from "./components/ituDataTab.vue";
import stDataTab from "./components/stDataTab.vue";
import dsnDataTab from "./components/dsnData/dsnTab.vue";
import esDataTab from "./components/esDataTab.vue";
import exportDialog from "@/components/Export/index.vue";
import { genFileId } from "element-plus";
import type { UploadInstance, UploadProps, UploadRawFile } from "element-plus";
const mode = ref('DSN数据')
const showDeleteDialog = ref(false)
const sizeOptions = ['DSN数据', 'ITU数据', 'ST数据', 'ESA数据']
const route = useRoute()
const router = useRouter()
const modeValue = ref<any>('数据展示')
const upload = ref<UploadInstance>()
const mode = ref("DSN数据");
const showDeleteDialog = ref(false);
const sizeOptions = ["DSN数据", "ITU数据", "ST数据", "ESA数据"];
const route = useRoute();
const router = useRouter();
const modeValue = ref<any>("数据展示");
const upload = ref<UploadInstance>();
const handleExceed: UploadProps['onExceed'] = (files) => {
upload.value!.clearFiles()
const file = files[0] as UploadRawFile
file.uid = genFileId()
upload.value!.handleStart(file)
}
const handleExceed: UploadProps["onExceed"] = (files) => {
upload.value!.clearFiles();
const file = files[0] as UploadRawFile;
file.uid = genFileId();
upload.value!.handleStart(file);
};
const submitUpload = () => {
upload.value!.submit()
}
upload.value!.submit();
};
const goToStatus = () => {
router.push({
path: '/osStatus/list',
})
}
router.push({
path: "/osStatus/list",
});
};
const handleExport = () => {
showDeleteDialog.value = true
}
const handleExportConfirm = () => {
}
showDeleteDialog.value = true;
};
const handleExportConfirm = () => {};
onMounted(() => {
if (route.query.mode) {
modeValue.value = route.query.mode
mode.value = modeValue.value
}
console.log(mode.value)
})
if (route.query.mode) {
modeValue.value = route.query.mode;
mode.value = modeValue.value;
}
console.log(mode.value);
});
</script>
<style scoped lang="scss">
.el-button:focus {
outline: none;
outline: none;
}
/* 文字样式 */
.el-text {
color: #FFFFFF;
color: #ffffff;
}
.backStyle {
background-image: url("@/assets/picture/back.png");
background-size: 100% 100%;
background-repeat: no-repeat;
height: 5vh;
width: 5%;
display: flex;
margin-left: 0.8%;
background-image: url("@/assets/picture/back.png");
background-size: 100% 100%;
background-repeat: no-repeat;
height: 5vh;
width: 5%;
display: flex;
margin-left: 0.8%;
}
.segment-content {
padding: 10px 10px 0 10px;
}
</style>
<template>
<div>
<div class="mt-20" />
<div>
<el-table :data="tableData" style="width: 100%" border :header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }" :row-style="{ height: '60px' }">
<!-- <el-table-column type="selection" width="40" height="40" /> -->
<el-table-column property="number" label="序号" type="index" width="80" />
<el-table-column property="spider" label="爬虫名称" show-overflow-tooltip />
<el-table-column label="查看任务">
<template #default="scope">
<el-button type="primary" plain @click="handleDetails(scope.row)">
任务
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" />
</div>
</div>
<div>
<el-card>
<div class="title">爬虫管理</div>
<div class="low-titme">Spider Manager</div>
<el-divider class="divider" />
</el-card>
<div class="table-content">
<el-table
:data="tableData"
style="width: 100%"
border
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
:row-style="{ height: '60px' }"
>
<!-- <el-table-column type="selection" width="40" height="40" /> -->
<el-table-column property="number" label="序号" type="index" width="80" />
<el-table-column property="spider" label="爬虫名称" show-overflow-tooltip />
<el-table-column label="查看任务">
<template #default="scope">
<el-button type="primary" plain @click="handleDetails(scope.row)"> 任务 </el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getData"
/>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import Pagination from '@/components/pagination/index.vue'
import { useRouter } from 'vue-router'
import { getSpiderList } from '@/api/system.ts'
const router = useRouter()
const tableData = ref([])
import { ref, onMounted } from "vue";
import Pagination from "@/components/pagination/index.vue";
import { useRouter } from "vue-router";
import { getSpiderList } from "@/api/system.ts";
const router = useRouter();
const tableData = ref([]);
const pageObj = ref({
total: 10,
pageSize: 10,
pageNo: 1
})
total: 10,
pageSize: 10,
pageNo: 1,
});
const handleDetails = (row: any) => {
// console.log(row);
router.push({
path: '/osTaskInformation/list',
query: {
jump: 'yes',
spiderType: row.spider,
page:'spiderManager'
}
})
}
// console.log(row);
router.push({
path: "/osTaskInformation/list",
query: {
jump: "yes",
spiderType: row.spider,
page: "spiderManager",
},
});
};
// 获取爬虫数据的方法
const getData = async () => {
const res = await getSpiderList({scrapydServerId:'1',project:'spiders'})
tableData.value = res.data
}
const res = await getSpiderList({ scrapydServerId: "1", project: "spiders" });
tableData.value = res.data;
};
onMounted(() => {
getData()
})
getData();
});
</script>
<style scoped>
/* 去除按钮边框 */
.el-button:focus {
outline: none;
outline: none;
}
.table-content {
padding: 10px;
}
.title {
text-align: left;
font-size: 18px;
font-weight: 500;
color: white;
}
.low-titme {
color: #ccc;
text-align: left;
margin-left: 20px;
}
.divider {
margin-top: 15px;
}
</style>
<template>
<div class="flex gap-10">
<span class="textStyle">数据统计</span>
<div class="dataCard" @click="goToAllDataPage">
<div class="titleStyle">
<span>数据统计</span>
</div>
<div class="wordStyle">
<span>总数据量: {{ totalDataNumber }}</span>
</div>
<div class="wordStyle">
<span>采集的页面数量: {{ totalPageNumber }}</span>
</div>
<div class="wordStyle">
<span>采集的目标数量: {{ totalTargetNumber }}</span>
</div>
</div>
<div class="dataCard" @click="goToTaskRecordPage">
<div class="titleStyle">
<span>任务执行统计</span>
</div>
<div class="wordStyle">
<span>任务执行成功统计: {{ successTask }}</span>
</div>
<div class="wordStyle">
<span>任务执行失败统计: {{ failTask }}</span>
</div>
<div class="wordStyle">
<span>任务异常数统计: {{ unusualTask }}</span>
</div>
</div>
<div class="dataCard">
<div class="titleStyle">
<span>性能统计</span>
</div>
<div class="wordStyle">
<span>平均成功率: {{ speed }}</span>
</div>
<div class="wordStyle">
<span>平均错误率: {{ errorRate }}</span>
</div>
<div class="wordStyle">
<span>平均异常率: {{ unusualRate }}</span>
</div>
</div>
</div>
<div class="flex gap-10">
<span class="textStyle">数据统计</span>
<div class="dataCard" @click="goToAllDataPage">
<div class="titleStyle">
<span>数据统计</span>
</div>
<div class="wordStyle">
<span>总数据量:</span>
<span class="total-num">{{ totalDataNumber !== "" ? formatExactLargeNum(totalDataNumber) : "加载中..." }}</span>
</div>
<div class="wordStyle">
<span>采集的页面数量:</span>
<span class="total-num">
{{ totalPageNumber !== "" ? formatExactLargeNum(totalPageNumber) : "加载中..." }}</span
>
</div>
<div class="wordStyle">
<span>采集的目标数量:</span>
<span class="total-num">
{{ totalTargetNumber !== "" ? formatExactLargeNum(totalTargetNumber) : "加载中..." }}</span
>
</div>
</div>
<div class="dataCard" @click="goToTaskRecordPage">
<div class="titleStyle">
<span>任务执行统计</span>
</div>
<div class="wordStyle">
<span>任务执行成功统计:</span>
<span class="total-num">{{ successTask !== "" ? formatExactLargeNum(successTask) : "加载中..." }}</span>
</div>
<div class="wordStyle">
<span>任务执行失败统计:</span>
<span class="total-num">{{ failTask !== "" ? formatExactLargeNum(failTask) : "加载中..." }}</span>
</div>
<div class="wordStyle">
<span>任务异常数统计:</span>
<span class="total-num">{{ unusualTask !== "" ? formatExactLargeNum(unusualTask) : "加载中..." }}</span>
</div>
</div>
<div class="dataCard">
<div class="titleStyle">
<span>性能统计</span>
</div>
<div class="wordStyle">
<span>平均成功率:</span>
<span class="total-num"> {{ speed !== "" ? speed : "加载中..." }}</span>
</div>
<div class="wordStyle">
<span>平均错误率: </span>
<span class="total-num">{{ errorRate !== "" ? errorRate : "加载中..." }}</span>
</div>
<div class="wordStyle">
<span>平均异常率:</span>
<span class="total-num">{{ unusualRate !== "" ? unusualRate : "加载中..." }}</span>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { useRouter } from 'vue-router';
import { getStatsDataList, getSpiderTaskList, getPerformanceList } from '@/api/staticData';
import { onMounted, ref } from 'vue';
import { useRouter } from "vue-router";
import { getStatsDataList, getSpiderTaskList, getPerformanceList } from "@/api/staticData";
import { onMounted, ref, watch } from "vue";
import formatExactLargeNum from "@/utils/formatExactLargeNum";
const router = useRouter()
const totalDataNumber = ref('')
const totalPageNumber = ref('')
const totalTargetNumber = ref('')
const successTask = ref('')
const failTask = ref('')
const unusualTask = ref('')
const speed = ref('')
const errorRate = ref('')
const unusualRate = ref('')
const router = useRouter();
const totalDataNumber = ref("");
const totalPageNumber = ref("");
const totalTargetNumber = ref("");
const successTask = ref("");
const failTask = ref("");
const unusualTask = ref("");
const speed = ref("");
const errorRate = ref("");
const unusualRate = ref("");
const goToAllDataPage = () => {
router.push({
path: '/osDataDisplay/list',
query: {
jump: 'yes',
mode: 'DSN数据'
}
})
}
router.push({
path: "/osDataDisplay/list",
query: {
jump: "yes",
mode: "DSN数据",
},
});
};
const goToTaskRecordPage = () => {
router.push({
path: '/osTaskRecord/list',
query: {
jump: 'yes',
mode: '状态监控'
}
})
}
router.push({
path: "/osTaskRecord/list",
query: {
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;
};
onMounted(() => {
getData();
})
getData();
});
</script>
<style lang="scss" scoped>
.dataCard {
background-image: url("@/assets/picture/box2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
// background: #c6ebfc;
// border: 1.5px solid rgb(193, 188, 188);
width: 360px;
height: 100%;
border-radius: 5px;
background-image: url("@/assets/picture/box2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
// background: #c6ebfc;
// border: 1.5px solid rgb(193, 188, 188);
width: 360px;
height: 100%;
border-radius: 5px;
}
.titleStyle {
font-size: 30px;
margin-top: 5%;
color: #FFFFFF;
font-size: 20px;
margin-top: 5%;
color: #ffffff;
}
.wordStyle {
font-size: 20px;
color: #FFFFFF;
margin-top: 2%;
font-size: 18px;
color: #ffffff;
margin-top: 2%;
display: flex;
margin-left: 15px;
display: flex;
justify-content: space-between;
}
.textStyle {
writing-mode: vertical-lr;
font-size: 26px;
letter-spacing: 3px;
margin-left: 0.5%;
color: #FFFFFF;
// display: flex;
writing-mode: vertical-lr;
font-size: 26px;
letter-spacing: 3px;
margin-left: 0.5%;
color: #ffffff;
font-weight: 500;
// display: flex;
}
.total-num {
margin-right: 30px;
color: skyblue;
}
</style>
<template>
<div class="flex gap-10">
<span class="textStyle">任务统计</span>
<div class="dataCard" @click="goToDSNTaskRecordPage">
<div class="titleStyle">
<span>DSN爬取任务</span>
</div>
<div class="wordStyle">
<span>DSN爬虫任务数: {{ dsnTotalTaskNumber }} </span>
</div>
<div class="wordStyle">
<span>任务执行成功统计: {{ dsnTaskSuccessNumber }} </span>
</div>
<div class="wordStyle">
<span>任务执行失败统计: {{ dsnTaskFailNumber }} </span>
</div>
<div class="wordStyle">
<span>错误率: {{ dsnErrorRate }} </span>
</div>
</div>
<div class="dataCard" @click="goToITUTaskRecordPage">
<div class="titleStyle">
<span>ITU爬取任务</span>
</div>
<div class="wordStyle">
<span>ITU爬虫任务数: {{ ituTotalTaskNumber }} </span>
</div>
<div class="wordStyle">
<span>任务执行成功统计: {{ ituTaskSuccessNumber }} </span>
</div>
<div class="wordStyle">
<span>任务执行失败统计: {{ ituTaskFailNumber }} </span>
</div>
<div class="wordStyle">
<span>错误率: {{ ituErrorRate }} </span>
</div>
</div>
<div class="dataCard" @click="goToSTTaskRecordPage">
<div class="titleStyle">
<span>ST爬取任务</span>
</div>
<div class="wordStyle">
<span>ST爬虫任务数: {{ stTotalTaskNumber }} </span>
</div>
<div class="wordStyle">
<span>任务执行成功统计: {{ stTaskSuccessNumber }} </span>
</div>
<div class="wordStyle">
<span>采集速度: {{ stTaskFailNumber }} </span>
</div>
<div class="wordStyle">
<span>错误率: {{ stErrorRate }} </span>
</div>
</div>
</div>
<div class="flex gap-10">
<span class="textStyle">任务统计</span>
<div class="dataCard" @click="goToDSNTaskRecordPage">
<div class="titleStyle">
<span>DSN爬取任务</span>
</div>
<div class="wordStyle">
<span>DSN爬虫任务数:</span>
<span class="total-num">{{
dsnTotalTaskNumber !== "" ? formatExactLargeNum(dsnTotalTaskNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>任务执行成功统计:</span>
<span class="total-num">{{
dsnTaskSuccessNumber !== "" ? formatExactLargeNum(dsnTaskSuccessNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>任务执行失败统计:</span>
<span class="total-num">{{
dsnTaskFailNumber !== "" ? formatExactLargeNum(dsnTaskFailNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>错误率: {{ dsnErrorRate }} </span>
<span class="total-num">{{ dsnErrorRate !== "" ? dsnErrorRate : "加载中..." }}</span>
</div>
</div>
<div class="dataCard" @click="goToITUTaskRecordPage">
<div class="titleStyle">
<span>ITU爬取任务</span>
</div>
<div class="wordStyle">
<span>ITU爬虫任务数:</span>
<span class="total-num">{{
ituTotalTaskNumber !== "" ? formatExactLargeNum(ituTotalTaskNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>任务执行成功统计:</span>
<span class="total-num">{{
ituTaskSuccessNumber !== "" ? formatExactLargeNum(ituTaskSuccessNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>任务执行失败统计:</span>
<span class="total-num">{{
ituTaskFailNumber !== "" ? formatExactLargeNum(ituTaskFailNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>错误率:</span>
<span class="total-num">{{ ituErrorRate !== "" ? ituErrorRate : "加载中..." }}</span>
</div>
</div>
<div class="dataCard" @click="goToSTTaskRecordPage">
<div class="titleStyle">
<span>ST爬取任务</span>
</div>
<div class="wordStyle">
<span>ST爬虫任务数:</span>
<span class="total-num">{{
stTotalTaskNumber !== "" ? formatExactLargeNum(stTotalTaskNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>任务执行成功统计:</span>
<span class="total-num">{{
stTaskSuccessNumber !== "" ? formatExactLargeNum(stTaskSuccessNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>采集速度:</span>
<span class="total-num">{{
stTaskFailNumber !== "" ? formatExactLargeNum(stTaskFailNumber) : "加载中..."
}}</span>
</div>
<div class="wordStyle">
<span>错误率:</span>
<span class="total-num">{{ stErrorRate !== "" ? stErrorRate : "加载中..." }}</span>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { useRouter } from 'vue-router'
import { getAllSpiderTaskStatistics } from '@/api/staticData';
import { onMounted,ref } from 'vue';
import { getSpiderTaskList } from '@/api/spiderTask'
import { useRouter } from "vue-router";
import { getAllSpiderTaskStatistics } from "@/api/staticData";
import { onMounted, ref } from "vue";
import { getSpiderTaskList } from "@/api/spiderTask";
import formatExactLargeNum from "@/utils/formatExactLargeNum";
const router = useRouter()
const dsnTotalTaskNumber = ref('')
const dsnTaskSuccessNumber = ref('')
const dsnTaskFailNumber = ref('')
const dsnErrorRate = ref('')
const ituTotalTaskNumber = ref('')
const ituTaskSuccessNumber = ref('')
const ituTaskFailNumber = ref('')
const ituErrorRate = ref('')
const stTotalTaskNumber = ref('')
const stTaskSuccessNumber = ref('')
const stTaskFailNumber = ref('')
const stErrorRate = ref('')
const router = useRouter();
const dsnTotalTaskNumber = ref("");
const dsnTaskSuccessNumber = ref("");
const dsnTaskFailNumber = ref("");
const dsnErrorRate = ref("");
const ituTotalTaskNumber = ref("");
const ituTaskSuccessNumber = ref("");
const ituTaskFailNumber = ref("");
const ituErrorRate = ref("");
const stTotalTaskNumber = ref("");
const stTaskSuccessNumber = ref("");
const stTaskFailNumber = ref("");
const stErrorRate = ref("");
const goToDSNTaskRecordPage = () => {
router.push({
path: '/osTaskInformation/list',
query: {
spiderType: 'dsn_now',
jump: 'yes',
page: 'statusMonitor'
}
})
}
router.push({
path: "/osTaskInformation/list",
query: {
spiderType: "dsn_now",
jump: "yes",
page: "statusMonitor",
},
});
};
const goToITUTaskRecordPage = () => {
router.push({
path: '/osTaskInformation/list',
query: {
spiderType: 'itu_space_explorer',
jump: 'yes',
page: 'statusMonitor'
}
})
}
router.push({
path: "/osTaskInformation/list",
query: {
spiderType: "itu_space_explorer",
jump: "yes",
page: "statusMonitor",
},
});
};
const goToSTTaskRecordPage = () => {
router.push({
path: '/osTaskInformation/list',
query: {
spiderType: 'api_spider',
jump: 'yes',
page: 'statusMonitor'
}
})
}
router.push({
path: "/osTaskInformation/list",
query: {
spiderType: "api_spider",
jump: "yes",
page: "statusMonitor",
},
});
};
// 获取任务统计数据的方法
const getData = async () => {
const res = await getAllSpiderTaskStatistics({})
const dsnTask = await getSpiderTaskList({ spiders: 'dsn_now' })
const ituTask = await getSpiderTaskList({ spiders: 'itu_space_explorer' })
const stTask = await getSpiderTaskList({ spiders: 'api_spider' })
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
}
const res = await getAllSpiderTaskStatistics({});
const dsnTask = await getSpiderTaskList({ spiders: "dsn_now" });
const ituTask = await getSpiderTaskList({ spiders: "itu_space_explorer" });
const stTask = await getSpiderTaskList({ spiders: "api_spider" });
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;
};
onMounted(() => {
getData()
})
getData();
});
</script>
<style lang="scss" scoped>
.dataCard {
background-image: url("@/assets/picture/box2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
// background: #c6ebfc;
// border: 1.5px solid rgb(193, 188, 188);
width: 360px;
height: 100%;
border-radius: 5px;
background-image: url("@/assets/picture/box2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
// background: #c6ebfc;
// border: 1.5px solid rgb(193, 188, 188);
width: 360px;
height: 100%;
border-radius: 5px;
}
.titleStyle {
font-size: 30px;
margin-top: 5%;
color: #FFFFFF;
font-size: 20px;
margin-top: 5%;
color: #ffffff;
}
.wordStyle {
font-size: 20px;
color: #FFFFFF;
margin-top: 2%;
font-size: 18px;
color: #ffffff;
margin-top: 2%;
display: flex;
margin-left: 15px;
display: flex;
justify-content: space-between;
}
.textStyle {
writing-mode: vertical-lr;
font-size: 26px;
letter-spacing: 3px;
margin-left: 0.5%;
color: #FFFFFF;
// display: flex;
writing-mode: vertical-lr;
font-size: 26px;
letter-spacing: 3px;
margin-left: 0.5%;
color: #ffffff;
// display: flex;
}
.total-num {
margin-right: 30px;
color: skyblue;
}
</style>
......@@ -2,7 +2,7 @@
<div class="sys-content">
<el-card>
<div class="title">系统管理</div>
<div class="low-titme">System Admin</div>
<div class="low-titme">System Manager</div>
<el-divider class="divider" />
<div class="btns">
<el-button test-element="userSystem-AddUser" type="primary" plain @click="openAddUserDialog"
......@@ -11,45 +11,47 @@
<el-button type="danger" plain @click="handleBatchDelete">批量删除</el-button>
</div>
</el-card>
<el-table
:data="tableData"
style="width: 100%"
border
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
:row-style="{ height: '58px' }"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="40" />
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="username" label="用户账号" show-overflow-tooltip />
<el-table-column property="nickname" label="用户名称" show-overflow-tooltip />
<el-table-column property="role" label="用户角色" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.role == 1 ? "管理员" : "普通用户" }}
</template>
</el-table-column>
<el-table-column property="status" label="用户状态" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.status ? "启用" : "停用" }}
</template>
</el-table-column>
<el-table-column property="create_time" label="创建时间" width="280" show-overflow-tooltip />
<el-table-column label="操作" width="220">
<template #default="scope">
<el-button type="primary" plain @click="handleEdit(scope.row)" id="editUser"> 编辑 </el-button>
<el-button type="danger" plain @click="handleDelete(scope.row)"> 删除 </el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getUserListData"
/>
<div class="table-content">
<el-table
:data="tableData"
border
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
:row-style="{ height: '58px' }"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="40" />
<el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="username" label="用户账号" show-overflow-tooltip />
<el-table-column property="nickname" label="用户名称" show-overflow-tooltip />
<el-table-column property="role" label="用户角色" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.role == 1 ? "管理员" : "普通用户" }}
</template>
</el-table-column>
<el-table-column property="status" label="用户状态" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.status ? "启用" : "停用" }}
</template>
</el-table-column>
<el-table-column property="create_time" label="创建时间" width="280" show-overflow-tooltip />
<el-table-column label="操作" width="220">
<template #default="scope">
<el-button type="primary" plain @click="handleEdit(scope.row)" id="editUser"> 编辑 </el-button>
<el-button type="danger" plain @click="handleDelete(scope.row)"> 删除 </el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getUserListData"
/>
</div>
</div>
<!-- 删除弹窗组件 -->
<deleteDialog
v-model:dialogVisible="showDeleteDialog"
......@@ -163,9 +165,6 @@ onMounted(async () => {
.el-button:focus {
outline: none;
}
.sys-content {
padding: 10px;
}
.title {
text-align: left;
font-size: 18px;
......@@ -204,15 +203,7 @@ onMounted(async () => {
box-shadow: none;
}
/* 卡片外层容器透明 */
.el-card {
background-color: transparent !important;
border: none; /* 可选:去除边框 */
}
/* 卡片内容区域透明 */
.el-card__body {
background-color: transparent !important;
padding: 16px; /* 保持默认内边距,可按需调整 */
.table-content {
padding: 0 10px;
}
</style>
......@@ -37,7 +37,7 @@
</div>
</div>
<div class="cardStyle">
<el-row>
<el-row v-loading="taskList.length == 0" element-loading-background="rgba(48, 65, 86, 0.7)">
<div class="taskCard p-6" v-for="task in taskList" :key="task.taskId">
<div class="taskContent">
<div>
......@@ -70,21 +70,28 @@
<div class="wordStyle">
<el-form-item class="form-item">
<el-space>
<span class="wordStyle">执行频率: {{ parseCronExpression(task.kwargs.cron) }} </span>
<span class="wordStyle"
>执行频率:
<span style="color: skyblue">{{ parseCronExpression(task.kwargs.cron) }} </span>
</span>
</el-space>
</el-form-item>
</div>
<div class="wordStyle">
<el-form-item class="form-item">
<el-space>
<span class="wordStyle">执行次数: {{ task.count }} </span>
<span class="wordStyle"
>执行次数: <span style="color: skyblue">{{ formatExactLargeNum(task.count) }}</span>
</span>
</el-space>
</el-form-item>
</div>
<div class="wordStyle">
<el-form-item class="form-item">
<el-space>
<span class="wordStyle">所属爬虫: {{ task.kwargs.spider }}</span>
<span class="wordStyle"
>所属爬虫: <span style="color: skyblue"> {{ task.kwargs.spider }}</span></span
>
</el-space>
</el-form-item>
</div>
......@@ -117,16 +124,16 @@
</template>
<script lang="ts" setup>
import { ref, onMounted, watch } from "vue";
import { ref, onMounted } from "vue";
import { useRouter } from "vue-router";
import addTaskDialog from "./addTaskDialog.vue";
import { getSpiderTaskList, resumeSpiderTask, pauseSpiderTask, getTaskCount } from "@/api/spiderTask";
import { DeleteMode } from "@/components/Delete/enum.ts";
import { AddMode } from "./enum";
import deleteDialog from "./deleteDialog.vue";
import { CronExpressionParser } from "cron-parser";
import { ElMessage } from "element-plus";
import { getSpiderList } from "@/api/system.ts";
import formatExactLargeNum from "@/utils/formatExactLargeNum";
const props = defineProps({
spiderType: {
......
<template>
<div>
<div class="backStyle" v-if="route.query.jump === 'yes'" @click="goToStatus" />
<div class="m-t-7" />
<div class="text-left p-6 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker v-model="timeValue" type="datetimerange" start-placeholder="开始时间"
end-placeholder="结束时间" format="YYYY-MM-DD HH:mm:ss" date-format="YYYY/MM/DD ddd"
time-format="A hh:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
</el-config-provider>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="searchData">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<div class="m-t-10" />
<div>
<el-table :data="tableData" style="width: 100%" border :header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }">
<el-table-column property="number" label="序号" width="55" type="index" />
<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">
{{ '已完成' }}
</template>
</el-table-column>
<el-table-column label="错误消息" show-overflow-tooltip>
<!-- 当错误消息为空时默认值为'-' -->
<template #default="scope">
{{ 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 }}
</template>
</el-table-column>
<el-table-column property="create_time" label="调度时间" width="200" show-overflow-tooltip />
</el-table>
</div>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" v-model:pagerCount="pageObj.pagerCount" />
</div>
</div>
<div>
<div class="backStyle" v-if="route.query.jump === 'yes'" @click="goToStatus" />
<div class="m-t-7" />
<div class="text-left p-6 toolbarStyle">
<div class="formStyle">
<el-form inline>
<el-form-item>
<el-text class="mx-1">时间:</el-text>
</el-form-item>
<el-form-item>
<el-config-provider :locale="zhCn">
<el-date-picker
v-model="timeValue"
type="datetimerange"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss"
date-format="YYYY/MM/DD ddd"
time-format="A hh:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-config-provider>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary" @click="searchData">查询</el-button>
<el-button type="primary" @click="getData">重置表格</el-button>
</el-space>
</el-form-item>
</el-form>
</div>
</div>
<div class="m-t-10" />
<div class="table-content">
<div>
<el-table
v-loading="tableData.length == 0"
element-loading-background="rgba(48, 65, 86, 0.7)"
:data="tableData"
style="width: 100%"
border
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
>
<el-table-column property="number" label="序号" width="55" type="index" />
<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">
{{ "已完成" }}
</template>
</el-table-column>
<el-table-column label="错误消息" show-overflow-tooltip>
<!-- 当错误消息为空时默认值为'-' -->
<template #default="scope">
{{ 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 }}
</template>
</el-table-column>
<el-table-column property="create_time" label="调度时间" width="200" show-overflow-tooltip />
</el-table>
</div>
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4">
<Pagination
:total="pageObj.total"
v-model:page="pageObj.pageNo"
v-model:limit="pageObj.pageSize"
@pagination="getData"
v-model:pagerCount="pageObj.pagerCount"
/>
</div>
</div>
</div>
</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 { 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";
// 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()
const taskValue = ref('')
const timeValue = ref('')
zhCn.el.pagination.total = "共 `{total} 条`";
zhCn.el.pagination.goto = "跳至";
zhCn.el.pagination.pagesize = "条/页";
zhCn.el.pagination.pageClassifier = "页";
const route = useRoute();
const router = useRouter();
const taskValue = ref("");
const timeValue = ref("");
const taskOptions = [
{
value: 'task1',
label: 'sk网',
},
{
value: 'task2',
label: 'nasa网',
},
{
value: 'task3',
label: '网',
},
]
const tableData = ref([])
{
value: "task1",
label: "sk网",
},
{
value: "task2",
label: "nasa网",
},
{
value: "task3",
label: "网",
},
];
const tableData = ref([]);
const pageObj = ref({
total: 10,
pageSize: 10,
pageNo: 1,
pagerCount: 5,
})
total: 10,
pageSize: 10,
pageNo: 1,
pagerCount: 5,
});
// 前往运行日志,暂时不要
// const handleDetails = (row: any) => {
// console.log(row);
......@@ -111,113 +131,122 @@ const pageObj = ref({
// })
// }
const goToStatus = () => {
if (route.query.mode === '状态监控') {
router.push({
path: '/osStatus/list',
})
} else {
router.push({
path: '/osTaskInformation/list',
})
}
}
if (route.query.mode === "状态监控") {
router.push({
path: "/osStatus/list",
});
} else {
router.push({
path: "/osTaskInformation/list",
});
}
};
// 获取任务执行记录列表
const getData = async () => {
const res = await getSpiderTaskRecord({ page: pageObj.value.pageNo, size: pageObj.value.pageSize, status: 'total' })
pageObj.value.total = res.data.total
tableData.value = res.data.list
}
const res = await getSpiderTaskRecord({ page: pageObj.value.pageNo, size: pageObj.value.pageSize, status: "total" });
pageObj.value.total = res.data.total;
tableData.value = res.data.list;
};
// 数据的方法
const searchData = async () => {
if (!timeValue.value) {
ElMessage.warning('请先选择时间段')
return
}
let resTime = []
const startTime = timeValue.value[0]
const endTime = timeValue.value[1]
resTime.push(startTime)
resTime.push(endTime)
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
}
if (!timeValue.value) {
ElMessage.warning("请先选择时间段");
return;
}
let resTime = [];
const startTime = timeValue.value[0];
const endTime = timeValue.value[1];
resTime.push(startTime);
resTime.push(endTime);
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;
};
onMounted(() => {
getData()
})
getData();
});
</script>
<style scoped>
/* 工具栏样式 */
.toolbarStyle {
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/assets/picture/box3.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
/* 表格样式 */
.formStyle {
display: flex;
justify-content: space-around;
padding: 3px;
display: flex;
justify-content: space-around;
padding: 3px;
}
/* 文字样式 */
.el-text {
color: #FFFFFF;
color: #ffffff;
}
.table-content {
padding: 0 10px;
}
.backStyle {
background-image: url("@/assets/picture/back.png");
background-size: 100% 100%;
background-repeat: no-repeat;
height: 5vh;
width: 5%;
display: flex;
margin-left: 0.8%;
background-image: url("@/assets/picture/back.png");
background-size: 100% 100%;
background-repeat: no-repeat;
height: 5vh;
width: 5%;
display: flex;
margin-left: 0.8%;
}
</style>
<style>
/* 修改el选择器的样式 */
.el-select__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 删除el选择器选中时的边框 */
.is-hovering {
box-shadow: none !important;
box-shadow: none !important;
}
/* 修改el输入框的样式 */
.el-input__wrapper {
background-color: #1d5484;
box-shadow: none;
background-color: #1d5484;
box-shadow: none;
}
/* 修改el下拉框的背景颜色 */
.el-select-dropdown {
background-color: #1d5484;
background-color: #1d5484;
}
/* 修改el下拉框选项的字体颜色 */
.el-select-dropdown__item {
color: #FFFFFF;
color: #ffffff;
}
/* 修改el下拉框选项选中时的文字颜色 */
.el-select-dropdown__item:hover {
color: #409eff;
color: #409eff;
}
/* 修改el按钮的边框为none */
.el-button:focus {
outline: none;
outline: none;
}
/* 修改el日期选择器的边框为none */
.el-date-editor {
--el-input-border-color: none
--el-input-border-color: none;
}
</style>
\ No newline at end of file
</style>
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