Explorar el Código

Merge branch 'master' into wxl

lex-xin hace 5 años
padre
commit
69fe0f9150
Se han modificado 59 ficheros con 342 adiciones y 52 borrados
  1. 0 0
      dist/index.html
  2. 1 0
      dist/static/css/chunk-04a272d0.33f6da13.css
  3. 1 1
      dist/static/css/chunk-0fc56010.dd3b1407.css
  4. 0 0
      dist/static/css/chunk-375fd198.053999c1.css
  5. 0 0
      dist/static/css/chunk-39d785dc.e3786679.css
  6. 0 1
      dist/static/css/chunk-55e024a9.e59a281a.css
  7. 0 0
      dist/static/css/chunk-7098d6ae.fb874d9d.css
  8. 0 0
      dist/static/css/chunk-a4464162.205bd4da.css
  9. 0 0
      dist/static/js/app.92d516cb.js
  10. 0 0
      dist/static/js/app.f9041f92.js
  11. 0 0
      dist/static/js/chunk-04a272d0.0693d2f0.js
  12. 0 0
      dist/static/js/chunk-09753c97.62179094.js
  13. 0 0
      dist/static/js/chunk-098565e5.0dcf2122.js
  14. 0 0
      dist/static/js/chunk-0b136618.9f72228c.js
  15. 0 0
      dist/static/js/chunk-0bccdd4d.460bee24.js
  16. 0 0
      dist/static/js/chunk-0fc56010.21cd14f5.js
  17. 0 0
      dist/static/js/chunk-14a1bcee.2f642399.js
  18. 0 0
      dist/static/js/chunk-19af2112.de33159d.js
  19. 0 0
      dist/static/js/chunk-1c9ae0ee.d08a8e4d.js
  20. 0 0
      dist/static/js/chunk-35d7984f.eb8d23eb.js
  21. 0 0
      dist/static/js/chunk-3661e960.fdfaa7d1.js
  22. 0 0
      dist/static/js/chunk-375fd198.ead474c6.js
  23. 0 0
      dist/static/js/chunk-385f8d18.a66871f7.js
  24. 0 0
      dist/static/js/chunk-39d785dc.32f66c61.js
  25. 0 0
      dist/static/js/chunk-39d785dc.f1053e0d.js
  26. 0 0
      dist/static/js/chunk-4046482a.024da232.js
  27. 0 0
      dist/static/js/chunk-40e665d1.e54c937f.js
  28. 0 0
      dist/static/js/chunk-419ce36c.6c26ea65.js
  29. 0 0
      dist/static/js/chunk-41f382a0.bc95d2ca.js
  30. 0 0
      dist/static/js/chunk-4db252d2.1bc0fd5e.js
  31. 0 0
      dist/static/js/chunk-4ea01add.88f61007.js
  32. 0 0
      dist/static/js/chunk-503c08c8.c16196c9.js
  33. 0 0
      dist/static/js/chunk-532e18a2.a4f4ed72.js
  34. 0 0
      dist/static/js/chunk-55e024a9.6ca56587.js
  35. 0 0
      dist/static/js/chunk-6181ddae.3ddb63b0.js
  36. 0 0
      dist/static/js/chunk-62720db2.8a73f203.js
  37. 0 0
      dist/static/js/chunk-64c33787.74d4edba.js
  38. 0 0
      dist/static/js/chunk-6562cc02.2fd2d265.js
  39. 0 0
      dist/static/js/chunk-68259a14.618bab28.js
  40. 0 0
      dist/static/js/chunk-6c42ea8e.b9485002.js
  41. 0 0
      dist/static/js/chunk-75a1e174.1f7f2bf2.js
  42. 0 0
      dist/static/js/chunk-90bc8dd8.40a91ccd.js
  43. 0 0
      dist/static/js/chunk-a4464162.a353e21e.js
  44. 0 0
      dist/static/js/chunk-b1e176fc.98281adc.js
  45. 0 0
      dist/static/js/chunk-bb579d98.0307a2af.js
  46. 0 0
      dist/static/js/chunk-bc672cf4.1ce66622.js
  47. 0 0
      dist/static/js/chunk-c2bb26d2.36392b6e.js
  48. 0 0
      dist/static/js/chunk-eb022496.6ca47826.js
  49. 27 1
      src/api/buildTeam.js
  50. 1 1
      src/store/modules/user.js
  51. 2 1
      src/utils/vueFilter.js
  52. 2 0
      src/views/sporadicManager/sporadicList.vue
  53. 65 1
      src/views/teamBuild/components/teamResetSound.vue
  54. 5 0
      src/views/teamBuild/teamSeting/components/coursePlan.vue
  55. 56 20
      src/views/teamDetail/componentCourse/gpsLocation.vue
  56. 31 10
      src/views/teamDetail/componentCourse/studentRollCall.vue
  57. 136 2
      src/views/teamDetail/componentCourse/studentWork.vue
  58. 7 12
      src/views/teamDetail/components/courseList.vue
  59. 8 2
      src/views/teamDetail/teamCourseList.vue

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/index.html


