diff --git a/public/react/public/css/iconfont.css b/public/react/public/css/iconfont.css index c50b04788..ff031a8ff 100755 --- a/public/react/public/css/iconfont.css +++ b/public/react/public/css/iconfont.css @@ -1,10 +1,10 @@ @font-face {font-family: "iconfont"; - src: url('iconfont.eot?t=1558935784115'); /* IE9 */ - src: url('iconfont.eot?t=1558935784115#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), - url('iconfont.woff?t=1558935784115') format('woff'), - url('iconfont.ttf?t=1558935784115') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ - url('iconfont.svg?t=1558935784115#iconfont') format('svg'); /* iOS 4.1- */ + src: url('iconfont.eot?t=1562203791634'); /* IE9 */ + src: url('iconfont.eot?t=1562203791634#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('iconfont.woff?t=1562203791634') format('woff'), + url('iconfont.ttf?t=1562203791634') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1562203791634#iconfont') format('svg'); /* iOS 4.1- */ } .iconfont { @@ -27,6 +27,10 @@ content: "\e6d8"; } +.icon-cuban2shangchuanyunduan:before { + content: "\e86d"; +} + .icon-css3:before { content: "\ea8b"; } @@ -127,6 +131,10 @@ content: "\e791"; } +.icon-renzhengxinxi:before { + content: "\e693"; +} + .icon-gift:before { content: "\e63c"; } @@ -159,6 +167,10 @@ content: "\e691"; } +.icon-xianshi:before { + content: "\e695"; +} + .icon-suo:before { content: "\e6c9"; } @@ -167,6 +179,10 @@ content: "\e67f"; } +.icon-xiazai1:before { + content: "\e6ac"; +} + .icon-chexiao:before { content: "\e657"; } @@ -203,6 +219,10 @@ content: "\e602"; } +.icon-moban:before { + content: "\e692"; +} + .icon-VPN:before { content: "\e601"; } @@ -227,6 +247,10 @@ content: "\e6f8"; } +.icon-jibenxinxi:before { + content: "\e694"; +} + .icon-base:before { content: "\e683"; } @@ -243,6 +267,10 @@ content: "\e68a"; } +.icon-yincang:before { + content: "\e6a0"; +} + .icon-weibiaoti-:before { content: "\e60d"; } @@ -683,6 +711,10 @@ content: "\e60b"; } +.icon-anquanshezhi:before { + content: "\e606"; +} + .icon-trustie:before { content: "\e681"; } diff --git a/public/react/src/common/components/Cropper.js b/public/react/src/common/components/Cropper.js index c9514e52a..2fe71ea2b 100644 --- a/public/react/src/common/components/Cropper.js +++ b/public/react/src/common/components/Cropper.js @@ -7,6 +7,11 @@ let _url_origin = getUrl2() // let _url_origin = `http://47.96.87.25:48080`; if (!window.Cropper) { + $.ajaxSetup({ + cache: true + }); + + $('head').append($('') .attr('href', `${_url_origin}/react/public/js/cropper/cropper.min.css`)); @@ -61,7 +66,14 @@ function save_avatar(){ // }); // } } - +/** + props 说明: + imageId 源图片标签的id + previewId crop后预览dom的id + imageSrc 源图片src + width 数字格式 + height 数字格式 +*/ class Cropper extends Component { state = { }; @@ -70,26 +82,31 @@ class Cropper extends Component { } componentDidMount() { - setTimeout(() => { - const image = document.getElementById('image'); - const cropper = new window.Cropper(image, { - aspectRatio: 1, - crop(event) { - // console.log(event.detail.x); - // console.log(event.detail.y); - // console.log(event.detail.width); - // console.log(event.detail.height); - // console.log(event.detail.rotate); - // console.log(event.detail.scaleX); - // console.log(event.detail.scaleY); - }, + this.options = { + aspectRatio: 1, + crop(event) { + // console.log(event.detail.x); + // console.log(event.detail.y); + // console.log(event.detail.width); + // console.log(event.detail.height); + // console.log(event.detail.rotate); + // console.log(event.detail.scaleX); + // console.log(event.detail.scaleY); + }, - preview: '.img-preview', - }); - }, 3000) + preview: this.props.previewId ? `#${this.props.previewId}` : '.img-preview', + } + setTimeout(() => { + const image = document.getElementById(this.props.imageId || '__image'); + this.cropper = new window.Cropper(image, this.options); + }, 1000) } + renew = (image) => { + this.cropper && this.cropper.destroy(); + this.cropper = new window.Cropper(image, this.options); + } render() { const { width, height, previewId, imageSrc } = this.props; @@ -98,8 +115,8 @@ class Cropper extends Component { {/* This rule is very important, please do not ignore this! */}
{/* http://localhost:3007/images/footNavLogo.png 图片转了后不对 */} - +
{/* background: 'aquamarine', 'border-radius': '128px' @@ -124,7 +141,7 @@ class Cropper extends Component { {/* */} {/*
*/} - + {/* */} ); } diff --git a/public/react/src/common/course/ActionBtn.js b/public/react/src/common/course/ActionBtn.js index 2c0664863..03da0d3e7 100644 --- a/public/react/src/common/course/ActionBtn.js +++ b/public/react/src/common/course/ActionBtn.js @@ -1,7 +1,9 @@ import React, { Component } from 'react'; import {Link} from 'react-router-dom' -const map={"blue":"blueFull","greyBack":"greyBack","grey":"greyWidthFixed","green":"greenBack"} +const map={"blue":"blueFull","greyBack":"greyBack","grey":"greyWidthFixed","green":"greenBack", + 'colorBlue': 'colorBlue', // 蓝字白底 +} class ActionBtn extends Component { constructor(props) { super(props); diff --git a/public/react/src/common/educoder.js b/public/react/src/common/educoder.js index db93b4d56..f5b8d0430 100644 --- a/public/react/src/common/educoder.js +++ b/public/react/src/common/educoder.js @@ -28,6 +28,7 @@ export { EDU_ADMIN, EDU_BUSINESS, EDU_SHIXUN_MANAGER, EDU_SHIXUN_MEMBER, EDU_CER , EDU_GAME_MANAGER, EDU_TEACHER, EDU_NORMAL} from './Const' export { ModalHOC } from './components/ModalHOC' +export { default as Cropper } from './components/Cropper' export { default as ConditionToolTip } from './components/ConditionToolTip' export { default as DragValidator } from './components/DragValidator' diff --git a/public/react/src/images/account/auth.png b/public/react/src/images/account/auth.png new file mode 100644 index 000000000..2bfb89aa7 Binary files /dev/null and b/public/react/src/images/account/auth.png differ diff --git a/public/react/src/images/account/job.png b/public/react/src/images/account/job.png new file mode 100644 index 000000000..3f25e2481 Binary files /dev/null and b/public/react/src/images/account/job.png differ diff --git a/public/react/src/modules/courses/Resource/index.js b/public/react/src/modules/courses/Resource/index.js index 8ce285ae1..f26d97ad3 100644 --- a/public/react/src/modules/courses/Resource/index.js +++ b/public/react/src/modules/courses/Resource/index.js @@ -176,8 +176,8 @@ class Fileslists extends Component{ let list=result.data.data; this.setState({ total_count:list.total_count, - public_count:list.public_count, - private_count:list.private_count, + publish_count:list.publish_count, + unpublish_count:list.unpublish_count, files:list.files, filesId:list.id, name:list.name, @@ -625,13 +625,12 @@ class Fileslists extends Component{ }) } render(){ - let { searchValue, checkBoxValues, checkAllValue, total_count, - public_count, - private_count, + publish_count, + unpublish_count, files, sorttype, Modalstype, @@ -766,8 +765,8 @@ class Fileslists extends Component{ secondRowLeft={
共 {total_count} 个资源 - 已发布:{public_count}个 - 未发布:{private_count}个 + 已发布:{publish_count}个 + 未发布:{unpublish_count}个
} onPressEnter={this.onPressEnter} diff --git a/public/react/src/modules/courses/css/Courses.css b/public/react/src/modules/courses/css/Courses.css index 11ba24c5d..65633839a 100644 --- a/public/react/src/modules/courses/css/Courses.css +++ b/public/react/src/modules/courses/css/Courses.css @@ -616,12 +616,12 @@ a.white-btn.use_scope-btn:hover{ border-radius: 10px; } .Navmodal .ant-modal-content .ant-modal-header{ - border-radius: 10px 10px 0 0; + /*border-radius: 10px 10px 0 0;*/ } .ant-modal-content{ -webkit-box-shadow: 0 4px 12px transparent !important; box-shadow: 0 4px 12px transparent !important; - border-radius: 10px !important; + /*border-radius: 10px !important;*/ } .Navmodal .ant-modal-body{ @@ -677,6 +677,11 @@ a.white-btn.use_scope-btn:hover{ color: #fff!important; } +.colorBlue { + background-color: #fff; + color: #4CACFF; + border: 1px solid #4CACFF; +} .greyBack{ /* 不要固定宽度 */ /* width: 64px; */ diff --git a/public/react/src/modules/courses/graduation/topics/GraduateTopicItem.js b/public/react/src/modules/courses/graduation/topics/GraduateTopicItem.js index 5a3efaa63..c5130d299 100644 --- a/public/react/src/modules/courses/graduation/topics/GraduateTopicItem.js +++ b/public/react/src/modules/courses/graduation/topics/GraduateTopicItem.js @@ -74,11 +74,6 @@ class GraduateTopicItem extends Component{ {discussMessage.name}: this.toDetailPage(`${discussMessage.id}`)} className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name} } - - { - isAdmin?this.toDetailPage(`${discussMessage.id}`)} className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}:"" - } - { isStudent? this.toDetailPage(`${discussMessage.id}`)} className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}:"" diff --git a/public/react/src/modules/courses/poll/Poll.js b/public/react/src/modules/courses/poll/Poll.js index 0170cac00..92b69a9d1 100644 --- a/public/react/src/modules/courses/poll/Poll.js +++ b/public/react/src/modules/courses/poll/Poll.js @@ -324,8 +324,12 @@ class Poll extends Component{ } // 题库选用成功后,立即发布,刷新页面 useBankSuccess=(checkValue,value)=>{ - // let{type,StudentList_value,page}=this.state - // this.InitList(type,StudentList_value,page); + this.setState({ + isSpin:true + }) + let{type,StudentList_value,page}=this.state + this.InitList(type,StudentList_value,page); + this.setState({ checkBoxValues:[] }) diff --git a/public/react/src/modules/courses/poll/PollDetailIndex.js b/public/react/src/modules/courses/poll/PollDetailIndex.js index 8e456efd1..99ce73d96 100644 --- a/public/react/src/modules/courses/poll/PollDetailIndex.js +++ b/public/react/src/modules/courses/poll/PollDetailIndex.js @@ -84,12 +84,12 @@ class PollDetailIndex extends Component{ > 问卷详情

-

- {pollDetail && pollDetail.polls_name} - +

+ {pollDetail && pollDetail.polls_name} + - this.props.history.goBack()}>返回 + this.props.history.goBack()}>返回

