Commit d703d72cae8c331e0ae3839d44380f7dc0a2a300
1 parent
c2460294
首页,个人信息,班级名单,部分备题组卷接口联调
Showing
9 changed files
with
472 additions
and
256 deletions
src/api/apis/apis.js
... | ... | @@ -795,6 +795,13 @@ export default { |
795 | 795 | |
796 | 796 | /** 个人版 */ |
797 | 797 | // 修改个人信息 |
798 | + getInfo(data) { | |
799 | + return service({ | |
800 | + url: setUpUrls.getInfo, | |
801 | + method: "POST", | |
802 | + data | |
803 | + }); | |
804 | + }, | |
798 | 805 | modifyInfo(data) { |
799 | 806 | return service({ |
800 | 807 | url: setUpUrls.modifyInfo, |
... | ... | @@ -834,6 +841,14 @@ export default { |
834 | 841 | data |
835 | 842 | }); |
836 | 843 | }, |
844 | + // 删除班级 | |
845 | + pDelClass(data) { | |
846 | + return service({ | |
847 | + url: setUpUrls.pDelClass, | |
848 | + method: "POST", | |
849 | + data | |
850 | + }); | |
851 | + }, | |
837 | 852 | // 增加学生 |
838 | 853 | pAddStudent(data) { |
839 | 854 | return service({ |
... | ... | @@ -1202,4 +1217,29 @@ export default { |
1202 | 1217 | data |
1203 | 1218 | }); |
1204 | 1219 | }, |
1220 | + //班级名册导入 | |
1221 | + studentTemplateUrl(data) { | |
1222 | + return service({ | |
1223 | + url: setUpUrls.studentTemplateUrl, | |
1224 | + method: "POST", | |
1225 | + data | |
1226 | + }); | |
1227 | + }, | |
1228 | + //班级名册导出 | |
1229 | + exportStudent(data) { | |
1230 | + return service({ | |
1231 | + url: setUpUrls.exportStudent, | |
1232 | + method: "POST", | |
1233 | + data, | |
1234 | + responseType: 'arraybuffer', | |
1235 | + }); | |
1236 | + }, | |
1237 | + //班级名册导出 | |
1238 | + puploadImg(data) { | |
1239 | + return service({ | |
1240 | + url: setUpUrls.uploadImg, | |
1241 | + method: "POST", | |
1242 | + data, | |
1243 | + }); | |
1244 | + }, | |
1205 | 1245 | }; | ... | ... |
src/api/urls/apis.js
... | ... | @@ -203,6 +203,8 @@ export default { |
203 | 203 | |
204 | 204 | // 个人版首页统计数据 |
205 | 205 | personalIndex:"/api_html/personal/index", |
206 | + // 个人信息 | |
207 | + getInfo:"/api_html/personal/personalInfo", | |
206 | 208 | // 修改个人信息 |
207 | 209 | modifyInfo:"/api_html/personal/modifyInfo", |
208 | 210 | // 查询班级列表 |
... | ... | @@ -213,6 +215,8 @@ export default { |
213 | 215 | pStudentList:"/api_html/personal/studentList", |
214 | 216 | // 新增或修改班级 |
215 | 217 | pSaveClass:"/api_html/personal/saveClass", |
218 | + // 删除班级 | |
219 | + pDelClass:"/api_html/personal/delClass", | |
216 | 220 | // 增加学生 |
217 | 221 | pAddStudent:"/api_html/personal/addStudent", |
218 | 222 | // 删除学生 |
... | ... | @@ -308,6 +312,10 @@ export default { |
308 | 312 | pDeviceLogList:"/api_html/system/deviceLogList", |
309 | 313 | // 文件上传 |
310 | 314 | uploadApp:"/file/uploadApp", |
311 | - // 文件上传 | |
315 | + // 图片上传 | |
312 | 316 | uploadImg:"/file/uploadImg", |
317 | + // 班级名册导入 | |
318 | + studentTemplateUrl:"/api_html/personal/studentTemplateUrl", | |
319 | + // 班级名册导出 | |
320 | + exportStudent:"/api_html/personal/exportStudent", | |
313 | 321 | } | ... | ... |
src/views/index/mainIndex.vue
... | ... | @@ -163,11 +163,8 @@ |
163 | 163 | <img class="icon" src="../../assets/nav/setUpAccount.png" alt="" /> |
164 | 164 | <div class="text"> |
165 | 165 | <p class="p1">备题组卷</p> |
166 | - <p class="p2"> | |
167 | - 管理 | |
168 | - <template v-if="dataInfo.paperCount"> | |
169 | - {{ dataInfo.paperCount }}套答题卡, | |
170 | - </template> | |
166 | + <p class="p2" v-if="dataInfo.paperCount"> | |
167 | + 管理 {{ dataInfo.paperCount }}套答题卡, | |
171 | 168 | </p> |
172 | 169 | </div> |
173 | 170 | </li> |
... | ... | @@ -175,11 +172,8 @@ |
175 | 172 | <img class="icon" src="../../assets/nav/setUpSchool.png" alt="" /> |
176 | 173 | <div class="text"> |
177 | 174 | <p class="p1">班级名单</p> |
178 | - <p class="p2"> | |
179 | - 管理 | |
180 | - <template v-if="dataInfo.classCount"> | |
181 | - {{ dataInfo.classCount }}个班级的学生名单, | |
182 | - </template> | |
175 | + <p class="p2" v-if="dataInfo.classCount"> | |
176 | + 管理{{ dataInfo.classCount }}个班级的学生名单, | |
183 | 177 | </p> |
184 | 178 | </div> |
185 | 179 | </li> |
... | ... | @@ -187,11 +181,8 @@ |
187 | 181 | <img class="icon" src="../../assets/nav/device.png" alt="" /> |
188 | 182 | <div class="text"> |
189 | 183 | <p class="p1">学生画像</p> |
190 | - <p class="p2"> | |
191 | - 共分析 | |
192 | - <template v-if="dataInfo.stationCount" | |
193 | - >{{ dataInfo.stationCount }}名学生成绩</template | |
194 | - > | |
184 | + <p class="p2" v-if="dataInfo.stationCount"> | |
185 | + 共分析{{ dataInfo.stationCount }}名学生成绩 | |
195 | 186 | </p> |
196 | 187 | </div> |
197 | 188 | </li> |
... | ... | @@ -199,20 +190,15 @@ |
199 | 190 | <div class="nav-item item1 item-child2" @click="links('/ask')"> |
200 | 191 | <img class="icon" src="../../assets/nav/card.png" alt="" /> |
201 | 192 | <p class="p1">随堂问报表</p> |
202 | - <p class="p2"> | |
203 | - 对 | |
204 | - <template v-if="dataInfo.classPeriodCount" | |
205 | - >{{ dataInfo.classPeriodCount }}套随堂问答题记录分析</template | |
206 | - > | |
193 | + <p class="p2" v-if="dataInfo.classPeriodCount"> | |
194 | + 对{{ dataInfo.classPeriodCount }}套随堂问答题记录分析 | |
207 | 195 | </p> |
208 | 196 | </div> |
209 | 197 | <div class="nav-item item1 item-child2" @click="links('/test')"> |
210 | 198 | <img class="icon" src="../../assets/nav/analysis.png" alt="" /> |
211 | 199 | <p class="p1">即时测报表</p> |
212 | - <p class="p2"> | |
213 | - 对<template v-if="dataInfo.examCount" | |
214 | - >{{ dataInfo.examCount }}套即时测答题记录分析</template | |
215 | - > | |
200 | + <p class="p2" v-if="dataInfo.examCount"> | |
201 | + 对{{ dataInfo.examCount }}套即时测答题记录分析 | |
216 | 202 | </p> |
217 | 203 | </div> |
218 | 204 | <div class="nav-item item1 item-child1" @click="links('/down')"> | ... | ... |
src/views/personal/examinationPaper/add.vue
... | ... | @@ -330,7 +330,7 @@ |
330 | 330 | circle |
331 | 331 | size="mini" |
332 | 332 | icon="el-icon-tickets" |
333 | - @click="openStem(subQuestions, 1)" | |
333 | + @click="openStem(subQuestions, 1, index, indexs)" | |
334 | 334 | ></el-button> |
335 | 335 | </el-tooltip> |
336 | 336 | <el-tooltip effect="dark" content="题目打标" placement="top"> |
... | ... | @@ -339,7 +339,7 @@ |
339 | 339 | circle |
340 | 340 | size="mini" |
341 | 341 | icon="el-icon-price-tag" |
342 | - @click="openTag(subQuestions)" | |
342 | + @click="openTag(subQuestions, 3, index, indexs)" | |
343 | 343 | ></el-button> |
344 | 344 | </el-tooltip> |
345 | 345 | <el-tooltip |
... | ... | @@ -352,7 +352,7 @@ |
352 | 352 | circle |
353 | 353 | size="mini" |
354 | 354 | icon="el-icon-upload" |
355 | - @click="openStem(subQuestions, 2)" | |
355 | + @click="openStem(subQuestions, 2, index, indexs)" | |
356 | 356 | ></el-button> |
357 | 357 | </el-tooltip> |
358 | 358 | <el-popconfirm |
... | ... | @@ -835,10 +835,10 @@ |
835 | 835 | width="500" |
836 | 836 | > |
837 | 837 | <div> |
838 | - <img class="stem-pic" :src="stem.src" alt="" /> | |
838 | + <img class="stem-pic" :src="stem.screenshot" alt="" /> | |
839 | 839 | <el-upload |
840 | 840 | class="upload-demo" |
841 | - action="https://jsonplaceholder.typicode.com/posts/" | |
841 | + action="http://121.40.127.171/file/uploadImg" | |
842 | 842 | :limit="1" |
843 | 843 | :with-credentials="true" |
844 | 844 | :on-success="upSuccess" |
... | ... | @@ -858,25 +858,32 @@ |
858 | 858 | <div> |
859 | 859 | <el-form ref="form" :model="stem" label-width="160px"> |
860 | 860 | <el-form-item label="题目难度:"> |
861 | - <el-select v-model="stem.type" placeholder="选择题目难度"> | |
862 | - <el-option label="简单" :value="0"></el-option> | |
863 | - <el-option label="正常" :value="1"></el-option> | |
864 | - <el-option label="困难" :value="2"></el-option> | |
861 | + <el-select | |
862 | + v-model="stem.difficultyFactor" | |
863 | + placeholder="选择题目难度" | |
864 | + > | |
865 | + <el-option label="简单" value="简单"></el-option> | |
866 | + <el-option label="正常" value="正常"></el-option> | |
867 | + <el-option label="困难" value="困难"></el-option> | |
865 | 868 | </el-select> |
866 | 869 | </el-form-item> |
867 | 870 | <el-form-item label="知识点:"> |
868 | - <el-select v-model="stem.tag" multiple placeholder="选择知识点"> | |
869 | - <el-option label="生字积累" :value="0"></el-option> | |
870 | - <el-option label="字词运用" :value="1"></el-option> | |
871 | - <el-option label="阅读理解" :value="2"></el-option> | |
872 | - <el-option label="作文" :value="2"></el-option> | |
871 | + <el-select | |
872 | + v-model="stem.knowledge" | |
873 | + multiple | |
874 | + placeholder="选择知识点" | |
875 | + > | |
876 | + <el-option label="生字积累" value="生字积累"></el-option> | |
877 | + <el-option label="字词运用" value="字词运用"></el-option> | |
878 | + <el-option label="阅读理解" value="阅读理解"></el-option> | |
879 | + <el-option label="写作方法" value="写作方法"></el-option> | |
873 | 880 | </el-select> |
874 | 881 | </el-form-item> |
875 | 882 | </el-form> |
876 | 883 | </div> |
877 | 884 | <div slot="footer"> |
878 | 885 | <el-button @click="dialogTag = false">取 消</el-button> |
879 | - <el-button type="primary" @click="dialogTag = false">确 定</el-button> | |
886 | + <el-button type="primary" @click="setKnowledge">确 定</el-button> | |
880 | 887 | </div> |
881 | 888 | </el-dialog> |
882 | 889 | </div> |
... | ... | @@ -927,9 +934,14 @@ export default { |
927 | 934 | dialogTag: false, |
928 | 935 | upLoadType: 1, |
929 | 936 | stem: { |
930 | - src: "", //题干图片地址 | |
931 | - type: 0, //题目难度 | |
932 | - tag: [], //知识点 | |
937 | + id: "", | |
938 | + type: 1, | |
939 | + index: 0, | |
940 | + indexs: 0, | |
941 | + screenshot: "", //题干图片地址 | |
942 | + answerScreenshot: "", //题干解析图片地址 | |
943 | + difficultyFactor: 0, //题目难度 | |
944 | + knowledge: [], //知识点 | |
933 | 945 | }, |
934 | 946 | type: 1, //1-创建,2-复制答题卡 |
935 | 947 | dialogVisible: false, //测验类型设置弹窗 |
... | ... | @@ -954,7 +966,7 @@ export default { |
954 | 966 | ], |
955 | 967 | rightOptions: ["A", "B", "C", "D", "E", "F", "G"], |
956 | 968 | addSubQuestionsType: "", |
957 | - step: 0, //步骤 | |
969 | + step: 1, //步骤 | |
958 | 970 | gradeList: [], //年级 |
959 | 971 | subjectList: [], //科目 |
960 | 972 | answerTypeList: [], //测验类型 |
... | ... | @@ -1007,28 +1019,52 @@ export default { |
1007 | 1019 | } |
1008 | 1020 | }, |
1009 | 1021 | methods: { |
1010 | - openStem(obj, type) { | |
1022 | + openStem(obj, type, index, indexs) { | |
1023 | + //上传截图 | |
1011 | 1024 | this.upLoadType = type; |
1012 | - this.stem = { ...this.stem, obj }; | |
1025 | + this.stem.id = obj.id; | |
1026 | + this.stem.type = type; | |
1027 | + this.stem.index = index; | |
1028 | + this.stem.indexs = indexs; | |
1029 | + this.stem.screenshot = type == 1 ? obj.screenshot : obj.answerScreenshot; | |
1013 | 1030 | this.dialogStem = true; |
1014 | 1031 | }, |
1015 | - openTag(obj) { | |
1032 | + openTag(obj, type, index, indexs) { | |
1033 | + //难度,知识点 | |
1016 | 1034 | this.stem = { ...this.stem, obj }; |
1035 | + this.stem.id = obj.id; | |
1036 | + this.stem.type = type; | |
1037 | + this.stem.index = index; | |
1038 | + this.stem.indexs = indexs; | |
1039 | + this.stem.knowledge = obj.knowledge?.split(",") || []; | |
1040 | + this.stem.difficultyFactor = obj.difficultyFactor || ""; | |
1017 | 1041 | this.dialogTag = true; |
1018 | 1042 | }, |
1019 | 1043 | upSuccess(res) { |
1044 | + //图片上传成功 | |
1020 | 1045 | if (res && res.status == 0) { |
1046 | + this.dialogStem = false; | |
1047 | + let keys = this.stem.type == 1 ? "screenshot" : "answerScreenshot"; | |
1048 | + this.form.questionList[this.stem.index].subQuestions[this.stem.indexs][ | |
1049 | + keys | |
1050 | + ] = this.stem[keys]; | |
1021 | 1051 | this.$message.success("上传成功"); |
1022 | 1052 | } else { |
1023 | 1053 | this.$message.error(res.info); |
1024 | 1054 | } |
1025 | 1055 | }, |
1056 | + setKnowledge() { | |
1057 | + //保存难度、知识点 | |
1058 | + this.form.questionList[this.stem.index].subQuestions[ | |
1059 | + this.stem.indexs | |
1060 | + ].knowledge = this.stem.knowledge.join(","); | |
1061 | + this.form.questionList[this.stem.index].subQuestions[ | |
1062 | + this.stem.indexs | |
1063 | + ].difficultyFactor = this.stem.difficultyFactor; | |
1064 | + this.dialogTag = false; | |
1065 | + }, | |
1026 | 1066 | upError(res) { |
1027 | - if (res && res.status == 0) { | |
1028 | - this.$message.error("上传失败"); | |
1029 | - } else { | |
1030 | - this.$message.error(res.message); | |
1031 | - } | |
1067 | + this.$message.error("上传失败"); | |
1032 | 1068 | }, |
1033 | 1069 | linkBack() { |
1034 | 1070 | this.$confirm( |
... | ... | @@ -1605,7 +1641,7 @@ export default { |
1605 | 1641 | }, |
1606 | 1642 | async removeTypeName(obj) { |
1607 | 1643 | //删除测验类型 |
1608 | - const { data, status, info } = await this.$request.pDelPaper({ | |
1644 | + const { data, status, info } = await this.$request.pDelPaperType({ | |
1609 | 1645 | tagId: obj.id, |
1610 | 1646 | }); |
1611 | 1647 | if (status == 0) { |
... | ... | @@ -1694,8 +1730,8 @@ export default { |
1694 | 1730 | this.subjectList = |
1695 | 1731 | data.subjectNames?.map((item) => { |
1696 | 1732 | return { |
1697 | - value: item, | |
1698 | - label: item, | |
1733 | + value: item.subjectName, | |
1734 | + label: item.subjectName, | |
1699 | 1735 | }; |
1700 | 1736 | }) || []; |
1701 | 1737 | console.log(this.subjectList); |
... | ... | @@ -1986,8 +2022,8 @@ export default { |
1986 | 2022 | } |
1987 | 2023 | .qs-set { |
1988 | 2024 | width: 190px; |
1989 | - .delete{ | |
1990 | - margin-left:9px; | |
2025 | + .delete { | |
2026 | + margin-left: 9px; | |
1991 | 2027 | } |
1992 | 2028 | } |
1993 | 2029 | .qs-options2 { |
... | ... | @@ -2012,7 +2048,7 @@ export default { |
2012 | 2048 | } |
2013 | 2049 | } |
2014 | 2050 | } |
2015 | -.upload-demo{ | |
2051 | +.upload-demo { | |
2016 | 2052 | text-align: center; |
2017 | 2053 | } |
2018 | 2054 | .stem-pic { | ... | ... |
src/views/personal/examinationPaper/edit.vue
... | ... | @@ -142,18 +142,18 @@ |
142 | 142 | <el-button |
143 | 143 | type="primary" |
144 | 144 | circle |
145 | - size="small" | |
145 | + size="mini" | |
146 | 146 | icon="el-icon-tickets" |
147 | - @click="openStem(subQuestions, 1)" | |
147 | + @click="openStem(subQuestions, 1, index, indexs)" | |
148 | 148 | ></el-button> |
149 | 149 | </el-tooltip> |
150 | 150 | <el-tooltip effect="dark" content="题目打标" placement="top"> |
151 | 151 | <el-button |
152 | 152 | type="primary" |
153 | 153 | circle |
154 | - size="small" | |
154 | + size="mini" | |
155 | 155 | icon="el-icon-price-tag" |
156 | - @click="openTag(subQuestions)" | |
156 | + @click="openTag(subQuestions, 3, index, indexs)" | |
157 | 157 | ></el-button> |
158 | 158 | </el-tooltip> |
159 | 159 | <el-tooltip |
... | ... | @@ -164,11 +164,24 @@ |
164 | 164 | <el-button |
165 | 165 | type="primary" |
166 | 166 | circle |
167 | - size="small" | |
167 | + size="mini" | |
168 | 168 | icon="el-icon-upload" |
169 | - @click="openStem(subQuestions, 2)" | |
169 | + @click="openStem(subQuestions, 2, index, indexs)" | |
170 | 170 | ></el-button> |
171 | 171 | </el-tooltip> |
172 | + <el-popconfirm | |
173 | + title="确定删除这道题吗?" | |
174 | + @confirm="delTabData(indexs, index)" | |
175 | + > | |
176 | + <el-button | |
177 | + slot="reference" | |
178 | + class="delete" | |
179 | + type="danger" | |
180 | + size="mini" | |
181 | + circle | |
182 | + icon="el-icon-delete" | |
183 | + ></el-button> | |
184 | + </el-popconfirm> | |
172 | 185 | </div> |
173 | 186 | </div> |
174 | 187 | </li> |
... | ... | @@ -275,29 +288,42 @@ |
275 | 288 | <el-button |
276 | 289 | type="primary" |
277 | 290 | circle |
278 | - size="small" | |
291 | + size="mini" | |
279 | 292 | icon="el-icon-tickets" |
280 | - @click="openStem(subQuestions, 1)" | |
293 | + @click="openStem(subQuestions, 1, indexs)" | |
281 | 294 | ></el-button> |
282 | 295 | </el-tooltip> |
283 | 296 | <el-tooltip effect="dark" content="题目打标" placement="top"> |
284 | 297 | <el-button |
285 | 298 | type="primary" |
286 | 299 | circle |
287 | - size="small" | |
300 | + size="mini" | |
288 | 301 | icon="el-icon-price-tag" |
289 | - @click="openTag(subQuestions)" | |
302 | + @click="openTag(subQuestions, 3, indexs)" | |
290 | 303 | ></el-button> |
291 | 304 | </el-tooltip> |
292 | 305 | <el-tooltip effect="dark" content="上传题目解析" placement="top"> |
293 | 306 | <el-button |
294 | 307 | type="primary" |
295 | 308 | circle |
296 | - size="small" | |
309 | + size="mini" | |
297 | 310 | icon="el-icon-upload" |
298 | - @click="openStem(subQuestions, 2)" | |
311 | + @click="openStem(subQuestions, 2, indexs)" | |
299 | 312 | ></el-button> |
300 | 313 | </el-tooltip> |
314 | + <el-popconfirm | |
315 | + title="确定删除这道题吗?" | |
316 | + @confirm="delTabData(indexs, index)" | |
317 | + > | |
318 | + <el-button | |
319 | + slot="reference" | |
320 | + class="delete" | |
321 | + type="danger" | |
322 | + size="mini" | |
323 | + circle | |
324 | + icon="el-icon-delete" | |
325 | + ></el-button> | |
326 | + </el-popconfirm> | |
301 | 327 | </div> |
302 | 328 | </div> |
303 | 329 | </li> |
... | ... | @@ -397,10 +423,10 @@ |
397 | 423 | width="500" |
398 | 424 | > |
399 | 425 | <div> |
400 | - <img class="stem-pic" :src="stem.src" alt="" /> | |
426 | + <img class="stem-pic" :src="stem.screenshot" alt="" /> | |
401 | 427 | <el-upload |
402 | 428 | class="upload-demo" |
403 | - action="/file/uploadImg" | |
429 | + action="http://121.40.127.171/file/uploadImg" | |
404 | 430 | :limit="1" |
405 | 431 | :with-credentials="true" |
406 | 432 | :on-success="upSuccess" |
... | ... | @@ -420,18 +446,25 @@ |
420 | 446 | <div> |
421 | 447 | <el-form ref="form" :model="stem" label-width="160px"> |
422 | 448 | <el-form-item label="题目难度:"> |
423 | - <el-select v-model="stem.type" placeholder="选择题目难度"> | |
424 | - <el-option label="简单" :value="0"></el-option> | |
425 | - <el-option label="正常" :value="1"></el-option> | |
426 | - <el-option label="困难" :value="2"></el-option> | |
449 | + <el-select | |
450 | + v-model="stem.difficultyFactor" | |
451 | + placeholder="选择题目难度" | |
452 | + > | |
453 | + <el-option label="简单" value="简单"></el-option> | |
454 | + <el-option label="正常" value="正常"></el-option> | |
455 | + <el-option label="困难" value="困难"></el-option> | |
427 | 456 | </el-select> |
428 | 457 | </el-form-item> |
429 | 458 | <el-form-item label="知识点:"> |
430 | - <el-select v-model="stem.tag" multiple placeholder="选择知识点"> | |
431 | - <el-option label="生字积累" :value="0"></el-option> | |
432 | - <el-option label="字词运用" :value="1"></el-option> | |
433 | - <el-option label="阅读理解" :value="2"></el-option> | |
434 | - <el-option label="作文" :value="2"></el-option> | |
459 | + <el-select | |
460 | + v-model="stem.knowledge" | |
461 | + multiple | |
462 | + placeholder="选择知识点" | |
463 | + > | |
464 | + <el-option label="生字积累" value="生字积累"></el-option> | |
465 | + <el-option label="字词运用" value="字词运用"></el-option> | |
466 | + <el-option label="阅读理解" value="阅读理解"></el-option> | |
467 | + <el-option label="写作方法" value="写作方法"></el-option> | |
435 | 468 | </el-select> |
436 | 469 | </el-form-item> |
437 | 470 | </el-form> |
... | ... | @@ -454,9 +487,14 @@ export default { |
454 | 487 | dialogTag: false, |
455 | 488 | upLoadType: 1, |
456 | 489 | stem: { |
457 | - src: "", //题干图片地址 | |
458 | - type: 0, //题目难度 | |
459 | - tag: [], //知识点 | |
490 | + id: "", | |
491 | + type: 1, | |
492 | + index: 0, | |
493 | + indexs: 0, | |
494 | + screenshot: "", //题干图片地址 | |
495 | + answerScreenshot: "", //题干解析图片地址 | |
496 | + difficultyFactor: 0, //题目难度 | |
497 | + knowledge: [], //知识点 | |
460 | 498 | }, |
461 | 499 | title: "", |
462 | 500 | type: 1, |
... | ... | @@ -508,28 +546,64 @@ export default { |
508 | 546 | this._QueryDetail(); |
509 | 547 | }, |
510 | 548 | methods: { |
511 | - openStem(obj, type) { | |
549 | + openStem(obj, type, index, indexs) { | |
550 | + //上传截图 | |
512 | 551 | this.upLoadType = type; |
513 | - this.stem = { ...this.stem, obj }; | |
552 | + this.stem.id = obj.id; | |
553 | + this.stem.type = type; | |
554 | + this.stem.index = index; | |
555 | + this.stem.indexs = indexs; | |
556 | + this.stem.screenshot = type == 1 ? obj.screenshot : obj.answerScreenshot; | |
514 | 557 | this.dialogStem = true; |
515 | 558 | }, |
516 | - openTag(obj) { | |
559 | + openTag(obj, type, index, indexs) { | |
560 | + //难度,知识点 | |
517 | 561 | this.stem = { ...this.stem, obj }; |
562 | + this.stem.id = obj.id; | |
563 | + this.stem.type = type; | |
564 | + this.stem.index = index; | |
565 | + this.stem.indexs = indexs; | |
566 | + this.stem.knowledge = obj.knowledge?.split(",") || []; | |
567 | + this.stem.difficultyFactor = obj.difficultyFactor || ""; | |
518 | 568 | this.dialogTag = true; |
519 | 569 | }, |
520 | 570 | upSuccess(res) { |
571 | + //图片上传成功 | |
521 | 572 | if (res && res.status == 0) { |
573 | + this.dialogStem = false; | |
574 | + let keys = this.stem.type == 1 ? "screenshot" : "answerScreenshot"; | |
575 | + if (typeof this.stem.indexs != undefined) { | |
576 | + this.questionList[this.stem.index].subQuestions[this.stem.indexs][ | |
577 | + keys | |
578 | + ] = this.stem[keys]; | |
579 | + } else { | |
580 | + this.questionList[this.stem.index][keys] = this.stem[keys]; | |
581 | + } | |
582 | + | |
522 | 583 | this.$message.success("上传成功"); |
523 | 584 | } else { |
524 | 585 | this.$message.error(res.info); |
525 | 586 | } |
526 | 587 | }, |
527 | - upError(res) { | |
528 | - if (res && res.status == 0) { | |
529 | - this.$message.error("上传失败"); | |
588 | + setKnowledge() { | |
589 | + //保存难度、知识点 | |
590 | + if (typeof this.stem.indexs != undefined) { | |
591 | + this.questionList[this.stem.index].subQuestions[ | |
592 | + this.stem.indexs | |
593 | + ].knowledge = this.stem.knowledge.join(","); | |
594 | + this.questionList[this.stem.index].subQuestions[ | |
595 | + this.stem.indexs | |
596 | + ].difficultyFactor = this.stem.difficultyFactor; | |
530 | 597 | } else { |
531 | - this.$message.error(res.message); | |
598 | + this.questionList[this.stem.index].knowledge = | |
599 | + this.stem.knowledge.join(","); | |
600 | + this.questionList[this.stem.index].difficultyFactor = | |
601 | + this.stem.difficultyFactor; | |
532 | 602 | } |
603 | + this.dialogTag = false; | |
604 | + }, | |
605 | + upError(res) { | |
606 | + this.$message.error("上传失败"); | |
533 | 607 | }, |
534 | 608 | linkBack() { |
535 | 609 | this.$router.go(-1); |
... | ... | @@ -1046,7 +1120,9 @@ export default { |
1046 | 1120 | .el-input-number { |
1047 | 1121 | width: 140px; |
1048 | 1122 | } |
1049 | - | |
1123 | +.delete { | |
1124 | + margin-left: 8px; | |
1125 | +} | |
1050 | 1126 | .questions-ul { |
1051 | 1127 | border-left: 1px solid #e2e2e2; |
1052 | 1128 | border-top: 1px solid #e2e2e2; | ... | ... |
src/views/personal/examinationPaper/index.vue
... | ... | @@ -232,6 +232,7 @@ export default { |
232 | 232 | //切换班级 |
233 | 233 | async changClazz() { |
234 | 234 | await this._QuerySubjectList(); |
235 | + this._QueryTypeList() | |
235 | 236 | this._QueryData(false); |
236 | 237 | }, |
237 | 238 | // 查找答题卡类型 |
... | ... | @@ -250,7 +251,7 @@ export default { |
250 | 251 | }) || []; |
251 | 252 | this.typeList.unshift({ |
252 | 253 | value: "", |
253 | - label: "请选择标签", | |
254 | + label: "全部", | |
254 | 255 | }); |
255 | 256 | } else { |
256 | 257 | this.$message.error(info); |
... | ... | @@ -266,7 +267,7 @@ export default { |
266 | 267 | this.classList = |
267 | 268 | data.list?.map((item) => { |
268 | 269 | return { |
269 | - value: item.classId, | |
270 | + value: item.id, | |
270 | 271 | label: item.className, |
271 | 272 | }; |
272 | 273 | }) || []; | ... | ... |
src/views/personal/examinationPaper/recycle.vue
... | ... | @@ -86,7 +86,8 @@ |
86 | 86 | </div> |
87 | 87 | <div class="info"> |
88 | 88 | <p class="title"> |
89 | - {{ item.title }} <span class="label" v-if="item.tag">{{ item.tag }}</span> | |
89 | + {{ item.title }} | |
90 | + <span class="label" v-if="item.tag">{{ item.tag }}</span> | |
90 | 91 | </p> |
91 | 92 | <p class="num"> |
92 | 93 | {{ item.gradeName }} |
... | ... | @@ -136,7 +137,11 @@ |
136 | 137 | > |
137 | 138 | </el-pagination> |
138 | 139 | </div> |
139 | - <el-empty :image-size="100" v-if="!tableData.length&&loading==false" description="没有更多数据"></el-empty> | |
140 | + <el-empty | |
141 | + :image-size="100" | |
142 | + v-if="!tableData.length && loading == false" | |
143 | + description="没有更多数据" | |
144 | + ></el-empty> | |
140 | 145 | </div> |
141 | 146 | </template> |
142 | 147 | |
... | ... | @@ -144,7 +149,7 @@ |
144 | 149 | export default { |
145 | 150 | data() { |
146 | 151 | return { |
147 | - loading:false, | |
152 | + loading: false, | |
148 | 153 | props: { multiple: true, checkStrictly: true }, |
149 | 154 | options: [ |
150 | 155 | { |
... | ... | @@ -187,8 +192,8 @@ export default { |
187 | 192 | typeList: [], |
188 | 193 | tableData: [], |
189 | 194 | total: 0, |
190 | - page:1, | |
191 | - size:20 | |
195 | + page: 1, | |
196 | + size: 20, | |
192 | 197 | }; |
193 | 198 | }, |
194 | 199 | async created() { |
... | ... | @@ -228,13 +233,13 @@ export default { |
228 | 233 | await this._QuerySubjectList(); |
229 | 234 | this._QueryData(false); |
230 | 235 | }, |
231 | - changePage(page){ | |
232 | - this.page = page | |
233 | - this._QueryData(this.query.title) | |
236 | + changePage(page) { | |
237 | + this.page = page; | |
238 | + this._QueryData(this.query.title); | |
234 | 239 | }, |
235 | 240 | async _QueryData(type) { |
236 | 241 | //获取答题卡列表 |
237 | - this.loading=true | |
242 | + this.loading = true; | |
238 | 243 | let query = {}; |
239 | 244 | if (!type) { |
240 | 245 | this.query.title = ""; |
... | ... | @@ -244,7 +249,7 @@ export default { |
244 | 249 | this.query.type = ""; |
245 | 250 | this.query.subjectId = ""; |
246 | 251 | } |
247 | - query.classId = this.query.classId; | |
252 | + query.classId = this.query.classId; | |
248 | 253 | for (let key in query) { |
249 | 254 | if (!query[key]) { |
250 | 255 | query[key] = null; |
... | ... | @@ -252,9 +257,9 @@ export default { |
252 | 257 | } |
253 | 258 | const { data, status, info } = await this.$request.pPaperList({ |
254 | 259 | ...query, |
255 | - status:2, | |
256 | - page:this.page, | |
257 | - size:this.size | |
260 | + status: 2, | |
261 | + page: this.page, | |
262 | + size: this.size, | |
258 | 263 | }); |
259 | 264 | this.loading = false; |
260 | 265 | if (status === 0) { |
... | ... | @@ -270,12 +275,13 @@ export default { |
270 | 275 | console.log(status); |
271 | 276 | if (status === 0) { |
272 | 277 | if (!!data.list) { |
273 | - this.classList = data.list?.map((item) => { | |
274 | - return { | |
275 | - value: item.classId, | |
276 | - label: item.className, | |
277 | - }; | |
278 | - })||[]; | |
278 | + this.classList = | |
279 | + data.list?.map((item) => { | |
280 | + return { | |
281 | + value: item.id, | |
282 | + label: item.className, | |
283 | + }; | |
284 | + }) || []; | |
279 | 285 | this.query.classId = this.classList[0]?.value; |
280 | 286 | } |
281 | 287 | } else { |
... | ... | @@ -288,12 +294,13 @@ export default { |
288 | 294 | classId: this.query.classId, |
289 | 295 | }); |
290 | 296 | if (status === 0) { |
291 | - this.subjectList = data.subjectNames?.map((item) => { | |
292 | - return { | |
293 | - value: item, | |
294 | - label: item, | |
295 | - }; | |
296 | - })||[]; | |
297 | + this.subjectList = | |
298 | + data.subjectNames?.map((item) => { | |
299 | + return { | |
300 | + value: item, | |
301 | + label: item, | |
302 | + }; | |
303 | + }) || []; | |
297 | 304 | this.query.subjectName = this.subjectList[0]?.value; |
298 | 305 | } else { |
299 | 306 | this.$message.error(info); |
... | ... | @@ -303,7 +310,7 @@ export default { |
303 | 310 | async _QueryTypeList() { |
304 | 311 | const { data, status, info } = await this.$request.pPaperTagList({ |
305 | 312 | classId: this.query.classId, |
306 | - tyle:0 | |
313 | + tyle: 0, | |
307 | 314 | }); |
308 | 315 | if (status === 0) { |
309 | 316 | this.typeList = | ... | ... |
src/views/personal/setUp/student.vue
... | ... | @@ -15,6 +15,16 @@ |
15 | 15 | @click="diaUp = true" |
16 | 16 | ></el-button> |
17 | 17 | </el-tooltip> |
18 | + <el-tooltip effect="dark" content="学生导出" placement="bottom"> | |
19 | + <el-button | |
20 | + type="primary" | |
21 | + icon="el-icon-download" | |
22 | + size="mini" | |
23 | + plain | |
24 | + circle | |
25 | + @click="exportStudentExl" | |
26 | + ></el-button> | |
27 | + </el-tooltip> | |
18 | 28 | <el-tooltip effect="dark" content="添加班级" placement="bottom"> |
19 | 29 | <el-button |
20 | 30 | type="primary" |
... | ... | @@ -156,7 +166,7 @@ |
156 | 166 | <el-checkbox |
157 | 167 | v-for="item in subjectList" |
158 | 168 | :label="item" |
159 | - :key="item" | |
169 | + :key="item.id" | |
160 | 170 | >{{ item }}</el-checkbox |
161 | 171 | > |
162 | 172 | </el-checkbox-group> |
... | ... | @@ -186,7 +196,6 @@ |
186 | 196 | </el-dialog> |
187 | 197 | <el-dialog title="学生导入" :visible.sync="diaUp" width="600"> |
188 | 198 | <up-load |
189 | - id="downTeacher" | |
190 | 199 | :url="url" |
191 | 200 | @upSuccess="upSuccess" |
192 | 201 | fileName="学生模板" |
... | ... | @@ -209,15 +218,16 @@ export default { |
209 | 218 | data() { |
210 | 219 | return { |
211 | 220 | loading: false, |
212 | - diaUp: false,//导入弹窗 | |
213 | - url: "/api_html/school/manager/importStudentClicker", | |
214 | - diaStu: false,//添加学生 | |
215 | - diaClass: false,//添加-修改班级 | |
221 | + diaUp: false, //导入弹窗 | |
222 | + url: "/api_html/personal/importStudent", | |
223 | + diaStu: false, //添加学生 | |
224 | + diaClass: false, //添加-修改班级 | |
216 | 225 | showAll: false, //修改年级科目显示 |
217 | 226 | query: { |
218 | 227 | classId: "", |
219 | 228 | }, |
220 | - formStu: {//添加学生信息 | |
229 | + formStu: { | |
230 | + //添加学生信息 | |
221 | 231 | className: "", |
222 | 232 | studentName: "", |
223 | 233 | studentCode: "", |
... | ... | @@ -233,7 +243,8 @@ export default { |
233 | 243 | { required: true, message: "请输入学生长学号", trigger: "blur" }, |
234 | 244 | ], |
235 | 245 | }, |
236 | - formClass: {//添加班级信息 | |
246 | + formClass: { | |
247 | + //添加班级信息 | |
237 | 248 | classId: "", |
238 | 249 | className: "", |
239 | 250 | subjectNames: [], |
... | ... | @@ -242,17 +253,20 @@ export default { |
242 | 253 | className: [ |
243 | 254 | { required: true, message: "请输入班级名称", trigger: "blur" }, |
244 | 255 | ], |
256 | + subjectNames: [ | |
257 | + { required: true, message: "请输入科目名称", trigger: "blur" }, | |
258 | + ], | |
245 | 259 | }, |
246 | - classList: [],//班级列表 | |
247 | - studentList: [],//学生列表 | |
248 | - subjectList: [],//科目列表 | |
249 | - subjectName: "",//添加科目名称 | |
260 | + classList: [], //班级列表 | |
261 | + studentList: [], //学生列表 | |
262 | + subjectList: [], //科目列表 | |
263 | + subjectName: "", //添加科目名称 | |
250 | 264 | }; |
251 | 265 | }, |
252 | 266 | async created() { |
253 | - // await this._QueryClass(); | |
254 | - // this._QuerySubject(); | |
255 | - // this._QueryData(); | |
267 | + await this._QueryClass(); | |
268 | + this._QuerySubject(); | |
269 | + this._QueryData(); | |
256 | 270 | }, |
257 | 271 | methods: { |
258 | 272 | addClass() { |
... | ... | @@ -295,7 +309,7 @@ export default { |
295 | 309 | saveClass() { |
296 | 310 | this.$refs.formClass.validate(async (valid) => { |
297 | 311 | if (valid) { |
298 | - const { data, status, info } = await this.$request.updateClass({ | |
312 | + const { data, status, info } = await this.$request.pSaveClass({ | |
299 | 313 | classId: this.formClass.classId, |
300 | 314 | className: this.formClass.className, |
301 | 315 | subjectNames: this.formClass.subjectNames, |
... | ... | @@ -324,7 +338,7 @@ export default { |
324 | 338 | this.$message.warning("有学生的班级不能删除!"); |
325 | 339 | return; |
326 | 340 | } |
327 | - const { data, status, info } = await this.$request.updateClass({ | |
341 | + const { data, status, info } = await this.$request.pDelClass({ | |
328 | 342 | classId: this.formClass.classId, |
329 | 343 | }); |
330 | 344 | if (status === 0) { |
... | ... | @@ -355,21 +369,9 @@ export default { |
355 | 369 | this.$message.error(info); |
356 | 370 | } |
357 | 371 | }, |
358 | - async downExcel() { | |
359 | - this.loadingDown = true; | |
360 | - let { data, info, status } = | |
361 | - await this.$request.studentClickerTemplateUrl(); | |
362 | - this.loadingDown = false; | |
363 | - if (status == 0) { | |
364 | - getBlob(data.downloadUrl).then((res) => { | |
365 | - downloadFile("学生模板", res); | |
366 | - }); | |
367 | - } else { | |
368 | - this.$message.error(info); | |
369 | - } | |
370 | - }, | |
372 | + | |
371 | 373 | async removeStu(obj, index) { |
372 | - const { data, status, info } = await this.$request.delStudent({ | |
374 | + const { data, status, info } = await this.$request.pDelStudent({ | |
373 | 375 | studentId: obj.id, |
374 | 376 | }); |
375 | 377 | if (status === 0) { |
... | ... | @@ -398,7 +400,7 @@ export default { |
398 | 400 | this.$message.warning("学生姓名已存在"); |
399 | 401 | return; |
400 | 402 | } |
401 | - const { data, status, info } = await this.$request.addStudent({ | |
403 | + const { data, status, info } = await this.$request.pAddStudent({ | |
402 | 404 | classId: this.query.classId, |
403 | 405 | ...query, |
404 | 406 | }); |
... | ... | @@ -419,7 +421,7 @@ export default { |
419 | 421 | }, |
420 | 422 | async _QueryData() { |
421 | 423 | this.loading = true; |
422 | - const { data, status, info } = await this.$request.studentList({ | |
424 | + const { data, status, info } = await this.$request.pStudentList({ | |
423 | 425 | ...this.query, |
424 | 426 | }); |
425 | 427 | this.loading = false; |
... | ... | @@ -432,7 +434,9 @@ export default { |
432 | 434 | }, |
433 | 435 | |
434 | 436 | async _QueryClass() { |
435 | - const { data, status, info } = await this.$request.schoolClassList(); | |
437 | + const { data, status, info } = await this.$request.pClassList({ | |
438 | + needStudentCount:1 | |
439 | + }); | |
436 | 440 | if (status === 0) { |
437 | 441 | this.classList = [...data.list] || []; |
438 | 442 | this.query.classId = this.classList[0]?.id; |
... | ... | @@ -441,6 +445,37 @@ export default { |
441 | 445 | this.$message.error(info); |
442 | 446 | } |
443 | 447 | }, |
448 | + async downExcel() { | |
449 | + this.loadingDown = true; | |
450 | + let { data, info, status } = await this.$request.studentTemplateUrl(); | |
451 | + this.loadingDown = false; | |
452 | + if (status == 0) { | |
453 | + // getBlob(data.downloadUrl).then((res) => { | |
454 | + // downloadFile("学生模板", res); | |
455 | + // }); | |
456 | + const a = document.createElement("a"); | |
457 | + a.href = data.downloadUrl; | |
458 | + a.download = data.appName; | |
459 | + document.body.appendChild(a); | |
460 | + a.click(); | |
461 | + a.remove(); | |
462 | + } else { | |
463 | + this.$message.error(info); | |
464 | + } | |
465 | + }, | |
466 | + async exportStudentExl() { | |
467 | + this.loadingDown = true; | |
468 | + let data = await this.$request.exportStudent(); | |
469 | + this.loadingDown = false; | |
470 | + if (data) { | |
471 | + let blob = new Blob([data], { | |
472 | + type: "application/vnd.ms-excel;charset=utf-8", | |
473 | + }); | |
474 | + downloadFile(`学生名单.xlsx`, blob); | |
475 | + } else { | |
476 | + this.$message.error("下载失败"); | |
477 | + } | |
478 | + }, | |
444 | 479 | }, |
445 | 480 | }; |
446 | 481 | </script> |
... | ... | @@ -565,7 +600,7 @@ export default { |
565 | 600 | } |
566 | 601 | .form-box { |
567 | 602 | .subject-box { |
568 | - padding-right:50px; | |
603 | + padding-right: 50px; | |
569 | 604 | max-height: 90px; |
570 | 605 | overflow: hidden; |
571 | 606 | position: relative; | ... | ... |
src/views/personal/userInfo/index.vue
... | ... | @@ -8,30 +8,20 @@ |
8 | 8 | <div class="page-content"> |
9 | 9 | <div class="content-box"> |
10 | 10 | <i class="el-icon-edit" @click="diaSchool = true"></i> |
11 | + <i class="el-icon-key" @click="diaPass = true"></i> | |
11 | 12 | <ul class="school-info"> |
12 | 13 | <li class="school-item"> |
13 | 14 | <span class="s1">学校名称:</span> |
14 | - <span class="s2">{{ school.schoolName || "--" }}</span> | |
15 | - </li> | |
16 | - <li class="school-item"> | |
17 | - <span class="s1">授课端管理密码:</span> | |
18 | - <span class="s2">{{ school.managePwd || "--" }}</span> | |
15 | + <span class="s2">{{ Info.tenantName || "--" }}</span> | |
19 | 16 | </li> |
20 | 17 | <li class="school-item"> |
21 | 18 | <span class="s1">教师姓名:</span> |
22 | - <span class="s2">{{ school.contactPerson || "--" }}</span> | |
19 | + <span class="s2">{{ Info.contactPerson || "--" }}</span> | |
23 | 20 | </li> |
24 | 21 | <li class="school-item"> |
25 | 22 | <span class="s1">手机号码:</span> |
26 | - <span class="s2">{{ school.contactPhone || "--" }}</span> | |
27 | - </li> | |
28 | - <li class="school-item"> | |
29 | - <span class="s1">科目:</span> | |
30 | - <span class="s2">{{ | |
31 | - school.sections | getSections(school.sections) | |
32 | - }}</span> | |
23 | + <span class="s2">{{ Info.contactPhone || "--" }}</span> | |
33 | 24 | </li> |
34 | - | |
35 | 25 | </ul> |
36 | 26 | </div> |
37 | 27 | </div> |
... | ... | @@ -43,16 +33,14 @@ |
43 | 33 | :rules="rulesSchool" |
44 | 34 | label-width="160px" |
45 | 35 | > |
46 | - <el-form-item label="授课端管理密码:" prop="managePwd"> | |
47 | - <el-col :span="10"> | |
48 | - <el-input | |
49 | - maxlength="20" | |
50 | - v-model="formSchool.managePwd" | |
51 | - show-password | |
52 | - placeholder="请输入授课端管理密码" | |
53 | - ></el-input> | |
54 | - </el-col> | |
55 | - </el-form-item> | |
36 | + <el-form-item label="学校名称:" prop="tenantName" | |
37 | + ><el-col :span="10" | |
38 | + ><el-input | |
39 | + maxlength="30" | |
40 | + v-model="formSchool.tenantName" | |
41 | + placeholder="请输入教师姓名" | |
42 | + ></el-input></el-col | |
43 | + ></el-form-item> | |
56 | 44 | <el-form-item label="教师姓名:" prop="contactPerson" |
57 | 45 | ><el-col :span="10" |
58 | 46 | ><el-input |
... | ... | @@ -75,92 +63,95 @@ |
75 | 63 | <el-button @click="editSchool">确 定</el-button> |
76 | 64 | <el-button @click="diaSchool = false">取 消</el-button> |
77 | 65 | </div> |
78 | - </el-dialog> | |
66 | + </el-dialog> | |
67 | + <el-dialog title="修改密码" :visible.sync="diaPass" width="400"> | |
68 | + <el-form | |
69 | + ref="formPass" | |
70 | + class="form-box" | |
71 | + :model="password" | |
72 | + :rules="rulesPassword" | |
73 | + label-width="160px" | |
74 | + > | |
75 | + <el-form-item label="旧密码:" prop="oldPassword" | |
76 | + ><el-col :span="10" | |
77 | + ><el-input | |
78 | + maxlength="30" | |
79 | + v-model="password.oldPassword" | |
80 | + placeholder="请输入密码" | |
81 | + show-password | |
82 | + ></el-input></el-col | |
83 | + ></el-form-item> | |
84 | + <el-form-item label="新密码:" prop="password" | |
85 | + ><el-col :span="10" | |
86 | + ><el-input | |
87 | + maxlength="30" | |
88 | + v-model="password.password" | |
89 | + placeholder="请输入新密码" | |
90 | + show-password | |
91 | + ></el-input></el-col | |
92 | + ></el-form-item> | |
93 | + <el-form-item label="确认密码:" prop="resetPassword" | |
94 | + ><el-col :span="10" | |
95 | + ><el-input | |
96 | + maxlength="30" | |
97 | + v-model="password.resetPassword" | |
98 | + placeholder="请输入新密码" | |
99 | + show-password | |
100 | + ></el-input></el-col | |
101 | + ></el-form-item> | |
102 | + </el-form> | |
103 | + <div class="dialog-footer" slot="footer"> | |
104 | + <el-button @click="editPass">确 定</el-button> | |
105 | + <el-button @click="diaPass = false">取 消</el-button> | |
106 | + </div> | |
107 | + </el-dialog> | |
79 | 108 | </div> |
80 | 109 | </template> |
81 | 110 | |
82 | 111 | <script> |
83 | -import { downloadFile } from "@/utils"; | |
112 | +import { downloadFile, encryptLoginPassword } from "@/utils"; | |
84 | 113 | export default { |
85 | - filters: { | |
86 | - getSections(val) { | |
87 | - let arr = val.split(","); | |
88 | - let sections = arr.map((item) => { | |
89 | - let txt; | |
90 | - switch (item) { | |
91 | - case "0": | |
92 | - txt = "未知"; | |
93 | - break; | |
94 | - case "1": | |
95 | - txt = "小学"; | |
96 | - break; | |
97 | - case "2": | |
98 | - txt = "初中"; | |
99 | - break; | |
100 | - case "3": | |
101 | - txt = "高中"; | |
102 | - break; | |
103 | - case "4": | |
104 | - txt = "大学"; | |
105 | - break; | |
106 | - case "7": | |
107 | - txt = "未知"; | |
108 | - break; | |
109 | - default: | |
110 | - txt = "未知"; | |
111 | - } | |
112 | - return txt; | |
113 | - }); | |
114 | - return sections.join(","); | |
115 | - }, | |
116 | - }, | |
117 | 114 | data() { |
118 | 115 | return { |
119 | 116 | loading: false, |
120 | 117 | diaSchool: false, |
121 | - school: { | |
122 | - schoolName: "", | |
123 | - managePwd: "", | |
118 | + diaPass: false, | |
119 | + Info: { | |
120 | + tenantName: "", | |
124 | 121 | contactPerson: "", |
125 | 122 | contactPhone: "", |
126 | 123 | sections: "", |
127 | 124 | }, |
125 | + password: { | |
126 | + oldPassword: "", | |
127 | + password: "", | |
128 | + resetPassword: "", | |
129 | + }, | |
130 | + rulesPassword: { | |
131 | + oldPassword: [ | |
132 | + { required: true, message: "请输入旧密码", trigger: "blur" }, | |
133 | + ], | |
134 | + password: [ | |
135 | + { required: true, message: "请输入新密码", trigger: "blur" }, | |
136 | + ], | |
137 | + resetPassword: [ | |
138 | + { required: true, message: "请输入新密码", trigger: "blur" }, | |
139 | + ], | |
140 | + }, | |
128 | 141 | tableData: [], |
129 | 142 | formSchool: { |
130 | - sections: "", | |
131 | - managePwd: "", | |
143 | + tenantName: "", | |
132 | 144 | contactPerson: "", |
133 | 145 | contactPhone: "", |
134 | 146 | }, |
135 | - subjectName: "", | |
136 | - subjectList: [], | |
147 | + rulesSchool: {}, | |
137 | 148 | }; |
138 | 149 | }, |
139 | 150 | created() { |
140 | - // this._QueryDataSchool(); | |
141 | - // this._QuerySubject(); | |
151 | + this._QueryData(); | |
142 | 152 | }, |
143 | 153 | methods: { |
144 | - addSubjectName() { | |
145 | - if (!this.subjectName) { | |
146 | - this.$message.warning("请填写科目名称"); | |
147 | - return; | |
148 | - }else if(this.subjectList.includes(this.subjectName)){ | |
149 | - this.$message.warning("科目已存在,请重新填写~"); | |
150 | - return; | |
151 | - } | |
152 | - this.subjectList.push(this.subjectName); | |
153 | - this.subjectName = ""; | |
154 | - }, | |
155 | 154 | editSchool() { |
156 | - if (!this.formSchool.sections.length) { | |
157 | - this.$message.error("请选择科目!"); | |
158 | - return; | |
159 | - } | |
160 | - if (!this.formSchool.managePwd) { | |
161 | - this.$message.error("请填写密码!"); | |
162 | - return; | |
163 | - } | |
164 | 155 | if (this.loading) { |
165 | 156 | return; |
166 | 157 | } |
... | ... | @@ -168,15 +159,14 @@ export default { |
168 | 159 | if (valid) { |
169 | 160 | this.loading = true; |
170 | 161 | let form = { ...this.formSchool }; |
171 | - form.sections = this.formSchool.sections.join(","); | |
172 | - const { data, status, info } = await this.$request.updateSchool({ | |
162 | + const { data, status, info } = await this.$request.modifyInfo({ | |
173 | 163 | ...form, |
174 | 164 | }); |
175 | 165 | this.loading = false; |
176 | 166 | if (status === 0) { |
177 | 167 | this.$message.success("修改成功~"); |
178 | 168 | this.diaSchool = false; |
179 | - this._QueryDataSchool(); | |
169 | + this._QueryData(); | |
180 | 170 | } else { |
181 | 171 | this.$message.error(info); |
182 | 172 | } |
... | ... | @@ -185,25 +175,51 @@ export default { |
185 | 175 | } |
186 | 176 | }); |
187 | 177 | }, |
188 | - async _QueryDataSchool() { | |
178 | + editPass() { | |
179 | + if (this.loading) { | |
180 | + return; | |
181 | + } | |
182 | + this.$refs.formPass.validate(async (valid) => { | |
183 | + if (valid) { | |
184 | + if (this.password.password != this.password.resetPassword) { | |
185 | + this.$message.warning("两次输入密码不一致请检查!"); | |
186 | + return; | |
187 | + } | |
188 | + this.loading = true; | |
189 | + const { data, status, info } = await this.$request.modifyInfo({ | |
190 | + oldPassword: encryptLoginPassword(this.password.oldPassword), | |
191 | + password: encryptLoginPassword(this.password.password), | |
192 | + }); | |
193 | + this.loading = false; | |
194 | + if (status === 0) { | |
195 | + this.$message.success("密码修改成功~"); | |
196 | + this.diaPass = false; | |
197 | + const res = await this.$request.logout(); | |
198 | + this.$store.commit("setToken", ""); | |
199 | + this.$store.commit("setInfo", {}); | |
200 | + this.$store.commit("setRouters", []); | |
201 | + this.$store.commit("resetTabnavBox"); | |
202 | + this.$router.push({ | |
203 | + path: "/login", | |
204 | + }); | |
205 | + } else { | |
206 | + this.$message.error(info); | |
207 | + } | |
208 | + } else { | |
209 | + this.$message.error("数据有误,请检查!"); | |
210 | + } | |
211 | + }); | |
212 | + }, | |
213 | + async _QueryData() { | |
189 | 214 | this.loading = true; |
190 | - const { data, status, info } = await this.$request.schoolDetail(); | |
215 | + const { data, status, info } = await this.$request.getInfo(); | |
191 | 216 | this.loading = false; |
192 | 217 | console.log(status); |
193 | 218 | if (status === 0) { |
194 | - this.school = { ...data }; | |
219 | + this.Info = { ...data }; | |
195 | 220 | for (let key in this.formSchool) { |
196 | 221 | this.formSchool[key] = data[key] || ""; |
197 | 222 | } |
198 | - this.formSchool.sections = this.formSchool.sections.split(","); | |
199 | - } else { | |
200 | - this.$message.error(info); | |
201 | - } | |
202 | - }, | |
203 | - async _QuerySubject() { | |
204 | - const { data, status, info } = await this.$request.subjectList(); | |
205 | - if (status === 0) { | |
206 | - this.subjectList = [...data.subjectNames] || []; | |
207 | 223 | } else { |
208 | 224 | this.$message.error(info); |
209 | 225 | } |
... | ... | @@ -235,6 +251,17 @@ export default { |
235 | 251 | .el-icon-edit { |
236 | 252 | position: absolute; |
237 | 253 | top: 12px; |
254 | + right: 40px; | |
255 | + padding: 5px; | |
256 | + font-size: 18px; | |
257 | + cursor: pointer; | |
258 | + &:hover { | |
259 | + color: #36f; | |
260 | + } | |
261 | + } | |
262 | + .el-icon-key { | |
263 | + position: absolute; | |
264 | + top: 12px; | |
238 | 265 | right: 12px; |
239 | 266 | padding: 5px; |
240 | 267 | font-size: 18px; | ... | ... |