5 changed files with 80 additions and 387 deletions
@ -1,200 +0,0 @@ |
|||
<script lang="ts" setup> |
|||
import { onMounted, reactive, ref } from 'vue' |
|||
import type { Dayjs } from 'dayjs' |
|||
import moment from 'moment' |
|||
import { Card, Descriptions, DescriptionsItem, Form, FormItem, RangePicker, Space, Switch, message } from 'ant-design-vue' |
|||
import { mount } from 'sortablejs' |
|||
import { number } from 'vue-types' |
|||
import { useRoute } from 'vue-router' |
|||
import HistoryLine from '../../exa/HistoryLine.vue' |
|||
import { detailColumns, instantForm } from './instant.data' |
|||
import { getExaHistorys } from '@/api/alert/exa' |
|||
import { useModal } from '@/components/Modal' |
|||
import { BasicTable, TableAction, useTable } from '@/components/Table' |
|||
import { getInstant, getInstantChart, getInstantPage, getInstantPoint } from '@/api/alert/run/instant' |
|||
import { useI18n } from '@/hooks/web/useI18n' |
|||
import { router } from '@/router' |
|||
import { BasicForm, useForm } from '@/components/Form' |
|||
import PropsPanel from '@/components/FormDesign/src/components/VFormDesign/modules/PropsPanel.vue' |
|||
import echarts from '@/utils/lib/echarts' |
|||
|
|||
defineOptions({ name: 'InstantDetail' }) |
|||
|
|||
const route = useRoute() |
|||
|
|||
// const props = defineProps({ |
|||
// id: { |
|||
// type: Number, |
|||
// default: null, |
|||
// }, |
|||
// }) |
|||
const { t } = useI18n() |
|||
const loadingBasic = ref<boolean>(false) |
|||
const loadingChart = ref<boolean>(false) |
|||
|
|||
const basicInfo = ref<any>({}) |
|||
const modelInfo = ref<any>({}) |
|||
const pointInfo = ref<any>({}) |
|||
const pointList = ref<any>([]) |
|||
const historyList = ref<any>([]) |
|||
const [registerForm, { getFieldsValue, setProps }] = useForm({ |
|||
labelWidth: 100, |
|||
// baseColProps: { span: 24 }, |
|||
schemas: instantForm, |
|||
showResetButton: false, |
|||
layout: 'horizontal', |
|||
// model: { time: [moment().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD HH:mm:ss')] }, |
|||
fieldMapToTime: [ |
|||
// data为时间组件在表单内的字段,startTime,endTime为转化后的开始时间于结束时间 |
|||
['time', ['startTime', 'endTime'], 'YYYY-MM-DD HH:mm:ss'], |
|||
], |
|||
actionColOptions: { |
|||
span: 2, |
|||
style:{ |
|||
marginLeft:'5px' |
|||
}}, |
|||
}) |
|||
|
|||
const instantId = ref<any>(route.query.mpId) // 获取URL中的query参数 |
|||
|
|||
onMounted(async () => { |
|||
loadingBasic.value = true |
|||
basicInfo.value = await getInstant(instantId.value) |
|||
loadingBasic.value = false |
|||
|
|||
modelInfo.value = JSON.parse(basicInfo.value.modelInfo) |
|||
pointInfo.value = modelInfo.value.pointInfo |
|||
console.log(modelInfo.value) |
|||
pointList.value = await getInstantPoint(instantId.value) |
|||
getChartsData() |
|||
}) |
|||
|
|||
function handleSubmitR() { |
|||
getChartsData() |
|||
} |
|||
async function getChartsData() { |
|||
setProps({ |
|||
submitButtonOptions: { |
|||
loading: true, |
|||
}, |
|||
}) |
|||
|
|||
loadingChart.value = true |
|||
console.log(getFieldsValue()) |
|||
const instantForm = getFieldsValue() |
|||
|
|||
historyList.value = await getInstantChart({ ...{ id: instantId.value }, ...instantForm }) |
|||
echarts.connect('async') |
|||
|
|||
loadingChart.value = false |
|||
setProps({ |
|||
submitButtonOptions: { |
|||
loading: false, |
|||
}, |
|||
}) |
|||
} |
|||
|
|||
const [registerTable] = useTable({ |
|||
title: '测点列表', |
|||
size: 'small', |
|||
dataSource: pointList, |
|||
columns: detailColumns, |
|||
useSearchForm: false, |
|||
showTableSetting: true, |
|||
showIndexColumn: false, |
|||
actionColumn: { |
|||
width: 140, |
|||
title: t('common.action'), |
|||
dataIndex: 'action', |
|||
fixed: 'right', |
|||
}, |
|||
}) |
|||
|
|||
function handleDetail(record) { |
|||
console.log(record) |
|||
router.push('/run/instant/detail') |
|||
} |
|||
|
|||
|
|||
function handleFaultConfig(field) { |
|||
console.log(field) |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div> |
|||
<Card :loading="loadingBasic"> |
|||
<Descriptions size="small" title="模型基本信息" bordered :column="{ xxl: 4, xl: 3, lg: 3, md: 3, sm: 2, xs: 1 }"> |
|||
<DescriptionsItem label="实例名称" :span="4"> |
|||
{{ basicInfo.mpName }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="创建人"> |
|||
{{ basicInfo.createName }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="创建时间"> |
|||
{{ moment(basicInfo.createTime).format("YYYY-MM-DD HH:mm:ss") }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="最近修改人"> |
|||
{{ basicInfo.updateName }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="最近修改时间"> |
|||
{{ moment(basicInfo.updateTime).format("YYYY-MM-DD HH:mm:ss") }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="算法"> |
|||
{{ basicInfo.algorithmShortname }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="训练采样间隔"> |
|||
{{ modelInfo.sampling }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="参数个数"> |
|||
{{ pointInfo.length }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="最小主元贡献率"> |
|||
{{ modelInfo.rate }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="主元个数"> |
|||
{{ modelInfo.principal }} |
|||
</DescriptionsItem> |
|||
<DescriptionsItem label="模型精度"> |
|||
{{ modelInfo.precision }} |
|||
</DescriptionsItem> |
|||
</Descriptions> |
|||
</Card> |
|||
<Card> |
|||
<BasicTable @register="registerTable"> |
|||
<template #detail="{ record }"> |
|||
<a class="click-status" @click="handleDetail(record)"> |
|||
{{ record.mpName }} |
|||
</a> |
|||
<!-- <SlidersOutlined class="click-status" /> --> |
|||
</template> |
|||
</BasicTable> |
|||
</Card> |
|||
<Card> |
|||
<BasicForm @register="registerForm" @submit="handleSubmitR"> |
|||
<!-- 添加button的插槽 --> |
|||
<template #configButton="{ field }"> |
|||
<a-button @click="handleFaultConfig(field)"> |
|||
故障配置 |
|||
</a-button> |
|||
</template> |
|||
</BasicForm> |
|||
</Card> |
|||
<Card :loading="loadingChart"> |
|||
<div> |
|||
<div v-for="(item, index) in historyList" :key="index"> |
|||
<div style="border:1px solid #ccc"> |
|||
<HistoryLine :is-async="index !== 0" :title="item.title" :data="item.seriesData" :name="item.name" height="250px" /> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</Card> |
|||
</div> |
|||
</template> |
|||
|
|||
<style lang="less" scoped> |
|||
:deep(.ant-table-body){ |
|||
height:100% !important; |
|||
max-height:100% !important |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue