Browse Source

创建分支提交最新代码

TheLittlePrince 6 years ago
parent
commit
2292b69385

+ 2 - 1
.eslintrc.js

@@ -51,7 +51,8 @@ module.exports = {
     'spaced-comment':0,
     'no-cond-assign':0,
     'eqeqeq':0,
-    'standard%2Fcomputed-property-even-spacing':0
+    'standard%2Fcomputed-property-even-spacing':0,
+    'block-spacing':0
     // 'computed-property-even-spacing': 0
   }
 }

+ 1 - 1
package.json

@@ -17,7 +17,7 @@
     "axios": "^0.16.2",
     "babel-polyfill": "^6.26.0",
     "echarts": "^3.8.5",
-    "element-ui": "^2.2.2",
+    "element-ui": "^2.11.1",
     "file-loader": "^1.1.11",
     "html2canvas": "^1.0.0-rc.0",
     "js-cookie": "^2.2.0",

+ 4 - 4
src/ImgConfig/index.js

@@ -4,11 +4,11 @@ if (process.env.NODE_ENV === 'development') {
     IMG_BASE_URL = 'https://xtimg.sharingschool.com/' //测试环境图片地址
     APPOR_BASE_URL = 'https://xtkmt.sharingschool.com/kmt/index.html' //测试环境作业批改地址
 } else {
-    // IMG_BASE_URL = 'https://img.sharingschool.com'; //正式环境图片地址;
-    IMG_BASE_URL = 'https://xtimg.sharingschool.com' //实习,测试环境图片地址;
+    IMG_BASE_URL = 'https://img.sharingschool.com'; //正式环境图片地址;
+    // IMG_BASE_URL = 'https://xtimg.sharingschool.com' //实习,测试环境图片地址;
 
-    APPOR_BASE_URL = 'https://xtkmt.sharingschool.com/kmt/index.html' //测试环境作业批改地址
-    // APPOR_BASE_URL = 'https://kmt.sharingschool.com/aijia/kmt/index.html'; //正式环境作业批改地址地址;
+    // APPOR_BASE_URL = 'https://xtkmt.sharingschool.com/kmt/index.html' //测试环境作业批改地址
+    APPOR_BASE_URL = 'https://kmt.sharingschool.com/aijia/kmt/index.html'; //正式环境作业批改地址地址;
     // APPOR_BASE_URL = 'http://sxkmt.sharingschool.com/kmt/index.html' //实习环境作业批改地址
 }
 export {

+ 23 - 0
src/api/scheduling.js

@@ -0,0 +1,23 @@
+import { BASE_URL } from '@/config'
+
+const urlFn = v => BASE_URL + v
+// 排班日历表(校区管理员)
+const FindCalendarList = urlFn('/api/kmt/arrange/findCalendarList')
+// 已选时段老师列表
+const FindHaveTeacherList = urlFn('/api/kmt/arrange/findHaveTeacherList')
+// 未选时段老师列表(添加老师)
+const FindNoHaveTeacherList = urlFn('/api/kmt/arrange/findNoHaveTeacherList')
+// 时段移除老师
+const DeleteArrangeByTeacher = urlFn('/api/kmt/arrange/deleteArrangeByTeacher')
+// 时段添加老师
+const AddArrangeByTeacher = urlFn('/api/kmt/arrange/addArrangeByTeacher')
+// 组内排班老师列表
+const FindTeamTeacherList = urlFn('/api/kmt/arrange/findTeamTeacherList')
+export {
+    FindCalendarList,
+    FindHaveTeacherList,
+    FindNoHaveTeacherList,
+    DeleteArrangeByTeacher,
+    AddArrangeByTeacher,
+    FindTeamTeacherList
+}

+ 1 - 0
src/components/MenuComponent.vue

@@ -243,6 +243,7 @@ export default {
     color: #fff;
   }
   .model-text-items-close{
+     cursor: pointer;
     position: absolute;
     top: 10px;
     right: -5px;

+ 1 - 0
src/components/SuperComponent.vue

@@ -331,6 +331,7 @@ export default {
   color: #fff;
 }
 .model-text-items-close {
+   cursor: pointer;
   position: absolute;
   top: 10px;
   right: -5px;

+ 859 - 0
src/components/TeamWorkLists.vue

@@ -0,0 +1,859 @@
+<template>
+  <div>
+    <!--数据监控-->
+    <el-col :span="18" class="main">
+      <el-row :gutter="20" class="main-header">
+        <el-col :span="24">
+          <el-col :span="10">
+            <div class="selectBox">
+              <div
+                class="Ageclass"
+                @click="choiceclass()"
+                @mouseover="selectStyle()"
+                @mouseout="outStyle()"
+              >
+                <span class="age-tip">{{selecttitlepag}}</span>
+                <span :class="[gardeListDown ?'el-icon-caret-top':'el-icon-caret-bottom']"></span>
+              </div>
+              <div
+                class="class-download"
+                v-show="gardeListDown"
+                @mouseover="selectStyle()"
+                @mouseout="outStyle()"
+              >
+                <ul v-for="(item, k) in options" :key="k">
+                  <li @click="selectTip(item)">{{item.label}}</li>
+                </ul>
+              </div>
+            </div>
+            <div class="selectBox">
+              <div
+                class="Ageclass"
+                @click="choiceclass()"
+                @mouseover="selectStyle1()"
+                @mouseout="outStyle1()"
+              >
+                <span class="age-tip">{{selecttitleage}}</span>
+                <span :class="[gardeListDownage ?'el-icon-caret-top':'el-icon-caret-bottom']"></span>
+              </div>
+              <div
+                class="class-download"
+                v-show="gardeListDownage"
+                @mouseover="selectStyle1()"
+                @mouseout="outStyle1()"
+              >
+                <ul v-for="(item, k) in grades" :key="k">
+                  <li @click="selectTipage(item)">{{item.label}}</li>
+                </ul>
+              </div>
+            </div>
+          </el-col>
+        </el-col>
+        <el-col :span="24">
+          <h1 class="tiplog">{{this.month}}月排班情况</h1>
+          <div class="canlender" id="canlender">
+            <div class="tablebox1">
+              <table class="bgtable">
+                <thead>
+                  <tr>
+                    <!--汉字表头-->
+                    <th class="headTip" v-for="(item,index) in daynamearr" :key="index"><span :class="{'grayRed': item == '周六' || item == '周日'}">{{item}}</span></th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr v-for="(week,index1) in theweek()" :key="index1">
+                    <!-- {{week}} -->
+                    <td
+                      @click="showdetailModel(item)"
+                      v-for="(item,index2) in week"
+                      :key="index2"
+                      :class="{'gray': item.prevmonth || item.nextmonth}"
+                    >
+                      {{item.day}}
+                      <!-- :class="{'gray': item.prevmonth || item.nextmonth}" -->
+                      <!-- <div class="number"> <span>13</span> <span>21</span> <span>12</span></div> -->
+                      <div class="number">
+                        <div class="numberItem">
+                          <span>14</span>
+                          <span>23</span>
+                          <span>33</span>
+                        </div>
+                        <div class="numberItem">
+                          <span>最少</span>
+                          <span>饱和</span>
+                          <span>已选</span>
+                        </div>
+                      </div>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+    </el-col>
+    <!-- 排班设置弹框 -->
+    <div class="showModel" @click="allShowModel(2)" v-if="isPigai"></div>
+    <div class="model" style="width:30%; top:30%;" v-if="isPigai">
+      <div class="model-text">
+        <div class="model-text-head">
+          <div>{{this.month}}月{{this.NewDay}}日</div>
+          <div>
+            <img src="../assets/img/del@2x.png" alt @click="allShowModel(2)" />
+          </div>
+        </div>
+        <div>
+          <div class="tr-set table-heads1">
+            <div class="tr-secon">最少</div>
+            <div class="tr-secon">饱和</div>
+            <div class="tr-secon">已选</div>
+          </div>
+          <div class="tr-set">
+            <div class="tr-secon width140">10:10-12:00</div>
+            <div class="tr-secon width140">10</div>
+            <div class="tr-secon tr-sw80">13</div>
+            <div class="tr-secon tr-sw80" style="color:#7297FF">554</div>
+            <div class="Buttonhole" @click="isShow()">排班</div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 添加移除老师弹框 -->
+    <div class="showModel" @click="allShowModel(3)" v-if="isApporTeacher"></div>
+    <div class="model" style="width:30%; top:10%;" v-if="isApporTeacher">
+      <div class="model-text">
+        <div class="model-text-head">
+          <div>{{this.month}}月{{this.NewDay}}日</div>
+          <div class="teach-block">
+            <div class="Dayteach-Allot">
+              <input
+                type="text"
+                placeholder="请输入老师名字"
+                v-model="inputValue"
+                class="Dayinput-with-Allot"
+              />
+              <span class="DaySeachIcon el-icon-search"></span>
+            </div>
+          </div>
+          <div>
+            <img src="../assets/img/del@2x.png" alt @click="allShowModel(3)" />
+          </div>
+        </div>
+        <div>
+          <div class="tr-set table-heads2">
+            <div class="tr-secon1">老师</div>
+            <div class="tr-secon1">科目</div>
+            <div class="tr-secon1">出勤率</div>
+            <div class="tr-secon1">在岗率</div>
+            <div class="tr-secon1">当月已选时段</div>
+          </div>
+          <div class="abbTeachers" @click="showAddTeacherModel">
+            <span class="addLogicon">+</span> 添加老师
+          </div>
+          <div class="scrollBox">
+            <div class="tr-set">
+              <div>
+                <!-- <img :src="BASE_URL + v.imgUrl" alt class="table-img" @click="isShow(v,3)" /> -->
+                <img src="../assets/img/attt.png" alt class="table-img" />
+              </div>
+              <div class="tr-secon width140">程歌</div>
+              <div class="tr-secon width140">数学</div>
+              <div class="tr-secon width140">100%</div>
+              <div class="tr-secon tr-sw80">13%</div>
+              <div class="tr-secon tr-sw80" style="color:#7297FF">55</div>
+              <div class="Buttonhole" @click="detailTeacherTeam()">移除</div>
+            </div>
+            </div>
+          <div class="btsnius">
+            <div class="yesBtn">确定</div>
+            <div class="closeBtn">取消</div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 移除弹框 -->
+      <div class="showModel" @click="allShowModel(1)" v-if="hiddenModel"></div>
+    <div class="model" style="width:30%; top:30%;" v-if="hiddenModel">
+      <div class="model-text">
+        <div class="model-text-items">
+          <div>
+            <img
+              src="../assets/img/del@2x.png"
+              alt
+              @click="allShowModel(1)"
+              class="model-text-items-close"
+            />
+          </div>
+          <div>是否确定将{{}}老师移除?</div>
+        </div>
+        <div class="model-btn">
+          <div class="model-btn-items main-gay" @click="ApplyOperate()">是</div>
+          <div class="model-btn-items model-grdeen" @click="allShowModel(1)">否</div>
+        </div>
+      </div>
+    </div>
+     <!-- 添加老师弹框 -->
+    <div class="showModel" @click="allShowModel(4)" v-if="AddTeacherModel"></div>
+    <div class="model" style="width:30%; top:10%;" v-if="AddTeacherModel">
+      <div class="model-text">
+        <div class="model-text-head">
+          <div>选择老师</div>
+          <div class="teach-block">
+            <div class="Dayteach-Allot">
+              <input
+                type="text"
+                placeholder="请输入老师名字"
+                v-model="inputValue"
+                class="Dayinput-with-Allot"
+              />
+              <span class="DaySeachIcon el-icon-search"></span>
+            </div>
+          </div>
+          <div>
+            <img src="../assets/img/del@2x.png" alt @click="allShowModel(4)" />
+          </div>
+        </div>
+        <div>
+          <div class="tr-set table-heads2">
+            <div class="tr-secon1">老师</div>
+            <div class="tr-secon1">科目</div>
+            <div class="tr-secon1">出勤率</div>
+            <div class="tr-secon1">在岗率</div>
+            <div class="tr-secon1">当月已选时段</div>
+          </div>
+          <div class="scrollBox">
+            <div class="tr-set">
+              <div>
+                <!-- <img :src="BASE_URL + v.imgUrl" alt class="table-img" @click="isShow(v,3)" /> -->
+                <img src="../assets/img/attt.png" alt class="table-img" />
+              </div>
+              <div class="tr-secon width140">程歌</div>
+              <div class="tr-secon width140">数学</div>
+              <div class="tr-secon width140">100%</div>
+              <div class="tr-secon tr-sw80">13%</div>
+              <div class="tr-secon tr-sw80" style="color:#7297FF">55</div>
+              <div class="Selectradius" @click="AddeacherTeam()">
+                  <img v-if="this.isSelected ==false" class='Littleicon' src="../assets/img/normal.png" />
+                     <img  v-if="this.isSelected ==true" class='Littleicon' src="../assets/img/correct -hint.png" />
+              </div>
+            </div>
+             </div>
+          <div class="btsnius">
+            <div class="yesBtn">确定</div>
+            <div class="closeBtn">取消</div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { mapGetters, mapActions } from "vuex";
+import { Message } from "element-ui";
+export default {
+  name: "model",
+  components: {},
+  props: {},
+  data() {
+    return {
+      daynamearr: ["周一", "周二", "周三", "周四", "周五", "周六","周日"],
+      //本月的本期构成
+      dayarr: [],
+      year: new Date().getFullYear(),
+      D: new Date().getDate() + " ",
+      month: new Date().getMonth() + 1,
+      NewDay: "",
+      gardeListDownage: false,
+      gardeListDown: false,
+      selecttitlepag: "选年级",
+      selecttitleage: "选科目",
+      inputValue: "",
+      isSelected:false,
+      isPigai: false,
+      isApporTeacher: false, //移除添加老师
+      hiddenModel:false, //移除弹框
+      AddTeacherModel:false, //添加老师弹框
+      filters: {
+        OptionsValue: "",
+        gradesValue: "",
+        inputValue: ""
+      },
+      options: [
+        {
+          value: "0",
+          label: "匹配知识点",
+          str: "匹配知识点"
+        },
+        {
+          value: "1",
+          label: "批改老师",
+          str: "批改老师"
+        },
+        {
+          value: "2",
+          label: "全部"
+          // str:''
+        }
+      ],
+      grades: [
+        {
+          value: "0",
+          label: "语文",
+          str: "语文"
+        },
+        {
+          value: "1",
+          label: "数学",
+          str: "数学"
+        },
+        {
+          value: "2",
+          label: "英语",
+          str: "英语"
+        },
+        {
+          value: "3",
+          label: "全部"
+          // str:""
+        }
+      ]
+    };
+  },
+  watch: {},
+  computed: {
+    ...mapGetters(["UnallotHomeworkInfo"])
+  },
+  methods: {
+    //关闭弹框
+    allShowModel(str) {
+      let _this = this;
+      if (str == 1) {
+        _this.hiddenModel = false;
+        _this.isApporTeacher = true;
+      } else if (str == 2) {
+        _this.isPigai = false;
+      } else if (str == 3) {
+        _this.isApporTeacher = false;
+      } else if (str == 4) {
+        _this.AddTeacherModel = false;
+          _this.isApporTeacher = true;
+      } else if (str == 5) {
+        _this.NoAllotManagerModel = false;
+      }
+    },
+    showdetailModel(item) {
+      if (!item.prevmonth && !item.nextmonth) {
+        this.NewDay = item.day;
+        this.isPigai = true;
+      } if  (item.prevmonth){
+        Message.error("当前月份已关闭,禁止操作!");
+      } if  (item.nextmonth){
+        Message.error("当前月份未开启,禁止操作!");
+      }
+    },
+    showAddTeacherModel(){
+      this.isApporTeacher = false;
+      this.AddTeacherModel = true;
+    },
+    isShow() {
+      this.isApporTeacher = true;
+    },
+    detailTeacherTeam(){
+      this.isApporTeacher = false
+     this.hiddenModel = true;
+    },
+    AddeacherTeam(){
+      this.isSelected = true;
+    },
+    selectTip(item) {
+      this.filters.OptionsValue = item.str;
+      this.selecttitlepag = item.label;
+      this.gardeListDown = false;
+        this.GetFindCalendarListInfo()
+    },
+    selectTipage(item) {
+      this.filters.gradesValue = item.str;
+      this.selecttitleage = item.label;
+      this.gardeListDownage = false;
+        this.GetFindCalendarListInfo()
+    },
+    selectStyle1() {
+      this.gardeListDownage = true;
+    },
+    outStyle1() {
+      this.gardeListDownage = false;
+    },
+    selectStyle() {
+      this.gardeListDown = true;
+    },
+    outStyle() {
+      this.gardeListDown = false;
+    },
+    choiceclass() {
+      this.gardeListDown = true;
+    },
+    // 获取校区管理员监控数据
+    async GetFindCalendarListInfo() {
+           this.$store.dispatch("GetFindCalendarList", {
+        type: this.filters.OptionsValue,
+        subject:  this.filters.gradesValue
+      });
+    },
+    theweek: function() {
+      var _arr = [];
+      for (var i = 0; i < 6; i++) {
+        var _week = [];
+        for (var j = 0; j < 7; j++) {
+          _week.push(this.dayarr[i * 7 + j]);
+        }
+        _arr.push(_week);
+      }
+      return _arr;
+    },
+    Datainit() {
+        //需要知道这个月的第一天是星期几
+    var themonth1stday = new Date(this.year, this.month - 1, 1).getDay();
+    console.log(themonth1stday);
+    //              alert(themonth1stday)
+    //本月有多少天,这个月的最后一天就是下个月的最后一天减去一毫秒
+    var y = this.month == 12 ? this.year + 1 : this.year;
+    var m = this.month == 12 ? 1 : this.month;
+    var themonthdaysamount = new Date(new Date(y, m, 1) - 1).getDate();
+    console.log(themonthdaysamount);
+    //上个月有多少天
+    var prevmonthlastday = new Date(
+      new Date(this.year, this.month - 1, 1) - 1
+    ).getDate();
+    console.log(prevmonthlastday);
+    //              alert(prevmonthlastday)
+    while (themonth1stday-- > 1) {
+      this.dayarr.unshift({
+        day: prevmonthlastday--,
+        prevmonth: true
+      });
+    }
+    //本月的日期
+    var count = 0;
+    while (themonthdaysamount--) {
+      this.dayarr.push({
+        day: ++count
+      });
+    }
+    var c = 42 - this.dayarr.length;
+    var count2 = 1;
+    while (c-- > 0) {
+      this.dayarr.push({
+        day: count2++,
+        nextmonth: true
+      });
+    }
+    }
+  },
+
+  mounted() {
+    this.Datainit()
+    this.GetFindCalendarListInfo()
+  }
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+caption,
+th {
+  text-align: center !important;
+}
+.is-selected {
+  color: #1989fa;
+}
+.main {
+  background-color: #fff;
+  margin: 16px;
+  padding: 0 !important;
+  min-height: 1480px;
+}
+.selectBox {
+  position: relative;
+  float: left;
+  display: inline-block;
+}
+.Ageclass {
+  display: inline-block;
+  height: 40px;
+  width: 120px;
+  background-color: #f1f2f4;
+  line-height: 40px;
+  font-size: 16px;
+  cursor: pointer;
+}
+.class-download {
+  background-color: #fff;
+  width: 160px;
+  z-index: 999999;
+  position: absolute;
+  border: 1px solid #e0dddd;
+  border-radius: 5px;
+  top: 58px;
+}
+.class-download ul li {
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  cursor: pointer;
+  color: #b6b6b6;
+}
+.class-download ul li:hover {
+  background-color: #52cc60;
+  color: #ffff;
+}
+.teach-block {
+  display: inline-block;
+}
+.miniorteach-Allot {
+  float: left;
+  width: 280px;
+  position: relative;
+  height: 40px;
+  top: 15px;
+}
+.miinorSeachIcon {
+  position: absolute;
+  font-size: 20px;
+  color: #b6b6b6;
+  right: 5%;
+  margin-top: 10px;
+  cursor: pointer;
+}
+.miniorinput-with-Allot {
+  border: #b6b6b6;
+  border-radius: 5px;
+  height: 40px;
+  width: 280px;
+  font-size: 8px;
+  color: #b6b6b6;
+  text-align: left;
+  line-height: 40px;
+  background: #f1f2f4;
+  padding: 0 10px;
+  float: left;
+  outline: none !important;
+  box-shadow: none;
+}
+.age-tip {
+  width: 80%;
+  height: 40px;
+  color: #747070;
+  font-size: 12px;
+}
+* {
+  margin: 0;
+  padding: 0;
+}
+
+.canlender {
+  width: 1500px;
+  height: 400px;
+  margin: 0 auto;
+}
+
+table {
+  border-collapse: collapse;
+  width: 100%;
+}
+
+table.bgtable thead tr th {
+  height: 20px;
+  text-align: center;
+  background-color: #f9f9f9;
+  border: 1px solid #e5e5e5;
+  cursor: pointer;
+}
+
+table.bgtable tbody tr td {
+  box-sizing: border-box;
+  border: 1px solid #e5e5e5;
+  text-align: center;
+  vertical-align: top;
+  font-weight: 700;
+  cursor: pointer;
+}
+table.bgtable tbody tr td.gray {
+  color: rgb(175, 166, 166);
+  background: #ffff;
+}
+.number {
+  width: 100%;
+  height: 100px;
+}
+.number .numberItem {
+  width: 100%;
+  height: 30px;
+}
+.number .numberItem span {
+  display: inline-block;
+  width: 40px;
+  height: 30px;
+  /* background-color: #FF6465; */
+  border-radius: 10px;
+}
+.showModel {
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  background: #000000;
+  opacity: 0.2;
+  overflow: hidden;
+  z-index: 1000;
+  color: #fff;
+}
+.model {
+  z-index: 10000;
+  height: auto;
+  position: fixed;
+  left: 30%;
+  margin: auto;
+  background: #fff;
+  border-radius: 10px;
+  text-align: center;
+  min-width: 450px !important;
+  padding: 20px;
+}
+.grayRed{
+  color:red;
+}
+.model-text {
+  background: rgba(255, 255, 255, 1);
+  border-radius: 10px;
+}
+.model-text-head {
+  display: flex;
+  color: #393939;
+  font-size: 24px;
+  justify-content: space-between;
+}
+.table-heads1 {
+  margin-left: 150px !important;
+  width: 350px;
+  font-weight: 700;
+  color: #393939 !important;
+  font-size: 18px;
+  text-align: center;
+  display: flex;
+  justify-content: space-around;
+}
+.table-heads2 {
+  background-color: #fff;
+  margin-left: 40px !important;
+  width: 500px;
+  font-weight: 700;
+  color: #393939 !important;
+  font-size: 18px;
+  text-align: center;
+  display: flex;
+  justify-content: space-around;
+}
+.table-heads1 > div {
+  width: 30%;
+}
+.tr-secon1 {
+  font-size: 12px;
+  text-align: center;
+  word-wrap: break-word;
+  width: 120px;
+  line-height: 50px;
+}
+.tr-secon {
+  font-size: 12px;
+  text-align: center;
+  word-wrap: break-word;
+  width: 60px;
+  line-height: 50px;
+}
+.width120 {
+  width: 200px;
+}
+.tr-sw80 {
+  width: 120px;
+  text-align: center;
+}
+.width140 {
+  width: 140px !important;
+}
+.width400 {
+  width: 350px;
+  padding: 10px;
+  text-align: right !important;
+}
+.tiplog {
+  height: 100px;
+  width: 200px;
+  padding: 15px;
+  margin: 30px;
+  font-size: 25px;
+  font-weight: 700;
+  margin: 0 auto;
+}
+.Buttonhole {
+  cursor: pointer;
+  margin-top: 10px;
+  width: 80px;
+  height: 30px;
+  line-height: 30px;
+  border-radius: 15px;
+  background-color: #7297ff;
+  color: #fff;
+}
+.table-img {
+  width: 36px;
+  height: 36px;
+  border-radius: 6px;
+  /* margin-left: 14px; */
+  cursor: pointer;
+}
+.teach-block {
+  display: inline-block;
+}
+.Dayteach-Allot {
+  width: 400px;
+  position: relative;
+  height: 40px;
+  top: 15px;
+}
+.DaySeachIcon {
+  position: absolute;
+  font-size: 20px;
+  color: #b6b6b6;
+  right: 30%;
+  margin-top: 10px;
+  cursor: pointer;
+}
+.Dayinput-with-Allot {
+  border: #b6b6b6;
+  border-radius: 20px;
+  height: 40px;
+  width: 300px;
+  font-size: 8px;
+  color: #b6b6b6;
+  text-align: left;
+  line-height: 40px;
+  background: #f1f2f4;
+  padding: 0 10px;
+  float: left;
+  outline: none !important;
+  box-shadow: none;
+}
+.abbTeachers {
+  width: 100%;
+  height: 40px;
+  background-color: #f6f7fb;
+  border-radius: 20px;
+  text-align: left;
+  line-height: 30px;
+  font-size: 14px;
+  padding: 0 20px;
+  margin: 10px 0px;
+  cursor: pointer;
+}
+.addLogicon {
+  font-size: 30px;
+  color: #1989fa;
+  margin: 0px 20px;
+}
+.scrollBox {
+  height: 400px;
+  overflow: auto;
+  padding: 0 15px;
+}
+/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
+::-webkit-scrollbar {
+  width: 5px; /*滚动条宽度*/
+  height: 15px; /*滚动条高度*/
+}
+
+/*定义滚动条轨道 内阴影+圆角*/
+::-webkit-scrollbar-track {
+  -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.3);
+  border-radius: 10px; /*滚动条的背景区域的圆角*/
+  background-color: #fff; /*滚动条的背景颜色*/
+}
+
+/*定义滑块 内阴影+圆角*/
+::-webkit-scrollbar-thumb {
+  border-radius: 10px; /*滚动条的圆角*/
+  -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.3);
+  background-color: #bcbaba; /*滚动条的背景颜色*/
+}
+.btsnius{
+  width: 100%;
+  height: 60px;
+}
+.yesBtn{
+  margin-right:30px;
+  height: 40px;
+  width: 100px;
+  background-color: #52CC60;
+  border-radius: 10px;
+  color:#fff;
+  line-height:40px;
+  text-align:center;
+  display: inline-block;
+  cursor: pointer;
+}
+.closeBtn{
+  height: 40px;
+  width: 100px;
+  background-color: #fff;
+  border-radius: 10px;
+  color:#52CC60;
+  line-height:40px;
+  text-align:center;
+  display: inline-block;
+  border: 1px solid #52CC60;
+  cursor: pointer;
+}
+.model-grdeen {
+  background-color: #52cc60;
+  color: #fff;
+}
+.model-text-items-close {
+  cursor: pointer;
+  position: absolute;
+  top: 10px;
+  right: -5px;
+}
+.model-text-items {
+  position: relative;
+  color: #000000;
+  font-size: 24px;
+  text-align: center;
+  padding: 40px 0 50px 0;
+  margin: 0 33px;
+}
+.model-btn {
+  display: flex;
+  justify-content: space-around;
+  margin-bottom: 44px;
+  cursor: pointer;
+}
+.model-btn-items {
+  width: 154px;
+  height: 50px;
+  line-height: 50px;
+  text-align: center;
+  font-size: 18px;
+  border-radius: 4px;
+}
+.main-gay {
+  background: rgba(246, 247, 251, 1);
+  color: #7e7e7e;
+}
+.Littleicon{
+    height: 20px;
+  width:20px;
+  position:relative;
+  top:0;
+}
+</style>

+ 847 - 0
src/components/TeamworkScheduling.vue

@@ -0,0 +1,847 @@
+<!-- 活动解析 -->
+<template>
+  <div>
+    <!-- table 表格 -->
+    <!-- <el-row :gutter="18"  class="main-items"> -->
+
+    <!--当天-->
+    <el-col :span="18" class="main">
+      <el-row :gutter="20" class="main-header">
+           <el-col :span="14" :offset="0">
+              <div
+                @click="handApor()"
+                :class="{Apporvalactive:Activeindex == false,ApporStyles:true}"
+              >批改老师</div>
+              <div
+                @click="AutoApor()"
+                :class="{Apporvalactive:Activeindex == true,ApporStyles:true}"
+              >匹配知识点老师</div>
+            </el-col>
+        <el-col :span="5">
+          <div class="main-header-item" style="color:red;">
+            小组实时在岗率:
+            <span>{{errorWarningList.allErrorCount}}次</span>
+          </div>
+        </el-col>
+        <el-col :span="24">
+          <div class="table">
+            <div class="table-head">
+              <div>头像</div>
+                  <div>姓名</div>
+              <div>本月排班时段数</div>
+              <div>出勤率</div>
+                 <div>科目</div>
+            </div>
+            <div class="tr" v-for="(v, k) of errorWarningList.list" :key="k">
+              <div class="tr-first" :class="{BgcColor:k%2 !== 1}">
+                  <div>
+                <img src="../assets/img/attt.png" alt class="table-img" />
+              </div>
+                <div>{{v.studentName}}</div>
+                <div>{{v.subject}}</div>
+                   <div>{{v.subject}}</div>
+                     <div>{{v.subject}}</div>
+                <div class="tr-seconds">
+                  <span
+                    @click="groupDetail(v)"
+                    style="cursor: pointer;"
+                    class="tr-second-check"
+                  >查看排班表</span>
+                </div>
+              </div>
+            </div>
+          </div>
+          <!-- 分页显示 -->
+          <el-pagination
+            background
+            @size-change="handleSizeChange1"
+            @current-change="pageChange1"
+            :page-sizes="[10]"
+            layout="total, prev, pager, next"
+            :total="parseInt(errorWarningList.pages)"
+            :hide-on-single-page="true"
+          ></el-pagination>
+          <div style="clear:both;"></div>
+        </el-col>
+      </el-row>
+    </el-col>
+    <!-- </el-row> -->
+    <div class="showModel" @click="updateIsShowCarouselPictureModal()" v-if="NoAllotManagerModel">
+      <div class="modal-cancel" @click="updateIsShowCarouselPictureModal()">X</div>
+      <div class="detailinfo">
+            <el-col :span="24">
+          <h1 class="tiplog">{{this.month}}月排班情况</h1>
+           <div class="canlender" id="canlender">
+            <div class="tablebox1">
+              <table class="bgtable">
+                <thead>
+                  <tr>
+                    <!--汉字表头-->
+                    <th v-for="(item,index) in daynamearr" :key="index"><span :class="{'grayRed': item == '周六' || item == '周日'}">{{item}}</span></th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr v-for="(week,index1) in theweek()" :key="index1">
+                    <td
+                      v-for="(item,index2) in week"
+                      :key="index2"
+                      :class="{'gray': item.prevmonth || item.nextmonth,menu_bgc:true}"
+                    >
+                      {{item.day}}
+                      <!-- :class="{'gray': item.prevmonth || item.nextmonth}" -->
+                      <!-- <div class="number"> <span>13</span> <span>21</span> <span>12</span></div> -->
+                      <div class="number"  :class="{'grayBlue': item.prevmonth || item.nextmonth}">
+                        <div class="numberItem">
+                          <span>10:00-12:00</span>
+                        </div>
+                        <div class="numberItem">
+                          <span>15:00-17:50</span>
+                        </div>
+                         <div class="numberItem">
+                          <span>15:00-17:50</span>
+                        </div>
+                         <div class="numberItem">
+                          <span>15:00-17:50</span>
+                        </div>
+                      </div>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </el-col>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { mapGetters, mapActions } from "vuex";
+import { IMG_BASE_URL } from "@/ImgConfig";
+export default {
+  components: {},
+  name: "actvResolveLabel",
+  props: {},
+  data() {
+    return {
+       daynamearr: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
+      //本月的本期构成
+      dayarr: [],
+      year: new Date().getFullYear(),
+      D: new Date().getDate() + " ",
+      month: new Date().getMonth() + 1,
+      NewDay: "",
+      BASE_URL: IMG_BASE_URL,
+      accessToken: localStorage.getItem("accessToken"),
+      NoAllotManagerModel: false, //token
+      Activeindex:false,
+      filters1: {
+        pageNo: 1,
+        pageSize: 10
+      },
+      pictureIndex: 0
+    };
+  },
+  created() {},
+  watch: {},
+  computed: {
+    ...mapGetters(["errorWarningList", "errorDetailList"])
+  },
+  methods: {
+    ...mapActions(["setUser"]),
+      // 获取校区管理员监控数据
+    async InfoWatch() {},
+    theweek: function() {
+      var _arr = [];
+      for (var i = 0; i < 5; i++) {
+        var _week = [];
+        for (var j = 0; j < 7; j++) {
+          _week.push(this.dayarr[i * 7 + j]);
+        }
+        _arr.push(_week);
+      }
+      return _arr;
+    },
+        // 数据监控手动批改
+    handApor() {
+      this.Activeindex = false;
+    },
+    // 数据监控匹配知识点老师
+    AutoApor() {
+      this.Activeindex = true;
+    },
+    // 去批改前分配老师
+    async GeterrorWarningLists() {
+      this.$store.dispatch("GeterrorWarning", {
+        pageNo: this.filters1.pageNo,
+        pageSize: this.filters1.pageSize,
+        accessToken: this.accessToken
+      });
+    },
+    handleSizeChange1(val) {
+      this.filters1.pageSize = val;
+      this.GeterrorWarningLists();
+    },
+    pageChange1(val) {
+      this.filters1.pageNo = val;
+      this.GeterrorWarningLists();
+    },
+    updateIsShowCarouselPictureModal() {
+      this.NoAllotManagerModel = false;
+    },
+    //报错详情
+    groupDetail(str) {
+      this.pictureIndex = 0;
+      this.NoAllotManagerModel = true;
+      this.$store.dispatch("GeterrorDetail", {
+        pictureId: str.pictureId,
+        accessToken: this.accessToken
+      });
+    },
+    // 下一页
+    ClickNextebtn() {
+      this.pictureIndex++;
+      console.log(this.pictureIndex);
+      // if (this.pictureIndex >= errorDetailList.list.length){
+      //     return
+      // }
+    },
+    // 上一页
+    Clickprvebtn() {
+      this.pictureIndex--;
+      console.log(this.pictureIndex);
+      // if (this.pictureIndex <= errorDetailList.list.length){
+      //     return
+      // }
+    }
+  },
+  mounted() {
+    this.GeterrorWarningLists();
+      //需要知道这个月的第一天是星期几
+    var themonth1stday = new Date(this.year, this.month - 1, 1).getDay();
+    console.log(themonth1stday);
+    //              alert(themonth1stday)
+    //本月有多少天,这个月的最后一天就是下个月的最后一天减去一毫秒
+    var y = this.month == 12 ? this.year + 1 : this.year;
+    var m = this.month == 12 ? 1 : this.month;
+    var themonthdaysamount = new Date(new Date(y, m, 1) - 1).getDate();
+    console.log(themonthdaysamount);
+    //上个月有多少天
+    var prevmonthlastday = new Date(
+      new Date(this.year, this.month - 1, 1) - 1
+    ).getDate();
+    console.log(prevmonthlastday);
+    //              alert(prevmonthlastday)
+    while (themonth1stday-- > 0) {
+      this.dayarr.unshift({
+        day: prevmonthlastday--,
+        prevmonth: true
+      });
+    }
+    //本月的日期
+    var count = 0;
+    while (themonthdaysamount--) {
+      this.dayarr.push({
+        day: ++count
+      });
+    }
+    var c = 35 - this.dayarr.length;
+    var count2 = 1;
+    while (c-- > 0) {
+      this.dayarr.push({
+        day: count2++,
+        nextmonth: true
+      });
+    }
+  }
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+.showModel {
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  background-color: rgba(5, 5, 5, 0.5);
+  opacity: 1 !important;
+  overflow: hidden !important;
+  /* color: #fff; */
+}
+.modal-cancel {
+  position: absolute;
+  top: 20px;
+  right: 40px;
+  width: 50px;
+  height: 50px;
+  text-align: center;
+  line-height: 50px;
+  background-color: rgba(66, 56, 56, 0.5);
+  border-radius: 100px;
+  font-size: 16;
+  color: #eee;
+  cursor: pointer;
+}
+.detailinfo {
+  position: absolute;
+  left: 10%;
+  /* margin-left: 15%; */
+  top: 10%;
+  width: 70%;
+  height: 800px;
+  background: #fff;
+  text-align: center;
+  line-height: 50px;
+  font-size: 16;
+    overflow: auto;
+  z-index: 9999;
+  opacity: 1 !important;
+  color: #000000;
+  padding: 50px !important;
+}
+/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
+::-webkit-scrollbar {
+  width: 5px; /*滚动条宽度*/
+  height: 15px; /*滚动条高度*/
+}
+
+/*定义滚动条轨道 内阴影+圆角*/
+::-webkit-scrollbar-track {
+  -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.3);
+  border-radius: 10px; /*滚动条的背景区域的圆角*/
+  background-color: #fff; /*滚动条的背景颜色*/
+}
+
+/*定义滑块 内阴影+圆角*/
+::-webkit-scrollbar-thumb {
+  border-radius: 10px; /*滚动条的圆角*/
+  -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.3);
+  background-color: #bcbaba; /*滚动条的背景颜色*/
+}
+.detailImg {
+  background: #000000;
+  position: absolute;
+  left: 0;
+  top: 20px;
+  width: 600px;
+  height: 700px;
+  text-align: center;
+  line-height: 50px;
+  border-radius: 15px;
+  font-size: 16;
+  color: rgb(0, 0, 0);
+  opacity: 1 !important;
+  /* cursor: pointer; */
+}
+.detailword {
+  background: #eee;
+  position: absolute;
+  right: 0;
+  top: 20px;
+  width: 600px;
+  height: 700px;
+  text-align: center;
+  line-height: 50px;
+  border-radius: 15px;
+  font-size: 16;
+  color: #000000;
+  opacity: 1 !important;
+  /* cursor: pointer; */
+}
+.detailImg img {
+  width: 600px;
+  height: 700px;
+  border-radius: 15px;
+}
+.tipsesson {
+  font-size: 18px;
+  font-weight: 700;
+  position: absolute;
+  left: 10px;
+  top: 20px;
+}
+.tipsessonWord {
+  width: 100%;
+  height: 400px;
+  font-size: 14px;
+  position: absolute;
+  left: 10px;
+  top: 50px;
+  padding: 0 20px;
+  line-height: 20px;
+  text-align: left;
+}
+.BgcColor {
+  background-color: #f7fbfc;
+}
+.managertip {
+  font-size: 20px;
+  font-weight: 700;
+}
+.timeAndteacher {
+  height: 200px;
+  position: absolute;
+  right: 50px;
+  bottom: 50px;
+}
+.nextPrveBtn {
+  width: 400px;
+  left: 50%;
+  margin-left: -200px;
+  height: 200px;
+  position: absolute;
+  bottom: 50px;
+}
+.timeset {
+  color: #5de26c;
+  font-size: 16px;
+}
+.Nextebtn {
+  height: 100px;
+  position: absolute;
+  right: 50px;
+  bottom: 50px;
+}
+.prvebtn {
+  height: 100px;
+  position: absolute;
+  left: 50px;
+  bottom: 50px;
+}
+.el-pagination.is-background .el-pager li:not(.disabled).active {
+  background-color: #52cc60 !important;
+  color: #fff;
+}
+html,
+body {
+  height: 100%;
+  overflow: hidden;
+}
+ul {
+  text-align: center;
+  margin: 0 !important;
+}
+.aside {
+  /* background-color: #fbfbfb; */
+  margin-top: 16px;
+  padding: 0;
+  min-height: 880px;
+}
+.main {
+  background-color: #fff;
+  margin: 16px;
+  padding: 0 !important;
+  /* margin-left: 180px; */
+  min-height: 980px;
+}
+.table-aside {
+  color: #666666;
+  font-size: 18px;
+  text-align: center;
+  line-height: 60px;
+  cursor: pointer;
+}
+el-table {
+  color: #999999;
+  font-size: 18px;
+}
+.main-items {
+  color: #393939;
+  text-align: center;
+  line-height: 80px;
+}
+.main-header-item {
+  font-size: 16px;
+}
+.model-manager {
+  display: flex;
+  justify-content: space-between;
+  margin: 30px;
+  color: #393939;
+  font-size: 24px;
+}
+.main-header-link {
+  color: #52cc60;
+  font-size: 18px;
+  margin-left: 10px;
+  cursor: pointer;
+  text-decoration: underline;
+}
+.el-select {
+  width: 100px;
+  margin: 0 5px;
+}
+.input-with-select .el-input-group__prepend {
+  background-color: #fff;
+}
+.input-with-new {
+  border: 1px solid #cccccc;
+  border-radius: 15px;
+  height: 30px;
+  line-height: 30px;
+  padding: 10px;
+  font-size: 12px;
+  color: #eeeeee;
+  width: 180px;
+}
+.active {
+  background-color: #52cc60;
+  color: #fff;
+}
+.el-input__inner {
+  height: 32px;
+}
+
+.table-img {
+  width: 36px;
+  height: 36px;
+  border-radius: 6px;
+  margin-left: 14px;
+  cursor: pointer;
+}
+.table {
+  width: 94.5%;
+  border-top: 1px solid #e5e5e5;
+  margin: 0 43px;
+}
+.table-head {
+  margin-right: 24%;
+  color: #999999;
+  font-size: 18px;
+  text-align: center;
+  display: flex;
+  justify-content: space-around;
+}
+.table-heads {
+  margin-left: 15%;
+  width: 60%;
+  color: #3ab548;
+  font-size: 14px;
+  text-align: center;
+  display: flex;
+  justify-content: space-around;
+}
+.table-heads > div {
+  width: 13.528%;
+}
+.table-head > div {
+  width: 13.528%;
+}
+.tr {
+  width: 100%;
+  color: #393939;
+  text-align: center;
+  /* font-weight: 700; */
+  font-family: "PingFang-SC-Bold";
+  font-size: 16px;
+}
+.tr-first {
+  margin-right: 2%;
+  display: flex;
+  justify-content: space-around;
+}
+.tr-first > div {
+  width: 14.528%;
+}
+.tr-s {
+  display: flex;
+  justify-content: space-around;
+}
+.tr-set {
+  background-color: #fbfbfb;
+  display: flex;
+  justify-content: space-around;
+  color: #393939;
+  font-size: 12px;
+  margin: 20px;
+}
+.tr-setNo {
+  display: flex;
+  justify-content: space-around;
+  color: #000000f1;
+  font-size: 16px;
+  margin: 20px;
+}
+.tr-secon {
+  font-size: 12px;
+  text-align: center;
+  word-wrap: break-word;
+  width: 40px;
+}
+.tr-second {
+  background-color: #fbfbfb;
+  display: flex;
+  color: #393939;
+  font-size: 20px;
+  word-wrap: break-word;
+}
+.tr-seconds {
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  margin: 0 50px;
+  /* height: 30px; */
+}
+.width40 {
+  width: 60px;
+}
+.tr-sw180 {
+  width: 230px;
+  text-align: center;
+}
+.tr-secondsA {
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  width: 200px;
+}
+.tr-w120 {
+  width: 160px;
+  text-align: left;
+  display: inline-block;
+  /*height: 80px;*/
+  /*line-height: 80px;*/
+}
+.tr-second-check {
+  color: #7297FF;
+  font-size: 17px;
+  text-decoration: underline;
+}
+.Online {
+  display: inline-block;
+}
+.Onlinename {
+  display: inline-block;
+}
+.tr-active {
+  color: #3ab548;
+}
+.model {
+  z-index: 10000;
+  width: 60%;
+  height: auto;
+  position: fixed;
+  top: 15%;
+  left: 30%;
+  margin: auto;
+  background: #fff;
+  border-radius: 10px;
+  text-align: center;
+}
+.model-text {
+  background: rgba(255, 255, 255, 1);
+  border-radius: 10px;
+}
+.model-items-first {
+  padding: 0 34px;
+  width: 100%;
+  display: flex;
+  justify-content: space-between;
+}
+.model-items-first-img {
+  width: 68px;
+  height: 68px;
+  border-radius: 8px;
+  position: relative;
+  bottom: 20px;
+}
+.model-items-first-left {
+  display: inline-block;
+  color: #393939;
+  font-size: 24px;
+  margin-left: 14px;
+  text-align: left;
+}
+.model-items-first-left-down {
+  color: #7e7e7e;
+  font-size: 18px;
+}
+.model-text-head {
+  padding: 40px 50px;
+  display: flex;
+  color: #393939;
+  font-size: 24px;
+  justify-content: space-between;
+}
+.model-items-other {
+  height: 60px;
+  line-height: 60px;
+  color: #393939;
+  font-size: 20px;
+  text-align: left;
+  padding: 0 34px;
+}
+.model-active {
+  background-color: #f6f7fb;
+}
+.model-active-last {
+  border-radius: 0 0 30px 30px;
+  background-color: #f6f7fb;
+}
+.model-items-left {
+  width: 100%;
+  color: #393939;
+  font-size: 24px;
+}
+.buttonAppoval {
+  display: inline-block;
+}
+.model-items-left-top {
+  display: flex;
+  justify-content: space-between;
+}
+.model-items {
+  padding: 20px 0;
+  display: flex;
+  justify-content: space-between;
+  display: inline-block;
+  width: 100%;
+}
+.model-itemss {
+  padding: 10px 0;
+  display: flex;
+  justify-content: space-between;
+  display: inline-block;
+}
+.model-items-left-top-img {
+  width: 68px;
+  height: 68px;
+  border-radius: 8px;
+  position: relative;
+  bottom: 25px;
+}
+.model-items-left-top-number {
+  color: #7e7e7e;
+  font-size: 18px;
+  margin-left: 10px;
+}
+
+.today-time {
+  color: #7e7e7e;
+  font-size: 18px;
+  margin: 0 20px;
+}
+.el-pagination {
+  padding: 30px;
+}
+.no-homework {
+  width: 16.5%;
+  height: 328px;
+  background: rgba(255, 255, 255, 1);
+  box-shadow: 0px 0px 14px 0px rgba(228, 228, 228, 1);
+  border-radius: 10px;
+  margin: auto;
+  position: fixed;
+  top: 27%;
+  left: 41.75%;
+  text-align: center;
+  padding: 35px;
+  z-index: 1000;
+  display: none;
+}
+.no-homework > div {
+  margin-bottom: 25px;
+  font-size: 24px;
+}
+.no-homework > img {
+  width: 226px;
+  height: 203px;
+}
+.allocation-items {
+  width: 45%;
+  display: inline-block;
+  margin-right: 20px;
+  margin-bottom: 30px;
+}
+.table-img {
+  width: 36px;
+  height: 36px;
+  border-radius: 6px;
+  /* margin-left: 14px; */
+  cursor: pointer;
+}
+.ApporStyles {
+  display: inline-block;
+  width: 180px;
+  height: 40px;
+  line-height: 40px;
+  background-color: #fff;
+  border-radius: 20px;
+  font-size: 16px;
+  color: #7c819d;
+  cursor: pointer;
+}
+.Apporvalactive {
+  background-color: #52cc60;
+  color: #fff;
+}
+.tiplog {
+  height: 100px;
+  width: 200px;
+  padding: 15px;
+  margin: 30px;
+  font-size: 25px;
+  font-weight: 700;
+  margin: 0 auto;
+}
+.canlender {
+  width: 1200px;
+  height: 400px;
+  margin: 0 auto;
+}
+
+table {
+  border-collapse: collapse;
+  width: 100%;
+}
+
+table.bgtable thead tr th {
+  height: 30px;
+  text-align: center;
+  cursor: pointer;
+  color:#999999;
+}
+.menu_bgc {
+margin:10px!important;
+}
+.grayRed{
+  color:red;
+}
+table.bgtable tbody tr td {
+  height: 100px;
+  box-sizing: border-box;
+  text-align: center;
+  vertical-align: top;
+  border:20px solid #fff;
+  padding: 4px;
+  font-weight: 700;
+  cursor: pointer;
+  border-radius: 50px;
+  background-color: #F6F7FB;
+}
+table.bgtable tbody tr td.gray {
+  color: #fff;
+  background: #ffff;
+}
+.number {
+  color:#7297FF;
+  width: 100%;
+  height: 150px;
+}
+.grayBlue{
+ color:#fff;
+}
+.number .numberItem {
+  width: 100%;
+  height: 30px;
+}
+.number .numberItem span {
+  display: inline-block;
+  width: 120px;
+  height: 15px;
+  /* background-color: #FF6465; */
+  border-radius: 10px;
+}
+</style>

+ 2 - 2
src/config/index.js

@@ -2,8 +2,8 @@ let BASE_URL = ''
 if (process.env.NODE_ENV === 'development') {
     BASE_URL = 'https://xt.sharingschool.com/sz'
 } else {
-    BASE_URL = 'https://xt.sharingschool.com/sz' //测试环境服务器地址
-    // BASE_URL = 'https://t.sharingschool.com/sz'; //正式环境地址
+    // BASE_URL = 'https://xt.sharingschool.com/sz' //测试环境服务器地址
+    BASE_URL = 'https://t.sharingschool.com/sz'; //正式环境地址
     // BASE_URL = 'https://sx.sharingschool.com/sz'  //实习环境地址
 }
 const TIME_OUT = 10000

+ 1 - 0
src/main.js

@@ -28,6 +28,7 @@ import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
 import '../node_modules/bootstrap/dist/js/bootstrap.min.js';
 import '@/permission' // permission control
 // import 'jquery'
+import 'element-ui/lib/theme-chalk/index.css'
 Vue.config.productionTip = false;
 // axios.defaults.withCredentials = true
 Vue.prototype.$zrender = zrender;

+ 4 - 4
src/pages/Login.vue

@@ -91,12 +91,12 @@ export default {
     var obj = new WxLogin({
       self_redirect: false,
       id: "login_container",
-      // appid: "wxd18ca9555a939281",
-         appid: "wx7fe760dc3c45794d", //实训环境
+      appid: "wxd18ca9555a939281",
+        //  appid: "wx7fe760dc3c45794d", //实训环境
       scope: "snsapi_login",
       redirect_uri: encodeURIComponent(
-        // "https://kmt.sharingschool.com/aijia/manager/index.html"
-          "https://sxkmt.sharingschool.com/manager/index.html" //实训环境
+        "https://kmt.sharingschool.com/aijia/manager/index.html"
+          // "https://sxkmt.sharingschool.com/manager/index.html" //实训环境
       ),
       state: "",
       style: "width: 250px",

+ 259 - 186
src/pages/home/SchoolManager.vue

@@ -77,8 +77,16 @@
                     v-model="filters.inputValue"
                     class="miniorinput-with-Allot"
                   />
-                  <span v-if="this.Activeindex == false" @click="InfoWatch" class="miinorSeachIcon el-icon-search"></span>
-                     <span v-if="this.Activeindex == true" @click="InfoKonwTeacherWatchList" class="miinorSeachIcon el-icon-search"></span>
+                  <span
+                    v-if="this.Activeindex == false"
+                    @click="InfoWatch"
+                    class="miinorSeachIcon el-icon-search"
+                  ></span>
+                  <span
+                    v-if="this.Activeindex == true"
+                    @click="InfoKonwTeacherWatchList"
+                    class="miinorSeachIcon el-icon-search"
+                  ></span>
                 </div>
               </div>
             </el-col>
@@ -89,11 +97,11 @@
             <div class="main-header-item displayBox">
               <span>平均响应时间:{{monitorTeacherList.avgreSpeed}}/份</span>
             </div>
-            <div class="main-header-item displayBox"  v-if="this.Activeindex == false">
+            <div class="main-header-item displayBox" v-if="this.Activeindex == false">
               <span>分配未批改作业:{{monitorTeacherList.unCorrectCount}}份</span>
               <span @click="allocation()" class="main-header-link">去分配</span>
             </div>
-            <div class="main-header-item displayBox"  v-if="this.Activeindex == true">
+            <div class="main-header-item displayBox" v-if="this.Activeindex == true">
               <span>分配未匹配作业:{{monitorTeacherList.unCorrectCount}}份</span>
               <span @click="allocationApporval()" class="main-header-link">去分配</span>
             </div>
@@ -241,7 +249,8 @@
                       v-if="v.status === 2"
                       class="tr-seconds width40"
                       style="color:#FFC303;width: 50%"
-                    > <span v-if="Activeindex == false">批改中</span>
+                    >
+                      <span v-if="Activeindex == false">批改中</span>
                       <span v-if="Activeindex == true">匹配中</span>
                       (
                       <span>{{v.feedbackCount}}/{{v.picTotal}}</span>)
@@ -258,7 +267,8 @@
                         plain
                         v-if="v.isAllot == '1' && Activeindex == false"
                         @click="ToAppovalOline(v)"
-                      ><span>去批改</span>
+                      >
+                        <span>去批改</span>
                       </el-button>
                       <el-button @click="isShow(v,1)" type="success">去分配</el-button>
                     </div>
@@ -280,8 +290,16 @@
                           :href="APPOR_BASE_URL+'?homeworkId='+v.homeworkId+'&unionid='+unionid+'&teacherId='+homeworkLIst.teacherId+'&state='+2"
                         >已检查</a>-->
                       </el-button>
-                        <span class="WorngCount" v-if="v.wrongCount > 0" style="color:red;font-size:12px;">报错{{v.wrongCount}}</span>
-                         <span   class="WorngCount" v-if="v.wrongCount == 0" style="color:#fbfbfb;font-size:12px;">报错{{v.wrongCount}}</span>
+                      <span
+                        class="WorngCount"
+                        v-if="v.wrongCount > 0"
+                        style="color:red;font-size:12px;"
+                      >报错{{v.wrongCount}}</span>
+                      <span
+                        class="WorngCount"
+                        v-if="v.wrongCount == 0"
+                        style="color:#fbfbfb;font-size:12px;"
+                      >报错{{v.wrongCount}}</span>
                       <!-- <span class="WorngCount">报错{{v.wrongCount}}</span> -->
                     </div>
                     <div
@@ -316,31 +334,31 @@
               </div>
             </div>
             <!-- 分页显示 -->
-            <div v-if="this.Activeindex == false"> 
-                 <el-pagination
-              background
-              @size-change="handleSizeChange"
-              @current-change="pageChange"
-              :current-page.sync="currentPage"
-              :page-sizes="[10]"
-              layout="total, prev, pager, next"
-              :total="parseInt(monitorTeacherList.pages)"
-              :hide-on-single-page="true"
-            ></el-pagination>
+            <div v-if="this.Activeindex == false">
+              <el-pagination
+                background
+                @size-change="handleSizeChange"
+                @current-change="pageChange"
+                :current-page.sync="currentPage"
+                :page-sizes="[10]"
+                layout="total, prev, pager, next"
+                :total="parseInt(monitorTeacherList.pages)"
+                :hide-on-single-page="true"
+              ></el-pagination>
             </div>
-             <!-- 数据监控分页匹配知识点老师 -->
+            <!-- 数据监控分页匹配知识点老师 -->
             <div v-if="this.Activeindex == true">
-             <el-pagination
-              background
-              @size-change="WatchhandleSizeChange"
-              @current-change="WatchpageChange"
-              :page-sizes="[10, 20, 30, 40]"
-              layout="total, prev, pager, next"
-              :total="parseInt(monitorTeacherList.pages)"
-              :hide-on-single-page="true"
-              :current-page.sync="currentPage"
-            ></el-pagination>
-           </div>
+              <el-pagination
+                background
+                @size-change="WatchhandleSizeChange"
+                @current-change="WatchpageChange"
+                :page-sizes="[10, 20, 30, 40]"
+                layout="total, prev, pager, next"
+                :total="parseInt(monitorTeacherList.pages)"
+                :hide-on-single-page="true"
+                :current-page.sync="currentPage"
+              ></el-pagination>
+            </div>
           </el-col>
         </el-row>
       </el-col>
@@ -369,8 +387,16 @@
                         v-model="filters1.inputValue"
                         class="Dayinput-with-Allot"
                       />
-                      <span v-if="this.DayActiveindex == false" @click="InfoWatchDay" class="DaySeachIcon el-icon-search"></span>
-                         <span v-if="this.DayActiveindex == true" @click="InfoKonwTeacherDayApprvalList" class="DaySeachIcon el-icon-search"></span>
+                      <span
+                        v-if="this.DayActiveindex == false"
+                        @click="InfoWatchDay"
+                        class="DaySeachIcon el-icon-search"
+                      ></span>
+                      <span
+                        v-if="this.DayActiveindex == true"
+                        @click="InfoKonwTeacherDayApprvalList"
+                        class="DaySeachIcon el-icon-search"
+                      ></span>
                     </div>
                   </div>
                   <div class="teach-block">
@@ -437,9 +463,9 @@
                 </div>
               </div>
             </div>
-               <!-- 数据监控当天分页匹配知识点老师 -->
+            <!-- 数据监控当天分页匹配知识点老师 -->
             <div v-if="this.DayActiveindex == true">
-                  <el-pagination
+              <el-pagination
                 background
                 @size-change="handleSizeDayChange1"
                 @current-change="pageDayChange1"
@@ -447,21 +473,21 @@
                 layout="total, prev, pager, next"
                 :total="parseInt(DayTeacherList.pages)"
                 :current-page.sync="currentPage"
-                 :hide-on-single-page="true"
+                :hide-on-single-page="true"
               ></el-pagination>
-              </div>
-              <div v-if="this.DayActiveindex == false"> 
-                  <el-pagination
-              background
-              @size-change="handleSizeChange1"
-              @current-change="pageChange1"
-              :page-sizes="[10]"
-              layout="total, prev, pager, next"
-              :total="parseInt(DayTeacherList.pages)"
-              :hide-on-single-page="true"
-              :current-page.sync="currentPage"
-            ></el-pagination>
-              </div>
+            </div>
+            <div v-if="this.DayActiveindex == false">
+              <el-pagination
+                background
+                @size-change="handleSizeChange1"
+                @current-change="pageChange1"
+                :page-sizes="[10]"
+                layout="total, prev, pager, next"
+                :total="parseInt(DayTeacherList.pages)"
+                :hide-on-single-page="true"
+                :current-page.sync="currentPage"
+              ></el-pagination>
+            </div>
             <!-- 分页显示 -->
           </el-col>
         </el-row>
@@ -481,8 +507,8 @@
               >匹配知识点老师</div>
             </el-col>
             <el-col :span="17" :offset="0">
-                    <div class="main-header-numNew">
-                      <div class="main-header-item">
+              <div class="main-header-numNew">
+                <div class="main-header-item">
                   当月报错总次数:
                   <span style="color:red;">{{MothTeacherList.totalWrongCount}}次</span>
                 </div>
@@ -495,8 +521,16 @@
                         v-model="filters2.inputValue"
                         class="Dayinput-with-Allot"
                       />
-                      <span v-if="this.MonthActiveindex == false" @click="InfoWatchMoth" class="DaySeachIcon el-icon-search"></span>
-                        <span v-if="this.MonthActiveindex == true"  @click="InfoKonwTeacherMonthApprvalList" class="DaySeachIcon el-icon-search"></span>
+                      <span
+                        v-if="this.MonthActiveindex == false"
+                        @click="InfoWatchMoth"
+                        class="DaySeachIcon el-icon-search"
+                      ></span>
+                      <span
+                        v-if="this.MonthActiveindex == true"
+                        @click="InfoKonwTeacherMonthApprvalList"
+                        class="DaySeachIcon el-icon-search"
+                      ></span>
                     </div>
                     <!-- <el-input placeholder="请输入老师名字" v-model="filters2.inputValue" class="input-with-select">
                   <el-button @click="InfoWatchMoth" slot="append" icon="el-icon-search"></el-button>
@@ -525,15 +559,27 @@
             <div class="main-header-item">批改总份数:{{MothTeacherList.totalHomeworkCount}}</div>
           </el-col>-->
           <el-col :span="4">
-            <div class="main-header-item" v-if="this.MonthActiveindex == false">批改总张数:{{MothTeacherList.totalHomeworkPicCount }}</div>
-              <div class="main-header-item" v-if="this.MonthActiveindex == true">匹配总张数:{{MothTeacherList.totalHomeworkPicCount }}</div>
+            <div
+              class="main-header-item"
+              v-if="this.MonthActiveindex == false"
+            >批改总张数:{{MothTeacherList.totalHomeworkPicCount }}</div>
+            <div
+              class="main-header-item"
+              v-if="this.MonthActiveindex == true"
+            >匹配总张数:{{MothTeacherList.totalHomeworkPicCount }}</div>
           </el-col>
           <el-col :span="6">
-            <div class="main-header-item" v-if="this.MonthActiveindex == false">批改平均时间:{{MothTeacherList.totalAvgTime}}</div>
-              <div class="main-header-item" v-if="this.MonthActiveindex == true">平均匹配时间:{{MothTeacherList.totalAvgTime}}</div>
+            <div
+              class="main-header-item"
+              v-if="this.MonthActiveindex == false"
+            >批改平均时间:{{MothTeacherList.totalAvgTime}}</div>
+            <div
+              class="main-header-item"
+              v-if="this.MonthActiveindex == true"
+            >平均匹配时间:{{MothTeacherList.totalAvgTime}}</div>
           </el-col>
           <el-col :span="4">
-            <div class="main-header-item">家长满意度:{{MothTeacherList.totalSatisfactionDegree}}</div>
+            <div   v-if="this.MonthActiveindex == false"  class="main-header-item">家长满意度:{{MothTeacherList.totalSatisfactionDegree}}</div>
           </el-col>
           <el-col :span="4">
             <div class="main-header-item">正确率:{{MothTeacherList.totalAccuracyRate}}</div>
@@ -559,7 +605,7 @@
                 <div v-if="this.MonthActiveindex == true">匹配总张数</div>
                 <div>正确率</div>
                 <div style="width:240px;" v-if="this.MonthActiveindex == false">平均批改时间</div>
-                 <div style="width:240px;" v-if="this.MonthActiveindex == true">平均匹配时间</div>
+                <div style="width:240px;" v-if="this.MonthActiveindex == true">平均匹配时间</div>
                 <div>出勤率</div>
               </div>
               <div class="tr" v-for="(v, k) of MothTeacherList.list" :key="k">
@@ -576,43 +622,46 @@
                   <div>{{v.homeworkPicCount}}/张</div>
                   <div>{{v.accuracyRate}}</div>
                   <div style="width:240px;">{{v.avgTime}}</div>
-                  <div>{{v.accuracyRate}}</div>
+                  <div>{{v.attendanceRate}}</div>
                 </div>
               </div>
             </div>
             <!-- 分页显示 -->
             <div v-if="this.MonthActiveindex == false">
-                 <el-pagination
-              background
-              @size-change="handleSizeChange2"
-              @current-change="pageChange2"
-              :page-sizes="[10]"
-              layout="total, prev, pager, next"
-              :total="parseInt(MothTeacherList.pages)"
-              :hide-on-single-page="true"
-              :current-page.sync="currentPage"
-            ></el-pagination>
+              <el-pagination
+                background
+                @size-change="handleSizeChange2"
+                @current-change="pageChange2"
+                :page-sizes="[10]"
+                layout="total, prev, pager, next"
+                :total="parseInt(MothTeacherList.pages)"
+                :hide-on-single-page="true"
+                :current-page.sync="currentPage"
+              ></el-pagination>
             </div>
 
-           <!-- 知识点匹配 -->
-              <div v-if="this.MonthActiveindex == true">
-                 <el-pagination
+            <!-- 知识点匹配 -->
+            <div v-if="this.MonthActiveindex == true">
+              <el-pagination
                 background
                 @size-change="handleSizeMonthChange2"
                 @current-change="pageMonthChange2"
                 :page-sizes="[10]"
-                 layout="total, prev, pager, next"
+                layout="total, prev, pager, next"
                 :total="parseInt(MothTeacherList.pages)"
                 :current-page.sync="currentPage"
-                  :hide-on-single-page="true"
+                :hide-on-single-page="true"
               ></el-pagination>
-              </div>
+            </div>
           </el-col>
         </el-row>
       </el-col>
       <!-- 分页显示 -->
+       <!-- 排班表 -->
+             <TeamWorkLists v-if="modelindex == 3"></TeamWorkLists>
+              <!-- 组内排班 -->
+             <TeamworkScheduling v-if="this.modelindex == 4"></TeamworkScheduling>
     </el-row>
-
     <!--可分配老师-->
     <div class="showModel" @click="allShowModel(1)" v-if="hiddenModel"></div>
     <div class="model" style="width:50%; top:5%;" v-if="hiddenModel">
@@ -699,7 +748,7 @@
       <div class="model-text">
         <div class="model-text-head">
           <div v-if="this.Activeindex == false">所有未批改作业</div>
-           <div v-if="this.Activeindex == true">所有未匹配作业</div>
+          <div v-if="this.Activeindex == true">所有未匹配作业</div>
           <div>
             <img src="../../assets/img/del@2x.png" alt @click="allShowModel(2)" />
           </div>
@@ -714,8 +763,8 @@
             <div class="tr-secon width140" style="text-align:right">等待时长</div>
             <div class="tr-secon tr-sw80">科目</div>
             <div class="tr-secon tr-sw80">年级</div>
-         <div class="tr-secon width140" v-if="this.Activeindex == false">未批改老师</div>
-                <div class="tr-secon width140" v-if="this.Activeindex == true">未匹配老师</div>
+            <div class="tr-secon width140" v-if="this.Activeindex == false">未批改老师</div>
+            <div class="tr-secon width140" v-if="this.Activeindex == true">未匹配老师</div>
           </div>
           <div class="tr-set" v-for="(v, k) of UnallotHomeworkInfo.list" :key="k">
             <div class="tr-secon">{{k+1}}</div>
@@ -731,12 +780,12 @@
             </div>
             <div v-if="v.status === 2" class="tr-secon">
               <span v-if="Activeindex == false">批改中</span>
-               <span v-if="Activeindex == true"> 匹配中</span>
+              <span v-if="Activeindex == true">匹配中</span>
             </div>
             <div v-if="v.status === 3" class="tr-secon">
               <span v-if="Activeindex == false">已批改</span>
               <span v-if="Activeindex == true">已匹配</span>
-              </div>
+            </div>
             <div class="tr-secon width140">{{v.teacherName}}</div>
             <div class="width400">
               <el-button
@@ -745,32 +794,32 @@
                 plain
                 @click="AllToAppovalOline(v)"
               >
-               <span>去批改</span>
+                <span>去批改</span>
               </el-button>
               <el-button type="success" @click="isShow(v,5)">去分配</el-button>
             </div>
           </div>
-          <div  v-if="this.Activeindex == false">
-              <el-pagination
-            background
-            @size-change="handleSizeChange7"
-            @current-change="pageChange7"
-            :page-sizes="[10]"
-            layout="total, prev, pager, next"
-            :total="parseInt(UnallotHomeworkInfo.pages)"
-            :hide-on-single-page="true"
-          ></el-pagination>
+          <div v-if="this.Activeindex == false">
+            <el-pagination
+              background
+              @size-change="handleSizeChange7"
+              @current-change="pageChange7"
+              :page-sizes="[10]"
+              layout="total, prev, pager, next"
+              :total="parseInt(UnallotHomeworkInfo.pages)"
+              :hide-on-single-page="true"
+            ></el-pagination>
           </div>
-            <div v-if="this.Activeindex == true">
-               <el-pagination
-            background
-            @size-change="WatchApporvalhandleSizeChange7"
-            @current-change="WatchApporvalpageChange7"
-            :page-sizes="[10]"
-             layout="total, prev, pager, next"
-            :total="parseInt(UnallotHomeworkInfo.pages)"
-             :hide-on-single-page="true"
-          ></el-pagination>
+          <div v-if="this.Activeindex == true">
+            <el-pagination
+              background
+              @size-change="WatchApporvalhandleSizeChange7"
+              @current-change="WatchApporvalpageChange7"
+              :page-sizes="[10]"
+              layout="total, prev, pager, next"
+              :total="parseInt(UnallotHomeworkInfo.pages)"
+              :hide-on-single-page="true"
+            ></el-pagination>
           </div>
         </div>
       </div>
@@ -851,8 +900,8 @@
     <div class="model" style="width:40%;left: 32.5%" v-if="ModelAppor">
       <div class="model-text">
         <div class="model-manager">
-          <div  v-if="this.Activeindex == false">批改老师</div>
-              <div  v-if="this.Activeindex == true">匹配知识点老师</div>
+          <div v-if="this.Activeindex == false">批改老师</div>
+          <div v-if="this.Activeindex == true">匹配知识点老师</div>
           <div>
             <img src="../../assets/img/del@2x.png" alt @click="allShowModel(3)" />
           </div>
@@ -880,13 +929,19 @@
               </div>
             </div>
           </div>
-          <div class="model-items-other model-active" v-if="this.Activeindex == false">批改科目 : {{GetTeacherDetail.subject}}</div>
-            <div class="model-items-other" v-if="this.Activeindex == true">批改科目 : {{GetTeacherDetail.subject}}</div>
+          <div
+            class="model-items-other model-active"
+            v-if="this.Activeindex == false"
+          >批改科目 : {{GetTeacherDetail.subject}}</div>
+          <div
+            class="model-items-other"
+            v-if="this.Activeindex == true"
+          >批改科目 : {{GetTeacherDetail.subject}}</div>
           <div class="model-items-other" v-if="this.Activeindex == false">
             批改年级 :
             <span v-for="(v, k) of arrGrade" :key="k">{{v}},</span>
           </div>
-          <div class="model-items-other model-active" >
+          <div class="model-items-other model-active">
             可批改时间:
             <div class="buttonAppoval">
               <div class="TeacherApporTime" v-for="(v, k) of arrPeriod" v-show="v" :key="k">
@@ -896,15 +951,22 @@
           </div>
           <div class="model-items-other">手机号 : {{GetTeacherDetail.phone}}</div>
           <div class="model-items-other model-active">上次登录时间 : {{GetTeacherDetail.lastOnlineTime}}</div>
-          <div class="model-items-other" v-if="this.Activeindex == false">批改正确率 : {{GetTeacherDetail.accuracyRate}}</div>
-           <div class="model-items-other" v-if="this.Activeindex == true">匹配正确率 : {{GetTeacherDetail.accuracyRate}}</div>
+          <div
+            class="model-items-other"
+            v-if="this.Activeindex == false"
+          >批改正确率 : {{GetTeacherDetail.accuracyRate}}</div>
+          <div
+            class="model-items-other"
+            v-if="this.Activeindex == true"
+          >匹配正确率 : {{GetTeacherDetail.accuracyRate}}</div>
           <div class="model-items-other model-active">
             被报错总次数 :
             <span style="color:red;">{{GetTeacherDetail.wrongCount}}次</span>
           </div>
           <div class="model-items-other">纠正次数 : {{GetTeacherDetail.correctNums}}次</div>
           <div
-            class="model-items-other model-active" v-if="this.Activeindex == false"
+            class="model-items-other model-active"
+            v-if="this.Activeindex == false"
           >家长满意度 : {{GetTeacherDetail.satisfactionDegree}}</div>
         </div>
       </div>
@@ -946,13 +1008,17 @@
 <script>
 import { IMG_BASE_URL, APPOR_BASE_URL } from "@/ImgConfig";
 import { mapGetters, mapActions } from "vuex";
+import TeamworkScheduling from "@/components/TeamworkScheduling";
+import TeamWorkLists from "@/components/TeamWorkLists";
+import HomeworkTotalList from "@/components/HomeworkTotalList";
 import { Loading } from "element-ui";
 export default {
-  components: {},
+  components: { TeamWorkLists, TeamworkScheduling,HomeworkTotalList },
   name: "actvResolveLabel",
   props: {},
   data() {
     return {
+       chartData1: {},
       unionid: localStorage.getItem("unionid"),
       accessToken: localStorage.getItem("accessToken"), //token
       managerId: "", // 超级管理员登陆ID
@@ -978,12 +1044,12 @@ export default {
       gardeListDownage: false,
       Activeindex: false,
       DayActiveindex: false,
-      MonthActiveindex:false,
+      MonthActiveindex: false,
       selecttitlepag: "选年级",
       selecttitleage: "选科目",
       TeacherType: 8,
-      TeacherCheackStyle:2,
-      TeacherApporvalStyle:1,
+      TeacherCheackStyle: 2,
+      TeacherApporvalStyle: 1,
       pickerOptions0: {
         disabledDate(time) {
           return time.getTime() > Date.now() - 8.64e6;
@@ -1042,6 +1108,12 @@ export default {
         },
         {
           text: "当月"
+        },
+        {
+          text: "排班表"
+        },
+        {
+          text: "组内排班"
         }
       ],
       filters: {
@@ -1155,7 +1227,7 @@ export default {
           "&teacherId=" +
           this.homeworkLIst.teacherId +
           "&state=" +
-           this.TeacherCheackStyle
+          this.TeacherCheackStyle
       );
     },
     BeforetoTeacherstatues(val, oldVal) {
@@ -1167,13 +1239,13 @@ export default {
         pageNo: this.homeworkLIst.pageNo,
         pageSize: this.homeworkLIst.pageSize
       });
-         if (this.Activeindex == false){
-          this.InfoWatch();
-            this.UnallotHomework();
+      if (this.Activeindex == false) {
+        this.InfoWatch();
+        this.UnallotHomework();
       }
-       if (this.Activeindex == true){
-          this.InfoKonwTeacherWatchList();
-          this.unmatchHomework()
+      if (this.Activeindex == true) {
+        this.InfoKonwTeacherWatchList();
+        this.unmatchHomework();
       }
     },
     InfoTeacherstatues(val, oldVal) {
@@ -1185,12 +1257,12 @@ export default {
       this.NoAllotManagerModel = false;
       this.hiddenModel = false;
       //  this.isPigai = true;
-         this.RefreshTeacherHomework();
-        if (this.Activeindex == false){
-            this.UnallotHomework();
+      this.RefreshTeacherHomework();
+      if (this.Activeindex == false) {
+        this.UnallotHomework();
       }
-       if (this.Activeindex == true){
-          this.unmatchHomework()
+      if (this.Activeindex == true) {
+        this.unmatchHomework();
       }
     }
   },
@@ -1348,7 +1420,7 @@ export default {
         pageNo: this.allotList.pageNo,
         pageSize: this.allotList.pageSize,
         name: this.inputValueAllot,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
     },
     // 搜索可分配老师列表
@@ -1362,7 +1434,7 @@ export default {
         pageNo: this.allotList.pageNo,
         pageSize: this.allotList.pageSize,
         name: this.inputValueAllot,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
     },
     // 可分配老师列表分页
@@ -1376,7 +1448,7 @@ export default {
         pageNo: this.allotList.pageNo,
         pageSize: this.allotList.pageSize,
         name: this.inputValueAllot,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
     },
     // 未批改作业列表列表
@@ -1387,7 +1459,7 @@ export default {
         pageSize: this.homeworkLIst.pageSize
       });
     },
-      // 未匹配作业列表列表
+    // 未匹配作业列表列表
     async unmatchHomework() {
       this.$store.dispatch("UnmatchHomeworkList", {
         maxCreateTime: this.filters.MaxtimeValue,
@@ -1402,7 +1474,7 @@ export default {
         teacherId: v.teacherId,
         homeworkId: this.allNoapprovalList.homeworkId,
         originTeacherId: this.allNoapprovalList.teacherId,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
       v.type = 1;
       this.$set(this.TeacherAllotList.list, k, v);
@@ -1416,7 +1488,7 @@ export default {
         teacherId: v.teacherId,
         homeworkId: this.allotList.homeworkId,
         originTeacherId: this.homeworkLIst.teacherId,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
       v.type = 1;
       this.$set(this.TeacherAllotList.list, k, v);
@@ -1430,13 +1502,13 @@ export default {
     },
     // 数据监控手动批改
     handApor() {
-        this.isDown = false;
-        this.TeacherType = 8;
-        this.TeacherApporvalStyle = 1;
-         this.TeacherCheackStyle = 2;
-         this.filters.OptionsValue = '';
-         this.filters.gradesValue = '';
-        this.filters.inputValue = '';
+      this.isDown = false;
+      this.TeacherType = 8;
+      this.TeacherApporvalStyle = 1;
+      this.TeacherCheackStyle = 2;
+      this.filters.OptionsValue = "";
+      this.filters.gradesValue = "";
+      this.filters.inputValue = "";
       this.Activeindex = false;
       this.filters.pageNo = 1;
       //  this.showApporAways = false;
@@ -1444,14 +1516,14 @@ export default {
     },
     // 数据监控匹配知识点老师
     AutoApor() {
-        this.isDown = false;
-        this.TeacherType = 13;
-           this.TeacherApporvalStyle = 3;
-         this.TeacherCheackStyle = 4;
+      this.isDown = false;
+      this.TeacherType = 13;
+      this.TeacherApporvalStyle = 3;
+      this.TeacherCheackStyle = 4;
       this.Activeindex = true;
-       this.filters.OptionsValue = '';
-         this.filters.gradesValue = '';
-        this.filters.inputValue = '';
+      this.filters.OptionsValue = "";
+      this.filters.gradesValue = "";
+      this.filters.inputValue = "";
       // this.showApporAways = true;
       this.filters.pageNo = 1;
       this.InfoKonwTeacherWatchList();
@@ -1472,8 +1544,8 @@ export default {
     DayhandApor() {
       this.DayActiveindex = false;
       this.filters1.pageNo = 1;
-      this.filters1.MaxtimeValue = '';
-      this.filters1.inputValue = '';
+      this.filters1.MaxtimeValue = "";
+      this.filters1.inputValue = "";
       //  this.showApporAways = false;
       this.InfoWatchDay();
     },
@@ -1481,8 +1553,8 @@ export default {
     DayAutoApor() {
       this.DayActiveindex = true;
       // this.showApporAways = true;
-        this.filters1.MaxtimeValue = '';
-      this.filters1.inputValue = '';
+      this.filters1.MaxtimeValue = "";
+      this.filters1.inputValue = "";
       this.filters1.pageNo = 1;
       this.InfoKonwTeacherDayApprvalList();
     },
@@ -1499,20 +1571,20 @@ export default {
         managerId: this.managerId || ""
       });
     },
-    InfoWatchDayDatas (){
-        if (this.DayActiveindex == false){
-            this.InfoWatchDay();
+    InfoWatchDayDatas() {
+      if (this.DayActiveindex == false) {
+        this.InfoWatchDay();
       }
-       if (this.Activeindex == true){
-          this.InfoKonwTeacherDayApprvalList()
+      if (this.Activeindex == true) {
+        this.InfoKonwTeacherDayApprvalList();
       }
     },
     // 当月数据手动批改
     MonthhandApor() {
       this.MonthActiveindex = false;
       this.filters2.pageNo = 1;
-      this.filters2.MaxtimeValue = '';
-      this.filters2.inputValue = '';
+      this.filters2.MaxtimeValue = "";
+      this.filters2.inputValue = "";
       //  this.showApporAways = false;
       this.InfoWatchMoth();
     },
@@ -1520,15 +1592,15 @@ export default {
     MonthAutoApor() {
       this.MonthActiveindex = true;
       // this.showApporAways = true;
-      this.filters2.MaxtimeValue = '';
-      this.filters2.inputValue = '';
+      this.filters2.MaxtimeValue = "";
+      this.filters2.inputValue = "";
       this.filters2.pageNo = 1;
       this.InfoKonwTeacherMonthApprvalList();
     },
     // 当月数据匹配知识点老师
     InfoKonwTeacherMonthApprvalList() {
       this.$store.dispatch("MonitorKnowTeacherOneMonthInfo", {
-          grade: this.filters.OptionsValue,
+        grade: this.filters.OptionsValue,
         subject: this.filters.gradesValue,
         teacherName: this.filters2.inputValue,
         maxCreateTime: "",
@@ -1538,15 +1610,15 @@ export default {
         managerId: this.managerId || ""
       });
     },
-     InfoWatchMonthDatas (){
-        if (this.MonthActiveindex == false){
-            this.InfoWatchMoth();
+    InfoWatchMonthDatas() {
+      if (this.MonthActiveindex == false) {
+        this.InfoWatchMoth();
       }
-       if (this.MonthActiveindex == true){
-          this.InfoKonwTeacherMonthApprvalList()
+      if (this.MonthActiveindex == true) {
+        this.InfoKonwTeacherMonthApprvalList();
       }
     },
-      WatchhandleSizeChange(val) {
+    WatchhandleSizeChange(val) {
       this.filters.pageSize = val;
       this.InfoKonwTeacherWatchList();
     },
@@ -1558,11 +1630,11 @@ export default {
       this.filters2.pageSize = val;
       this.InfoKonwTeacherMonthApprvalList();
     },
-       WatchpageChange(val) {
+    WatchpageChange(val) {
       this.filters.pageNo = val;
       this.InfoKonwTeacherWatchList();
-    }, 
-     pageDayChange1(val) {
+    },
+    pageDayChange1(val) {
       this.filters1.pageNo = val;
       this.InfoKonwTeacherDayApprvalList();
     },
@@ -1594,6 +1666,7 @@ export default {
     selectTitle(k) {
       this.modelindex = k;
       if (k === 0) {
+            this.TeacherType = 8;
         this.Activeindex = false;
         this.filters.pageNo = 1;
         this.currentPage = 1;
@@ -1645,7 +1718,7 @@ export default {
         this.NoapporvalTeacherAllot(v);
         // this.GetAllotManagerInfo()
       } else if (str == 10) {
-         _this.isPigai = true;
+        _this.isPigai = true;
         this.homeworkLIst.pageNo = 1;
         this.unmatchHomework();
       }
@@ -1661,7 +1734,7 @@ export default {
         pageNo: 1,
         pageSize: this.allNoapprovalList.pageSize,
         name: this.AllinputValueAllot,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
     },
     // 搜索未批改作业可分配老师列表
@@ -1675,7 +1748,7 @@ export default {
         pageNo: 1,
         pageSize: this.allNoapprovalList.pageSize,
         name: this.AllinputValueAllot,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
     },
     // 未批改作业可分配老师分页列表
@@ -1689,7 +1762,7 @@ export default {
         pageNo: this.allNoapprovalList.pageNo,
         pageSize: this.allNoapprovalList.pageSize,
         name: this.AllinputValueAllot,
-          type:this.TeacherType,
+        type: this.TeacherType
       });
     },
     // 未批改作业去分配
@@ -1705,8 +1778,8 @@ export default {
         this.isShow(this.monitorTeacherList, 2);
       }
     },
-    
-      // 未分配作业去分配
+
+    // 未分配作业去分配
     allocationApporval() {
       var noHomework = document.getElementById("noHomework");
       this.InfoKonwTeacherWatchList();
@@ -1830,7 +1903,7 @@ export default {
       this.homeworkLIst.pageSize = val;
       this.UnallotHomework();
     },
-     WatchApporvalhandleSizeChange7(val) {
+    WatchApporvalhandleSizeChange7(val) {
       this.homeworkLIst.pageSize = val;
       this.unmatchHomework();
     },
@@ -1867,7 +1940,7 @@ export default {
       this.homeworkLIst.pageNo = val;
       this.UnallotHomework();
     },
-     WatchApporvalpageChange7(val) {
+    WatchApporvalpageChange7(val) {
       this.homeworkLIst.pageNo = val;
       this.unmatchHomework();
     },
@@ -1888,22 +1961,22 @@ export default {
     },
     selectTip(item) {
       this.filters.OptionsValue = item.str;
-       if (this.Activeindex == false){
-          this.InfoWatch();
+      if (this.Activeindex == false) {
+        this.InfoWatch();
       }
-       if (this.Activeindex == true){
-          this.InfoKonwTeacherWatchList();
+      if (this.Activeindex == true) {
+        this.InfoKonwTeacherWatchList();
       }
       this.selecttitlepag = item.label;
       this.gardeListDown = false;
     },
     selectTipage(item) {
       this.filters.gradesValue = item.str;
-    if (this.Activeindex == false){
-          this.InfoWatch();
+      if (this.Activeindex == false) {
+        this.InfoWatch();
       }
-       if (this.Activeindex == true){
-          this.InfoKonwTeacherWatchList();
+      if (this.Activeindex == true) {
+        this.InfoKonwTeacherWatchList();
       }
       this.selecttitleage = item.label;
       this.gardeListDownage = false;

+ 4 - 2
src/pages/super/HomeworkRecycle.vue

@@ -331,7 +331,7 @@
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
+<style>
 
   .main{
     background-color: #fff;
@@ -441,5 +441,7 @@
   .pages{
     margin: 15px 0;
   }
-
+.el-table td, .el-table th {
+    text-align: center!important;
+}
 </style>

+ 10 - 8
src/pages/super/HomeworkTotally.vue

@@ -26,16 +26,17 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col class="chartdiv" v-if="chartData1">
+          <!-- {{AllFindSubjectEngCharts}} -->
+          <!-- <el-col class="chartdiv" v-if="AllFindSubjectEngCharts.length >= 1"> -->
             <HomeworkTotalList :chartData="chartData1"></HomeworkTotalList>
-          </el-col>
-          <el-col class="chartdiv" v-if="chartData2">
+          <!-- </el-col> -->
+          <!-- <el-col class="chartdiv" v-if="AllFindSubjectEngCharts.length >= 2"> -->
             <HomeworkTotalList :chartData="chartData2"></HomeworkTotalList>
-          </el-col>
-          <el-col class="chartdiv" v-if="chartData3">
+          <!-- </el-col> -->
+          <!-- <el-col class="chartdiv" v-if="AllFindSubjectEngCharts.length >= 3"> -->
             <HomeworkTotalList :chartData="chartData3"></HomeworkTotalList>
-          </el-col>
-           <el-col class="chartdiv" v-if="!chartData1 && !chartData2 && !chartData3">
+          <!-- </el-col> -->
+           <el-col class="chartdiv" v-if="AllFindSubjectEngCharts.length <= 0">
              <div>
                   <img src="../../assets/img/SEARCH (1).png" alt />
           <div style="display:block; margin-top:20px;">暂无数据!</div>
@@ -142,7 +143,8 @@ export default {
     ...mapGetters([
       "FindSubjectCharts",
       "FindSubjectmathCharts",
-      "FindSubjectEngCharts"
+      "FindSubjectEngCharts",
+      "AllFindSubjectEngCharts"
     ])
   }
 };

+ 3 - 2
src/pages/super/SchoolManager.vue

@@ -546,7 +546,7 @@
             >匹配平均时间:{{MothTeacherList.totalAvgTime}}</div>
           </el-col>
           <el-col :span="4">
-            <div class="main-header-item">家长满意度:{{MothTeacherList.totalSatisfactionDegree}}</div>
+            <div   v-if="this.MonthActiveindex == false" class="main-header-item">家长满意度:{{MothTeacherList.totalSatisfactionDegree}}</div>
           </el-col>
           <el-col :span="4">
             <div class="main-header-item">正确率:{{MothTeacherList.totalAccuracyRate}}</div>
@@ -589,7 +589,7 @@
                   <div>{{v.homeworkPicCount}}/张</div>
                   <div>{{v.accuracyRate}}</div>
                   <div style="width:240px;">{{v.avgTime}}</div>
-                  <div>{{v.accuracyRate}}</div>
+                  <div>{{v.attendanceRate}}</div>
                 </div>
               </div>
             </div>
@@ -1632,6 +1632,7 @@ export default {
     selectTitle(k) {
       this.modelindex = k;
       if (k === 0) {
+            this.TeacherType = 8;
         this.Activeindex = false;
         this.filters.pageNo = 1;
         this.currentPage = 1;

+ 29 - 1
src/pages/super/SuperAdmin.vue

@@ -142,7 +142,13 @@
           </div>
           <div class="model-items-other model-active" >批改科目 : {{getManagerDetail.subject}}</div>
           <div class="model-items-other">批改年级 :<span v-for="(v, k) of arrGrade" :key=k class="grade-name" v-show="v">{{v}}</span></div>
-          <div class="model-items-other model-active"><span>可批改时间:</span> <el-button type="info" round v-for="(v, k) of arrPeriod" :key=k v-show="v">{{v}}</el-button></div>
+          <div class="model-items-other model-active"><span>可批改时间:</span> 
+              <div class="buttonAppoval">
+              <div class="TeacherApporTime" v-for="(v, k) of arrPeriod" :key=k v-show="v">
+                <span>{{v}}</span>
+              </div>
+            </div>
+          </div>
           <div class="model-items-other">手机号 : {{getManagerDetail.phone}}</div>
           <div class="model-items-other model-active-last">上次登录时间 : {{getManagerDetail.lastOnlineTime}}</div>
         </div>
@@ -625,4 +631,26 @@
   background: #f0f9eb;
   border-color: #c2e7b0;
 }
+.buttonAppoval {
+  display: inline-block;
+}
+.TeacherApporTime {
+  text-align: center;
+  display: inline-block;
+  height: 30px;
+  width: 60px;
+  color: #706f6f;
+  background: #b6b6b6;
+  border-color: #929492;
+  border-radius: 20px;
+  font-size: 14px;
+  line-height: 30px;
+  cursor: pointer;
+  margin: 0 5px;
+}
+.TeacherApporTime:hover {
+  color: #fff;
+  background-color: #909399;
+  border-color: #909399;
+}
 </style>

+ 3 - 0
src/store/getters.js

@@ -38,6 +38,9 @@ const getters = {
   FindSubjectCharts :state => state.user.FindSubjectCharts,
   FindSubjectmathCharts :state => state.user.FindSubjectmathCharts,
   FindSubjectEngCharts :state => state.user.FindSubjectEngCharts,
+  AllFindSubjectEngCharts :state => state.user.AllFindSubjectEngCharts,
   GetKnowledgeTeacherSalaryList:state => state.user.GetKnowledgeTeacherSalaryList,
+  FindCalendarList:state => state.user.FindCalendarList,
+  FindHaveTeacherList:state => state.user.FindHaveTeacherList,
 }
 export default getters

+ 2 - 0
src/store/index.js

@@ -4,6 +4,7 @@ import axios from '@/axios'
 import router from "@/router"
 import app from './modules/app'
 import user from './modules/user'
+import scheduling  from './modules/scheduling '
 import getters from './getters'
 import permission from './modules/permission'
 
@@ -13,6 +14,7 @@ const store = new Vuex.Store({
   modules: {
     app,
     user,
+    scheduling ,
     permission
   },
   getters

+ 73 - 0
src/store/modules/scheduling .js

@@ -0,0 +1,73 @@
+import {FindCalendarList,FindHaveTeacherList,FindNoHaveTeacherList
+} from '@/api/scheduling'
+    import { APPOR_BASE_URL } from '@/ImgConfig'
+  import axios from '@/axios'
+  import router from "@/router"
+  import { Message } from 'element-ui'
+  const user = {
+    state: {
+      FindCalendarList:[],
+      FindHaveTeacherList:[],
+      FindNoHaveTeacherList:[]
+    },
+  
+    mutations: {
+      SET_CALENDAR_LIST: (state, FindCalendarList) => {
+        state.FindCalendarList = FindCalendarList
+      },
+      SET_HAVETEACHER_LIST: (state, FindHaveTeacherList) => {
+        state.FindHaveTeacherList = FindHaveTeacherList
+      },
+      SET_NOHAVETEACHER_LIST: (state, FindNoHaveTeacherList) => {
+        state.FindNoHaveTeacherList = FindNoHaveTeacherList
+      },
+    },
+  
+    actions: {
+     // 排班日历表(校区管理员)
+     GetFindCalendarList({ commit, state }, data) {
+      return new Promise((resolve, reject) => {
+        axios.post(FindCalendarList, data).then(response => {
+          const data = response || {}
+          if (data.code === "999"){
+            // debugger
+            commit('SET_CALENDAR_LIST', data);
+          }
+        }).catch(error => {
+          reject(error)
+        })
+      })
+    },
+      // 已选时段老师列表(校区管理员)
+      GetFindHaveTeacherList({ commit, state }, data) {
+        return new Promise((resolve, reject) => {
+          axios.post(FindHaveTeacherList, data).then(response => {
+            const data = response || {}
+            if (data.code === "999"){
+              // debugger
+              commit('SET_HAVETEACHER_LIST', data);
+            }
+          }).catch(error => {
+            reject(error)
+          })
+        })
+      },
+         // 已选时段老师列表(校区管理员)
+         GetFindNoHaveTeacherList({ commit, state }, data) {
+          return new Promise((resolve, reject) => {
+            axios.post(FindNoHaveTeacherList, data).then(response => {
+              const data = response || {}
+              if (data.code === "999"){
+                // debugger
+                commit('SET_NOHAVETEACHER_LIST', data);
+              }
+            }).catch(error => {
+              reject(error)
+            })
+          })
+        },
+    }
+  }
+  
+  export default user
+  

+ 16 - 0
src/store/modules/user.js

@@ -47,6 +47,7 @@ const user = {
     FindSubjectCharts:[],
     FindSubjectmathCharts:[],
     FindSubjectEngCharts:[],
+    AllFindSubjectEngCharts:[],
     GetKnowledgeTeacherSalaryList:[]
   },
 
@@ -158,6 +159,9 @@ const user = {
     FIND_SUBJECTENG_CHARTS:(state,FindSubjectEngCharts) => {
       state.FindSubjectEngCharts = FindSubjectEngCharts
     },
+    FIND_AllJECTENG_CHARTS:(state,AllFindSubjectEngCharts) => {
+      state.AllFindSubjectEngCharts = AllFindSubjectEngCharts
+    },
     SET_UNALLOT_TEACHER_SALARY:(state,GetKnowledgeTeacherSalaryList) => {
       state.GetKnowledgeTeacherSalaryList = GetKnowledgeTeacherSalaryList
     },
@@ -201,6 +205,11 @@ const user = {
                             router.push("/super");
                             // router.push({path: '/super', replace: true})
                           }
+                          if (roles == 4) {
+                            Message.success('匹配知识点老师老师角色登录成功')
+                            localStorage.removeItem("accessToken");
+                            window.open(APPOR_BASE_URL + '?unionid=' + unionid);
+                          }
                         } if (isBanned == 1) {
                           localStorage.removeItem("accessToken");
                           Message.error('您已被封号')
@@ -259,6 +268,12 @@ const user = {
                             // router.push({path: '/super', replace: true})
                             
                           }
+                          if (roles == 4) {
+                            Message.success('匹配知识点老师老师角色登录成功')
+                            localStorage.removeItem("accessToken");
+                            window.open(APPOR_BASE_URL + '?unionid=' + unionid);
+                            
+                          }
                         } if (isBanned == 1) {
                           localStorage.removeItem("accessToken");
                           Message.error('您已被封号')
@@ -463,6 +478,7 @@ const user = {
         axios.post(FindSubjectCharts, data).then((response = {}) => {
           const data = response.data.chartList || {}
           if (response.code === "999"){
+            commit('FIND_AllJECTENG_CHARTS', data);
             commit('FIND_SUBJECT_CHARTS', data[0]);
             commit('FIND_SUBJECTMATH_CHARTS', data[1]);
             commit('FIND_SUBJECTENG_CHARTS', data[2]);