Commit 33062b3a by yzh

feat:任务信息,状态监控接完,删除展示差查询

parent 5b14a4c2
...@@ -105,4 +105,17 @@ export const spiderDataApi = { ...@@ -105,4 +105,17 @@ export const spiderDataApi = {
ituList: '/itu/list', ituList: '/itu/list',
ituDetail: '/itu/detail', ituDetail: '/itu/detail',
ituDataDelete: '/itu/delete', ituDataDelete: '/itu/delete',
stList: '/spaceTrack/list',
stDetail: '/spaceTrack/detail',
stDataDelete: '/sspaceTrackt/delete',
} as const } as const
// 爬虫数据相关接口
export const dataApi = {
dataStatistics: '/statistic/dataStatistics',
taskStatistics: '/statistic/taskStatistics',
performanceStatistics: '/statistic/performanceStatistics',
} as const
...@@ -55,3 +55,30 @@ export function deleteItuData(data: UserQueryParams) { ...@@ -55,3 +55,30 @@ export function deleteItuData(data: UserQueryParams) {
data data
}) as unknown as Promise<ApiResponse> }) as unknown as Promise<ApiResponse>
} }
// 获取st数据列表
export function getStlist(data: UserQueryParams) {
return request({
url: spiderDataApi.stList,
method: POST,
data
}) as unknown as Promise<ApiResponse>
}
// 获取st数据详情
export function getStDetail(data: UserQueryParams) {
return request({
url: spiderDataApi.stDetail,
method: POST,
data
}) as unknown as Promise<ApiResponse>
}
// 删除st数据
export function deleteStData(data: UserQueryParams) {
return request({
url: spiderDataApi.stDataDelete,
method: POST,
data
}) as unknown as Promise<ApiResponse>
}
\ No newline at end of file
import { request, POST } from '@/utils/request'
import type { ApiResponse, QueryParams } from '@/utils/request'
import { dataApi } from './apiPaths'
// 获取爬虫静态数据列表
export function getStatsDataList(params: QueryParams): Promise<ApiResponse> {
return request({
url: dataApi.dataStatistics,
method: POST,
params
}) as unknown as Promise<ApiResponse>
}
// 获取爬虫任务列表
export function getSpiderTaskList(params: QueryParams): Promise<ApiResponse> {
return request({
url: dataApi.taskStatistics,
method: POST,
params
}) as unknown as Promise<ApiResponse>
}
// 获取爬虫任务列表
export function getPerformanceList(params: QueryParams): Promise<ApiResponse> {
return request({
url: dataApi.performanceStatistics,
method: POST,
params
}) as unknown as Promise<ApiResponse>
}
\ No newline at end of file
<template> <template>
<el-dialog v-model="exportDialogVisible" title="导出" width="250" center align-center @close="close" draggable> <el-dialog v-model="exportDialogVisible" title="导出" width="400" center align-center @close="close" draggable>
<div class="text-center"> <div class="text-center p-0 gap-3">
<span style="color: #fff;font-size: 15px;">确定导出吗?</span> <!-- <span style="color: #fff;font-size: 15px;">请选择导出数据时间与数据类型。</span>
<br> -->
<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: 270px"
value-format="YYYY-MM-DD HH:mm:ss" />
<el-checkbox-group v-model="checkList">
<el-checkbox label="DSN数据" value="dsn" />
<el-checkbox label="ITU数据" value="itu" />
<el-checkbox label="ST数据" value="st" />
</el-checkbox-group>
</div> </div>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
...@@ -30,7 +39,8 @@ const props = defineProps({ ...@@ -30,7 +39,8 @@ const props = defineProps({
}) })
const emit = defineEmits(['update:dialogVisible', 'confirm']) const emit = defineEmits(['update:dialogVisible', 'confirm'])
const exportDialogVisible = ref(props.dialogVisible) const exportDialogVisible = ref(props.dialogVisible)
const checkList = ref([])
const timeValue = ref('')
// 导出方法 // 导出方法
const handleExport = () => { const handleExport = () => {
emit('confirm') emit('confirm')
......
...@@ -88,10 +88,9 @@ export interface QueryParams { ...@@ -88,10 +88,9 @@ export interface QueryParams {
size?: number size?: number
project?: string project?: string
spider?: string spider?: string
scrapydServerId: string scrapydServerId?: string
order_prop?: string order_prop?: string
order_type?: string order_type?: string
[key: string]: any
} }
// 请求函数 // 请求函数
...@@ -119,4 +118,6 @@ export interface UserQueryParams { ...@@ -119,4 +118,6 @@ export interface UserQueryParams {
spider?: string spider?: string
cron?: string cron?: string
options?: string options?: string
sat_name?: string
ntc_id?: string
} }
\ No newline at end of file
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<div> <div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '45px' }" <el-table :data="tableData" style="width: 100%" border :row-style="{ height: '45px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"> :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="selection" width="40" /> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" /> <el-table-column property="number" label="序号" width="55" />
<el-table-column property="targetName" label="目标名称" show-overflow-tooltip /> <el-table-column property="targetName" label="目标名称" show-overflow-tooltip />
<el-table-column property="stationPosition" label="站点位置" show-overflow-tooltip /> <el-table-column property="stationPosition" label="站点位置" show-overflow-tooltip />
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div> <div>
<el-input placeholder="请输入" style="width: 220px" /> <el-input placeholder="请输入" style="width: 200px" />
</div> </div>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -15,25 +15,20 @@ ...@@ -15,25 +15,20 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-date-picker v-model="timeValue" type="datetimerange" format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间" <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" /> end-placeholder="结束时间" date-format="YYYY/MM/DD ddd" time-format="A hh:mm:ss" style="width: 275px" value-format="YYYY-MM-DD HH:mm:ss"/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-text class="mx-1">站点名称:</el-text> <el-text class="mx-1">站点名称:</el-text>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input placeholder="请输入" style="width: 220px" /> <el-input placeholder="请输入" style="width: 200px" />
</el-form-item> </el-form-item>
<br></br> <!-- <br></br> -->
<el-form-item> <!-- <el-form-item>
<el-space> <el-space>
<el-button type="primary" @click="handleExport">导出最近</el-button> <el-button type="primary" @click="handleExport">导出最近</el-button>
</el-space> </el-space>
</el-form-item> </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-form-item>
<el-space> <el-space>
<el-button type="primary">查询</el-button> <el-button type="primary">查询</el-button>
...@@ -45,25 +40,45 @@ ...@@ -45,25 +40,45 @@
<div class="m-t-5" /> <div class="m-t-5" />
<div> <div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '41px' }" <el-table :data="tableData" style="width: 100%" border :row-style="{ height: '50px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"> :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="selection" width="40" /> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" /> <el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="targetName" 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="distance" label="距离(km)" show-overflow-tooltip />
<el-table-column property="roundTripTime" label="往返光时(s)" 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="stationName" label="站点名称" show-overflow-tooltip /> -->
<el-table-column property="targetAzimuth" label="目标方位" show-overflow-tooltip /> <el-table-column property="azimuthAngle" label="目标方位" show-overflow-tooltip />
<el-table-column property="targetElevation" 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="targetDistance" label="目标距离" show-overflow-tooltip /> -->
<el-table-column property="windSpeed" label="风速(km/hr)" show-overflow-tooltip /> <el-table-column property="windSpeed" label="风速(km/hr)" show-overflow-tooltip >
<el-table-column property="upSignalSource" label="上行信号来源" show-overflow-tooltip /> <!-- <template #default="scope">
<el-table-column property="upSignalFrequencyBand" label="上行信号频段" show-overflow-tooltip /> {{ scope.row.windSpeed === '' ? '-' : scope.row.windSpeed }}
<el-table-column property="upSignalLaunchPower" label="上行发射功率" show-overflow-tooltip /> </template> -->
<el-table-column property="downSignalSignalSource" label="下行信号来源" show-overflow-tooltip /> </el-table-column>
<el-table-column property="downSignalFrequencyBand" label="下行信号频段" show-overflow-tooltip /> <el-table-column property="targets[0].name" label="上行信号来源" show-overflow-tooltip/>
<el-table-column property="downSignalReceptionPower" label="下行接收功率" show-overflow-tooltip /> <el-table-column property="signals[0].band" label="上行信号频段" show-overflow-tooltip>
<el-table-column property="dataTime" 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 === 0 ? '-' : 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 === 0 ? '-' : scope.row.signals[1].power }}
</template> -->
</el-table-column>
<!-- <el-table-column property="dataTime" label="数据时间" show-overflow-tooltip /> -->
<el-table-column label="操作" width="60"> <el-table-column label="操作" width="60">
<template #default="scope"> <template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)"> <el-button type="primary" plain link @click="handleDetails(scope.row)">
...@@ -257,10 +272,10 @@ const handleDetails = (row: any) => { ...@@ -257,10 +272,10 @@ const handleDetails = (row: any) => {
} }
const getData = async () => { const getData = async () => {
console.log('getData');
const res = await getDsnlist({page:pageObj.value.pageNo,size:pageObj.value.pageSize}) const res = await getDsnlist({page:pageObj.value.pageNo,size:pageObj.value.pageSize})
tableData.value = res.data.list console.log(res);
pageObj.value.total = res.data.total tableData.value = res.data.list[0].dishes
// pageObj.value.total = res.data[0].dishes.length
} }
const handleClose = () => { const handleClose = () => {
......
<template> <template>
<div class="text-left p-s"> <!-- <div class="text-left p-s">
<div class="segmentedStyle"> <div class="segmentedStyle">
<el-segmented v-model="mode" :options="sizeOptions" style="margin-bottom: 1rem" size="small" /> <el-segmented v-model="mode" :options="sizeOptions" style="margin-bottom: 1rem" size="small" />
</div> </div>
</div> </div> -->
<dsnDataTab v-if="mode === 'DSN数据'"> <dsnDataTab>
</dsnDataTab> </dsnDataTab>
<newsDataTab v-if="mode === '新闻'"> <!-- <newsDataTab v-if="mode === '新闻'">
</newsDataTab> </newsDataTab> -->
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div> <div>
<el-input placeholder="请输入" style="width: 220px" /> <el-input placeholder="请输入" style="width: 200px" />
</div> </div>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -15,34 +15,23 @@ ...@@ -15,34 +15,23 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-date-picker v-model="timeValue" type="datetimerange" format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间" <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: 250px" end-placeholder="结束时间" date-format="YYYY/MM/DD ddd" time-format="A hh:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item> </el-form-item>
<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">SNS Notice ID:</el-text> <el-text class="mx-1">SNS Notice ID:</el-text>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input placeholder="请输入" style="width: 188.5px" /> <el-input placeholder="请输入" style="width: 180.5px" />
</el-form-item> </el-form-item>
<el-form-item> <!-- <el-form-item>
<el-space> <el-space>
<el-button type="primary" @click="handleExport">导出最近</el-button> <el-button type="primary" @click="handleExport">导出最近</el-button>
</el-space> </el-space>
</el-form-item> </el-form-item> -->
<el-form-item> <el-form-item>
<el-space> <el-space>
<el-button type="primary" @click="handleExport">导出选中</el-button> <el-button type="primary" @click="handleSearch">查询</el-button>
</el-space>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary">查询</el-button>
</el-space> </el-space>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -53,25 +42,61 @@ ...@@ -53,25 +42,61 @@
<div> <div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '42.5px' }" <el-table :data="tableData" style="width: 100%" border :row-style="{ height: '42.5px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"> :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="selection" width="40" /> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" /> <el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="SNSNoticeID" label="SNS Notice ID" show-overflow-tooltip /> <el-table-column property="item.ntc_id" label="SNS Notice ID" show-overflow-tooltip />
<el-table-column property="department" label="主管部门" show-overflow-tooltip /> <el-table-column property="identity.adm_name_e" label="主管部门" show-overflow-tooltip />
<el-table-column property="targetName" label="目标名称" show-overflow-tooltip /> <el-table-column property="identity.sat_name" label="目标名称" show-overflow-tooltip />
<el-table-column property="planType" label="计划/非计划类型" show-overflow-tooltip /> <el-table-column property="item.plan_txt" label="计划/非计划类型" show-overflow-tooltip />
<el-table-column property="syncType" label="是否为同步" show-overflow-tooltip /> <el-table-column property="identity.ntc_type" label="是否为同步" show-overflow-tooltip>
<el-table-column property="syncPosition" label="同步位置" show-overflow-tooltip /> <template #default="scope">
<el-table-column property="perigee" label="近地点" show-overflow-tooltip /> {{ scope.row.identity.ntc_type === 'G' ? '是' : '否' }}
<el-table-column property="apogee" label="远地点" show-overflow-tooltip /> </template>
<el-table-column property="lowestAltitude" label="最低海拔" show-overflow-tooltip /> </el-table-column>
<el-table-column property="referenceSubject" label="参考主体" show-overflow-tooltip /> <el-table-column property="identity.long_nom" label="同步位置" show-overflow-tooltip>
<el-table-column property="highestFrequency" label="最高频率" show-overflow-tooltip /> <template #default="scope">
<el-table-column property="lowestFrequency" label="最低频率" show-overflow-tooltip /> {{ scope.row.identity.long_nom === null ? '-' : scope.row.identity.long_nom }}
<el-table-column property="status" label="状态" show-overflow-tooltip /> </template>
<el-table-column property="validityPeriod" label="有效期" show-overflow-tooltip /> </el-table-column>
<el-table-column property="earliestUsageDate" label="最早使用日期" show-overflow-tooltip /> <!-- <el-table-column property="item.minPerigee" label="近地点" show-overflow-tooltip>
<el-table-column property="isUsed" label="是否确认使用" show-overflow-tooltip /> <template #default="scope">
<el-table-column property="isPauseUsed" label="是否暂停使用" show-overflow-tooltip /> {{ scope.row.item.minPerigee === null ? '-' : scope.row.item.minPerigee }}
</template>
</el-table-column>
<el-table-column property="item.maxApog" label="远地点" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.item.maxApog === null ? '-' : scope.row.identity.maxApog }}
</template>
</el-table-column>
<el-table-column property="item.minAltitude" label="最低海拔" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.item.minAltitude === null ? '-' : scope.row.item.minAltitude }}
</template>
</el-table-column>
<el-table-column property="item.ref_body" label="参考主体" show-overflow-tooltip>
<template #default="scope">
{{ 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"> <el-table-column label="操作" width="60">
<template #default="scope"> <template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)"> <el-button type="primary" plain link @click="handleDetails(scope.row)">
...@@ -83,6 +108,9 @@ ...@@ -83,6 +108,9 @@
<div class="pagination w-full flex flex-row-reverse pr-4 m-t-4"> <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 :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" /> @pagination="getData" />
<!-- <el-pagination v-model:current-page="pageObj.pageNo" v-model:page-size="pageObj.pageSize" :page-sizes="[10]"
layout="total, sizes, prev, pager, next, jumper" :total="pageObj.total" @size-change="handleSizeChange"
@current-change="handleCurrentChange" /> -->
</div> </div>
</div> </div>
...@@ -93,7 +121,7 @@ ...@@ -93,7 +121,7 @@
详情 详情
</div> </div>
</template> </template>
<el-form label-width="135px" size="small" class="px-4"> <el-form label-width="155px" size="small" class="px-4">
<div> <div>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
...@@ -222,18 +250,18 @@ ...@@ -222,18 +250,18 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="有效期卫星网络旧名称:" label-position="left"> <el-form-item label="最新相关 BR IFIC 发布日期:" label-position="left">
<el-input v-model="validityPeriodSatelliteNetworkOldName" /> <el-input v-model="BFIFICdate" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <!-- <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="最新相关 BR IFIC 发布日期:" label-position="top"> <el-form-item label="最新相关 BR IFIC 发布日期:" label-position="top">
<el-input v-model="BFIFICdate" /> <el-input v-model="BFIFICdate" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row> -->
</div> </div>
</el-form> </el-form>
</el-dialog> </el-dialog>
...@@ -298,19 +326,55 @@ const validityPeriodSatelliteNetworkOldName = ref('') ...@@ -298,19 +326,55 @@ const validityPeriodSatelliteNetworkOldName = ref('')
const BFIFICdate = ref('') const BFIFICdate = ref('')
const tableData = ref([]) const tableData = ref([])
const pageObj = ref({ const pageObj = ref({
total: 10, total: 0,
pageSize: 10, pageSize: 10,
pageNo: 1 pageNo: 1
}) })
const handleDetails = (row: any) => { const handleDetails = async (id: any) => {
console.log(row); // console.log(id._id);
const res = await getItuDetail({ id: id._id })
console.log(res);
detailVisibleValue.value = true detailVisibleValue.value = true
snsId.value = res.data.item.ntc_id
department.value = res.data.item.notifying_adm_tooltip
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
isUsed.value = res.data.regulatory_status.f_biu_grps
isPauseUsed.value = res.data.regulatory_status.resumption_list
// recordTime.value = res.data.regulatory_status.d_inuse_list
IsInTheInternationalFrequencyList.value = res.data.regulatory_status.mifr
earliestRegulatoryDate.value = JSON.parse(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
} }
const getData = async () => { const getData = async () => {
const res = await getItulist({page:pageObj.value.pageNo,size:pageObj.value.pageSize}) const res = await getItulist({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
pageObj.value.total = res.data.length console.log(res);
tableData.value = res.data pageObj.value.total = res.data.total
tableData.value = res.data.list
}
const handleSizeChange = (val: number) => {
// 如果修改后超过最大页面,强制跳转到第 1 页
if (pageObj.value.pageNo * val > pageObj.value.total) {
pageObj.value.pageNo = 1
}
getData()
}
const handleCurrentChange = (val: number) => {
// 触发 pagination 事件,重新加载列表
getData()
} }
const handleClose = () => { const handleClose = () => {
detailVisibleValue.value = false detailVisibleValue.value = false
...@@ -321,7 +385,10 @@ const handleExportConfirm = () => { ...@@ -321,7 +385,10 @@ const handleExportConfirm = () => {
const handleExport = () => { const handleExport = () => {
showDeleteDialog.value = true showDeleteDialog.value = true
} }
const handleSearch = async () => {
const res = await getItulist({ sat_name: targetName.value, ntc_id: snsId.value, times: timeValue.value })
tableData.value = res.data
}
onMounted(() => { onMounted(() => {
getData() getData()
}) })
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div> <div>
<el-input placeholder="请输入" style="width: 220px" /> <el-input placeholder="请输入" style="width: 210px" />
</div> </div>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -15,34 +15,23 @@ ...@@ -15,34 +15,23 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-date-picker v-model="timeValue" type="datetimerange" format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间" <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" /> end-placeholder="结束时间" date-format="YYYY/MM/DD ddd" time-format="A hh:mm:ss" style="width: 250px"
value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item> </el-form-item>
<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-text class="mx-1">NORAD CAT ID:</el-text>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input placeholder="请输入" style="width: 188.5px" /> <el-input placeholder="请输入" style="width: 180.5px" />
</el-form-item> </el-form-item>
<el-form-item> <!-- <el-form-item>
<el-space> <el-space>
<el-button type="primary" @click="handleExport">导出最近</el-button> <el-button type="primary" @click="handleExport">导出最近</el-button>
</el-space> </el-space>
</el-form-item> </el-form-item> -->
<el-form-item> <el-form-item>
<el-space> <el-space>
<el-button type="primary" @click="handleExport">导出选中</el-button> <el-button type="primary" @click="handleSearch">查询</el-button>
</el-space>
</el-form-item>
<el-form-item>
<el-space>
<el-button type="primary">查询</el-button>
</el-space> </el-space>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -51,24 +40,26 @@ ...@@ -51,24 +40,26 @@
<div class="m-t-5" /> <div class="m-t-5" />
<div> <div>
<el-table :data="tableData" style="width: 100%" border :row-style="{ height: '42.5px' }" <el-table :data="tableData" style="width: 100%" border :row-style="{ height: '43.5px' }"
:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"> :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="selection" width="40" /> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" /> <el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="NoradCatID" label="Norad Cat ID" show-overflow-tooltip /> <el-table-column property="data[0].NORAD_CAT_ID" label="Norad Cat ID" show-overflow-tooltip />
<el-table-column property="targetName" label="目标名称" 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="intleds" label="INTLDES" show-overflow-tooltip /> -->
<el-table-column property="type" label="类型" show-overflow-tooltip /> <el-table-column property="data[0].OBJECT_TYPE" label="类型" show-overflow-tooltip />
<el-table-column property="belongCountry" label="所属国家" width="82" 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="runningTime" label="运行时间" show-overflow-tooltip /> -->
<el-table-column property="site" label="SITE" 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="failTime" label="失效时间" show-overflow-tooltip /> -->
<el-table-column property="period" label="周期" show-overflow-tooltip /> <el-table-column property="data[0].PERIOD" label="周期" show-overflow-tooltip />
<el-table-column property="perigee" label="近地点" show-overflow-tooltip /> <el-table-column property="data[0].PERIAPSIS" label="近地点" show-overflow-tooltip />
<el-table-column property="apogee" 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="incl" label="INCL" show-overflow-tooltip /> -->
<el-table-column property="rcs" label="RCS" show-overflow-tooltip /> <el-table-column property="data[0].RCS_SIZE" label="RCS" show-overflow-tooltip />
<el-table-column property="tle" label="TLE" 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"> <el-table-column label="操作" width="60">
<template #default="scope"> <template #default="scope">
<el-button type="primary" plain link @click="handleDetails(scope.row)"> <el-button type="primary" plain link @click="handleDetails(scope.row)">
...@@ -106,8 +97,8 @@ ...@@ -106,8 +97,8 @@
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="INTLDES:" label-position="left"> <el-form-item label="周期(min):" label-position="left">
<el-input v-model="intleds" /> <el-input v-model="period" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -116,7 +107,7 @@ ...@@ -116,7 +107,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <!-- <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="运行时间:" label-position="left"> <el-form-item label="运行时间:" label-position="left">
<el-input v-model="workTime" /> <el-input v-model="workTime" />
...@@ -127,7 +118,7 @@ ...@@ -127,7 +118,7 @@
<el-input v-model="failTime" /> <el-input v-model="failTime" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row> -->
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="记录时间:" label-position="left"> <el-form-item label="记录时间:" label-position="left">
...@@ -154,18 +145,6 @@ ...@@ -154,18 +145,6 @@
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <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-form-item label="RCS:" label-position="left">
<el-input v-model="rcs" /> <el-input v-model="rcs" />
</el-form-item> </el-form-item>
...@@ -191,9 +170,10 @@ ...@@ -191,9 +170,10 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { onMounted, ref } from 'vue'
import Pagination from '@/components/pagination/index.vue' import Pagination from '@/components/pagination/index.vue'
import exportDialog from '@/components/Export/index.vue' import exportDialog from '@/components/Export/index.vue'
import { getStlist, getStDetail, deleteStData } from '@/api/spiderData'
const showDeleteDialog = ref(false) const showDeleteDialog = ref(false)
const timeValue = ref('') const timeValue = ref('')
...@@ -206,10 +186,6 @@ const targetName = ref('') ...@@ -206,10 +186,6 @@ const targetName = ref('')
const intleds = ref('') const intleds = ref('')
// 类型 // 类型
const type = ref('') const type = ref('')
// 运行时间
const workTime = ref('')
// 失效时间
const failTime = ref('')
// 记录时间 // 记录时间
const recordTime = ref('') const recordTime = ref('')
// 所属国家 // 所属国家
...@@ -229,63 +205,36 @@ const site = ref('') ...@@ -229,63 +205,36 @@ const site = ref('')
// TLE // TLE
const tle = ref('') const tle = ref('')
const tableData = ref([ const tableData = ref([])
{
number: '1',
NoradCatID: '1358',
targetName: 'SL-1 R/B',
intleds: '1957-001A',
type: 'ROCKET BODY',
belongCountry: 'RUS',
runningTime: '1957-10-14',
site: 'TTMTR',
failTime: '1958-12-01',
period: '96.19',
perigee: '214',
apogee: '938',
incl: '65.14',
rcs: 'LARGE',
tle: '-',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
{
name: '1',
},
])
const pageObj = ref({ const pageObj = ref({
total: 10, total: 10,
pageSize: 10, pageSize: 10,
pageNo: 1 pageNo: 1
}) })
const handleDetails = (row: any) => { const handleDetails = async (row: any) => {
console.log(row); // console.log(row);
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 detailVisibleValue.value = true
} }
const getData = () => { const getData = async () => {
console.log('getData'); const res = await getStlist({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
pageObj.value.total = res.data.total
tableData.value = res.data.list
// console.log(res);
} }
const handleClose = () => { const handleClose = () => {
detailVisibleValue.value = false detailVisibleValue.value = false
...@@ -296,6 +245,15 @@ const handleExportConfirm = () => { ...@@ -296,6 +245,15 @@ const handleExportConfirm = () => {
const handleExport = () => { const handleExport = () => {
showDeleteDialog.value = true showDeleteDialog.value = true
} }
const handleSearch = async () => {
console.log(timeValue.value);
//const res = await getStlist({sat_name: targetName.value,ntc_id: snsId.value,times: timeValue.value})
// tableData.value = res.data
}
onMounted(() => {
getData()
})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
...@@ -332,6 +290,10 @@ const handleExport = () => { ...@@ -332,6 +290,10 @@ const handleExport = () => {
</style> </style>
<style> <style>
.el-textarea__inner {
color: #FFFFFF;
}
.el-input { .el-input {
--el-input-text-color: #FFFFFF; --el-input-text-color: #FFFFFF;
} }
......
...@@ -4,11 +4,13 @@ ...@@ -4,11 +4,13 @@
<div class="text-left p-4 "> <div class="text-left p-4 ">
<div class="custom-style"> <div class="custom-style">
<el-segmented v-model="mode" :options="sizeOptions" style="margin-bottom: 1rem" size="default" /> <el-segmented v-model="mode" :options="sizeOptions" style="margin-bottom: 1rem" size="default" />
<el-button type="primary" @click="handleExport
">导出最近</el-button>
</div> </div>
</div> </div>
<!-- 综合数据页面组件 --> <!-- 综合数据页面组件 -->
<allDataTab v-if="mode === '综合数据'"> <!-- <allDataTab v-if="mode === '综合数据'">
</allDataTab> </allDataTab> -->
<!-- DSN数据页面组件 --> <!-- DSN数据页面组件 -->
<dsnDataTab v-if="mode === 'DSN数据'"> <dsnDataTab v-if="mode === 'DSN数据'">
</dsnDataTab> </dsnDataTab>
...@@ -19,6 +21,8 @@ ...@@ -19,6 +21,8 @@
<stDataTab v-if="mode === 'ST数据'"> <stDataTab v-if="mode === 'ST数据'">
</stDataTab> </stDataTab>
</div> </div>
<exportDialog v-model:dialogVisible="showDeleteDialog" @confirm="handleExportConfirm" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
...@@ -29,17 +33,26 @@ import allDataTab from './components/allDataTab.vue' ...@@ -29,17 +33,26 @@ import allDataTab from './components/allDataTab.vue'
import ituDataTab from './components/ituDataTab.vue' import ituDataTab from './components/ituDataTab.vue'
import stDataTab from './components/stDataTab.vue' import stDataTab from './components/stDataTab.vue'
import dsnDataTab from './components/dsnData/dsnTab.vue' import dsnDataTab from './components/dsnData/dsnTab.vue'
import exportDialog from '@/components/Export/index.vue'
const mode = ref('综合数据') const mode = ref('DSN数据')
const sizeOptions = ['综合数据', 'DSN数据', 'ITU数据', 'ST数据'] const showDeleteDialog = ref(false)
const sizeOptions = ['DSN数据', 'ITU数据', 'ST数据']
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const modeValue = ref<any>('数据展示') const modeValue = ref<any>('数据展示')
const goToStatus = () => { const goToStatus = () => {
router.push({ router.push({
path: '/osStatus/list', path: '/osStatus/list',
}) })
} }
const handleExport = () => {
showDeleteDialog.value = true
}
const handleExportConfirm = () => {
}
onMounted(() => { onMounted(() => {
console.log('数据展示'); console.log('数据展示');
console.log(route.query); console.log(route.query);
......
...@@ -36,11 +36,12 @@ const pageObj = ref({ ...@@ -36,11 +36,12 @@ const pageObj = ref({
pageNo: 1 pageNo: 1
}) })
const handleDetails = (row: any) => { const handleDetails = (row: any) => {
console.log(row); // console.log(row);
router.push({ router.push({
path: '/osTaskInformation/list', path: '/osTaskInformation/list',
query: { query: {
jump: 'yes' jump: 'yes',
spiderType: row.spider
} }
}) })
} }
......
...@@ -6,13 +6,13 @@ ...@@ -6,13 +6,13 @@
<span>数据统计</span> <span>数据统计</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>总数据量: {{ totalDataNumber }} 1230</span> <span>总数据量: {{ totalDataNumber }}</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>采集的页面数量: {{ totalPageNumber }} 85</span> <span>采集的页面数量: {{ totalPageNumber }}</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>采集的目标数量: {{ totalTargetNumber }} 569</span> <span>采集的目标数量: {{ totalTargetNumber }}</span>
</div> </div>
</div> </div>
<div class="dataCard" @click="goToTaskRecordPage"> <div class="dataCard" @click="goToTaskRecordPage">
...@@ -20,13 +20,13 @@ ...@@ -20,13 +20,13 @@
<span>任务执行统计</span> <span>任务执行统计</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>任务执行成功统计: {{ successTask }} 36</span> <span>任务执行成功统计: {{ successTask }}</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>任务执行失败统计: {{ failTask }} 0</span> <span>任务执行失败统计: {{ failTask }}</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>任务异常数统计: {{ unusualTask }} 1</span> <span>任务异常数统计: {{ unusualTask }}</span>
</div> </div>
</div> </div>
<div class="dataCard"> <div class="dataCard">
...@@ -34,13 +34,13 @@ ...@@ -34,13 +34,13 @@
<span>性能统计</span> <span>性能统计</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>平均成功率: {{ speed }} 98%</span> <span>平均成功率: {{ speed }}</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>平均错误率: {{ errorRate }} 0%</span> <span>平均错误率: {{ errorRate }}</span>
</div> </div>
<div class="wordStyle"> <div class="wordStyle">
<span>平均异常率: {{ errorRate }} 2%</span> <span>平均异常率: {{ unusualRate }}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -49,42 +49,20 @@ ...@@ -49,42 +49,20 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { getStatsDataList, getSpiderTaskList, getPerformanceList } from '@/api/staticData';
import { onMounted, ref } from 'vue';
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();
defineProps({
totalDataNumber: {
type: String,
default: ''
},
totalPageNumber: {
type: String,
default: ''
},
totalTargetNumber: {
type: String,
default: ''
},
successTask: {
type: String,
default: ''
},
failTask: {
type: String,
default: ''
},
unusualTask: {
type: String,
default: ''
},
speed: {
type: String,
default: ''
},
errorRate: {
type: String,
default: ''
}
})
const goToAllDataPage = () => { const goToAllDataPage = () => {
router.push({ router.push({
path: '/osDataDisplay/list', path: '/osDataDisplay/list',
...@@ -105,7 +83,27 @@ const goToTaskRecordPage = () => { ...@@ -105,7 +83,27 @@ const goToTaskRecordPage = () => {
}) })
} }
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
console.log(staticData);
console.log(spiderTask);
console.log(performance);
}
onMounted(() => {
getData();
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
align-center @close="handleClose" draggable> align-center @close="handleClose" draggable>
<el-form :model="ruleForm" :rules="rules" ref="ruleFormRef" label-width="100px"> <el-form :model="ruleForm" :rules="rules" ref="ruleFormRef" label-width="100px">
<el-form-item label="任务名称:" v-if="currentMode === AddMode.ADD_TASK" prop="taskName"> <el-form-item label="任务名称:" v-if="currentMode === AddMode.ADD_TASK" prop="taskName">
<el-input v-model="ruleForm.taskName" placeholder="请输入任务名称"style="width: 90%" /> <el-input v-model="ruleForm.taskName" placeholder="请输入任务名称" style="width: 90%" />
</el-form-item> </el-form-item>
<el-form-item label="所属爬虫:" v-if="currentMode === AddMode.ADD_TASK" prop="spiderTypeValue"> <el-form-item label="所属爬虫:" v-if="currentMode === AddMode.ADD_TASK" prop="spiderTypeValue">
<el-select v-model="ruleForm.spiderTypeValue" placeholder="请选择所属爬虫" style="width: 90%"> <el-select v-model="ruleForm.spiderTypeValue" placeholder="请选择所属爬虫" style="width: 90%">
<el-option v-for="item in spiderTypeOptions" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in spiderTypeOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="执行频率:" prop="cronExpression"> <el-form-item label="执行频率:" prop="cronExpression">
......
...@@ -13,15 +13,15 @@ ...@@ -13,15 +13,15 @@
</el-select> </el-select>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item> <!-- <el-form-item>
<el-text class="mx-1" style="color: #fff;">任务名称:</el-text> <el-text class="mx-1" style="color: #fff;">任务名称:</el-text>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input v-model="taskName" placeholder="请输入" style="width: 220px" /> <el-input v-model="taskName" placeholder="请输入" style="width: 220px" />
</el-form-item> </el-form-item> -->
<el-form-item> <el-form-item>
<el-space> <el-space>
<el-button type="primary" @Click="getData">查询</el-button> <el-button type="primary" @Click="search">查询</el-button>
</el-space> </el-space>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<el-space> <el-space>
<span class="wordStyle">启用/停止: </span> <span class="wordStyle">启用/停止: </span>
<el-switch v-model="task.status" :active-value="'running'" :inactive-value="'paused'" <el-switch v-model="task.status" :active-value="'running'" :inactive-value="'paused'"
@change="(newStatus:any) => changeStatus(task, newStatus)" /> @change="(newStatus: any) => changeStatus(task, newStatus)" />
<span class="wordStyle">执行频率: {{ task.frequency }} </span> <span class="wordStyle">执行频率: {{ task.frequency }} </span>
</el-space> </el-space>
</el-form-item> </el-form-item>
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
<el-space> <el-space>
<span class="wordStyle">失败次数: 个; </span> <span class="wordStyle">失败次数: 个; </span>
<span class="wordStyle">异常记录: 个</span> <span class="wordStyle">异常记录: 个</span>
<span class="wordStyle">所属爬虫: </span>
</el-space> </el-space>
</el-form-item> </el-form-item>
</div> </div>
...@@ -79,22 +80,22 @@ ...@@ -79,22 +80,22 @@
</div> </div>
<addTaskDialog v-model:dialogVisible="showTaskDialog" @confirm="handleEdit" :mode="editMode" @getTaskList="getData" <addTaskDialog v-model:dialogVisible="showTaskDialog" @confirm="handleEdit" :mode="editMode" @getTaskList="getData"
:jobId="jobId" :cron="frequency" :spiderType="spiderType" :options="taskOptions" /> :jobId="jobId" :cron="frequency" :spiderType="belongSpiderType" :options="taskOptions" />
<deleteDialog v-model:dialogVisible="showDeleteDialog" @get-user-list="getData" :jobId="jobId" /> <deleteDialog v-model:dialogVisible="showDeleteDialog" @get-user-list="getData" :jobId="jobId" />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, onMounted } from 'vue' import { ref, onMounted, watch } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import addTaskDialog from './addTaskDialog.vue' import addTaskDialog from './addTaskDialog.vue'
import { getSpiderTaskList, resumeSpiderTask, pauseSpiderTask } from '@/api/spiderTask' import { getSpiderTaskList, resumeSpiderTask, pauseSpiderTask } from '@/api/spiderTask'
import { DeleteMode } from '@/components/Delete/enum.ts' import { DeleteMode } from '@/components/Delete/enum.ts'
import { AddMode } from './enum' import { AddMode } from './enum'
import deleteDialog from './deleteDialog.vue' import deleteDialog from './deleteDialog.vue'
defineProps({ const props = defineProps({
successTask: { spiderType: {
type: String, type: String,
default: '' default: ''
}, },
...@@ -127,7 +128,7 @@ const searchCondition = ref({ ...@@ -127,7 +128,7 @@ const searchCondition = ref({
}) })
const taskName = ref('') const taskName = ref('')
const taskValue = ref('') const taskValue = ref('')
const spiderType = ref('') const belongSpiderType = ref('')
const router = useRouter() const router = useRouter()
const frequency = ref('') const frequency = ref('')
const editMode = ref(AddMode.UPDATE_TASK) const editMode = ref(AddMode.UPDATE_TASK)
...@@ -148,7 +149,7 @@ const deleteTask = (task: any) => { ...@@ -148,7 +149,7 @@ const deleteTask = (task: any) => {
const editTask = (task: any) => { const editTask = (task: any) => {
jobId.value = task.id jobId.value = task.id
taskOptions.value = JSON.stringify(JSON.parse(task.kwargs.options)) taskOptions.value = JSON.stringify(JSON.parse(task.kwargs.options))
spiderType.value = task.kwargs.spider belongSpiderType.value = task.kwargs.spider
frequency.value = task.kwargs.cron frequency.value = task.kwargs.cron
editMode.value = AddMode.UPDATE_TASK editMode.value = AddMode.UPDATE_TASK
showTaskDialog.value = true showTaskDialog.value = true
...@@ -170,7 +171,7 @@ const changeStatus = async (task: any, newStatus: string) => { ...@@ -170,7 +171,7 @@ const changeStatus = async (task: any, newStatus: string) => {
} else if (newStatus === "paused") { } else if (newStatus === "paused") {
await pauseSpiderTask({ job_id: task.id }); await pauseSpiderTask({ job_id: task.id });
} }
await getData(); // await getData();
}; };
const handleEdit = () => { const handleEdit = () => {
...@@ -180,14 +181,26 @@ const openTaskDialog = () => { ...@@ -180,14 +181,26 @@ const openTaskDialog = () => {
showTaskDialog.value = true showTaskDialog.value = true
} }
const getData = async () => { const getData = async () => {
if (props.spiderType !== '') {
const res = await getSpiderTaskList({ spiders: props.spiderType, options: JSON.stringify({ jobName: taskName.value }) })
taskList.value = res.data
}else{
const res = await getSpiderTaskList({ spiders: searchCondition.value.spiders ? [searchCondition.value.spiders] : [], options: JSON.stringify({ jobName: taskName.value }) })
taskList.value = res.data
}
}
const search = async () => {
const res = await getSpiderTaskList({ spiders: searchCondition.value.spiders ? [searchCondition.value.spiders] : [], options: JSON.stringify({ jobName: taskName.value }) }) const res = await getSpiderTaskList({ spiders: searchCondition.value.spiders ? [searchCondition.value.spiders] : [], options: JSON.stringify({ jobName: taskName.value }) })
taskList.value = res.data taskList.value = res.data
} }
onMounted(() => { onMounted(() => {
if (props.spiderType !== '') {
searchCondition.value.spiders = props.spiderType
}
getData() getData()
}) })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
...@@ -222,10 +235,12 @@ onMounted(() => { ...@@ -222,10 +235,12 @@ onMounted(() => {
.cardStyle { .cardStyle {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-around; // justify-content:center;
justify-content: space-between;
margin-top: 1.5%; margin-top: 1.5%;
padding: 8px; padding: 18px;
height: 26vh; height: 26vh;
} }
// 任务卡片样式 // 任务卡片样式
...@@ -286,4 +301,8 @@ onMounted(() => { ...@@ -286,4 +301,8 @@ onMounted(() => {
.el-input { .el-input {
color: #FFFFFF; color: #FFFFFF;
} }
.el-select__placeholder {
color: #FFFFFF;
}
</style> </style>
\ No newline at end of file
<template> <template>
<div> <div>
<div class="backStyle" v-if="route.query.jump === 'yes'" @click="goToTaskInformation" /> <div class="backStyle" v-if="route.query.jump === 'yes'" @click="goToTaskInformation" />
<div class="m-t-10" /> <div class="m-t-8" />
<div > <div >
<taskCard successTask="100" failTask="10" unusualTask="1" /> <taskCard :spiderType="spiderType" failTask="10" unusualTask="1" />
<!-- <div class="pagination w-full flex flex-row-reverse pr-18 m-t-0"> <!-- <div class="pagination w-full flex flex-row-reverse pr-18 m-t-0">
<Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize" <Pagination :total="pageObj.total" v-model:page="pageObj.pageNo" v-model:limit="pageObj.pageSize"
@pagination="getData" /> @pagination="getData" />
...@@ -23,6 +23,7 @@ import { AddMode } from './components/enum' ...@@ -23,6 +23,7 @@ import { AddMode } from './components/enum'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const spiderType = ref<any>(route.query.spiderType)
const taskValue = ref('') const taskValue = ref('')
const taskList = ref([]) const taskList = ref([])
const taskOptions = [ const taskOptions = [
...@@ -48,6 +49,12 @@ const pageObj = ref({ ...@@ -48,6 +49,12 @@ const pageObj = ref({
const goToTaskInformation = () => { const goToTaskInformation = () => {
router.push({ path: '/osSpiderManager/list' }) router.push({ path: '/osSpiderManager/list' })
} }
onMounted(async () => {
// if(route.query.spiderType){
// spiderType.value = route.query.spiderType
// }
})
</script> </script>
<style scoped> <style scoped>
......
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