Commit a4074db88677f07c0c8a33562f006cd0a2e185e1
1 parent
3a9aa32b
使用分析,集团管理元交互
Showing
4 changed files
with
125 additions
and
18 deletions
src/components/charts/barChart.vue
src/views/standard/analysis/index.vue
... | ... | @@ -4,10 +4,22 @@ |
4 | 4 | <template slot="title"> |
5 | 5 | <span>使用分析</span> |
6 | 6 | </template> |
7 | + <template slot="btns"> | |
8 | + <el-tooltip effect="dark" content="导出报表" placement="bottom"> | |
9 | + <el-button | |
10 | + type="primary" | |
11 | + icon="fa fa-cloud-download" | |
12 | + size="mini" | |
13 | + plain | |
14 | + circle | |
15 | + @click="downExc" | |
16 | + ></el-button> | |
17 | + </el-tooltip> | |
18 | + </template> | |
7 | 19 | </back-box> |
8 | 20 | <div class="page-content"> |
9 | 21 | <ul class="params-box"> |
10 | - <li class="item"> | |
22 | + <li class="item item3"> | |
11 | 23 | <span class="s-txt">时间段:</span> |
12 | 24 | <div class="sel-box"> |
13 | 25 | <div class="d1"> |
... | ... | @@ -54,6 +66,15 @@ |
54 | 66 | > |
55 | 67 | </p> |
56 | 68 | </div> |
69 | + <el-button | |
70 | + class="btn" | |
71 | + v-if="role == 'ROLE_JITUAN'" | |
72 | + type="primary" | |
73 | + round | |
74 | + size="small" | |
75 | + @click="resetRank" | |
76 | + >使用频率排名</el-button | |
77 | + > | |
57 | 78 | </li> |
58 | 79 | <li class="item item2" v-for="(item, index) in query.secGraClaSub"> |
59 | 80 | <span class="s-txt">对比项{{ setBigNum(index) }}:</span> |
... | ... | @@ -76,16 +97,22 @@ |
76 | 97 | <span class="s-txt"></span> |
77 | 98 | <div class="disflex-b"> |
78 | 99 | <el-button |
79 | - v-show="query.secGraClaSub.length < 10" | |
80 | - class="btn" | |
100 | + class="btn btn-none" | |
101 | + :class="query.secGraClaSub.length < 10 ? '' : 'active'" | |
81 | 102 | icon="el-icon-plus" |
82 | 103 | size="small" |
83 | 104 | round |
84 | 105 | @click="addQuery" |
85 | 106 | >添加对比项</el-button |
86 | 107 | > |
87 | - <el-button class="btn" round size="small" @click="getData" | |
88 | - >确定</el-button | |
108 | + <el-button | |
109 | + v-show="query.secGraClaSub.length" | |
110 | + class="btn" | |
111 | + type="primary" | |
112 | + round | |
113 | + size="small" | |
114 | + @click="getData" | |
115 | + >多项对比</el-button | |
89 | 116 | > |
90 | 117 | </div> |
91 | 118 | </li> |
... | ... | @@ -99,7 +126,7 @@ |
99 | 126 | |
100 | 127 | <script> |
101 | 128 | import barChart from "@/components/charts/barChart"; |
102 | -import { formatDate } from "@/utils"; | |
129 | +import { formatDate, downloadFile } from "@/utils"; | |
103 | 130 | export default { |
104 | 131 | components: { |
105 | 132 | barChart, |
... | ... | @@ -180,10 +207,35 @@ export default { |
180 | 207 | this.query.startDay = formatDate(new Date(), "yyyy-MM-dd"); |
181 | 208 | this.query.endDay = formatDate(new Date(), "yyyy-MM-dd"); |
182 | 209 | } |
183 | - this.setDate(4); | |
210 | + this.setDate(3); | |
184 | 211 | this._QueryData(); |
185 | 212 | }, |
186 | 213 | methods: { |
214 | + async downExc() { | |
215 | + if (this.exportLoading == true) return; | |
216 | + let query = { | |
217 | + //搜索条件 | |
218 | + startDay: this.query.startDay, | |
219 | + endDay: this.query.endDay, | |
220 | + day: this.query.day, | |
221 | + }; | |
222 | + this.exportLoading = true; | |
223 | + | |
224 | + const exportUsageAnalysis = | |
225 | + this.role != "ROLE_JITUAN" | |
226 | + ? this.$request.exportUsageAnalysis | |
227 | + : this.$request.exportSchoolContrast; | |
228 | + const data = await exportUsageAnalysis({ ...query }); | |
229 | + this.exportLoading = false; | |
230 | + if (data) { | |
231 | + let blob = new Blob([data], { | |
232 | + type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", | |
233 | + }); | |
234 | + downloadFile("使用分析.xlsx", blob); | |
235 | + } else { | |
236 | + this.$message.error("下载失败"); | |
237 | + } | |
238 | + }, | |
187 | 239 | addQuery() { |
188 | 240 | this.query.secGraClaSub.push([]); |
189 | 241 | this.query.secGraClaSubName.push(""); |
... | ... | @@ -194,7 +246,7 @@ export default { |
194 | 246 | })[0]; |
195 | 247 | }, |
196 | 248 | secGraClaSubChange(event, index) { |
197 | - console.log(event) | |
249 | + console.log(event); | |
198 | 250 | let txt = ""; |
199 | 251 | let xx = this.filterObj(this.gradeList, event[0]); |
200 | 252 | txt += xx.label; |
... | ... | @@ -345,6 +397,17 @@ export default { |
345 | 397 | } |
346 | 398 | return query; |
347 | 399 | }, |
400 | + async resetRank() { | |
401 | + this.query.secGraClaSub = []; | |
402 | + this.query.secGraClaSubName = []; | |
403 | + this.chartData[0].value = []; | |
404 | + this.chartData[1].value = []; | |
405 | + this.xAxis = []; | |
406 | + this.$refs.barChart.clearChart(); | |
407 | + await this._QuerySchool(); | |
408 | + await this._QueryGradeList(); | |
409 | + this._QueryData(); | |
410 | + }, | |
348 | 411 | async _QueryData() { |
349 | 412 | this.loading = true; |
350 | 413 | let query = this.setQuery(); |
... | ... | @@ -359,9 +422,9 @@ export default { |
359 | 422 | if (status === 0) { |
360 | 423 | this.chartData[0].value = []; |
361 | 424 | this.chartData[1].value = []; |
362 | - this.xAxis = this.query.secGraClaSubName.map(item=>{ | |
363 | - let arr = item.split('/') | |
364 | - return arr[0]+'\n'+ arr.slice(1,arr.length).join('/') | |
425 | + this.xAxis = this.query.secGraClaSubName.map((item) => { | |
426 | + let arr = item.split("/"); | |
427 | + return arr[0] + "\n" + arr.slice(1, arr.length).join("/"); | |
365 | 428 | }); |
366 | 429 | data?.list.map((item, index) => { |
367 | 430 | this.chartData[0].value.push(item.periodCount); |
... | ... | @@ -482,7 +545,12 @@ export default { |
482 | 545 | }, |
483 | 546 | async _QuerySchool() { |
484 | 547 | this.loading = true; |
485 | - const { data, status, info } = await this.$request.schoolList(); | |
548 | + const { data, status, info } = await this.$request.schoolList({ | |
549 | + needSort: 1, | |
550 | + day: this.query.day, | |
551 | + startDay: this.query.startDay, | |
552 | + endDay: this.query.endDay, | |
553 | + }); | |
486 | 554 | this.loading = false; |
487 | 555 | if (status === 0) { |
488 | 556 | this.schoolList = [...data.list] || []; |
... | ... | @@ -511,11 +579,26 @@ div::-webkit-scrollbar-thumb { |
511 | 579 | display: flex; |
512 | 580 | justify-content: space-between; |
513 | 581 | align-items: center; |
582 | + .btn-none { | |
583 | + border: none; | |
584 | + background: none; | |
585 | + } | |
586 | + .active { | |
587 | + transform: translateX(-999999px); | |
588 | + } | |
589 | +} | |
590 | +.item3 { | |
591 | + .sel-box { | |
592 | + flex: 1; | |
593 | + } | |
514 | 594 | } |
515 | 595 | .sel-box { |
516 | 596 | display: flex; |
517 | 597 | align-items: center; |
518 | 598 | flex-wrap: nowrap; |
599 | + .btn { | |
600 | + margin-left: 100px; | |
601 | + } | |
519 | 602 | .sel { |
520 | 603 | width: 8%; |
521 | 604 | min-width: 160px; |
... | ... | @@ -591,6 +674,9 @@ div::-webkit-scrollbar-thumb { |
591 | 674 | .item2 { |
592 | 675 | width: 50%; |
593 | 676 | } |
677 | + .item3 { | |
678 | + padding-right: 100px; | |
679 | + } | |
594 | 680 | } |
595 | 681 | .chart-box { |
596 | 682 | height: 400px; | ... | ... |
src/views/standard/setUp/conglomerate.vue
... | ... | @@ -86,7 +86,8 @@ |
86 | 86 | </div> |
87 | 87 | </div> |
88 | 88 | </div> |
89 | - <el-dialog :close-on-click-modal="false" | |
89 | + <el-dialog | |
90 | + :close-on-click-modal="false" | |
90 | 91 | :title="isAdd ? '添加区域/集团' : '修改区域/集团'" |
91 | 92 | :visible.sync="diaCL" |
92 | 93 | width="400" |
... | ... | @@ -113,7 +114,12 @@ |
113 | 114 | <el-button round @click="diaCL = false">取 消</el-button> |
114 | 115 | </div> |
115 | 116 | </el-dialog> |
116 | - <el-dialog :close-on-click-modal="false" title="添加管理员" :visible.sync="diaAdmin" width="400"> | |
117 | + <el-dialog | |
118 | + :close-on-click-modal="false" | |
119 | + title="添加管理员" | |
120 | + :visible.sync="diaAdmin" | |
121 | + width="400" | |
122 | + > | |
117 | 123 | <el-form |
118 | 124 | class="form-box" |
119 | 125 | ref="formAdmin" |
... | ... | @@ -158,7 +164,12 @@ |
158 | 164 | <el-button round @click="diaAdmin = false">取 消</el-button> |
159 | 165 | </div> |
160 | 166 | </el-dialog> |
161 | - <el-dialog :close-on-click-modal="false" title="添加学校" :visible.sync="diaSchool" width="400"> | |
167 | + <el-dialog | |
168 | + :close-on-click-modal="false" | |
169 | + title="添加学校" | |
170 | + :visible.sync="diaSchool" | |
171 | + width="400" | |
172 | + > | |
162 | 173 | <el-form |
163 | 174 | class="form-box" |
164 | 175 | ref="formSchool" |
... | ... | @@ -208,7 +219,12 @@ |
208 | 219 | <el-button round @click="diaSchool = false">取 消</el-button> |
209 | 220 | </div> |
210 | 221 | </el-dialog> |
211 | - <el-dialog :close-on-click-modal="false" title="学校信息修改" :visible.sync="diaSchool2" width="400"> | |
222 | + <el-dialog | |
223 | + :close-on-click-modal="false" | |
224 | + title="学校信息修改" | |
225 | + :visible.sync="diaSchool2" | |
226 | + width="400" | |
227 | + > | |
212 | 228 | <el-form |
213 | 229 | class="form-box" |
214 | 230 | ref="formSchool2" |
... | ... | @@ -470,6 +486,7 @@ export default { |
470 | 486 | this.loading = true; |
471 | 487 | const { data, status, info } = await this.$request.schoolList({ |
472 | 488 | regionId: this.showId, |
489 | + needCount: 1, | |
473 | 490 | }); |
474 | 491 | this.loading = false; |
475 | 492 | if (status === 0) { | ... | ... |
src/views/standard/setUp/teacher.vue
... | ... | @@ -45,6 +45,7 @@ |
45 | 45 | class="sel sel2" |
46 | 46 | clearable |
47 | 47 | placeholder="选择范围" |
48 | + @change="_QueryData(1)" | |
48 | 49 | v-model="query.gradeClassSub" |
49 | 50 | :options="gradeClassSubList" |
50 | 51 | :props="{ |
... | ... | @@ -93,9 +94,9 @@ |
93 | 94 | @click="_QueryData(3)" |
94 | 95 | ></el-button> |
95 | 96 | </el-input> |
96 | - <el-button class="serach-box" round @click="_QueryData(1)" | |
97 | + <!-- <el-button class="serach-box" round @click="_QueryData(4)" | |
97 | 98 | >筛选</el-button |
98 | - > | |
99 | + > --> | |
99 | 100 | </div> |
100 | 101 | </div> |
101 | 102 | <p class="total" v-if="teacherList.length"> | ... | ... |