SchoolManager.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642
  1. <!-- 活动解析 -->
  2. <template>
  3. <div>
  4. <!-- table 表格 -->
  5. <el-row :gutter="20" class="main-items" >
  6. <el-col class="aside" :span="4" :offset="1" style="padding: 0 !important;">
  7. <div class="table-aside" v-for='(v, k) in ItemList' :key='k' :class="{active:k == checkindex}" @click="selectTitle(k)">{{v.text}}</div>
  8. </el-col>
  9. <!--数据监控-->
  10. <el-col :span="18" class="main" v-if="checkindex == 0">
  11. <el-row :gutter="20" class="main-header">
  12. <el-col :span="3"><div class="main-header-item" >在线:6人</div></el-col>
  13. <el-col :span="3"><div class="main-header-item" >离线:26人</div></el-col>
  14. <el-col :span="5"><div class="main-header-item"><span>分配未批改作业:4份</span><span class="main-header-link" @click="isShow(1)">去分配</span></div></el-col>
  15. <el-col :span="10" :offset="3">
  16. <el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
  17. <el-select v-model="select" slot="prepend" placeholder="选年级" minlength="20">
  18. <el-option label="一年级" value="1"></el-option>
  19. </el-select>
  20. <el-select v-model="select" slot="prepend" placeholder="选科目" minlength="20">
  21. <el-option label="数学" value="1"></el-option>
  22. </el-select>
  23. <el-button slot="append" icon="el-icon-search"></el-button>
  24. </el-input>
  25. </el-col>
  26. </el-row>
  27. <el-row :gutter="20" class="main-header">
  28. <el-col :span="24">
  29. <div class="table">
  30. <div class="table-head">
  31. <div>头像</div>
  32. <div>姓名</div>
  33. <div>等待作业数</div>
  34. <div>作业最长等待时长</div>
  35. <div>累计批改时间</div>
  36. <div>响应速度</div>
  37. <div>状态</div>
  38. </div>
  39. <div class="tr">
  40. <div class="tr-first">
  41. <div>
  42. <i :class="[isDown?'el-icon-caret-bottom':'el-icon-caret-top']" @click="dropDown()"></i>
  43. <img src="../../assets/img/user.jpg" alt="" class="table-img">
  44. </div>
  45. <div>颜如玉</div>
  46. <div>2份</div>
  47. <div class="tr-active">8:16</div>
  48. <div>12:30:04</div>
  49. <div>5:02/份</div>
  50. <div>在线</div>
  51. </div>
  52. <div class="tr-second" v-if="isDown">
  53. <div>1</div>
  54. <div>
  55. <span class="tr-second-check" @click="isShow(2)">查看</span>
  56. <span>赵同学</span>
  57. </div>
  58. <div>等待 8:16</div>
  59. <div>数学</div>
  60. <div>二年级</div>
  61. <div>未批改</div>
  62. <div>
  63. <el-button type="success" plain>去批改</el-button>
  64. <el-button type="success">去分配</el-button>
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. </el-col>
  70. </el-row>
  71. </el-col>
  72. <!--当天-->
  73. <el-col :span="18" class="main" v-if="checkindex == 1">
  74. <el-row :gutter="20" class="main-header">
  75. <el-col :span="5"><div class="main-header-item" @click="isShow(1)">今日报错总次数::6人</div></el-col>
  76. <el-col :span="10" :offset="5">
  77. <el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
  78. <el-select v-model="select" slot="prepend" placeholder="选年级" minlength="20">
  79. <el-option label="一年级" value="1"></el-option>
  80. </el-select>
  81. <el-select v-model="select" slot="prepend" placeholder="选科目" minlength="20">
  82. <el-option label="数学" value="1"></el-option>
  83. </el-select>
  84. <el-button slot="append" icon="el-icon-search"></el-button>
  85. </el-input>
  86. </el-col>
  87. <el-col :span="4">
  88. <i class="el-icon-d-arrow-left"></i>
  89. <span class="today-time">2019-02-04</span>
  90. <i class="el-icon-d-arrow-right"></i>
  91. </el-col>
  92. </el-row>
  93. <el-table
  94. :data="dataList"
  95. highlight-current-row
  96. size="mini"
  97. stripe
  98. >
  99. <el-table-column
  100. label="头像"
  101. header-align="center"
  102. >
  103. <template scope="scope">
  104. <img :src="scope.row.img" alt="" class="table-img">
  105. </template>
  106. </el-table-column>
  107. <el-table-column
  108. prop="names"
  109. label="姓名"
  110. header-align="center"
  111. >
  112. </el-table-column>
  113. <el-table-column
  114. prop="number"
  115. label="被报错"
  116. header-align="center"
  117. ></el-table-column>
  118. <el-table-column
  119. prop="time"
  120. label="科目"
  121. header-align="center">
  122. </el-table-column>
  123. <el-table-column
  124. prop="allTime"
  125. label="批改总份数"
  126. header-align="center"
  127. >
  128. </el-table-column>
  129. <el-table-column
  130. prop="rate"
  131. label="批改总张数"
  132. header-align="center"></el-table-column>
  133. <el-table-column
  134. prop="status"
  135. label="平均批改时间"
  136. header-align="center"></el-table-column>
  137. <el-table-column
  138. prop="status"
  139. label="出勤"
  140. header-align="center"></el-table-column>
  141. </el-table>
  142. </el-col>
  143. <!--当月-->
  144. <el-col :span="18" class="main" v-if="checkindex == 2">
  145. <el-row :gutter="20" class="main-header">
  146. <el-col :span="5"><div class="main-header-item" @click="isShow(1)">当月报错总次数:6人</div></el-col>
  147. <el-col :span="10" :offset="5">
  148. <el-input placeholder="请输入老师" v-model="input3" class="input-with-select">
  149. <el-select v-model="select" slot="prepend" placeholder="选年级" minlength="20">
  150. <el-option label="一年级" value="1"></el-option>
  151. </el-select>
  152. <el-select v-model="select" slot="prepend" placeholder="选科目" minlength="20">
  153. <el-option label="数学" value="1"></el-option>
  154. </el-select>
  155. <el-button slot="append" icon="el-icon-search"></el-button>
  156. </el-input>
  157. </el-col>
  158. <el-col :span="4">
  159. <i class="el-icon-d-arrow-left"></i>
  160. <span class="today-time">2019-02-04</span>
  161. <i class="el-icon-d-arrow-right"></i>
  162. </el-col>
  163. </el-row>
  164. <el-table
  165. :data="dataList"
  166. highlight-current-row
  167. size="mini"
  168. stripe
  169. >
  170. <el-table-column
  171. label="头像"
  172. header-align="center"
  173. >
  174. <template scope="scope">
  175. <img :src="scope.row.img" alt="" class="table-img">
  176. </template>
  177. </el-table-column>
  178. <el-table-column
  179. prop="names"
  180. label="姓名"
  181. header-align="center"
  182. >
  183. </el-table-column>
  184. <el-table-column
  185. prop="number"
  186. label="被报错"
  187. header-align="center"
  188. ></el-table-column>
  189. <el-table-column
  190. prop="time"
  191. label="科目"
  192. header-align="center">
  193. </el-table-column>
  194. <el-table-column
  195. prop="allTime"
  196. label="批改总份数"
  197. header-align="center"
  198. >
  199. </el-table-column>
  200. <el-table-column
  201. prop="rate"
  202. label="批改总张数"
  203. header-align="center"></el-table-column>
  204. <el-table-column
  205. prop="status"
  206. label="正确率"
  207. header-align="center"></el-table-column>
  208. <el-table-column
  209. prop="status"
  210. label="满意度"
  211. header-align="center"></el-table-column>
  212. <el-table-column
  213. prop="status"
  214. label="平均批改时间"
  215. header-align="center"></el-table-column>
  216. <el-table-column
  217. prop="status"
  218. label="出勤率"
  219. header-align="center"></el-table-column>
  220. </el-table>
  221. </el-col>
  222. <!-- 分页显示 -->
  223. <!--<el-pagination-->
  224. <!--background-->
  225. <!--class="all_pagination"-->
  226. <!--@size-change="handleSizeChange"-->
  227. <!--@current-change="pageChange"-->
  228. <!--:page-sizes="[10, 20, 30, 40]"-->
  229. <!--:page-size="10"-->
  230. <!--layout="total, sizes, prev, pager, next, jumper"-->
  231. <!--:total="filters.count">-->
  232. <!--</el-pagination>-->
  233. </el-row>
  234. <!--可分配老师-->
  235. <div class='showModel' @click="allShowModel(1)" v-if="hiddenModel"></div>
  236. <div class='model' v-if="hiddenModel">
  237. <div class='model-text'>
  238. <div class="model-text-head">
  239. <div>可分配老师</div>
  240. <div>二年级数学</div>
  241. </div>
  242. <div class="model-items">
  243. <div class="model-items-left">
  244. <div class="model-items-left-top">
  245. <div>
  246. <img src="../../assets/img/user.jpg" alt="" class="model-items-left-top-img">
  247. <div style="display: inline-block">
  248. <div style="font-size: 24px">李大柱</div>
  249. <div class="model-items-left-top-number">等待学生:0</div>
  250. </div>
  251. </div>
  252. <div> <el-button type="success">分配</el-button></div>
  253. </div>
  254. </div>
  255. <div class="model-items-left">
  256. <div class="model-items-left-top">
  257. <div>
  258. <img src="../../assets/img/user.jpg" alt="" class="model-items-left-top-img">
  259. <div style="display: inline-block">
  260. <div style="font-size: 24px">李大柱</div>
  261. <div class="model-items-left-top-number">等待学生:0</div>
  262. </div>
  263. </div>
  264. <div> <el-button type="success">分配</el-button></div>
  265. </div>
  266. </div>
  267. </div>
  268. </div>
  269. </div>
  270. <!--所有未批改作业-->
  271. <div class='showModel' @click="allShowModel(2)" v-if="isPigai"></div>
  272. <div class='model' v-if="isPigai">
  273. <div class='model-text'>
  274. <div class="model-text-head">
  275. <div>所有未批改作业</div>
  276. </div>
  277. <el-table
  278. :data="tableData"
  279. style="width: 100%">
  280. <el-table-column
  281. prop="date"
  282. label="日期"
  283. width="180">
  284. </el-table-column>
  285. <el-table-column
  286. prop="name"
  287. label="姓名"
  288. width="180">
  289. </el-table-column>
  290. <el-table-column
  291. prop="address"
  292. label="地址">
  293. </el-table-column>
  294. </el-table>
  295. </div>
  296. </div>
  297. </div>
  298. </template>
  299. <script>
  300. import { mapGetters, mapActions } from "vuex";
  301. export default {
  302. components: { },
  303. name: "actvResolveLabel",
  304. props: {},
  305. data() {
  306. return {
  307. checkindex: 0,
  308. hiddenModel:false,
  309. isPigai:false,
  310. isDown:false,
  311. ItemList: [
  312. {
  313. text:'数据监控'
  314. },
  315. {
  316. text:'当天'
  317. },
  318. {
  319. text:'当月'
  320. },
  321. ],
  322. dataList:[
  323. {
  324. img:'../../assets/img/user.jpg',
  325. names:'阿三',
  326. number:'3',
  327. time:'14:22',
  328. allTime:'14:22',
  329. rate:'222',
  330. status:'22'
  331. },
  332. {
  333. img:'../../assets/img/user.jpg',
  334. names:'阿三',
  335. number:'3',
  336. time:'14:22',
  337. allTime:'14:22',
  338. rate:'222',
  339. status:'22'
  340. }
  341. ],
  342. filters: {
  343. actvNm: "",
  344. actvCrtUserId: "",
  345. actvType: "",
  346. actvSmallType: "",
  347. // 排序
  348. pageNo: 1,
  349. pageSize: 10,
  350. count: 0,
  351. orderField: "",
  352. orderAD: ""
  353. }
  354. };
  355. },
  356. watch: {},
  357. computed: {
  358. ...mapGetters(["getUser"])
  359. },
  360. methods: {
  361. ...mapActions(["setUser"]),
  362. selectTitle(k) {
  363. console.log(k);
  364. this.checkindex = k;
  365. },
  366. isShow(str){
  367. let _this = this;
  368. console.log(str)
  369. if (str == 1){
  370. _this.hiddenModel = true;
  371. } else if (str == 2){
  372. _this.isPigai = true;
  373. }
  374. },
  375. //关闭弹框
  376. allShowModel(str) {
  377. let _this = this;
  378. if (str == 1){
  379. _this.hiddenModel = false;
  380. } else if (str == 2){
  381. _this.isPigai = false;
  382. }
  383. },
  384. // 输入框按键方法
  385. keyCodeMethod(e) {
  386. if (e.keyCode === 13) return this.itemListReshow();
  387. },
  388. expandChange(row, expandRows) {
  389. for (let item of expandRows) {
  390. if (row === item) {
  391. this.expandRowKeys = [row.nodId];
  392. }
  393. }
  394. },
  395. // 点击下拉
  396. dropDown(){
  397. this.isDown = !this.isDown;
  398. },
  399. // 分页
  400. pageChange(val) {
  401. this.filters.pageNo = val;
  402. this.itemListReshow();
  403. },
  404. changeDateSlot(dateSlot) {
  405. if (dateSlot) {
  406. this.filters.startDate = dateSlot[0];
  407. this.filters.endDate = dateSlot[1];
  408. } else {
  409. this.filters.startDate = null;
  410. this.filters.endDate = null;
  411. }
  412. },
  413. actvTypeChange(typeList) {
  414. switch (typeList.length) {
  415. case 1:
  416. this.filters.actvType = typeList[0];
  417. this.filters.actvSmallType = null;
  418. break;
  419. case 2:
  420. this.filters.actvType = null;
  421. this.filters.actvSmallType = typeList[1];
  422. break;
  423. default:
  424. this.filters.actvType = null;
  425. this.filters.actvSmallType = null;
  426. break;
  427. }
  428. },
  429. handleSizeChange(val) {
  430. this.filters.pageSize = val;
  431. this.itemListReshow();
  432. },
  433. // 排序
  434. sortChange(sort) {
  435. this.filters.orderField = sort.prop;
  436. this.filters.orderAD = sort.order != null ? sort.order : "";
  437. this.itemListReshow();
  438. },
  439. clearSearch() {
  440. this.filters.actvNm = null;
  441. this.filters.actvCrtUserId = null;
  442. this.filters.actvType = null;
  443. this.filters.actvSmallType = null;
  444. this.filtersActvType = [];
  445. this.createDateSlot = null;
  446. },
  447. // 获取创建人列表
  448. // async getUserNameList() {
  449. // let {
  450. // userNameList = []
  451. // } = await this.$dao.actv.marketActDao.getUserNameList();
  452. // this.userNameList = userNameList || [];
  453. // let { list = [] } = await this.$dao.bsnsActvTypeAllList();
  454. // this.actvTypeList = list || [];
  455. // }
  456. },
  457. mounted() {
  458. // this.getsetDictByType2();
  459. // this.getUserNameList();
  460. // this.itemListReshow();
  461. }
  462. };
  463. </script>
  464. <!-- Add "scoped" attribute to limit CSS to this component only -->
  465. <style scoped>
  466. .aside{
  467. background-color: #fff;
  468. margin-top: 16px;
  469. padding: 0;
  470. min-height: 880px;
  471. }
  472. .main{
  473. background-color: #fff;
  474. margin: 16px;
  475. padding: 0 !important;
  476. min-height: 980px;
  477. }
  478. .table-aside{
  479. color: #666666;
  480. font-size: 18px;
  481. text-align: center;
  482. line-height: 60px;
  483. }
  484. el-table{
  485. color: #999999;
  486. font-size: 18px;
  487. }
  488. .main-items{
  489. color: #393939;
  490. text-align: center;
  491. line-height: 80px;
  492. }
  493. .main-header-item{
  494. font-size: 20px;
  495. }
  496. .main-header-link{
  497. color: #52CC60;
  498. font-size: 18px;
  499. margin-left: 10px;
  500. text-decoration:underline
  501. }
  502. .el-select{
  503. width: 100px;
  504. margin: 0 5px;
  505. }
  506. .input-with-select .el-input-group__prepend {
  507. background-color: #fff;
  508. }
  509. .active{
  510. background-color: #52CC60;
  511. color: #fff;
  512. }
  513. .el-input__inner{
  514. height: 32px;
  515. }
  516. .table-img{
  517. width:36px;
  518. height:36px;
  519. border-radius:6px;
  520. margin-left: 14px;
  521. }
  522. .table{
  523. width: 94.5%;
  524. border-top:1px solid #E5E5E5;
  525. margin: 0 43px;
  526. }
  527. .table-head{
  528. color: #999999;
  529. font-size: 18px;
  530. text-align: center;
  531. display: flex;
  532. justify-content: space-around;
  533. }
  534. .table-head>div{
  535. width: 13.528%;
  536. }
  537. .tr{
  538. width: 100%;
  539. color: #393939;
  540. font-size: 20px;
  541. text-align: center;
  542. }
  543. .tr-first{
  544. display: flex;
  545. justify-content: space-around;
  546. }
  547. .tr-first>div{
  548. width: 13.528%;
  549. }
  550. .tr-second{
  551. background-color: #FBFBFB;
  552. margin: 0 115px;
  553. display: flex;
  554. justify-content: space-around;
  555. color: #393939;
  556. font-size: 20px;
  557. }
  558. .tr-second-check{
  559. color: #3AB548;
  560. font-size: 17px;
  561. text-decoration: underline;
  562. }
  563. .tr-active{
  564. color: #3AB548;
  565. }
  566. .showModel{
  567. width: 100%;
  568. height: 100%;
  569. position: fixed;
  570. top: 0;
  571. left: 0;
  572. background: #000000;
  573. opacity: 0.2;
  574. overflow: hidden;
  575. z-index: 1000;
  576. color: #fff;
  577. }
  578. .model{
  579. z-index: 10000;
  580. width:50%;
  581. height:auto;
  582. position: fixed;
  583. top: 30%;
  584. left: 25%;
  585. margin:auto;
  586. background: #fff;
  587. border-radius:30px;
  588. text-align: center;
  589. }
  590. .model-text{
  591. background:rgba(255,255,255,1);
  592. border-radius:10px;
  593. }
  594. .model-text-head{
  595. padding: 40px 50px;
  596. display: flex;
  597. color: #393939;
  598. font-size: 24px;
  599. justify-content: space-between;
  600. }
  601. .model-items-left{
  602. width: 45%;
  603. color: #393939;
  604. font-size: 24px;
  605. }
  606. .model-items-left-top{
  607. display: flex;;
  608. justify-content: space-between;
  609. }
  610. .model-items{
  611. padding: 0 50px 10px 50px;
  612. display: flex;;
  613. justify-content: space-between;
  614. }
  615. .model-items-left-top-img{
  616. width:68px;
  617. height:68px;
  618. border-radius:8px;
  619. position: relative;
  620. bottom: 25px;
  621. }
  622. .model-items-left-top-number{
  623. color: #7E7E7E;
  624. font-size: 18px;
  625. margin-left: 10px;
  626. }
  627. .today-time{
  628. color: #7E7E7E;
  629. font-size: 18px;
  630. margin: 0 20px;
  631. }
  632. </style>