/* * @Description: 学员学习 * @Author: tangjiang * @Github: * @Date: 2019-11-23 10:53:19 * @LastEditors : tangjiang * @LastEditTime : 2020-02-10 18:24:01 */ import './index.scss'; import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; import SplitPane from 'react-split-pane'; import LeftPane from './leftpane'; import RightPane from './rightpane'; // import { Link } from 'react-router-dom'; // import { getImageUrl } from 'educoder' // import RightPane from '../newOrEditTask/rightpane'; import { Icon } from 'antd'; import UserInfo from '../components/userInfo'; import actions from '../../../redux/actions'; import { fromStore, CNotificationHOC} from 'educoder'; import { withRouter } from 'react-router'; function StudentStudy (props) { const [hasUpdate, setHasUpdate] = useState(true); const { hack, userInfo, // hack_identifier, // user_program_identifier, restoreInitialCode, changeUserCodeTab, changeShowOrHideControl, searchParams, saveSearchParams } = props; const { match: { params }, getUserProgramDetail, saveUserProgramIdentifier } = props; let { id, tab } = params; useEffect(() => { // 保存当前的id saveUserProgramIdentifier(id); // startProgramQuestion(id); getUserProgramDetail(id); const $searchs = window.location.search && window.location.search.substring(1); if ($searchs) { const $params = $searchs.split('&') || []; let obj = Object.create(null); $params.forEach(item => { const keys = item.split('='); obj[keys[0]] = keys[1]; }); saveSearchParams({searchParams: $searchs, curPage: obj['pages']}); } if (tab) { changeUserCodeTab(tab); } }, []); useEffect(() => { const { hack = {} } = props; if (hack.modify_code && hasUpdate) { // 代码更改,提示是否需要更新代码 setHasUpdate(false); handleUpdateNotice(); } }, [props, hasUpdate, setHasUpdate]); const handleUpdateNotice = () => { console.log(props); props.confirm({ title: '提示', content: (

代码文件有更新啦
还未提交的代码,请自行保存

), onOk () { restoreInitialCode(id, '更新成功'); } }) // Modal.confirm({ // title: '提示', // content: ( //

// 代码文件有更新啦
// 还未提交的代码,请自行保存 //

// ), // okText: '立即更新', // cancelText: '稍后再说', // onOk () { // restoreInitialCode(id, '更新成功'); // } // }); } // const _hack_id = hack_identifier || fromStore('hack_identifier'); // 处理编辑 const handleClickEditor = (identifier) => { if (!identifier) return; changeShowOrHideControl(false); props.saveEditorCodeForDetail(''); props.clearOjForUserReducer(); props.history.push(`/problems/${identifier}/edit?{searchParams}`); } // 处理退出 const handleClickQuit = () => { // 退出时,清空内容 props.clearOjForUserReducer(); // 将控制台关闭 changeShowOrHideControl(false); props.saveEditorCodeForDetail(''); // props.history.push('/problems'); props.history.push(`/question?${searchParams}`); } return (
{/*
用户头像 {(mygetHelmetapi &&mygetHelmetapi.name) || ''}
*/}
{hack.name}
{/* to={`/problems/${_hack_id}/edit`} */} handleClickEditor(hack.identifier)} className={`quit-btn`} > 编辑 {/* to="/problems" */} 退出 {/* */}
) } const mapStateToProps = (state) => { const { userInfo } = state.userReducer; const { hack_identifier, user_program_identifier, hack } = state.ojForUserReducer; const { searchParams } = state.ojFormReducer; return { hack, userInfo, user_program_identifier, hack_identifier, searchParams }; }; const mapDispatchToProps = (dispatch) => ({ // 调用开启编辑 // startProgramQuestion: (id) => dispatch(actions.startProgramQuestion(id)) // 调用编程题详情 getUserProgramDetail: (id) => dispatch(actions.getUserProgramDetail(id)), saveUserProgramIdentifier: (id) => dispatch(actions.saveUserProgramIdentifier(id)), saveEditorCodeForDetail: (code) => dispatch(actions.saveEditorCodeForDetail(code)), // 恢复初始代码 restoreInitialCode: (identifier, msg) => dispatch(actions.restoreInitialCode(identifier, msg)), changeShowOrHideControl: (flag) => dispatch(actions.changeShowOrHideControl(flag)), clearOjForUserReducer: () => dispatch(actions.clearOjForUserReducer()), changeUserCodeTab: (tab) => dispatch(actions.changeUserCodeTab(tab)), saveSearchParams: (params) => dispatch(actions.saveSearchParams(params)) }); export default withRouter(connect( mapStateToProps, mapDispatchToProps )(CNotificationHOC()(StudentStudy)));