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 (
{timeToString(reportCommonInfo.create_time_millis)} {reportCommonInfo.name} {reportCommonInfo.device_brand} {reportCommonInfo.device_model} {reportCommonInfo.device_os}
handleEditReportInfo()} />

测试用例列表

{testCaseList && testCaseList.map((item) => { return (
{ handleClickTestCase(item); }}>

{item.name}

handleEditTestCase(item)} />
); })}

缺陷列表

{caseBugList && caseBugList.map((item) => { return (
Bug标题:{item.detail.title}
复现程度:{recurrent[item.detail.recurrent]}
严重程度:{severity[item.detail.severity]}
缺陷分类:{item.detail.bug_category}
); })}
确定, ]} onCancel={() => { setAddTestCaseModal(false); }} > 为了评分准确,请勿提交重复测试用例
确定, ]} onCancel={() => { setAddTestBugModal(false); }} className={styles.bugForm} > 为了评分准确,请勿提交重复Bug
{/**/} {/* */} {/* */} {/* */} {/**/}
{/* setTaskRecommendModal(false)}*/} {/* onCancel={() => setTaskRecommendModal(false)} className="addModal">*/} {/*
*/} {/*
*/} {/*
*/} {/*
*/} setTaskRecommendModal(false)} onCancel={() => setTaskRecommendModal(false)} className="addModal">
); }; export default connect(({ editReport, loading }) => ({ submitting: loading.effects['editReport/submitStepForm'], data: editReport.step, reportCommonInfo: editReport.reportCommonInfo, testCaseList: editReport.testCaseList, caseBugList: editReport.caseBugList, categories: editReport.categories, pathInfo:editReport.pathInfo }))(Step2);