hjm 6 years ago
commit 2e2eb52161

@ -29,7 +29,7 @@ const env = getClientEnvironment(publicUrl);
module.exports = { module.exports = {
// You may want 'eval' instead if you prefer to see the compiled output in DevTools. // You may want 'eval' instead if you prefer to see the compiled output in DevTools.
// See the discussion in https://github.com/facebookincubator/create-react-app/issues/343.s // See the discussion in https://github.com/facebookincubator/create-react-app/issues/343.s
devtool: "source-map", // 开启调试 // devtool: "source-map", // 开启调试
// These are the "entry points" to our application. // These are the "entry points" to our application.
// This means they will be the "root" imports that are included in JS bundle. // This means they will be the "root" imports that are included in JS bundle.
// The first two entry points enable "hot" CSS and auto-refreshes for JS. // The first two entry points enable "hot" CSS and auto-refreshes for JS.

@ -553,19 +553,28 @@ class Coursesleftnav extends Component{
// notification.open({ // notification.open({
// message: "删除成功", // message: "删除成功",
// }); // });
window.location.href = url;
// this.props.history.replace(url);
window.location.href = url;
} }
deletenavchilds=(url)=>{ deletenavchilds=(url,mainurl)=>{
axios.delete(url).then((result)=>{ axios.delete(url).then((result)=>{
if(result.data.status===0){ if(result.data.status===0){
this.updatadeleteSecondary(result.data.right_url)
if(mainurl===undefined){
this.updatadeleteSecondary(result.data.right_url)
}else{
this.updatadeleteSecondary(mainurl)
}
} }
}).catch((error)=>{ }).catch((error)=>{
console.log(error) console.log(error)
}) })
} }
deleteSecondary=(e,type,id)=>{ deleteSecondary=(e,type,id,mainurl)=>{
e.stopPropagation();//阻止冒泡 e.stopPropagation();//阻止冒泡
if(type===1){ if(type===1){
let url="/course_second_categories/"+id+".json" let url="/course_second_categories/"+id+".json"
@ -593,7 +602,7 @@ class Coursesleftnav extends Component{
ModalsType:true, ModalsType:true,
Modalstopval:"该目录下的内容将被移动到父目录,", Modalstopval:"该目录下的内容将被移动到父目录,",
ModalsBottomval:"是否确认删除?", ModalsBottomval:"是否确认删除?",
ModalSave:()=>this.deletenavchilds(url), ModalSave:()=>this.deletenavchilds(url,mainurl),
}) })
} }
@ -726,7 +735,7 @@ class Coursesleftnav extends Component{
{item.type==="course_group"?<div onClick={e=>this.deleteSecondary(e,2,iem.category_id)}>删除</div>:""} {item.type==="course_group"?<div onClick={e=>this.deleteSecondary(e,2,iem.category_id)}>删除</div>:""}
{/*讨论区*/} {/*讨论区*/}
{item.type==="board"?<div onClick={e=>this.Navmodalnames(e,7,"editSecondname",iem.category_id,iem.category_name)}>重命名</div>:""} {item.type==="board"?<div onClick={e=>this.Navmodalnames(e,7,"editSecondname",iem.category_id,iem.category_name)}>重命名</div>:""}
{item.type==="board"?<div onClick={e=>this.deleteSecondary(e,3,iem.category_id)}>删除</div>:""} {item.type==="board"?<div onClick={e=>this.deleteSecondary(e,3,iem.category_id,item.category_url)}>删除</div>:""}
</div>) </div>)
} }