+ 1 - 0
dist/static/css/chunk-04a272d0.33f6da13.css

@@ -0,0 +1 @@
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.title[data-v-5fcb358e]{margin-bottom:20px}.amap-demo[data-v-5fcb358e]{height:300px}.visible[data-v-48fc642a]{visibility:hidden}.cl-container .topFrom[data-v-48fc642a]{margin:20px 30px 0}.cl-container .topFrom .classlist[data-v-48fc642a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cl-container .topFrom .classlist ul li[data-v-48fc642a]{list-style:none}.cl-container .searchForm[data-v-48fc642a]{margin:0 30px}.btnWraps[data-v-48fc642a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btnWraps div[data-v-48fc642a]{margin-right:20px}

+ 1 - 1
dist/static/css/chunk-0b136618.69353314.css → dist/static/css/chunk-0fc56010.dd3b1407.css

@@ -1 +1 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.right-code .title[data-v-8f42f3a6]{font-size:18px;text-align:center;padding-bottom:8px}.newBand[data-v-8f42f3a6]{display:inline-block}
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.right-code .title[data-v-64c171a7]{font-size:18px;text-align:center;padding-bottom:8px}.newBand[data-v-64c171a7]{display:inline-block}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-375fd198.053999c1.css


+ 0 - 0
dist/static/css/chunk-39d785dc.81b4b35e.css → dist/static/css/chunk-39d785dc.e3786679.css


+ 0 - 1
dist/static/css/chunk-55e024a9.e59a281a.css

@@ -1 +0,0 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}.amap-demo[data-v-083949af]{height:300px}.visible[data-v-e4281458]{visibility:hidden}.cl-container .topFrom[data-v-e4281458]{margin:20px 30px 0}.cl-container .topFrom .classlist[data-v-e4281458]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cl-container .topFrom .classlist ul li[data-v-e4281458]{list-style:none}.cl-container .searchForm[data-v-e4281458]{margin:0 30px}.btnWraps[data-v-e4281458]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btnWraps div[data-v-e4281458]{margin-right:20px}

+ 0 - 0
dist/static/css/chunk-7098d6ae.aaed6291.css → dist/static/css/chunk-7098d6ae.fb874d9d.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-a4464162.205bd4da.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/app.92d516cb.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/app.f9041f92.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-04a272d0.0693d2f0.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-09753c97.62179094.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-098565e5.0dcf2122.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-0b136618.9f72228c.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-0bccdd4d.460bee24.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-0fc56010.21cd14f5.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-14a1bcee.2f642399.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-19af2112.de33159d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-1c9ae0ee.d08a8e4d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-35d7984f.eb8d23eb.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-3661e960.fdfaa7d1.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-375fd198.ead474c6.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-385f8d18.a66871f7.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-39d785dc.32f66c61.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-39d785dc.f1053e0d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-4046482a.024da232.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-40e665d1.e54c937f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-419ce36c.6c26ea65.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-41f382a0.bc95d2ca.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-4db252d2.1bc0fd5e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-4ea01add.88f61007.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-503c08c8.c16196c9.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-532e18a2.a4f4ed72.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-55e024a9.6ca56587.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-6181ddae.3ddb63b0.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-62720db2.8a73f203.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-64c33787.74d4edba.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-6562cc02.2fd2d265.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-68259a14.618bab28.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-6c42ea8e.b9485002.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-75a1e174.1f7f2bf2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-90bc8dd8.40a91ccd.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-a4464162.a353e21e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-b1e176fc.98281adc.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-bb579d98.0307a2af.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-bc672cf4.1ce66622.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-c2bb26d2.36392b6e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-eb022496.6ca47826.js


+ 27 - 1
src/api/buildTeam.js

@@ -827,7 +827,7 @@ export function updateStudentFee (data) {
     data: qs.stringify(data)
   })
 }
