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 => { |