Browse Source

ADD:step1 token to detail

wjj 4 years ago
parent
commit
3a8e56e6e7

+ 33 - 4
src/components/GlobalHeader/RightContent.jsx

@@ -1,6 +1,6 @@
 import { Tooltip, Tag } from 'antd';
 import { QuestionCircleOutlined } from '@ant-design/icons';
-import React, { useEffect } from 'react';
+import React, { useEffect,useState } from 'react';
 import { connect, SelectLang } from 'umi';
 import Avatar from './AvatarDropdown';
 import HeaderSearch from '../HeaderSearch';
@@ -13,7 +13,9 @@ const ENVTagColor = {
 };
 
 const GlobalHeaderRight = (props) => {
+  console.log('right')
   const { theme, layout,dispatch ,taskName} = props;
+  const [ idInfo,setIdInfo ] = useState({})
   let className = styles.right;
 
   if (theme === 'dark' && layout === 'top') {
@@ -21,11 +23,38 @@ const GlobalHeaderRight = (props) => {
   }
 
   useEffect(()=>{
+    let token = window.location.search.split('token=') && window.location.search.split('token=')[1];
+    dispatch({
+      type: 'editReport/getIdByToken',
+      payload: {
+        token
+      }
+    }).then(res=>{
+      console.log(res)
+      //{result: "fail", cause: "身份验证失败,请重新点击按钮进入答题页面"}
+      if(res.result === 'success'){
+        let idInfo = {
+          roleId:res.roleId,
+          caseId:res.caseId,
+          examId:res.examId,
+          userId:res.userId,
+          case_take_id:res.caseId + '-' + res.examId,
+        }
+        setIdInfo(idInfo);
+        console.log(idInfo)
+      }else{
+        //错误处理
+        console.log(res)
+      }
+    })
+  },[])
+
+  useEffect(()=>{
     dispatch({
       type: 'report/getTaskName',
-      payload: { examId: 1945 }
+      payload: { examId: idInfo.examId }
     });
-  },[dispatch])
+  },[dispatch,idInfo.examId])
   return (
     <div className={className}>
       {/*<NoticeIconView />*/}
@@ -38,5 +67,5 @@ const GlobalHeaderRight = (props) => {
 export default connect(({ report,settings }) => ({
   theme: settings.navTheme,
   layout: settings.layout,
-  taskName:report.taskName
+  taskName:report.taskName,
 }))(GlobalHeaderRight);

+ 12 - 8
src/pages/edit/components/Step1/index.jsx

@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import React, { useEffect, useState } from 'react';
 import { Form, Button, Divider, Input, Select } from 'antd';
 import { connect } from 'umi';
 import styles from './index.less';
@@ -17,26 +17,29 @@ const tailLayout = {
 };
 
 const Step1 = (props) => {
-  const { dispatch, data, osType } = props;
+  console.log('step1')
+
+  const { dispatch, data, osType ,commonId} = props;
   const [form] = Form.useForm();
   if (!data) {
     return null;
   }
 
   useEffect(() => {
+    console.log(commonId.examId)
     dispatch({
       type: 'editReport/getOsType',
-      payload: { examId: 1718 },
+      payload: { examId: commonId.examId },
     });
-  }, [dispatch]);
+  }, [dispatch,commonId.examId]);
 
   const onFinish = (values) => {
     let formData = new FormData();
     formData.append('name', values.name);
-    formData.append('case_id', '1718');
-    formData.append('task_id', '1718');
-    formData.append('worker_id', '2');
-    formData.append('case_take_id', '1718-1718');
+    formData.append('case_id', commonId.caseId);
+    formData.append('task_id', commonId.examId);
+    formData.append('worker_id', commonId.userId);
+    formData.append('case_take_id', `${commonId.caseId}-${commonId.examId}`);
     formData.append('device_model', values.device_brand);
     formData.append('device_brand', values.device_name);
     formData.append('device_os', values.device_os);
@@ -91,4 +94,5 @@ const Step1 = (props) => {
 export default connect(({ editReport }) => ({
   data: editReport.step,
   osType: editReport.osType,
+  commonId: editReport.commonId,
 }))(Step1);

+ 13 - 28
src/pages/edit/components/Step2/index.jsx

@@ -43,6 +43,7 @@ const uploadButton = (
 );
 
 const Step2 = (props) => {
+  console.log('step2')
   const [reportForm] = Form.useForm();
   const [addCaseForm] = Form.useForm();
   const [addBugForm] = Form.useForm();
@@ -75,8 +76,8 @@ const Step2 = (props) => {
       let formData = new FormData();
       formData.append('name', res.name);
       formData.append('report_id', reportCommonInfo.id);
-      formData.append('worker_id', '2');
-      formData.append('case_take_id', '1718-1718');
+      formData.append('worker_id', idInfo.userId);
+      formData.append('case_take_id', idInfo.case_take_id);
       formData.append('device_model', res.device_model);
       formData.append('device_brand', res.device_brand);
       formData.append('device_os', res.device_os);
@@ -134,15 +135,6 @@ const Step2 = (props) => {
     });
   };
 
-  // useEffect(()=>{
-  //   const
-  //   const currCase = testCaseList.filter(item=>
-  //     item.id === res.id
-  //   )
-  //   console.log(currCase);
-  //   currentTestCaseRef.current = currCase;
-  // },[testCaseList])
-
   const handleAddBug = () => {
     addBugForm.validateFields().then((res) => {
       let formData = new FormData();
@@ -154,9 +146,9 @@ const Step2 = (props) => {
       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', '2');
+      formData.append('case_id', idInfo.caseId);
+      formData.append('case_take_id', idInfo.case_take_id);
+      formData.append('worker_id', idInfo.userId);
       formData.append('page', `${res.page1}-${res.page2}-${res.page3}`);
       if (fileList.length) {
         let str = '';
@@ -210,21 +202,21 @@ const Step2 = (props) => {
     dispatch({
       type: 'editReport/getPathInfo',
       payload: {
-        case_take_id: '1718-1718',
+        case_take_id: idInfo.case_take_id,
         report_id: reportCommonInfo.id,
       },
     });
     dispatch({
       type: 'editReport/getBugRecommendPath',
       payload: {
-        case_take_id: '1718-1718',
+        case_take_id: idInfo.case_take_id,
         report_id: reportCommonInfo.id,
       },
     });
     dispatch({
       type: 'editReport/getBugRecommendList',
       payload: {
-        case_take_id: '1718-1718',
+        case_take_id: idInfo.case_take_id,
         report_id: reportCommonInfo.id,
       },
     });
@@ -277,14 +269,7 @@ const Step2 = (props) => {
   };
 
   useEffect(() => {
-    //判断是否已经有报告
-    dispatch({
-      type: 'editReport/getReportInfo',
-      payload: {
-        case_take_id: '1718-1718',
-        worker_id: '2',
-      },
-    }).then((res) => {
+    //能到第二步,说明是有报告信息的
       //有报告,获取对应信息。没有就直接转去了第一步
       dispatch({
         type: 'editReport/getTestCaseList',
@@ -300,10 +285,9 @@ const Step2 = (props) => {
       });
       dispatch({
         type: 'editReport/getCategories',
-        payload: { examId: 1718 },
+        payload: { examId: idInfo.examId },
       });
-    });
-  }, [dispatch, reportCommonInfo.id]);
+  }, [dispatch, reportCommonInfo,idInfo.userId,idInfo.examId,idInfo.case_take_id]);
 
   useEffect(() => {
     let bugs = caseBugList.map(item => item.detail);
@@ -813,4 +797,5 @@ export default connect(({ editReport, loading }) => ({
   categories: editReport.categories,
   pathInfo: editReport.pathInfo,
   osType: editReport.osType,
+  commonId: editReport.commonId,
 }))(Step2);

+ 96 - 16
src/pages/edit/index.jsx

@@ -1,10 +1,12 @@
 import React, { useState, useEffect } from 'react';
-import { Card, Steps } from 'antd';
+import { Card, Steps,Modal} from 'antd';
 import { PageContainer } from '@ant-design/pro-layout';
+import { ExclamationCircleOutlined } from '@ant-design/icons';
 import { connect } from 'umi';
 import Step1 from './components/Step1';
 import Step2 from './components/Step2';
 import styles from './style.less';
+const { confirm } = Modal;
 const { Step } = Steps;
 
 const getCurrentStepAndComponent = (current) => {
@@ -24,28 +26,106 @@ const getCurrentStepAndComponent = (current) => {
   }
 };
 
-const EditReport = ({ current }) => {
-  const [stepComponent, setStepComponent] = useState(<Step1 />);
+const EditReport = ( props ) => {
+  console.log('index')
+  const { dispatch,current,commonId,reportCommonInfo } = props;
+
+  const [stepComponent, setStepComponent] = useState(null);
   const [currentStep, setCurrentStep] = useState(0);
+  const [idInfo, setIdInfo] = useState({});
+
   useEffect(() => {
-    const { step, component } = getCurrentStepAndComponent(current);
-    setCurrentStep(step);
-    setStepComponent(component);
+    if(reportCommonInfo.id){
+      const { step, component } = getCurrentStepAndComponent(current);
+      setCurrentStep(step);
+      setStepComponent(component);
+    }
   }, [current]);
 
+  // useEffect(() => {
+  //   console.log('token 获取')
+  //   let token = window.location.search.split('token=') && window.location.search.split('token=')[1];
+  //   dispatch({
+  //     type: 'editReport/getIdByToken',
+  //     payload: {
+  //       token,
+  //     },
+  //   }).then(res => {
+  //     //{result: "fail", cause: "身份验证失败,请重新点击按钮进入答题页面"}
+  //     if (res.result === 'success') {
+  //       console.log(res)
+  //     } else {
+  //       //错误处理
+  //       confirm({
+  //         title: '提示:',
+  //         icon: <ExclamationCircleOutlined />,
+  //         content: '身份验证失效,请返回任务页面重新进入',
+  //         onOk() {
+  //           window.opener=null;
+  //           window.open('','_self');
+  //           window.close();
+  //         },
+  //         onCancel() {
+  //           window.opener=null;
+  //           window.open('','_self');
+  //           window.close();
+  //         },
+  //       });
+  //     }
+  //   });
+  // }, [dispatch]);
+
+  useEffect(()=>{
+    let idInfo = {
+      roleId: commonId.roleId,
+      caseId: commonId.caseId,
+      examId: commonId.examId,
+      userId: commonId.userId,
+      case_take_id: commonId.caseId + '-' + commonId.examId,
+    };
+    setIdInfo(idInfo);
+  },[commonId.userId])
+
+  useEffect(() => {
+    if(idInfo&&idInfo.userId){
+      //判断是否已经有报告
+      dispatch({
+        type: 'editReport/getReportInfo',
+        payload: {
+          case_take_id: idInfo.case_take_id,
+          worker_id: idInfo.userId,
+        },
+      }).then((res) => {
+        //有报告,获取对应信息。没有就直接转去了第一步
+        if (res.status === 200) {
+          //表示这时候已经有报告信息了
+          const { step, component } = getCurrentStepAndComponent('detail');
+            setCurrentStep(step);
+            setStepComponent(component);
+        } else {
+          const { step, component } = getCurrentStepAndComponent('info');
+          setCurrentStep(step);
+          setStepComponent(component);
+        }
+      });
+    }
+  }, [idInfo.userId]);
+
   return (
-      <Card bordered={false}>
-        <>
-          <Steps current={currentStep} className={styles.steps}>
-            <Step title="基础信息" />
-            <Step title="报告详情" />
-          </Steps>
-          {stepComponent}
-        </>
-      </Card>
+    <Card bordered={false}>
+      <>
+        <Steps current={currentStep} className={styles.steps}>
+          <Step title="基础信息" />
+          <Step title="报告详情" />
+        </Steps>
+        {stepComponent}
+      </>
+    </Card>
   );
-};
+}
 
 export default connect(({ editReport }) => ({
   current: editReport.current,
+  commonId: editReport.commonId,
+  reportCommonInfo: editReport.reportCommonInfo,
 }))(EditReport);

+ 23 - 9
src/pages/edit/model.js

@@ -18,13 +18,14 @@ import {
   cancelGoodReport,
   cancelBadReport,
   recordAction,
-  uploadImage
+  uploadImage,
+  getIdByToken
 } from './service';
 
 const Model = {
   namespace: 'editReport',
   state: {
-    current: 'detail',
+    current: 'info',
     osType: [],
     step: {
       payAccount: 'ant-design@alipay.com',
@@ -40,6 +41,7 @@ const Model = {
     pathInfo: [],
     recommendPath: [],
     bugRecommendList: [],
+    commonId:{}
   },
   effects: {
     * submitStepForm({ payload }, { call, put }) {
@@ -56,7 +58,6 @@ const Model = {
     * getOsType({ payload }, { call, put }) {
       const { examId } = payload;
       const res = yield call(getExamInfo, examId);
-      const taskName = res?.result?.name;
       let osType = res?.result?.paper_type;
       osType = JSON.parse(osType)['subTitles'][2]?.value;
       yield put({
@@ -64,6 +65,16 @@ const Model = {
         payload: osType,
       });
     },
+    //
+    * getIdByToken({ payload }, { call, put }) {
+      const { token } = payload;
+      let res = yield call(getIdByToken, token)
+      yield put({
+        type: 'saveCommonId',
+        payload: res,
+      });
+      return res;
+    },
     //todo:更新报告基础信息
     * updateReportCommonDetail({ payload }, { call, put }) {
       let { formData } = payload;
@@ -105,13 +116,13 @@ const Model = {
           type: 'saveReportCommonInfo',
           payload: res.result,
         });
-      } else {
-        yield put({
-          type: 'saveCurrentStep',
-          payload: 'info',
-        });
+      // } else {
+      //   yield put({
+      //     type: 'saveCurrentStep',
+      //     payload: 'info',
+      //   });
       }
-      return res.status;
+      return res;
     },
     //todo:保存报告基础信息
     * saveReportCommonDetail({ payload }, { call, put }) {
@@ -289,6 +300,9 @@ const Model = {
     saveRecommendPath(state, { payload }) {
       return { ...state, recommendPath: payload };
     },
+    saveCommonId(state, { payload }){
+      return { ...state, commonId: payload };
+    }
   },
 };
 export default Model;

+ 11 - 0
src/pages/edit/service.js

@@ -6,6 +6,17 @@ export async function fakeSubmitForm(params) {
     data: params,
   });
 }
+
+//todo:根据token获取信息
+export async function getIdByToken(token) {
+  return request('/api/analyze/tokenToDetail', {
+    method: 'get',
+    params: {
+      token
+    }
+  });
+}
+
 //todo:更新报告
 export async function updateReportInfo(data) {
   console.log(data.get('name'));