From b32f6e3db0d5f1e9b01ef0218c30d93f9e4ebd20 Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Tue, 3 Sep 2019 09:25:12 +0800
Subject: [PATCH 1/9] =?UTF-8?q?=E6=AF=95=E8=AE=BE=E4=BB=BB=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 public/react/src/modules/courses/Index.js     |   6 +-
 .../graduation/tasks/GraduationTaskDetail.js  | 237 ++++++++++++++++++
 .../tasks/GraduationTaskssetting.js           |  93 +++----
 .../shixunHomework/ShixunhomeWorkItem.js      |   8 +-
 4 files changed, 296 insertions(+), 48 deletions(-)
 create mode 100644 public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js

diff --git a/public/react/src/modules/courses/Index.js b/public/react/src/modules/courses/Index.js
index 1b1c523c0..2da14c3fd 100644
--- a/public/react/src/modules/courses/Index.js
+++ b/public/react/src/modules/courses/Index.js
@@ -231,7 +231,7 @@ const GraduationTasksquestions= Loadable({
 //毕设任务列表
 
 const GraduationTaskssettinglist= Loadable({
-    loader: () => import('./graduation/tasks/GraduationTaskssettinglist'),
+    loader: () => import('./graduation/tasks/GraduationTaskDetail'),
     loading: Loading,
 })
 
@@ -565,7 +565,7 @@ class CoursesIndex extends Component{
 
                 {/* 设置毕设任务 https://www.trustie.net/issues/19981 */}
 
-                <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/setting"
+                {/* <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/setting"
                        render={
                            (props) => (<GraduationTaskssetting {...this.props} {...props} {...this.state} />)
                        }
@@ -575,7 +575,7 @@ class CoursesIndex extends Component{
                 <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/questions"
                        render={
                            (props) => (<GraduationTasksquestions {...this.props} {...props} {...this.state} />)
-                       }></Route>
+                       }></Route> */}
 
 
                 <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/list"
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
new file mode 100644
index 000000000..acd28d7fa
--- /dev/null
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
@@ -0,0 +1,237 @@
+import React, { Component } from 'react';
+
+import {Link} from 'react-router-dom';
+import {Tooltip,Menu} from 'antd';
+import Loadable from 'react-loadable';
+import Loading from '../../../../Loading';
+import {BrowserRouter as Router,Route,Switch} from 'react-router-dom';
+import axios from 'axios';
+import HomeworkModal from "../../coursesPublic/HomeworkModal";
+
+import CoursesListType from '../../coursesPublic/CoursesListType';
+import moment from 'moment';
+import "../../css/members.css"
+import "../../css/Courses.css"
+
+
+import Trialapplication from '../../../login/Trialapplication'
+
+
+//毕设任务列表任务列表
+const GraduationTasksquestions= Loadable({
+  loader: () => import('./GraduationTaskssettingquestions'),
+  loading: Loading,
+})
+//毕设任务列表设置
+const GraduationTaskssetting=Loadable({
+  loader: () => import('./GraduationTaskssetting'),
+  loading: Loading,
+})
+
+class GraduationTaskDetail extends Component{
+  constructor(props){
+    super(props);
+    this.state={
+      modalname:undefined,
+      visible:false,
+			Topval:undefined,
+			starttime:undefined,
+			starttimes:undefined,
+			typs:undefined,
+      endtime:undefined,
+      Cancelname:undefined,
+      Savesname:undefined,
+      Cancel:undefined,
+      Saves:undefined,
+      Topvalright:undefined,
+      Botvalleft:undefined
+    }
+  }
+  componentDidMount =()=>{
+		
+  }
+
+  //返回
+  goback=()=>{
+    // let courseId=this.props.match.params.coursesId;
+    // let category_id=this.props.match.params.category_id;
+    // window.location.href="/courses/1309/graduation_tasks/"+category_id;
+		// let courseId = this.props.match.params.coursesId;
+		// if(courseId===undefined){
+		// 	this.props.history.push("/courses");
+		// }else{
+		// 	this.props.history.push(this.props.current_user.first_category_url);
+		// }
+
+		// this.props.history.goBack()
+		this.props.history.replace(`/courses/${this.state.questionslist.course_id}/graduation_tasks/${this.state.questionslist.graduation_id}`);
+  }
+  //立即发布
+  publish=()=>{
+    let starttime= this.props.getNowFormatDates(1,1);
+    let endtime=this.props.getNowFormatDates(2,1);
+    // this.homeworkstart()
+    this.setState({
+      modalname:"立即发布",
+      visible:true,
+			Topval:"学生将立即收到毕设任务",
+      // Botvalleft:"点击修改",
+			// Botval:`本操作只对"未发布"的分班有效`,
+			starttime:moment(moment(new Date())).format("YYYY-MM-DD HH:mm") ,
+			starttimes:this.props.getNowFormatDates(1),
+			typs:"start",
+      endtime:endtime,
+      Cancelname:"暂不发布",
+      Savesname:"立即发布",
+      Cancel:this.cancelmodel,
+      Saves:this.homepublish,
+    })
+  }
+  // 立即截止
+  end=()=>{
+		// this.homeworkstart()
+		this.setState({
+			modalname:"立即截止",
+			visible:true,
+			Topval:"学生将不能再提交作品",
+			// Botvalleft:"暂不截止",
+			// Botval:`本操作只对"提交中"的分班有效`,
+			Cancelname:"暂不截止",
+			Savesname:"立即截止",
+			Cancel:this.cancelmodel,
+			Saves:this.coursetaskend,
+			typs:"end",
+		})
+  }
+  // 取消
+  cancelmodel=()=>{
+    this.setState({
+      Modalstype:false,
+      Loadtype:false,
+      visible:false,
+      Modulationtype:false,
+      Allocationtype:false,
+      Modalstopval:"",
+      ModalCancel:"",
+      ModalSave:"",
+    })
+  }
+
+
+  render(){
+    return(
+      <div className="newMain clearfix">
+        <div className={"educontent mb20"}>
+          <HomeworkModal
+            starttimes={this.state.starttimes}
+            typs={this.state.typs}
+            modalname={this.state.modalname}
+            visible={this.state.visible}
+            Topval={this.state.Topval}
+            Topvalright={this.state.Topvalright}
+            Botvalleft={this.state.Botvalleft}
+            Botval={this.state.Botval}
+            starttime={this.state.starttime}
+            endtime={this.state.endtime}
+            Cancelname={this.state.Cancelname}
+            Savesname={this.state.Savesname}
+            Cancel={this.state.Cancel}
+            Saves={this.state.Saves}
+            course_groups={this.state.course_groups}
+            modaltype={this.state.modaltype}
+            getcourse_groupslist={(id) => this.getcourse_groupslist(id)}
+          />
+          
+          <p className="clearfix mt10">
+            <a onClick={this.goback} className="color-grey-9 fl">计算机基础····</a>
+            <span className="color-grey-9 fl ml3 mr3">&gt;</span>
+            <Link to={`/courses/1309/graduation_tasks/14655`} className="color-grey-9 fl">毕设任务</Link>
+            <span className="color-grey-9 fl ml3 mr3">&gt;</span>
+            <span className="color-grey-6">任务详情</span>
+          </p>
+          <div className="clearfix mt20 mb20 lineh-25 linbox">
+            <p className=" fl color-black summaryname">
+                <Link to={`/courses/1309/graduation_tasks/14655`} className="color-grey-3">测试第一次设置发布时间时截止时间会联动,其它情况不联动</Link>
+            </p>
+            <CoursesListType
+              typelist={['补交中']}
+            />
+            <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
+          </div>
+          <div className="stud-class-set bor-bottom-greyE">
+                <div className="mt10 clearfix edu-back-white poll_list pl20">
+
+                  <Link to={"/courses/1309/graduation_tasks/16455/67/list"}>任务列表</Link>
+                  <Link className="active"  to={"/courses/1309/graduation_tasks/16455/67/questions"}>毕设描述</Link>
+                  <Link style={{paddingLeft:'38px'}}
+                        to={"/courses/1309/graduation_tasks/16455/67/setting?tab=3"}>设置</Link>
+
+                  {/*<a className={"fr color-blue font-16"}>导出成绩</a>*/}
+                  {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.xls"} className={"fr color-blue font-16"}>导出成绩</a>:""}*/}
+                  {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.zip"} className={"fr color-blue font-16"}>导出作品附件</a>:""}*/}
+
+                  <style>
+                    { `
+													.drop_down_menu{
+														height: 118px;
+														left:0px;
+														width: 121px;
+													 }
+													.drop_down_menu li {
+														 overflow: visible;
+															 width: 121px;
+														 }
+														.drop_down_menu li a{
+																 padding:  0px;
+																font-size: 14px;
+														 }
+														 .mt19{
+															margin-top:19px;
+														 }
+														 .drop_down_menu, .drop_down_normal{
+																padding-top: 10px;
+																padding-bottom: 8px;
+														 }
+														 	 .drop_down_menu li .color-dark{
+																	color: #666 !important;
+															}
+													`}
+                  </style>
+                  {this.props.isAdmin()? <li className="li_line drop_down fr color-blue font-16 mr20 mt20" style={{"paddingLeft":"0px"}}>
+                    导出<i className="iconfont icon-xiajiantou font-12 ml2"></i>
+                    <ul className="drop_down_menu" style={{"right":"-34px","left":"unset","height":"auto"}}>
+                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/67/tasks_list.xlsx")} className="color-dark">导出成绩</a></li>
+                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/67/tasks_list.zip")} className="color-dark">导出作品附件</a></li>
+                    </ul>
+                  </li>:""}
+
+                  {/*<a className={"fr color-blue font-16"}>项目在线质量检测</a>*/}
+                  {/* {this.props.isAdmin()?questionslist.status===1? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:"":""}
+                  {this.props.isAdmin()?questionslist.status===0? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>:"":""} */}
+                  <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>
+                  <a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>
+                  {this.props.isAdmin()?<a className={"fr color-blue font-16"} href={"/courses/1309/graduation_tasks/67/edit"}>编辑任务</a>:""}
+                </div>
+              </div>
+          <Switch {...this.props}>
+
+						<Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/setting"
+              render={
+                  (props) => (<GraduationTaskssetting {...this.props} {...props} {...this.state} />)
+              }
+            ></Route>
+
+
+            <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/questions"
+            render={
+                (props) => (<GraduationTasksquestions {...this.props} {...props} {...this.state} />)
+            }></Route>
+            
+          </Switch>
+        </div>
+      </div>
+    )
+  }
+}
+// CNotificationHOC() ( SnackbarHOC() ( TPMIndexHOC))
+export default (GraduationTaskDetail) ;
\ No newline at end of file
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
index 17317d6b2..20c9e93d2 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
@@ -50,6 +50,7 @@ class GraduationTaskssettingapp extends Component{
       baseonproject:false,
       minnum:2,
       maxnum:5,
+      firstTimes:true,
       publish_time:null,
       end_time:null,
       allowlate:1,
@@ -114,6 +115,7 @@ class GraduationTaskssettingapp extends Component{
          max_nums: result.data.max_num,
          task_type: result.data.task_type,
          baseonproject: result.data.base_on_project,
+         firstTimes:!result.data.publish_time && !result.data.end_time,
          publish_time:result.data.publish_time===null||result.data.publish_time=== ""?"":moment(moment(handleDateString(result.data.publish_time))).format("YYYY-MM-DD HH:mm"),
          end_time:result.data.end_time===null||result.data.end_time=== ""?"":moment(moment(handleDateString(result.data.end_time))).format("YYYY-MM-DD HH:mm"),
          allowlate: result.data.allow_late,
@@ -199,41 +201,43 @@ class GraduationTaskssettingapp extends Component{
           maxnum:parseInt(e.target.value)
         })
       }
-
     }
-
-
   }
 
 
   onChangeTimepublish= (date, dateString) => {
-
-
-     let endtime;
-     if(date===null){
-       this.setState({
-         publish_time:null,
-         end_time:null,
-         latetime:null
-       })
-     }else{
-
-       endtime=	moment(moment(handleDateString(dateString))).add(1, 'months').format("YYYY-MM-DD HH:mm")
-       let {allowlate}=this.state;
-       if(allowlate===true||allowlate===1){
-         this.setState({
-           publish_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
-           end_time:endtime,
-           latetime:moment(moment(handleDateString(endtime))).add(1, 'months').format("YYYY-MM-DD HH:mm"),
-         })
-       }else{
-         this.setState({
-           publish_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
-           end_time:endtime
-         })
-       }
-     }
-
+    let endtime;
+    if(date===null){
+      this.setState({
+        publish_time:null,
+        end_time:null,
+        latetime:null
+      })
+    }else{
+      let { firstTimes } = this.state;
+      // 判断是否是第一次设置
+        this.setState({
+          publish_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
+          publishTimetypes:false
+        })
+      if(firstTimes){
+        endtime=	moment(moment(handleDateString(dateString))).add(1, 'months').format("YYYY-MM-DD HH:mm")
+        let {allowlate}=this.state;
+        this.setState({
+          firstTimes:undefined
+        })
+        if(allowlate===true||allowlate===1){
+          this.setState({
+            end_time:endtime,
+            latetime:moment(moment(handleDateString(endtime))).add(1, 'months').format("YYYY-MM-DD HH:mm"),
+          })
+        }else{
+          this.setState({
+            end_time:endtime
+          })
+        }
+      }
+    }
   }
 
 
@@ -245,21 +249,24 @@ class GraduationTaskssettingapp extends Component{
         latetime:null
       })
     }else{
-      let {allowlate}=this.state;
-      if(allowlate===true||allowlate===1){
-        this.setState({
-          end_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
-          latetime:moment(moment(handleDateString(dateString))).add(1, 'months').format("YYYY-MM-DD HH:mm"),
-        })
-      }else{
+      let { firstTimes } = this.state;
+      this.setState({
+        end_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
+        endTimetypes:false
+      })
+      // 判断是否是第一次设置
+      if(firstTimes){
         this.setState({
-          end_time:moment(moment(handleDateString(dateString))).format("YYYY-MM-DD HH:mm"),
+          firstTimes:undefined
         })
+        let {allowlate}=this.state;
+        if(allowlate===true||allowlate===1){
+          this.setState({
+            latetime:moment(moment(handleDateString(dateString))).add(1, 'months').format("YYYY-MM-DD HH:mm"),
+          })
+        }
       }
-
     }
-
-
   }
 
   onChangeTimelatetime=(date, dateString)=>{
@@ -1175,7 +1182,7 @@ class GraduationTaskssettingapp extends Component{
 
 
 
-                  <div className={"h20 mb30 ml30"} >
+                  <div className={"ml30"} >
                     <span>发布时间:</span>
                     <Tooltip placement="bottom" title={this.props.isAdmin()===true?starttimetype===true?"时间已过,不能再修改":"":""}>
                     <span>
@@ -1213,7 +1220,7 @@ class GraduationTaskssettingapp extends Component{
                     {this.state.publishTimetypesval}
                   </div>:""}
 
-                  <div className={"h20 mb30 ml30"} >
+                  <div className={"mt10 ml30"} >
                     <span>截止时间:</span>
                     <Tooltip placement="bottom" title={this.props.isSuperAdmin()===true?"":this.props.isAdmin()===true?endtimetype===true?"时间已过,不能再修改":"":""}>
                     <span>
diff --git a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js
index c3170bf3a..96d06442e 100644
--- a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js
+++ b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js
@@ -330,7 +330,7 @@ class ShixunhomeWorkItem extends Component{
 
             <div className="cl"></div>
             <p className="color-grey panel-lightgrey mt16 fl">
-              <span className="mr50">
+              <span className="mr50 df">
                 {/* <a href="/users/innov" className="panel-name-small hide fl mr15 mr30 color-grey3">{discussMessage.author.name}</a> */}
                 { discussMessage.author && <span className="mr15 color-grey-3">{discussMessage.author}</span> }
 								{discussMessage.commit_count===undefined?"":<span className="mr15 color-grey9">{discussMessage.commit_count} 已交</span>}
@@ -357,6 +357,10 @@ class ShixunhomeWorkItem extends Component{
                   :
                    <span className="mr15 color-grey9">{discussMessage.status_time}</span>
                 }
+                {
+                  discussMessage.upper_category_name && <span className="mr15 color-grey9 task-hide" style={{"maxWidth":"280px"}}>{discussMessage.upper_category_name}</span>
+                }
+                
 
                 {/* { discussMessage.replies_count != 0 && <span className="mr15 color-grey9">{discussMessage.replies_count} 回复</span> }
                 { discussMessage.praise_num != 0 && <span className="mr15 color-grey9">{discussMessage.praise_num} 点赞</span> }
@@ -378,7 +382,7 @@ class ShixunhomeWorkItem extends Component{
 								`
 							}
 						</style>
-            {this.props.isAdmin?<div onClick={(event)=>this.stopPro(event)} className={this.props.isAdminOrCreator()?"homepagePostSetting homepagePostSettingname":"homepagePostSetting homepagePostSettingbox"} style={{"right":"-2px","top":"44px","display":"block"}}>
+            {this.props.isAdmin?<div onClick={(event)=>this.stopPro(event)} className={this.props.isAdminOrCreator()?"homepagePostSetting homepagePostSettingname":"homepagePostSetting homepagePostSettingbox"} style={{"right":"-2px","top":"46px","display":"block"}}>
               <Link className="btn colorblue font-16" to={"/shixuns/"+discussMessage.shixun_identifier+"/challenges"} target={"_blank"}>实训详情</Link>
 								{this.props.isAdminOrCreator()?<a onClick={(event)=>this.editname(discussMessage.name,discussMessage.homework_id,event)} className={"btn colorblue ml20 font-16"}>重命名</a>:""}
               {/*<WordsBtn className="btn colorblue ml20 font-16"  to={`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${discussMessage.homework_id}/settings?tab=3`}  > 设置</WordsBtn>*/}

From 541ec0340a487a25012e192a3d7cacb54455905f Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Tue, 3 Sep 2019 10:53:31 +0800
Subject: [PATCH 2/9] =?UTF-8?q?=E6=AF=95=E8=AE=BE=E4=BB=BB=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 public/react/src/modules/courses/Index.js     |   3 +-
 .../graduation/tasks/GraduationTaskDetail.js  | 127 ++++++++++++++----
 .../tasks/GraduationTaskssetting.js           |  28 ++--
 .../tasks/GraduationTaskssettinglist.js       |  97 +------------
 .../tasks/GraduationTaskssettingquestions.js  |  20 +--
 5 files changed, 128 insertions(+), 147 deletions(-)

diff --git a/public/react/src/modules/courses/Index.js b/public/react/src/modules/courses/Index.js
index 2da14c3fd..c6f424303 100644
--- a/public/react/src/modules/courses/Index.js
+++ b/public/react/src/modules/courses/Index.js
@@ -578,14 +578,13 @@ class CoursesIndex extends Component{
                        }></Route> */}
 
 
-                <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/list"
+                <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id"
                        render={
                            (props) => (<GraduationTaskssettinglist {...this.props} {...props} {...this.state} />)
                        }
                 ></Route>
 
 
-
                 {/* 修改毕设任务 https://www.trustie.net/issues/19981 */}
                 <Route path="/courses/:coursesId/graduation_tasks/:category_id/edit"
                        render={
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
index acd28d7fa..c071024bb 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
@@ -17,16 +17,21 @@ import "../../css/Courses.css"
 import Trialapplication from '../../../login/Trialapplication'
 
 
-//毕设任务列表任务列表
+//毕设描述
 const GraduationTasksquestions= Loadable({
   loader: () => import('./GraduationTaskssettingquestions'),
   loading: Loading,
 })
-//毕设任务列表设置
+//毕设任务设置
 const GraduationTaskssetting=Loadable({
   loader: () => import('./GraduationTaskssetting'),
   loading: Loading,
 })
+//毕设任务列表
+const GraduationTaskslist=Loadable({
+  loader: () => import('./GraduationTaskssettinglist'),
+  loading: Loading,
+})
 
 class GraduationTaskDetail extends Component{
   constructor(props){
@@ -44,18 +49,36 @@ class GraduationTaskDetail extends Component{
       Cancel:undefined,
       Saves:undefined,
       Topvalright:undefined,
-      Botvalleft:undefined
+      Botvalleft:undefined,
+      course_groupslist:undefined,
+      course_groups:undefined,
+      questionslist:undefined
     }
   }
-  componentDidMount =()=>{
-		
-  }
+  componentDidMount(){
+    this.getdatas()
+   }
+   getdatas=()=>{
+     const task_Id = this.props.match.params.task_Id;
+     let url="/graduation_tasks/"+task_Id+".json";
+ 
+     axios.get(url).then((result)=>{
+       if(result.status===200){
+         this.setState({
+           questionslist:result.data
+         })
+ 
+       }
+     }).catch((error)=>{
+       console.log(error)
+     })
+   }
 
   //返回
   goback=()=>{
     // let courseId=this.props.match.params.coursesId;
     // let category_id=this.props.match.params.category_id;
-    // window.location.href="/courses/1309/graduation_tasks/"+category_id;
+    // window.location.href="/courses/"+courseId+"/graduation_tasks/"+category_id;
 		// let courseId = this.props.match.params.coursesId;
 		// if(courseId===undefined){
 		// 	this.props.history.push("/courses");
@@ -87,6 +110,36 @@ class GraduationTaskDetail extends Component{
       Saves:this.homepublish,
     })
   }
+  // 确定立即发布
+  homepublish=(ids,endtime)=>{
+    this.cancelmodel();
+    let task_Id=this.props.match.params.task_Id;
+    const cid = this.props.match.params.coursesId;
+    // let url = `/courses/${cid}/graduation_tasks/publish_task.json`;
+
+    let url="/courses/"+cid+"/graduation_tasks/publish_task.json"
+    axios.post(url,{
+      task_ids:[task_Id],
+      group_ids: this.state.course_groupslist,
+			end_time:endtime,
+    }).then((response)=>{
+      if (response.data.status == 0) {
+				this.getdatas()
+        this.props.showNotification(response.data.message);
+        this.searchValue();
+
+        this.setState({
+          // Modalstopval:response.data.message,
+          // ModalSave:this.cancelmodel,
+          // Loadtype:true,
+          course_groupslist:[],
+          checkAllValue:false
+        })
+      }
+    }).catch((error)=>{
+
+    })
+  }
   // 立即截止
   end=()=>{
 		// this.homeworkstart()
@@ -117,11 +170,25 @@ class GraduationTaskDetail extends Component{
     })
   }
 
+  getcourse_groupslist=(id)=>{
+    this.setState({
+      course_groupslist:id
+    })
+  }
+
 
   render(){
+    
+    let courseId=this.props.match.params.coursesId;
+    let category_id=this.props.match.params.category_id;
+    let task_Id=this.props.match.params.task_Id;
+    let { tab } = this.props;
+    let { questionslist } = this.state
     return(
       <div className="newMain clearfix">
-        <div className={"educontent mb20"}>
+        {
+          questionslist && 
+          <div className={"educontent mb20"}>
           <HomeworkModal
             starttimes={this.state.starttimes}
             typs={this.state.typs}
@@ -143,28 +210,28 @@ class GraduationTaskDetail extends Component{
           />
           
           <p className="clearfix mt10">
-            <a onClick={this.goback} className="color-grey-9 fl">计算机基础····</a>
+            <a onClick={this.goback} className="color-grey-9 fl">{questionslist.course_name}</a>
             <span className="color-grey-9 fl ml3 mr3">&gt;</span>
-            <Link to={`/courses/1309/graduation_tasks/14655`} className="color-grey-9 fl">毕设任务</Link>
+            <Link to={`/courses/${courseId}/graduation_tasks/${category_id}`} className="color-grey-9 fl">{questionslist.graduation_name}</Link>
             <span className="color-grey-9 fl ml3 mr3">&gt;</span>
             <span className="color-grey-6">任务详情</span>
           </p>
           <div className="clearfix mt20 mb20 lineh-25 linbox">
             <p className=" fl color-black summaryname">
-                <Link to={`/courses/1309/graduation_tasks/14655`} className="color-grey-3">测试第一次设置发布时间时截止时间会联动,其它情况不联动</Link>
+                <Link to={`/courses/${courseId}/graduation_tasks/${category_id}`} className="color-grey-3">{questionslist.task_name}</Link>
             </p>
             <CoursesListType
-              typelist={['补交中']}
+              typelist={questionslist.task_status}
             />
             <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
           </div>
           <div className="stud-class-set bor-bottom-greyE">
                 <div className="mt10 clearfix edu-back-white poll_list pl20">
 
-                  <Link to={"/courses/1309/graduation_tasks/16455/67/list"}>任务列表</Link>
-                  <Link className="active"  to={"/courses/1309/graduation_tasks/16455/67/questions"}>毕设描述</Link>
-                  <Link style={{paddingLeft:'38px'}}
-                        to={"/courses/1309/graduation_tasks/16455/67/setting?tab=3"}>设置</Link>
+                  <Link className={tab && tab == "list" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
+                  <Link className={tab && tab == "questions" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
+                  <Link className={tab && tab == "setting" ? "active" : ""} style={{paddingLeft:'38px'}}
+                        to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link>
 
                   {/*<a className={"fr color-blue font-16"}>导出成绩</a>*/}
                   {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.xls"} className={"fr color-blue font-16"}>导出成绩</a>:""}*/}
@@ -200,35 +267,41 @@ class GraduationTaskDetail extends Component{
                   {this.props.isAdmin()? <li className="li_line drop_down fr color-blue font-16 mr20 mt20" style={{"paddingLeft":"0px"}}>
                     导出<i className="iconfont icon-xiajiantou font-12 ml2"></i>
                     <ul className="drop_down_menu" style={{"right":"-34px","left":"unset","height":"auto"}}>
-                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/67/tasks_list.xlsx")} className="color-dark">导出成绩</a></li>
-                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/67/tasks_list.zip")} className="color-dark">导出作品附件</a></li>
+                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.xlsx")} className="color-dark">导出成绩</a></li>
+                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.zip")} className="color-dark">导出作品附件</a></li>
                     </ul>
                   </li>:""}
 
                   {/*<a className={"fr color-blue font-16"}>项目在线质量检测</a>*/}
-                  {/* {this.props.isAdmin()?questionslist.status===1? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:"":""}
-                  {this.props.isAdmin()?questionslist.status===0? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>:"":""} */}
-                  <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>
-                  <a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>
-                  {this.props.isAdmin()?<a className={"fr color-blue font-16"} href={"/courses/1309/graduation_tasks/67/edit"}>编辑任务</a>:""}
+                  { this.props.isAdmin() ? questionslist.status===1 ? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a> : "" : "" }
+                  { this.props.isAdmin() ? questionslist.status===0 ? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a> : "" : "" }
+
+                  { this.props.isAdmin() ? <a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+task_Id+"/edit"}>编辑任务</a> : "" }
                 </div>
               </div>
           <Switch {...this.props}>
 
-						<Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/setting"
+            <Route exact path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/list"
               render={
-                  (props) => (<GraduationTaskssetting {...this.props} {...props} {...this.state} />)
+                  (props) => (<GraduationTaskslist {...this.props} {...props} {...this.state} tab={`list`}/>)
               }
             ></Route>
 
+						<Route exact path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/setting"
+              render={
+                  (props) => (<GraduationTaskssetting {...this.props} {...props} {...this.state} tab={`setting`}/>)
+              }
+            ></Route>
 
-            <Route path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/questions"
+            <Route exact path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/questions"
             render={
-                (props) => (<GraduationTasksquestions {...this.props} {...props} {...this.state} />)
+                (props) => (<GraduationTasksquestions {...this.props} {...props} {...this.state} tab={`setting`}/>)
             }></Route>
             
           </Switch>
         </div>
+        }
+        
       </div>
     )
   }
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
index 20c9e93d2..ffd9f57e6 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
@@ -1064,11 +1064,11 @@ class GraduationTaskssettingapp extends Component{
           <div className="newMain clearfix">
             <div className={"educontent mb20"}>
 
-              <p className="clearfix mt10">
+              {/* <p className="clearfix mt10">
                 <a onClick={this.goback} className="color-grey-9 fl">{coursename}</a>
                 <span className="color-grey-9 fl ml3 mr3">&gt;</span>
                 <Link to={"/courses/"+courseId+"/graduation_tasks/"+settingdata.graduation_id} className="color-grey-9 fl">毕设任务</Link>
-                <span className="color-grey-9 fl ml3 mr3">&gt;</span>
+                <span className="color-grey-9 fl ml3 mr3">&gt;</span> */}
 
                 {/*{taskname===""?"":*/}
                   {/*<WordsBtn style="grey" className="fl">*/}
@@ -1077,10 +1077,10 @@ class GraduationTaskssettingapp extends Component{
                   {/*</WordsBtn>*/}
                 {/*}*/}
 
-                <span className="color-grey-6">任务详情</span>
-              </p>
+                {/* <span className="color-grey-6">任务详情</span>
+              </p> */}
 
-              <div className="clearfix mt20 mb20 lineh-25 linbox">
+              {/* <div className="clearfix mt20 mb20 lineh-25 linbox">
                 <p className=" fl color-black lineh-25 summaryname">
                   <Link to={"/courses/"+courseId+"/graduation"+"/graduation_tasks/"} className="color-grey-3">{taskname}</Link>
                 </p>
@@ -1088,20 +1088,20 @@ class GraduationTaskssettingapp extends Component{
                   typelist={task_status}
                 />
                 <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
-              </div>
+              </div> */}
 
 
-              <div className="stud-class-set bor-bottom-greyE" id={"publishtimestart"}>
-                <div className="mt10 clearfix edu-back-white poll_list pl20" id={"publishtimeend"}>
+              {/* <div className="stud-class-set bor-bottom-greyE" id={"publishtimestart"}>
+                <div className="mt10 clearfix edu-back-white poll_list pl20" id={"publishtimeend"}> */}
 
-                  <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
+                  {/* <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
                   <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
                   <Link className="active"
                         style={{paddingLeft:'38px'}}
-                        to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link>
+                        to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link> */}
 
                   {/*<a className={"fr color-blue font-16"}>导出</a>*/}
-                  <style>
+                  {/* <style>
                     { `
 													.drop_down_menu{
 														height: 118px;
@@ -1134,16 +1134,16 @@ class GraduationTaskssettingapp extends Component{
                       <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.xlsx")} className="color-dark">导出成绩</a></li>
                       <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.zip")} className="color-dark">导出作品附件</a></li>
                     </ul>
-                  </li>:""}
+                  </li>:""} */}
 
                   {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.xls"} className={"fr color-blue font-16"}>导出成绩</a>:""}*/}
                   {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.zip"} className={"fr color-blue font-16"}>导出作品附件</a>:""}*/}
                   {/*<a className={"fr color-blue font-16"}>项目在线质量检测</a>*/}
-                  {this.props.isAdmin()?settingdata.status===1?<a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:"":""}
+                  {/* {this.props.isAdmin()?settingdata.status===1?<a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:"":""}
                   {this.props.isAdmin()?settingdata.status===0?<a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>:"":""}
                   {this.props.isAdmin()?<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+task_Id+"/edit"}>编辑任务</a>:""}
                 </div>
-              </div>
+              </div> */}
 
 
 
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js
index 7e60b995c..e0ba1e95a 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js
@@ -1090,98 +1090,11 @@ class GraduationTaskssettinglist extends Component{
 
 					/>
 
-					{taskslistdata&&taskslistdata?
+					{ taskslistdata && taskslistdata?
 						// 教师列表
-						this.props.isAdmin()?<div className="newMain clearfix">
-								<div className={"educontent mb20"}>
-
-									<p className="clearfix mt10">
-										<a className="color-grey-9 fl" onClick={this.goback}>{taskslistdata.course_name}</a>
-										<span className="color-grey-9 fl ml3 mr3">&gt;</span>
-										<Link className="color-grey-9 fl" to={"/courses/"+courseId+"/graduation_tasks/"+taskslistdata.graduation_id}>{taskslistdata.graduation_name}</Link>
-										<span className="color-grey-9 fl ml3 mr3">&gt;</span>
-										<span className="color-grey-6 fl">任务详情</span>
-									</p>
-
-									<div className="clearfix lineh-25 mt20 mb20 linbox">
-										<p className=" fl color-black summaryname lineh-25 "> <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id} className="color-grey-3">{taskslistdata.task_name}</Link></p>
-										<CoursesListType
-											typelist={taskslistdata.task_status}
-										/>
-										<a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
-									</div>
-
-
-									<div className="stud-class-set bor-bottom-greyE">
-										<div className="mt10 clearfix edu-back-white poll_list pl20">
-											{/*<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.xls"} className={"fr color-blue font-16"}>导出成绩</a>*/}
-											{/*<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.zip"} className={"fr color-blue font-16"}>导出作品附件</a>*/}
-											<Link className="active"  to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
-											<Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
-											<Link style={{paddingLeft:'38px'}}
-											      to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link>
-
-											{/*<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+task_Id+"/edit"}>编辑任务</a>*/}
-											{/*<a className={"fr color-blue font-16"} onClick={this.end}>立即截止</a>*/}
-
-
-											{/*<a className={"fr color-blue font-16"}>导出作品附件</a>*/}
-											<style>
-												{ `
-													.drop_down_menu{
-														height: 118px;
-														left:0px;
-														width: 121px;
-													 }
-													.drop_down_menu li {
-														 overflow: visible;
-															 width: 121px;
-														 }
-														.drop_down_menu li a{
-																 padding:  0px;
-																font-size: 14px;
-														 }
-														 .mt19{
-															margin-top:19px;
-														 }
-														 .drop_down_menu, .drop_down_normal{
-																padding-top: 10px;
-																padding-bottom: 8px;
-														 }
-														 .drop_down_menu li .color-dark{
-																	color: #666 !important;
-															}
-													`}
-											</style>
-											{this.props.isAdmin()? <li className="li_line drop_down fr color-blue font-16 mr20 mt20" style={{"paddingLeft":"0px"}}>
-												导出<i className="iconfont icon-xiajiantou font-12 ml2"></i>
-												<ul className="drop_down_menu" style={{"right":"-34px","left":"unset","height":"auto"}}>
-													<li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.xlsx")} className="color-dark">学生成绩</a></li>
-													<li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.zip")} className="color-dark">作品附件</a></li>
-												</ul>
-											</li>:""}
-
-											{/*<a className={"fr color-blue font-16"}>项目在线质量检测</a>*/}
-											{taskslistdata.status===1? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:""}
-											{taskslistdata.status===0?<a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>:""}
-											 <a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+task_Id+"/edit"}>编辑任务</a>
-
-										</div>
-									</div>
-
-
-
+						this.props.isAdmin()?
 									<div className="stud-class-set">
-
 										<div className="clearfix edu-back-white" >
-											{/*提示*/}
-											{/*<Modals*/}
-											{/*modalsType={Modalstype}*/}
-											{/*modalsTopval={Modalstopval}*/}
-											{/*modalCancel={ModalCancel}*/}
-											{/*modalSave={ModalSave}*/}
-											{/*/>*/}
-
 											<ul className="clearfix" style={{padding:'20px 40px 10px 40px'}}>
 
 												<li className="clearfix">
@@ -1384,11 +1297,7 @@ class GraduationTaskssettinglist extends Component{
 												</div>
 												: ""
 										}
-									</div>
-
-
-								</div>
-							</div>:
+									</div>:
 							// 学生列表
 							this.props.isStudent()||this.props.isNotMember()?
 								<div className="newMain clearfix">
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js
index c40c9aa54..6751837df 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js
@@ -307,7 +307,7 @@ class GraduationTasksquestions extends Component{
           {questionslist&&questionslist?<div className="newMain clearfix">
             <div className={"educontent mb20"}>
 
-              <p className="clearfix mt10">
+              {/* <p className="clearfix mt10">
                 <a onClick={this.goback} className="color-grey-9 fl">{questionslist.course_name}</a>
                 <span className="color-grey-9 fl ml3 mr3">&gt;</span>
                 <Link to={"/courses/"+courseId+"/graduation_tasks/"+questionslist.graduation_id} className="color-grey-9 fl">{questionslist.graduation_name}</Link>
@@ -323,22 +323,22 @@ class GraduationTasksquestions extends Component{
                   typelist={questionslist.task_status}
                 />
                 <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
-              </div>
+              </div> */}
 
 
-              <div className="stud-class-set bor-bottom-greyE">
-                <div className="mt10 clearfix edu-back-white poll_list pl20">
+              {/* <div className="stud-class-set bor-bottom-greyE">
+                <div className="mt10 clearfix edu-back-white poll_list pl20"> */}
 
-                  <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
+                  {/* <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
                   <Link className="active"  to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
                   <Link style={{paddingLeft:'38px'}}
-                        to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link>
+                        to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link> */}
 
                   {/*<a className={"fr color-blue font-16"}>导出成绩</a>*/}
                   {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.xls"} className={"fr color-blue font-16"}>导出成绩</a>:""}*/}
                   {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.zip"} className={"fr color-blue font-16"}>导出作品附件</a>:""}*/}
 
-                  <style>
+                  {/* <style>
                     { `
 													.drop_down_menu{
 														height: 118px;
@@ -371,14 +371,14 @@ class GraduationTasksquestions extends Component{
                       <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.xlsx")} className="color-dark">导出成绩</a></li>
                       <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.zip")} className="color-dark">导出作品附件</a></li>
                     </ul>
-                  </li>:""}
+                  </li>:""} */}
 
                   {/*<a className={"fr color-blue font-16"}>项目在线质量检测</a>*/}
-                  {this.props.isAdmin()?questionslist.status===1? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:"":""}
+                  {/* {this.props.isAdmin()?questionslist.status===1? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:"":""}
                   {this.props.isAdmin()?questionslist.status===0? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>:"":""}
                   {this.props.isAdmin()?<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+task_Id+"/edit"}>编辑任务</a>:""}
                 </div>
-              </div>
+              </div> */}
 
 
 

From 5274cd144736d79966ddab0eeb520792f9f5e789 Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Tue, 3 Sep 2019 16:18:42 +0800
Subject: [PATCH 3/9] =?UTF-8?q?=E6=AF=95=E8=AE=BE=E4=BB=BB=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../graduation/tasks/GraduationTaskDetail.js  | 168 +++++++++++++--
 .../tasks/GraduationTaskssetting.js           | 199 +-----------------
 .../tasks/GraduationTaskssettinglist.js       | 194 +++++------------
 .../tasks/GraduationTaskssettingquestions.js  |  13 +-
 4 files changed, 220 insertions(+), 354 deletions(-)

diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
index c071024bb..18870a1be 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
@@ -7,14 +7,14 @@ import Loading from '../../../../Loading';
 import {BrowserRouter as Router,Route,Switch} from 'react-router-dom';
 import axios from 'axios';
 import HomeworkModal from "../../coursesPublic/HomeworkModal";
-
+import AccessoryModal from "../../coursesPublic/AccessoryModal";
+import Associationmodel from '../../coursesPublic/Associationmodel';
 import CoursesListType from '../../coursesPublic/CoursesListType';
 import moment from 'moment';
 import "../../css/members.css"
 import "../../css/Courses.css"
 
-
-import Trialapplication from '../../../login/Trialapplication'
+import Modals from '../../../modals/Modals';
 
 
 //毕设描述
@@ -52,7 +52,13 @@ class GraduationTaskDetail extends Component{
       Botvalleft:undefined,
       course_groupslist:undefined,
       course_groups:undefined,
-      questionslist:undefined
+      questionslist:undefined,
+      tab:"list",
+      visibles:undefined,
+      Modalstype:undefined,
+      Modalstopval:undefined,
+      ModalCancel:undefined,
+      ModalSave:undefined
     }
   }
   componentDidMount(){
@@ -126,8 +132,7 @@ class GraduationTaskDetail extends Component{
       if (response.data.status == 0) {
 				this.getdatas()
         this.props.showNotification(response.data.message);
-        this.searchValue();
-
+        
         this.setState({
           // Modalstopval:response.data.message,
           // ModalSave:this.cancelmodel,
@@ -140,6 +145,13 @@ class GraduationTaskDetail extends Component{
 
     })
   }
+
+  // 刷新
+  resetList=()=>{
+    this.getdatas();
+    this.child && this.child.searchValue();
+  }
+
   // 立即截止
   end=()=>{
 		// this.homeworkstart()
@@ -176,14 +188,93 @@ class GraduationTaskDetail extends Component{
     })
   }
 
+  setTab = (tab) =>{
+    this.setState({
+      tab
+    })
+  }
 
+  // 关联项目
+  AssociationItems=()=>{
+		this.setState({
+			visibles:true
+		})
+  }
+  Cancel=()=>{
+		this.setState({
+			visibles:false
+		})
+  }
+  // 取消关联
+  cannelAssociation=()=>{
+		this.setState({
+			Modalstype:true,
+			Modalstopval:"确定要取消该项目关联?",
+			ModalCancel:this.cannerassocition,
+			ModalSave:this.savetassociton
+		})
+  }
+  savetassociton=()=>{
+		this.cannerassocition();
+		let {questionslist}=this.state;
+		let url = "/graduation_tasks/"+questionslist.task_id+"/graduation_works/cancel_relate_project.json";
+		console.log(url)
+		axios.get(url).then((result)=>{
+			if(result.data.status===0){
+				this.resetList();
+			}
+		}).catch((error)=>{
+			console.log(error)
+		})
+
+	}
+  cannerassocition=()=>{
+		this.setState({
+			Modalstype:false,
+			Modalstopval:"",
+			ModalCancel:"",
+			ModalSave:"",
+			loadtype:false,
+			visibles:false
+		})
+  }
+  // 补交附件
+  handaccessory=()=>{
+	  // let {taskslistdata}=this.state;
+		// let courseId=this.props.match.params.coursesId;
+		//
+		// let url="/courses/"+courseId+"/graduation_tasks/"+taskslistdata.work_id+"/appraise"
+		//
+		// window.location.href=url;
+		this.setState({
+			avisible:true
+		})
+	}
+	Cancelvisible=()=>{
+		this.setState({
+			avisible:false
+		})
+  }
+  
+  bindRef = ref => { this.child = ref } ;
   render(){
     
     let courseId=this.props.match.params.coursesId;
     let category_id=this.props.match.params.category_id;
     let task_Id=this.props.match.params.task_Id;
-    let { tab } = this.props;
-    let { questionslist } = this.state
+    let { 
+      questionslist , 
+      tab , 
+      visibles , 
+      Modalstype,
+      Modalstopval,
+      ModalCancel,
+      ModalSave
+    } = this.state
+    
+    const commom = {
+      setTab:this.setTab
+    }
     return(
       <div className="newMain clearfix">
         {
@@ -208,7 +299,38 @@ class GraduationTaskDetail extends Component{
             modaltype={this.state.modaltype}
             getcourse_groupslist={(id) => this.getcourse_groupslist(id)}
           />
-          
+          {/*关联项目*/}
+					{visibles===true?
+						<Associationmodel
+						modalname={"关联项目"}
+						visible={visibles}
+						Cancel={()=>this.Cancel()}
+						taskid={ questionslist && questionslist.task_id }
+						funlist={this.resetList}
+					  />
+          :""}
+
+          {this.state.avisible===true?<AccessoryModal
+						{...this.props}
+						modalname={"补交附件"}
+						visible={this.state.avisible}
+						Cancelname={"取消"}
+						Savesname={"确认"}
+						Cancel={this.Cancelvisible}
+						categoryid={questionslist.work_id}
+						setupdate={this.resetList}
+					/>:""}
+          {/*提示*/}
+					<Modals
+						modalsType={Modalstype}
+						modalsTopval={Modalstopval}
+						modalCancel={ModalCancel}
+						modalSave={ModalSave}
+						closable={false}
+						footer={null}
+						destroyOnClose={true}
+						centered={true}
+					/>
           <p className="clearfix mt10">
             <a onClick={this.goback} className="color-grey-9 fl">{questionslist.course_name}</a>
             <span className="color-grey-9 fl ml3 mr3">&gt;</span>
@@ -226,7 +348,7 @@ class GraduationTaskDetail extends Component{
             <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
           </div>
           <div className="stud-class-set bor-bottom-greyE">
-                <div className="mt10 clearfix edu-back-white poll_list pl20">
+                <div className="clearfix edu-back-white poll_list pl20">
 
                   <Link className={tab && tab == "list" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
                   <Link className={tab && tab == "questions" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
@@ -261,7 +383,10 @@ class GraduationTaskDetail extends Component{
 														 }
 														 	 .drop_down_menu li .color-dark{
 																	color: #666 !important;
-															}
+                              }
+                            .linbox{
+                              height: 26px;
+                            }
 													`}
                   </style>
                   {this.props.isAdmin()? <li className="li_line drop_down fr color-blue font-16 mr20 mt20" style={{"paddingLeft":"0px"}}>
@@ -271,6 +396,21 @@ class GraduationTaskDetail extends Component{
                       <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.zip")} className="color-dark">导出作品附件</a></li>
                     </ul>
                   </li>:""}
+                  {questionslist.work_status===undefined||questionslist.work_status===null||questionslist.work_status.length===0?"":questionslist.work_status.map((item,key)=>{
+                    return(
+                      <span key={key}>
+                          {item==="提交作品"?<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/works/new"}>提交作品</a>:""}
+                          {item==="补交作品"?<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/works/new"}>补交作品</a>:""}
+                          {item==="修改作品"?<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+questionslist.work_id+"/works/edit"}>修改作品</a>:""}
+                          {item==="查看作品"?<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+questionslist.work_id+"/works/edit"}>查看作品</a> :""}
+                          {item==="创建项目"?<a className={"fr color-blue font-16"} href={'/projects/new'} target="_blank">创建项目</a>:""}
+                          {item==="关联项目"?<a className={"fr color-blue font-16"} onClick={this.AssociationItems}>关联项目</a>:""}
+                          {item==="取消关联"?<a className={"fr color-blue font-16"} onClick={this.cannelAssociation}>取消关联</a>:""}
+                          {item==="补交附件"?<a className={"fr color-blue font-16"} onClick={this.handaccessory}>补交附件</a>:""}
+                      </span>
+
+                    )
+                  })}
 
                   {/*<a className={"fr color-blue font-16"}>项目在线质量检测</a>*/}
                   { this.props.isAdmin() ? questionslist.status===1 ? <a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a> : "" : "" }
@@ -283,19 +423,19 @@ class GraduationTaskDetail extends Component{
 
             <Route exact path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/list"
               render={
-                  (props) => (<GraduationTaskslist {...this.props} {...props} {...this.state} tab={`list`}/>)
+                  (props) => (<GraduationTaskslist {...this.props} {...props} {...this.state} {...commom} triggerRef={this.bindRef} tab={`list`}/>)
               }
             ></Route>
 
 						<Route exact path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/setting"
               render={
-                  (props) => (<GraduationTaskssetting {...this.props} {...props} {...this.state} tab={`setting`}/>)
+                  (props) => (<GraduationTaskssetting {...this.props} {...props} {...this.state} {...commom} tab={`setting`}/>)
               }
             ></Route>
 
             <Route exact path="/courses/:coursesId/graduation_tasks/:category_id/:task_Id/questions"
             render={
-                (props) => (<GraduationTasksquestions {...this.props} {...props} {...this.state} tab={`setting`}/>)
+                (props) => (<GraduationTasksquestions {...this.props} {...props} {...this.state} {...commom} tab={`questions`}/>)
             }></Route>
             
           </Switch>
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
index ffd9f57e6..95d7a64cd 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
@@ -151,7 +151,11 @@ class GraduationTaskssettingapp extends Component{
     this.getsettings();
 		if(this.props.isAdmin()===true&&isNaN(id)){
 			this.editSetting()
-		}
+    }
+    
+    let tab = this.props.tab;
+    this.props.setTab && this.props.setTab(tab);
+
   }
 
 
@@ -406,46 +410,6 @@ class GraduationTaskssettingapp extends Component{
       opergrade:e.target.checked
     })
   }
-  //立即发布
-  publish=()=>{
-    let starttime= this.props.getNowFormatDates(1,1);
-    let endtime=this.props.getNowFormatDates(2,1);
-    // this.homeworkstart()
-    this.setState({
-      modalname:"立即发布",
-      visibles:true,
-			Topval:"学生将立即收到毕设任务",
-      // Botvalleft:"点击修改",
-			// Botval:`本操作只对"未发布"的分班有效`,
-      starttime:moment(moment(new Date())).format("YYYY-MM-DD HH:mm") ,
-			starttimes:this.props.getNowFormatDates(1),
-			typs:"start",
-      endtime:endtime,
-      Cancelname:"暂不发布",
-      Savesname:"立即发布",
-      Cancel:this.cancelmodel,
-      Saves:this.homepublish,
-    })
-
-  }
-  //立即发布
-  homeworkstart=()=>{
-    let coursesId=this.props.match.params.coursesId;
-    let url="/courses/"+coursesId+"/all_course_groups.json";
-
-    axios.get(url).then((response) => {
-
-      if(response.status===200){
-        this.setState({
-          modaltype:response.data.course_groups===null||response.data.course_groups.length===0?2:1,
-          course_groups:response.data.course_groups,
-        })
-      }
-    }).catch((error) => {
-      console.log(error)
-    });
-
-  }
 
   homepublish=(ids,endtime)=>{
     let task_Id=this.props.match.params.task_Id;
@@ -771,43 +735,12 @@ class GraduationTaskssettingapp extends Component{
     })
   }
 
-  goback=()=>{
-    // let courseId=this.props.match.params.coursesId;
-		// if(courseId===undefined){
-		// 	this.props.history.push("/courses");
-		// }else{
-		// 	this.props.history.push(this.props.current_user.first_category_url);
-		// }
-		// this.props.history.goBack()
-		// this.props.history.replace(this.props.current_user.first_category_url);
-		this.props.history.replace(`/courses/${this.state.settingdata.course_id}/graduation_tasks/${this.state.settingdata.graduation_id}`);
-
-  }
-
   isgoback=()=>{
 		this.getsettings();
     this.setState({
       flagPageEdit: false,
     })
   }
-  end=()=>{
-
-    this.setState({
-      modalname:"立即截止",
-      visibles:true,
-			Topval:"学生将不能再提交作品",
-      // Botvalleft:"暂不截止",
-			// Botval:`本操作只对"提交中"的分班有效`,
-      Cancelname:"暂不截止",
-      Savesname:"立即截止",
-      Cancel:this.cancelmodel,
-      Saves:this.coursetaskend,
-			typs:"end",
-    })
-    // this.homeworkstart()
-  }
-
-
   cancelmodel=()=>{
 
     this.setState({
@@ -996,7 +929,7 @@ class GraduationTaskssettingapp extends Component{
     return(
       <React.Fragment>
 
-        {settingdata&&settingdata? <div>
+        { settingdata && settingdata ? <div>
           {/*提示*/}
           <Modals
             modalsType={Modalstype}
@@ -1005,24 +938,6 @@ class GraduationTaskssettingapp extends Component{
             modalSave={ModalSave}
             loadtype={Loadtype}
           />
-
-          {/*/!*立即发布*!/*/}
-          {/*<PublishModals*/}
-            {/*modalname={modalname}*/}
-            {/*visible={visible}*/}
-            {/*Topval={Topval}*/}
-            {/*Topvalright={Topvalright}*/}
-            {/*Botvalleft={Botvalleft}*/}
-            {/*Botval={Botval}*/}
-            {/*starttime={starttime}*/}
-            {/*endtime={endtime}*/}
-            {/*Cancelname={Cancelname}*/}
-            {/*Savesname={Savesname}*/}
-            {/*Cancel={Cancel}*/}
-            {/*Saves={Saves}*/}
-            {/*course_groups={course_groups}*/}
-            {/*skipTop={this.skipTop}*/}
-          {/*/>*/}
 					<DownloadMessageysl
 						{...this.props}
 						value={this.state.DownloadMessageval}
@@ -1056,97 +971,8 @@ class GraduationTaskssettingapp extends Component{
             .ant-input{
               height:40px;
             }
-            .linbox{
-							height: 26px;
-						 }
             `
           }</style>
-          <div className="newMain clearfix">
-            <div className={"educontent mb20"}>
-
-              {/* <p className="clearfix mt10">
-                <a onClick={this.goback} className="color-grey-9 fl">{coursename}</a>
-                <span className="color-grey-9 fl ml3 mr3">&gt;</span>
-                <Link to={"/courses/"+courseId+"/graduation_tasks/"+settingdata.graduation_id} className="color-grey-9 fl">毕设任务</Link>
-                <span className="color-grey-9 fl ml3 mr3">&gt;</span> */}
-
-                {/*{taskname===""?"":*/}
-                  {/*<WordsBtn style="grey" className="fl">*/}
-                    {/*<Link to={"/courses/"+courseId+"/graduation"+"/graduation_tasks/"} className="color-grey-6">{taskname}</Link>*/}
-                    {/*<span className="color-grey-c ml3 mr3">&gt;</span>*/}
-                  {/*</WordsBtn>*/}
-                {/*}*/}
-
-                {/* <span className="color-grey-6">任务详情</span>
-              </p> */}
-
-              {/* <div className="clearfix mt20 mb20 lineh-25 linbox">
-                <p className=" fl color-black lineh-25 summaryname">
-                  <Link to={"/courses/"+courseId+"/graduation"+"/graduation_tasks/"} className="color-grey-3">{taskname}</Link>
-                </p>
-                <CoursesListType
-                  typelist={task_status}
-                />
-                <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
-              </div> */}
-
-
-              {/* <div className="stud-class-set bor-bottom-greyE" id={"publishtimestart"}>
-                <div className="mt10 clearfix edu-back-white poll_list pl20" id={"publishtimeend"}> */}
-
-                  {/* <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
-                  <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
-                  <Link className="active"
-                        style={{paddingLeft:'38px'}}
-                        to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link> */}
-
-                  {/*<a className={"fr color-blue font-16"}>导出</a>*/}
-                  {/* <style>
-                    { `
-													.drop_down_menu{
-														height: 118px;
-														left:0px;
-														width: 121px;
-													 }
-													.drop_down_menu li {
-														 overflow: visible;
-															 width: 121px;
-														 }
-														.drop_down_menu li a{
-																 padding:  0px;
-																font-size: 14px;
-														 }
-														 .mt19{
-															margin-top:19px;
-														 }
-														 .drop_down_menu, .drop_down_normal{
-																padding-top: 10px;
-																padding-bottom: 8px;
-														 }
-														 	 .drop_down_menu li .color-dark{
-																	color: #666 !important;
-															}
-													`}
-                  </style>
-                  {this.props.isAdmin()? <li className="li_line drop_down fr color-blue font-16 mr20 mt20" style={{"paddingLeft":"0px"}}>
-                    导出<i className="iconfont icon-xiajiantou font-12 ml2"></i>
-                    <ul className="drop_down_menu" style={{"right":"-34px","left":"unset","height":"auto"}}>
-                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.xlsx")} className="color-dark">导出成绩</a></li>
-                      <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.zip")} className="color-dark">导出作品附件</a></li>
-                    </ul>
-                  </li>:""} */}
-
-                  {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.xls"} className={"fr color-blue font-16"}>导出成绩</a>:""}*/}
-                  {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.zip"} className={"fr color-blue font-16"}>导出作品附件</a>:""}*/}
-                  {/*<a className={"fr color-blue font-16"}>项目在线质量检测</a>*/}
-                  {/* {this.props.isAdmin()?settingdata.status===1?<a className={"fr color-blue font-16 mr20"} onClick={() => { this.end()} }>立即截止</a>:"":""}
-                  {this.props.isAdmin()?settingdata.status===0?<a className={"fr color-blue font-16 mr20"} onClick={() => { this.publish()} }>立即发布</a>:"":""}
-                  {this.props.isAdmin()?<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation_tasks/"+task_Id+"/edit"}>编辑任务</a>:""}
-                </div>
-              </div> */}
-
-
-
               <Form  id={"starttime"}>
                 {
                   !flagPageEdit && this.props.isAdmin() === true ?
@@ -1313,11 +1139,6 @@ class GraduationTaskssettingapp extends Component{
 
                 </div>
 
-                {/*<div className="stud-class-set bor-bottom-greyE pd20 edu-back-white pl36">*/}
-                  {/*<div className={" font-16 color-dark h20 mb20"}>项目质量检测 </div>*/}
-
-
-                {/*</div>*/}
 
                 <div className="stud-class-set bor-bottom-greyE pd20 edu-back-white pl36">
                   <div className={" font-16 color-dark h20 mb20"}>评分设置 </div>
@@ -1444,14 +1265,8 @@ class GraduationTaskssettingapp extends Component{
                 {/*<Link to={"/courses/"+courseId+"/graduation_tasks/"+position+"/"+category_id+coursesearch} className="defalutCancelbtn fl">取消</Link>*/}
                 <a onClick={this.isgoback} className="defalutCancelbtn fl">取消</a>
               </div>:"":""}
-            </div>
-            </div>
-
-
+            
         </div>:""}
-
-
-
       </React.Fragment>
 
     )
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js
index e0ba1e95a..047946a6e 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js
@@ -1,7 +1,7 @@
 import React,{Component} from "React";
 import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal,Pagination, Table, Divider, Tag,Tooltip} from "antd";
 import {Link} from 'react-router-dom';
-import { getImageUrl,WordsBtn } from 'educoder';
+import { getImageUrl , NoneData } from 'educoder';
 import axios from 'axios';
 import moment from 'moment';
 import HomeworkModal from "../../coursesPublic/HomeworkModal";
@@ -13,6 +13,7 @@ import AllocationModal from "../../coursesPublic/AllocationModal";
 import Associationmodel from '../../coursesPublic/Associationmodel';
 import AccessoryModal from "../../coursesPublic/AccessoryModal";
 
+
 const CheckboxGroup = Checkbox.Group;
 const Search = Input.Search;
 const qs = require('qs');
@@ -54,8 +55,18 @@ class GraduationTaskssettinglist extends Component{
 	}
 
 	componentDidMount(){
+    let tab = this.props.tab;
+		this.props.setTab && this.props.setTab(tab);
+		
+
 		let{teacher_comment,task_status,course_group,cross_comment,order,b_order,search}=this.state;
 		this.seacthdata(teacher_comment,task_status,course_group,cross_comment,order,b_order,search,this.state.page);
+
+    try{
+      this.props.triggerRef(this)
+    }catch(e){
+      
+    }
 	}
 
 	goback=()=>{
@@ -837,36 +848,22 @@ class GraduationTaskssettinglist extends Component{
 				<div>
 					{this.props.isAdmin()?operation.map((tag,key) => {
 						return(
-							<div key={key}>
-								{/*<Tooltip placement="bottom" title={tag.name==="分配"?"指定该作品的交叉评阅人":tag.name==="调分"?<pre>调整学生最终成绩<br/>*/}
-																					{/*其它历史评分将全部失效</pre>:""}>*/}
-
-									{/*{tag.name==="评阅"?tag.status===0?"--":<a style={{color:'#4CACFF'}} href={"/courses/"+courseId+"/graduation_tasks/"+tag.id+"/appraise"} >*/}
-											{/*{tag.name}*/}
-										{/*</a>*/}
-										{/*:*/}
-										{/*<a style={{color:tag.name==="调分"?"#000":'#4CACFF'}}*/}
-											 {/*onClick={tag.name==="调分"?()=>this.showModulationtype(tag.id):tag.name==="分配"?()=>this.showAllocationModal(tag.id):""}>*/}
-											{/*{tag.status===0?"":tag.name}*/}
-										{/*</a>*/}
-									{/*}*/}
-
-								{/*</Tooltip>*/}
-								<Tooltip placement="bottom" title={tag.name==="分配"?"指定该作品的交叉评阅人":tag.name==="调分"?<pre>调整学生最终成绩<br/>
-																					其它历史评分将全部失效</pre>:""}>
-
-									{tag.name==="评阅"?<a style={{color:'#4CACFF'}} href={"/courses/"+courseId+"/graduation_tasks/"+tag.id+"/appraise"} >
-											{tag.name}
-										</a>
-										:
-										<a style={{color:tag.name==="调分"?"#000":'#4CACFF'}}
-											 onClick={tag.name==="调分"?()=>this.showModulationtype(tag.id):tag.name==="分配"?()=>this.showAllocationModal(tag.id):""}>
-											{tag.name}
-										</a>
-									}
-
-								</Tooltip>
-							</div>
+							<React.Fragment>
+								{
+									tag.name && 
+									<Tooltip key={key} placement="bottom" title={tag.name==="分配"?"指定该作品的交叉评阅人":tag.name==="调分"?<pre>调整学生最终成绩<br/>其它历史评分将全部失效</pre>:""}>
+										{tag.name==="评阅"?<a style={{color:'#4CACFF',padding:"0px 5px"}} href={"/courses/"+courseId+"/graduation_tasks/"+tag.id+"/appraise"} >
+												{tag.name}
+											</a>
+											:
+											<a style={{color:tag.name==="调分"?"#000":'#4CACFF',padding:"0px 5px"}}
+												onClick={tag.name==="调分"?()=>this.showModulationtype(tag.id):tag.name==="分配"?()=>this.showAllocationModal(tag.id):""}>
+												{tag.name}
+											</a>
+										}
+									</Tooltip>
+								}
+							</React.Fragment>
 						)
 					}):""}
 					{
@@ -963,9 +960,6 @@ class GraduationTaskssettinglist extends Component{
 						text-overflow: ellipsis;
 						white-space: nowrap;
 						 }
-						 .linbox{
-								height: 26px;
-						 }
 						 .ant-table-tbody>tr>td, .ant-table-thead>tr>th{
 						     padding: 16px 10px
 						 }
@@ -1090,12 +1084,12 @@ class GraduationTaskssettinglist extends Component{
 
 					/>
 
-					{ taskslistdata && taskslistdata?
+					{ taskslistdata && taskslistdata ?
 						// 教师列表
-						this.props.isAdmin()?
+						this.props.isAdmin() ?
 									<div className="stud-class-set">
 										<div className="clearfix edu-back-white" >
-											<ul className="clearfix" style={{padding:'20px 40px 10px 40px'}}>
+											<ul className="clearfix" style={{padding:'20px 30px 10px 30px'}}>
 
 												<li className="clearfix">
 													<span className="fl mr10 color-grey-8">教师评阅:</span>
@@ -1114,7 +1108,7 @@ class GraduationTaskssettinglist extends Component{
 																)
 															})}
 													</CheckboxGroup>
-													<div className="fr mr5 search-new" style={{marginBottom:'1px'}}>
+													<div className="fr mr5 search-new" style={{marginBottom:'1px',marginRight:"0px"}}>
 														<Search
 															placeholder="请输入姓名或学号搜索"
 															id="subject_search_input"
@@ -1186,10 +1180,10 @@ class GraduationTaskssettinglist extends Component{
 													{taskslistdata.search_assistants&&taskslistdata.search_assistants.cross_comment.map((item,key)=>{
 														return(
 															<span key={key}>
-                              <Checkbox value={item.id} className="fl" checked={parseInt(cross_comment)===item.id?true:false} onClick={this.funcross_comment}>{item.name}
-	                              <span>({item.count})</span>
-                              </Checkbox>
-                          </span>
+																<Checkbox value={item.id} className="fl" checked={parseInt(cross_comment)===item.id?true:false} onClick={this.funcross_comment}>{item.name}
+																	<span>({item.count})</span>
+																</Checkbox>
+                          		</span>
 														)
 													})}
 
@@ -1197,23 +1191,21 @@ class GraduationTaskssettinglist extends Component{
 
 											</ul>
 
-											<div id="graduation_work_list" style={{padding:'0px 40px 10px 40px'}}>
+											<div id="graduation_work_list" style={{padding:'0px 30px 10px 30px'}}>
 												<style>
-													{
-														`
+													{`
 														.edu-menu-lists li:hover {
-																	background: #f0f0f0  !important;
-															}
-															.edu-menu-lists li:hover a{
-																			color: #666 !important;
-																	}
-														`
-													}
+															background: #f0f0f0  !important;
+														}
+														.edu-menu-lists li:hover a{
+																color: #666 !important;
+														}
+													`}
 												</style>
 												<div className="clearfix">
 													{this.props.isAdmin()===true?<span className="fl color-grey-6 font-12">
 														<span className="color-orange-tip">{taskslistdata&&taskslistdata.work_count}</span>
-														个检索结果({taskslistdata&&taskslistdata.work_count} 学生) </span>:""}
+														个检索结果({taskslistdata&&taskslistdata.work_count} 学生)</span>:""}
 													{this.props.isAdmin()===true?<div className="fr color-grey-6 edu-menu-panel">
 														<p>
 															<a data-remote="true" class="color-grey-6 font-12">
@@ -1252,23 +1244,17 @@ class GraduationTaskssettinglist extends Component{
 
 											{
 												JSON.stringify(data)==="[]" ?
-
-													<div id="forum_list" className="forum_table">
-														<div className="mh650 edu-back-white">
-															<div className="edu-tab-con-box clearfix edu-txt-center">
-																<img className="edu-nodata-img mb20" src={getImageUrl("images/educoder/nodata.png")}/>
-																<p className="edu-nodata-p mb30">暂时还没有相关数据哦!</p>
-															</div>
-														</div>
-
-													</div>
+													<NoneData></NoneData>
 													:
 													<div className={"justify break_full_word new_li edu-back-white"} style={{minHeight: "480px"}}>
-														<style>{`
-              	          .ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {
-																			top: 72%;}
+														<style>
+														{`
+              	          		.ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {
+																top: 72%;
+															}
 						                }
-						              `}</style>
+						              	`}
+													</style>
 												<div className="edu-table edu-back-white ">
 												{data===undefined?"":<Table
 													dataSource={data}
@@ -1297,70 +1283,16 @@ class GraduationTaskssettinglist extends Component{
 												</div>
 												: ""
 										}
-									</div>:
+									</div>
+									:
 							// 学生列表
 							this.props.isStudent()||this.props.isNotMember()?
-								<div className="newMain clearfix">
-									<div className={"educontent mb20"}>
-
-										<p className="clearfix mt10">
-											<WordsBtn style="grey" className="fl">  <Link to={"/courses/"+courseId+"/graduation_tasks/"+taskslistdata.graduation_id}>{taskslistdata.course_name}</Link></WordsBtn>
-											<span className="color-grey-9 fl ml3 mr3">&gt;</span>
-											<WordsBtn style="grey" className="fl"> <Link to={"/courses/"+courseId+"/graduation_tasks/"+taskslistdata.graduation_id}className="color-grey-6">{taskslistdata.graduation_name}</Link></WordsBtn>
-											<span className="color-grey-9 fl ml3 mr3">&gt;</span>
-											<span>任务详情</span>
-										</p>
-
-										<div style={{ width:'100%',height:'75px'}} >
-											<p className=" fl color-black mt25 summaryname"> <Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id} className="color-grey-6">{taskslistdata.task_name}</Link></p>
-											<CoursesListType
-												typelist={taskslistdata.task_status}
-												typesylename={"mt22"}
-											/>
-											<a className="color-grey-6 fr font-16 ml30 mt10 mr20" onClick={this.goback}>返回</a>
-										</div>
-
-										<div className="stud-class-set bor-bottom-greyE">
-											<div className="mt10 clearfix edu-back-white poll_list pl20">
-
-												<Link className="active"  to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
-												<Link to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
-												<Link style={{paddingLeft:'38px'}}
-												      to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting"}>设置</Link>
-
-
-												{taskslistdata.work_status===undefined||taskslistdata.work_status===null||taskslistdata.work_status.length===0?"":taskslistdata.work_status.map((item,key)=>{
-													return(
-														<span key={key}>
-														  	{item==="提交作品"?<a className={"fr color-blue font-16"} href={"/courses/"+this.props.match.params.coursesId+"/graduation_tasks/"+category_id+"/"+task_Id+"/works/new"}>提交作品</a>:""}
-														  	{item==="补交作品"?<a className={"fr color-blue font-16"} href={"/courses/"+this.props.match.params.coursesId+"/graduation_tasks/"+category_id+"/"+task_Id+"/works/new"}>补交作品</a>:""}
-																{item==="修改作品"?<a className={"fr color-blue font-16"} href={"/courses/"+this.props.match.params.coursesId+"/graduation_tasks/"+category_id+"/"+taskslistdata.work_id+"/works/edit"}>修改作品</a>:""}
-																{item==="查看作品"?<a className={"fr color-blue font-16"} href={"/courses/"+this.props.match.params.coursesId+"/graduation_tasks/"+category_id+"/"+taskslistdata.work_id+"/works/edit"}>查看作品</a> :""}
-													  		{item==="创建项目"?<a className={"fr color-blue font-16"} href={'/projects/new'} target="_blank">创建项目</a>:""}
-															  {item==="关联项目"?<a className={"fr color-blue font-16"} onClick={this.AssociationItems}>关联项目</a>:""}
-														  	{item==="取消关联"?<a className={"fr color-blue font-16"} onClick={this.cannelAssociation}>取消关联</a>:""}
-														  	{item==="补交附件"?<a className={"fr color-blue font-16"} onClick={this.handaccessory}>补交附件</a>:""}
-														</span>
-
-													)
-												})}
-
-												{/*<a className={"fr color-blue font-16"} onClick={this.handaccessory}>补交附件</a>*/}
-												{/*<a className={"fr color-blue font-16"} href={"/courses/"+courseId+"/graduation/graduation_tasks/"+task_Id+"/edit"}>编辑任务</a>*/}
-												{/*<a className={"fr color-blue font-16"}>立即截止</a>*/}
-												{/*<a className={"fr color-blue font-16"}>导出作品附件</a>*/}
-												{/*<a className={"fr color-blue font-16"}>导出成绩</a>*/}
-
-											</div>
-										</div>
-
-
 
 										<div className="stud-class-set ">
 
 											<div className="clearfix edu-back-white" >
 
-												{this.props.isNotMember()?<ul className="clearfix" style={{padding:'20px 40px 10px 40px'}}>
+												{this.props.isNotMember()?<ul className="clearfix" style={{padding:'20px 30px 10px 30px'}}>
 
 													<li className="clearfix">
 														<span className="fl mr10 color-grey-8">教师评阅:</span>
@@ -1463,7 +1395,6 @@ class GraduationTaskssettinglist extends Component{
 
 
 												<div id="graduation_work_list" style={{ padding: '18px 40px 10px',height: '56px'}}>
-
 														{this.props.isAdmin()===true?
 															<div className="clearfix">
 																	<span className="fl color-grey-6 font-12">
@@ -1485,8 +1416,6 @@ class GraduationTaskssettinglist extends Component{
 																	</div>
 															</div>
 															:""}
-
-
 														{this.props.isStudent()===true?
 															<div className="clearfix">
 																<span className="mr15 color-grey9">
@@ -1504,12 +1433,7 @@ class GraduationTaskssettinglist extends Component{
 																</Tooltip>}
 															</div>
 															:""}
-
-
-
 												</div>
-
-
 												{
 													JSON.stringify(data) === "[]" ?
 
@@ -1561,12 +1485,6 @@ class GraduationTaskssettinglist extends Component{
 													: ""
 											}
 										</div>
-
-
-									</div>
-								</div>
-
-
 								:""
 						:""}
 
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js
index 6751837df..4df756d8c 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettingquestions.js
@@ -32,8 +32,10 @@ class GraduationTasksquestions extends Component{
   }
 
   componentDidMount(){
+    let tab = this.props.tab;
+		this.props.setTab && this.props.setTab(tab);
 
-   this.getdatas()
+    this.getdatas()
   }
   getdatas=()=>{
 		const task_Id = this.props.match.params.task_Id;
@@ -295,15 +297,6 @@ class GraduationTasksquestions extends Component{
             modaltype={this.state.modaltype}
             getcourse_groupslist={(id) => this.getcourse_groupslist(id)}
           />
-					<style>
-						{
-							`
-							 .linbox{
-								height: 26px;
-						   }
-							`
-						}
-					</style>
           {questionslist&&questionslist?<div className="newMain clearfix">
             <div className={"educontent mb20"}>
 

From bd04a1ed353a875d2c4f76e959c133a394b14c8d Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Wed, 4 Sep 2019 09:54:08 +0800
Subject: [PATCH 4/9] =?UTF-8?q?=E6=AF=95=E8=AE=BE=E4=BB=BB=E5=8A=A1-?=
 =?UTF-8?q?=E8=AF=A6=E6=83=85-tab?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../modules/courses/graduation/tasks/GraduationTaskDetail.js  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
index 18870a1be..1b8b5c706 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
@@ -348,7 +348,7 @@ class GraduationTaskDetail extends Component{
             <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
           </div>
           <div className="stud-class-set bor-bottom-greyE">
-                <div className="clearfix edu-back-white poll_list pl20">
+                <div className="clearfix edu-back-white poll_list pl30 pr30">
 
                   <Link className={tab && tab == "list" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
                   <Link className={tab && tab == "questions" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
@@ -389,7 +389,7 @@ class GraduationTaskDetail extends Component{
                             }
 													`}
                   </style>
-                  {this.props.isAdmin()? <li className="li_line drop_down fr color-blue font-16 mr20 mt20" style={{"paddingLeft":"0px"}}>
+                  {this.props.isAdmin()? <li className="li_line drop_down fr color-blue font-16 mt20" style={{"paddingLeft":"0px"}}>
                     导出<i className="iconfont icon-xiajiantou font-12 ml2"></i>
                     <ul className="drop_down_menu" style={{"right":"-34px","left":"unset","height":"auto"}}>
                       <li><a onClick={()=>this.confirmysl("/graduation_tasks/"+task_Id+"/tasks_list.xlsx")} className="color-dark">导出成绩</a></li>

From 71820a8bdc01970ef1ba3961517f29a97f4d2152 Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Wed, 4 Sep 2019 14:52:05 +0800
Subject: [PATCH 5/9] =?UTF-8?q?=E6=AF=95=E8=AE=BE=E4=BB=BB=E5=8A=A1-?=
 =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E5=8F=91=E5=B8=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/modules/courses/graduation/tasks/index.js      | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/public/react/src/modules/courses/graduation/tasks/index.js b/public/react/src/modules/courses/graduation/tasks/index.js
index 804533b0c..ed52d5cbc 100644
--- a/public/react/src/modules/courses/graduation/tasks/index.js
+++ b/public/react/src/modules/courses/graduation/tasks/index.js
@@ -469,7 +469,9 @@ class GraduationTasks extends Component{
           checkAllValue:false
         })
         this.publishcanner();
-        this.useBankSuccess();
+        debugger
+        let {search,page,order} = this.state
+        this.fetchAll(search,page,order);
       }
     }).catch((error)=>{
 
@@ -565,6 +567,12 @@ class GraduationTasks extends Component{
     let {search,page,order,all_count} = this.state;
     this.fetchAll(search,page,order,all_count)
 
+    this.setState({
+      checkBoxValues:object_ids
+    })
+
+    // 立即发布
+    this.publish();
 
   }
   getcourse_groupslist=(id)=>{

From 3a7ef7d92811e4b553712c97cca2591ae23dc256 Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Wed, 4 Sep 2019 16:55:43 +0800
Subject: [PATCH 6/9] =?UTF-8?q?=E6=AF=95=E8=AE=BE=E4=BB=BB=E5=8A=A1?=
 =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../react/src/modules/courses/css/Courses.css | 22 +++++++++++++++++++
 .../graduation/tasks/GraduateTaskItem.js      |  8 +++----
 .../graduation/tasks/GraduationTaskDetail.js  |  5 ++---
 3 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/public/react/src/modules/courses/css/Courses.css b/public/react/src/modules/courses/css/Courses.css
index 74637571f..d0a43af9e 100644
--- a/public/react/src/modules/courses/css/Courses.css
+++ b/public/react/src/modules/courses/css/Courses.css
@@ -1220,6 +1220,28 @@ samp {
     color: #FE4F4C;
   }
   
+  /* 毕设任务 */
+  .graduationTaskMenu a{
+      display: block;
+      position: relative;
+      line-height: 72px;
+      font-size: 16px;
+      margin-right: 30px;
+      float: left;
+  }
+  .graduationTaskMenu a.active:after{
+      position: absolute;
+      left: 0px;
+      height: 2px;
+      width: 100%;
+      content: '';
+      background: #4CACFF;
+      bottom: 0px;
+      font-weight:400;
+  }
+  .graduationTaskMenu a.active{
+      color: #4CACFF!important;
+  }
   
   /* end */
 /* form表单,包含多个item时 */
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduateTaskItem.js b/public/react/src/modules/courses/graduation/tasks/GraduateTaskItem.js
index 92a4832db..c18ef8062 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduateTaskItem.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduateTaskItem.js
@@ -215,14 +215,14 @@ class GraduateTaskItem extends Component{
             <h6>
 
               {
-                this.props.isAdmin?<a href={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/"+taskid+"/list"}
+                this.props.isAdmin?<Link to={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/"+taskid+"/list"}
 																			title={discussMessage.name}
-                                      className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}</a>:""
+                                      className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}</Link>:""
               }
               {
-                this.props.isStudent? <a href={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/"+taskid+"/list"}
+                this.props.isStudent? <Link to={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/"+taskid+"/list"}
 																				 title={discussMessage.name}
-                                           className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}</a>:""
+                                           className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}</Link>:""
               }
 
               {
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
index 1b8b5c706..1c969b3c4 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskDetail.js
@@ -348,12 +348,11 @@ class GraduationTaskDetail extends Component{
             <a className="color-grey-3 fr font-16 ml30 mr20" onClick={this.goback}>返回</a>
           </div>
           <div className="stud-class-set bor-bottom-greyE">
-                <div className="clearfix edu-back-white poll_list pl30 pr30">
+                <div className="clearfix edu-back-white pl30 pr30 graduationTaskMenu">
 
                   <Link className={tab && tab == "list" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/list"}>任务列表</Link>
                   <Link className={tab && tab == "questions" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/questions"}>毕设描述</Link>
-                  <Link className={tab && tab == "setting" ? "active" : ""} style={{paddingLeft:'38px'}}
-                        to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link>
+                  <Link className={tab && tab == "setting" ? "active" : ""} to={"/courses/"+courseId+"/graduation_tasks/"+category_id+"/"+task_Id+"/setting?tab=3"}>设置</Link>
 
                   {/*<a className={"fr color-blue font-16"}>导出成绩</a>*/}
                   {/*{this.props.isAdmin()?<a href={"/api/graduation_tasks/"+task_Id+"/tasks_list.xls"} className={"fr color-blue font-16"}>导出成绩</a>:""}*/}

From b284b2f650dc8e069798ba9238eb6ad2d60dbdf6 Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Thu, 5 Sep 2019 14:06:29 +0800
Subject: [PATCH 7/9] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E8=AF=BE=E7=A8=8B?=
 =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=A0=B7=E5=BC=8F=E6=94=B9=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../react/src/modules/paths/ShixunPathCard.js |  43 ++++---
 .../src/modules/paths/ShixunPathSearch.js     |  21 +--
 .../react/src/modules/paths/ShixunPaths.css   | 120 ++++++++++++++++++
 3 files changed, 154 insertions(+), 30 deletions(-)

diff --git a/public/react/src/modules/paths/ShixunPathCard.js b/public/react/src/modules/paths/ShixunPathCard.js
index 166c6415a..a5ac0b3d3 100644
--- a/public/react/src/modules/paths/ShixunPathCard.js
+++ b/public/react/src/modules/paths/ShixunPathCard.js
@@ -22,21 +22,21 @@ class ShixunPathCard extends Component{
                 pathList && pathList.map((item,key)=>{
 
                   return(
-                    <div className="square-Item" id={"item_"+key}>
+                    <div className="squareCard" id={"item_"+key}>
 
-                      {
-                        item.tag_name === null ? "" :
+                      
+                        {/* item.tag_name === null ? "" :
                           <div className="tag-green">
                             <span className="tag-name">{item.tag_name}</span>
-                            {/*<img src={getImageUrl('images/educoder/tag2.png')}/>*/}
-                          </div>
-                      }
+                            <img src={getImageUrl('images/educoder/tag2.png')}/>
+                          </div> */}
+                      
 
 
 											{
 												item.excellent === false ? "" :
-													<div className="tag-orange">
-														<span className="tag-name">开放课程</span>
+													<div className="tag_open">
+														<span className="tag_open_name">开放课程</span>
 													</div>
 											}
 
@@ -45,28 +45,29 @@ class ShixunPathCard extends Component{
                             className="mt80 mb25"/>
                         <p className="font-14 color-white">非试用内容,需要授权</p>
                       </div>
-                      <Link to={"/paths/"+item.id} className="square-img" >
+                      <Link to={"/paths/"+item.id} className="squareImg" >
 												{/*target="_blank"*/}
-                        <img alt="详情图片" src={"/"+item.image_url} style={{"display":"block"}}/>
+                        <img alt="详情图片" src={getImageUrl("/"+item.image_url)}/>
                       </Link>
-                      <div className="square-main">
-                        <p className="task-hide">
-                          <Link to={"/paths/"+item.id}  className="justify color-grey-name" >{item.name}</Link>
+                      <div className="mt20" style={{marginLeft:"1px"}}>
+                        <p className="task-hide mb10">
+                          <Link to={"/paths/"+item.id}  className="justify cardName">{item.name}</Link>
 													{/*target="_blank"*/}
                         </p>
-                        <p className="clearfix mt8 font-12 color-grey-B4">
+                        <p className="clearfix squareInfo">
 
-                          <Tooltip placement="bottom" title={"章节"}>
-                              <span className="mr10 fl squareIconSpan"><i className="iconfont icon-shixun fl mr3"></i>{item.stages_count}</span>
-                          </Tooltip>
+                          {/* <Tooltip placement="bottom" title={"章节"}> */}
+                            {/* <i className="iconfont icon-shixun fl mr3"></i> */}
+                            <span className="fl pr squareLine mr20">章节: {item.stages_count}</span>
+                          {/* </Tooltip> */}
 
                           {/*<Tooltip placement="bottom" title={"经验值"}>*/}
                               {/*<span className="mr10 fl squareIconSpan"><i className="iconfont icon-jingyan fl mr3"></i>{item.shixuns_count}</span>*/}
                           {/*</Tooltip>*/}
-
-                          <Tooltip placement="bottom" title={"学习人数"}>
-                              <span className="mr10 fl squareIconSpan"><i className="iconfont icon-chengyuan fl mr3"></i>{item.members_count}</span>
-                          </Tooltip>
+                          {/* <Tooltip placement="bottom" title={"学习人数"}> */}
+                            {/* <i className="iconfont icon-chengyuan fl mr3"></i> */}
+                            <span className="fl">学习人数: {item.members_count}</span>
+                          {/* </Tooltip> */}
                         </p>
                       </div>
                     </div>
diff --git a/public/react/src/modules/paths/ShixunPathSearch.js b/public/react/src/modules/paths/ShixunPathSearch.js
index c0060a528..c88563e07 100644
--- a/public/react/src/modules/paths/ShixunPathSearch.js
+++ b/public/react/src/modules/paths/ShixunPathSearch.js
@@ -7,8 +7,8 @@ import Pagination from '@icedesign/base/lib/pagination';
 import '@icedesign/base/lib/pagination/style.js';
 import './ShixunPaths.css';
 
+import path from '../../images/path/path.png';
 
-const Search = Input.Search;
 
 class ShixunPathSearch extends Component{
   constructor(props) {
@@ -122,9 +122,12 @@ class ShixunPathSearch extends Component{
 					{this.state.updata===undefined?"":<UpgradeModals
 							{...this.state}
 						/>}
-          <div className="path-head pr">
-            <div className="edu-txt-center pathNavLine">
-              <div className="inline path-nav">
+          <div className="pr">
+            <div className="pathImg">
+              <img src={path} width="100%"/>
+            </div>
+            <div className="edu-back-white padding20 pathIndexNav">
+              <ul className="educontent clearfix">
                   <li className={select > 0 ? "" : "active"}><a onClick={()=>this.changeSelect(null)}>全部</a></li>
                   {
                     sortList && sortList.map((item,key)=>{
@@ -133,18 +136,18 @@ class ShixunPathSearch extends Component{
                       )
                     })
                   }
-              </div>
+              </ul>
             </div>
           </div>
-          <div className="mt20 educontent mb20 clearfix">
+          <div className="mt20 educontent mb20 clearfix mainPageArray">
             {/*<a href="javascript:void(0)" className={ order == "publish_time" ? "fl mr20 font-16 bestChoose active" : "fl mr20 font-16 bestChoose"} onClick={ () => this.changeStatus("publish_time")}>全部</a>*/}
             {/*<a href="javascript:void(0)" className={ order == "mine" ? "fl mr20 font-16 bestChoose active" : "fl mr20 font-16 bestChoose"} onClick={ () => this.changeStatus("mine")}>我的</a>*/}
-            <span className={ order == "updated_at" ? "fl mr20 font-16 bestChoose active pointer" : "fl mr20 font-16 bestChoose pointer"} onClick={ () => this.changeStatus("updated_at")}>最新</span>
-            <span className={ order == "myshixun_count" ? "fl mr20 font-16 bestChoose active pointer" : "fl mr20 font-16 bestChoose pointer"} onClick={ () => this.changeStatus("myshixun_count")}>最热</span>
+            <span className={ order == "updated_at" ? "active" : ""} onClick={ () => this.changeStatus("updated_at")}>最新</span>
+            <span className={ order == "myshixun_count" ? "active" : ""} onClick={ () => this.changeStatus("myshixun_count")}>最热</span>
             {/*<div className="fr mr5 search-new">*/}
               {/*/!* <Search*/}
               {/*placeholder="请输入路径名称进行搜索"*/}
-              {/*id="subject_search_input"*/}
+              {/*id="subject_search_input"*/} 
               {/*value={search}*/}
               {/*onInput={this.inputSearchValue}*/}
               {/*onSearch={this.searchValue}*/}
diff --git a/public/react/src/modules/paths/ShixunPaths.css b/public/react/src/modules/paths/ShixunPaths.css
index d1e0a2325..ba7ba198b 100644
--- a/public/react/src/modules/paths/ShixunPaths.css
+++ b/public/react/src/modules/paths/ShixunPaths.css
@@ -1,3 +1,123 @@
+.pathImg{
+  background: #4CACFF
+}
+.pathIndexNav{
+  box-shadow:0px 4px 8px 0px rgba(0,0,0,0.04);
+}
+.pathIndexNav ul li{
+  float: left;
+  margin-right: 10px;
+}
+.pathIndexNav ul li a{
+  display: block;
+  font-size: 15px;
+  color: #333333;
+  padding:0px 20px;
+  border-radius:18px;
+  height: 32px;
+  line-height: 32px;
+  margin:5px 0px;
+}
+.pathIndexNav ul li.active a{
+  background: #DDECF9;
+  color: #4CACFF
+}
+
+/* 首页-最新最热 */
+.mainPageArray span{
+  font-size: 14px;
+  float: left;
+  background: #EBEBEB;
+  padding: 0px 16px;
+  height: 30px;
+  line-height: 30px;
+  color: #666666;
+  margin-right: 20px;
+  cursor: pointer;
+  border-radius: 15px;
+}
+.mainPageArray span.active{
+  background: #4CACFF;
+  color: #fff;
+}
+
+/* path-card */
+.squareCard{
+  position: relative;
+  width: 280px;
+  margin-right: 26px;
+  margin-bottom: 40px;
+  float: left;
+  border-radius: 6px;
+}
+.squareCard:nth-child(4n){
+  margin-right: 0px;
+}
+.squareCard .squareImg{
+  height: 175px;
+  width: 280px;
+  overflow: hidden;
+  display: block;
+  border-radius: 6px;
+}
+.squareCard .squareImg img{
+  transition: all 0.6s;
+  -webkit-transition: all 0.6s;
+  -o-transition: all 0.6s;
+  width: 100%;
+}
+.squareCard .squareImg img:hover{
+  transform: scale(1.2);
+}
+
+/* card info */
+.cardName{
+  font-size: 16px;
+  font-weight: 600;
+  height: 20px;
+  line-height: 20px;
+  margin-bottom: 10px;
+}
+
+.squareLine:after{
+  position: absolute;
+  width: 1px;
+  height: 10px;
+  background: #adadad;
+  content: '';
+  right: -10px;
+  top:4px;
+}
+.squareInfo{
+  color: #777;
+  font-size: 12px;
+  font-weight: 400;
+  height: 18px;
+  line-height: 18px;
+}
+
+/* tag-开放课程 */
+.tag_open {
+  position: absolute;
+  left: 0px;
+  top: 12px;
+  z-index: 1;
+}
+.tag_open .tag_open_name {
+  display: block;
+  width: auto;
+  background-color: #FF6800;
+  background-size: 100% 100%;
+  padding: 0px 8px;
+  color: #fff;
+  display: block;
+  height: 28px;
+  line-height: 28px;
+  border-radius: 0px 15px 15px 0px;
+}
+
+
+
 .paragraph:hover .status_li a{
   display: block;
 }

From 84a8df854d77be12f5a1394e48d891bb000e3fa4 Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Thu, 5 Sep 2019 14:25:58 +0800
Subject: [PATCH 8/9] =?UTF-8?q?=E5=AE=9E=E8=B7=B5=E8=AF=BE=E7=A8=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../react/src/modules/paths/ShixunPathCard.js | 25 ++++++++-----------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/public/react/src/modules/paths/ShixunPathCard.js b/public/react/src/modules/paths/ShixunPathCard.js
index a5ac0b3d3..e384049a5 100644
--- a/public/react/src/modules/paths/ShixunPathCard.js
+++ b/public/react/src/modules/paths/ShixunPathCard.js
@@ -23,28 +23,25 @@ class ShixunPathCard extends Component{
 
                   return(
                     <div className="squareCard" id={"item_"+key}>
-
-                      
-                        {/* item.tag_name === null ? "" :
-                          <div className="tag-green">
-                            <span className="tag-name">{item.tag_name}</span>
-                            <img src={getImageUrl('images/educoder/tag2.png')}/>
-                          </div> */}
-                      
-
+                      {/* item.tag_name === null ? "" :
+                        <div className="tag-green">
+                          <span className="tag-name">{item.tag_name}</span>
+                          <img src={getImageUrl('images/educoder/tag2.png')}/>
+                        </div> */}
 
 											{
 												item.excellent === false ? "" :
-													<div className="tag_open">
-														<span className="tag_open_name">开放课程</span>
-													</div>
+                        <div className="tag_open">
+                          <span className="tag_open_name">开放课程</span>
+                        </div>
 											}
 
-											<div className={item.allow_visit=== false ? "closeSquare" : "none"}>
+											{/* <div className={item.allow_visit=== false ? "closeSquare" : "none"}>
                         <img src={getImageUrl("images/educoder/icon/lockclose.svg")}
                             className="mt80 mb25"/>
                         <p className="font-14 color-white">非试用内容,需要授权</p>
-                      </div>
+                      </div> */}
+
                       <Link to={"/paths/"+item.id} className="squareImg" >
 												{/*target="_blank"*/}
                         <img alt="详情图片" src={getImageUrl("/"+item.image_url)}/>

From 154b068415fb4950279fc5301f16c79dedcd9553 Mon Sep 17 00:00:00 2001
From: caicai8 <1149225589@qq.com>
Date: Thu, 5 Sep 2019 16:04:18 +0800
Subject: [PATCH 9/9] issue

---
 .../react/src/modules/courses/exercise/new/JudgeDisplay.js  | 2 +-
 .../react/src/modules/courses/exercise/new/NullDisplay.js   | 3 +++
 .../react/src/modules/courses/exercise/new/SingleDisplay.js | 4 ++--
 public/react/src/modules/courses/poll/PollDetailTabForth.js | 2 +-
 .../src/modules/user/modal/RealNameCertificationModal.js    | 6 +++---
 5 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/public/react/src/modules/courses/exercise/new/JudgeDisplay.js b/public/react/src/modules/courses/exercise/new/JudgeDisplay.js
index a6996ed84..d340f5fa4 100644
--- a/public/react/src/modules/courses/exercise/new/JudgeDisplay.js
+++ b/public/react/src/modules/courses/exercise/new/JudgeDisplay.js
@@ -86,7 +86,7 @@ class JudgeDisplay extends Component{
                      // 单选
                     return (
                         <div key={optionIndex} className="fl mr30 df">
-                            <Radio disabled checked={item.standard_boolean}></Radio>
+                            <Radio disabled className="lineh-25" checked={item.standard_boolean}></Radio>
                             {/* <span>{item.choice_text}</span> */}
                             <MarkdownToHtml content={item.choice_text} selector={'judge_' + (index + 1) + optionIndex} 
                                 className=""
diff --git a/public/react/src/modules/courses/exercise/new/NullDisplay.js b/public/react/src/modules/courses/exercise/new/NullDisplay.js
index b9bd893f9..f84daf193 100644
--- a/public/react/src/modules/courses/exercise/new/NullDisplay.js
+++ b/public/react/src/modules/courses/exercise/new/NullDisplay.js
@@ -92,6 +92,9 @@ class NullDisplay extends Component{
                 .answerRow { 
                     padding: 1px 0;
                 }
+                .answers .markdown-body > p{
+                    line-height:20px;
+                }
             `}</style>
 
             <QestionDisplayHeader {...this.props}></QestionDisplayHeader>
diff --git a/public/react/src/modules/courses/exercise/new/SingleDisplay.js b/public/react/src/modules/courses/exercise/new/SingleDisplay.js
index bce4dc4c1..7159b0ee6 100644
--- a/public/react/src/modules/courses/exercise/new/SingleDisplay.js
+++ b/public/react/src/modules/courses/exercise/new/SingleDisplay.js
@@ -99,7 +99,7 @@ class SingleDisplay extends Component{
                   if (question_type == 0) { // 单选
                     return (
                         <div className="mb10 clearfix" key={optionIndex}>
-                            <Radio disabled className="fl lineh-20" checked={item.standard_boolean}>{prefix}</Radio>
+                            <Radio disabled className="fl lineh-25" checked={item.standard_boolean}>{prefix}</Radio>
                             <MarkdownToHtml content={item.choice_text} selector={'single_' + (index + 1) + '' + (optionIndex + 1)} style={{ float: 'left', display: 'inline-block' }}
                                 
                             ></MarkdownToHtml>
@@ -110,7 +110,7 @@ class SingleDisplay extends Component{
 
                     return (
                         <div className="mb10 clearfix" key={optionIndex}>
-                            <Checkbox  disabled className="fl lineh-20" checked={item.standard_boolean}>{prefix}</Checkbox>
+                            <Checkbox  disabled className="fl lineh-25 mr8" checked={item.standard_boolean}>{prefix}</Checkbox>
                             <MarkdownToHtml content={item.choice_text} selector={'single_' + (index + 1)+ '' + (optionIndex + 1)} style={{ float: 'left', display: 'inline-block' }}
                                 
                             ></MarkdownToHtml>
diff --git a/public/react/src/modules/courses/poll/PollDetailTabForth.js b/public/react/src/modules/courses/poll/PollDetailTabForth.js
index e0cca8716..22205b188 100644
--- a/public/react/src/modules/courses/poll/PollDetailTabForth.js
+++ b/public/react/src/modules/courses/poll/PollDetailTabForth.js
@@ -57,7 +57,7 @@ class PollDetailTabForth extends Component{
 
 			flagPageEdit:undefined,
 			unitSetting:true,
-			flagPublic:true,
+			flagPublic:false,
 			flagRealName:undefined,
 			course_group:undefined,
 			end_time:undefined,
diff --git a/public/react/src/modules/user/modal/RealNameCertificationModal.js b/public/react/src/modules/user/modal/RealNameCertificationModal.js
index 1d17b7c20..412cb58c7 100644
--- a/public/react/src/modules/user/modal/RealNameCertificationModal.js
+++ b/public/react/src/modules/user/modal/RealNameCertificationModal.js
@@ -2,7 +2,7 @@ import React, { Component } from "react";
 import { message, Icon, Input, Form, Upload} from "antd";
 import axios from 'axios'
 import ModalWrapper from "../../courses/common/ModalWrapper"
-import { City, getUploadActionUrl, getImageUrl, ImageLayerHook } from 'educoder'
+import { City, getUploadActionUrl, getImageUrl, ImageLayerHook, getUploadActionUrlOfAuth } from 'educoder'
 import '../account/common.css'
 
 import authImg from '../../../images/account/auth.png'
@@ -125,14 +125,14 @@ class RealNameCertificationModal extends Component{
     const { moduleName } = this.props
     const { getFieldDecorator } = this.props.form;
     let {certification}=this.props;
-    
+    // /api/users/accounts/${this.props.current_user.login}/auth_attachment.json
     const uploadProps2 = {
       name: 'image',
       data:{type:certification == 1 ? "real_name" : "professional"},      
       multiple: true,
       showUploadList: false,
       // https://newweb.educoder.net
-      action: this.props.current_user ? `/api/users/accounts/${this.props.current_user.login}/auth_attachment.json` : '',
+      action: this.props.current_user ? `${getUploadActionUrlOfAuth(this.props.current_user.login)}` : '',
       className: 'idPic-uploader',
       onChange: this.handleChange2,
     };