Commit ead476dde3ee1f3851870933ba75ee0a19ba2bd4
1 parent
627f3fff
fix:最终定版
Showing
15 changed files
with
309 additions
and
222 deletions
src/App.vue
@@ -22,9 +22,10 @@ export default { | @@ -22,9 +22,10 @@ export default { | ||
22 | 22 | ||
23 | const docHeight = document.body.clientHeight; | 23 | const docHeight = document.body.clientHeight; |
24 | 24 | ||
25 | - const docWidth = document.body.clientWidth; | ||
26 | - | ||
27 | - if (docWidth < 1700) { | 25 | + const docWidth = document.body.clientWidth; |
26 | + | ||
27 | + if (docWidth < 1700) { | ||
28 | + | ||
28 | const currentScale = docHeight / docWidth; | 29 | const currentScale = docHeight / docWidth; |
29 | 30 | ||
30 | let [scale, translate] = [0, 0]; | 31 | let [scale, translate] = [0, 0]; |
@@ -51,22 +52,56 @@ export default { | @@ -51,22 +52,56 @@ export default { | ||
51 | offsetHeight > 0 ? `translate(0, ${offsetHeight / 2}px)` : ""; | 52 | offsetHeight > 0 ? `translate(0, ${offsetHeight / 2}px)` : ""; |
52 | } | 53 | } |
53 | 54 | ||
54 | - if (docHeight <= 700) { | 55 | + if (docHeight <= 600) { |
56 | + | ||
57 | + $app.style.cssText = ` | ||
58 | + transform: scale(${scale}) ${translate}; | ||
59 | + transform-origin: top left; | ||
60 | + min-width: 1920px; | ||
61 | + min-height:830px; | ||
62 | + `; | ||
63 | + } | ||
64 | + else if (docHeight == 610) { | ||
65 | + $app.style.cssText = ` | ||
66 | + transform: scale(${scale}) ${translate}; | ||
67 | + transform-origin: top left; | ||
68 | + min-width: 1920px; | ||
69 | + min-height:885px; | ||
70 | + `; | ||
71 | + } | ||
72 | + else if (docHeight <= 606) { | ||
73 | + $app.style.cssText = ` | ||
74 | + transform: scale(${scale}) ${translate}; | ||
75 | + transform-origin: top left; | ||
76 | + min-width: 1920px; | ||
77 | + min-height:850px; | ||
78 | + `; | ||
79 | + } | ||
80 | + else if (docHeight <= 650) { | ||
81 | + | ||
82 | + $app.style.cssText = ` | ||
83 | + transform: scale(${scale}) ${translate}; | ||
84 | + transform-origin: top left; | ||
85 | + min-width: 1920px; | ||
86 | + min-height:850px; | ||
87 | + `; | ||
88 | + } | ||
89 | + else if (docHeight <= 700) { | ||
55 | 90 | ||
56 | $app.style.cssText = ` | 91 | $app.style.cssText = ` |
57 | transform: scale(${scale}) ${translate}; | 92 | transform: scale(${scale}) ${translate}; |
58 | transform-origin: top left; | 93 | transform-origin: top left; |
59 | min-width: 1920px; | 94 | min-width: 1920px; |
60 | - min-height: 885px; | 95 | + min-height: 890px; |
61 | `; | 96 | `; |
62 | } | 97 | } |
63 | - else if (docHeight <= 780) { | 98 | + else if (docHeight <= 750) { |
64 | 99 | ||
65 | $app.style.cssText = ` | 100 | $app.style.cssText = ` |
66 | transform: scale(${scale}) ${translate}; | 101 | transform: scale(${scale}) ${translate}; |
67 | transform-origin: top left; | 102 | transform-origin: top left; |
68 | min-width: 1920px; | 103 | min-width: 1920px; |
69 | - min-height:910px; | 104 | + min-height: 910px; |
70 | `; | 105 | `; |
71 | } | 106 | } |
72 | else { | 107 | else { |
src/assets/css/index.scss
@@ -498,7 +498,7 @@ ul { | @@ -498,7 +498,7 @@ ul { | ||
498 | .flex-btn { | 498 | .flex-btn { |
499 | position: fixed !important; | 499 | position: fixed !important; |
500 | z-index: 999 !important; | 500 | z-index: 999 !important; |
501 | - bottom: 30px !important; | 501 | + bottom: 0px !important; |
502 | padding: 10px 10px !important; | 502 | padding: 10px 10px !important; |
503 | right: 0px !important; | 503 | right: 0px !important; |
504 | background-color: white !important; | 504 | background-color: white !important; |
@@ -514,7 +514,7 @@ ul { | @@ -514,7 +514,7 @@ ul { | ||
514 | .flex-btn { | 514 | .flex-btn { |
515 | position: fixed !important; | 515 | position: fixed !important; |
516 | z-index: 999 !important; | 516 | z-index: 999 !important; |
517 | - bottom: 30px !important; | 517 | + bottom: -4px !important; |
518 | padding: 10px 10px !important; | 518 | padding: 10px 10px !important; |
519 | right: 0px !important; | 519 | right: 0px !important; |
520 | background-color: white !important; | 520 | background-color: white !important; |
@@ -541,11 +541,13 @@ ul { | @@ -541,11 +541,13 @@ ul { | ||
541 | 541 | ||
542 | 542 | ||
543 | @media screen and (max-width: 1920px) { | 543 | @media screen and (max-width: 1920px) { |
544 | - * :not(.p1, .fa, .el-button, .el-icon-upload, h1, h2, h3, h4, h5, h6, .el-progress__text) { | 544 | + * :not(.p1, .fa, .el-button, .el-icon-upload, h1, h2, h3, h4, h5, h6, .el-progress__text, .text-radius) { |
545 | 545 | ||
546 | font-size: 18px !important; | 546 | font-size: 18px !important; |
547 | 547 | ||
548 | - | 548 | + .text-radius *{ |
549 | + font-size: 16px !important; | ||
550 | + } | ||
549 | 551 | ||
550 | .default-body-detail * { | 552 | .default-body-detail * { |
551 | font-size: 15px !important; | 553 | font-size: 15px !important; |
@@ -576,11 +578,15 @@ ul { | @@ -576,11 +578,15 @@ ul { | ||
576 | } | 578 | } |
577 | 579 | ||
578 | @media screen and (min-width: 1921px) { | 580 | @media screen and (min-width: 1921px) { |
579 | - * :not(.p1, .fa, .el-button, .el-icon-upload, h1, h2, h3, h4, h5, h6, .el-progress__text) { | 581 | + * :not(.p1, .fa, .el-button, .el-icon-upload, h1, h2, h3, h4, h5, h6, .el-progress__text, .text-radius) { |
580 | 582 | ||
581 | font-size: 14px !important; | 583 | font-size: 14px !important; |
582 | 584 | ||
583 | - .default-body-detail * { | 585 | + .text-radius * { |
586 | + font-size: 14px !important; | ||
587 | + } | ||
588 | + | ||
589 | + .default-body-detail * { | ||
584 | font-size: 13px !important; | 590 | font-size: 13px !important; |
585 | 591 | ||
586 | .cell { | 592 | .cell { |
@@ -591,7 +597,7 @@ ul { | @@ -591,7 +597,7 @@ ul { | ||
591 | 597 | ||
592 | .default-body .default-filter * { | 598 | .default-body .default-filter * { |
593 | line-height: 38px !important; | 599 | line-height: 38px !important; |
594 | - } | 600 | + } |
595 | 601 | ||
596 | .card-content { | 602 | .card-content { |
597 | width: 48% !important; | 603 | width: 48% !important; |
src/config/index.js
1 | const modeUrl = { | 1 | const modeUrl = { |
2 | // 开发环境 | 2 | // 开发环境 |
3 | development: { | 3 | development: { |
4 | - baseURL: "/api/", | 4 | + baseURL: "/", |
5 | authBaseURL: "", | 5 | authBaseURL: "", |
6 | $cdn:"" | 6 | $cdn:"" |
7 | }, | 7 | }, |
8 | // 生产环境 | 8 | // 生产环境 |
9 | production: { | 9 | production: { |
10 | - baseURL: "/api/", | 10 | + baseURL: "/", |
11 | authBaseURL: "", | 11 | authBaseURL: "", |
12 | $cdn:"" | 12 | $cdn:"" |
13 | }, | 13 | }, |
src/store/index.js
@@ -67,9 +67,11 @@ const store = new Vuex.Store({ | @@ -67,9 +67,11 @@ const store = new Vuex.Store({ | ||
67 | } | 67 | } |
68 | return null; | 68 | return null; |
69 | }); | 69 | }); |
70 | + | ||
70 | state.addRouters = aRouters; // 保存动态路由用来addRouter | 71 | state.addRouters = aRouters; // 保存动态路由用来addRouter |
71 | state.routers = defaultRouter.concat(aRouters); // 所有有权限的路由表,用来生成菜单列表 | 72 | state.routers = defaultRouter.concat(aRouters); // 所有有权限的路由表,用来生成菜单列表 |
72 | localStorage.setItem("addRouters", JSON.stringify(routers)); | 73 | localStorage.setItem("addRouters", JSON.stringify(routers)); |
74 | + console.log('routers',state) | ||
73 | }, | 75 | }, |
74 | setTokenSources(state, data) { | 76 | setTokenSources(state, data) { |
75 | if (data instanceof Array) { | 77 | if (data instanceof Array) { |
src/views/basic/askTestQuestion/components/askSummaryReport.vue
@@ -306,8 +306,7 @@ export default { | @@ -306,8 +306,7 @@ export default { | ||
306 | _export() { | 306 | _export() { |
307 | this.diaShow = true; | 307 | this.diaShow = true; |
308 | }, | 308 | }, |
309 | - _print() { | ||
310 | - | 309 | + _print() { |
311 | let title = this.detail.title || this.subjectNames?.join(); | 310 | let title = this.detail.title || this.subjectNames?.join(); |
312 | tablePrint({ | 311 | tablePrint({ |
313 | id: "print-content", | 312 | id: "print-content", |
@@ -473,6 +472,8 @@ export default { | @@ -473,6 +472,8 @@ export default { | ||
473 | this.singleSubjectSummary = periodListReponse.data.list; | 472 | this.singleSubjectSummary = periodListReponse.data.list; |
474 | 473 | ||
475 | this.total = periodListReponse.data.count; | 474 | this.total = periodListReponse.data.count; |
475 | + | ||
476 | + this.exportStudent = [...this.singleSubjectSummary]; | ||
476 | }, | 477 | }, |
477 | async _studentPerformance() { | 478 | async _studentPerformance() { |
478 | 479 |
src/views/basic/askTestQuestion/detail.vue
@@ -17,16 +17,13 @@ | @@ -17,16 +17,13 @@ | ||
17 | <el-option v-for="(item, index) in types" :lable="item.name" :key="index" :value="item.name" /> | 17 | <el-option v-for="(item, index) in types" :lable="item.name" :key="index" :value="item.name" /> |
18 | </el-select> | 18 | </el-select> |
19 | <div style="float: right;"> | 19 | <div style="float: right;"> |
20 | - <span v-if="(dataType == '2' && currentType == '测验成绩单') || | ||
21 | - (dataType == '2' && currentType == '试题分析') || | ||
22 | - (dataType == '3' && currentType == '学生成绩排名')"> | 20 | + <span v-if="(dataType == '2' && currentType == '测验成绩单') || (dataType == '2' && currentType == '试题分析') "> |
23 | 单题低分率: | 21 | 单题低分率: |
24 | <el-input-number class="parent-number" v-model="lowLevel" :min="1" :max="100" label="低分率"> | 22 | <el-input-number class="parent-number" v-model="lowLevel" :min="1" :max="100" label="低分率"> |
25 | </el-input-number> | 23 | </el-input-number> |
26 | </span> | 24 | </span> |
27 | 25 | ||
28 | - <el-button v-if="(dataType == '3' && currentType == '班级对比情况表') || | ||
29 | - (dataType == '3' && currentType == '学生成绩排名')" @click="_studentLevelSet" | 26 | + <el-button v-if="(dataType == '3' && currentType == '班级对比情况表') || (dataType == '3' && currentType == '学生成绩排名')" @click="_studentLevelSet" |
30 | class="green-el-button"> | 27 | class="green-el-button"> |
31 | 设置学生成绩等级 | 28 | 设置学生成绩等级 |
32 | </el-button> | 29 | </el-button> |
@@ -405,6 +402,7 @@ | @@ -405,6 +402,7 @@ | ||
405 | {{ scoped.row.missPeopleNumber }}</span> 人 | 402 | {{ scoped.row.missPeopleNumber }}</span> 人 |
406 | </span> | 403 | </span> |
407 | <span style="margin: 10px 0;" | 404 | <span style="margin: 10px 0;" |
405 | + v-if="item.students && item.students?.length >= 1" | ||
408 | v-for="(item, index) in scoped.row.details.filter(item => item.option.indexOf('未答') < 0 && !item.right)"> | 406 | v-for="(item, index) in scoped.row.details.filter(item => item.option.indexOf('未答') < 0 && !item.right)"> |
409 | 选{{ item.option }}:{{ item.students.join("/") }} | 407 | 选{{ item.option }}:{{ item.students.join("/") }} |
410 | </span> | 408 | </span> |
@@ -1650,7 +1648,7 @@ export default { | @@ -1650,7 +1648,7 @@ export default { | ||
1650 | 1648 | ||
1651 | var missCount = 0; | 1649 | var missCount = 0; |
1652 | 1650 | ||
1653 | - var missI = questionList[i].details.filter(item => !item.right); | 1651 | + var missI = questionList[i].details.filter(item => item.option.indexOf('未答') < 0 && !item.right); |
1654 | 1652 | ||
1655 | missI.forEach(itemsa => { | 1653 | missI.forEach(itemsa => { |
1656 | missCount = Number(missCount) + Number(itemsa.students?.length ?? 0) | 1654 | missCount = Number(missCount) + Number(itemsa.students?.length ?? 0) |
src/views/basic/askTestQuestion/gradeAnalysisDetail.vue
@@ -182,7 +182,7 @@ | @@ -182,7 +182,7 @@ | ||
182 | <span>总计 <span style="color:red;"> | 182 | <span>总计 <span style="color:red;"> |
183 | {{ scoped.row.missPeopleNumber }}</span> 人 | 183 | {{ scoped.row.missPeopleNumber }}</span> 人 |
184 | </span> | 184 | </span> |
185 | - <span style="margin: 10px 0;" | 185 | + <span style="margin: 10px 0;" v-if="item.students && item.students?.length >= 1" |
186 | v-for="(item, index) in scoped.row.details.filter(item => item.option.indexOf('未答') < 0 && !item.right)"> | 186 | v-for="(item, index) in scoped.row.details.filter(item => item.option.indexOf('未答') < 0 && !item.right)"> |
187 | 选{{ item.option }}:{{ item.students.join("/") }} | 187 | 选{{ item.option }}:{{ item.students.join("/") }} |
188 | </span> | 188 | </span> |
@@ -1044,7 +1044,7 @@ export default { | @@ -1044,7 +1044,7 @@ export default { | ||
1044 | 1044 | ||
1045 | var missCount = 0; | 1045 | var missCount = 0; |
1046 | 1046 | ||
1047 | - var missI = questionList[i].details.filter(item => !item.right); | 1047 | + var missI = questionList[i].details.filter(item => item.option.indexOf('未答') < 0 && !item.right); |
1048 | 1048 | ||
1049 | missI.forEach(itemsa => { | 1049 | missI.forEach(itemsa => { |
1050 | missCount = Number(missCount) + Number(itemsa.students?.length ?? 0) | 1050 | missCount = Number(missCount) + Number(itemsa.students?.length ?? 0) |
src/views/basic/askTestQuestion/index.vue
@@ -40,7 +40,7 @@ | @@ -40,7 +40,7 @@ | ||
40 | </el-radio-group> | 40 | </el-radio-group> |
41 | </div> | 41 | </div> |
42 | <el-main> | 42 | <el-main> |
43 | - <div style='position: relative;'> | 43 | + <div class="paper-list"> |
44 | <el-tabs v-model="tabType" v-loading="queryLoading" type="card" class="default-tabs"> | 44 | <el-tabs v-model="tabType" v-loading="queryLoading" type="card" class="default-tabs"> |
45 | <el-tab-pane :name="'0'" :label="`我自编的(${createdCount})`"> | 45 | <el-tab-pane :name="'0'" :label="`我自编的(${createdCount})`"> |
46 | <div class="card-content" :key="index" v-for="( item, index ) in defaultList "> | 46 | <div class="card-content" :key="index" v-for="( item, index ) in defaultList "> |
@@ -53,6 +53,9 @@ | @@ -53,6 +53,9 @@ | ||
53 | <div class="text"> | 53 | <div class="text"> |
54 | {{ item.id }} | 54 | {{ item.id }} |
55 | </div> | 55 | </div> |
56 | + <div class="text-radius" v-if="item.tag && item.tag.length >= 1"> | ||
57 | + <span> {{ item.tag }} </span> | ||
58 | + </div> | ||
56 | </div> | 59 | </div> |
57 | </el-col> | 60 | </el-col> |
58 | <el-col :span="18" class="content"> | 61 | <el-col :span="18" class="content"> |
@@ -73,7 +76,8 @@ | @@ -73,7 +76,8 @@ | ||
73 | <el-popconfirm style="color:gray !important;" | 76 | <el-popconfirm style="color:gray !important;" |
74 | @confirm="_deleteDetermineQ(item.id)" | 77 | @confirm="_deleteDetermineQ(item.id)" |
75 | :title="dataType == 1 ? '确认删除此课件' : '确认删除此试卷'"> | 78 | :title="dataType == 1 ? '确认删除此课件' : '确认删除此试卷'"> |
76 | - <el-button class="small-button" :size="'small'" style="color:#606266 !important;" | 79 | + <el-button class="small-button" :size="'small'" |
80 | + style="color:#606266 !important;" | ||
77 | @click.native="_delete(item.id)" type="text" | 81 | @click.native="_delete(item.id)" type="text" |
78 | slot="reference">删除</el-button> | 82 | slot="reference">删除</el-button> |
79 | </el-popconfirm> | 83 | </el-popconfirm> |
@@ -145,6 +149,9 @@ | @@ -145,6 +149,9 @@ | ||
145 | <div class="text"> | 149 | <div class="text"> |
146 | {{ item.id }} | 150 | {{ item.id }} |
147 | </div> | 151 | </div> |
152 | + <div class="text-radius" v-if="item.tag && item.tag.length >= 1"> | ||
153 | + <span> {{ item.tag }} </span> | ||
154 | + </div> | ||
148 | </div> | 155 | </div> |
149 | </el-col> | 156 | </el-col> |
150 | <el-col :span="18" class="content"> | 157 | <el-col :span="18" class="content"> |
@@ -164,7 +171,8 @@ | @@ -164,7 +171,8 @@ | ||
164 | <el-popconfirm style="color:gray !important;" | 171 | <el-popconfirm style="color:gray !important;" |
165 | @confirm="_deleteDetermineQ(item.id)" | 172 | @confirm="_deleteDetermineQ(item.id)" |
166 | :title="dataType == 1 ? '确认删除此课件' : '确认删除此试卷'"> | 173 | :title="dataType == 1 ? '确认删除此课件' : '确认删除此试卷'"> |
167 | - <el-button class="small-button" :size="'small'" style="color:#606266 !important;" | 174 | + <el-button class="small-button" :size="'small'" |
175 | + style="color:#606266 !important;" | ||
168 | @click.native="_delete(item.id)" type="text" | 176 | @click.native="_delete(item.id)" type="text" |
169 | slot="reference">删除</el-button> | 177 | slot="reference">删除</el-button> |
170 | </el-popconfirm> | 178 | </el-popconfirm> |
@@ -274,7 +282,7 @@ | @@ -274,7 +282,7 @@ | ||
274 | </el-image> | 282 | </el-image> |
275 | 283 | ||
276 | </span> | 284 | </span> |
277 | - </div> | 285 | + </div> |
278 | <p>第二步:上传完成编辑好的试卷。</p> | 286 | <p>第二步:上传完成编辑好的试卷。</p> |
279 | </div> | 287 | </div> |
280 | </upload> | 288 | </upload> |
@@ -308,14 +316,14 @@ export default { | @@ -308,14 +316,14 @@ export default { | ||
308 | sharedList: [], | 316 | sharedList: [], |
309 | dataType: "1", | 317 | dataType: "1", |
310 | importType: 0, | 318 | importType: 0, |
311 | - tabType: "0", | 319 | + tabType: "0", |
312 | url: "/api_html/common/paper/upload", //上传文档地址 | 320 | url: "/api_html/common/paper/upload", //上传文档地址 |
313 | listPage: { | 321 | listPage: { |
314 | page: 1, | 322 | page: 1, |
315 | size: 8, | 323 | size: 8, |
316 | total: 0, | 324 | total: 0, |
317 | }, | 325 | }, |
318 | - query: { | 326 | + query: { |
319 | dateStatus: "-1", | 327 | dateStatus: "-1", |
320 | title: "", | 328 | title: "", |
321 | class: null, | 329 | class: null, |
@@ -339,19 +347,19 @@ export default { | @@ -339,19 +347,19 @@ export default { | ||
339 | this.listPage.page = 1; | 347 | this.listPage.page = 1; |
340 | this._serach(); | 348 | this._serach(); |
341 | }, | 349 | }, |
342 | - 'query.dateStatus'(val) { | 350 | + 'query.dateStatus'(val) { |
343 | var dateRange = setDateRules(val); | 351 | var dateRange = setDateRules(val); |
344 | 352 | ||
345 | this.query.dateRange = [dateRange.startDay, dateRange.endDay]; | 353 | this.query.dateRange = [dateRange.startDay, dateRange.endDay]; |
346 | } | 354 | } |
347 | }, | 355 | }, |
348 | - async created() { | 356 | + async created() { |
349 | this.dataType = location.href.endsWith("askPreparationQuestions") ? "1" : "2"; | 357 | this.dataType = location.href.endsWith("askPreparationQuestions") ? "1" : "2"; |
350 | this.code = this.$store.getters.csCode; | 358 | this.code = this.$store.getters.csCode; |
351 | this.role = | 359 | this.role = |
352 | this.$store.getters.info.showRole || | 360 | this.$store.getters.info.showRole || |
353 | this.$store.getters.info.permissions[0].role; | 361 | this.$store.getters.info.permissions[0].role; |
354 | - this.query.dateStatus = "onWeek"; | 362 | + this.query.dateStatus = "onWeek"; |
355 | await this._loadQueryDatas(); | 363 | await this._loadQueryDatas(); |
356 | }, | 364 | }, |
357 | methods: { | 365 | methods: { |
@@ -657,182 +665,206 @@ export default { | @@ -657,182 +665,206 @@ export default { | ||
657 | }; | 665 | }; |
658 | </script> | 666 | </script> |
659 | <style lang="scss"> | 667 | <style lang="scss"> |
660 | -.down-box { | ||
661 | - padding-left: 20px; | 668 | +.paper-list { |
669 | + position: relative; | ||
670 | + .down-box { | ||
671 | + padding-left: 20px; | ||
662 | 672 | ||
663 | - .down-head { | ||
664 | - display: block; | 673 | + .down-head { |
674 | + display: block; | ||
665 | 675 | ||
666 | - span, | ||
667 | - a { | ||
668 | - vertical-align: middle; | 676 | + span, |
677 | + a { | ||
678 | + vertical-align: middle; | ||
679 | + } | ||
669 | } | 680 | } |
670 | } | 681 | } |
671 | -} | ||
672 | 682 | ||
673 | -.header-button { | ||
674 | - float: right; | ||
675 | - margin-right: 50px; | ||
676 | - background: rgba(65, 204, 149, 1); | ||
677 | - color: white; | ||
678 | - | ||
679 | - :hover { | 683 | + .header-button { |
684 | + float: right; | ||
685 | + margin-right: 50px; | ||
680 | background: rgba(65, 204, 149, 1); | 686 | background: rgba(65, 204, 149, 1); |
681 | color: white; | 687 | color: white; |
682 | - } | ||
683 | -} | ||
684 | 688 | ||
685 | -.el-tabs__content { | ||
686 | - padding-left: 20px !important; | ||
687 | - padding-right: 0px !important; | ||
688 | - padding-top: 20px !important; | ||
689 | -} | 689 | + :hover { |
690 | + background: rgba(65, 204, 149, 1); | ||
691 | + color: white; | ||
692 | + } | ||
693 | + } | ||
690 | 694 | ||
691 | -.el-tabs__header { | ||
692 | - margin: 0px !important; | ||
693 | -} | 695 | + .el-tabs__content { |
696 | + padding-left: 20px !important; | ||
697 | + padding-right: 0px !important; | ||
698 | + padding-top: 20px !important; | ||
699 | + } | ||
694 | 700 | ||
695 | -.card-content { | ||
696 | - .descption-tag { | ||
697 | - display: inline-block; | ||
698 | - background: rgba(102, 127, 253, 0.1); | ||
699 | - border-radius: 4px 4px 4px 4px; | ||
700 | - color: #667FFD; | ||
701 | - line-height: 32px; | ||
702 | - padding: 0 10px; | ||
703 | - margin-right: 10px; | ||
704 | - height: 32px; | ||
705 | - margin-top: 3px; | 701 | + .el-tabs__header { |
702 | + margin: 0px !important; | ||
706 | } | 703 | } |
707 | 704 | ||
708 | - width: 48.4%; | ||
709 | - display: inline-block; | ||
710 | - margin-bottom: 10px; | ||
711 | - min-height: 190px; | ||
712 | - border: 1px solid #E6E9F4; | ||
713 | - border-radius: 10px 10px 10px 10px; | ||
714 | - box-shadow: 0px 4px 14px 0px rgba(0, 0, 0, 0.08); | ||
715 | - margin-right: 20px; | ||
716 | - background: #FFFFFF; | ||
717 | - | ||
718 | - .content { | ||
719 | - margin-top: 15px !important; | ||
720 | - padding-left: 10px !important; | ||
721 | - font-size: 14px; | ||
722 | - font-weight: 400; | ||
723 | - | ||
724 | - .descption-label { | ||
725 | - min-width: 120px; | 705 | + .card-content { |
706 | + .descption-tag { | ||
707 | + display: inline-block; | ||
708 | + background: rgba(102, 127, 253, 0.1); | ||
709 | + border-radius: 4px 4px 4px 4px; | ||
710 | + color: #667FFD; | ||
711 | + line-height: 32px; | ||
712 | + padding: 0 10px; | ||
713 | + margin-right: 10px; | ||
714 | + height: 32px; | ||
715 | + margin-top: 3px; | ||
726 | } | 716 | } |
727 | 717 | ||
728 | - .descption-tag-text { | ||
729 | - margin-bottom: 20px; | ||
730 | - display: flex; | ||
731 | - justify-content: flex-start; | ||
732 | - align-items: center; | ||
733 | - width: calc(100% - 5px); | ||
734 | - } | 718 | + width: 48.4%; |
719 | + display: inline-block; | ||
720 | + margin-bottom: 10px; | ||
721 | + min-height: 190px; | ||
722 | + border: 1px solid #E6E9F4; | ||
723 | + border-radius: 10px 10px 10px 10px; | ||
724 | + box-shadow: 0px 4px 14px 0px rgba(0, 0, 0, 0.08); | ||
725 | + margin-right: 20px; | ||
726 | + background: #FFFFFF; | ||
727 | + | ||
728 | + .content { | ||
729 | + margin-top: 15px !important; | ||
730 | + padding-left: 10px !important; | ||
731 | + font-size: 14px; | ||
732 | + font-weight: 400; | ||
733 | + | ||
734 | + .descption-label { | ||
735 | + min-width: 120px; | ||
736 | + } | ||
735 | 737 | ||
738 | + .descption-tag-text { | ||
739 | + margin-bottom: 20px; | ||
740 | + display: flex; | ||
741 | + justify-content: flex-start; | ||
742 | + align-items: center; | ||
743 | + width: calc(100% - 5px); | ||
744 | + } | ||
736 | 745 | ||
737 | 746 | ||
738 | - .descption-text { | ||
739 | - height: 30px; | ||
740 | - margin-top: 10px; | ||
741 | 747 | ||
742 | - .descption-text-block { | ||
743 | - margin-right: 10px; | ||
744 | - display: flex; | ||
745 | - justify-content: flex-start; | 748 | + .descption-text { |
749 | + height: 30px; | ||
750 | + margin-top: 10px; | ||
746 | 751 | ||
747 | - .sharing-descption { | ||
748 | - flex: 1; | ||
749 | - color: gray; | ||
750 | - opacity: 0.8; | ||
751 | - text-align: right | ||
752 | - } | 752 | + .descption-text-block { |
753 | + margin-right: 10px; | ||
754 | + display: flex; | ||
755 | + justify-content: flex-start; | ||
753 | 756 | ||
754 | - img { | ||
755 | - height: 20px; | ||
756 | - width: 20px; | ||
757 | - margin-right: 5px; | ||
758 | - } | ||
759 | - } | ||
760 | - } | 757 | + .sharing-descption { |
758 | + flex: 1; | ||
759 | + color: gray; | ||
760 | + opacity: 0.8; | ||
761 | + text-align: right | ||
762 | + } | ||
761 | 763 | ||
762 | - .title-text { | ||
763 | - .title-label { | ||
764 | - font-weight: bold; | ||
765 | - font-size: 24px !important; | ||
766 | - color: #303133; | ||
767 | - line-height: 28px; | ||
768 | - display: inline-block; | ||
769 | - width: calc(100% - 100px); | ||
770 | - height: 28px; | ||
771 | - text-transform: none; | ||
772 | - padding-bottom: 10px !important; | 764 | + img { |
765 | + height: 20px; | ||
766 | + width: 20px; | ||
767 | + margin-right: 5px; | ||
768 | + } | ||
769 | + } | ||
773 | } | 770 | } |
774 | 771 | ||
775 | - .dropdown-button { | ||
776 | - .el-button { | ||
777 | - background-color: #667FFD !important; | ||
778 | - color: white; | 772 | + .title-text { |
773 | + .title-label { | ||
774 | + font-weight: bold; | ||
775 | + font-size: 24px !important; | ||
776 | + color: #303133; | ||
777 | + line-height: 28px; | ||
778 | + display: inline-block; | ||
779 | + width: calc(100% - 100px); | ||
780 | + height: 28px; | ||
781 | + text-transform: none; | ||
782 | + padding-bottom: 10px !important; | ||
779 | } | 783 | } |
780 | 784 | ||
781 | - float: right; | ||
782 | - margin-right: 20px; | 785 | + .dropdown-button { |
786 | + .el-button { | ||
787 | + background-color: #667FFD !important; | ||
788 | + color: white; | ||
789 | + } | ||
783 | 790 | ||
791 | + float: right; | ||
792 | + margin-right: 20px; | ||
793 | + } | ||
784 | } | 794 | } |
785 | } | 795 | } |
786 | - } | ||
787 | 796 | ||
788 | - .left { | ||
789 | - height: 190px; | ||
790 | - background-color: #41CC95; | ||
791 | - vertical-align: middle; | ||
792 | - border-radius: 10px 0px 0px 10px; | ||
793 | - | ||
794 | - .left-icon { | ||
795 | - margin-top: 26px; | ||
796 | - height: 70px; | ||
797 | - | ||
798 | - .icon { | ||
799 | - height: 100px; | ||
800 | - width: 100px; | ||
801 | - background: rgba(255, 255, 255, 0.1); | ||
802 | - border-radius: 61px 61px 61px 61px; | ||
803 | - margin: auto; | ||
804 | - text-align: center; | ||
805 | - | ||
806 | - img { | ||
807 | - margin-top: 24px; | ||
808 | - height: 52px; | ||
809 | - width: 52px; | 797 | + .left { |
798 | + height: 190px; | ||
799 | + background-color: #41CC95; | ||
800 | + vertical-align: middle; | ||
801 | + border-radius: 10px 0px 0px 10px; | ||
802 | + | ||
803 | + .left-icon { | ||
804 | + margin-top: 26px; | ||
805 | + height: 70px; | ||
806 | + .icon { | ||
807 | + height: 100px; | ||
808 | + width: 100px; | ||
809 | + background: rgba(255, 255, 255, 0.1); | ||
810 | + border-radius: 61px 61px 61px 61px; | ||
811 | + margin: auto; | ||
812 | + text-align: center; | ||
813 | + | ||
814 | + img { | ||
815 | + margin-top: 24px; | ||
816 | + height: 52px; | ||
817 | + width: 52px; | ||
818 | + } | ||
819 | + } | ||
820 | + | ||
821 | + .text { | ||
822 | + width: 100%; | ||
823 | + text-align: center; | ||
824 | + margin-top: 5px; | ||
825 | + font-size: 20px; | ||
826 | + color: #FFFFFF; | ||
827 | + } | ||
828 | + | ||
829 | + .text-radius { | ||
830 | + width: 100%; | ||
831 | + text-align: left; | ||
832 | + margin-top: 9px; | ||
833 | + margin-left: 1px; | ||
834 | + white-space: nowrap; | ||
835 | + width: calc(100% - 7.5px); | ||
836 | + span { | ||
837 | + overflow: hidden; | ||
838 | + white-space: nowrap; | ||
839 | + color: #209466; | ||
840 | + text-overflow: ellipsis; | ||
841 | + display: inline-block; | ||
842 | + border-radius: 1px 15px 0px 10px; | ||
843 | + padding-left: 8px; | ||
844 | + padding-right: 4px; | ||
845 | + padding-top: 2px; | ||
846 | + padding-bottom: 2px; | ||
847 | + max-width: calc(100% - 1px); | ||
848 | + background: #E4F8F0; | ||
849 | + } | ||
810 | } | 850 | } |
811 | } | 851 | } |
852 | + } | ||
812 | 853 | ||
813 | - .text { | ||
814 | - width: 100%; | ||
815 | - text-align: center; | ||
816 | - margin-top: 5px; | ||
817 | - font-size: 20px; | 854 | + .right { |
855 | + .el-button { | ||
856 | + background-color: #667FFD; | ||
857 | + line-height: 16px; | ||
818 | color: #FFFFFF; | 858 | color: #FFFFFF; |
859 | + margin-top: 15px; | ||
860 | + padding: 10px 20px !important; | ||
819 | } | 861 | } |
820 | } | 862 | } |
821 | - } | ||
822 | 863 | ||
823 | - .right { | ||
824 | - .el-button { | ||
825 | - background-color: #667FFD; | ||
826 | - line-height: 16px; | ||
827 | - color: #FFFFFF; | ||
828 | - margin-top: 15px; | ||
829 | - padding: 10px 20px !important; | ||
830 | - } | ||
831 | } | 864 | } |
832 | 865 | ||
833 | -} | ||
834 | - | ||
835 | -.el-popconfirm__action { | ||
836 | - margin-top: 10px; | 866 | + .el-popconfirm__action { |
867 | + margin-top: 10px; | ||
868 | + } | ||
837 | } | 869 | } |
838 | </style> | 870 | </style> |
839 | \ No newline at end of file | 871 | \ No newline at end of file |
src/views/basic/askTestQuestion/update.vue
@@ -26,8 +26,7 @@ | @@ -26,8 +26,7 @@ | ||
26 | <p class="name-box"> | 26 | <p class="name-box"> |
27 | <span>分享范围:</span> | 27 | <span>分享范围:</span> |
28 | <el-radio :disabled="isViewer" class="name-radio" v-model="form.sharingType" :label="0">任课班级分享</el-radio> | 28 | <el-radio :disabled="isViewer" class="name-radio" v-model="form.sharingType" :label="0">任课班级分享</el-radio> |
29 | - <el-radio :disabled="isViewer" class="name-radio" @click.native="_selectClassSharingType" | ||
30 | - v-model="form.sharingType" :label="1">自定义分享班级</el-radio> | 29 | + <el-radio :disabled="isViewer" class="name-radio" @click.native="_selectClassSharingType" v-model="form.sharingType" :label="1">自定义分享班级</el-radio> |
31 | </p> | 30 | </p> |
32 | </div> | 31 | </div> |
33 | <div class="question-box"> | 32 | <div class="question-box"> |
@@ -225,26 +224,30 @@ | @@ -225,26 +224,30 @@ | ||
225 | :append-to-body="true"> | 224 | :append-to-body="true"> |
226 | <div :key="classSharingType"> | 225 | <div :key="classSharingType"> |
227 | <el-row class="row-subfix"> | 226 | <el-row class="row-subfix"> |
228 | - <div class="row-line"> | ||
229 | - <span class="line-subfix">年级:</span> | ||
230 | - <span class="line-value">{{ gradeName }}</span> | ||
231 | - </div> | 227 | + <el-col :xs="24" :sm="24" :md="24" :lg="24" type="flex" style="flex-wrap:wrap"> |
228 | + <div class="row-line"> | ||
229 | + <span class="line-subfix">年级:</span> | ||
230 | + <span class="line-value">{{ gradeName }}</span> | ||
231 | + </div> | ||
232 | + </el-col> | ||
232 | </el-row> | 233 | </el-row> |
233 | <el-row v-if="gradeClass.length >= 1" class="row-subfix" style="margin-top: 20px;"> | 234 | <el-row v-if="gradeClass.length >= 1" class="row-subfix" style="margin-top: 20px;"> |
234 | - <span class="line-subfix" style="float: left;">班级:</span> | ||
235 | - <div class="row-line" style="float: left; | 235 | + <el-col :xs="24" :sm="24" :md="24" :lg="24" type="flex" style="flex-wrap:wrap"> |
236 | + <span class="line-subfix" style="float: left;">班级:</span> | ||
237 | + <div class="row-line" style="float: left; | ||
236 | background:rgb(245,247,250);padding:15px 10px;width: calc(100% - 80px);border-radius:5px;"> | 238 | background:rgb(245,247,250);padding:15px 10px;width: calc(100% - 80px);border-radius:5px;"> |
237 | - <span class="line-value" style="min-height: 300px;border-radius: 4px; background: rgb(247,247,250);"> | ||
238 | - <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" | ||
239 | - @change="handleCheckAllChange">全选</el-checkbox> | ||
240 | - <div> | ||
241 | - <el-checkbox @change="handleCheckedClassChange" v-model="item.isChecked" :key="index" | ||
242 | - v-for="(item, index) in gradeClass" :label="item.id"> | ||
243 | - {{ item.className }} | ||
244 | - </el-checkbox> | ||
245 | - </div> | ||
246 | - </span> | ||
247 | - </div> | 239 | + <span class="line-value" style="min-height: 300px;border-radius: 4px; background: rgb(247,247,250);"> |
240 | + <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" | ||
241 | + @change="handleCheckAllChange">全选</el-checkbox> | ||
242 | + <div> | ||
243 | + <el-checkbox @change="handleCheckedClassChange" v-model="item.isChecked" :key="index" | ||
244 | + v-for="(item, index) in gradeClass" :label="item.id"> | ||
245 | + {{ item.className }} | ||
246 | + </el-checkbox> | ||
247 | + </div> | ||
248 | + </span> | ||
249 | + </div> | ||
250 | + </el-col> | ||
248 | </el-row> | 251 | </el-row> |
249 | </div> | 252 | </div> |
250 | <div slot="footer"> | 253 | <div slot="footer"> |
@@ -1134,7 +1137,7 @@ export default { | @@ -1134,7 +1137,7 @@ export default { | ||
1134 | }, | 1137 | }, |
1135 | }; | 1138 | }; |
1136 | </script> | 1139 | </script> |
1137 | -<style lang="scss"> | 1140 | +<style lang="scss" scoped> |
1138 | .line-value { | 1141 | .line-value { |
1139 | color: black; | 1142 | color: black; |
1140 | } | 1143 | } |
src/views/basic/down/client.vue
@@ -19,7 +19,8 @@ | @@ -19,7 +19,8 @@ | ||
19 | </div> | 19 | </div> |
20 | <div class="down-box"> | 20 | <div class="down-box"> |
21 | <p class="txt">默认参数配置</p> | 21 | <p class="txt">默认参数配置</p> |
22 | - <el-button class="down-btn" type="primary" @click="getAppDownloadUrl(false)">立即下载</el-button> | 22 | + <el-button class="down-btn" type="primary" v-loading="downClientLoading" |
23 | + @click="getAppDownloadUrl(false)">立即下载</el-button> | ||
23 | </div> | 24 | </div> |
24 | </div> | 25 | </div> |
25 | <!-- <ul class="down-ul"> | 26 | <!-- <ul class="down-ul"> |
@@ -229,6 +230,7 @@ export default { | @@ -229,6 +230,7 @@ export default { | ||
229 | dialogVis: false, | 230 | dialogVis: false, |
230 | askCount: true, | 231 | askCount: true, |
231 | examsDuration: true, | 232 | examsDuration: true, |
233 | + downClientLoading: false, | ||
232 | configId: "", | 234 | configId: "", |
233 | formData: { | 235 | formData: { |
234 | configName: "", | 236 | configName: "", |
@@ -423,11 +425,14 @@ export default { | @@ -423,11 +425,14 @@ export default { | ||
423 | this.$message.error(info); | 425 | this.$message.error(info); |
424 | } | 426 | } |
425 | }, | 427 | }, |
426 | - async getAppDownloadUrl(configId) { | 428 | + async getAppDownloadUrl(configId) { |
429 | + if (this.downClientLoading) return; | ||
430 | + this.downClientLoading = true; | ||
427 | const { data, status, info } = await this.$request.getAppDownloadUrl({ | 431 | const { data, status, info } = await this.$request.getAppDownloadUrl({ |
428 | configId: configId || "", | 432 | configId: configId || "", |
429 | }); | 433 | }); |
430 | if (status == 0) { | 434 | if (status == 0) { |
435 | + this.downClientLoading = false; | ||
431 | // this.tableData = [...data.list] || []; | 436 | // this.tableData = [...data.list] || []; |
432 | const a = document.createElement("a"); | 437 | const a = document.createElement("a"); |
433 | a.href = data.downloadUrl; | 438 | a.href = data.downloadUrl; |
@@ -435,6 +440,7 @@ export default { | @@ -435,6 +440,7 @@ export default { | ||
435 | a.click(); | 440 | a.click(); |
436 | a.remove(); | 441 | a.remove(); |
437 | } else { | 442 | } else { |
443 | + this.downClientLoading = false; | ||
438 | this.$message.error(info); | 444 | this.$message.error(info); |
439 | } | 445 | } |
440 | }, | 446 | }, |
src/views/basic/setUp/archived.vue
@@ -166,7 +166,7 @@ export default { | @@ -166,7 +166,7 @@ export default { | ||
166 | if (data && !data.code) { | 166 | if (data && !data.code) { |
167 | 167 | ||
168 | let blob = new Blob([data], { | 168 | let blob = new Blob([data], { |
169 | - type: "application/vnd.ms-excel;charset=utf-8", | 169 | + type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", |
170 | }); | 170 | }); |
171 | 171 | ||
172 | downloadFile(type == 2 ? "教师任课信息" : type == 0 ? "行政班名单模板" : "教学班名单模板", blob); | 172 | downloadFile(type == 2 ? "教师任课信息" : type == 0 ? "行政班名单模板" : "教学班名单模板", blob); |
src/views/examinationPaper/add.vue
@@ -78,11 +78,9 @@ | @@ -78,11 +78,9 @@ | ||
78 | v-model="form.examsDuration" label="考试时长"></el-input-number> | 78 | v-model="form.examsDuration" label="考试时长"></el-input-number> |
79 | </el-form-item> | 79 | </el-form-item> |
80 | <el-form-item v-if="role != 'ROLE_PERSONAL'" label="分享范围:" prop="sharingType"> | 80 | <el-form-item v-if="role != 'ROLE_PERSONAL'" label="分享范围:" prop="sharingType"> |
81 | - <el-radio-group v-model="form.sharingType"> | ||
82 | - <el-radio :label="0">任课班级分享</el-radio> | ||
83 | - <el-radio class="name-radio" @click.native="_selectClassSharingType" v-model="form.sharingType" | ||
84 | - :label="1">自定义分享班级</el-radio> | ||
85 | - </el-radio-group> | 81 | + <el-radio :label="0" v-model="form.sharingType">任课班级分享</el-radio> |
82 | + <el-radio class="name-radio" @click.native="_selectClassSharingType" v-model="form.sharingType" | ||
83 | + :label="1">自定义分享班级</el-radio> | ||
86 | </el-form-item> | 84 | </el-form-item> |
87 | </el-form> | 85 | </el-form> |
88 | <div class="btn-box"> | 86 | <div class="btn-box"> |
@@ -355,7 +353,7 @@ | @@ -355,7 +353,7 @@ | ||
355 | <p class="name">{{ form.title }}</p> | 353 | <p class="name">{{ form.title }}</p> |
356 | <p class="totals">卷面总分:{{ allScore }}分</p> | 354 | <p class="totals">卷面总分:{{ allScore }}分</p> |
357 | </div> | 355 | </div> |
358 | - <div class="question-box flex-content" v-for="(question, index) in form.questionList" :key="index"> | 356 | + <div class="question-box flex-content" v-for="(question, index) in form.questionList" :key="index"> |
359 | <p class="question-title"> | 357 | <p class="question-title"> |
360 | <span>{{ setBigNum(index) }}、</span> | 358 | <span>{{ setBigNum(index) }}、</span> |
361 | <span class="title-txt">{{ question.questionTitle }}</span> | 359 | <span class="title-txt">{{ question.questionTitle }}</span> |
@@ -390,16 +388,11 @@ | @@ -390,16 +388,11 @@ | ||
390 | {{ setNum(index, indexs, subQuestions) }} | 388 | {{ setNum(index, indexs, subQuestions) }} |
391 | </div> | 389 | </div> |
392 | <div class="qs-type"> | 390 | <div class="qs-type"> |
393 | - <template v-if="isUpload"> | ||
394 | - <el-select v-model="subQuestions.questionType" placeholder="选择题目类型" | 391 | + <el-select v-model="subQuestions.questionType" placeholder="选择题目类型" |
395 | @change="changeSubQuestions($event, subQuestions)"> | 392 | @change="changeSubQuestions($event, subQuestions)"> |
396 | <el-option v-for="options in questionOptions" :key="options.value" :label="options.label" | 393 | <el-option v-for="options in questionOptions" :key="options.value" :label="options.label" |
397 | :value="options.value"></el-option> | 394 | :value="options.value"></el-option> |
398 | </el-select> | 395 | </el-select> |
399 | - </template> | ||
400 | - <template v-else> | ||
401 | - {{ setSubPro(subQuestions.questionType) }} | ||
402 | - </template> | ||
403 | </div> | 396 | </div> |
404 | <div class="qs-score"> | 397 | <div class="qs-score"> |
405 | <el-input-number class="number-ipt" size="medium" :min="1" :max="200" :precision="2" | 398 | <el-input-number class="number-ipt" size="medium" :min="1" :max="200" :precision="2" |
@@ -528,7 +521,7 @@ | @@ -528,7 +521,7 @@ | ||
528 | <el-button round @click="step = 0">上一步</el-button> | 521 | <el-button round @click="step = 0">上一步</el-button> |
529 | <el-button type="primary" round @click="toStep(3)">下一步</el-button> | 522 | <el-button type="primary" round @click="toStep(3)">下一步</el-button> |
530 | </template> | 523 | </template> |
531 | - </div> | 524 | + </div> |
532 | </div> | 525 | </div> |
533 | </div> | 526 | </div> |
534 | <div v-if="step == 3"> | 527 | <div v-if="step == 3"> |
@@ -536,7 +529,7 @@ | @@ -536,7 +529,7 @@ | ||
536 | <p class="name">{{ form.title }}</p> | 529 | <p class="name">{{ form.title }}</p> |
537 | <p class="totals">卷面总分:{{ allScore }}分</p> | 530 | <p class="totals">卷面总分:{{ allScore }}分</p> |
538 | </div> | 531 | </div> |
539 | - <div class="question-box flex-content" > | 532 | + <div class="question-box flex-content"> |
540 | <template v-for="(question, index) in form.questionList"> | 533 | <template v-for="(question, index) in form.questionList"> |
541 | <p class="question-title"> | 534 | <p class="question-title"> |
542 | <span>{{ setBigNum(index) }}、</span> | 535 | <span>{{ setBigNum(index) }}、</span> |
src/views/examinationPaper/addQs.vue
@@ -66,11 +66,9 @@ | @@ -66,11 +66,9 @@ | ||
66 | </el-select> | 66 | </el-select> |
67 | </el-form-item> | 67 | </el-form-item> |
68 | <el-form-item v-if="role != 'ROLE_PERSONAL'" label="分享范围:" prop="sharingType"> | 68 | <el-form-item v-if="role != 'ROLE_PERSONAL'" label="分享范围:" prop="sharingType"> |
69 | - <el-radio-group v-model="form.sharingType"> | ||
70 | - <el-radio :label="0">任课班级分享</el-radio> | ||
71 | - <el-radio class="name-radio" @click.native="_selectClassSharingType" v-model="form.sharingType" | ||
72 | - :label="1">自定义分享班级</el-radio> | ||
73 | - </el-radio-group> | 69 | + <el-radio class="name-radio" :label="0" v-model="form.sharingType">任课班级分享</el-radio> |
70 | + <el-radio class="name-radio" @click.native="_selectClassSharingType" v-model="form.sharingType" | ||
71 | + :label="1">自定义分享班级</el-radio> | ||
74 | </el-form-item> | 72 | </el-form-item> |
75 | </el-form> | 73 | </el-form> |
76 | <div class="btn-box"> | 74 | <div class="btn-box"> |
@@ -82,7 +80,7 @@ | @@ -82,7 +80,7 @@ | ||
82 | <div class="answer-title"> | 80 | <div class="answer-title"> |
83 | <p class="name">{{ form.title }}</p> | 81 | <p class="name">{{ form.title }}</p> |
84 | </div> | 82 | </div> |
85 | - <div class="question-box flex-content" > | 83 | + <div class="question-box flex-content"> |
86 | <ul class="questions-ul"> | 84 | <ul class="questions-ul"> |
87 | <li class="sub-questions"> | 85 | <li class="sub-questions"> |
88 | <div class="qs-num">题号</div> | 86 | <div class="qs-num">题号</div> |
@@ -315,7 +313,7 @@ | @@ -315,7 +313,7 @@ | ||
315 | <el-button type="danger" plain round @click="linkBack">取消</el-button> | 313 | <el-button type="danger" plain round @click="linkBack">取消</el-button> |
316 | <el-button round @click="step = 0">上一步</el-button> | 314 | <el-button round @click="step = 0">上一步</el-button> |
317 | <el-button type="primary" round @click="toStep(2)">下一步</el-button> | 315 | <el-button type="primary" round @click="toStep(2)">下一步</el-button> |
318 | - </div> | 316 | + </div> |
319 | </div> | 317 | </div> |
320 | <el-dialog :close-on-click-modal="false" :modal-append-to-body="false" | 318 | <el-dialog :close-on-click-modal="false" :modal-append-to-body="false" |
321 | :title="stem.type == 1 ? '上传题干' : '上传题目解析'" :visible.sync="dialogStem" v-if="dialogStem" width="800px"> | 319 | :title="stem.type == 1 ? '上传题干' : '上传题目解析'" :visible.sync="dialogStem" v-if="dialogStem" width="800px"> |
@@ -349,7 +347,7 @@ | @@ -349,7 +347,7 @@ | ||
349 | <div class="answer-title"> | 347 | <div class="answer-title"> |
350 | <p class="name">{{ form.title }}</p> | 348 | <p class="name">{{ form.title }}</p> |
351 | </div> | 349 | </div> |
352 | - <div class="question-box flex-content" > | 350 | + <div class="question-box flex-content"> |
353 | <template v-for="question in form.questionList"> | 351 | <template v-for="question in form.questionList"> |
354 | <template v-if="!question.subQuestions"> | 352 | <template v-if="!question.subQuestions"> |
355 | <div class="screenshot-box" v-if="question.screenshot"> | 353 | <div class="screenshot-box" v-if="question.screenshot"> |
src/views/layout/Footer/bottom.vue
vue.config.js
1 | const path = require("path"); | 1 | const path = require("path"); |
2 | const resolve = (dir) => path.join(__dirname, dir); | 2 | const resolve = (dir) => path.join(__dirname, dir); |
3 | const IS_PROD = ["production", "prod"].includes(process.env.NODE_ENV); | 3 | const IS_PROD = ["production", "prod"].includes(process.env.NODE_ENV); |
4 | -const BundleAnalyzerPlugin = require("webpack-bundle-analyzer") | ||
5 | - .BundleAnalyzerPlugin; | 4 | +const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; |
5 | + | ||
6 | +const TimeStamp = new Date().getTime(); | ||
6 | 7 | ||
7 | module.exports = { | 8 | module.exports = { |
8 | publicPath: "./", // 编译后的地址,可以根据环境进行设置 | 9 | publicPath: "./", // 编译后的地址,可以根据环境进行设置 |
@@ -33,9 +34,21 @@ module.exports = { | @@ -33,9 +34,21 @@ module.exports = { | ||
33 | }, | 34 | }, |
34 | disableHostCheck: true | 35 | disableHostCheck: true |
35 | }, | 36 | }, |
37 | + configureWebpack: { | ||
38 | + devtool: 'source-map', | ||
39 | + output: { // 输出重构 打包编译后的 文件名称 【模块名称.版本号.js】 | ||
40 | + filename: `js/[name].${TimeStamp}.js`, | ||
41 | + chunkFilename: `js/[name].${TimeStamp}.js` | ||
42 | + }, | ||
43 | + }, | ||
36 | css: { | 44 | css: { |
37 | extract: IS_PROD, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。 | 45 | extract: IS_PROD, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。 |
38 | sourceMap: false, | 46 | sourceMap: false, |
47 | + extract: { | ||
48 | + // 修改打包后css文件名 // css打包文件,添加时间戳 | ||
49 | + filename: `css/[name].${TimeStamp}.css`, | ||
50 | + chunkFilename: `css/[name].${TimeStamp}.css` | ||
51 | + } | ||
39 | }, | 52 | }, |
40 | chainWebpack: (config) => { | 53 | chainWebpack: (config) => { |
41 | config.plugin('html').tap(args => { | 54 | config.plugin('html').tap(args => { |