diff --git a/public/react/src/modules/paths/PathDetail/DetailCards.js b/public/react/src/modules/paths/PathDetail/DetailCards.js index 9c817543c..0cac533d1 100644 --- a/public/react/src/modules/paths/PathDetail/DetailCards.js +++ b/public/react/src/modules/paths/PathDetail/DetailCards.js @@ -1,500 +1,579 @@ -import React, { Component } from 'react'; -import {getImageUrl} from 'educoder'; -import {Tooltip} from 'antd'; -import '../../paths/ShixunPaths.css'; -import DetailCardsEditAndAdd from './DetailCardsEditAndAdd'; -import DetailCardsEditAndEdit from './DetailCardsEditAndEdit'; -import { BrowserRouter as Router, Route, Link } from "react-router-dom"; -import axios from 'axios'; -import { DragDropContext , Draggable, Droppable} from 'react-beautiful-dnd'; -import Modals from '../../modals/Modals'; - -const $ = window.$ -// -// //a little function to help us with reordering the result -// const reorder = (list, startIndex, endIndex) => { -// let newlist=list; -// const result = Array.from(newlist.shixuns_list); -// const [removed] = result.splice(startIndex, 1); -// result.splice(endIndex, 0, removed); -// newlist.shixuns_list=result; -// return newlist; -// }; -// - - - -class DetailCards extends Component{ - constructor(props){ - super(props) - this.state={ - pathCardsList:undefined, - dropid:undefined, - dropidtype:false, - idsum:undefined, - pathCardsedittype:false, - pathlistedit:undefined, - pathid:undefined, - Modalstype:false, - Modalstopval:'', - Modalsbottomval:'', - cardsModalsave:this.cardsModalsave, - cardsModalcancel:this.cardsModalcancel, - delecttype:false, - editdelectid:undefined, - editbuttomtype:false, - editbuttomtypeadd:false, - showparagraph:false, - showparagraphkey:"", - showparagraphindex:"" - } - - - // this.onDragEnd = this.onDragEnd.bind(this); - } - - getPathCardsList(){ - let pathid=this.props.match.params.pathId; - let url=`/stages.json?subject_id=`+pathid; - axios.get(url).then((result)=>{ - if(result.status===200){ - this.setState({ - pathCardsList:result.data.stages, - }) - } - }).catch((error)=>{ - console.log(error); - }) - } - - - for_paragraph = (index) =>{ - $("#detail_for_paragraph_"+index).slideToggle(500); - } - - componentDidMount(){ - let pathid=this.props.match.params.pathId; - this.setState({ - pathid:pathid - }) - this.getPathCardsList(); - - } - - // onDragStart = () => { - // /*...*/ - // }; - // onDragUpdate = () => { - // /*...*/ - // } - // - // onDragEnd (result) { - // - // let{pathCardsList}=this.state; - // // dropped outside the list - // let newpathCardsList=pathCardsList; - // if(!result.destination) { - // return; - // } - // var sum=result.source.droppableId.replace('ids','') - // sum=parseInt(sum) - // - // const items = reorder( - // newpathCardsList[sum], - // result.source.index, - // result.destination.index - // ); - // newpathCardsList[sum]=items - // this.setState({ - // pathCardsList:newpathCardsList - // }) - // } - - pathCardsedit=(key,pathid)=>{ - - let url=`/stages/`+pathid+`/edit.json`; - axios.get(url).then((result)=>{ - if(result.status===200){ - this.setState({ - idsum:key, - pathCardsedittype:true, - pathlistedit:result.data, - editbuttomtype:true, - editbuttomtypeadd:true - }) - } - }).catch((error)=>{ - console.log(error); - }) - - } - - updatapathCardsedit=()=>{ - this.setState({ - idsum:undefined, - pathCardsedittype:false, - editbuttomtype:false, - editbuttomtypeadd:false - }) - this.getPathCardsList(); - this.props.updatadetailInfoLists(); - } - - delectpathCardsedit=(id)=>{ - - this.setState({ - Modalstype:true, - Modalstopval:'是否删除该章节?', - Modalsbottomval:'', - editdelectid:id, - delecttype:true, - }) - - } - - delectpathCardseditfun=()=>{ - let {delecttype,editdelectid}=this.state; - let id=editdelectid; - if(delecttype===true){ - let url ='/stages/'+id+'.json' - axios.delete(url).then((response) => { - if(response.data.status===1){ - // window.location.href = "/paths/" + response.data.subject_id - this.setState({ - idsum:undefined, - pathCardsedittype:false, - Modalstype:false, - Modalstopval:'', - Modalsbottomval:'', - cardsModalsave:this.cardsModalsave, - delecttype:false, - editdelectid:undefined - }) - this.getPathCardsList(); - } - }).catch((error) => { - console.log(error) - }) - } - - } - - // 关卡的上移下移操作 - operations = (url) => { - let newurl = url+".json" - axios.get(newurl).then((response) => { - if(response.data.status===1){ - this.getPathCardsList(); - } - }).catch((error) => { - console.log(error); - }) - - } - startgameid=(id)=>{ - let url = "/shixuns/" + id + "/shixun_exec.json"; - axios.get(url).then((response) => { - if (response.data.status === -2) { - this.setState({ - Modalstype:true, - Modalstopval:response.data.message, - }) - } else if (response.data.status === -1) { - }else if(response.data.status===-3){ - this.setState({ - Modalstype:true, - Modalstopval:response.data.message, - }) - } else { - window.location.href = "/tasks/" + response.data.game_identifier; - // let path="/tasks/"+response.data.game_identifier; - // this.props.history.push(path); - } - }).catch((error) => { - - }); - } - - cardsModalcancel=()=>{ - this.setState({ - Modalstype:false, - Modalstopval:'', - Modalsbottomval:'', - editdelectid:undefined - }) - } - cardsModalsave=()=>{ - this.setState({ - Modalstype:false, - Modalstopval:'', - Modalsbottomval:'', - editdelectid:undefined - }) - } - - editeditbuttomtypecanle=()=>{ - this.setState({ - editbuttomtype:true, - editbuttomtypeadd:false - }) - } - - showparagraph=(key,index)=>{ - this.setState({ - showparagraph:true, - showparagraphkey:key, - showparagraphindex:index - }) - } - - hideparagraph=()=>{ - this.setState({ - showparagraph:false - }) - } - render(){ - let { pathCardsList, - dropid, - dropidtype, - idsum, - pathCardsedittype, - pathlistedit, - pathid, - Modalstype, - Modalstopval, - Modalsbottomval, - cardsModalsave, - cardsModalcancel, - delecttype, - editdelectid, - editbuttomtype, - editbuttomtypeadd, - showparagraph, - showparagraphkey, - showparagraphindex - }=this.state; - - return( -
- - -
- { - pathCardsList && pathCardsList.map((item,key)=>{ - - return( -
-

- - - - - {item.stage_name} - { - idsum===key&&pathCardsedittype===true?'': - - this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true? - - - { editbuttomtype===true?'': - this.pathCardsedit(key, item.stage_id)}> - - - } - - { - pathCardsList.length=== key+1?"":this.operations(item.down_path)}> - - - - - } - - - {key===0?"": - this.operations(item.up_path)}> - - - - } - - :"" - - - } - - { - idsum === key && pathCardsedittype === true ? - this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true? - this.delectpathCardsedit(item.stage_id)}> - - - - :"" - : '' - } -

