@zykjcommon/questions 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/.browserslistrc +3 -0
  2. package/.env +7 -0
  3. package/.env.buildTest +9 -0
  4. package/.env.development +9 -0
  5. package/.env.production +13 -0
  6. package/.env.test +12 -0
  7. package/@types/global.d.ts +33 -0
  8. package/@types/shims-vue.d.ts +6 -0
  9. package/@types/shims-vuex.d.ts +15 -0
  10. package/auto-imports.d.ts +6 -0
  11. package/babel.config.js +5 -0
  12. package/components.d.ts +23 -0
  13. package/design/App.vue +60 -0
  14. package/design/main.js +23 -0
  15. package/design/views/dialog/contentDialog.vue +18 -0
  16. package/design/views/dialog/contentDialog2.vue +18 -0
  17. package/design/views/dialog/contentDialog3.vue +19 -0
  18. package/design/views/exam/analysis.vue +208 -0
  19. package/design/views/exam/exam.vue +355 -0
  20. package/design/views/home/illustrate.vue +45 -0
  21. package/design/views/home/login.vue +43 -0
  22. package/design/vueMapper.js +8 -0
  23. package/design/vueMapperTree.js +2 -0
  24. package/dist/demo.html +1 -0
  25. package/dist/zykjcommon-questions.common.js +12817 -0
  26. package/dist/zykjcommon-questions.css +1 -0
  27. package/dist/zykjcommon-questions.umd.js +12836 -0
  28. package/dist/zykjcommon-questions.umd.min.js +18 -0
  29. package/index.js +10 -0
  30. package/package.json +61 -0
  31. package/public/favicon.ico +0 -0
  32. package/public/index.html +19 -0
  33. package/public/static/js/jquery.html2json.js +169 -0
  34. package/public/static/js/jquery.json2html.js +137 -0
  35. package/public/static/js/jquery.min.js +2 -0
  36. package/public/static/js/json2html.js +447 -0
  37. package/readme +8 -0
  38. package/src/App.vue +37 -0
  39. package/src/assets/img/afei.jpg +0 -0
  40. package/src/assets/img/audio-ico.gif +0 -0
  41. package/src/assets/img/audio-ico.png +0 -0
  42. package/src/assets/img/bc-type-bg.png +0 -0
  43. package/src/assets/img/big-close.png +0 -0
  44. package/src/assets/img/big-next.png +0 -0
  45. package/src/assets/img/big-pre.png +0 -0
  46. package/src/assets/img/book-bg.png +0 -0
  47. package/src/assets/img/checkbox-cur.png +0 -0
  48. package/src/assets/img/checkbox.png +0 -0
  49. package/src/assets/img/cpp-bg.png +0 -0
  50. package/src/assets/img/deer-logo.png +0 -0
  51. package/src/assets/img/header-bg-2.png +0 -0
  52. package/src/assets/img/header-bg.png +0 -0
  53. package/src/assets/img/illustrate-bg.png +0 -0
  54. package/src/assets/img/loading.gif +0 -0
  55. package/src/assets/img/login-bg.png +0 -0
  56. package/src/assets/img/login-box-bg.png +0 -0
  57. package/src/assets/img/login-box-logo.png +0 -0
  58. package/src/assets/img/logo.png +0 -0
  59. package/src/assets/img/logoByText.png +0 -0
  60. package/src/assets/img/py-bg.png +0 -0
  61. package/src/assets/img/pygame-bg.png +0 -0
  62. package/src/assets/img/radio-cur.png +0 -0
  63. package/src/assets/img/radio.png +0 -0
  64. package/src/assets/img/return-top-hover.png +0 -0
  65. package/src/assets/img/return-top.png +0 -0
  66. package/src/assets/img/sb3-bg.png +0 -0
  67. package/src/assets/img/star-ico.png +0 -0
  68. package/src/assets/img/tab-mark.png +0 -0
  69. package/src/assets/img/video-play-btn.png +0 -0
  70. package/src/assets/js/arms.js +16 -0
  71. package/src/assets/js/bus.js +14 -0
  72. package/src/assets/js/fun.js +883 -0
  73. package/src/assets/js/helper.js +575 -0
  74. package/src/assets/js/http.js +219 -0
  75. package/src/assets/js/md5.js +260 -0
  76. package/src/assets/js/rem.js +33 -0
  77. package/src/assets/js/validation.js +216 -0
  78. package/src/assets/js/zykjcommon-questions.umd.min.js +18 -0
  79. package/src/assets/logo.png +0 -0
  80. package/src/assets/scss/dialog/dialog.scss +144 -0
  81. package/src/assets/scss/exam/exam.scss +256 -0
  82. package/src/assets/scss/home/home.scss +222 -0
  83. package/src/assets/scss/index.scss +80 -0
  84. package/src/assets/scss/questions/index.scss +345 -0
  85. package/src/common/const.ts +15 -0
  86. package/src/components/common/ContentDialog.vue +172 -0
  87. package/src/components/common/IframeComponent.vue +101 -0
  88. package/src/components/common/Loading.vue +45 -0
  89. package/src/components/common/MediaLooker.vue +171 -0
  90. package/src/components/common/TextAreaEditor.vue +121 -0
  91. package/src/components/exam/QuestionCard.vue +494 -0
  92. package/src/components/exam/QuestionHeader.vue +87 -0
  93. package/src/components/exam/TimeCounter.vue +107 -0
  94. package/src/components/questions/QuestionReader.js +20 -0
  95. package/src/components/questions/Question_SingleChoice.vue +208 -0
  96. package/src/components/questions/buildEntry.js +12 -0
  97. package/src/components/questions/developmentEntry.js +11 -0
  98. package/src/components/questions/mixin.js +64 -0
  99. package/src/main.ts +176 -0
  100. package/src/router/exam.ts +50 -0
  101. package/src/router/index.ts +33 -0
  102. package/src/store/exam.ts +199 -0
  103. package/src/store/index.ts +22 -0
  104. package/src/types/common/index.ts +4 -0
  105. package/src/types/exam/exam.ts +10 -0
  106. package/src/views/exam/Analysis.vue +516 -0
  107. package/src/views/exam/Default.vue +28 -0
  108. package/src/views/exam/Exam.vue +594 -0
  109. package/src/views/exam/ReviewPaper.vue +178 -0
  110. package/src/views/exam/ReviewQuestion.vue +167 -0
  111. package/tasks/vueMapper.js +37 -0
  112. package/tasks/vueMapperTree.js +42 -0
  113. package/tsconfig.json +46 -0
  114. package/tslint.json +19 -0
  115. package/vue.config.js +107 -0
