import React, { useEffect, useRef, useState } from 'react';
import { Form, Row, Col, Card, Modal, Input, Select, Upload, Button, message } from 'antd';
import { connect } from 'umi';
import styles from './index.less';
import {
ForkOutlined,
PlusOutlined,
ExclamationCircleFilled,
UploadOutlined,
EditOutlined,
EyeOutlined,
} from '@ant-design/icons';
import * as echarts from 'echarts'
import { recurrent, severity, bug_categories } from './const';
import { timeToString } from '../../utils';
const formItemLayout = {
labelCol: {
span: 8,
},
wrapperCol: {
span: 19,
},
};
const images = [
'../../assents/noArrived.png',
'../../assents/yellowFlag.png',
'../../assents/redFlag.png',
'../../assents/recPage.png',
];
const Step2 = (props) => {
const [reportForm] = Form.useForm();
const [addCaseForm] = Form.useForm();
const [addBugForm] = Form.useForm();
const { data, dispatch, reportCommonInfo,
testCaseList, caseBugList, categories,pathInfo } = props;
const [showTaskRecommendModal, setTaskRecommendModal] = useState(true);
const [showAddTestCaseModal, setAddTestCaseModal] = useState(false);
const [showAddBugModal, setAddTestBugModal] = useState(false);
const currentTestCaseRef = useRef({});
const [isAddCaseStatus, setIsAddCaseStatus] = useState(true);
// const [currActiveTestCase, setCurrActiveTestCase] = useState({});
const [page2List, setPage2List] = useState([]);
const [page3List, setPage3List] = useState([]);
const chartRef = useRef();
if (!data) {
return null;
}
const handleEditReportInfo = ()=>{
console.log('sss')
}
const initEcharts = () => {
let item_color = 'rgba(226,245,240,1)';
let border_color = 'rgba(0,0,0,0.9)';
// let userPath = this.userPath;
let categories = [
{
'name': '暂无Bug',
'icon': images[0],
'itemStyle': {'normal': {'color': item_color, 'borderColor': border_color}}
},
{
'name': '已有Bug',
'icon': images[1],
'itemStyle': {'normal': {'color': item_color, 'borderColor': border_color}}
},
{
'name': '我的Bug',
'icon': images[2],
'itemStyle': {'normal': {'color': item_color, 'borderColor': border_color}}
},
{
'name': '推荐页面',
'icon': images[3],
'itemStyle': {'normal': {'color': item_color, 'borderColor': border_color}}
}
];
let option2 = {
legend: { //配置legend,这里的data,要对应type为‘bar’的series数据项的‘name’名称,作为图例的说明
data: categories,
selecedMode: false, //图例禁止点击
top: '5%',
left: '3%',
itemWidth: 10,
itemHeight: 10,
orient: 'vertical',
},
tooltip: {
trigger: 'item',
triggerOn: 'mousemove',
formatter: function (params) {
if (params.data.category == 1) {
return params.name + '
' + '我发现/所有: 0/' + params.value;
} else {
return '还未有人在该页面发现Bug,努力寻找第一个Bug吧!';
}
}
},
grid: {
z: 1, //grid作为柱状图的坐标系,其层级要和仪表图层级不同,同时隐藏
show: false,
left: '-30%',
right: '4%',
bottom: '3%',
containLabel: true,
splitLine: {
show: false //隐藏分割线
},
},
xAxis: [ //这里有很多的show,必须都设置成不显示
{
type: 'category',
data: [],
axisLine: {
show: false
},
splitLine: {
show: false
},
splitArea: {
interval: 'auto',
show: false
}
}
],
yAxis: [ //这里有很多的show,必须都设置成不显示
{
type: 'value',
axisLine: {
show: false
},
splitLine: {
show: false
},
}
],
series: [
{
type: 'tree',
name: 'tree1',
data: [pathInfo],
//categories:categories,
top: '5%',
left: '9%',
bottom: '1%',
right: '15%',
symbolSize: 12,
label: {
normal: {
position: 'left',
verticalAlign: 'middle',
align: 'right',
fontSize: 9
}
},
leaves: {
label: {
normal: {
position: 'right',
verticalAlign: 'middle',
align: 'left'
}
}
},
expandAndCollapse: true,
initialTreeDepth: 4,
animationDuration: 550,
animationDurationUpdate: 750
},
{
name: categories[0].name,
type: 'bar',
barWidth: '60%', //不显示,可以随便设置
data: [0],
itemStyle: {
normal: {
color: '#41C468', //这里的图例要注意,颜色设置和仪表盘的颜色对应起来
}
}
},
{
name: categories[1].name,
type: 'bar',
barWidth: '60%',
data: [0],
itemStyle: {
normal: {
color: '#70C1B3',
}
}
},
{
name: categories[2].name,
type: 'bar',
barWidth: '60%',
data: [0],
itemStyle: {
normal: {
color: '#00A1E9',
}
}
},
{
name: categories[3].name,
type: 'bar',
barWidth: '60%',
data: [0],
itemStyle: {
normal: {
color: '#00A1E9',
}
}
}
]
}
const chart = echarts.init(document.getElementById('myChart'));
chart.setOption(option2);
}
const handleAddOrEditTestCase = () => {
addCaseForm.validateFields().then((res) => {
let formData = new FormData();
// formData.append("id", values.reportName);
formData.append('report_id', reportCommonInfo.id);
formData.append('name', res.name);
formData.append('front', res.front);
formData.append('behind', res.behind);
formData.append('description', res.result);
if (!isAddCaseStatus) {
//处理编辑用例
formData.append('id', currentTestCaseRef.current.id);
dispatch({
type: 'editReport/updateTestCase',
payload: {
formData,
report_id: reportCommonInfo.id,
},
}).then((res) => {
if (res && res.status === 200) {
message.success('修改成功!');
}
});
} else {
//处理添加用例
dispatch({
type: 'editReport/createTestCase',
payload: {
formData,
report_id: reportCommonInfo.id,
},
}).then((res) => {
if (res && res.id) {
message.success('添加成功!');
}
});
}
setAddTestCaseModal(false);
});
};
const handleAddBug = () => {
addBugForm.validateFields().then((res) => {
let formData = new FormData();
formData.append('report_id', reportCommonInfo.id);
formData.append('title', res.title);
formData.append('description', res.description);
formData.append('bug_category', res.bug_category);
formData.append('severity', res.severity);
formData.append('recurrent', res.recurrent);
formData.append('parent', null);
formData.append('useCase', currentTestCaseRef.current.id);
formData.append('case_id', '1718');
formData.append('case_take_id', '1718-1718');
formData.append('worker_id', '1');
formData.append('page', `${res.page1}-${res.page2}-${res.page3}`);
//新建bug
dispatch({
type:'editReport/createCaseBug',
payload: {
formData,
useCase:currentTestCaseRef.current.id
}
}).then(res=>{
console.log(res.status)
})
});
};
const handleClickTestCase = (caseItem) => {
// setCurrActiveTestCase(caseItem);
currentTestCaseRef.current = caseItem;
dispatch({
type: 'editReport/getCaseBugList',
payload: caseItem.id,
})
};
const handleEditTestCase = (item) => {
setIsAddCaseStatus(false);
currentTestCaseRef.current = item;
addCaseForm.setFieldsValue(currentTestCaseRef.current);
setAddTestCaseModal(true);
};
const handleClickAddCase = () => {
addCaseForm.resetFields();
setAddTestCaseModal(true);
};
const handleClickAddBug = () => {
//current目前只在点击edit cease的时候会有用
addBugForm.resetFields();
setAddTestBugModal(true);
};
const handleClickRecommendBtn = () => {
dispatch({
type: 'editReport/getPathInfo',
payload: {
case_take_id: '1718-1718',
report_id: reportCommonInfo.id,
},
})
dispatch({
type: 'editReport/getBugRecommendPath',
payload: {
case_take_id: '1718-1718',
report_id: reportCommonInfo.id,
},
})
dispatch({
type: 'editReport/getBugRecommendList',
payload: {
case_take_id: '1718-1718',
report_id: reportCommonInfo.id,
},
})
setTaskRecommendModal(true);
initEcharts();
}
const handleSelectPage1 = (val) =>{
let item = categories.find(x=>x.item === val);
setPage2List(item.children)
}
const handleSelectPage2 = (val) =>{
let item = page2List.find(x=>x.item === val);
setPage3List(item.children)
}
useEffect(() => {
//判断是否已经有报告
dispatch({
type: 'editReport/getReportInfo',
payload: {
case_take_id: '1718-1718',
worker_id: 1,
},
}).then((res) => {
// console.log(res)
// console.log(reportCommonInfo)
//有报告,获取对应信息。没有就直接转去了第一步
dispatch({
type: 'editReport/getTestCaseList',
payload: { report_id: reportCommonInfo.id },
}).then((res)=>{
currentTestCaseRef.current = res;
// setCurrActiveTestCase(res);
});
dispatch({
type: 'editReport/getCategories',
payload: { examId: 1945 },
});
});
}, [dispatch,reportCommonInfo.id]);
return (
{item.name}