Commit 21dfdeae42638efda117a313af013e4d57b39001
1 parent
03bce046
平台管理员
Showing
14 changed files
with
1009 additions
and
227 deletions
src/api/apis/apis.js
... | ... | @@ -1120,4 +1120,46 @@ export default { |
1120 | 1120 | data |
1121 | 1121 | }); |
1122 | 1122 | }, |
1123 | + | |
1124 | + /** 平台管理 */ | |
1125 | + //账户管理 | |
1126 | + tenantPage(data) { | |
1127 | + return service({ | |
1128 | + url: setUpUrls.tenantPage, | |
1129 | + method: "POST", | |
1130 | + data | |
1131 | + }); | |
1132 | + }, | |
1133 | + //修改账号 | |
1134 | + updateTenant(data) { | |
1135 | + return service({ | |
1136 | + url: setUpUrls.updateTenant, | |
1137 | + method: "POST", | |
1138 | + data | |
1139 | + }); | |
1140 | + }, | |
1141 | + //新增租户账号 | |
1142 | + addTenant(data) { | |
1143 | + return service({ | |
1144 | + url: setUpUrls.addTenant, | |
1145 | + method: "POST", | |
1146 | + data | |
1147 | + }); | |
1148 | + }, | |
1149 | + //授课端版本管理 | |
1150 | + versionPage(data) { | |
1151 | + return service({ | |
1152 | + url: setUpUrls.versionPage, | |
1153 | + method: "POST", | |
1154 | + data | |
1155 | + }); | |
1156 | + }, | |
1157 | + //新增授课端版本 | |
1158 | + addVersion(data) { | |
1159 | + return service({ | |
1160 | + url: setUpUrls.addVersion, | |
1161 | + method: "POST", | |
1162 | + data | |
1163 | + }); | |
1164 | + }, | |
1123 | 1165 | }; | ... | ... |
src/router/permission.js
src/store/index.js
... | ... | @@ -40,9 +40,9 @@ const store = new Vuex.Store({ |
40 | 40 | }, |
41 | 41 | setRouters: (state, routers) => { |
42 | 42 | let addrouterList = [] |
43 | - if(state.info.showRole == 'ROLE_PINGTAI'){ | |
43 | + if(state.info.showRole == 'ROLE_PERSONAL'){ | |
44 | 44 | addrouterList = [...addroutersPersonal] |
45 | - }else if(state.info.showRole == 'ROLE_ADMIN'){ | |
45 | + }else if(state.info.showRole == 'ROLE_PINGTAI'){ | |
46 | 46 | addrouterList = [...addRoutersAdmin] |
47 | 47 | }else{ |
48 | 48 | addrouterList = [...addrouters] |
... | ... | @@ -80,33 +80,33 @@ const store = new Vuex.Store({ |
80 | 80 | const userInfo = { ...response.data }; |
81 | 81 | if (userInfo.permissions && userInfo.permissions.length) { |
82 | 82 | userInfo.showRoleName = response.data.permissions[0]?.roleName; |
83 | - // userInfo.showRole = response.data.permissions[0]?.role; | |
83 | + userInfo.showRole = response.data.permissions[0]?.role; | |
84 | 84 | // 开发用,测试删除 |
85 | - userInfo.showRole = "ROLE_PINGTAI"; | |
85 | + // userInfo.showRole = "ROLE_PERSONAL"; | |
86 | 86 | commit("setToken", "isLogin"); |
87 | 87 | commit("setInfo", { ...userInfo }); |
88 | - // commit("setRouters", [ | |
89 | - // ...userInfo.permissions[0]?.authorityRouter, | |
90 | - // ]); | |
88 | + commit("setRouters", [ | |
89 | + ...userInfo.permissions[0]?.authorityRouter, | |
90 | + ]); | |
91 | 91 | //start 开发用,测试删除 |
92 | - commit("setRouters", [ | |
93 | - "setUpStudent", | |
94 | - "examinationPaper", | |
95 | - "examinationPaperAdd", | |
96 | - "examinationPaperEdit", | |
97 | - "examinationPaperRecycle", | |
98 | - "ask", | |
99 | - "askAnalysis", | |
100 | - "test", | |
101 | - "testAnalysis", | |
102 | - "portrait", | |
103 | - "dataSync", | |
104 | - "down", | |
92 | + // commit("setRouters", [ | |
93 | + // "setUpStudent", | |
94 | + // "examinationPaper", | |
95 | + // "examinationPaperAdd", | |
96 | + // "examinationPaperEdit", | |
97 | + // "examinationPaperRecycle", | |
98 | + // "ask", | |
99 | + // "askAnalysis", | |
100 | + // "test", | |
101 | + // "testAnalysis", | |
102 | + // "portrait", | |
103 | + // "dataSync", | |
104 | + // "down", | |
105 | 105 | |
106 | - "account", | |
107 | - "device", | |
108 | - "clientVersion" | |
109 | - ]); | |
106 | + // "account", | |
107 | + // "device", | |
108 | + // "clientVersion" | |
109 | + // ]); | |
110 | 110 | //end |
111 | 111 | |
112 | 112 | state.addRouters.forEach((res) => { | ... | ... |
src/views/admin/account/index.vue
1 | 1 | <template> |
2 | 2 | <div> |
3 | - <back-box> | |
3 | + <back-box> | |
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="el-icon-plus" | |
12 | + size="mini" | |
13 | + plain | |
14 | + circle | |
15 | + @click="openAddDia" | |
16 | + ></el-button> | |
17 | + </el-tooltip> | |
18 | + </template> | |
7 | 19 | </back-box> |
8 | - <div class="page-content"> | |
9 | - 功能开发中。 | |
20 | + <div class="answer-header"> | |
21 | + <div class="sel-box"> | |
22 | + <el-select | |
23 | + class="sel" | |
24 | + v-model="query.versionType" | |
25 | + placeholder="选择账号类型" | |
26 | + @change="(page = 1), _QueryData()" | |
27 | + > | |
28 | + <el-option label="无" :value="0"></el-option> | |
29 | + <el-option label="标准版" :value="1"></el-option> | |
30 | + <el-option label="个人版" :value="2"></el-option> | |
31 | + <el-option label="定制版" :value="3"></el-option> | |
32 | + </el-select> | |
33 | + <el-select | |
34 | + class="sel" | |
35 | + v-model="query.available" | |
36 | + placeholder="选择账号状态" | |
37 | + @change="(page = 1), _QueryData()" | |
38 | + > | |
39 | + <el-option label="正常" :value="0"></el-option> | |
40 | + <el-option label="禁用" :value="1"></el-option> | |
41 | + </el-select> | |
42 | + <el-input | |
43 | + placeholder="请输入账号名称" | |
44 | + v-model="query.loginName" | |
45 | + class="input-with-select" | |
46 | + @keyup.enter.native="(page = 1), _QueryData()" | |
47 | + > | |
48 | + <el-button | |
49 | + slot="append" | |
50 | + icon="el-icon-search" | |
51 | + @click="(page = 1), _QueryData()" | |
52 | + ></el-button> | |
53 | + </el-input> | |
54 | + <el-button type="primary" round @click="(page = 1), _QueryData()" | |
55 | + >筛选</el-button | |
56 | + > | |
57 | + </div> | |
58 | + </div> | |
59 | + <div class="table-box"> | |
60 | + <el-table | |
61 | + :data="tableData" | |
62 | + border | |
63 | + style="width: 100%" | |
64 | + v-loading="loading" | |
65 | + > | |
66 | + <el-table-column | |
67 | + prop="loginName" | |
68 | + label="账号" | |
69 | + align="center" | |
70 | + ></el-table-column> | |
71 | + <el-table-column | |
72 | + prop="realName" | |
73 | + label="姓名" | |
74 | + align="center" | |
75 | + ></el-table-column> | |
76 | + <el-table-column prop="versionType" label="账号类型" align="center"> | |
77 | + <template slot-scope="scoped">{{ | |
78 | + `${ | |
79 | + scoped.row.versionType == 0 | |
80 | + ? "无" | |
81 | + : scoped.row.versionType == 1 | |
82 | + ? "标准版" | |
83 | + : scoped.row.versionType == 2 | |
84 | + ? "个人版" | |
85 | + : "定制版" | |
86 | + }` | |
87 | + }}</template></el-table-column | |
88 | + > | |
89 | + <el-table-column | |
90 | + prop="tenantName" | |
91 | + label="学校名称" | |
92 | + align="center" | |
93 | + ></el-table-column> | |
94 | + <el-table-column prop="available" label="状态" align="center" | |
95 | + ><template slot-scope="scoped">{{ | |
96 | + `${scoped.row.available == 0 ? "正常" : "禁用"}` | |
97 | + }}</template></el-table-column | |
98 | + > | |
99 | + <el-table-column | |
100 | + prop="createdTime" | |
101 | + label="创建时间" | |
102 | + align="center" | |
103 | + width="200" | |
104 | + ></el-table-column> | |
105 | + <el-table-column label="操作" align="center" width="160"> | |
106 | + <template slot-scope="scoped"> | |
107 | + <el-tooltip content="修改账号" placement="left"> | |
108 | + <el-button | |
109 | + class="set-count" | |
110 | + type="primary" | |
111 | + circle | |
112 | + icon="el-icon-edit-outline" | |
113 | + size="mini" | |
114 | + @click="setCount(scoped.row)" | |
115 | + ></el-button> | |
116 | + </el-tooltip> | |
117 | + <el-dropdown | |
118 | + trigger="hover" | |
119 | + @command="handleDropdownClick($event, scoped.row)" | |
120 | + > | |
121 | + <el-button | |
122 | + type="info" | |
123 | + size="mini" | |
124 | + circle | |
125 | + icon="el-icon-more" | |
126 | + ></el-button> | |
127 | + <el-dropdown-menu slot="dropdown"> | |
128 | + <el-dropdown-item :command="0">重置密码</el-dropdown-item> | |
129 | + <el-dropdown-item :command="1">{{ | |
130 | + `${scoped.row.available == 0 ? "禁用" : "启用"}` | |
131 | + }}</el-dropdown-item> | |
132 | + <el-dropdown-item :command="2">删除</el-dropdown-item> | |
133 | + </el-dropdown-menu> | |
134 | + </el-dropdown> | |
135 | + </template> | |
136 | + </el-table-column> | |
137 | + </el-table> | |
138 | + <div class="pagination-box"> | |
139 | + <el-pagination | |
140 | + layout="total,prev, pager, next" | |
141 | + :hide-on-single-page="true" | |
142 | + :total="total" | |
143 | + @current-change="changePage" | |
144 | + :current-page="page" | |
145 | + :page-size="size" | |
146 | + > | |
147 | + </el-pagination> | |
148 | + </div> | |
10 | 149 | </div> |
150 | + <el-dialog title="修改账号信息" :visible.sync="diaCount" width="400"> | |
151 | + <el-form | |
152 | + class="form-box" | |
153 | + :model="formCount" | |
154 | + :rules="ruleCount" | |
155 | + ref="formCount" | |
156 | + label-width="160px" | |
157 | + > | |
158 | + <el-form-item label="账号:" prop="loginName"> | |
159 | + <el-col :span="12"> | |
160 | + <el-input | |
161 | + placeholder="请输入账号" | |
162 | + v-model.trim="formCount.loginName" | |
163 | + maxlength="30" | |
164 | + > | |
165 | + </el-input> | |
166 | + </el-col> | |
167 | + </el-form-item> | |
168 | + <el-form-item label="密码:" prop="password"> | |
169 | + <el-col :span="12"> | |
170 | + <el-input | |
171 | + placeholder="请输入密码" | |
172 | + v-model.trim="formCount.password" | |
173 | + maxlength="18" | |
174 | + > | |
175 | + </el-input> | |
176 | + </el-col> | |
177 | + </el-form-item> | |
178 | + <el-form-item label="联系人姓名:" prop="contactPerson"> | |
179 | + <el-col :span="12"> | |
180 | + <el-input | |
181 | + placeholder="请输入联系人姓名" | |
182 | + v-model.trim="formCount.contactPerson" | |
183 | + maxlength="12" | |
184 | + > | |
185 | + </el-input> | |
186 | + </el-col> | |
187 | + </el-form-item> | |
188 | + <el-form-item label="联系人手机号:" prop="contactPhone"> | |
189 | + <el-col :span="12"> | |
190 | + <el-input | |
191 | + placeholder="请输入联系人手机号" | |
192 | + v-model.trim="formCount.contactPhone" | |
193 | + type="number" | |
194 | + oninput="if(value.length > 11) value = value.slice(0,11)" | |
195 | + > | |
196 | + </el-input> | |
197 | + </el-col> | |
198 | + </el-form-item> | |
199 | + <el-form-item label="学校/集团名称:" prop="tenantName"> | |
200 | + <el-col :span="12"> | |
201 | + <el-input | |
202 | + placeholder="学校/集团名称" | |
203 | + v-model.trim="formCount.tenantName" | |
204 | + maxlength="30" | |
205 | + > | |
206 | + </el-input> | |
207 | + </el-col> | |
208 | + </el-form-item> | |
209 | + </el-form> | |
210 | + <div class="dialog-footer" slot="footer"> | |
211 | + <el-button @click="saveCount">确 定</el-button> | |
212 | + <el-button @click="diaCount = false">取 消</el-button> | |
213 | + </div> | |
214 | + </el-dialog> | |
215 | + <el-dialog title="添加账号" :visible.sync="diaAdd" width="400"> | |
216 | + <el-form | |
217 | + class="form-box" | |
218 | + :model="formAddCount" | |
219 | + :rules="ruleAddCount" | |
220 | + ref="formAddCount" | |
221 | + label-width="160px" | |
222 | + > | |
223 | + <el-form-item label="请输入账号:" prop="loginName"> | |
224 | + <el-col :span="12"> | |
225 | + <el-input | |
226 | + placeholder="请输入联系电话" | |
227 | + v-model.trim="formAddCount.loginName" | |
228 | + type="number" | |
229 | + oninput="if(value.length > 11) value = value.slice(0,11)" | |
230 | + > | |
231 | + </el-input> | |
232 | + </el-col> | |
233 | + </el-form-item> | |
234 | + <el-form-item label="选择账号类型:" prop="versionType"> | |
235 | + <el-col :span="12"> | |
236 | + <el-select | |
237 | + class="sel" | |
238 | + v-model="formAddCount.versionType" | |
239 | + placeholder="请选择账号类型" | |
240 | + > | |
241 | + <el-option label="无" :value="0"></el-option> | |
242 | + <el-option label="标准版" :value="1"></el-option> | |
243 | + <el-option label="个人版" :value="2"></el-option> | |
244 | + <el-option label="定制版" :value="3"></el-option> | |
245 | + </el-select> | |
246 | + </el-col> | |
247 | + </el-form-item> | |
248 | + <el-form-item label="联系人姓名:" prop="contactPerson"> | |
249 | + <el-col :span="12"> | |
250 | + <el-input | |
251 | + placeholder="请输入联系人姓名" | |
252 | + v-model.trim="formAddCount.contactPerson" | |
253 | + maxlength="12" | |
254 | + > | |
255 | + </el-input> | |
256 | + </el-col> | |
257 | + </el-form-item> | |
258 | + <el-form-item label="联系人手机号:" prop="contactPhone"> | |
259 | + <el-col :span="12"> | |
260 | + <el-input | |
261 | + placeholder="请输入联系人手机号" | |
262 | + v-model.trim="formAddCount.contactPhone" | |
263 | + type="number" | |
264 | + oninput="if(value.length > 11) value = value.slice(0,11)" | |
265 | + > | |
266 | + </el-input> | |
267 | + </el-col> | |
268 | + </el-form-item> | |
269 | + <el-form-item label="学校/集团名称:" prop="tenantName"> | |
270 | + <el-col :span="12"> | |
271 | + <el-input | |
272 | + placeholder="学校/集团名称" | |
273 | + v-model.trim="formAddCount.tenantName" | |
274 | + maxlength="30" | |
275 | + > | |
276 | + </el-input> | |
277 | + </el-col> | |
278 | + </el-form-item> | |
279 | + </el-form> | |
280 | + <div class="dialog-footer" slot="footer"> | |
281 | + <el-button @click="saveAddCount">确 定</el-button> | |
282 | + <el-button @click="diaAdd = false">取 消</el-button> | |
283 | + </div> | |
284 | + </el-dialog> | |
11 | 285 | </div> |
12 | 286 | </template> |
13 | 287 | |
14 | 288 | <script> |
289 | +import { encryptLoginPassword } from "@/utils"; | |
15 | 290 | export default { |
291 | + data() { | |
292 | + return { | |
293 | + diaAdd: false, | |
294 | + loading: false, | |
295 | + diaCount: false, | |
296 | + props: { multiple: true, checkStrictly: true }, | |
297 | + query: { | |
298 | + type: "", | |
299 | + available: "", | |
300 | + loginName: "", | |
301 | + }, | |
302 | + tableData: [], | |
303 | + total: 0, | |
304 | + page: 1, | |
305 | + size: 20, | |
306 | + formCount: { | |
307 | + loginName: "", | |
308 | + type: "", | |
309 | + tenantName: "", | |
310 | + contactPerson: "", | |
311 | + contactPhone: "", | |
312 | + }, | |
313 | + ruleCount: { | |
314 | + loginName: [{ required: true, message: "请输入账号", trigger: "blur" }], | |
315 | + password: [{ required: true, message: "请输入密码", trigger: "blur" }], | |
316 | + contactPhone: [ | |
317 | + { required: true, message: "请输入联系电话", trigger: "blur" }, | |
318 | + ], | |
319 | + contactPerson: [ | |
320 | + { required: true, message: "请输入联系人姓名", trigger: "blur" }, | |
321 | + ], | |
322 | + }, | |
323 | + formAddCount: { | |
324 | + loginName: "", | |
325 | + contactPhone: "", | |
326 | + contactPerson: "", | |
327 | + versionType: "", | |
328 | + tenantName: "", | |
329 | + }, | |
330 | + ruleAddCount: { | |
331 | + loginName: [{ required: true, message: "请输入账号", trigger: "blur" }], | |
332 | + contactPhone: [ | |
333 | + { required: true, message: "请输入联系电话", trigger: "blur" }, | |
334 | + ], | |
335 | + contactPerson: [ | |
336 | + { required: true, message: "请输入联系人姓名", trigger: "blur" }, | |
337 | + ], | |
338 | + versionType: [ | |
339 | + { required: true, message: "请选择租户类型", trigger: "blur" }, | |
340 | + ], | |
341 | + }, | |
342 | + }; | |
343 | + }, | |
344 | + created() { | |
345 | + // _QueryData(); | |
346 | + }, | |
347 | + methods: { | |
348 | + openAddDia() { | |
349 | + //添加账号 | |
350 | + this.formAddCount.loginName = ""; | |
351 | + this.formAddCount.contactPhone = ""; | |
352 | + this.formAddCount.contactPerson = ""; | |
353 | + this.formAddCount.tenantName = ""; | |
354 | + this.formAddCount.versionType = 0; | |
355 | + this.diaAdd = true; | |
356 | + }, | |
357 | + saveAddCount() { | |
358 | + //保存新增账号 | |
359 | + this.$refs.formAddCount.validate(async (valid) => { | |
360 | + if (valid) { | |
361 | + let params = { ...this.formAddCount }; | |
362 | + const { data, status, info } = await this.$request.addUser({ | |
363 | + ...params, | |
364 | + }); | |
365 | + if (status === 0) { | |
366 | + this.$message.success(info); | |
367 | + this._QueryData(); | |
368 | + this.diaAdd = false; | |
369 | + } else { | |
370 | + this.$message.error(info); | |
371 | + } | |
372 | + } else { | |
373 | + this.$message.warning("输入有误请检查!"); | |
374 | + return false; | |
375 | + } | |
376 | + }); | |
377 | + }, | |
378 | + setCount(obj) { | |
379 | + //修改账号 | |
380 | + this.formCount = { ...obj }; | |
381 | + this.diaCount = true; | |
382 | + }, | |
383 | + handleDropdownClick(value, item) { | |
384 | + console.log(item); | |
385 | + //更多 | |
386 | + if (value == 2) { | |
387 | + this.$confirm("确定要删除这条账号信息吗?", "提示", { | |
388 | + customClass: "del-model", | |
389 | + cancelButttonText: "取消", | |
390 | + confirmButtonText: "确定", | |
391 | + type: "warning", | |
392 | + }).then(() => { | |
393 | + this.updateUser(item, value); | |
394 | + }); | |
395 | + } else { | |
396 | + this.updateUser(item, value); | |
397 | + } | |
398 | + }, | |
399 | + changePage(page) { | |
400 | + this.page = page; | |
401 | + this._QueryData(); | |
402 | + }, | |
403 | + saveCount() { | |
404 | + //保存修改账号 | |
405 | + this.$refs.formCount.validate(async (valid) => { | |
406 | + if (valid) { | |
407 | + let params = { ...this.formCount }; | |
408 | + params.password = encryptLoginPassword(params.password); | |
409 | + const { data, status, info } = await this.$request.tenantUpdateUser({ | |
410 | + type: 3, | |
411 | + ...params, | |
412 | + }); | |
413 | + if (status === 0) { | |
414 | + this.$message.success(info); | |
415 | + this.diaCount = false; | |
416 | + this._QueryData(); | |
417 | + } else { | |
418 | + this.$message.error(info); | |
419 | + } | |
420 | + } else { | |
421 | + this.$message.warning("输入有误请检查!"); | |
422 | + return false; | |
423 | + } | |
424 | + }); | |
425 | + }, | |
426 | + async updateUser(obj, type) { | |
427 | + let query = {}; | |
428 | + console.log(query); | |
429 | + if (type == 1) { | |
430 | + query.available = obj.available == 0 ? 1 : 0; | |
431 | + } | |
432 | + const { data, status, info } = await this.$request.tenantUpdateUser({ | |
433 | + userId: obj.id, | |
434 | + type: type, | |
435 | + ...query, | |
436 | + }); | |
437 | + if (status === 0) { | |
438 | + this.$message.success(info); | |
439 | + this._QueryData(); | |
440 | + } else { | |
441 | + this.$message.error(info); | |
442 | + } | |
443 | + }, | |
444 | + async _QueryData() { | |
445 | + let query = { ...this.query }; | |
446 | + if (query.loginName) { | |
447 | + delete query.type; | |
448 | + delete query.available; | |
449 | + } | |
450 | + this.loading = true; | |
451 | + this.tableData = []; | |
452 | + const { data, status, info } = await this.$request.tenantPage({ | |
453 | + ...query, | |
454 | + page: this.page, | |
455 | + size: this.size, | |
456 | + }); | |
16 | 457 | |
17 | -} | |
458 | + this.loading = false; | |
459 | + if (status === 0) { | |
460 | + this.tableData = data.list || []; | |
461 | + this.total = data.count; | |
462 | + } else { | |
463 | + this.$message.error(info); | |
464 | + } | |
465 | + }, | |
466 | + }, | |
467 | +}; | |
18 | 468 | </script> |
19 | - | |
20 | -<style> | |
21 | - | |
469 | +<style lang="scss"> | |
470 | +.del-model { | |
471 | + .el-message-box__btns button:nth-child(1) { | |
472 | + color: #667ffd; | |
473 | + } | |
474 | +} | |
475 | +</style> | |
476 | +<style lang="scss" scoped> | |
477 | +.el-message-box .el-button--default { | |
478 | + color: red; | |
479 | +} | |
480 | +.set-count { | |
481 | + margin-right: 12px; | |
482 | +} | |
483 | +.table-box { | |
484 | + padding: 0 20px; | |
485 | +} | |
22 | 486 | </style> |
23 | 487 | \ No newline at end of file | ... | ... |
src/views/admin/clientVersion/components/upLoad.vue
0 → 100644
1 | +<template> | |
2 | + <div> | |
3 | + <slot name="down"></slot> | |
4 | + <div class="d1"> | |
5 | + <el-upload | |
6 | + class="upload-demo" | |
7 | + ref="upload" | |
8 | + :action="url" | |
9 | + :multiple="false" | |
10 | + :data="{ ...query }" | |
11 | + :with-credentials="true" | |
12 | + :limit="1" | |
13 | + :on-change="change" | |
14 | + :on-success="upSuccess" | |
15 | + :on-error="upError" | |
16 | + > | |
17 | + <!-- accept="application/vnd.ms-excel" --> | |
18 | + <div class="upload-btn"> | |
19 | + <el-button class="btn" size="mini" type="primary">选择文件</el-button> | |
20 | + </div> | |
21 | + </el-upload> | |
22 | + </div> | |
23 | + </div> | |
24 | +</template> | |
25 | + | |
26 | +<script> | |
27 | +export default { | |
28 | + name: "downUpData", | |
29 | + props: { | |
30 | + query: { | |
31 | + type: Object, | |
32 | + default: function () { | |
33 | + return {}; | |
34 | + }, | |
35 | + }, | |
36 | + url: { | |
37 | + type: String, | |
38 | + default: "", | |
39 | + }, | |
40 | + }, | |
41 | + data() { | |
42 | + return { | |
43 | + file: null, | |
44 | + }; | |
45 | + }, | |
46 | + methods: { | |
47 | + async submitUpload() { | |
48 | + this.$refs.upload.submit(); | |
49 | + | |
50 | + // const formData = new FormData() | |
51 | + // formData.append('id',this.componentId) | |
52 | + // formData.append('file',new File(this.file.raw)) | |
53 | + // let {status,info} = await uploadExcel(formData); | |
54 | + // if(status===0){ | |
55 | + // this.$message.success(info); | |
56 | + // this.$emit("upSuccess") | |
57 | + // } else { | |
58 | + // this.$message.error(info); | |
59 | + // } | |
60 | + }, | |
61 | + upSuccess(res) { | |
62 | + if (res && res.status == 0) { | |
63 | + this.$message.success("上传成功"); | |
64 | + this.$emit("upSuccess", res); | |
65 | + } else { | |
66 | + this.$message.error(res.info); | |
67 | + } | |
68 | + }, | |
69 | + upError(res) { | |
70 | + if (res && res.status == 0) { | |
71 | + this.$message.error("上传失败"); | |
72 | + } else { | |
73 | + this.$message.error(res.message); | |
74 | + } | |
75 | + }, | |
76 | + change(file) { | |
77 | + this.file = file; | |
78 | + }, | |
79 | + }, | |
80 | +}; | |
81 | +</script> | |
82 | + | |
83 | +<style lang="scss" scoped> | |
84 | +.btn { | |
85 | + border-radius: 8px; | |
86 | + font-weight: normal; | |
87 | +} | |
88 | +.upload-btn { | |
89 | + .el-icon-upload { | |
90 | + font-size: 48px; | |
91 | + margin-bottom: 6px; | |
92 | + color: #667ffd; | |
93 | + } | |
94 | +} | |
95 | +</style> | ... | ... |
src/views/admin/clientVersion/components/upLoadImg.vue
0 → 100644
1 | +<template> | |
2 | + <div> | |
3 | + <slot name="down"></slot> | |
4 | + <el-upload | |
5 | + class="avatar-uploader" | |
6 | + ref="upload" | |
7 | + :action="url" | |
8 | + :multiple="false" | |
9 | + :data="{ ...query }" | |
10 | + :with-credentials="true" | |
11 | + :limit="1" | |
12 | + :on-success="upSuccess" | |
13 | + :on-error="upError" | |
14 | + > | |
15 | + <!-- accept="application/vnd.ms-excel" --> | |
16 | + <img v-if="imageUrl" :src="imageUrl" class="avatar" /> | |
17 | + <i v-else class="el-icon-plus avatar-uploader-icon"></i> | |
18 | + </el-upload> | |
19 | + </div> | |
20 | +</template> | |
21 | + | |
22 | +<script> | |
23 | +export default { | |
24 | + name: "downUpData", | |
25 | + props: { | |
26 | + query: { | |
27 | + type: Object, | |
28 | + default: function () { | |
29 | + return {}; | |
30 | + }, | |
31 | + }, | |
32 | + url: { | |
33 | + type: String, | |
34 | + default: "", | |
35 | + }, | |
36 | + }, | |
37 | + data() { | |
38 | + return { | |
39 | + file: null, | |
40 | + imageUrl: "", | |
41 | + }; | |
42 | + }, | |
43 | + methods: { | |
44 | + async submitUpload() { | |
45 | + this.$refs.upload.submit(); | |
46 | + | |
47 | + // const formData = new FormData() | |
48 | + // formData.append('id',this.componentId) | |
49 | + // formData.append('file',new File(this.file.raw)) | |
50 | + // let {status,info} = await uploadExcel(formData); | |
51 | + // if(status===0){ | |
52 | + // this.$message.success(info); | |
53 | + // this.$emit("upSuccess") | |
54 | + // } else { | |
55 | + // this.$message.error(info); | |
56 | + // } | |
57 | + }, | |
58 | + upSuccess(res, file) { | |
59 | + if (res && res.status == 0) { | |
60 | + this.imageUrl = URL.createObjectURL(file.raw); | |
61 | + this.$message.success("上传成功"); | |
62 | + this.$emit("upSuccess", res); | |
63 | + } else { | |
64 | + this.$message.error(res.info); | |
65 | + } | |
66 | + }, | |
67 | + upError(res) { | |
68 | + if (res && res.status == 0) { | |
69 | + this.$message.error("上传失败"); | |
70 | + } else { | |
71 | + this.$message.error(res.message); | |
72 | + } | |
73 | + }, | |
74 | + }, | |
75 | +}; | |
76 | +</script> | |
77 | + | |
78 | +<style> | |
79 | +.avatar-uploader { | |
80 | + line-height: 1; | |
81 | +} | |
82 | +.avatar-uploader .el-upload { | |
83 | + border: 1px dashed #d9d9d9; | |
84 | + border-radius: 6px; | |
85 | + cursor: pointer; | |
86 | + position: relative; | |
87 | + overflow: hidden; | |
88 | +} | |
89 | +.avatar-uploader .el-upload:hover { | |
90 | + border-color: #409eff; | |
91 | +} | |
92 | +.avatar-uploader .avatar-uploader-icon { | |
93 | + font-size: 24px; | |
94 | + color: #8c939d; | |
95 | + width: 80px; | |
96 | + height: 80px; | |
97 | + line-height: 80px; | |
98 | + text-align: center; | |
99 | +} | |
100 | +.avatar-uploader .avatar { | |
101 | + width: 80px; | |
102 | + height: 80px; | |
103 | + display: block; | |
104 | +} | |
105 | +</style> | ... | ... |
src/views/admin/clientVersion/index.vue
1 | 1 | <template> |
2 | 2 | <div> |
3 | - <back-box> | |
3 | + <back-box> | |
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="el-icon-plus" | |
12 | + size="mini" | |
13 | + plain | |
14 | + circle | |
15 | + @click="openAddDia" | |
16 | + ></el-button> | |
17 | + </el-tooltip> | |
18 | + </template> | |
7 | 19 | </back-box> |
8 | - <div class="page-content"> | |
9 | - 功能开发中。 | |
20 | + <div class="table-box"> | |
21 | + <el-table | |
22 | + :data="tableData" | |
23 | + border | |
24 | + style="width: 100%" | |
25 | + v-loading="loading" | |
26 | + > | |
27 | + <el-table-column | |
28 | + prop="md5" | |
29 | + label="MD5编码" | |
30 | + align="center" | |
31 | + ></el-table-column> | |
32 | + <el-table-column | |
33 | + prop="versionName" | |
34 | + label="版本名称" | |
35 | + align="center" | |
36 | + ></el-table-column> | |
37 | + <el-table-column | |
38 | + prop="versionNumber" | |
39 | + label="版本号" | |
40 | + align="center" | |
41 | + ></el-table-column> | |
42 | + <el-table-column | |
43 | + prop="createdTime" | |
44 | + label="上传时间" | |
45 | + align="center" | |
46 | + width="200" | |
47 | + ></el-table-column> | |
48 | + <el-table-column | |
49 | + prop="fileSize" | |
50 | + label="文件大小" | |
51 | + align="center" | |
52 | + ></el-table-column> | |
53 | + <el-table-column | |
54 | + prop="description" | |
55 | + label="更新描述" | |
56 | + align="center" | |
57 | + ></el-table-column> | |
58 | + <el-table-column label="操作" align="center" width="160"> | |
59 | + <template slot-scope="scoped"> | |
60 | + <el-popconfirm title="确定删除吗?" @confirm="remove(scoped.row)"> | |
61 | + <span class="del" slot="reference">删除</span> | |
62 | + </el-popconfirm> | |
63 | + </template> | |
64 | + </el-table-column> | |
65 | + </el-table> | |
66 | + <div class="pagination-box"> | |
67 | + <el-pagination | |
68 | + layout="total,prev, pager, next" | |
69 | + :hide-on-single-page="true" | |
70 | + :total="total" | |
71 | + @current-change="changePage" | |
72 | + :current-page="page" | |
73 | + :page-size="size" | |
74 | + > | |
75 | + </el-pagination> | |
76 | + </div> | |
10 | 77 | </div> |
78 | + <el-dialog title="添加账号" :visible.sync="diaAdd" width="400"> | |
79 | + <el-form | |
80 | + class="form-box" | |
81 | + :model="formAdd" | |
82 | + :rules="ruleAdd" | |
83 | + ref="formAdd" | |
84 | + label-width="160px" | |
85 | + > | |
86 | + <el-form-item label="版本名称:" prop="versionName"> | |
87 | + <el-col :span="12"> | |
88 | + <el-input | |
89 | + placeholder="请输入版本名称" | |
90 | + v-model.trim="formAdd.versionName" | |
91 | + maxlength="30" | |
92 | + > | |
93 | + </el-input> | |
94 | + </el-col> | |
95 | + </el-form-item> | |
96 | + <el-form-item label="版本号:" prop="versionNumber"> | |
97 | + <el-col :span="12"> | |
98 | + <el-input | |
99 | + placeholder="请输入版本号" | |
100 | + v-model.trim="formAdd.versionNumber" | |
101 | + maxlength="30" | |
102 | + > | |
103 | + </el-input> | |
104 | + </el-col> | |
105 | + </el-form-item> | |
106 | + <el-form-item label="软件图标:" prop="logo"> | |
107 | + <el-col :span="12"> | |
108 | + <upLoadImg :url="url" @upSuccess="logoSuccess"/> | |
109 | + </el-col> | |
110 | + </el-form-item> | |
111 | + <el-form-item label="上传全量文件包:" prop="appfiles"> | |
112 | + <el-col :span="12"> | |
113 | + <upLoad :url="url" @upSuccess="appfilesSuccess"/> | |
114 | + </el-col> | |
115 | + </el-form-item> | |
116 | + <el-form-item label="上传增量文件包:" prop="addfiles"> | |
117 | + <el-col :span="12"> | |
118 | + <upLoad :url="url" @upSuccess="addfilesSuccess"/> | |
119 | + </el-col> | |
120 | + </el-form-item> | |
121 | + <el-form-item label="更新描述:" prop="description"> | |
122 | + <el-col :span="12"> | |
123 | + <el-input | |
124 | + type="textarea" | |
125 | + :rows="3" | |
126 | + v-model="formAdd.description" | |
127 | + placeholder="填写描述" | |
128 | + ></el-input> | |
129 | + </el-col> | |
130 | + </el-form-item> | |
131 | + </el-form> | |
132 | + <div class="dialog-footer" slot="footer"> | |
133 | + <el-button @click="save">确 定</el-button> | |
134 | + <el-button @click="diaAdd = false">取 消</el-button> | |
135 | + </div> | |
136 | + </el-dialog> | |
11 | 137 | </div> |
12 | 138 | </template> |
13 | 139 | |
14 | 140 | <script> |
141 | +import upLoad from "./components/upLoad.vue" | |
142 | +import upLoadImg from "./components/upLoadImg.vue" | |
15 | 143 | export default { |
144 | + components:{ | |
145 | + upLoad, | |
146 | + upLoadImg | |
147 | + }, | |
148 | + data() { | |
149 | + return { | |
150 | + url: "/file/uploadApp", | |
151 | + loading: false, | |
152 | + diaAdd: false, | |
153 | + tableData: [ | |
154 | + { | |
155 | + schoolName: "111", | |
156 | + }, | |
157 | + ], | |
158 | + formAdd: { | |
159 | + versionName: "", | |
160 | + versionNumber: "", | |
161 | + appImage: "", | |
162 | + filePath: "", | |
163 | + incrementFilePath: "", | |
164 | + description: "", | |
165 | + }, | |
166 | + ruleAdd: { | |
167 | + versionName: [ | |
168 | + { required: true, message: "请输入版本名称", trigger: "blur" }, | |
169 | + ], | |
170 | + versionNumber: [ | |
171 | + { required: true, message: "请输入版本号", trigger: "blur" }, | |
172 | + ], | |
173 | + appImage: [ | |
174 | + { required: true, message: "请上传软件图标", trigger: "blur" }, | |
175 | + ], | |
176 | + filePath: [ | |
177 | + { required: true, message: "请上传全量文件包", trigger: "blur" }, | |
178 | + ], | |
179 | + incrementFilePath: [ | |
180 | + { required: true, message: "请上传增量文件包", trigger: "blur" }, | |
181 | + ], | |
182 | + }, | |
183 | + page: 1, | |
184 | + size: 20, | |
185 | + total: 0, | |
186 | + }; | |
187 | + }, | |
188 | + created() { | |
189 | + // this._QueryData(); | |
190 | + }, | |
191 | + methods: { | |
192 | + openAddDia() { | |
193 | + this.formAdd.versionName = ""; | |
194 | + this.formAdd.versionNumber = ""; | |
195 | + this.formAdd.appImage = ""; | |
196 | + this.formAdd.filePath = ""; | |
197 | + this.formAdd.incrementFilePath = ""; | |
198 | + this.formAdd.description = ""; | |
199 | + this.diaAdd = true; | |
200 | + }, | |
201 | + changePage(page) { | |
202 | + this.page = page; | |
203 | + this._QueryData(); | |
204 | + }, | |
205 | + remove(obj) {}, | |
206 | + logoSuccess(res){ | |
207 | + this.formAdd.appImage = res.data; | |
208 | + }, | |
209 | + appfilesSuccess(res){ | |
210 | + this.formAdd.filePath = res.data; | |
211 | + }, | |
212 | + addfilesSuccess(res){ | |
213 | + this.formAdd.incrementFilePath = res.data; | |
214 | + }, | |
215 | + save() {}, | |
216 | + async _QueryData() { | |
217 | + this.loading = true; | |
218 | + this.tableData = []; | |
219 | + const { data, status, info } = await this.$request.versionPage({ | |
220 | + page: this.page, | |
221 | + size: this.size, | |
222 | + }); | |
16 | 223 | |
17 | -} | |
224 | + this.loading = false; | |
225 | + if (status === 0) { | |
226 | + this.tableData = data.list || []; | |
227 | + this.total = data.count; | |
228 | + } else { | |
229 | + this.$message.error(info); | |
230 | + } | |
231 | + }, | |
232 | + }, | |
233 | +}; | |
18 | 234 | </script> |
19 | 235 | |
20 | -<style> | |
21 | - | |
236 | +<style lang="scss" scoped> | |
237 | +.table-box { | |
238 | + padding: 20px; | |
239 | +} | |
240 | +.del { | |
241 | + font-size: 14px; | |
242 | + color: #666; | |
243 | + cursor: pointer; | |
244 | +} | |
22 | 245 | </style> |
23 | 246 | \ No newline at end of file | ... | ... |
src/views/admin/device/index.vue
... | ... | @@ -10,7 +10,6 @@ |
10 | 10 | <el-radio-group v-model="type"> |
11 | 11 | <el-radio-button :label="1">基站管理</el-radio-button> |
12 | 12 | <el-radio-button :label="2">答题器管理</el-radio-button> |
13 | - <el-radio-button :label="3">授课端管理</el-radio-button> | |
14 | 13 | </el-radio-group> |
15 | 14 | </div> |
16 | 15 | <div class="content"> |
... | ... | @@ -24,32 +23,20 @@ |
24 | 23 | <pie-chart |
25 | 24 | id="pieChart" |
26 | 25 | :params="chartData" |
27 | - @clickPieChart="clickPieChart" | |
28 | 26 | ></pie-chart> |
29 | 27 | </div> |
30 | 28 | </div> |
31 | 29 | <div class="table-box"> |
32 | 30 | <div class="answer-header"> |
33 | 31 | <div class="sel-box"> |
34 | - <el-cascader | |
35 | - size="small" | |
36 | - class="sel sel2" | |
37 | - clearable | |
38 | - placeholder="选择班级" | |
39 | - v-model="query.classId" | |
40 | - :options="gradeList" | |
41 | - :props="props" | |
42 | - collapse-tags | |
43 | - :show-all-levels="false" | |
44 | - ></el-cascader> | |
45 | 32 | <el-select |
46 | 33 | class="sel" |
47 | - v-model="query.onlineStatus" | |
48 | - placeholder="选择状态" | |
34 | + v-model="query.school" | |
35 | + placeholder="选择学校" | |
49 | 36 | @change="_QueryData(true)" |
50 | 37 | > |
51 | 38 | <el-option |
52 | - v-for="item in statusList" | |
39 | + v-for="item in schoolList" | |
53 | 40 | :key="item.value" |
54 | 41 | :label="item.label" |
55 | 42 | :value="item.value" |
... | ... | @@ -57,7 +44,7 @@ |
57 | 44 | </el-option> |
58 | 45 | </el-select> |
59 | 46 | <el-input |
60 | - placeholder="请输入设备编码" | |
47 | + placeholder="请输入租户" | |
61 | 48 | v-model="query.sn" |
62 | 49 | class="input-with-select" |
63 | 50 | @keyup.enter.native="_QueryData(true)" |
... | ... | @@ -147,32 +134,20 @@ |
147 | 134 | <scatter-chart |
148 | 135 | id="scatterChart" |
149 | 136 | :params="chartData2" |
150 | - @clickScatterChart="clickScatterChart" | |
151 | 137 | ></scatter-chart> |
152 | 138 | </div> |
153 | 139 | </div> |
154 | 140 | <div class="table-box"> |
155 | 141 | <div class="answer-header"> |
156 | 142 | <div class="sel-box"> |
157 | - <el-cascader | |
158 | - size="small" | |
159 | - class="sel sel2" | |
160 | - clearable | |
161 | - placeholder="选择班级" | |
162 | - v-model="query.classId" | |
163 | - :options="gradeList" | |
164 | - :props="props" | |
165 | - collapse-tags | |
166 | - :show-all-levels="false" | |
167 | - ></el-cascader> | |
168 | - <el-select | |
143 | + <el-select | |
169 | 144 | class="sel" |
170 | - v-model="query.type" | |
171 | - placeholder="选择状态" | |
145 | + v-model="query.school" | |
146 | + placeholder="选择学校" | |
172 | 147 | @change="_QueryData(true)" |
173 | 148 | > |
174 | 149 | <el-option |
175 | - v-for="item in typeList" | |
150 | + v-for="item in schoolList" | |
176 | 151 | :key="item.value" |
177 | 152 | :label="item.label" |
178 | 153 | :value="item.value" |
... | ... | @@ -180,7 +155,7 @@ |
180 | 155 | </el-option> |
181 | 156 | </el-select> |
182 | 157 | <el-input |
183 | - placeholder="请输入设备编码" | |
158 | + placeholder="请输入租户" | |
184 | 159 | v-model="query.sn" |
185 | 160 | class="input-with-select" |
186 | 161 | @keyup.enter.native="_QueryData(true)" |
... | ... | @@ -303,36 +278,12 @@ export default { |
303 | 278 | return { |
304 | 279 | code: "", |
305 | 280 | loading: false, |
306 | - gradeList: [], | |
307 | - gradeListAll: [], | |
308 | - schoolAll: [], | |
309 | - school: {}, //校园账号所属学校信息 | |
310 | - props: { | |
311 | - multiple: true, | |
312 | - checkStrictly: true, | |
313 | - }, | |
281 | + schoolList: [], | |
314 | 282 | type: 1, |
315 | 283 | query: { |
316 | - classId: [], | |
317 | - onlineStatus: "", | |
318 | - sn: "", | |
319 | - type: "", | |
284 | + school: [], | |
285 | + zuhu: "", | |
320 | 286 | }, |
321 | - statusList: [ | |
322 | - { label: "全部", value: "" }, | |
323 | - { label: "离线", value: 0 }, | |
324 | - { label: "在线", value: 1 }, | |
325 | - { label: "异常", value: 2 }, | |
326 | - ], | |
327 | - typeList: [ | |
328 | - { label: "全部", value: 0 }, | |
329 | - { label: "1日内", value: 1 }, | |
330 | - { label: "3日内", value: 2 }, | |
331 | - { label: "7日内", value: 3 }, | |
332 | - { label: "1月内", value: 4 }, | |
333 | - { label: "3月内", value: 5 }, | |
334 | - { label: "3月以上", value: 6 }, | |
335 | - ], | |
336 | 287 | tableData: [], |
337 | 288 | total: 0, |
338 | 289 | count: 0, |
... | ... | @@ -344,37 +295,8 @@ export default { |
344 | 295 | }, |
345 | 296 | created() { |
346 | 297 | this.code = localStorage.getItem("csCode") || ""; |
347 | - | |
348 | - (this.props.lazy = true), | |
349 | - (this.props.lazyLoad = function (node, resolve) { | |
350 | - const { level } = node; | |
351 | - if (level == 2) { | |
352 | - console.log(node); | |
353 | - api | |
354 | - .tenantClassList({ | |
355 | - schoolId: node.data.value, | |
356 | - }) | |
357 | - .then((res) => { | |
358 | - let children = formatGradeNameClass(res.data?.list).sort( | |
359 | - (a, b) => { | |
360 | - return a.grade - b.grade; | |
361 | - } | |
362 | - ); | |
363 | - console.log(); | |
364 | - | |
365 | - const nodes = [...children]; | |
366 | - // 通过调用resolve将子节点数据返回,通知组件数据加载完成 | |
367 | - resolve(nodes); | |
368 | - }); | |
369 | - } else { | |
370 | - resolve(node); | |
371 | - } | |
372 | - }); | |
373 | - | |
374 | - this.stationReport(); | |
375 | - this._QueryGradeList(); | |
376 | - this._QueryData(); | |
377 | - this.showSchool(); | |
298 | + // this.stationReport(); | |
299 | + // this._QueryData(); | |
378 | 300 | }, |
379 | 301 | activated() { |
380 | 302 | const that = this; |
... | ... | @@ -383,16 +305,13 @@ export default { |
383 | 305 | that.page = 1; |
384 | 306 | that.total = 0; |
385 | 307 | that.count = 0; |
386 | - that.query.classId = []; | |
387 | - that.query.onlineStatus = ""; | |
388 | - that.query.sn = ""; | |
389 | - that.query.type = ""; | |
390 | - that.stationReport(); | |
391 | - that._QueryData(); | |
308 | + that.query.school = ""; | |
309 | + that.query.zuhu = ""; | |
310 | + // that.stationReport(); | |
311 | + // that._QueryData(); | |
392 | 312 | }); |
393 | 313 | }, |
394 | 314 | methods: { |
395 | - | |
396 | 315 | linkTo(obj, type) { |
397 | 316 | this.$router.push({ |
398 | 317 | path: "/deviceLog", |
... | ... | @@ -402,87 +321,10 @@ export default { |
402 | 321 | }, |
403 | 322 | }); |
404 | 323 | }, |
405 | - clickPieChart(obj) { | |
406 | - this.query.onlineStatus = | |
407 | - obj.name == "在线" ? 1 : obj.name == "离线" ? 0 : 2; | |
408 | - this.query.sn = ""; | |
409 | - this.query.classId = []; | |
410 | - this.page = 1; | |
411 | - this._QueryData(false); | |
412 | - }, | |
413 | - clickScatterChart(obj) { | |
414 | - this.query.type = | |
415 | - obj.name == "1日内" | |
416 | - ? 1 | |
417 | - : obj.name == "3日内" | |
418 | - ? 2 | |
419 | - : obj.name == "7日内" | |
420 | - ? 3 | |
421 | - : obj.name == "1月内" | |
422 | - ? 4 | |
423 | - : obj.name == "3月内" | |
424 | - ? 5 | |
425 | - : 6; | |
426 | - this.query.sn = ""; | |
427 | - this.query.classId = []; | |
428 | - this.page = 1; | |
429 | - this._QueryData(false); | |
430 | - }, | |
431 | 324 | changePage(page) { |
432 | 325 | this.page = page; |
433 | 326 | this._QueryData(false); |
434 | 327 | }, |
435 | - | |
436 | - async showSchool() { | |
437 | - const { data, status, info } = await this.$request.schoolList(); | |
438 | - if (status === 0) { | |
439 | - let gradeListAll = data.list?.map((item) => { | |
440 | - return { | |
441 | - value: item.id, | |
442 | - label: item.schoolName, | |
443 | - }; | |
444 | - }); | |
445 | - this.schoolAll = [ | |
446 | - { | |
447 | - value: 0, | |
448 | - label: "全部", | |
449 | - children: [...gradeListAll], | |
450 | - }, | |
451 | - ]; | |
452 | - this.gradeList = [...this.schoolAll, ...this.gradeList]; | |
453 | - } else { | |
454 | - this.$message.error(info); | |
455 | - } | |
456 | - }, | |
457 | - | |
458 | - | |
459 | - // 查找班级 | |
460 | - async _QueryGradeList() { | |
461 | - this.loading = true; | |
462 | - const { data, status, info } = await this.$request.gradeList(); | |
463 | - if (status === 0) { | |
464 | - if (!!data.list) { | |
465 | - this.gradeList = | |
466 | - data.list?.map((item) => { | |
467 | - let gradeList = { | |
468 | - value: item.id, | |
469 | - label: item.regionName, | |
470 | - }; | |
471 | - gradeList.children = | |
472 | - item.schoolList?.map((items) => { | |
473 | - return { | |
474 | - value: items.id, | |
475 | - label: items.schoolName, | |
476 | - }; | |
477 | - }) || []; | |
478 | - return gradeList; | |
479 | - }) || []; | |
480 | - this.gradeList = [...this.schoolAll, ...this.gradeList]; | |
481 | - } | |
482 | - } else { | |
483 | - this.$message.error(info); | |
484 | - } | |
485 | - }, | |
486 | 328 | // 基站统计数据 |
487 | 329 | async stationReport() { |
488 | 330 | const { data, status, info } = await this.$request.stationReport(); |
... | ... | @@ -595,13 +437,16 @@ export default { |
595 | 437 | // 设备列表信息 |
596 | 438 | async _QueryData(isRef) { |
597 | 439 | this.loading = true; |
598 | - let query = this.setQuery(); | |
440 | + let query = {...this.query}; | |
441 | + if(query.zuhu){ | |
442 | + delete query.school | |
443 | + } | |
599 | 444 | if (isRef) { |
600 | 445 | this.page = 1; |
601 | 446 | } |
602 | 447 | this.loading = true; |
603 | 448 | this.tableData = []; |
604 | - const { data, status, info } = await this.$request.deviceList({ | |
449 | + const { data, status, info } = await this.$request.pDeviceList({ | |
605 | 450 | ...query, |
606 | 451 | deviceType: this.type, |
607 | 452 | page: this.page, |
... | ... | @@ -646,7 +491,6 @@ export default { |
646 | 491 | } |
647 | 492 | .content { |
648 | 493 | background: #f8f8f8; |
649 | - border: 1px solid #e2e2e2; | |
650 | 494 | border-radius: 10px; |
651 | 495 | overflow: hidden; |
652 | 496 | :deep(.fa-edit) { | ... | ... |
src/views/admin/device/log.vue
... | ... | @@ -267,7 +267,7 @@ export default { |
267 | 267 | this._QueryData(); |
268 | 268 | }, |
269 | 269 | async _QueryDetail() { |
270 | - const { data, status, info } = await this.$request.deviceDetail({ | |
270 | + const { data, status, info } = await this.$request.pDeviceDetail({ | |
271 | 271 | deviceId: this.id, |
272 | 272 | }); |
273 | 273 | if (status === 0) { | ... | ... |
src/views/index/mainIndex.vue
... | ... | @@ -158,7 +158,7 @@ |
158 | 158 | </li> |
159 | 159 | </template> |
160 | 160 | </ul> |
161 | - <ul class="nav-list" v-if="type == 'ROLE_PINGTAI'"> | |
161 | + <ul class="nav-list" v-if="type == 'ROLE_PERSONAL'"> | |
162 | 162 | <li class="nav-item item1" @click="links('/examinationPaper')"> |
163 | 163 | <img class="icon" src="../../assets/nav/setUpAccount.png" alt="" /> |
164 | 164 | <div class="text"> |
... | ... | @@ -225,7 +225,7 @@ |
225 | 225 | </li> |
226 | 226 | |
227 | 227 | </ul> |
228 | - <ul class="nav-list" v-if="type == 'ROLE_ADMIN'"> | |
228 | + <ul class="nav-list" v-if="type == 'ROLE_PINGTAI'"> | |
229 | 229 | <li class="nav-item item1" @click="links('/account')"> |
230 | 230 | <img class="icon" src="../../assets/nav/setUpAccount.png" alt="" /> |
231 | 231 | <div class="text"> |
... | ... | @@ -279,7 +279,6 @@ export default { |
279 | 279 | }, |
280 | 280 | _Init(val) { |
281 | 281 | this.type = this.$store.getters.info.showRole || this.$store.getters.info.permissions[0].role; |
282 | - this.type = 'ROLE_PINGTAI' | |
283 | 282 | this.navList = this.$store.getters.addRouters.map((item) => { |
284 | 283 | return { |
285 | 284 | name: item.name, |
... | ... | @@ -296,7 +295,7 @@ export default { |
296 | 295 | this.tenantIndex(); |
297 | 296 | } else if (this.type == "ROLE_BANZHUREN") { |
298 | 297 | this.classIndex(); |
299 | - } else if (this.type == "ROLE_PINGTAI") { | |
298 | + } else if (this.type == "ROLE_PERSONAL") { | |
300 | 299 | this.personalIndex(); |
301 | 300 | } |
302 | 301 | }, | ... | ... |
src/views/layout/header/header.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <!-- <li> |
10 | 10 | <langSelect></langSelect> |
11 | 11 | </li> --> |
12 | - <li class="dropdown-box" v-if="role != 'ROLE_PINGTAI'"> | |
12 | + <li class="dropdown-box" v-if="role != 'ROLE_PERSONAL'&&role != 'ROLE_PINGTAI'"> | |
13 | 13 | <div class="userInfo"> |
14 | 14 | <img :src="avatar" /> |
15 | 15 | <div class="txt"> |
... | ... | @@ -34,7 +34,16 @@ |
34 | 34 | </el-dropdown-menu> |
35 | 35 | </el-dropdown> |
36 | 36 | </li> |
37 | - <li class="dropdown-box" v-else @click="linkToUserInfo"> | |
37 | + <li class="dropdown-box" v-if="role == 'ROLE_PINGTAI'"> | |
38 | + <div class="userInfo"> | |
39 | + <img :src="avatar" /> | |
40 | + <div class="txt"> | |
41 | + <p>{{ `${this.$store.getters.info.name}` }}</p> | |
42 | + <p>管理员</p> | |
43 | + </div> | |
44 | + </div> | |
45 | + </li> | |
46 | + <li class="dropdown-box" v-if="role == 'ROLE_PERSONAL'" @click="linkToUserInfo"> | |
38 | 47 | <div class="userInfo"> |
39 | 48 | <img :src="avatar" /> |
40 | 49 | <div class="txt"> | ... | ... |
src/views/personal/examinationPaper/add.vue
src/views/standard/examinationPaper/add.vue
... | ... | @@ -570,7 +570,6 @@ |
570 | 570 | questionForm.questionType == 2 || |
571 | 571 | questionForm.questionType == 6 |
572 | 572 | " |
573 | - class="answer-box" | |
574 | 573 | > |
575 | 574 | <template v-for="(option, opIdx) in rightOptions"> |
576 | 575 | <span |
... | ... | @@ -792,7 +791,7 @@ |
792 | 791 | >,</span |
793 | 792 | > |
794 | 793 | </template> |
795 | - <template v-if="formAns.qusType == 2" class="answer-box"> | |
794 | + <template v-if="formAns.qusType == 2"> | |
796 | 795 | <span |
797 | 796 | class="answer-s active" |
798 | 797 | v-for="option in formAns.answerOptions.split(',')" | ... | ... |
src/views/standard/examinationPaper/edit.vue