-
+// -----[-]
 // 获取学员签到列表
 export function findStudentAttendance (data) {
   return request({
@@ -835,4 +835,30 @@ export function findStudentAttendance (data) {
     method: 'get',
     params: data
   })
+}
+
+// 获取签到信息
+export function sumStudentAttendance (data) {
+  return request({
+    url: api + '/studentManage/sumStudentAttendance',
+    method: 'get',
+    params: data
+  })
+}
+// 获取签到经纬度
+export function getTeacherPersonalAttendance (data) {
+  return request({
+    url: api + '/teacherAttendance/getTeacherPersonalAttendance',
+    method: 'get',
+    params: data
+  })
+}
+
+// 获取作业列表
+export function findStudentCourseHomeworks (data) {
+  return request({
+    url: api + '/studentManage/findStudentCourseHomeworks',
+    method: 'get',
+    params: data
+  })
 }

+ 1 - 1
src/store/modules/user.js

@@ -66,7 +66,7 @@ const actions = {
           if (!data.data) {
             reject('获取用户信息错误,请重新登录')
           }
-          const username = data.data.realName;
+          const username = data.data.realName || data.data.username;
           const avatar = data.data.avatar;
           const organ = data.data.organId;
           const organName = data.data.organName;

+ 2 - 1
src/utils/vueFilter.js

@@ -277,7 +277,8 @@ Vue.filter('studentRecord', value => {
     NORMAL: "正常",
     TRUANT: "旷课",
     LEAVE: "请假",
-    DROP_OUT: "退学"
+    DROP_OUT: "退学",
+    '': '未签到'
   }
   return template[value]
 })

+ 2 - 0
src/views/sporadicManager/sporadicList.vue

@@ -258,6 +258,8 @@
                        :value="4"></el-option>
             <el-option label="维修费"
                        :value="5"></el-option>
+            <el-option label="上门费"
+                       :value="7"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="学员编号"

+ 65 - 1
src/views/teamBuild/components/teamResetSound.vue

@@ -574,7 +574,7 @@ export default {
   }
 }
 </script>
-<style lang="scss">
+<style lang="scss" scoped>
 .chioseWrap {
   margin-bottom: 30px;
   display: flex;
@@ -662,4 +662,68 @@ export default {
     }
   }
 }
+.soundWrap {
+  width: 100%;
+  overflow: auto;
+  .itemList {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+    flex-wrap: nowrap;
+    flex-grow: 1;
+    height: 300px;
+    max-height: 300px;
+    overflow: auto;
+    .categroy {
+      width: 150px;
+      min-width: 150px;
+      .el-checkbox {
+        height: 30px;
+        line-height: 30px;
+        display: block;
+        padding-left: 20px;
+      }
+      p {
+        height: 40px;
+        line-height: 40px;
+        background-color: #edeef0;
+        margin-bottom: 15px;
+        text-align: center;
+      }
+    }
+  }
+}
+.soundSubP {
+  height: 40px;
+  line-height: 40px;
+  background-color: #edeef0;
+  padding-left: 25px;
+}
+.btnWraps {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  margin-top: 150px;
+  .dialogBtn {
+    width: 188px;
+    height: 40px;
+    background: rgba(249, 114, 21, 1);
+    border-radius: 4px;
+    line-height: 40px;
+    color: #fff;
+    text-align: center;
+    cursor: pointer;
+  }
+}
+.btnWrap {
+  margin-top: 40px;
+  .PrevBtn {
+    background-color: #444444;
+    width: 120px;
+  }
+  .submitBtn {
+    background-color: #f85043;
+    width: 120px;
+  }
+}
 </style>

+ 5 - 0
src/views/teamBuild/teamSeting/components/coursePlan.vue

