diff --git a/frontend/public/index.html b/frontend/public/index.html index fd87ff4..0a9f41a 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -6,13 +6,91 @@ 在线考试系统 - + + + +
+
diff --git a/frontend/public/loading/loading.css b/frontend/public/loading/loading.css index a899eac..e06ac36 100644 --- a/frontend/public/loading/loading.css +++ b/frontend/public/loading/loading.css @@ -1 +1,52 @@ -#preloadingAnimation{position:fixed;left:0;top:0;height:100%;width:100%;background:#ffffff;user-select:none;z-index: 9999;overflow: hidden}.lds-roller{display:inline-block;position:relative;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;}.lds-roller div{animation:lds-roller 1.2s cubic-bezier(0.5,0,0.5,1) infinite;transform-origin:32px 32px;}.lds-roller div:after{content:" ";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#13c2c2;margin:-3px 0 0 -3px;}.lds-roller div:nth-child(1){animation-delay:-0.036s;}.lds-roller div:nth-child(1):after{top:50px;left:50px;}.lds-roller div:nth-child(2){animation-delay:-0.072s;}.lds-roller div:nth-child(2):after{top:54px;left:45px;}.lds-roller div:nth-child(3){animation-delay:-0.108s;}.lds-roller div:nth-child(3):after{top:57px;left:39px;}.lds-roller div:nth-child(4){animation-delay:-0.144s;}.lds-roller div:nth-child(4):after{top:58px;left:32px;}.lds-roller div:nth-child(5){animation-delay:-0.18s;}.lds-roller div:nth-child(5):after{top:57px;left:25px;}.lds-roller div:nth-child(6){animation-delay:-0.216s;}.lds-roller div:nth-child(6):after{top:54px;left:19px;}.lds-roller div:nth-child(7){animation-delay:-0.252s;}.lds-roller div:nth-child(7):after{top:50px;left:14px;}.lds-roller div:nth-child(8){animation-delay:-0.288s;}.lds-roller div:nth-child(8):after{top:45px;left:10px;}#preloadingAnimation .load-tips{color: #13c2c2;font-size:2rem;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:80px;text-align:center;width:400px;height:64px;} @keyframes lds-roller{0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);}} \ No newline at end of file +#preloadingAnimation{ + position:fixed;left:0;top:0;height:100%;width:100%;background:#ffffff;user-select:none; + z-index: 9999;overflow: hidden} +.lds-roller{ + display:inline-block; + position:relative; + left:50%; + top:50%; + transform:translate(-50%,-50%); + width:64px; + height:64px; +} +.lds-roller div{ + animation:lds-roller 1.2s cubic-bezier(0.5,0,0.5,1) infinite; + transform-origin:32px 32px; +} +.lds-roller div:after{ + content:" "; + display:block; + position:absolute; + width:6px; + height:6px; + border-radius:50%; + background:#13c2c2; + margin:-3px 0 0 -3px; +} +.lds-roller div:nth-child(1){animation-delay:-0.036s;} +.lds-roller div:nth-child(1):after{top:50px;left:50px;} +.lds-roller div:nth-child(2){animation-delay:-0.072s;} +.lds-roller div:nth-child(2):after{top:54px;left:45px;} +.lds-roller div:nth-child(3){animation-delay:-0.108s;} +.lds-roller div:nth-child(3):after{top:57px;left:39px;} +.lds-roller div:nth-child(4){animation-delay:-0.144s;} +.lds-roller div:nth-child(4):after{top:58px;left:32px;} +.lds-roller div:nth-child(5){animation-delay:-0.18s;} +.lds-roller div:nth-child(5):after{top:57px;left:25px;} +.lds-roller div:nth-child(6){animation-delay:-0.216s;} +.lds-roller div:nth-child(6):after{top:54px;left:19px;} +.lds-roller div:nth-child(7){animation-delay:-0.252s;} +.lds-roller div:nth-child(7):after{top:50px;left:14px;} +.lds-roller div:nth-child(8){animation-delay:-0.288s;} +.lds-roller div:nth-child(8):after{top:45px;left:10px;} +#preloadingAnimation .load-tips{ + color: #13c2c2; + font-size:2rem; + position:absolute; + left:50%; + top:50%; + transform:translate(-50%,-50%);margin-top:80px; + text-align:center;width:400px;height:64px;} +@keyframes lds-roller{0%{transform:rotate(0deg);} + 100%{transform:rotate(360deg);}} \ No newline at end of file diff --git a/frontend/public/loading/loading.html b/frontend/public/loading/loading.html index 9b93196..1d51177 100644 --- a/frontend/public/loading/loading.html +++ b/frontend/public/loading/loading.html @@ -1 +1,27 @@ -
Loading
\ No newline at end of file +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
Loading
+
\ No newline at end of file diff --git a/frontend/public/loading/option2/html_code_segment.html b/frontend/public/loading/option2/html_code_segment.html index df81b26..fc874e3 100644 --- a/frontend/public/loading/option2/html_code_segment.html +++ b/frontend/public/loading/option2/html_code_segment.html @@ -1,5 +1,31 @@ +/** + * 预加载动画 + */
+
- + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/frontend/public/loading/option2/loading.css b/frontend/public/loading/option2/loading.css index c35cd73..4486a8a 100644 --- a/frontend/public/loading/option2/loading.css +++ b/frontend/public/loading/option2/loading.css @@ -1 +1,20 @@ -.preloading-animate{background:#ffffff;width:100%;height:100%;position:fixed;left:0;top:0;z-index:299;}.preloading-animate .preloading-wrapper{position:absolute;width:5rem;height:5rem;left:50%;top:50%;transform:translate(-50%,-50%);}.preloading-animate .preloading-wrapper .preloading-balls{font-size:5rem;} \ No newline at end of file +.preloading-animate{ + background:#ffffff; + width:100%; + height:100%; + position:fixed; + left:0; + top:0; + z-index:299; +} +.preloading-animate .preloading-wrapper{ + position:absolute; + width:5rem; + height:5rem; + left:50%; + top:50%; + transform:translate(-50%,-50%); +} +.preloading-animate .preloading-wrapper .preloading-balls{ + font-size:5rem; +} \ No newline at end of file diff --git a/frontend/src/api/exam.js b/frontend/src/api/exam.js index c6d98b5..d954c27 100644 --- a/frontend/src/api/exam.js +++ b/frontend/src/api/exam.js @@ -3,6 +3,11 @@ import api from './index' import { axios } from '../utils/request' +/** + * 获取问题列表 + * @param parameter + * @returns {AxiosPromise} + */ export function getQuestionList (parameter) { return axios({ url: api.ExamQuestionList, @@ -11,6 +16,10 @@ export function getQuestionList (parameter) { }) } +/** + * 获取所有问题 + * @returns {AxiosPromise} + */ export function getQuestionAll () { return axios({ url: api.ExamQuestionAll, @@ -18,6 +27,11 @@ export function getQuestionAll () { }) } +/** + * 更新问题 + * @param parameter + * @returns {AxiosPromise} + */ export function questionUpdate (parameter) { console.log(parameter) return axios({ @@ -27,6 +41,10 @@ export function questionUpdate (parameter) { }) } +/** + * 获取问题选项 + * @returns {AxiosPromise} + */ export function getQuestionSelection () { return axios({ url: api.ExamQuestionSelection, @@ -37,6 +55,11 @@ export function getQuestionSelection () { }) } +/** + * 创建问题 + * @param parameter + * @returns {AxiosPromise} + */ export function questionCreate (parameter) { console.log(parameter) return axios({ @@ -46,6 +69,11 @@ export function questionCreate (parameter) { }) } +/** + * 获取考试列表 + * @param parameter + * @returns {AxiosPromise} + */ export function getExamList (parameter) { return axios({ url: api.ExamList, @@ -54,6 +82,10 @@ export function getExamList (parameter) { }) } +/** + * 获取所有考试 + * @returns {AxiosPromise} + */ export function getExamAll () { return axios({ url: api.ExamAll, @@ -72,6 +104,11 @@ export function getExamQuestionTypeList () { }) } +/** + * 获取考试卡片列表 + * @returns {AxiosPromise} + */ + export function getExamCardList () { return axios({ url: api.ExamCardList, @@ -82,6 +119,11 @@ export function getExamCardList () { }) } +/** + * 创建考试 + * @param parameter + * @returns {AxiosPromise} + */ export function examCreate (parameter) { console.log(parameter) return axios({ @@ -100,6 +142,11 @@ export function examUpdate (parameter) { }) } +/** + * 获取考试详情 + * @param examId + * @returns {AxiosPromise} + */ export function getExamDetail (examId) { return axios({ url: api.ExamDetail + examId, @@ -110,6 +157,11 @@ export function getExamDetail (examId) { }) } +/** + * 获取考试记录详情 + * @param recordId + * @returns {AxiosPromise} + */ export function getExamRecordDetail (recordId) { return axios({ url: api.recordDetail + recordId, @@ -120,6 +172,11 @@ export function getExamRecordDetail (recordId) { }) } +/** + * 获取考试问题详情 + * @param questionId + * @returns {AxiosPromise} + */ export function getQuestionDetail (questionId) { return axios({ url: api.QuestionDetail + questionId, @@ -130,6 +187,13 @@ export function getQuestionDetail (questionId) { }) } +/** + * 完成考试 + * @param examId + * @param answersMap + * @returns {AxiosPromise} + */ + export function finishExam (examId, answersMap) { console.log(answersMap) return axios({ @@ -142,6 +206,10 @@ export function finishExam (examId, answersMap) { }) } +/** + * 获取考试记录列表 + * @returns {AxiosPromise} + */ export function getExamRecordList () { return axios({ url: api.ExamRecordList, diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index 05423bf..32bdb54 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -1,3 +1,7 @@ +/** + * api接口列表 + * @type {{ExamQuestionList: string, SendSmsErr: string, ExamCardList: string, UserInfo: string, UserRegister: string, ExamRecordList: string, ExamQuestionCreate: string, Logout: string, ExamCreate: string, ExamQuestionAll: string, FinishExam: string, UserLogin: string, ForgePassword: string, ExamQuestionTypeList: string, SendSms: string, Login: string, twoStepCode: string, QuestionDetail: string, recordDetail: string, Register: string, ExamUpdate: string, ExamDetail: string, ExamQuestionSelection: string, ExamList: string, ExamQuestionUpdate: string, ExamAll: string}} + */ const api = { Login: '/auth/login', Logout: '/auth/logout', diff --git a/frontend/src/api/login.js b/frontend/src/api/login.js index 9f71d6b..62f15df 100644 --- a/frontend/src/api/login.js +++ b/frontend/src/api/login.js @@ -21,6 +21,11 @@ export function login (parameter) { }) } +/** + *获取短信验证码 + * @param parameter + * @returns {AxiosPromise} + */ export function getSmsCaptcha (parameter) { return axios({ url: api.SendSms, @@ -29,6 +34,10 @@ export function getSmsCaptcha (parameter) { }) } +/** + * 获取用户信息 + * @returns {AxiosPromise} + */ export function getInfo () { return axios({ url: api.UserInfo, @@ -39,6 +48,10 @@ export function getInfo () { }) } +/** + * 用户登出 + * @returns {AxiosPromise} + */ export function logout () { return axios({ url: api.Logout, @@ -50,7 +63,7 @@ export function logout () { } /** - * get user 2step code open? + * 获取用户两步验证设置状态 * @param parameter {*} */ export function get2step (parameter) { diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 71e361b..efc8428 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -2,7 +2,7 @@ import api from './index' import { axios } from '../utils/request' - +// 用户登录 export function login (parameter) { return axios({ url: api.UserLogin, @@ -10,7 +10,7 @@ export function login (parameter) { data: parameter }) } - +// 用户注册 export function register (parameter) { return axios({ url: api.UserRegister, diff --git a/frontend/src/components/Exception/ExceptionPage.vue b/frontend/src/components/Exception/ExceptionPage.vue index 132e346..7e9d584 100644 --- a/frontend/src/components/Exception/ExceptionPage.vue +++ b/frontend/src/components/Exception/ExceptionPage.vue @@ -1,24 +1,33 @@ - -