@ -40,7 +40,8 @@ class coursesHomeCard extends Component{
className="mt80 mb25"/> className="mt80 mb25"/>
<p className="font-14 color-white">非成员不能访问</p> <p className="font-14 color-white">非成员不能访问</p>
</div> </div>
<a href={item.first_category_url} className="square-img" > {/*<a href={item.first_category_url} className="square-img" >*/}
<a href={`/courses/${item.id}/students`} className="square-img" >
{/*target="_blank"*/} {/*target="_blank"*/}
{ {
item.is_public===1&&item.id===1309? item.is_public===1&&item.id===1309?

@ -211,15 +211,15 @@ class ShixunModal extends Component{
<a onClick={()=>this.changeTag("all")} className={ type==="all" ? "active edu-filter-cir-grey font-12":"edu-filter-cir-grey font-12"}>全部</a> <a onClick={()=>this.changeTag("all")} className={ type==="all" ? "active edu-filter-cir-grey font-12":"edu-filter-cir-grey font-12"}>全部</a>
</li> </li>
{ {/*{*/}
shixunmodallist && shixunmodallist.tags.map((item,key)=>{ {/*shixunmodallist && shixunmodallist.tags.map((item,key)=>{*/}
return( {/*return(*/}
<li className="fl mr5 mt5" key={key}> {/*<li className="fl mr5 mt5" key={key}>*/}
<a onClick={()=>this.changeTag(item.tag_id)} className={ parseInt(type) === parseInt(item.tag_id) ? "active edu-filter-cir-grey font-12":"edu-filter-cir-grey font-12"}>{item.tag_name}</a> {/*<a onClick={()=>this.changeTag(item.tag_id)} className={ parseInt(type) === parseInt(item.tag_id) ? "active edu-filter-cir-grey font-12":"edu-filter-cir-grey font-12"}>{item.tag_name}</a>*/}
</li> {/*</li>*/}
) {/*)*/}
}) {/*})*/}
} {/*}*/}
</div> </div>
<div className="clearfix mb10" id="shixun_search_form_div" style={{height:"30px"}}> <div className="clearfix mb10" id="shixun_search_form_div" style={{height:"30px"}}>
@ -251,9 +251,9 @@ class ShixunModal extends Component{
} }
<ul className="clearfix greybackHead edu-txt-center"> <ul className="clearfix greybackHead edu-txt-center">
<li className="fl with40 paddingleft22" >实训名称</li> <li className="fl with40 paddingleft22" >实训名称</li>
<li className="fl with30 edu-txt-left">使用院校</li> <li className="fl with30 edu-txt-left">院校</li>
<li className="fl with10">使用人数</li> <li className="fl with10">学习人数</li>
<li className="fl with10">评价等级</li> <li className="fl with10">难度</li>
<li className="fl with10"></li> <li className="fl with10"></li>
</ul> </ul>
@ -292,9 +292,9 @@ class ShixunModal extends Component{
<span style={{"textAlign":"left","color":"#05101A"}} className="task-hide color-grey-name">{item.shixun_name}</span> <span style={{"textAlign":"left","color":"#05101A"}} className="task-hide color-grey-name">{item.shixun_name}</span>
</Checkbox> </Checkbox>
</li> </li>
<li className="fl with30 edu-txt-left task-hide paddingl5">{item.school_users}</li> <li className="fl with30 edu-txt-left task-hide paddingl5">{item.school}</li>
<li className="fl with10 paddingl10">{item.myshixuns_count}</li> <li className="fl with10 paddingl10">{item.myshixuns_count}</li>
<li className="fl with10 color-orange-tip paddingl10">{item.preference}</li> <li className="fl with10 color-orange-tip paddingl10">{item.level}</li>
<Tooltip title="新窗口查看详情"> <Tooltip title="新窗口查看详情">
<li className="fl with10"><a className="color-blue" href={"/shixuns/"+item.identifier+"/challenges"} target="_blank">详情</a></li> <li className="fl with10"><a className="color-blue" href={"/shixuns/"+item.identifier+"/challenges"} target="_blank">详情</a></li>
</Tooltip> </Tooltip>

@ -1,134 +1,138 @@
.taskResultLayer { .taskResultLayer {
color: #666666; color: #666666;
z-index: 99999999999999; z-index: 99999999999999;
width: 100%; width: 100%;
height: 100%; height: 100%;
position: fixed; position: fixed;
background:rgba(0,0,0,0.8); background:rgba(0,0,0,0.8);
top: 0px; top: 0px;
overflow: hidden; overflow: hidden;
} }
.taskResultLayer .closeIcon{ .taskResultLayer .closeIcon{
position: absolute; position: absolute;
right: 100px; right: 100px;
top: 46px; top: 46px;
font-size: 28px; font-size: 28px;
z-index: 999999; z-index: 999999;
color: rgb(255,255,255,0.7); color: rgb(255,255,255,0.7);
cursor: pointer; cursor: pointer;
} }
.taskResultLayer .closeIcon:hover { .taskResultLayer .closeIcon:hover {
color: #4CACFF; color: #4CACFF;
} }
.taskResultLayer .expGold { .taskResultLayer .expGold {
color: #b27919 ; color: #b27919 ;
} }
.taskResultLayer .rateLabel { .taskResultLayer .rateLabel {
color: #fff ; color: #fff ;
font-size: 14px; font-size: 14px;
} }
.taskResultLayer .rc-rate-star { .taskResultLayer .rc-rate-star {
font-size: 24px; font-size: 24px;
color: rgb(192, 192, 192); color: rgb(192, 192, 192);
} }
.taskResultLayer .rc-rate-star:nth-child(5) { .taskResultLayer .rc-rate-star:nth-child(5) {
margin-right: 0px; margin-right: 0px;
} }
/* ImageLayer ----------------- Start */ /* ImageLayer ----------------- Start */
.passContent{ .passContent{
justify-content: center; justify-content: center;
align-items: center; align-items: center;
display: -webkit-flex; display: -webkit-flex;
height: 100%; height: 100%;
text-align: center; text-align: center;
} }
.passImg{ .passImg{
max-width: 86%; max-width: 86%;
max-height: 100%; max-height: 100%;
} }
/* ImageLayer ----------------- End */ /* ImageLayer ----------------- End */
.passTaskContent{ .passTaskContent{
width: 652px; width: 652px;
height:100%; height:100%;
margin:0px auto; margin:0px auto;
margin-top: 4%; margin-top: 4%;
} }
.passTaskImg{ .passTaskImg{
position: absolute; position: absolute;
z-index: 2; z-index: 2;
user-select: none; user-select: none;
} }
.winpPerson{ .winpPerson{
position: absolute; position: absolute;
width: 100%; width: 100%;
z-index: 3; z-index: 3;
color: #D1A448; color: #D1A448;
text-align: center; text-align: center;
margin-top:304px; margin-top:304px;
font-size: 18px; font-size: 18px;
} }
.winPanel{ .winPanel{
position: absolute; position: absolute;
width: 308px; width: 308px;
z-index: 5; z-index: 5;
height: 356px; height: 356px;
border-radius: 10px; border-radius: 10px;
margin:0px auto; margin:0px auto;
top:435px; top:435px;
left: 50%; left: 50%;
margin-left: -154px; margin-left: -154px;
text-align: center; text-align: center;
} }
.inline{ .inline{
display: inline-block; display: inline-block;
width: auto; width: auto;
line-height: 26px; line-height: 26px;
font-size: 16px; font-size: 16px;
} }
.inline.exp { .inline.exp {
margin-left: 18px; margin-left: 18px;
} }
.inline img{ /*.inline img{*/
margin-right: 8px; /*margin-right: 8px;*/
} /*}*/
.goldring{ .goldring{
margin-right: 8px; margin-right: 8px;
width: 17px; width: 17px;
height: 17px; height: 17px;
border-radius: 50%; border-radius: 50%;
background-color: #FFD633; background-color: #FFD633;
display: block; display: block;
float: left; float: left;
margin-top: 5px; margin-top: 5px;
} }
.passNext{ .passNext{
width:120px; width:120px;
height:30px; height:30px;
line-height:30px; line-height:30px;
border-radius: 2px; border-radius: 2px;
display: block; display: block;
background-color:#CCC; background-color:#CCC;
color:#fff!important; color:#fff!important;
margin: 0px auto; margin: 0px auto;
} }
.passed{ .passed{
width:120px; width:120px;
height:30px; height:30px;
line-height:30px; line-height:30px;
border-radius: 2px; border-radius: 2px;
display: block; display: block;
color:#fff!important; color:#fff!important;
margin: 0px auto; margin: 0px auto;
margin-top: 12px; margin-top: 12px;
background-color: #CCCCCC; background-color: #CCCCCC;
} }
.passed.stared { .passed.stared {
background-color:#4CACFF; background-color:#4CACFF;
opacity: 0.8; opacity: 0.8;
} }
.passed.stared:hover { .passed.stared:hover {
opacity: 1; opacity: 1;
}
.vertical4{
vertical-align: -4px;
} }

@ -476,7 +476,7 @@ class DetailCardsEditAndEdit extends Component{
footer={null} footer={null}
width="840px" width="840px"
destroyOnClose={true} destroyOnClose={true}
>Z >
<Spin spinning={hometypepvisible} size="large" style={{marginTop:'15%'}}> <Spin spinning={hometypepvisible} size="large" style={{marginTop:'15%'}}>
<div className="newupload_conbox"> <div className="newupload_conbox">
<div className="clearfix mb20 shixun_work_div newshixun_tab_div cdefault" style={{"marginRight":"4px"}} id="shixun_tab_div"> <div className="clearfix mb20 shixun_work_div newshixun_tab_div cdefault" style={{"marginRight":"4px"}} id="shixun_tab_div">

@ -37,7 +37,16 @@ class NewFooter extends Component {
</ul> </ul>
</div> </div>
<div> <div>
<p className="footer_con-p inline lineh-30 font-14"><span className="font-18 fl">©</span>&nbsp;2019&nbsp;EduCoder<span className="ml15 mr15">ICP17009477</span><a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">Trustie</a>&nbsp;&nbsp;&nbsp;&amp;&nbsp;&nbsp;&nbsp;IntelliDE inside.</p> <p className="footer_con-p inline lineh-30 font-14">
<span className="font-18 fl">©</span>&nbsp;2019&nbsp;EduCoder
<a style={{"color":"#888"}} target="_blank" href="http://beian.miit.gov.cn/" className="ml15 mr15">湘ICP备17009477号</a>
<a style={{"color":"#888"}} target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=43019002000962" className="mr15">
<img className="vertical4" src={require('./beian.png')}/>湘公网安备43019002000962号
</a>
<a href="https://team.trustie.net" style={{"color":"#888"}}
target="_blank">Trustie</a>&nbsp;&nbsp;&nbsp;&amp;&nbsp;&nbsp;&nbsp;IntelliDE inside. <span
className="mr15">版权所有 湖南智擎科技有限公司</span>
</p>
</div> </div>
<div className="cl"></div> <div className="cl"></div>
</div> </div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@ -1,338 +1,338 @@
import React, {Component} from 'react'; import React, {Component} from 'react';
import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal} from 'antd'; import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal} from 'antd';
import {BrowserRouter as Router, Route, Link, Switch} from "react-router-dom"; import {BrowserRouter as Router, Route, Link, Switch} from "react-router-dom";
// import "antd/dist/antd.css"; // import "antd/dist/antd.css";
import { getImageUrl, toPath, getUrl } from 'educoder'; import { getImageUrl, toPath, getUrl } from 'educoder';
import '../../courses/css/Courses.css' import '../../courses/css/Courses.css'
import axios from 'axios'; import axios from 'axios';
import './css/TPMchallengesnew.css'; import './css/TPMchallengesnew.css';
require('codemirror/lib/codemirror.css'); require('codemirror/lib/codemirror.css');
let origin = getUrl(); let origin = getUrl();
let path = getUrl("/editormd/lib/") let path = getUrl("/editormd/lib/")
const $ = window.$; const $ = window.$;
let timeout; let timeout;
let currentValue; let currentValue;
const Option = Select.Option; const Option = Select.Option;
const RadioGroup = Radio.Group; const RadioGroup = Radio.Group;
// 保存数据 // 保存数据
function md_add_data(k,mdu,d){ function md_add_data(k,mdu,d){
window.sessionStorage.setItem(k+mdu,d); window.sessionStorage.setItem(k+mdu,d);
} }
// 清空保存的数据 // 清空保存的数据
function md_clear_data(k,mdu,id){ function md_clear_data(k,mdu,id){
window.sessionStorage.removeItem(k+mdu); window.sessionStorage.removeItem(k+mdu);
var id1 = "#e_tip_"+id; var id1 = "#e_tip_"+id;
var id2 = "#e_tips_"+id; var id2 = "#e_tips_"+id;
if(k == 'content'){ if(k == 'content'){
$(id2).html(" "); $(id2).html(" ");
}else{ }else{
$(id1).html(" "); $(id1).html(" ");
} }
} }
window.md_clear_data = md_clear_data window.md_clear_data = md_clear_data
// editor 存在了jquery对象上应用不需要自己写md_rec_data方法了 // editor 存在了jquery对象上应用不需要自己写md_rec_data方法了
function md_rec_data(k, mdu, id) { function md_rec_data(k, mdu, id) {
if (window.sessionStorage.getItem(k + mdu) !== null) { if (window.sessionStorage.getItem(k + mdu) !== null) {
var editor = $("#e_tips_" + id).data('editor'); var editor = $("#e_tips_" + id).data('editor');
editor.setValue(window.sessionStorage.getItem(k + mdu)); editor.setValue(window.sessionStorage.getItem(k + mdu));
// debugger; // debugger;
// /shixuns/b5hjq9zm/challenges/3977/tab=3 setValue可能导致editor样式问题 // /shixuns/b5hjq9zm/challenges/3977/tab=3 setValue可能导致editor样式问题
md_clear_data(k, mdu, id); md_clear_data(k, mdu, id);
} }
} }
window.md_rec_data = md_rec_data; window.md_rec_data = md_rec_data;
function md_elocalStorage(editor,mdu,id){ function md_elocalStorage(editor,mdu,id){
if (window.sessionStorage){ if (window.sessionStorage){
var oc = window.sessionStorage.getItem('content'+mdu); var oc = window.sessionStorage.getItem('content'+mdu);
if(oc !== null ){ if(oc !== null ){
console.log("#e_tips_"+id) console.log("#e_tips_"+id)
$("#e_tips_"+id).data('editor', editor); $("#e_tips_"+id).data('editor', editor);
var h = '您上次有已保存的数据,是否<a style="cursor: pointer;" class="link-color-blue" onclick="md_rec_data(\'content\',\''+ mdu + '\',\'' + id + '\')">恢复</a> ? / <a style="cursor: pointer;" class="link-color-blue" onclick="md_clear_data(\'content\',\''+ mdu + '\',\'' + id + '\')">不恢复</a>'; var h = '您上次有已保存的数据,是否<a style="cursor: pointer;" class="link-color-blue" onclick="md_rec_data(\'content\',\''+ mdu + '\',\'' + id + '\')">恢复</a> ? / <a style="cursor: pointer;" class="link-color-blue" onclick="md_clear_data(\'content\',\''+ mdu + '\',\'' + id + '\')">不恢复</a>';
$("#e_tips_"+id).html(h); $("#e_tips_"+id).html(h);
} }
setInterval(function() { setInterval(function() {
var d = new Date(); var d = new Date();
var h = d.getHours(); var h = d.getHours();
var m = d.getMinutes(); var m = d.getMinutes();
var s = d.getSeconds(); var s = d.getSeconds();
h = h < 10 ? '0' + h : h; h = h < 10 ? '0' + h : h;
m = m < 10 ? '0' + m : m; m = m < 10 ? '0' + m : m;
s = s < 10 ? '0' + s : s; s = s < 10 ? '0' + s : s;
if(editor.getValue().trim() != ""){ if(editor.getValue().trim() != ""){
md_add_data("content",mdu,editor.getValue()); md_add_data("content",mdu,editor.getValue());
var id1 = "#e_tip_"+id; var id1 = "#e_tip_"+id;
var id2 = "#e_tips_"+id; var id2 = "#e_tips_"+id;
var textStart = " 数据已于 " var textStart = " 数据已于 "
var text = textStart + h + ':' + m + ':' + s +" 保存 "; var text = textStart + h + ':' + m + ':' + s +" 保存 ";
// 占位符 // 占位符
var oldHtml = $(id2).html(); var oldHtml = $(id2).html();
if (oldHtml && oldHtml != ' ' && oldHtml.startsWith(textStart) == false) { if (oldHtml && oldHtml != ' ' && oldHtml.startsWith(textStart) == false) {
$(id2).html( oldHtml.split(' (')[0] + ` (${text})`); $(id2).html( oldHtml.split(' (')[0] + ` (${text})`);
} else { } else {
$(id2).html(text); $(id2).html(text);
} }
// $(id2).html(""); // $(id2).html("");
} }
},10000); },10000);
}else{ }else{
$("#e_tip_"+id).after('您的浏览器不支持localStorage.无法开启自动保存草稿服务,请升级浏览器!'); $("#e_tip_"+id).after('您的浏览器不支持localStorage.无法开启自动保存草稿服务,请升级浏览器!');
} }
} }
function create_editorMD(id, width, high, placeholder, imageUrl, callback, initValue, function create_editorMD(id, width, high, placeholder, imageUrl, callback, initValue,
onchange, watch, { noStorage, showNullButton }, that) { onchange, watch, { noStorage, showNullButton }, that) {
// 还是出现了setting只有一份被共用的问题 // 还是出现了setting只有一份被共用的问题
var editorName = window.editormd(id, { var editorName = window.editormd(id, {
width: width, width: width,
height: high===undefined?400:high, height: high===undefined?400:high,
path: path, // "/editormd/lib/" path: path, // "/editormd/lib/"
markdown : initValue, markdown : initValue,
dialogLockScreen: false, dialogLockScreen: false,
watch:watch===undefined?true:watch, watch:watch===undefined?true:watch,
syncScrolling: "single", syncScrolling: "single",
tex: true, tex: true,
tocm: true, tocm: true,
emoji: true, emoji: true,
taskList: true, taskList: true,
codeFold: true, codeFold: true,
searchReplace: true, searchReplace: true,
htmlDecode: "style,script,iframe", htmlDecode: "style,script,iframe",
sequenceDiagram: true, sequenceDiagram: true,
autoFocus: false, autoFocus: false,
// mine // mine
toolbarIcons: function (mdEditor) { toolbarIcons: function (mdEditor) {
let react_id = `react_${mdEditor.id}`; let react_id = `react_${mdEditor.id}`;
const __that = window[react_id] const __that = window[react_id]
// Or return editormd.toolbarModes[name]; // full, simple, mini // Or return editormd.toolbarModes[name]; // full, simple, mini
// Using "||" set icons align right. // Using "||" set icons align right.
const icons = ["bold", "italic", "|", "list-ul", "list-ol", "|", "code", "code-block", "|", "testIcon", "testIcon1", '|', "image", "table", '|', "watch", "clear"]; const icons = ["bold", "italic", "|", "list-ul", "list-ol", "|", "code", "code-block", "|", "testIcon", "testIcon1", '|', "image", "table", '|', "watch", "clear"];
if (__that.props.showNullButton) { if (__that.props.showNullButton) {
icons.push('nullBtton') icons.push('nullBtton')
} }
return icons return icons
}, },
toolbarCustomIcons: { toolbarCustomIcons: {
testIcon: "<a type=\"inline\" class=\"latex\" ><div class='zbg'></div></a>", testIcon: "<a type=\"inline\" class=\"latex\" ><div class='zbg'></div></a>",
testIcon1: "<a type=\"latex\" class=\"latex\" ><div class='zbg_latex'></div></a>", testIcon1: "<a type=\"latex\" class=\"latex\" ><div class='zbg_latex'></div></a>",
nullBtton: "<a type=\"nullBtton\" class='pr' title='增加填空'><div class='border-left'><span></span></div><span class='fillTip'>点击插入填空项</span><i class=\"iconfont icon-edit font-16\"></i></a>", nullBtton: "<a type=\"nullBtton\" class='pr' title='增加填空'><div class='border-left'><span></span></div><span class='fillTip'>点击插入填空项</span><i class=\"iconfont icon-edit font-16\"></i></a>",
}, },
//这个配置在simple.html中并没有但是为了能够提交表单使用这个配置可以让构造出来的HTML代码直接在第二个隐藏的textarea域中方便post提交表单。 //这个配置在simple.html中并没有但是为了能够提交表单使用这个配置可以让构造出来的HTML代码直接在第二个隐藏的textarea域中方便post提交表单。
saveHTMLToTextarea: true, saveHTMLToTextarea: true,
// 用于增加自定义工具栏的功能可以直接插入HTML标签不使用默认的元素创建图标 // 用于增加自定义工具栏的功能可以直接插入HTML标签不使用默认的元素创建图标
dialogMaskOpacity: 0.6, dialogMaskOpacity: 0.6,
placeholder: placeholder, placeholder: placeholder,
imageUpload: true, imageUpload: true,
imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"], imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"],
imageUploadURL: imageUrl,//url imageUploadURL: imageUrl,//url
onchange: onchange, onchange: onchange,
onload: function() { onload: function() {
let _id = this.id // 如果要使用this这里不能使用箭头函数 let _id = this.id // 如果要使用this这里不能使用箭头函数
let _editorName = this; let _editorName = this;
let react_id = `react_${_editorName.id}`; let react_id = `react_${_editorName.id}`;
const __that = window[react_id] const __that = window[react_id]
// this.previewing(); // this.previewing();
// let _id = id; // let _id = id;
$("#" + _id + " [type=\"latex\"]").bind("click", function () { $("#" + _id + " [type=\"latex\"]").bind("click", function () {
_editorName.cm.replaceSelection("```latex"); _editorName.cm.replaceSelection("```latex");
_editorName.cm.replaceSelection("\n"); _editorName.cm.replaceSelection("\n");
_editorName.cm.replaceSelection("\n"); _editorName.cm.replaceSelection("\n");
_editorName.cm.replaceSelection("```"); _editorName.cm.replaceSelection("```");
var __Cursor = _editorName.cm.getDoc().getCursor(); var __Cursor = _editorName.cm.getDoc().getCursor();
_editorName.cm.setCursor(__Cursor.line - 1, 0); _editorName.cm.setCursor(__Cursor.line - 1, 0);
}); });
$("#" + _id + " [type=\"inline\"]").bind("click", function () { $("#" + _id + " [type=\"inline\"]").bind("click", function () {
_editorName.cm.replaceSelection("$$$$"); _editorName.cm.replaceSelection("$$$$");
var __Cursor = _editorName.cm.getDoc().getCursor(); var __Cursor = _editorName.cm.getDoc().getCursor();
_editorName.cm.setCursor(__Cursor.line, __Cursor.ch - 2); _editorName.cm.setCursor(__Cursor.line, __Cursor.ch - 2);
_editorName.cm.focus(); _editorName.cm.focus();
}); });
$("[type=\"inline\"]").attr("title", "行内公式"); $("[type=\"inline\"]").attr("title", "行内公式");
$("[type=\"latex\"]").attr("title", "多行公式"); $("[type=\"latex\"]").attr("title", "多行公式");
if (__that.props.showNullButton) { if (__that.props.showNullButton) {
const NULL_CH = '▁' const NULL_CH = '▁'
// const NULL_CH = '' // const NULL_CH = ''
// const NULL_CH = '🈳' // const NULL_CH = '🈳'
$("#" + _id + " [type=\"nullBtton\"]").bind("click", function () { $("#" + _id + " [type=\"nullBtton\"]").bind("click", function () {
_editorName.cm.replaceSelection(NULL_CH); _editorName.cm.replaceSelection(NULL_CH);
// var __Cursor = _editorName.cm.getDoc().getCursor(); // var __Cursor = _editorName.cm.getDoc().getCursor();
// _editorName.cm.setCursor(__Cursor.line - 1, 0); // _editorName.cm.setCursor(__Cursor.line - 1, 0);
}); });
} }
if (noStorage == true) { if (noStorage == true) {
} else { } else {
md_elocalStorage(_editorName, `MDEditor__${_id}`, _id); md_elocalStorage(_editorName, `MDEditor__${_id}`, _id);
} }
callback && callback(_editorName) callback && callback(_editorName)
} }
}); });
return editorName; return editorName;
} }
export default class TPMMDEditor extends Component { export default class TPMMDEditor extends Component {
constructor(props) { constructor(props) {
super(props) super(props)
this.state = { this.state = {
initValue: '' initValue: ''
} }
} }
componentDidUpdate(prevProps, prevState) { componentDidUpdate(prevProps, prevState) {
// 不能加,影响了试卷填空题 // 不能加,影响了试卷填空题
// if (this.props.initValue != prevProps.initValue) { // if (this.props.initValue != prevProps.initValue) {
// this.answers_editormd.setValue(this.props.initValue) // this.answers_editormd.setValue(this.props.initValue)
// } // }
} }
// react_mdEditor_ // react_mdEditor_
componentDidMount = () => { componentDidMount = () => {
const { mdID, initValue, placeholder, showNullButton} = this.props; const { mdID, initValue, placeholder, showNullButton} = this.props;
let _id = `mdEditor_${mdID}` let _id = `mdEditor_${mdID}`
this.contentChanged = false; this.contentChanged = false;
const _placeholder = placeholder || ""; const _placeholder = placeholder || "";
// amp; // amp;
// 编辑时要传memoId // 编辑时要传memoId
const imageUrl = `/api/attachments.json`; const imageUrl = `/api/attachments.json`;
// 创建editorMd // 创建editorMd
let react_id = `react_${_id}`; let react_id = `react_${_id}`;
window[react_id] = this window[react_id] = this
const answers_editormd = create_editorMD(_id, '100%', this.props.height, _placeholder, imageUrl, (__editorName) => { const answers_editormd = create_editorMD(_id, '100%', this.props.height, _placeholder, imageUrl, (__editorName) => {
react_id = `react_${__editorName.id}`; react_id = `react_${__editorName.id}`;
const that = window[react_id] const that = window[react_id]
setTimeout(() => { setTimeout(() => {
console.log('timeout', __editorName.id) console.log('timeout', __editorName.id)
__editorName.resize() __editorName.resize()
__editorName.cm && __editorName.cm.refresh() __editorName.cm && __editorName.cm.refresh()
}, that.props.refreshTimeout || 500) }, that.props.refreshTimeout || 500)
if (that.props.initValue != undefined && that.props.initValue != '') { if (that.props.initValue != undefined && that.props.initValue != '') {
__editorName.setValue(that.props.initValue) __editorName.setValue(that.props.initValue)
} }
if (that.state.initValue) { if (that.state.initValue) {
__editorName.setValue(that.state.initValue) __editorName.setValue(that.state.initValue)
} }
__editorName.cm.on("change", (_cm, changeObj) => { __editorName.cm.on("change", (_cm, changeObj) => {
that.contentChanged = true; that.contentChanged = true;
if (that.state.showError) { if (that.state.showError) {
that.setState({showError: false}) that.setState({showError: false})
} }
that.onEditorChange() that.onEditorChange()
}) })
that.props.onCMBlur && __editorName.cm.on('blur', () => { that.props.onCMBlur && __editorName.cm.on('blur', () => {
that.props.onCMBlur() that.props.onCMBlur()
}) })
that.props.onCMBeforeChange && __editorName.cm.on('beforeChange', (cm,change) => { that.props.onCMBeforeChange && __editorName.cm.on('beforeChange', (cm,change) => {
that.props.onCMBeforeChange(cm,change) that.props.onCMBeforeChange(cm,change)
}) })
that.answers_editormd = __editorName; that.answers_editormd = __editorName;
window[_id] = __editorName; window[_id] = __editorName;
}, initValue, this.onEditorChange,this.props.watch, { }, initValue, this.onEditorChange,this.props.watch, {
noStorage: this.props.noStorage, noStorage: this.props.noStorage,
showNullButton: this.props.showNullButton showNullButton: this.props.showNullButton
}, this); }, this);
} }
showError = () => { showError = () => {
this.setState({showError: true}) this.setState({showError: true})
} }
onEditorChange = () => { onEditorChange = () => {
if (!this.answers_editormd) return; if (!this.answers_editormd) return;
const val = this.answers_editormd.getValue(); const val = this.answers_editormd.getValue();
try { try {
this.props.onChange && this.props.onChange(val) this.props.onChange && this.props.onChange(val)
} catch(e) { } catch(e) {
// http://localhost:3007/courses/1309/common_homeworks/6566/setting // http://localhost:3007/courses/1309/common_homeworks/6566/setting
// 从这个页面,跳转到编辑页面,再在编辑页面点击返回的时候,这里会报错 // 从这个页面,跳转到编辑页面,再在编辑页面点击返回的时候,这里会报错
console.error('出错') console.error('出错')
console.error(e) console.error(e)
} }
} }
resize = () => { resize = () => {
if (!this.answers_editormd) { // 还未初始化 if (!this.answers_editormd) { // 还未初始化
return; return;
} }
this.answers_editormd.resize() this.answers_editormd.resize()
this.answers_editormd.cm && this.answers_editormd.cm.refresh() this.answers_editormd.cm && this.answers_editormd.cm.refresh()
this.answers_editormd.cm.focus() this.answers_editormd.cm.focus()
} }
getValue = () => { getValue = () => {
try { try {
return this.answers_editormd.getValue() return this.answers_editormd.getValue()
} catch (e) { } catch (e) {
return '' return ''
} }
} }
setValue = (val) => { setValue = (val) => {
try { try {
this.answers_editormd.setValue(val) this.answers_editormd.setValue(val)
} catch (e) { } catch (e) {
// TODO 这里多实例的时候前一个实例的state会被后面这个覆盖 参考NewWork.js http://localhost:3007/courses/1309/homework/9300/edit/1 // TODO 这里多实例的时候前一个实例的state会被后面这个覆盖 参考NewWork.js http://localhost:3007/courses/1309/homework/9300/edit/1
// 未初始化 // 未初始化
this.setState({ initValue: val }) this.setState({ initValue: val })
} }
} }
render() { render() {
let { let {
showError showError
} = this.state; } = this.state;
let { mdID, className, noStorage } = this.props; let { mdID, className, noStorage } = this.props;
let _style = {} let _style = {}
if (showError) { if (showError) {
_style.border = '1px solid red' _style.border = '1px solid red'
} }
return ( return (
<React.Fragment> <React.Fragment>
<div className={`df ${className}`} > <div className={`df ${className}`} >
{/* padding10-20 */} {/* padding10-20 */}
<div className="edu-back-greyf5 radius4" id={`mdEditor_${mdID}`} style={{..._style}}> <div className="edu-back-greyf5 radius4" id={`mdEditor_${mdID}`} style={{..._style}}>
<textarea style={{display: 'none'}} id="evaluate_script_show" name="content"></textarea> <textarea style={{display: 'none'}} id={`mdEditors_${mdID}`} name="content"></textarea>
<div className="CodeMirror cm-s-defualt"> <div className="CodeMirror cm-s-defualt">
</div> </div>
</div> </div>
</div> </div>
<div className={"fr rememberTip"}> <div className={"fr rememberTip"}>
{noStorage == true ? ' ' : <p id={`e_tips_mdEditor_${mdID}`} className="edu-txt-right color-grey-cd font-12"> </p>} {noStorage == true ? ' ' : <p id={`e_tips_mdEditor_${mdID}`} className="edu-txt-right color-grey-cd font-12"> </p>}
{/* {noStorage == true ? ' ' : <p id={`e_tips_mdEditor_${mdID}`} className="edu-txt-right color-grey-cd font-12"> </p>} */} {/* {noStorage == true ? ' ' : <p id={`e_tips_mdEditor_${mdID}`} className="edu-txt-right color-grey-cd font-12"> </p>} */}
</div> </div>
</React.Fragment> </React.Fragment>
) )
} }
} }

@ -1,6 +1,6 @@
import React, {Component} from 'react'; import React, {Component} from 'react';
import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal,Tooltip} from 'antd'; import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal,Tooltip,notification} from 'antd';
import {BrowserRouter as Router, Route, Link, Switch} from "react-router-dom"; import {BrowserRouter as Router, Route, Link, Switch} from "react-router-dom";
@ -184,7 +184,7 @@ export default class TPMquestion extends Component {
practice_url: newpractice_url, practice_url: newpractice_url,
go_back_url: newgo_back_url, go_back_url: newgo_back_url,
power:response.data.power, power:response.data.power,
questioMD:response.data.task_pass, // questioMD:response.data.task_pass,
answer:response.data.answer answer:response.data.answer
}) })
@ -192,7 +192,7 @@ export default class TPMquestion extends Component {
this.setState({ this.setState({
contentMdRefval:response.data.task_pass contentMdRefval:response.data.task_pass
}) })
this.contentMdRef.current.setValue(response.data.task_pass || '') // this.contentMdRef.current.setValue(response.data.task_pass || '')
if(response.data.chooses.length===0){ if(response.data.chooses.length===0){
this.questionadd() this.questionadd()
} }
@ -248,14 +248,14 @@ export default class TPMquestion extends Component {
practice_url: newpractice_url, practice_url: newpractice_url,
go_back_url: newgo_back_url, go_back_url: newgo_back_url,
power:response.data.power, power:response.data.power,
questioMD:response.data.task_pass, // questioMD:response.data.task_pass,
}) })
this.setState({ this.setState({
contentMdRefval:response.data.task_pass contentMdRefval:response.data.task_pass
}) })
this.contentMdRef.current.setValue(response.data.task_pass || '') // this.contentMdRef.current.setValue(response.data.task_pass || '')
if(response.data.chooses.length===0){ if(response.data.chooses.length===0){
this.questionadd() this.questionadd()
} }
@ -400,12 +400,14 @@ export default class TPMquestion extends Component {
} }
questionall=()=>{ questionall=()=>{
this.setState({ // this.setState({
activetype:"first", // activetype:"first",
newquestionaddtype:false, // newquestionaddtype:false,
editquestionaddtype:false, // editquestionaddtype:false,
questionaddtype:false // questionaddtype:false
}) // })
window.location.href = '/shixuns/'+this.props.match.params.shixunId+'/challenges/'+this.props.match.params.checkpointId+'/editquestion';
} }
questionadd=()=>{ questionadd=()=>{
$('html').animate({ $('html').animate({
@ -707,14 +709,22 @@ export default class TPMquestion extends Component {
// $('html').animate({ // $('html').animate({
// scrollTop: 10 // scrollTop: 10
// }, 200); // }, 200);
message.success("修改成功"); $('html').animate({
scrollTop: 10
}, 200);
notification.open({
message: '提示',
description:
'修改成功,请点击右侧加号继续添加',
});
this.setState({ this.setState({
questionaddtype:false, questionaddtype:false,
newquestioMDvaluetype:false, newquestioMDvaluetype:false,
newquestioMDvaluetypes:false, newquestioMDvaluetypes:false,
}) })
setTimeout(window.location.href="/shixuns/"+this.props.match.params.shixunId+"/challenges/"+this.props.match.params.checkpointId+"/editquestion"+"/"+response.data.challenge_choose_id,1000) // setTimeout(window.location.href="/shixuns/"+this.props.match.params.shixunId+"/challenges/"+this.props.match.params.checkpointId+"/editquestion"+"/"+response.data.challenge_choose_id,1000)
// this.gochooseid() // this.gochooseid()
}).catch((error) => { }).catch((error) => {
console.log(error) console.log(error)
@ -761,12 +771,17 @@ export default class TPMquestion extends Component {
newquestioMDvaluetypes:false, newquestioMDvaluetypes:false,
questionaddarray:questionaddarrays questionaddarray:questionaddarrays
}) })
// $('html').animate({ $('html').animate({
// scrollTop: 10 scrollTop: 10
// }, 200); }, 200);
message.success("新建成功");
notification.open({
message: '提示',
description:
'新建成功,请点击右侧加号继续添加',
});
// this.getanswer_subitlist() // this.getanswer_subitlist()
this.gochooseid("/shixuns/"+this.props.match.params.shixunId+"/challenges/"+this.props.match.params.checkpointId+"/editquestion"+"/"+response.data.challenge_choose_id) // this.gochooseid("/shixuns/"+this.props.match.params.shixunId+"/challenges/"+this.props.match.params.checkpointId+"/editquestion"+"/"+response.data.challenge_choose_id)
}).catch((error) => { }).catch((error) => {
console.log(error) console.log(error)
}); });
@ -869,7 +884,8 @@ export default class TPMquestion extends Component {
} }
gochooseid=(url)=>{ gochooseid=(url)=>{
window.location.href =url window.location.href =url
// window.location.Reload(url)
// this.props.history.replace( url ); // this.props.history.replace( url );
// this.props.history.push( url ); // this.props.history.push( url );
// 返回 // 返回

@ -24,7 +24,10 @@ export default class TpmQuestionEdit extends Component {
render() { render() {
console.log( this.props.questionlists) console.log( this.props.neweditanswerRef)
console.log( this.props.neweditanswerRefval)
console.log( this.props.editanswersRef)
console.log( this.props.editanswersRefval)
return ( return (
<div> <div>
@ -34,7 +37,7 @@ export default class TpmQuestionEdit extends Component {
<div className="df"> <div className="df">
<span className="mr30 color-orange pt10">*</span> <span className="mr30 color-orange pt10">*</span>
<div className="flex1 mr20"> <div className="flex1 mr20">
<TPMMDEditor ref={this.props.neweditanswerRef} placeholder="请输入选择题的题干内容" mdID={'newquestioMDid'} refreshTimeout={1500} <TPMMDEditor ref={this.props.neweditanswerRef} placeholder="请输入选择题的题干内容" mdID={'editquestioMDid'} refreshTimeout={1500}
watch={true} className="courseMessageMD" initValue={this.props.neweditanswerRefval}></TPMMDEditor> watch={true} className="courseMessageMD" initValue={this.props.neweditanswerRefval}></TPMMDEditor>
</div> </div>

@ -24,7 +24,7 @@ export default class TpmQuestionNew extends Component {
render() { render() {
console.log( this.props.questionlists) // console.log( this.props.questionlists)
return ( return (
<div> <div>

@ -1,4 +1,9 @@
.height40 { .height40 {
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
}
.line27{
line-height: 27px;
vertical-align: 1px;
} }

@ -2,7 +2,7 @@ import React, { Component } from 'react';
import { Redirect } from 'react-router'; import { Redirect } from 'react-router';
import {Modal, Button, Radio, Input, Checkbox,message} from 'antd'; import {Modal, Button, Radio, Input, Checkbox,message,Spin, Icon} from 'antd';
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
@ -44,7 +44,8 @@ class Collaborators extends Component {
collaboratorListsum:10, collaboratorListsum:10,
collaboratorListsumtype:true, collaboratorListsumtype:true,
user_name:undefined, user_name:undefined,
school_name:undefined school_name:undefined,
spinnings:false
} }
} }
componentDidMount() { componentDidMount() {
@ -155,9 +156,11 @@ class Collaborators extends Component {
}) })
} }
onSearchadmin = (value) => { onSearchadmin = (value) => {
let {collaboratorList,user_name,school_name} = this.state; let {collaboratorList,user_name,school_name} = this.state;
this.setState({ this.setState({
Searchadmin: [], Searchadmin: [],
spinnings:true,
}) })
// if (value === "") { // if (value === "") {
// this.setState({ // this.setState({
@ -174,7 +177,9 @@ class Collaborators extends Component {
school_name:school_name, school_name:school_name,
}}).then((response) => { }}).then((response) => {
if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { if (response.data.status === 403||response.data.status === 401||response.data.status === 500) {
this.setState({
spinnings:false
})
}else{ }else{
let newlist = response.data.users; let newlist = response.data.users;
for (var i = 0; i < newlist.length; i++) { for (var i = 0; i < newlist.length; i++) {
@ -182,7 +187,8 @@ class Collaborators extends Component {
} }
this.setState({ this.setState({
Searchadmin: newlist, Searchadmin: newlist,
collaboratorList: collaboratorList collaboratorList: collaboratorList,
spinnings:false
}) })
} }
@ -404,7 +410,10 @@ class Collaborators extends Component {
lineHeight: '30px', lineHeight: '30px',
}; };
// console.log(collaboratorList) // console.log(collaboratorList)
return (
const antIcon = <Icon type="loading" style={{ fontSize: 24 }} spin />;
return (
<React.Fragment> <React.Fragment>
<p className="clearfix mt30" <p className="clearfix mt30"
style={{display:this.props.identity<5?"block":"none"}} style={{display:this.props.identity<5?"block":"none"}}
@ -412,7 +421,7 @@ class Collaborators extends Component {
<a onClick={() => this.showCollaboratorsvisible("cooperation")} <a onClick={() => this.showCollaboratorsvisible("cooperation")}
className="edu-default-btn edu-greenback-btn fr mr20 height40" className="edu-default-btn edu-greenback-btn fr mr20 height40"
data-remote="true"> data-remote="true">
+ 添加合作 <span className={"line27"}>+ </span>
</a> </a>
<a onClick={() => this.showCollaboratorsvisible("admin")} <a onClick={() => this.showCollaboratorsvisible("admin")}
style={{display:this.props.identity===1?"block":"none"}} style={{display:this.props.identity===1?"block":"none"}}
@ -467,6 +476,7 @@ class Collaborators extends Component {
visible={Collaboratorsvisibleadmin} visible={Collaboratorsvisibleadmin}
closable={false} closable={false}
footer={null} footer={null}
width={800}
> >
{/*<Search*/} {/*<Search*/}
{/*placeholder="输入用户的姓名、昵称、邮箱进行搜索"*/} {/*placeholder="输入用户的姓名、昵称、邮箱进行搜索"*/}
@ -475,53 +485,53 @@ class Collaborators extends Component {
{/*onInput={this.onSearchadmins}*/} {/*onInput={this.onSearchadmins}*/}
{/*style={{width: '100%'}}*/} {/*style={{width: '100%'}}*/}
{/*/>*/} {/*/>*/}
<span className="mr10">姓名:</span> <span className="mr10">姓名或手机号:</span>
<Input allowClear placeholder="请输入真实姓名" value={user_name} onInput={(e) => {this.setState({user_name: e.target.value})}} <Input placeholder="请输入姓名或手机号码搜索" value={user_name} onInput={(e) => {this.setState({user_name: e.target.value})}}
style={{ width: '130px'}} style={{ width: '215px'}}
></Input> ></Input>
<span className="label ml10 " style={{ minWidth: '36px' }}>单位:</span> <span className="label ml10 " style={{ minWidth: '36px' }}>单位:</span>
<Input allowClear placeholder="请输入单位名称" className="ml10" value={school_name} onInput={(e) => {this.setState({school_name: e.target.value})}} <Input placeholder="请输入单位名称" className="ml10" value={school_name} onInput={(e) => {this.setState({school_name: e.target.value})}}
style={{ width: '135px'}}> style={{ width: '215px'}}
>
</Input> </Input>
<a className="task-btn task-btn-orange" onClick={() => this.onSearchadmin()} <a className="task-btn task-btn-orange ml20" onClick={() => this.onSearchadmin()}
style={{ height: '30px', lineHeight: '30px', marginLeft: '10px', width: '70px'}} style={{ height: '30px', lineHeight: '30px', width: '70px'}}
>搜索</a> >搜索</a>
<p className="clearfix pl35 mt20"> <p className="clearfix pl35 mt20">
<span className="fl edu-txt-w80 task-hide font-bd ml10 edu-txt-left">姓名</span> <span className="fl edu-txt-w100 task-hide font-bd ml10 edu-txt-left">姓名</span>
<span className="fl edu-txt-w80 task-hide font-bd">职业</span> <span className="fl edu-txt-w100 task-hide font-bd">职业</span>
<span className="fl edu-txt-w180 task-hide font-bd ml50">单位</span> <span className="fl edu-txt-w180 task-hide font-bd ml80">单位</span>
</p> </p>
<div className="mt5" style={{background: '#f7f9fd'}}> <div className="mt5" style={{background: '#f7f9fd'}}>
<Spin indicator={antIcon} spinning={this.state.spinnings}>
<div className="clearfix"> <div className="clearfix">
<ul className="upload_select_box fl" id="search_not_teachers_list" onScroll={this.contentViewScrolledit}> <ul className="upload_select_box fl" id="search_not_teachers_list" onScroll={this.contentViewScrolledit}>
{Searchadmin.length === 0 ? <li style={{textAlign: 'center'}}> {Searchadmin.length === 0 ? <li style={{textAlign: 'center'}}>
<span>请试试搜索一下</span> <span>请试试搜索一下</span>
</li> : Searchadmin.map((item, key) => { </li> : Searchadmin.map((item, key) => {
return ( return (
<li key={key} style={{display: item.identify === "专业人士" ? "none" : "block"}}> <li key={key} style={{display: item.identify === "专业人士" ? "none" : "block"}}>
<Checkbox className="fl mr20" checked={item.checked} <Checkbox className="fl mr20" checked={item.checked}
onChange={(e) => this.selectChangenickname(e, key)} onChange={(e) => this.selectChangenickname(e, key)}
id={item.user_id}></Checkbox> id={item.user_id}></Checkbox>
<a className="task-hide color-grey3 fl span1 edu-txt-w80 edu-txt-left">{item.nickname}</a> <a className="task-hide color-grey3 fl span1 edu-txt-w80 edu-txt-left">{item.nickname}</a>
<span className="task-hide fl color-grey edu-txt-w80 span2">{item.identify}</span> <span className="task-hide fl color-grey edu-txt-w80 span2">{item.identify}</span>
<span <span
title={item.school_name} title={item.school_name}
style={{width: '150px'}} style={{width: '150px'}}
className="span3 color-grey fl edu-txt-w260 task-hide ml50 task-hide" >{item.school_name}</span> className="span3 color-grey fl edu-txt-w260 task-hide ml50 task-hide" >{item.school_name}</span>
</li> </li>
) )
}) })
} }
</ul> </ul>
</div> </div>
</Spin>
</div> </div>
<div className="mt10 clearfix"> <div className="mt10 clearfix">
<span className="fl mr15"> <span className="fl mr15">
<Checkbox className="fl" checked={allChangechecked} onChange={this.allChange}>全选</Checkbox> <Checkbox className="fl" checked={allChangechecked} onChange={this.allChange}>全选</Checkbox>
<div className="fl" style={{height: '27px'}}> <div className="fl" style={{height: '27px'}}>

@ -1,7 +1,5 @@
import React, {Component} from 'react'; import React, {Component} from 'react';
import {Button,notification} from 'antd';
import {Button} from 'antd';
import {broadcastChannelPostMessage} from 'educoder'; import {broadcastChannelPostMessage} from 'educoder';
import axios from 'axios'; import axios from 'axios';
import './common.css' import './common.css'
@ -26,12 +24,65 @@ class InterestpageComponent extends Component {
this.state = { this.state = {
gouxuans: "", gouxuans: "",
gouxuans2:0, gouxuans2:0,
gouxuans3:[{id:1,name:"前端开发",bool:false,url:qdkf},{id:2,name:"后端开发",bool:false,url:hdkf},{id:3,name:"移动开发",bool:false,url:ydkf},{id:4,name:"数据库",bool:false,url:sjk},{id:5,name:"云计算和大数据",bool:false,url:ysj},{id:6,name:"运维与测试",bool:false,url:yunwei},{id:7,name:"人工智能",bool:false,url:rgzn},{id:8,name:"其他",bool:false,url:qita}], gouxuans4:[],
namezh:this.props.namezh, namezh:this.props.namezh,
passmm:this.props.passmm, passmm:this.props.passmm,
homedatalist:undefined,
hometypepvisible: undefined,
} }
} }
openNotification = (messge) => {
// type 1 成功提示绿色 2提醒颜色黄色 3错误提示红色
notification.open({
message: "提示",
description: messge,
onClick: () => {
console.log('Notification Clicked!');
},
});
}
componentDidMount(){
let{gouxuans4} =this.state;
let url=`/repertoires.json`;
axios.get(url).then((response)=> {
if(response){
console.log("53");
console.log(response.data);
for(var i=0;i<response.data.repertoires.length;i++){
var qdkfys="";
if(response.data.repertoires[i].id===1){
qdkfys=qdkf;
}if(response.data.repertoires[i].id===2){
qdkfys=hdkf;
}if(response.data.repertoires[i].id===3){
qdkfys=ydkf;
}if(response.data.repertoires[i].id===4){
qdkfys=sjk;
}if(response.data.repertoires[i].id===5){
qdkfys=ysj;
}if(response.data.repertoires[i].id===6){
qdkfys=yunwei;
}if(response.data.repertoires[i].id===8){
qdkfys=qita;
}if(response.data.repertoires[i].id===9){
qdkfys=rgzn;
}
var datas={id:response.data.repertoires[i].id,name:response.data.repertoires[i].name,bool:false,url:qdkfys};
gouxuans4.push(datas);
this.setState({
gouxuans4:gouxuans4,
})
}
console.log("75");
console.log(gouxuans4);
}
}).catch((error)=>{
console.log(error)
});
}
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
// console.log("46"); // console.log("46");
// console.log(nextProps); // console.log(nextProps);
@ -85,21 +136,21 @@ class InterestpageComponent extends Component {
} }
Clickteacher2=(e)=>{ Clickteacher2=(e)=>{
console.log(e); console.log(e);
let {gouxuans3} =this.state; let {gouxuans4} =this.state;
for (var i=0;i<gouxuans3.length;i++){ for (var i=0;i<gouxuans4.length;i++){
if(gouxuans3[i].id === e){ if(gouxuans4[i].id === e){
console.log("51"); console.log("51");
console.log(e); console.log(e);
if(gouxuans3[i].bool === true){ if(gouxuans4[i].bool === true){
gouxuans3[i].bool=false; gouxuans4[i].bool=false;
}else{ }else{
gouxuans3[i].bool=true; gouxuans4[i].bool=true;
} }
} }
} }
console.log(gouxuans3); console.log(gouxuans4);
this.setState({ this.setState({
gouxuans3:gouxuans3, gouxuans4:gouxuans4,
}) })
} }
@ -107,15 +158,20 @@ class InterestpageComponent extends Component {
//兴趣页面点击 //兴趣页面点击
Interestcompletionpage(){ Interestcompletionpage(){
if(this.state.gouxuans.length === 0){ if(this.state.gouxuans.length === 0){
this.props.showNotification("请选择您的职业"); this.openNotification("请选择您的职业");
return return
} }
var ints=[]; var ints=[];
for (var i =0;i<this.state.gouxuans.length;i++) { for (var i =0;i<this.state.gouxuans4.length;i++) {
if(this.state.gouxuans[i].bool === true){ if(this.state.gouxuans4[i].bool === true){
ints.push(this.state.gouxuans[i].id); ints.push(this.state.gouxuans4[i].id);
} }
} }
if(ints.length<1){
this.openNotification("内容是最少得选一个");
return
}
var url = "/users/interest.json"; var url = "/users/interest.json";
axios.post(url, { axios.post(url, {
identity:this.state.gouxuans, identity:this.state.gouxuans,
@ -133,39 +189,39 @@ class InterestpageComponent extends Component {
}) })
} }
//跳转然后登入 // //跳转然后登入
Jumptotheinterestpage=()=>{ // Jumptotheinterestpage=()=>{
console.log(this.state.login); // console.log(this.state.login);
console.log(this.state.password); // console.log(this.state.password);
var url = "/accounts/login.json"; // var url = "/accounts/login.json";
axios.post(url, { // axios.post(url, {
login: this.props.login, // login: this.props.login,
password: this.props.password, // password: this.props.password,
}).then((response) => { // }).then((response) => {
if (response === undefined) { // if (response === undefined) {
return // return
} // }
if (response.status === 200) { // if (response.status === 200) {
// if (response.data.status === 402) { // // if (response.data.status === 402) {
// window.location.href = response.data.url; // // window.location.href = response.data.url;
// } else { // // } else {
// broadcastChannelPostMessage('refreshPage') // // broadcastChannelPostMessage('refreshPage')
// this.setState({ // // this.setState({
// isRender: false // // isRender: false
// }) // // })
window.location.href = "/" // window.location.href = "/"
// } // // }
} // }
//
//
}).catch((error) => { // }).catch((error) => {
console.log(error); // console.log(error);
}) // })
} // }
render() { render() {
const { const {
gouxuans, gouxuans,
gouxuans3 gouxuans4,
} = this.state } = this.state
// height: 346px; // height: 346px;
return ( return (
@ -193,7 +249,7 @@ class InterestpageComponent extends Component {
<div ><span className="yslspans3">基于你关注的内容推荐</span></div> <div ><span className="yslspans3">基于你关注的内容推荐</span></div>
<div className="ysldivhome2"> <div className="ysldivhome2">
{gouxuans3&&gouxuans3.map((item,key)=>{ {gouxuans4&&gouxuans4.map((item,key)=>{
return( return(
<div className={item.id<5?"ysldivhomediv1":"ysldivhomediv2"} onClick={()=>this.Clickteacher2(item.id)}> <div className={item.id<5?"ysldivhomediv1":"ysldivhomediv2"} onClick={()=>this.Clickteacher2(item.id)}>
{item.bool===true?<img src={gouxuan} className="yslgouxuanimg"/>:<div className="yslgouxuanimg2"></div>} {item.bool===true?<img src={gouxuan} className="yslgouxuanimg"/>:<div className="yslgouxuanimg2"></div>}

Loading…
Cancel
Save