commit
						6ec0c81643
					
				| @ -1,7 +1,7 @@ | ||||
| json.single_questions_count @single_questions_count | ||||
| json.multiple_questions_count @multiple_questions_count | ||||
| json.judgement_questions_count @judgement_questions_count | ||||
| json.completion_questions_count @completion_questions_count | ||||
| json.subjective_questions_count @subjective_questions_count | ||||
| json.practical_questions_count @practical_questions_count | ||||
| json.program_questions_count @program_questions_count | ||||
| json.single_questions_count @basket_count&.fetch("SINGLE", 0) | ||||
| json.multiple_questions_count @basket_count&.fetch("MULTIPLE", 0) | ||||
| json.judgement_questions_count @basket_count&.fetch("JUDGMENT", 0) | ||||
| json.completion_questions_count @basket_count&.fetch("COMPLETION", 0) | ||||
| json.subjective_questions_count @basket_count&.fetch("SUBJECTIVE", 0) | ||||
| json.practical_questions_count @basket_count&.fetch("PRACTICAL", 0) | ||||
| json.program_questions_count @basket_count&.fetch("PROGRAM", 0) | ||||
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												Binary file not shown.
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								| Before Width: | Height: | Size: 381 KiB After Width: | Height: | Size: 381 KiB | 
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								| After Width: | Height: | Size: 52 KiB | 
| @ -0,0 +1,360 @@ | ||||
| .wx-code-area{ | ||||
|   height: 100vh; | ||||
|   overflow: hidden; | ||||
|   .wx-code-flex{ | ||||
|     display: flex; | ||||
|     position: relative; | ||||
|     flex-direction: column; | ||||
|     height: 100%; | ||||
|   } | ||||
|   .wx-code-item{ | ||||
|     flex: 1; | ||||
|   } | ||||
|   .wx-code-test{ | ||||
|     display: flex; | ||||
|     justify-content: space-between; | ||||
|     align-items: center; | ||||
|     height: 120px; | ||||
|     background-color: #052645; | ||||
|     padding: 0 50px; | ||||
|   } | ||||
| 
 | ||||
|   .flex-btn{ | ||||
|     display: flex; | ||||
|     .icon-btn{ | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       color: #2EA4FF; | ||||
|       align-items: center; | ||||
|       .icon{ | ||||
|         // font-size: 24px !important; | ||||
|         // transform: scale(2.4); | ||||
|         // line-height: 2; | ||||
|         font-size: 32px !important; | ||||
|         transform: scale(2); | ||||
|         position: relative; | ||||
|         top: 10px; | ||||
|       } | ||||
|       // .icon-reset{ | ||||
|       //   transform: scale(2.4); | ||||
|       // } | ||||
|       // .icon:first-child{ | ||||
|       //   transform: scale((3)); | ||||
|       // } | ||||
| 
 | ||||
|       &:last-child{ | ||||
|         margin-left: 50px; | ||||
|       } | ||||
|       .icon-txt{ | ||||
|         font-size: 32px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|    | ||||
|   .wx-pt-btn{ | ||||
|     border: none; | ||||
|     outline: none; | ||||
|     border-radius: 9999px; | ||||
|     padding: 0 40px; | ||||
|     line-height: 72px; | ||||
|     font-size: 36px; | ||||
|     color: #fff; | ||||
|     background:#2EA4FF; | ||||
|   } | ||||
| 
 | ||||
|   .wx-code-test-case{ | ||||
|     position: fixed; | ||||
|     bottom: 0; | ||||
|     left: 0; | ||||
|     right: 0; | ||||
|     top: 0; | ||||
|     transform: translateY(100%); | ||||
|     transition: transform, opacity .3s; | ||||
|     opacity: 0; | ||||
|     // border-top-left-radius: 16px; | ||||
|     // border-top-right-radius: 16px; | ||||
|      | ||||
|     &::before{ | ||||
|       position: absolute; | ||||
|       width: 100%; | ||||
|       height: 100%; | ||||
|       content: ''; | ||||
|       background: rgba(0,0,0,.6); | ||||
|     } | ||||
|     .text-case-list{ | ||||
|       position: absolute; | ||||
|       width: 100%; | ||||
|       bottom: 0; | ||||
|       top: 150px; | ||||
|       background:rgba(1,14,31,1); | ||||
|       border-top-left-radius: 16px; | ||||
|       border-top-right-radius: 16px; | ||||
|       border:2px solid rgba(33,56,87,1); | ||||
|       color: #fff; | ||||
|     } | ||||
| 
 | ||||
|     .list-header{ | ||||
|       display: flex; | ||||
|       justify-content: space-between; | ||||
|       align-items: center; | ||||
|       height: 88px; | ||||
|       padding: 30px; | ||||
|       box-sizing: border-box; | ||||
|       border-bottom: 2px solid #213857; | ||||
|       .header-title{ | ||||
|         color:#637DA6; | ||||
|         // font-size: 24px;  | ||||
|         font-size: 36px; | ||||
|       } | ||||
|       .header-close{ | ||||
|         // font-size: 28px; | ||||
|         font-size: 36px; | ||||
|         color: #2EA4FF; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     .wxcode-test-result{ | ||||
|       display: flex; | ||||
|       height: 72px; | ||||
|       // background: gold; | ||||
|       align-items: center; | ||||
|       padding: 0 30px; | ||||
|       .success{ | ||||
|         color: rgba(68,209,95,1); | ||||
|       } | ||||
|       .fail{ | ||||
|         color: rgba(196, 79, 78, 1); | ||||
|       } | ||||
|       .icon{ | ||||
|         font-size: 36px !important; | ||||
|         position: relative; | ||||
|         top: -8px; | ||||
|         margin-right: 10px; | ||||
|       } | ||||
|       .result-txt{ | ||||
|         // font-size: 34px; | ||||
|         font-size: 36px; | ||||
|       } | ||||
|       .result-txt-desc{ | ||||
|         max-width: 500px; | ||||
|         overflow: hidden; | ||||
|         text-overflow:ellipsis; | ||||
|         white-space: nowrap; | ||||
|         margin: 20px; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     .case-list{ | ||||
|       position: absolute; | ||||
|       left: 0; | ||||
|       right: 0; | ||||
|       bottom: 0; | ||||
|       top: 0px; | ||||
|       overflow: auto; | ||||
|       margin-top: 88px; | ||||
|       padding: 0 30px 30px; | ||||
|       // margin: 88px 30px 0; | ||||
|       .case-item{ | ||||
|         position: relative; | ||||
|         margin-top: 30px; | ||||
|         border-radius: 8px; | ||||
|         background:rgba(23,39,64,1); | ||||
|         padding: 30px; | ||||
|       } | ||||
| 
 | ||||
|       &.hasResult{ | ||||
|         margin-top: 170px; | ||||
| 
 | ||||
|         .case-item:first-child{ | ||||
|           margin-top: 0; | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       .case-item-header{ | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         align-items: center; | ||||
|         .case_item_success, | ||||
|         .case_item_fail{ | ||||
|           font-size: 24px !important; | ||||
|           transform: scale(2); | ||||
|         } | ||||
|         .case_item_success{ | ||||
|           color: rgba(68,209,95,1); | ||||
|         } | ||||
|         .case_item_fail{ | ||||
|           color: rgba(196, 79, 78, 1); | ||||
|         } | ||||
|         .case-item-tips{ | ||||
|           color: #C67676; | ||||
|           font-size: 22px; | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       .item-header-desc{ | ||||
|         font-size: 36px; | ||||
|         color: #405D8C; | ||||
|         line-height: 1.5; | ||||
|         // background: gold; | ||||
|         .icon{ | ||||
|           position: relative; | ||||
|           top: -4px; | ||||
|           font-size: 36px !important; | ||||
|           margin-right: 10px; | ||||
|         } | ||||
|         &.active{ | ||||
|           color: #fff; | ||||
|         } | ||||
|       } | ||||
|        | ||||
|       .case-item-tips{ | ||||
|         font-size: 28px; | ||||
|       } | ||||
|       .case-item-desc{ | ||||
|         display: none; | ||||
|         flex-direction: column; | ||||
|         font-size: 28px; | ||||
|         line-height: 1.5; | ||||
| 
 | ||||
|         &.active{ | ||||
|           display: flex; | ||||
|         } | ||||
|       } | ||||
|       .desc-title{ | ||||
|         color: #637DA6; | ||||
|         line-height: 2; | ||||
|       } | ||||
|       .text-area-style{ | ||||
|         background:#010E1F !important; | ||||
|         color: #fff; | ||||
|         font-size: 28px; | ||||
|         line-height: 1.5; | ||||
|         border: none; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     &.active{ | ||||
|       transform: translateY(0); | ||||
|       opacity: 1; | ||||
|       // .item-header-desc{ | ||||
|       //   color: #fff; | ||||
|       // } | ||||
|     } | ||||
|   } | ||||
|   .code-evaluate-loading, | ||||
|   .pass-dialog{ | ||||
|     display: none; | ||||
|     position: fixed; | ||||
|     left: 0; | ||||
|     right: 0; | ||||
|     bottom: 0; | ||||
|     top: 0; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     &::before{ | ||||
|       position: absolute; | ||||
|       width: 100%; | ||||
|       height: 100%; | ||||
|       content: ''; | ||||
|       background: rgba(0,0,0,.5); | ||||
|     } | ||||
|     &.active{ | ||||
|       display: flex; | ||||
|     } | ||||
|   } | ||||
|   .code-evaluate-loading{ | ||||
|     // display: none; | ||||
|     .loading-flex{ | ||||
|       display: flex; | ||||
|       position: absolute; | ||||
|       flex-direction: column; | ||||
|       justify-content: center; | ||||
|       width: 100%; | ||||
|       height: 100%; | ||||
|       text-align: center; | ||||
|       color: #fff; | ||||
|       .loading-icon{ | ||||
|         font-size: 100px !important; | ||||
|       } | ||||
|       .loading-txt{ | ||||
|         font-size: 36px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .pass-dialog{ | ||||
|     flex-direction: column; | ||||
|     .pass-box{ | ||||
|       position: relative; | ||||
|       z-index: 10; | ||||
|       background: #fff; | ||||
|       border-radius: 15px; | ||||
|       width: 490px; | ||||
|       height: 490px; | ||||
|       overflow: hidden; | ||||
|     } | ||||
|     .pass-img{ | ||||
|       height: 200px; | ||||
|       background: url(../../images/wx-head.png) center center no-repeat; | ||||
|       // background: url(../../../public/images/wx-head.png) center center no-repeat; | ||||
|     } | ||||
|     .pass-ctx{ | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       // justify-content: center; | ||||
|       justify-content: space-between; | ||||
|       align-items: center; | ||||
|       height: 290px; | ||||
|       padding: 40px 0; | ||||
|       .pass-title, | ||||
|       .pass-value, | ||||
|       .pass-btn .btn, | ||||
|       .pass-btn-all .btn{ | ||||
|         font-size: 36px; | ||||
|         line-height: 1.5; | ||||
|       } | ||||
|       .pass-value{ | ||||
|         color: #888888; | ||||
|         .value_color{ | ||||
|           color: rgb(234, 185, 35); | ||||
|         } | ||||
|       }  | ||||
|       .pass-btn, | ||||
|       .pass-btn-all{ | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         // background: gold; | ||||
|         padding: 0 40px; | ||||
|         width: 100%; | ||||
|         margin-top: 10px; | ||||
|       } | ||||
|       .pass-btn-all{ | ||||
|         justify-content: center; | ||||
|       } | ||||
|       .btn{ | ||||
|         outline: none; | ||||
|         border-radius: 999px; | ||||
|         padding: 0 30px; | ||||
|         height: 70px; | ||||
|         &.btn-first{ | ||||
|           border: 1px solid #2EA4FF; | ||||
|           color: #2EA4FF; | ||||
|         } | ||||
|         &.btn-second{ | ||||
|           background-color: #2EA4FF; | ||||
|           color: #fff; | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       .pass-title{ | ||||
|         color: #2EA4FF; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .icon_close{ | ||||
|     display: block; | ||||
|     position: relative; | ||||
|     z-index: 10; | ||||
|     color: #555; | ||||
|     font-size: 100px!important; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,84 @@ | ||||
| /* | ||||
|  * @Description:  | ||||
|  * @Author: tangjiang | ||||
|  * @Github:  | ||||
|  * @Date: 2020-01-15 15:37:44 | ||||
|  * @LastEditors  : tangjiang | ||||
|  * @LastEditTime : 2020-01-17 19:50:00 | ||||
|  */ | ||||
| import types from "../actions/actionTypes"; | ||||
| const initialState = { | ||||
|   wxCode: '', | ||||
|   userCode: '', | ||||
|   testCase: [], | ||||
|   game_id: '', | ||||
|   myIdentifier: '', | ||||
|   exec_time: 0, | ||||
|   last_compile_output: '', | ||||
|   test_sets_count: 0, | ||||
|   sets_error_count: 0, | ||||
|   path: '', | ||||
|   isShow: false, | ||||
|   showLoading: false, | ||||
|   showDialog: false, | ||||
|   gold: 0, | ||||
|   experience: 0, | ||||
|   next_game: '' | ||||
| }; | ||||
| 
 | ||||
| const wxcodeReducer = (state = initialState, action) => { | ||||
|   const { payload, type } = action; | ||||
|   switch (type) { | ||||
|     case types.GET_WXCODE_BY_IDENTIFIER: | ||||
|       return { | ||||
|         ...state, | ||||
|         wxCode: payload, | ||||
|         userCode: payload | ||||
|       } | ||||
|     case types.GET_WXCODE_TEST_CASE: | ||||
|       return { | ||||
|         ...state, | ||||
|         testCase: payload.test_sets, | ||||
|         game_id: payload.game_id, | ||||
|         myIdentifier: payload.myIdentifier, | ||||
|         exec_time: payload.exec_time, | ||||
|         path: payload.path, | ||||
|         last_compile_output: payload.last_compile_output, | ||||
|         test_sets_count: payload.test_sets_count, | ||||
|         sets_error_count: payload.sets_error_count | ||||
|       } | ||||
|     case types.UPDATE_WXCODE_FOR_EDITOR: | ||||
|       return { | ||||
|         ...state, | ||||
|         userCode: payload | ||||
|       } | ||||
|     case types.IS_SHOW_WXCODE_TEST_CASES: | ||||
|       return { | ||||
|         ...state, | ||||
|         isShow: payload | ||||
|       } | ||||
|     case types.SHOW_WX_CODE_LOADING: | ||||
|       return { | ||||
|         ...state, | ||||
|         showLoading: payload | ||||
|       } | ||||
|     case types.SHOW_WX_CODE_DIALOG: | ||||
|       return { | ||||
|         ...state, | ||||
|         showDialog: payload | ||||
|       } | ||||
|     case types.SET_GOLD_AND_EXPERIENCE: | ||||
|       return { | ||||
|         ...state, | ||||
|         gold: payload.gold, | ||||
|         experience: payload.experience, | ||||
|         next_game: payload.next_game | ||||
|       } | ||||
|     default: | ||||
|       return { | ||||
|         ...state | ||||
|       } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default wxcodeReducer; | ||||
| @ -0,0 +1,74 @@ | ||||
| /* | ||||
|  * @Description: | ||||
|  * @Author: tangjiang | ||||
|  * @Github: | ||||
|  * @Date: 2020-01-15 15:44:36 | ||||
|  * @LastEditors  : tangjiang | ||||
|  * @LastEditTime : 2020-01-17 20:39:13 | ||||
|  */ | ||||
| import axios from 'axios'; | ||||
| import cookie from 'react-cookies' | ||||
| // axios.defaults.withCredentials = true;
 | ||||
| 
 | ||||
| const setCookier = () => { | ||||
|   // const _params = window.location.search;
 | ||||
|   // if (_params) {
 | ||||
|   //   let _search = _params.split('?')[1];
 | ||||
|   //   _search.split('&').forEach(item => {
 | ||||
|   //     // console.log(item);
 | ||||
|   //     const _arr = item.split('=');
 | ||||
|   //     cookie.remove(_arr[0], {
 | ||||
|   //       path: '/',
 | ||||
|   //       domain: '.educoder.net'
 | ||||
|   //     });
 | ||||
|   //     cookie.save(_arr[0], _arr[1], { domain: '.educoder.net', path: '/'});
 | ||||
|   //   });
 | ||||
|   // }
 | ||||
| } | ||||
| 
 | ||||
| // 获取代码块
 | ||||
| export async function fetchWxCode (identifier, params) { | ||||
|    setCookier(); | ||||
|   const url = `/tasks/${identifier}/rep_content.json`; | ||||
|   params = Object.assign({}, params, {withCredentials: true}); | ||||
|   return axios.get(url, {params}); | ||||
| } | ||||
| 
 | ||||
| // 获取测试值
 | ||||
| export async function fetchWxCodeTextCase (identifier) { | ||||
|   setCookier(); | ||||
|   const url = `/tasks/${identifier}.json`; | ||||
|   const params = Object.assign({}, {withCredentials: true}); | ||||
|   return axios.get(url, {params}); | ||||
| } | ||||
| 
 | ||||
| // 更新代码块内容
 | ||||
| export async function fetchUpdateWxCode (identifier, params) { | ||||
|   setCookier(); | ||||
|   // /myshixuns/8etu3pilsa/update_file.json
 | ||||
|   const url = `/myshixuns/${identifier}/update_file.json`; | ||||
|   params = Object.assign({}, params, {withCredentials: true}); | ||||
|   return axios.post(url, params); | ||||
| } | ||||
| 
 | ||||
| // 恢复初始化
 | ||||
| export async function fetchRestoreWxCode (identifier, params) { | ||||
|   setCookier(); | ||||
|   const url = `/tasks/${identifier}/reset_original_code.json`; | ||||
|   params = Object.assign({}, params, {withCredentials: true}); | ||||
|   return axios.get(url, {params}); | ||||
| } | ||||
| // 评测
 | ||||
| export async function fetchWxCodeGameBuild (identifier, params) { | ||||
|   setCookier(); | ||||
|   const url = `/tasks/${identifier}/game_build.json`; | ||||
|   params = Object.assign({}, params, {withCredentials: true}); | ||||
|   return axios.get(url, {params}); | ||||
| } | ||||
| 
 | ||||
| export async function fetchWxCodeGameStatus (identifier, params) { | ||||
|   setCookier(); | ||||
|   const url = `/tasks/${identifier}/game_status.json`; | ||||
|   params = Object.assign({}, params, {withCredentials: true}); | ||||
|   return axios.get(url, {params}); | ||||
| } | ||||
											
												Binary file not shown.
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												Binary file not shown.
											
										
									
								
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								| Before Width: | Height: | Size: 381 KiB After Width: | Height: | Size: 381 KiB | 
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								
					Loading…
					
					
				
		Reference in new issue