- - - { - idsum===key&&pathCardsedittype===true?'': -
-

{item.stage_description}

- -
- - { - item.shixuns_list && item.shixuns_list.map((line,index)=>{ - return( -
this.showparagraph(key,index)} onMouseLeave={this.hideparagraph}> - -
  • - - - { - line.complete_status === 1 ? - : - } - - - {key+1}-{index+1}  {line.shixun_name} - - -
  • - { - line.shixun_status==="暂未公开"? -
  • 暂未公开
  • - : -
  • - { - showparagraphkey===key&&showparagraphindex===index?:"" - } - -
  • - } -
    ) - }) - } -
    -
    - } - - - - - -
    - ) - }) - } -
    - - - { editbuttomtypeadd===true?'': - - } - -
    - ) - } -} -export default DetailCards; - - - - - - -// { -// idsum===key&&pathCardsedittype===true?'': -//
    -//

    {item.stage_description}

    -// -// -// -// -// {(provided, snapshot) => ( -// -//
    -// -// { -// item.shixuns_list && item.shixuns_list.map((line,index)=>{ -// return( -// -// {(provided, snapshot) => ( -//
    -// -//
  • -// -// -// { -// line.complete_status === 1 ? -// : -// } -// -// -// -// -// {key+1}-{index+1}  {line.shixun_name} -// -// -//
  • -// { -// line.shixun_status==="暂未公开"? -//
  • 暂未公开
  • -// : -//
  • -// 查看详情 -// 开始实战 -//
  • -// } -// {provided.placeholder} -//
    -// )} -//
    -// ) -// }) -// } -//
    -// )} -//
    -//
    -//
    +import React, { Component } from 'react'; +import {getImageUrl} from 'educoder'; +import {Tooltip,Modal,Icon,Spin,message} from 'antd'; +import '../../paths/ShixunPaths.css'; +import DetailCardsEditAndAdd from './DetailCardsEditAndAdd'; +import DetailCardsEditAndEdit from './DetailCardsEditAndEdit'; +import { BrowserRouter as Router, Route, Link } from "react-router-dom"; +import axios from 'axios'; +import { DragDropContext , Draggable, Droppable} from 'react-beautiful-dnd'; +import Modals from '../../modals/Modals'; + +const $ = window.$ +// +// //a little function to help us with reordering the result +// const reorder = (list, startIndex, endIndex) => { +// let newlist=list; +// const result = Array.from(newlist.shixuns_list); +// const [removed] = result.splice(startIndex, 1); +// result.splice(endIndex, 0, removed); +// newlist.shixuns_list=result; +// return newlist; +// }; +// + + + +class DetailCards extends Component{ + constructor(props){ + super(props) + this.state={ + pathCardsList:undefined, + dropid:undefined, + dropidtype:false, + idsum:undefined, + pathCardsedittype:false, + pathlistedit:undefined, + pathid:undefined, + Modalstype:false, + Modalstopval:'', + Modalsbottomval:'', + cardsModalsave:this.cardsModalsave, + cardsModalcancel:this.cardsModalcancel, + delecttype:false, + editdelectid:undefined, + editbuttomtype:false, + editbuttomtypeadd:false, + showparagraph:false, + showparagraphkey:"", + showparagraphindex:"", + isSpin:false + } + + + // this.onDragEnd = this.onDragEnd.bind(this); + } + + getPathCardsList(){ + let pathid=this.props.match.params.pathId; + let url=`/stages.json?subject_id=`+pathid; + axios.get(url).then((result)=>{ + if(result.status===200){ + this.setState({ + pathCardsList:result.data.stages, + }) + } + }).catch((error)=>{ + console.log(error); + }) + } + + + for_paragraph = (index) =>{ + $("#detail_for_paragraph_"+index).slideToggle(500); + } + + componentDidMount(){ + let pathid=this.props.match.params.pathId; + this.setState({ + pathid:pathid + }) + this.getPathCardsList(); + + } + + // onDragStart = () => { + // /*...*/ + // }; + // onDragUpdate = () => { + // /*...*/ + // } + // + // onDragEnd (result) { + // + // let{pathCardsList}=this.state; + // // dropped outside the list + // let newpathCardsList=pathCardsList; + // if(!result.destination) { + // return; + // } + // var sum=result.source.droppableId.replace('ids','') + // sum=parseInt(sum) + // + // const items = reorder( + // newpathCardsList[sum], + // result.source.index, + // result.destination.index + // ); + // newpathCardsList[sum]=items + // this.setState({ + // pathCardsList:newpathCardsList + // }) + // } + + pathCardsedit=(key,pathid)=>{ + + let url=`/stages/`+pathid+`/edit.json`; + axios.get(url).then((result)=>{ + if(result.status===200){ + this.setState({ + idsum:key, + pathCardsedittype:true, + pathlistedit:result.data, + editbuttomtype:true, + editbuttomtypeadd:true + }) + } + }).catch((error)=>{ + console.log(error); + }) + + } + + updatapathCardsedit=()=>{ + this.setState({ + idsum:undefined, + pathCardsedittype:false, + editbuttomtype:false, + editbuttomtypeadd:false + }) + this.getPathCardsList(); + this.props.updatadetailInfoLists(); + } + + delectpathCardsedit=(id)=>{ + + this.setState({ + Modalstype:true, + Modalstopval:'是否删除该章节?', + Modalsbottomval:'', + editdelectid:id, + delecttype:true, + }) + + } + + delectpathCardseditfun=()=>{ + let {delecttype,editdelectid}=this.state; + let id=editdelectid; + if(delecttype===true){ + let url ='/stages/'+id+'.json' + axios.delete(url).then((response) => { + if(response.data.status===1){ + // window.location.href = "/paths/" + response.data.subject_id + this.setState({ + idsum:undefined, + pathCardsedittype:false, + Modalstype:false, + Modalstopval:'', + Modalsbottomval:'', + cardsModalsave:this.cardsModalsave, + delecttype:false, + editdelectid:undefined + }) + this.getPathCardsList(); + } + }).catch((error) => { + console.log(error) + }) + } + + } + + // 关卡的上移下移操作 + operations = (url) => { + let newurl = url+".json" + axios.get(newurl).then((response) => { + if(response.data.status===1){ + this.getPathCardsList(); + } + }).catch((error) => { + console.log(error); + }) + + } + startgameid=(id)=>{ + + let url = "/shixuns/" + id + "/shixun_exec.json"; + axios.get(url).then((response) => { + + if (response.data.status === -2) { + this.setState({ + + shixunsreplace:true, + hidestartshixunsreplacevalue:response.data.message+".json" + }) + } else if (response.data.status === -1) { + console.log(response) + }else if(response.data.status===-3){ + this.setState({ + shixunsmessage:response.data.message, + startshixunCombattype:true, + }) + } else { + window.location.href = "/tasks/" + response.data.game_identifier; + // window.location.href = path + // let path="/tasks/"+response.data.game_identifier; + // this.props.history.push(path); + } + }).catch((error) => { + + }); + + + } + + hidestartshixunsreplace=(url)=>{ + this.setState({ + isSpin:true, + }) + axios.get(url).then((response) => { + debugger + if(response.status===200){ + // let path="/shixuns/"+response.data.shixun_identifier+"/challenges"; + // this.props.history.push(path); + message.success('重置成功,正在进入实训!'); + this.startgameid(response.data.shixun_identifier); + this.setState({ + shixunsreplace:false, + isSpin:false, + startbtn:false, + }) + + // message.success('重置成功,正在进入实训!'); + // this.startshixunCombat(); + }} + ).catch((error) => { + + }); + + } + + cardsModalcancel=()=>{ + this.setState({ + Modalstype:false, + Modalstopval:'', + Modalsbottomval:'', + editdelectid:undefined + }) + } + cardsModalsave=()=>{ + this.setState({ + Modalstype:false, + Modalstopval:'', + Modalsbottomval:'', + editdelectid:undefined + }) + } + + editeditbuttomtypecanle=()=>{ + this.setState({ + editbuttomtype:true, + editbuttomtypeadd:false + }) + } + + showparagraph=(key,index)=>{ + this.setState({ + showparagraph:true, + showparagraphkey:key, + showparagraphindex:index + }) + } + + hideparagraph=()=>{ + this.setState({ + showparagraph:false + }) + } + + hidestartshixunCombattype=()=>{ + this.setState({ + startshixunCombattype:false + }) + } + render(){ + let { pathCardsList, + dropid, + dropidtype, + idsum, + pathCardsedittype, + pathlistedit, + pathid, + Modalstype, + Modalstopval, + Modalsbottomval, + cardsModalsave, + cardsModalcancel, + delecttype, + hidestartshixunsreplacevalue, + editbuttomtype, + editbuttomtypeadd, + showparagraph, + showparagraphkey, + showparagraphindex + }=this.state; + const antIcon = ; + return( +
    + + + +
    +

    本实训的开启时间:{this.state.shixunsmessage}
    开启时间之前不能挑战

    +
    +
    + {/*取消*/} + 知道了 +
    + {/*

    */} + {/*知道了*/} + {/*

    */} +
    + + + +
    +

    实训已经更新了,正在为您重置!

    +
    + +
    +
    +
    + { + pathCardsList && pathCardsList.map((item,key)=>{ + + return( +
    +

    + + + + + {item.stage_name} + { + idsum===key&&pathCardsedittype===true?'': + + this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true? + + + { editbuttomtype===true?'': + this.pathCardsedit(key, item.stage_id)}> + + + } + + { + pathCardsList.length=== key+1?"":this.operations(item.down_path)}> + + + + + } + + + {key===0?"": + this.operations(item.up_path)}> + + + + } + + :"" + + + } + + { + idsum === key && pathCardsedittype === true ? + this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true? + this.delectpathCardsedit(item.stage_id)}> + + + + :"" + : '' + } +

    + + + { + idsum===key&&pathCardsedittype===true?'': +
    +

    {item.stage_description}

    + +
    + + { + item.shixuns_list && item.shixuns_list.map((line,index)=>{ + return( +
    this.showparagraph(key,index)} onMouseLeave={this.hideparagraph}> + +
  • + + + { + line.complete_status === 1 ? + : + } + + + {key+1}-{index+1}  {line.shixun_name} + + +
  • + { + line.shixun_status==="暂未公开"? +
  • 暂未公开
  • + : +
  • + { + showparagraphkey===key&&showparagraphindex===index?:"" + } + +
  • + } +
    ) + }) + } +
    +
    + } + + + + + +
    + ) + }) + } +
    + + + { editbuttomtypeadd===true?'': + + } + +
    + ) + } +} +export default DetailCards; + + + + + + +// { +// idsum===key&&pathCardsedittype===true?'': +//
    +//

    {item.stage_description}

    +// +// +// +// +// {(provided, snapshot) => ( +// +//
    +// +// { +// item.shixuns_list && item.shixuns_list.map((line,index)=>{ +// return( +// +// {(provided, snapshot) => ( +//
    +// +//
  • +// +// +// { +// line.complete_status === 1 ? +// : +// } +// +// +// +// +// {key+1}-{index+1}  {line.shixun_name} +// +// +//
  • +// { +// line.shixun_status==="暂未公开"? +//
  • 暂未公开
  • +// : +//
  • +// 查看详情 +// 开始实战 +//
  • +// } +// {provided.placeholder} +//
    +// )} +//
    +// ) +// }) +// } +//
    +// )} +//
    +//
    +//
    // } \ No newline at end of file diff --git a/public/react/src/modules/test/TestCrop.js b/public/react/src/modules/test/TestCrop.js index b7f442363..b539ef2b4 100644 --- a/public/react/src/modules/test/TestCrop.js +++ b/public/react/src/modules/test/TestCrop.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import Cropper from '../../common/components/Cropper' - +import ChangeHeaderPicModal from '../user/account/ChangeHeaderPicModal' class TestCrop extends Component { state = { }; @@ -14,6 +14,8 @@ class TestCrop extends Component { const props = this.props; return (
    + +
    ); diff --git a/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js b/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js index cc9f02505..4ef6abfa3 100644 --- a/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js +++ b/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js @@ -156,7 +156,35 @@ class Challenges extends Component { } } + startgameid=(id)=>{ + let url = "/shixuns/" + id + "/shixun_exec.json"; + axios.get(url).then((response) => { + + if (response.data.status === -2) { + this.setState({ + shixunsreplace:true, + hidestartshixunsreplacevalue:response.data.message+".json" + }) + } else if (response.data.status === -1) { + console.log(response) + }else if(response.data.status===-3){ + this.setState({ + shixunsmessage:response.data.message, + startshixunCombattype:true, + }) + } else { + window.location.href = "/tasks/" + response.data.game_identifier; + // window.location.href = path + // let path="/tasks/"+response.data.game_identifier; + // this.props.history.push(path); + } + }).catch((error) => { + + }); + + + } hidestartshixunsreplace=(url)=>{ this.setState({ @@ -167,7 +195,7 @@ class Challenges extends Component { // let path="/shixuns/"+response.data.shixun_identifier+"/challenges"; // this.props.history.push(path); message.success('重置成功,正在进入实训!'); - this.startshixunCombat(response.data.shixun_identifier); + this.startgameid(response.data.shixun_identifier); this.setState({ shixunsreplace:false, isSpin:false, @@ -179,11 +207,7 @@ class Challenges extends Component { ).catch((error) => { }); - this.setState({ - startbtn:false, - shixunsreplace:false, - isSpin:false - }) + } //编辑实训题目选择题 @@ -455,48 +479,43 @@ class Challenges extends Component { {/*判断比较复杂 有排第一不能是灰色按钮*/} {item.status === 2 ? - this.startshixunCombat(false,undefined, item.challenge_id)} + this.startshixunCombat(false,undefined, item.challenge_id)} // onClick={() => this.startshixunCombat(false)} + title={"查看挑战关卡"} >已完成 : "" } { ChallengesDataList.allow_skip === true && item.status === 1? - this.startshixunCombat(false,undefined, item.challenge_id)} + onClick={()=>this.startshixunCombat(false,undefined, item.challenge_id)} // onClick={() => this.startshixunCombat(false)} >直接挑战 : "" } + { + ChallengesDataList.allow_skip === false ? item.status === 1? + + this.startshixunCombat(false,undefined, item.challenge_id)} + style={{marginTop: '-2px'}}>直接挑战 + :"":"" - { - ChallengesDataList.allow_skip === false ? item.status === 1 && newstatus === 2 ? - - this.startshixunCombat(false,undefined, item.challenge_id):""} - style={{marginTop: '-2px'}}>直接挑战 - - - : item.status === 1 && newstatus === 1 ? - - this.startshixunCombat(false,undefined, item.challenge_id):""} - style={{marginTop: '-2px'}}>直接挑战 - : "" : "" + } - } { item.status === 0 ? - - this.startshixunCombat(false,undefined, item.challenge_id):""} + + this.startshixunCombat(false,undefined, item.challenge_id):""} style={{marginTop: '-2px'}}>直接挑战 - : "" + :"" } @@ -574,3 +593,19 @@ class Challenges extends Component { } export default Challenges; + // { + // ChallengesDataList.allow_skip === false ? item.status === 1 && newstatus === 2 ? + // + // this.startshixunCombat(false,undefined, item.challenge_id)} + // style={{marginTop: '-2px'}}>直接挑战 + // + // + // : item.status === 1 && newstatus === 1 ? + // + // this.startshixunCombat(false,undefined, item.challenge_id)} + // style={{marginTop: '-2px'}}>直接挑战 + // : "" : "" + // + // } \ No newline at end of file diff --git a/public/react/src/modules/user/AccountPage.js b/public/react/src/modules/user/AccountPage.js index 3c94de5a1..430f086a1 100644 --- a/public/react/src/modules/user/AccountPage.js +++ b/public/react/src/modules/user/AccountPage.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; - +import {CNotificationHOC} from '../courses/common/CNotificationHOC' import Loading from '../../Loading'; import Loadable from 'react-loadable'; @@ -10,6 +10,7 @@ import { TPMIndexHOC } from '../tpm/TPMIndexHOC'; import { SnackbarHOC, getImageUrl } from 'educoder'; import AccountNav from './account/AccountNav' +import axios from 'axios' const AccountBasic= Loadable({ loader: () => import('./account/AccountBasic'), @@ -30,16 +31,52 @@ const AccountSecure= Loadable({ }) class AccountPage extends Component { + constructor (props) { + super(props) + this.state = { + basicInfo:undefined + } + } + + componentDidUpdate =(prevState)=>{ + if(this.props.current_user && this.props.current_user != prevState.current_user){ + this.getBasicInfo(this.props.current_user.login); + } + } + + componentDidMount = () =>{ + if(this.props.current_user){ + this.getBasicInfo(this.props.current_user.login); + } + } + + getBasicInfo=(login)=>{ + let url=`/users/accounts/${login}.json`; + axios.get(url).then((result)=>{ + if(result.data){ + this.setState({ + basicInfo:result.data + }) + if(result.data && result.data.base_info_completed == false){ + this.props.history.push(`/account/basic/edit`); + } + } + }).catch((error)=>{ + console.log(error); + }) + } render() { - const common = {} + let { basicInfo }=this.state; + const common = { basicInfo, getBasicInfo : this.getBasicInfo } return ( -
    +
    +
    - + - +
    ); } } -export default SnackbarHOC() ( TPMIndexHOC ( AccountPage )); +export default CNotificationHOC()(SnackbarHOC() ( TPMIndexHOC ( AccountPage ))); diff --git a/public/react/src/modules/user/account/AccountBasic.js b/public/react/src/modules/user/account/AccountBasic.js index 3944c4dfb..e1d084cc4 100644 --- a/public/react/src/modules/user/account/AccountBasic.js +++ b/public/react/src/modules/user/account/AccountBasic.js @@ -2,22 +2,24 @@ import React, { Component } from 'react'; import { SnackbarHOC, getImageUrl, City } from 'educoder'; import { Form, Button, Input, Radio, Select, Tooltip, Icon } from 'antd' +import './common.css' + + const RadioGroup = Radio.Group; const Option = Select.Option const radioOptions = [ - { label: '男', value: 'Apple' }, - { label: '女', value: 'Pear' }, + { label: '男', value: 'boy' }, + { label: '女', value: 'girl' }, ]; class AccountBasicEdit extends Component { - handleSubmit = () => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { + constructor(props){ + super(props); - } - }) } + render() { const { getFieldDecorator } = this.props.form; + const {basicInfo} =this.props const showRealName = false; return (
    @@ -29,14 +31,6 @@ class AccountBasicEdit extends Component { .formItemInline .ant-form-item-control-wrapper { display: inline-block; } - - .basicForm { - background: #fff; - padding: 30px; - width: 930px; - margin: 20px; - margin-bottom: 10px; - } .basicForm .title { font-size: 16px; padding-left: 30px; @@ -68,21 +62,21 @@ class AccountBasicEdit extends Component { label="昵称" className="display formItemInline" > - hushasha + {basicInfo && basicInfo.nickname} - 胡*莎 + {basicInfo && basicInfo.name} - 女 + {basicInfo && basicInfo.gender == 0?"男":"女"} @@ -90,28 +84,28 @@ class AccountBasicEdit extends Component { label="所在地" className="display formItemInline" > - 湖南省 长沙市 + {basicInfo && basicInfo.location} {basicInfo && basicInfo.location_city} - 专业人士 + {basicInfo && basicInfo.technical_title} - 中国移动长沙分公司 + {basicInfo && basicInfo.school_name} - 市场部 + {basicInfo && basicInfo.department_name}
    diff --git a/public/react/src/modules/user/account/AccountBasicEdit.js b/public/react/src/modules/user/account/AccountBasicEdit.js index 15085f272..016a32eb5 100644 --- a/public/react/src/modules/user/account/AccountBasicEdit.js +++ b/public/react/src/modules/user/account/AccountBasicEdit.js @@ -4,65 +4,320 @@ import { SnackbarHOC, getImageUrl, City } from 'educoder'; import { Form, Button, Input, Radio, Select, Tooltip, Icon } from 'antd' import ApplyForAddOrgModal from '../modal/ApplyForAddOrgModal' import ApplyForAddChildOrgModal from '../modal/ApplyForAddChildOrgModal' +import axios from 'axios' const RadioGroup = Radio.Group; -const Option = Select.Option -const radioOptions = [ - { label: '男', value: 'Apple' }, - { label: '女', value: 'Pear' }, -]; +const Option = Select.Option; + +const map={"teacher":"教师", "student":"学生", "professional":"专业人士"} class AccountBasic extends Component { + constructor(props){ + super(props); + this.state={ + nameLength:0, + showRealName:true, + schoolList:undefined, + filterSchoolList:undefined, + school:undefined, + departments:undefined, + filterDepartments:undefined, + departmentsName:undefined, + identity:"teacher", + school_id:undefined, + department_id:undefined + } + } + + componentDidUpdate =(prevProps)=>{ + if(this.props.basicInfo && prevProps.basicInfo == undefined){ + this.setValue(this.props.basicInfo); + this.getSchoolList(this.props.basicInfo); + } + } + + componentDidMount = () =>{ + if(this.props.basicInfo){ + this.setValue(this.props.basicInfo); + this.getSchoolList(this.props.basicInfo); + } + } + + setValue=(basicInfo)=>{ + if(basicInfo){ + //if(basicInfo.nickname){ + this.setState({ + nameLength:basicInfo.nickname?basicInfo.nickname.length:0, + showRealName:basicInfo.show_realname, + identity:basicInfo.identity + }) + //} + this.props.form.setFieldsValue({ + nickname:basicInfo.nickname, + name:!basicInfo.show_realname ? this.hideRealName(basicInfo.name) : basicInfo.name, + student_No:basicInfo.student_id, + sex:String(basicInfo.gender), + job:map[basicInfo.identity], + org:basicInfo.school_name, + org2:basicInfo.department_name, + job1:basicInfo && basicInfo.identity=="teacher" ? basicInfo.technical_title:"教授", + job2:basicInfo && basicInfo.identity=="professional" ? basicInfo.technical_title:"企业管理者", + city:[basicInfo.location,basicInfo.location_city] + }) + } + } + + // 获取学校、单位 + getSchoolList=(basicInfo)=>{ + let url=`/schools/for_option.json`; + axios.get(url).then((result)=>{ + if(result){ + this.setState({ + schoolList:result.data.schools + }) + if(basicInfo && basicInfo.school_name){ + this.setState({ + school:basicInfo.school_name, + filterSchoolList:this.state.schoolList.filter(function(item){ + return item.name.indexOf(basicInfo.school_name)>-1; + }) + }) + this.getDepartments(basicInfo.school_name,false); + } + } + }).catch((error)=>{ + console.log(error); + }) + } + + // 输入昵称时change剩余的字数 + changeNickName=(e)=>{ + let num= 10 - parseInt(e.target.value.length); + this.setState({ + nameLength:num < 0 ? 0 : num + }) + } + handleSubmit = () => { this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { + console.log(values); + let {basicInfo}=this.props; + if(!err){ + let url=`/users/accounts/${basicInfo.id}.json` + axios.put((url),{ + nickname:values.nickname, + name:values.name, + show_realname:this.state.showRealName, + gender:parseInt(values.sex), + location:values.city[0], + location_city:values.city[1], + identity:values.job=="教师"?"teacher":values.job=="学生"?"student":"professional", + technical_title:values.job1 || values.job2, + student_id:values.job=="学生" ? values.student_No : null, + school_id:this.state.school_id, + department_id:this.state.department_id + }).then((result)=>{ + if(result){ + this.props.getBasicInfo(); + } + }).catch((error)=>{ + console.log(error); + }) + } + }) + } + + // 隐藏或显示真实姓名 + showOrHide=(flag,name)=>{ + this.setState({ + showRealName:flag==true?false:true + }) + if(flag==true){ + this.hideRealName(name); + }else{ + this.props.form.setFieldsValue({ + name + }) + } + } + + // 将名字隐藏起来 + hideRealName=(name)=>{ + let len=parseInt(name.length)-1; + let str=""; + for(var i = 0; i < len; i++){ str += "*"; } + + name = name.substr(0,1)+str; + + this.props.form.setFieldsValue({ + name + }) + } + // 过滤学校 + filterList=(e)=>{ + let arr=[]; + if(e){ + arr= this.state.schoolList.filter(function(item){ + return item.name.indexOf(e)>-1; + }); + this.props.form.setFieldsValue({ + org:e + }) + this.setState({ + school:e, + filterSchoolList:arr + }) + } + // else{ + // let {school}=this.state; + // arr= this.state.schoolList.filter(function(item){ + // return item.name.indexOf(school)>-1; + // }); + // } + } + //搜索部门 + searchDepartment=(e)=>{ + this.props.form.setFieldsValue({ + org2:e + }) + let arr = this.state.departments.filter(function(item){ + return item.name.indexOf(e) > -1 + }) + this.setState({ + filterDepartments:arr, + departmentsName:e + }) + } + + // 选择部门、学院 + changeDepartment=(e)=>{ + let arr=this.state.departments.filter(function(item){ + return item.name == e; + }); + this.setState({ + departmentsName:e, + department_id:arr[0].id + }) + } + + // 选择学校(获取对应学校的学院、部门) + changeList=(e)=>{ + this.getDepartments(e,true); + } + + getDepartments=(e,flag)=>{ + let arr=this.state.schoolList.filter(function(item){ + return item.name == e; + }); + // 保存选择的学校id + this.setState({ + school_id:arr[0].id, + school:e, + }) + let url=`/schools/${arr[0].id}/departments/for_option.json`; + axios.get(url).then((result)=>{ + if(result){ + this.setState({ + departments:result.data.departments, + filterDepartments:result.data.departments + }) + // 切换学校后,部门默认选择第一个 + if(result.data.departments && result.data.departments.length>0 && flag==true){ + this.props.form.setFieldsValue({ + org2:result.data.departments[0].name + }) + } } + }).catch((error)=>{ + console.log(error); + }) + } + + // 切换职称 + changeJob=(e)=>{ + + this.setState({ + identity:e }) + let {basicInfo}=this.props; + if(basicInfo){ + this.props.form.setFieldsValue({ + job1:basicInfo && basicInfo.identity=="teacher" ? basicInfo.technical_title:"教授", + job2:basicInfo && basicInfo.identity=="professional" ? basicInfo.technical_title:"企业管理者", + }) + } } + + showApplyForAddOrgModal = () => { this.applyForAddOrgForm.setVisible(true) } showApplyForAddChildOrgModal = () => { - this.applyForAddChildOrgForm.setVisible(true) + let{school,schoolList}=this.state; + let arr=schoolList.filter(function(item){ + return item.name == school; + }); + if(arr.length > 0){ + this.applyForAddChildOrgForm.setVisible(true) + }else{ + this.props.showNotification("请先选择正确的单位或者学校!"); + } } - applyForAddChildOrgForm + render() { + let{ + nameLength, + showRealName, + filterSchoolList, + filterDepartments, + school, + school_id, + departmentsName, + identity + }=this.state; const { getFieldDecorator } = this.props.form; - const showRealName = false; + let{basicInfo}=this.props + return (
    - this.applyForAddOrgForm = form} > - this.applyForAddChildOrgForm = form} > + this.applyForAddOrgForm = form} schoolName={school} + {...this.props}> + this.applyForAddChildOrgForm = form} >
    基本信息
    @@ -88,13 +349,15 @@ class AccountBasic extends Component { message: '请输入您的昵称', }], })( - + {String(nameLength)}/10 + }> )} {getFieldDecorator('name', { rules: [{ @@ -103,10 +366,8 @@ class AccountBasic extends Component { message: '请输入您的姓名', }], })( - - - + this.showOrHide(showRealName,basicInfo.name)}> }> )} { showRealName ? '(显示:平台将显示您的真实姓名)' : '(隐藏:平台将显示你的昵称)' } @@ -114,55 +375,124 @@ class AccountBasic extends Component { {getFieldDecorator('sex', { rules: [{ - // initialValue: this.state.cityDefaultValue, required: true, - message: '', + message: '请选择性别', }], })( - + + + + )} {getFieldDecorator('city', { rules: [{ - // initialValue: this.state.cityDefaultValue, type: 'array', required: true, message: '请先选择所在地', }], })( - - )} - - - - {getFieldDecorator('job', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - type: 'array', - required: true, - message: '请先选择职业', - }], - })( - + )} +
    + + {getFieldDecorator('job', { + rules: [{ + initialValue:"teacher", + required: true, + message: '请先选择职业', + }], + })( + + )} + + { + identity && identity=="student" && + + {getFieldDecorator('student_No', { + rules: [{ + required: true, + message: '请先输入学号', + }], + })( + + )} + + } + { + identity && identity=="teacher" && + + {getFieldDecorator('job1', { + rules: [{ + initialValue:"教授", + required: true, + message: '请先选择职称', + }], + })( + + )} + + } + { + identity && identity=="professional" && + + {getFieldDecorator('job2', { + rules: [{ + initialValue:"企业管理者", + required: true, + message: '请先选择职称', + }], + })( + + )} + + } +
    {getFieldDecorator('org', { rules: [{ @@ -172,20 +502,26 @@ class AccountBasic extends Component { message: '请先选择学校/单位', }], })( - + { + filterSchoolList && filterSchoolList.map((item,key)=>{ + return() + }) + } )} -
    - 未找到包含“Test”的高校, - 申请新增 +
    + {!filterSchoolList || (filterSchoolList && filterSchoolList.length==0 )&& + + 未找到包含“{school}”的高校, + 申请新增 + + }
    - {getFieldDecorator('org2', { rules: [{ @@ -195,16 +531,26 @@ class AccountBasic extends Component { message: '请先选择院系/部门', }], })( - + { + filterDepartments && filterDepartments.map((item,key)=>{ + return( + + ) + }) + } )} -
    - 未找到包含“Test”的院系/部门, - 申请新增 -
    +
    + { + !filterDepartments || (filterDepartments && filterDepartments.length==0 )&& + + 未找到包含“{departmentsName}”的院系/部门, + 申请新增 + + } +
    {/* htmlType="submit" */} {/* diff --git a/public/react/src/modules/user/account/AccountCertification.js b/public/react/src/modules/user/account/AccountCertification.js index 1cadc00b8..7ab110fdc 100644 --- a/public/react/src/modules/user/account/AccountCertification.js +++ b/public/react/src/modules/user/account/AccountCertification.js @@ -3,26 +3,33 @@ import React, { Component } from 'react'; import { WordsBtn, getImageUrl } from 'educoder'; import RealNameCertificationModal from '../modal/RealNameCertificationModal' import '../../courses/css/Courses.css' +import {CNotificationHOC} from '../../courses/common/CNotificationHOC' + + class AccountCertification extends Component { - showRealNameCertificationModal = () => { + constructor(props){ + super(props); + this.state={ + certification:1 + } + } + + showRealNameCertificationModal = (index) => { + this.setState({ + certification:index + }) this.realNameCertificationModal.setVisible(true) } render() { + let {certification}=this.state + let {basicInfo} = this.props; return (
    - this.realNameCertificationModal = form} + this.realNameCertificationModal = form} certification={certification} >
    认证信息
    -
    +
    实名认证
    有些课程需要实名认证才能加入哟,还能获得500金币的奖励~
    - {/* showRealNameCertificationModal */} - 立即认证 - - @ - 已认证 + { + basicInfo && basicInfo.authentication =="uncertified" ? + this.showRealNameCertificationModal(1)} >立即认证: + basicInfo && basicInfo.authentication =="applying" ? 待审核: + 已认证 + }
    -
    +
    职业认证
    教师认证完毕之后,可创建课堂、发布实训、免金币查看所有实训答案..
    - @ - 立即认证 - 待审核 + { + basicInfo && basicInfo.professional_certification =="uncertified" ? + this.showRealNameCertificationModal(2)} >立即认证: + basicInfo && basicInfo.professional_certification =="applying" ? 待审核: + 已认证 + }
    diff --git a/public/react/src/modules/user/account/AccountImg.js b/public/react/src/modules/user/account/AccountImg.js index fdb4bedb9..a802367f2 100644 --- a/public/react/src/modules/user/account/AccountImg.js +++ b/public/react/src/modules/user/account/AccountImg.js @@ -1,12 +1,15 @@ import React, { Component } from 'react'; import { SnackbarHOC, getImageUrl } from 'educoder'; - +import ChangeHeaderPicModal from './ChangeHeaderPicModal' class AccountNav extends Component { + editImg = () => { + this.refs['picModal'].setVisible(true) + } render() { - // newMain clearfix return (
    + - 头像 + 头像

    修改头像

    ); diff --git a/public/react/src/modules/user/account/AccountNav.js b/public/react/src/modules/user/account/AccountNav.js index 48b606400..ea84b735e 100644 --- a/public/react/src/modules/user/account/AccountNav.js +++ b/public/react/src/modules/user/account/AccountNav.js @@ -13,87 +13,45 @@ class AccountNav extends Component { this.props.history.push(`/account/secure`) } render() { + let { basicInfo } = this.props + console.log(this.props); const path = window.location.pathname const isBasic = path.indexOf('basic') != -1 || path == "/account" const isCertification = path.indexOf('certification') != -1 const isSecure = path.indexOf('secure') != -1 return ( -
    - +
    - - 莎莎 - 管理员 + + {basicInfo && basicInfo.name} + {basicInfo && basicInfo.technical_title}
    账号管理
    • - + 基本信息 - + { + basicInfo && (basicInfo.authentication == 'uncertified' || basicInfo.authentication == 'applying') && + + } + { + basicInfo && basicInfo.authentication == 'certified' && + + }
    • - 认证信息 + 认证信息 + { + basicInfo && basicInfo.professional_certification == 'certified' && basicInfo.authentication == 'certified' ? + : + + }
    • - 安全设置 + 安全设置
    diff --git a/public/react/src/modules/user/account/AccountSecure.js b/public/react/src/modules/user/account/AccountSecure.js index f86e89d3b..9692e1dfc 100644 --- a/public/react/src/modules/user/account/AccountSecure.js +++ b/public/react/src/modules/user/account/AccountSecure.js @@ -5,9 +5,24 @@ import { Form, Button, Input } from 'antd' import '../../courses/css/Courses.css' import './common.css' + +import axios from 'axios' + const PHONE = 'PHONE' const EMAIL = 'EMAIL' const PASSWORD = 'PASSWORD' + +function regPhoneAndEmail(value){ + if(value.indexOf("@")>-1){ + // 加密邮箱 + let beforeStr=value.split("@")[0]; + let afterStr=value.split("@")[1]; + return beforeStr.substr(0,3)+"**"+beforeStr.substr(beforeStr.length-1,1)+"@"+afterStr; + }else{ + // 加密手机号码 + return value.substr(0,3)+"****"+value.substr(7,4); + } +} class AccountSecure extends Component { constructor (props) { super(props) @@ -15,10 +30,41 @@ class AccountSecure extends Component { updating: '' } } + + // 获取验证码 + getCode=(index)=>{ + let url=`/account/get_verification_code.json` + if(index == 3){ + //绑定手机号码 + let values=this.props.form.getFieldsValue(); + console.log(values); + } + } + onPhoneSubmit = () => { this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { - + let {login}=this.props.current_user; + let reg=/^1\d{10}$/; + if(reg.test(values.phone)){ + let url=`/users/accounts/${login}/phone_bind.json` + axios.post((url),{ + phone:values.phone, + code:values.phoneValidateCode + }).then((result)=>{ + if(result){ + this.props.showNotification("手机号码绑定成功!"); + this.setState({ + updating:'' + }) + this.props.getBasicInfo(); + } + }).catch((error)=>{ + console.log(error); + }) + }else{ + this.props.showNotification("请输入有效的11位手机号码"); + } } }) } @@ -36,7 +82,16 @@ class AccountSecure extends Component { } }) } + + //取消编辑 + hideUpdating=()=>{ + this.setState({ + updating:"" + }) + } + render() { + let {basicInfo}=this.props; const { getFieldDecorator } = this.props.form; const { updating } = this.state return ( @@ -70,7 +125,6 @@ class AccountSecure extends Component { text-align: right; } .flexTable .flexTable { - padding-bottom: 24px; border-bottom: 1px solid #EBEBEB; } @@ -94,6 +148,12 @@ class AccountSecure extends Component { .settingForm .ant-form-item-label { width: 204px; } + .formItemInline .ant-form-explain{ + position:absolute; + bottom:-17px; + left:0px; + width:100%; + } `}
    安全设置
    @@ -101,25 +161,30 @@ class AccountSecure extends Component {
    手机
    - {/* #EA320E - 仅自己可见,可用于手机号码登录EduCoder - */}
    - 未绑定 + { + basicInfo && basicInfo.phone ? + { regPhoneAndEmail(basicInfo.phone) } + : + 未绑定 + } 绑定手机号码,将获得500金币的奖励哟~,手机号码仅自己可见~
    -
    - this.setState({updating: PHONE})} - >立即绑定 -
    + { + updating != PHONE && +
    + this.setState({updating: PHONE})} + >{basicInfo && basicInfo.phone ? "更换" : "立即绑定" } +
    + }
    { updating == PHONE && {getFieldDecorator('phone', { rules: [{ @@ -134,7 +199,7 @@ class AccountSecure extends Component { {getFieldDecorator('phoneValidateCode', { rules: [{ @@ -145,12 +210,12 @@ class AccountSecure extends Component { })( )} - + -
    +
    - +
    }
    @@ -159,21 +224,29 @@ class AccountSecure extends Component {
    邮箱
    - kuc***w@126.com + { + basicInfo && basicInfo.mail ? + { regPhoneAndEmail(basicInfo.mail) } + : + 未绑定 + } 邮箱账号仅自己可见,可用于邮箱账号登录EduCoder
    -
    - this.setState({updating: EMAIL})} - >更换 -
    + { + updating != EMAIL && +
    + this.setState({updating: EMAIL})} + >{basicInfo && basicInfo.mail ?"更换":"立即绑定"} +
    + }
    { updating == EMAIL && {getFieldDecorator('phone', { rules: [{ @@ -188,7 +261,7 @@ class AccountSecure extends Component { {getFieldDecorator('phoneValidateCode', { rules: [{ @@ -202,9 +275,9 @@ class AccountSecure extends Component { -
    - - +
    + +
    } @@ -218,18 +291,21 @@ class AccountSecure extends Component { ********** 用于保护账户信息和登录安全
    -
    - this.setState({updating: PASSWORD})} - >修改 -
    + { + updating != PASSWORD && +
    + this.setState({updating: PASSWORD})} + >修改 +
    + }
    { updating == PASSWORD && {getFieldDecorator('p_old', { rules: [{ @@ -244,7 +320,7 @@ class AccountSecure extends Component { {getFieldDecorator('p_new', { rules: [{ @@ -259,7 +335,7 @@ class AccountSecure extends Component { {getFieldDecorator('p_again', { rules: [{ @@ -272,9 +348,9 @@ class AccountSecure extends Component { )} -
    +
    - +
    }
    diff --git a/public/react/src/modules/user/account/ChangeHeaderPicModal.js b/public/react/src/modules/user/account/ChangeHeaderPicModal.js index e69de29bb..1691c2a22 100644 --- a/public/react/src/modules/user/account/ChangeHeaderPicModal.js +++ b/public/react/src/modules/user/account/ChangeHeaderPicModal.js @@ -0,0 +1,166 @@ +import React, { Component } from "react"; +import { Modal } from "antd"; +import axios from 'axios' +import ModalWrapper from "../../courses/common/ModalWrapper" +import { Cropper } from 'educoder' + +const imageId = 'changeHeaderPic' +const previewId = 'changeHeader_imagePreview' +let uploadedImageType; +let uploadedImageName; +let uploadedImageURL; +class ChangeHeaderPicModal extends Component{ + constructor(props){ + super(props); + this.state={ + + } + } + init = () => { + var inputImage = document.getElementById('inputImage'); + const that = this; + inputImage.onchange = function () { + var files = this.files; + var file; + + // cropper && + if (files && files.length) { + file = files[0]; + + if (/^image\/\w+/.test(file.type)) { + uploadedImageType = file.type; + uploadedImageName = file.name; + + if (uploadedImageURL) { + URL.revokeObjectURL(uploadedImageURL); + } + const image = document.getElementById( imageId ); + image.src = uploadedImageURL = URL.createObjectURL(file); + that.refs['cropper'].renew(image) + // cropper.destroy(); + // cropper = new Cropper(image, options); + inputImage.value = null; + } else { + + this.props.showNotification && this.props.showNotification("请选择一个图片格式的文件") + // window.alert('Please choose an image file.'); + } + } + }; + } + componentDidMount() { + } + setVisible = (visible) => { + + this.refs['modalWrapper'].setVisible(visible) + if (visible) { + setTimeout(() => { + this.init() + }, 300) + } + } + + onSendOk = () => { + + + } + + onOk = () => { + var img_lg = document.getElementById(previewId); + // 截图小的显示框内的内容 + window.html2canvas(img_lg).then((canvas) => { + var dataUrl = canvas.toDataURL("image/jpeg"); + console.log(dataUrl) + + const url = `/users/accounts/${this.props.userLogin || 'kosasa'}/avatar.json` + axios.put(url, { + image: dataUrl + }) + .then((response) => { + // {"status":0,"message":"success","avatar_url":"avatars/User/15739"} + if (response.data.status == 0) { + + this.props.showNotification && this.props.showNotification("修改头像成功") + this.setVisible(false) + } + }) + .catch(function (error) { + console.log(error); + }); + }); + } + + render(){ + const { course_lists } = this.state + const { moduleName } = this.props + return( + + +
    +
    + + 仅支持JPG、GIF、PNG,且文件小于2M +
    +
    +
    +
    +
    头像预览
    +
    + +
    +
    +
    + ) + } +} + +export default ChangeHeaderPicModal; + + diff --git a/public/react/src/modules/user/account/common.css b/public/react/src/modules/user/account/common.css index d35c94a9c..90f45b6b0 100644 --- a/public/react/src/modules/user/account/common.css +++ b/public/react/src/modules/user/account/common.css @@ -1,9 +1,10 @@ .basicForm { background: #fff; padding: 30px; - width: 930px; - margin: 20px; margin-bottom: 10px; + box-sizing: border-box; + width: 100%; + min-height: 390px; } .basicForm .title { font-size: 16px; @@ -17,7 +18,10 @@ .flexRow { display: flex; } - +.color-green-light{ + color: #45E660!important; +} +.mb15{margin-bottom: 15px!important;} /* BUTTOn */ .ant-btn { border-radius: 2px; @@ -27,7 +31,7 @@ button.ant-btn.ant-btn-primary.grayBtn { border-color: #CBCBCB; } .borderBottom { - border-bottom: 2px solid #4CACFF; + border-bottom: 1px solid #4CACFF; } /* form ---------------- START */ @@ -41,11 +45,72 @@ button.ant-btn.ant-btn-primary.grayBtn { display: none; } - +.basicFormWrap{ + flex:1; + width: 0; +} /* .basicForm .ant-form-item-label { width: 100px; padding-right: 10px; } .basicForm .ant-form-item-label label { color: #979797 - } */ \ No newline at end of file + } */ + + /* 左侧 */ + .accountNav { + width: 290px; + box-shadow: 0px 4px 9px 0px rgba(11,62,120,0.21); + border-radius: 2px; + padding-top: 8px; + padding-bottom: 30px; + margin-bottom:30px; + margin-right:20px; + max-height:430px; + } + .accountInfo { + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + } + .accountInfo .name { + color: #05101A; + font-size: 24px; + height: 36px; + } + .accountInfo .role { + color: #666666; + font-size: 14px; + } + .accountManagement .title { + color: #05101A; + font-size: 18px; + font-weight: 400; + padding: 10px 28px; + margin-top: 6px; + } + .accountManagement .navItem { + font-size: 16px; + padding: 6px 0px; + padding-left: 30px; + border-left: 2px solid #fff; + cursor: pointer; + color:#4D4D4D; + } + .accountManagement .navItem i{ + margin-top: -4px; + display: inline-block; + margin-right: 7px; + } + .accountManagement .navItem i.status{ + margin-top: 1px; + margin-right: 24px; + } + .accountManagement .navItem.active { + border-left: 2px solid #4CACFF; + background: #E6F3FF; + } + .accountManagement .navItem.active i:first-child{ + color:#4CACFF!important; + } \ No newline at end of file diff --git a/public/react/src/modules/user/modal/ApplyForAddChildOrgModal.js b/public/react/src/modules/user/modal/ApplyForAddChildOrgModal.js index 3fe024202..0bd2d562c 100644 --- a/public/react/src/modules/user/modal/ApplyForAddChildOrgModal.js +++ b/public/react/src/modules/user/modal/ApplyForAddChildOrgModal.js @@ -15,16 +15,47 @@ class ApplyForAddChildOrgModal extends Component{ } } - componentDidMount() { - + componentDidUpdate=(prevState)=>{ + if(this.props.departmentName && prevState.departmentName != this.props.departmentName){ + this.setValue(this.props.departmentName) + } + } + componentDidMount=()=>{ + if(this.props.departmentName){ + this.setValue(this.props.departmentName) + } + } + + setValue=(name)=>{ + this.props.form.setFieldsValue({ + depart:name + }) } + setVisible = (visible) => { this.refs.modalWrapper.setVisible(visible) } onSendOk = () => { - - + this.props.form.validateFieldsAndScroll((err, values) => { + console.log(values); + if(!err){ + let{schoolId,departmentName}=this.props + let url=`/add_department_applies.json`; + axios.post(url,{ + name:departmentName, + school_id:schoolId, + remarks:values.desc + }).then((result)=>{ + if(result){ + this.props.showNotification("新增院系/部门成功!"); + this.setVisible(false); + } + }).catch((error)=>{ + console.log(error); + }) + } + }) } onOk = () => { @@ -43,17 +74,17 @@ class ApplyForAddChildOrgModal extends Component{ {...this.props } onOk={this.onOk} okText="保存" - className="modalForm" + className="applyForModal" > @@ -62,21 +93,21 @@ class ApplyForAddChildOrgModal extends Component{ label="单位名称:" className="mt15 formItemInline hideRequireTag" > - 国防科学技术大学 + {this.props.schoolName}
    - {getFieldDecorator('re', { + {getFieldDecorator('depart', { rules: [{ // initialValue: this.state.cityDefaultValue, required: true, message: '请输入部门名称', }], })( - + )} diff --git a/public/react/src/modules/user/modal/ApplyForAddOrgModal.js b/public/react/src/modules/user/modal/ApplyForAddOrgModal.js index ef94525e0..02c4d4a99 100644 --- a/public/react/src/modules/user/modal/ApplyForAddOrgModal.js +++ b/public/react/src/modules/user/modal/ApplyForAddOrgModal.js @@ -15,20 +15,49 @@ class ApplyForAddOrgModal extends Component{ } } - componentDidMount() { - + componentDidUpdate=(prevState)=>{ + if(this.props.schoolName && prevState.schoolName != this.props.schoolName){ + this.props.form.setFieldsValue({ + schoolName:this.props.schoolName + }) + } + } + componentDidMount=()=>{ + if(this.props.schoolName){ + this.props.form.setFieldsValue({ + schoolName:this.props.schoolName + }) + } } + setVisible = (visible) => { this.refs.modalWrapper.setVisible(visible) } onSendOk = () => { - - + this.props.form.validateFieldsAndScroll((err, values) => { + console.log(values); + if(!err){ + let url=`/add_school_applies.json`; + axios.post(url,{ + schoolName:values.name, + province:values.city[0], + city:values.city[1], + address:values.address, + remarks:values.remarks + }).then((result)=>{ + if(result){ + this.props.showNotification("新增学校/单位成功!"); + this.setVisible(false); + } + }).catch((error)=>{ + console.log(error); + }) + } + }) } onOk = () => { - const { course_lists, checkBoxValues } = this.state this.onSendOk() } @@ -43,26 +72,36 @@ class ApplyForAddOrgModal extends Component{ {...this.props } onOk={this.onOk} okText="保存" - className="modalForm" + className="applyForModal" > - + - {getFieldDecorator('orgName', { + {getFieldDecorator('schoolName', { rules: [{ // initialValue: this.state.cityDefaultValue, required: true, @@ -71,17 +110,18 @@ class ApplyForAddOrgModal extends Component{ })( )} -
    -
    - 示例: - - 国防科学技术大学 -
    -
    -     - - 国防科学技术大学四方坪校区 -
    +
    +
  • 示例:
  • +
      +
    • + + 国防科学技术大学 +
    • +
    • + + 国防科学技术大学开福校区 +
    • +
    @@ -89,12 +129,8 @@ class ApplyForAddOrgModal extends Component{ label="地区:" className="mt15 formItemInline hideRequireTag" > - {getFieldDecorator('re', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - required: true, - message: '请选择地区', - }], + {getFieldDecorator('city', { + rules: [], })( )} @@ -104,12 +140,8 @@ class ApplyForAddOrgModal extends Component{ label="详细地址:" className="mt15 formItemInline hideRequireTag" > - {getFieldDecorator('addr', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - required: true, - message: '请填写完整的地址信息', - }], + {getFieldDecorator('address', { + rules: [], })( )} @@ -119,7 +151,7 @@ class ApplyForAddOrgModal extends Component{ label="说明:" className="mt15 formItemInline hideRequireTag" > - {getFieldDecorator('desc', { + {getFieldDecorator('remarks', { })( )} diff --git a/public/react/src/modules/user/modal/RealNameCertificationModal.js b/public/react/src/modules/user/modal/RealNameCertificationModal.js index b3fdfc713..7af8a0210 100644 --- a/public/react/src/modules/user/modal/RealNameCertificationModal.js +++ b/public/react/src/modules/user/modal/RealNameCertificationModal.js @@ -2,9 +2,12 @@ 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 } from 'educoder' +import { City, getUploadActionUrl,getImageUrl } from 'educoder' import '../account/common.css' +import authImg from '../../../images/account/auth.png' +import jobImg from '../../../images/account/job.png' + const { TextArea } = Input; const Dragger = Upload.Dragger; function getBase64(img, callback) { @@ -39,8 +42,17 @@ class RealNameCertificationModal extends Component{ } onSendOk = () => { - - + this.props.form.validateFieldsAndScroll((err, values) => { + console.log(values); + if(!err){ + let{imageUrl2}=this.state; + if(imageUrl2){ + + }else{ + this.props.showNotification("请先上传照片!"); + } + } + }) } onOk = () => { @@ -96,16 +108,21 @@ class RealNameCertificationModal extends Component{ className: 'idPic-uploader', onChange: this.handleChange2, }; - + let {certification}=this.props; return( 实名认证: + 职业认证 + } {...this.props } onOk={this.onOk} okText="保存" - className="modalForm" + className="applyForModal certificationModal" bottomRender={ + certification && certification == 1?

    认证须知:

    @@ -121,29 +138,45 @@ class RealNameCertificationModal extends Component{

    6.如存在恶意乱填写姓名,证件号,及上传与实名认证证件无关图片者,一经发现将冻结EduCoder账号。

    +
    : +
    +

    认证须知:

    +

    + 1.根据职业上传相应的证件照:教师(教师证),专业人士(员工证)、学生(学生证),请确保证件照内容完整并且清晰可见,严禁PS; +

    + 2.我们将在你提交职业证信息后的24小时(不包含节假日)内完成审核,审核结果将会以系统消息的形式发送给你; +

    + 3.职业认证审核完成后,无法删除,请谨慎填写;职业变更请选择重新认证; +

    + 4.职业认证审核完成后,系统将自动发放500个金币作为奖励; +

    + 5.我们会确保你所提供的信息均处于严格的保密状态,不会泄露; +

    + 6.如存在恶意乱填写姓名,学号,及上传与职业证件无关图片者,一经发现将冻结EduCoder账号。 +

    - } - > + } + > - - - - {getFieldDecorator('re', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - required: true, - message: '请输入证件号', - }], - })( - - )} - - - {/* */} + + { + certification && certification ==1 && + + {getFieldDecorator('credentials', { + rules: [{ + // initialValue: this.state.cityDefaultValue, + required: true, + message: '请输入证件号', + }], + })( + + )} + + }
    - 身份证(人像面)上传 + { certification && certification == 1 ? "身份证(人像面)上传":"职业证照片上传" } (png/jpg/bmp格式,不超过2MB)
    -
    +
    - avatar - 示例图片 + avatar - {/* - {imageUrl ? - - avatar - : - -

    - -

    -

    点击或拖拽上传图片

    -
    - } -
    */} - {imageUrl2 ? @@ -231,14 +266,20 @@ class RealNameCertificationModal extends Component{ :

    - +

    -

    点击或拖拽上传图片

    +

    点击或拖拽上传图片

    {/*

    Support for a single or bulk upload. Strictly prohibit from uploading company data or other band files

    */}
    }
    +
    + 示例图片 + + 查看大图 + +
    diff --git a/public/react/src/modules/user/usersInfo/InfosPath.js b/public/react/src/modules/user/usersInfo/InfosPath.js index ce3bcfba8..0cd74cfd2 100644 --- a/public/react/src/modules/user/usersInfo/InfosPath.js +++ b/public/react/src/modules/user/usersInfo/InfosPath.js @@ -6,7 +6,7 @@ import Loadable from 'react-loadable'; import Loading from '../../../Loading'; import NoneData from '../../courses/coursesPublic/NoneData' import axios from 'axios'; -import {getImageUrl} from 'educoder'; +import {getImageUrl,setImagesUrl} from 'educoder'; import { TPMIndexHOC } from '../../tpm/TPMIndexHOC'; import { CNotificationHOC } from '../../courses/common/CNotificationHOC' import "./usersInfo.css" @@ -159,7 +159,7 @@ class InfosPath extends Component{ return(
    this.turnToCourses(`/paths/${item.id}`)}> { - item.tag &&
    {item.tag}
    + item.tag &&
    {item.tag}
    } Subject12