@@ -0,0 +1,199 @@
1
+ let api = {
2
+ getCodeFreeCreationGoToUrl: '/exam/list',
3
+ getExamPaper: '/recruit-exam-online/get-exam-paper',
4
+ getExamReview: '/exam/get-exam-review',
5
+ saveAnswers: '/recruit-exam-online/save-answers',
6
+ submitExam: '/recruit-exam-online/submit-exam',
7
+ editorUrl: '/open/editor-url',
8
+ getQuestionInfo:'/open/question-info',
9
+ resetExam:'/recruit-exam-online/reset-exam',
10
+ ongoingExam:'/recruit-exam-online/ongoing-exam'
11
+ }
12
+ import {postWeb,getWeb} from "@src/assets/js/http.js";
13
+ import {actionFnObj} from "@src/types/common/index.ts";
14
+ /**
15
+ * user模块
16
+ */
17
+ interface ExamState {
18
+ hasExamOver:boolean,
19
+ hasNotExam:boolean,
20
+ examInfoLoaded:boolean,
21
+ examInfo:any,
22
+ pythonCodeWebPath:string,
23
+ scratchCodeWebPath:string,
24
+ cplusCodeWebPath:string,
25
+ hasError:boolean,
26
+ userId:string
27
+ }
28
+
29
+ const state: ExamState = {
30
+ hasExamOver:false,
31
+ hasNotExam:false,
32
+ examInfoLoaded:false,
33
+ examInfo:{},
34
+ pythonCodeWebPath:'',
35
+ scratchCodeWebPath:'',
36
+ cplusCodeWebPath:'',
37
+ hasError:false,
38
+ userId:''
39
+ }
40
+
41
+ let timer:any = null
42
+ export default {
43
+ namespaced: true,
44
+ state,
45
+ getters: {},
46
+ mutations: {
47
+ setHasNotExam(state: ExamState,payload:boolean){
48
+ state.hasNotExam = false
49
+ timer && clearTimeout(timer)
50
+ timer = setTimeout(()=>{
51
+ state.hasNotExam = payload
52
+ })
53
+ },
54
+ setHasExamOver(state: ExamState,payload:boolean){
55
+ state.hasExamOver = false
56
+ timer && clearTimeout(timer)
57
+ timer = setTimeout(()=>{
58
+ state.hasExamOver = payload
59
+ })
60
+ },
61
+ setExamInfo(state: ExamState,payload:any){
62
+ state.examInfo = payload
63
+ state.examInfoLoaded = true
64
+ },
65
+ setExamPaperInfo(state: ExamState, payload: string) {
66
+ state.userId = payload
67
+ },
68
+ setCodeWebPath(state: ExamState, payload: {pythonCodeWebPath:string, scratchCodeWebPath:string,cplusCodeWebPath:string }) {
69
+ state.pythonCodeWebPath = payload.pythonCodeWebPath
70
+ state.scratchCodeWebPath = payload.scratchCodeWebPath
71
+ state.cplusCodeWebPath = payload.cplusCodeWebPath
72
+ },
73
+ //设置为true,异常情况下可退出iframe
74
+ setHasError(state: ExamState, payload: boolean){
75
+ state.hasError = payload
76
+ }
77
+ },
78
+ actions: {
79
+ ongoingExamActions({commit,dispatch}:actionFnObj,params:any){
80
+ return new Promise((resolve, reject) => {
81
+ getWeb(`${api.ongoingExam}`).then((res) => {
82
+ let {error_code,data} = res;
83
+ if(!error_code){
84
+ // data = null
85
+ if(data){
86
+ commit('setExamInfo', data)
87
+ }
88
+ }
89
+ resolve(res)
90
+ }, (err) => {
91
+ reject(err)
92
+ })
93
+ })
94
+ },
95
+ getCodeFreeCreationGoToUrlActions({commit,dispatch}:actionFnObj,params:any){
96
+ return new Promise((resolve, reject) => {
97
+ postWeb(`${api.getCodeFreeCreationGoToUrl}`,params).then((res) => {
98
+ resolve(res)
99
+ }, (err) => {
100
+ reject(err)
101
+ })
102
+ })
103
+ },
104
+ getExamPaperActions({commit,dispatch}:actionFnObj,params:any){
105
+ return new Promise((resolve, reject) => {
106
+ getWeb(`${api.getExamPaper}/${params.examId}`).then((res) => {
107
+ let {error_code,data} = res;
108
+ if(error_code){
109
+ if(error_code == 39002){
110
+ commit('setHasNotExam', true)
111
+ }
112
+ commit('setHasError',true)
113
+ }
114
+ if(data && data.applicant_simple_info && data.applicant_simple_info.applicant_id){
115
+ window.applicant_id = data.applicant_simple_info.applicant_id
116
+ let e = new Event('getStudentIdSuccess')
117
+ document.dispatchEvent(e)
118
+ }
119
+ resolve(res)
120
+ }, (err) => {
121
+ commit('setHasError',true)
122
+ reject(err)
123
+ })
124
+ })
125
+ },
126
+ getExamReviewActions({commit,dispatch}:actionFnObj,params:any){
127
+ return new Promise((resolve, reject) => {
128
+ getWeb(`${api.getExamReview}/${params.examId}`).then((res) => {
129
+ let {error_code} = res;
130
+ if(error_code){
131
+ if(error_code == 39002){
132
+ commit('setHasNotExam', true)
133
+ }
134
+ commit('setHasError',true)
135
+ }
136
+ resolve(res)
137
+ }, (err) => {
138
+ commit('setHasError',true)
139
+ reject(err)
140
+ })
141
+ })
142
+ },
143
+ getEditorUrlActions({commit,dispatch}:actionFnObj){
144
+ return new Promise((resolve, reject) => {
145
+ getWeb(`${api.editorUrl}`).then((res) => {
146
+ let {error_code, data} = res;
147
+ if (!error_code){
148
+ let {pythonCodeWebPath,scratchCodeWebPath,cplusCodeWebPath} = data
149
+ commit('setCodeWebPath',{pythonCodeWebPath,scratchCodeWebPath,cplusCodeWebPath})
150
+ }
151
+ resolve(res)
152
+ }, (err) => {
153
+ reject(err)
154
+ })
155
+ })
156
+ },
157
+ getQuestionInfoActions({commit,dispatch}:actionFnObj,params:any){
158
+ return new Promise((resolve, reject) => {
159
+ getWeb(`${api.getQuestionInfo}/${params.questionId}`).then((res) => {
160
+ resolve(res)
161
+ }, (err) => {
162
+ reject(err)
163
+ })
164
+ })
165
+ },
166
+ saveAnswersActions({commit,dispatch}:actionFnObj,params:any){
167
+ return new Promise((resolve, reject) => {
168
+ postWeb(`${api.saveAnswers}`,params).then((res) => {
169
+ let {error_code, data} = res;
170
+ if (error_code == 39003){
171
+ commit('setHasExamOver',true)
172
+ }
173
+ resolve(res)
174
+ }, (err) => {
175
+ reject(err)
176
+ })
177
+ })
178
+ },
179
+ submitExamActions({commit,dispatch}:actionFnObj,params:any){
180
+ return new Promise((resolve, reject) => {
181
+ postWeb(`${api.submitExam}`,params).then((res) => {
182
+ resolve(res)
183
+ }, (err) => {
184
+ reject(err)
185
+ })
186
+ })
187
+ },
188
+ resetExamActions({commit,dispatch}:actionFnObj,params:any){
189
+ return new Promise((resolve, reject) => {
190
+ postWeb(`${api.resetExam}/${params.examId}`).then((res) => {
191
+ resolve(res)
192
+ }, (err) => {
193
+ reject(err)
194
+ })
195
+ })
196
+ }
197
+ }
198
+ }
199
+
@@ -0,0 +1,22 @@
1
+ import {createStore} from 'vuex'
2
+ import exam from './exam'
3
+
4
+ interface RootState {
5
+ token: string;
6
+ }
7
+
8
+
9
+ export default createStore({
10
+ state: {
11
+ token: ''
12
+ } as RootState,
13
+ mutations: {
14
+ setToken(state: RootState, payload: string) {
15
+ state.token = payload
16
+ }
17
+ },
18
+ actions: {},
19
+ modules: {
20
+ exam
21
+ }
22
+ })
@@ -0,0 +1,4 @@
1
+ export interface actionFnObj{
2
+ commit:any,
3
+ dispatch:any
4
+ }
@@ -0,0 +1,10 @@
1
+ export interface mediaLookerItemInterF{
2
+ url:string,
3
+ mediaType:number//1图片
4
+ }
5
+ export interface mediaLookerListInterF{
6
+ mediaCount:number,
7
+ curMediaCount:number,
8
+ visible:boolean,
9
+ mediaLookerList:Array<mediaLookerItemInterF>
10
+ }