(false);
+
+
+ const onFinish = async (values: any) => {
+ if(submitting) return;
+ setSubmitting(true);
+ //对接后端,上传数据
+ const params = {
+ ...values,
+ file: undefined,
+ };
+ try{
+ //需要取到上传的原始数据 file->file->originFileObj
+ const res = await genChartByAiAsyncUsingPOST(params, {}, values.file.file.originFileObj);
+ //正常情况下,如果没有返回值就分析失败,有就分析成功
+ if(!res?.data){
+ message.error('分析失败');
+ }else{
+ message.success('分析任务提交成功,稍后请在我的图表页面查看');
+ form.resetFields();
+ }
+ }catch(e: any){
+ //异常情况下,提示分析失败+具体失败原因
+ message.error('分析失败,' + e.message);
+ }
+ setSubmitting(false);
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }>上传EXCEL文件
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default AddChartAsync;
diff --git a/src/pages/Chart/MyChart/index.tsx b/src/pages/Chart/MyChart/index.tsx
index 668fe99..6d95d42 100644
--- a/src/pages/Chart/MyChart/index.tsx
+++ b/src/pages/Chart/MyChart/index.tsx
@@ -1,6 +1,6 @@
import { listMyChartByPageUsingPOST } from '@/services/answerbi/chartController';
import { useModel } from '@umijs/max';
-import { Avatar, Card, List, message } from 'antd';
+import { Avatar, Card, List, Result, message } from 'antd';
import Search from 'antd/es/input/Search';
import ReactECharts from 'echarts-for-react';
import React, { useEffect, useState } from 'react';
@@ -10,6 +10,8 @@ const MyChartPage: React.FC = () => {
const initSearchParams = {
current: 1,
pageSize: 4,
+ sortField: 'created_time',
+ sortOrder: 'desc',
}
const [searchParams, setSearchParams] = useState({...initSearchParams});
@@ -34,9 +36,11 @@ const MyChartPage: React.FC = () => {
//去除图表标题
if(res.data.records){
res.data.records.forEach(data => {
- const chartOption = JSON.parse(data.genChart ?? '{}');
- chartOption.title = undefined;
- data.genChart = JSON.stringify(chartOption);
+ if(data.status === 'succeed'){
+ const chartOption = JSON.parse(data.genChart ?? '{}');
+ chartOption.title = undefined;
+ data.genChart = JSON.stringify(chartOption);
+ }
})
}
}else{
@@ -51,7 +55,10 @@ const MyChartPage: React.FC = () => {
//首次加载页面时,触发加载数据
useEffect(() => {
//这个页面首次渲染的时候,以及这个数组中的搜索条件发生变化的时候,会执行loadData方法,自动触发重新搜索
- loadData();
+ const timer = setInterval(() => {
+ loadData();
+ }, 5000);
+ return () => clearInterval(timer);
},[searchParams]);
@@ -107,10 +114,45 @@ const MyChartPage: React.FC = () => {
title={item.chartName}
description={item.chartType ? '图表类型:' + item.chartType : undefined}
/>
-
- {'分析目标:' + item.goal}
-
-
+ <>
+ {
+ item.status === 'wait' && <>
+
+ >
+ }
+ {
+ item.status === 'running' && <>
+
+ >
+ }
+ {
+ item.status === 'succeed' && <>
+
+ {'分析目标:' + item.goal}
+
+
+
+ {'分析结论:' + item.genResult}
+ >
+ }
+ {
+ item.status === 'failed' && <>
+
+ >
+ }
+ >