@@ -403,6 +403,11 @@ export default {
     },
     // 确定排课
     submitInfo () {
+      // 做拦截
+      if (this.classCardList.length <= 0) {
+        this.$message.error('请先点击一键排课,再确认排课')
+        return
+      }
       this.$confirm('课表无误,确定排课', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',

+ 56 - 20
src/views/teamDetail/componentCourse/gpsLocation.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    gps
+    <p class="title">打卡地相距教学点{{distance}}米</p>
     <!-- <el-amap-search-box class="search-box"
                         value="searchValue"
                         :search-option="searchOption"
@@ -14,7 +14,8 @@
       <!--  :events="markerEvents()" -->
       <el-amap-marker v-for="(marker, index) in markers"
                       :key="index"
-                      :position="marker"></el-amap-marker>
+                      :position="marker.location"
+                      :title="marker.title"></el-amap-marker>
     </el-amap>
   </div>
 </template> 
@@ -48,7 +49,9 @@ VueAMap.initAMapApiLoader({
   v: '1.4.4'
 })
 let amapManager = new VueAMap.AMapManager();
+import { getTeacherPersonalAttendance } from '@/api/buildTeam'
 export default {
+  props: ['courseScheduleId'],
   data () {
     return {
       zoom: 20,
@@ -63,37 +66,67 @@ export default {
       //     marker.setMap(o);
       //   }
       // },
-      markers: [
-        [114.34361, 30.55949],
-        [114.34381, 30.55949],
-      ],
+      markers: [],
       plugin: [],
+      distance: '-',
+      schoolLongitudeLatitude: null,
+      signInLongitudeLatitude: null,
+
     }
   },
   mounted () {
-    this.getDistance()
+    this.init()
   },
   activated () {
-    this.getDistance()
+    this.init()
   },
   methods: {
     // 地点搜索
     // searchOption () { },
     // 重置
+    init () {
+      getTeacherPersonalAttendance({ courseScheduleId: this.courseScheduleId }).then(res => {
+        if (res.code == 200) {
+          if (res.data.signInLongitudeLatitude) {
+            let add = {
+              title: '签到点',
+              location: res.data.signInLongitudeLatitude.split(',')
+            }
+            this.center = res.data.signInLongitudeLatitude.split(',');
+            this.signInLongitudeLatitude = res.data.signInLongitudeLatitude.split(',')
+            this.markers.push(add)
+          }
+          if (res.data.schoolLongitudeLatitude) {
+            let add = {
+              title: '教学点',
+              location: res.data.schoolLongitudeLatitude.split(',')
+            }
+            this.schoolLongitudeLatitude = res.data.schoolLongitudeLatitude.split(',')
+            this.center = res.data.schoolLongitudeLatitude.split(',');
+            this.markers.push(add)
+          }
+          this.getDistance(this.signInLongitudeLatitude, this.schoolLongitudeLatitude)
+        }
+      })
+      // this.getDistance()
+    },
     onSearchResult () { },
-    getDistance () {
-      let o = amapManager.getMap();
-      let marker1 = new AMap.Marker({
-        position: [121.59996, 31.177646]
-      });
-      let marker2 = new AMap.Marker({
-        position: [121.59976, 31.177646]
-      });
+    getDistance (sigin, school) {
+
+      if (sigin && sigin.length > 0 && school && school.length > 0) {
+        let o = amapManager.getMap();
+        let marker1 = new AMap.Marker({
+          position: sigin
+        });
+        let marker2 = new AMap.Marker({
+          position: school
+        });
 
-      let p1 = marker1.getPosition();
-      let p2 = marker2.getPosition();
-      var distance = Math.round(p1.distance(p2));
-      console.log(distance)
+        let p1 = marker1.getPosition();
+        let p2 = marker2.getPosition();
+        var distance = Math.round(p1.distance(p2));
+        this.distance = distance;
+      }
 
     }
   }
@@ -101,6 +134,9 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.title {
+  margin-bottom: 20px;
+}
 .amap-demo {
   height: 300px;
 }

+ 31 - 10
src/views/teamDetail/componentCourse/studentRollCall.vue

@@ -2,29 +2,38 @@
   <div>
     <el-form :inline="true">
       <el-form-item label="学生总数">
-        <el-input disabled></el-input>
+        <el-input disabled
+                  :value="studentNum"></el-input>
       </el-form-item>
       <el-form-item label="学生到课数">
-        <el-input disabled></el-input>
+        <el-input disabled
+                  :value="signInNum"></el-input>
       </el-form-item>
       <el-form-item label="学生请假总数">
-        <el-input disabled></el-input>
+        <el-input disabled
+                  :value="leaveNum"></el-input>
       </el-form-item>
     </el-form>
     <div class="tableWrap">
       <el-table :data='tableList'
                 :header-cell-style="{background:'#EDEEF0',color:'#444'}">
         <el-table-column align='center'
-                         prop="id"
+                         prop="username"
                          label="学生姓名">
         </el-table-column>
         <el-table-column align='center'
-                         prop="id"
+                         prop="phone"
                          label="手机号">
         </el-table-column>
         <el-table-column align='center'
-                         prop="id"
+                         prop="status"
                          label="学生状态">
+          <template slot-scope="scope">
+            <div>
+              <p v-if="scope.row.status">{{scope.row.status | studentRecord}}</p>
+              <p v-else>未签到</p>
+            </div>
+          </template>
         </el-table-column>
       </el-table>
       <pagination :total="rules.total"
@@ -35,7 +44,7 @@
   </div>
 </template>
 <script>
-import { findStudentAttendance } from '@/api/buildTeam'
+import { findStudentAttendance, sumStudentAttendance } from '@/api/buildTeam'
 import pagination from '@/components/Pagination/index'
 export default {
   props: ['courseScheduleId'],
@@ -48,8 +57,10 @@ export default {
         limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-
       },
+      studentNum: null,
+      signInNum: null,
+      leaveNum: null
     }
   },
   mounted () {
@@ -60,14 +71,24 @@ export default {
   },
   methods: {
     init () {
-      console.log(this.courseScheduleId)
+      // console.log(this.courseScheduleId)
       this.getList()
 
       //  发请求获取学生签到信息
     },
     getList () {
       findStudentAttendance({ search: this.courseScheduleId }).then(res => {
-
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total
+        }
+      })
+      sumStudentAttendance({ courseScheduleId: this.courseScheduleId }).then(res => {
+        if (res.code == 200) {
+          this.studentNum = res.data.studentNum;
+          this.signInNum = res.data.signInNum;
+          this.leaveNum = res.data.leaveNum
+        }
       })
     }
   }

+ 136 - 2
src/views/teamDetail/componentCourse/studentWork.vue

@@ -1,5 +1,139 @@
 <template>
   <div>
-    学生作业
+    <el-form :inline="true">
+      <el-form-item label="学生总数">
+        <el-input disabled
+                  :value="studentNum"></el-input>
+      </el-form-item>
+      <el-form-item label="已交作业">
+        <el-input disabled
+                  :value="homeworkNum"></el-input>
+      </el-form-item>
+      <el-form-item label="已评论">
+        <el-input disabled
+                  :value="repliedNum"></el-input>
+      </el-form-item>
+    </el-form>
+    <div class="tableWrap">
+      <el-table :data='tableList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column align='center'
+                         prop="username"
+                         label="学生姓名">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="phone"
+                         label="手机号">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="createTime"
+                         label="交作业时间">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="isView"
+                         label="是否查看">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.isView ? '是' : '否' }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="isReplied"
+                         label="是否回复">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.isReplied ? '是' : '否' }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         label="查看">
+          <template slot-scope="scope">
+            <div>
+              <!--  -->
+              <el-button type="text"
+                         v-if="scope.row.url"
+                         @click="lookWork(scope.row.url)">查看</el-button>
+            </div>
+          </template>
+
+        </el-table-column>
+      </el-table>
+      <pagination :total="rules.total"
+                  :page.sync="rules.page"
+                  :limit.sync="rules.limit"
+                  @pagination="getList" />
+    </div>
+    <el-dialog title="查看作业"
+               @close="closeWorkVisible"
+               width="680px"
+               append-to-body
+               :visible.sync="workVisible">
+      <!-- activeUrl -->
+      <video style="width:640px;"
+             :src='activeUrl'
+             ref="dialogVideo"
+             controls="controls">
+        您的浏览器不支持视频播放
+      </video>
+    </el-dialog>
   </div>
-</template>
+</template>
+<script>
+import pagination from '@/components/Pagination/index'
+import { findStudentCourseHomeworks, sumStudentAttendance } from '@/api/buildTeam'
+export default {
+  props: ['courseScheduleId'],
+  components: { pagination },
+  data () {
+    return {
+      tableList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+      },
+      workVisible: false,
+      studentNum: null,
+      homeworkNum: null,
+      repliedNum: null,
+      activeUrl: null
+    }
+  },
+  mounted () {
+    this.init()
+  },
+  activated () {
+    this.init()
+  },
+  methods: {
+    init () {
+      sumStudentAttendance({ courseScheduleId: this.courseScheduleId }).then(res => {
+        if (res.code == 200) {
+          this.studentNum = res.data.studentNum;
+          this.homeworkNum = res.data.homeworkNum;
+          this.repliedNum = res.data.repliedNum
+        }
+      })
+      this.getList()
+    },
+    getList () {
+      findStudentCourseHomeworks({ search: this.courseScheduleId }).then(res => {
+        if (res.code == 200) {
+          this.rules.total = res.data.total
+          this.tableList = res.data.rows
+        }
+      })
+    },
+    lookWork (url) {
+      this.workVisible = true;
+      this.activeUrl = url;
+    },
+    closeWorkVisible () {
+      this.activeUrl = '';
+    }
+  }
+}
+</script>

+ 7 - 12
src/views/teamDetail/components/courseList.vue

@@ -152,18 +152,9 @@
               <el-button v-if="scope.row.courseScheduleStatus == 'OVER'"
                          type="text" @click="rollCall.status = true">点名表</el-button>
               <!-- OVER -->
-              <el-button v-if="scope.row.courseScheduleStatus == 'OVER'"
-                         v-permission="'courseSchedule/classStartDateAdjust1'"
-                         type="text"
-                         @click="resetClass(scope.row)">调整</el-button>
-              <el-button v-if="scope.row.courseScheduleStatus == 'NOT_START'"
-                         v-permission="'courseSchedule/classStartDateAdjust'"
-                         type="text"
-                         @click="resetClass(scope.row)">调整</el-button>
-              <el-button v-permission="'courseSchedule/bathDelete'"
-                         v-if="scope.row.courseScheduleStatus == 'NOT_START'"
-                         type="text"
-                         @click="removeSingleClass(scope.row)">删除</el-button>
+              <el-button v-if="scope.row.courseScheduleStatus == 'OVER' && permission('courseSchedule/classStartDateAdjust1')" type="text" @click="resetClass(scope.row)">调整</el-button>
+              <el-button v-if="scope.row.courseScheduleStatus == 'NOT_START' && permission('courseSchedule/classStartDateAdjust')" type="text" @click="resetClass(scope.row)">调整</el-button>
+              <el-button v-if="scope.row.courseScheduleStatus == 'NOT_START' && permission('courseSchedule/bathDelete')" type="text" @click="removeSingleClass(scope.row)">删除</el-button>
             </div>
           </template>
         </el-table-column>
@@ -310,6 +301,7 @@
 import pagination from '@/components/Pagination/index'
 import { bathDelete } from '@/api/vipSeting'
 import { getCourseList, findMusicGroupClassTeacher, resetCourse, getTeacher, getMusicGroupAllClass, getCourseSchedule, batchAdjustment } from '@/api/buildTeam'
+import { permission } from '@/utils/directivePage'
 export default {
   name: 'tcourseList',
   props: ['teamid'],
@@ -400,6 +392,9 @@ export default {
         dataInfo: item
       }
     },
+    permission (str) {
+      return permission(str)
+    },
     search () {
       this.rules.page = 1;
       this.getList();

+ 8 - 2
src/views/teamDetail/teamCourseList.vue

@@ -10,6 +10,7 @@
                v-model="searchForm">
         <el-form-item>
           <el-input v-model="searchForm.search"
+                    @keyup.enter.native='search'
                     placeholder="乐团名或VIP课名" />
         </el-form-item>
         <el-form-item>
@@ -92,6 +93,10 @@
         <el-table :data='tableList'
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
           <el-table-column align='center'
+                           prop="organName"
+                           label="分部名称">
+          </el-table-column>
+          <el-table-column align='center'
                            prop="id"
                            label="课程编号">
           </el-table-column>
@@ -235,15 +240,16 @@
           </div>
         </el-tab-pane>
         <el-tab-pane label="GPS定位"
+                     v-if="maskForm.teachMode == 'OFFLINE'"
                      name="second">
           <div v-if="activeName == 'second'">
-            <gpsLoction></gpsLoction>
+            <gpsLoction :courseScheduleId='maskForm.id'></gpsLoction>
           </div>
         </el-tab-pane>
         <el-tab-pane label="作业"
                      name="third">
           <div v-if="activeName == 'third'">
-            <studentWork></studentWork>
+            <studentWork :courseScheduleId='maskForm.id'></studentWork>
           </div>
         </el-tab-pane>
       </el-tabs>

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio