Commit aeac66d4fb3caf29c2e84b36b06502efc29c625f

Authored by 阿宝
1 parent a37317f4

飞书测试bug

src/assets/css/base.css
@@ -20,6 +20,15 @@ a { @@ -20,6 +20,15 @@ a {
20 text-decoration: none; 20 text-decoration: none;
21 } 21 }
22 22
  23 +input[type="number"] {
  24 + -moz-appearance: textfield;
  25 +}
  26 +input[type="number"]::-webkit-inner-spin-button,
  27 +input[type="number"]::-webkit-outer-spin-button {
  28 + -webkit-appearance: none;
  29 + margin: 0;
  30 +}
  31 +
23 /* element-style */ 32 /* element-style */
24 .el-button--default { 33 .el-button--default {
25 color: #667ffd; 34 color: #667ffd;
@@ -31,7 +40,7 @@ a { @@ -31,7 +40,7 @@ a {
31 border-color: #667ffd; 40 border-color: #667ffd;
32 } 41 }
33 42
34 -.el-radio__input.is-checked+.el-radio__label { 43 +.el-radio__input.is-checked + .el-radio__label {
35 color: #667ffd; 44 color: #667ffd;
36 } 45 }
37 46
@@ -41,5 +50,5 @@ a { @@ -41,5 +50,5 @@ a {
41 } 50 }
42 51
43 .el-message-box .el-button--default { 52 .el-message-box .el-button--default {
44 - color: #fff 53 + color: #fff;
45 } 54 }
src/store/index.js
@@ -4,6 +4,7 @@ import Cookies from "js-cookie"; @@ -4,6 +4,7 @@ import Cookies from "js-cookie";
4 import layoutStore from "./modules/layout/index"; 4 import layoutStore from "./modules/layout/index";
5 import { defaultRouter } from "@/router/index"; 5 import { defaultRouter } from "@/router/index";
6 import { encryptLoginPassword } from "@/utils"; 6 import { encryptLoginPassword } from "@/utils";
  7 +import { Message } from "element-ui";
7 8
8 import request from "@/api/index"; 9 import request from "@/api/index";
9 import router from "@/router/index"; 10 import router from "@/router/index";
@@ -69,25 +70,41 @@ const store = new Vuex.Store({ @@ -69,25 +70,41 @@ const store = new Vuex.Store({
69 let response = res; 70 let response = res;
70 if (response.status == 0) { 71 if (response.status == 0) {
71 const userInfo = { ...response.data }; 72 const userInfo = { ...response.data };
72 - userInfo.showRoleName = response.data.permissions[0]?.roleName;  
73 - commit("setToken", "isLogin");  
74 - commit("setInfo", { ...userInfo });  
75 - commit("setRouters", [...userInfo.permissions[0]?.authorityRouter]);  
76 - state.addRouters.forEach((res) => {  
77 - router.addRoute(res);  
78 - });  
79 - router.addRoute({  
80 - path: "*",  
81 - redirect: "/404",  
82 - hidden: true,  
83 - children: [],  
84 - });  
85 - console.log(Cookies.get("ZT_YIJIAO_TOKEN"));  
86 - if (params.url) {  
87 - window.location.href = params.url; 73 + if (userInfo.permissions && userInfo.permissions.length) {
  74 + userInfo.showRoleName = response.data.permissions[0]?.roleName;
  75 + commit("setToken", "isLogin");
  76 + commit("setInfo", { ...userInfo });
  77 + commit("setRouters", [
  78 + ...userInfo.permissions[0]?.authorityRouter,
  79 + ]);
  80 + state.addRouters.forEach((res) => {
  81 + router.addRoute(res);
  82 + });
  83 + router.addRoute({
  84 + path: "*",
  85 + redirect: "/404",
  86 + hidden: true,
  87 + children: [],
  88 + });
  89 + console.log(Cookies.get("ZT_YIJIAO_TOKEN"));
  90 + if (params.url) {
  91 + window.location.href = params.url;
  92 + } else {
  93 + router.push({ path: "/" });
  94 + }
88 } else { 95 } else {
89 - router.push({ path: "/" }); 96 + Message({
  97 + message: "该账号暂无权限,请联系管理员~",
  98 + type: "error",
  99 + duration: 3 * 1000,
  100 + });
90 } 101 }
  102 + } else {
  103 + Message({
  104 + message: response.info,
  105 + type: "error",
  106 + duration: 3 * 1000,
  107 + });
91 } 108 }
92 }) 109 })
93 .catch(() => {}); 110 .catch(() => {});
@@ -98,7 +115,7 @@ const store = new Vuex.Store({ @@ -98,7 +115,7 @@ const store = new Vuex.Store({
98 let authorityRouterObj = userInfo.permissions.filter((item) => { 115 let authorityRouterObj = userInfo.permissions.filter((item) => {
99 return item.role == role; 116 return item.role == role;
100 }); 117 });
101 - userInfo.showRoleName = authorityRouterObj[0]?.roleName 118 + userInfo.showRoleName = authorityRouterObj[0]?.roleName;
102 commit("setInfo", userInfo); 119 commit("setInfo", userInfo);
103 commit("setRouters", [...authorityRouterObj[0]?.authorityRouter]); 120 commit("setRouters", [...authorityRouterObj[0]?.authorityRouter]);
104 state.addRouters.forEach((res) => { 121 state.addRouters.forEach((res) => {
src/views/down/client.vue
@@ -56,7 +56,7 @@ @@ -56,7 +56,7 @@
56 </div> 56 </div>
57 </div> 57 </div>
58 <div class="form-box"> 58 <div class="form-box">
59 - <el-form :model="formData" :rules="ruleForm" label-width="180px"> 59 + <el-form :model="formData" label-width="180px">
60 <el-form-item label="主菜单设置:" prop="configName" v-if="type == 1"> 60 <el-form-item label="主菜单设置:" prop="configName" v-if="type == 1">
61 <el-col :span="12"> 61 <el-col :span="12">
62 <el-input 62 <el-input
@@ -153,13 +153,14 @@ @@ -153,13 +153,14 @@
153 <el-radio :label="2">老师选择</el-radio> 153 <el-radio :label="2">老师选择</el-radio>
154 </el-radio-group> 154 </el-radio-group>
155 <el-input-number 155 <el-input-number
  156 + v-show="formData.viesAnswerSet != 2"
156 size="small" 157 size="small"
157 class="count-down" 158 class="count-down"
158 v-model="formData.countdown" 159 v-model="formData.countdown"
159 :step="1" 160 :step="1"
160 :step-strictly="true" 161 :step-strictly="true"
161 ></el-input-number 162 ></el-input-number
162 - > 163 + > <span v-show="formData.viesAnswerSet != 2">秒</span>
163 </el-form-item> 164 </el-form-item>
164 <el-form-item label="抽答设置:" prop="ballotAnswerSet"> 165 <el-form-item label="抽答设置:" prop="ballotAnswerSet">
165 <el-radio-group v-model="formData.ballotAnswerSet"> 166 <el-radio-group v-model="formData.ballotAnswerSet">
@@ -179,11 +180,11 @@ @@ -179,11 +180,11 @@
179 ></el-input-number 180 ></el-input-number
180 >个 181 >个
181 </el-form-item> 182 </el-form-item>
182 - <el-form-item label="多选题选项默认个数:" prop="countdown"> 183 + <el-form-item label="多选题选项默认个数:" prop="multipleChoiceNum">
183 <el-input-number 184 <el-input-number
184 size="small" 185 size="small"
185 class="count-down count-down2" 186 class="count-down count-down2"
186 - v-model="formData.countdown" 187 + v-model="formData.multipleChoiceNum"
187 :min="2" 188 :min="2"
188 :max="7" 189 :max="7"
189 :step="1" 190 :step="1"
@@ -196,8 +197,8 @@ @@ -196,8 +197,8 @@
196 size="small" 197 size="small"
197 class="count-down count-down2" 198 class="count-down count-down2"
198 v-model="formData.singleTypeNum" 199 v-model="formData.singleTypeNum"
199 - :min="1"  
200 - :max="100" 200 + :min="2"
  201 + :max="25"
201 :step="1" 202 :step="1"
202 :step-strictly="true" 203 :step-strictly="true"
203 ></el-input-number 204 ></el-input-number
@@ -275,7 +276,7 @@ const defaultForm = { @@ -275,7 +276,7 @@ const defaultForm = {
275 ballotAnswerSet: 0, 276 ballotAnswerSet: 0,
276 singleChoiceNum: 4, 277 singleChoiceNum: 4,
277 multipleChoiceNum: 4, 278 multipleChoiceNum: 4,
278 - singleTypeNum: 20, 279 + singleTypeNum: 25,
279 askCountdown: 30, 280 askCountdown: 30,
280 examsDuration: 5400, 281 examsDuration: 5400,
281 displayModel: 0, 282 displayModel: 0,
@@ -325,7 +326,7 @@ export default { @@ -325,7 +326,7 @@ export default {
325 ballotAnswerSet: 0, 326 ballotAnswerSet: 0,
326 singleChoiceNum: 4, 327 singleChoiceNum: 4,
327 multipleChoiceNum: 4, 328 multipleChoiceNum: 4,
328 - singleTypeNum: 20, 329 + singleTypeNum: 25,
329 askCountdown: 30, 330 askCountdown: 30,
330 examsDuration: 90, 331 examsDuration: 90,
331 displayModel: 0, 332 displayModel: 0,
src/views/examinationPaper/add.vue
@@ -159,7 +159,7 @@ @@ -159,7 +159,7 @@
159 <div class="qs-num">题号</div> 159 <div class="qs-num">题号</div>
160 <div class="qs-type">题型</div> 160 <div class="qs-type">题型</div>
161 <div class="qs-score">分数</div> 161 <div class="qs-score">分数</div>
162 - <div class="qs-partScore">部分分值</div> 162 + <div class="qs-partScore">漏选得分</div>
163 <div class="qs-options">选项设置</div> 163 <div class="qs-options">选项设置</div>
164 <div class="qs-set">操作</div> 164 <div class="qs-set">操作</div>
165 </li> 165 </li>
@@ -172,7 +172,7 @@ @@ -172,7 +172,7 @@
172 <div class="qs-type"> 172 <div class="qs-type">
173 <el-select 173 <el-select
174 v-model="subQuestions.questionType" 174 v-model="subQuestions.questionType"
175 - placeholder="选择答题卡类型" 175 + placeholder="选择题目类型"
176 @change="changeSubQuestions($event, subQuestions)" 176 @change="changeSubQuestions($event, subQuestions)"
177 > 177 >
178 <el-option label="单选题" :value="2"></el-option> 178 <el-option label="单选题" :value="2"></el-option>
@@ -203,7 +203,7 @@ @@ -203,7 +203,7 @@
203 :max="subQuestions.score" 203 :max="subQuestions.score"
204 :step="0.5" 204 :step="0.5"
205 v-model="subQuestions.partScore" 205 v-model="subQuestions.partScore"
206 - label="部分分值" 206 + label="漏选得分"
207 ></el-input-number> 207 ></el-input-number>
208 </div> 208 </div>
209 <div class="qs-options"> 209 <div class="qs-options">
@@ -260,7 +260,7 @@ @@ -260,7 +260,7 @@
260 <div class="qs-type"> 260 <div class="qs-type">
261 <el-select 261 <el-select
262 v-model="addSubQuestionsType" 262 v-model="addSubQuestionsType"
263 - placeholder="选择答题卡类型" 263 + placeholder="选择题目类型"
264 @change="changeAddSubQuestions($event, question)" 264 @change="changeAddSubQuestions($event, question)"
265 > 265 >
266 <el-option label="单选题" :value="2"></el-option> 266 <el-option label="单选题" :value="2"></el-option>
@@ -365,6 +365,7 @@ @@ -365,6 +365,7 @@
365 <div class="qs-num">题号</div> 365 <div class="qs-num">题号</div>
366 <div class="qs-type">题型</div> 366 <div class="qs-type">题型</div>
367 <div class="qs-score">分数</div> 367 <div class="qs-score">分数</div>
  368 + <div class="qs-partScore">漏选得分</div>
368 <div class="qs-options qs-options2">选项设置</div> 369 <div class="qs-options qs-options2">选项设置</div>
369 </li> 370 </li>
370 <li 371 <li
@@ -387,6 +388,20 @@ @@ -387,6 +388,20 @@
387 label="单题分值" 388 label="单题分值"
388 ></el-input-number> 389 ></el-input-number>
389 </div> 390 </div>
  391 + <div class="qs-partScore">
  392 + <p v-if="subQuestions.questionType != 3">--</p>
  393 + <el-input-number
  394 + class="number-ipt"
  395 + v-else
  396 + size="medium"
  397 + :min="0"
  398 + :precision="2"
  399 + :max="subQuestions.score"
  400 + :step="0.5"
  401 + v-model="subQuestions.partScore"
  402 + label="漏选得分"
  403 + ></el-input-number>
  404 + </div>
390 <div class="qs-options qs-options2"> 405 <div class="qs-options qs-options2">
391 <p v-if="subQuestions.questionType == 5">--</p> 406 <p v-if="subQuestions.questionType == 5">--</p>
392 <p v-if="subQuestions.questionType == 4" class="answer-box"> 407 <p v-if="subQuestions.questionType == 4" class="answer-box">
@@ -509,7 +524,7 @@ export default { @@ -509,7 +524,7 @@ export default {
509 gradeName: "", 524 gradeName: "",
510 subjectName: "", 525 subjectName: "",
511 examsDuration: 90, 526 examsDuration: 90,
512 - sharingType: 1, 527 + sharingType: 0,
513 questionList: [], 528 questionList: [],
514 }, 529 },
515 formRules: { 530 formRules: {
@@ -801,7 +816,8 @@ export default { @@ -801,7 +816,8 @@ export default {
801 tag: this.answerTypeName, 816 tag: this.answerTypeName,
802 }); 817 });
803 if (status == 0) { 818 if (status == 0) {
804 - this._TypeList(); 819 + await this._TypeList();
  820 + this.form.tagId = data || "";
805 this.dialogVisible = false; 821 this.dialogVisible = false;
806 this.answerTypeName = ""; 822 this.answerTypeName = "";
807 this.$message.success("添加成功"); 823 this.$message.success("添加成功");
@@ -853,7 +869,7 @@ export default { @@ -853,7 +869,7 @@ export default {
853 }; 869 };
854 }) || []; 870 }) || [];
855 if (this.type != 2) { 871 if (this.type != 2) {
856 - this.form.tagId = this.answerTypeList[0].id || ""; 872 + this.form.tagId = this.answerTypeList[0]?.id || "";
857 } 873 }
858 } else { 874 } else {
859 this.$message.error(info); 875 this.$message.error(info);
src/views/examinationPaper/index.vue
@@ -5,15 +5,9 @@ @@ -5,15 +5,9 @@
5 <span>备题组卷</span> 5 <span>备题组卷</span>
6 </template> 6 </template>
7 <template slot="btns"> 7 <template slot="btns">
8 - <el-tooltip effect="dark" content="创建答题卡" placement="left">  
9 - <el-button  
10 - type="primary"  
11 - icon="el-icon-plus"  
12 - plain  
13 - circle  
14 - @click="toAdd({})"  
15 - ></el-button>  
16 - </el-tooltip> 8 + <el-button type="primary" size="mini" icon="el-icon-plus" plain @click="toAdd({})">
  9 + 添加答题卡</el-button
  10 + >
17 </template> 11 </template>
18 </back-box> 12 </back-box>
19 13
@@ -255,9 +249,9 @@ export default { @@ -255,9 +249,9 @@ export default {
255 break; 249 break;
256 } 250 }
257 }, 251 },
258 - changePage(page){  
259 - this.page = page  
260 - this._QueryData(this.query.title) 252 + changePage(page) {
  253 + this.page = page;
  254 + this._QueryData(this.query.title);
261 }, 255 },
262 async saveShare() { 256 async saveShare() {
263 //修改分享范围 257 //修改分享范围
@@ -270,6 +264,7 @@ export default { @@ -270,6 +264,7 @@ export default {
270 this.shareForm.sharingType = 1; 264 this.shareForm.sharingType = 1;
271 this.dialogVisible = false; 265 this.dialogVisible = false;
272 this.$message.success(info); 266 this.$message.success(info);
  267 + this._QueryData(this.query.title == "");
273 } else { 268 } else {
274 this.$message.error(info); 269 this.$message.error(info);
275 } 270 }
src/views/setUp/account.vue
@@ -84,7 +84,7 @@ @@ -84,7 +84,7 @@
84 </el-table-column> 84 </el-table-column>
85 <el-table-column prop="available" label="状态" align="center" 85 <el-table-column prop="available" label="状态" align="center"
86 ><template slot-scope="scoped">{{ 86 ><template slot-scope="scoped">{{
87 - `${scoped.row.available == 0 ? "可用" : "不可用"}` 87 + `${scoped.row.available == 0 ? "正常" : "禁用"}`
88 }}</template></el-table-column 88 }}</template></el-table-column
89 > 89 >
90 <el-table-column 90 <el-table-column
@@ -143,7 +143,7 @@ @@ -143,7 +143,7 @@
143 :image-size="100" 143 :image-size="100"
144 ></el-empty> 144 ></el-empty>
145 </div> 145 </div>
146 - <el-dialog title="修改年级信息" :visible.sync="diaCount" width="400"> 146 + <el-dialog title="修改账号信息" :visible.sync="diaCount" width="400">
147 <el-form 147 <el-form
148 class="form-box" 148 class="form-box"
149 :model="formCount" 149 :model="formCount"
src/views/setUp/student.vue
@@ -126,12 +126,12 @@ @@ -126,12 +126,12 @@
126 </el-form-item> 126 </el-form-item>
127 <el-form-item label="长学号:" prop="studentCode"> 127 <el-form-item label="长学号:" prop="studentCode">
128 <el-col :span="10"> 128 <el-col :span="10">
129 - <el-input maxlength="30" v-model.trim="formStu.studentCode" /> 129 + <el-input maxlength="12" v-model.trim="formStu.studentCode" />
130 </el-col> 130 </el-col>
131 </el-form-item> 131 </el-form-item>
132 <el-form-item label="短学号:"> 132 <el-form-item label="短学号:">
133 <el-col :span="10"> 133 <el-col :span="10">
134 - <el-input maxlength="30" v-model.trim="formStu.shortNumber" /> 134 + <el-input maxlength="12" v-model.trim="formStu.shortNumber" />
135 </el-col> 135 </el-col>
136 </el-form-item> 136 </el-form-item>
137 <el-form-item label="性别:"> 137 <el-form-item label="性别:">
@@ -142,7 +142,7 @@ @@ -142,7 +142,7 @@
142 </el-form-item> 142 </el-form-item>
143 <el-form-item label="答题器编码:"> 143 <el-form-item label="答题器编码:">
144 <el-col :span="10"> 144 <el-col :span="10">
145 - <el-input maxlength="30" v-model.trim="formStu.clickerSn" /> 145 + <el-input maxlength="8" v-model.trim="formStu.clickerSn" />
146 </el-col> 146 </el-col>
147 </el-form-item> 147 </el-form-item>
148 </el-form> 148 </el-form>
@@ -296,6 +296,7 @@ export default { @@ -296,6 +296,7 @@ export default {
296 if (status === 0) { 296 if (status === 0) {
297 this.$message.success("删除成功"); 297 this.$message.success("删除成功");
298 this.studentList.splice(index, 1); 298 this.studentList.splice(index, 1);
  299 + this._QueryClass()
299 } else { 300 } else {
300 this.$message.error(info); 301 this.$message.error(info);
301 } 302 }
@@ -322,6 +323,7 @@ export default { @@ -322,6 +323,7 @@ export default {
322 if (status === 0) { 323 if (status === 0) {
323 this.$message.success(info); 324 this.$message.success(info);
324 this.diaStu = false; 325 this.diaStu = false;
  326 + this._QueryClass()
325 this._QueryData(); 327 this._QueryData();
326 } else { 328 } else {
327 this.$message.error(info); 329 this.$message.error(info);
@@ -340,6 +342,8 @@ export default { @@ -340,6 +342,8 @@ export default {
340 } else if (type == 3) { 342 } else if (type == 3) {
341 this.query.studentName = ""; 343 this.query.studentName = "";
342 this.query.studentCode = ""; 344 this.query.studentCode = "";
  345 + }else{
  346 + query = this.query
343 } 347 }
344 this.loading = true; 348 this.loading = true;
345 const { data, status, info } = await this.$request.studentList({ 349 const { data, status, info } = await this.$request.studentList({
src/views/setUp/teacher.vue
@@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
48 placeholder="请输入老师姓名" 48 placeholder="请输入老师姓名"
49 v-model="query.teacherName" 49 v-model="query.teacherName"
50 class="input-with-select" 50 class="input-with-select"
  51 + maxlength="30"
51 @keyup.enter.native="_QueryData(2)" 52 @keyup.enter.native="_QueryData(2)"
52 > 53 >
53 <el-button 54 <el-button
@@ -60,6 +61,7 @@ @@ -60,6 +61,7 @@
60 type="number" 61 type="number"
61 placeholder="请输入老师手机号" 62 placeholder="请输入老师手机号"
62 v-model="query.phone" 63 v-model="query.phone"
  64 + maxlength="11"
63 class="input-with-select" 65 class="input-with-select"
64 @keyup.enter.native="_QueryData(3)" 66 @keyup.enter.native="_QueryData(3)"
65 > 67 >
@@ -578,13 +580,22 @@ export default { @@ -578,13 +580,22 @@ export default {
578 this.query.teacherName = ""; 580 this.query.teacherName = "";
579 this.query.phone = ""; 581 this.query.phone = "";
580 } else if (type == 2) { 582 } else if (type == 2) {
  583 + if(this.query.teacherName == ""){
  584 + this.$message.warning('请输入老师姓名')
  585 + return
  586 + }
581 query.teacherName = this.query.teacherName; 587 query.teacherName = this.query.teacherName;
582 this.query.gradeName = ""; 588 this.query.gradeName = "";
583 this.query.phone = ""; 589 this.query.phone = "";
584 } else if (type == 3) { 590 } else if (type == 3) {
  591 + if(this.query.phone == ""){
  592 + this.$message.warning('请输入老师手机')
  593 + return
  594 + }
585 query.phone = this.query.phone; 595 query.phone = this.query.phone;
586 this.query.teacherName = ""; 596 this.query.teacherName = "";
587 this.query.gradeName = ""; 597 this.query.gradeName = "";
  598 +
588 } else if (type == 10) { 599 } else if (type == 10) {
589 query = { ...this.query }; 600 query = { ...this.query };
590 } 601 }