mo vor 4 Jahren
Ursprung
Commit
9c47860bb2

+ 2 - 0
package.json

@@ -35,8 +35,10 @@
     "path-to-regexp": "2.4.0",
     "qrcodejs2": "0.0.2",
     "qs": "^6.8.0",
+    "swiper": "^6.3.5",
     "vue": "2.6.10",
     "vue-amap": "^0.5.10",
+    "vue-awesome-swiper": "^4.1.1",
     "vue-lunar-calendar-pro": "^1.0.14",
     "vue-qr": "^2.2.1",
     "vue-quill-editor": "^3.0.6",

+ 2 - 2
src/views/attendanceManager/attendanceList/index.vue

@@ -10,7 +10,7 @@
         <el-form-item>
           <el-input v-model.trim="searchForm.search"
                     @keyup.enter.native="search"
-                    placeholder='请输入课程编号、名称、乐团名称'></el-input>
+                    placeholder='课程编号、名称、乐团名称'></el-input>
         </el-form-item>
         <el-form-item prop="organId">
           <el-select class="multiple"
@@ -70,7 +70,7 @@
                            label="分部"></el-table-column>
           <el-table-column align="center"
                            prop="groupName"
-                           label="乐团名称"></el-table-column>
+                           label="课程组名称"></el-table-column>
           <el-table-column align="center"
                            label="布置时间">
             <template slot-scope="scope">

+ 3 - 2
src/views/reportForm/index.vue

@@ -177,6 +177,7 @@
                      class="organSelect"
                      style="width:100%"
                      filterable
+                     multiple
                      placeholder="请选择分部"
                      clearable>
             <el-option v-for="(item,index) in organList"
@@ -247,7 +248,7 @@ export default {
       musicTeamNum: [],
       studentOrganId: '',
       studentMonth: '',
-      attendanceOrganId: '',
+      attendanceOrganId: [],
       attendanceCourseType: 'MUSIC',
       timer: []
       // imageIcon: require("@/assets/images/base/warning.png")
@@ -541,7 +542,7 @@ export default {
         url: '/api-web/export/exportStudentAttendances',
         fileName: '学生考勤.xlsx',
         method: 'post',
-        params: qs.stringify({ organId: this.attendanceOrganId, groupType: this.attendanceCourseType, classStartDate, classEndDate })
+        params: qs.stringify({ organId: this.attendanceOrganId.join(','), groupType: this.attendanceCourseType, classStartDate, classEndDate })
       }, '您确定导出学生考勤?')
     },
   }

+ 8 - 3
src/views/teamDetail/componentCourse/studentRollCall.vue

@@ -1,12 +1,12 @@
 <template>
   <div>
     <el-form :inline="true">
-      <el-form-item label="应到学生数">
+      <el-form-item label="学生数">
         <!-- <el-input disabled
                   :value="studentNum"></el-input> -->
         <div class="inputStyle">{{studentNum}}</div>
       </el-form-item>
-      <el-form-item label="课学生数">
+      <el-form-item label="实际上课学生数">
         <!-- <el-input disabled
                   :value="signInNum"></el-input> -->
         <div class="inputStyle">{{signInNum}}</div>
@@ -28,6 +28,11 @@
         <el-table-column align='center'
                          prop="username"
                          label="学生姓名">
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.username}}({{scope.row.userId}})
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
                          prop="phone"
@@ -53,7 +58,7 @@
         </el-table-column>
         <el-table-column align='center'
                          prop="status"
-                         label="学生状态">
+                         label="考勤状态">
           <template slot-scope="scope">
             <div>
               <p v-if="scope.row.status">{{scope.row.status | studentRecord}}</p>

+ 79 - 18
src/views/teamDetail/componentCourse/studentWork.vue

@@ -1,5 +1,6 @@
 <template>
   <div>
+
     <el-form :inline="true">
       <el-form-item label="应交学生数">
         <!-- <el-input disabled
@@ -16,8 +17,11 @@
         :value="repliedNum"></el-input>-->
         <div class="inputStyle">{{ repliedNum}}</div>
       </el-form-item>
+      <el-form-item label="作业内容">
+        <p class="">{{content}}</p>
+      </el-form-item>
     </el-form>
-    <p class="work">老师布置的作业:{{content}}</p>
+
     <div class="tableWrap">
       <el-table :data="tableList"
                 :header-cell-style="{background:'#EDEEF0',color:'#444'}">
@@ -32,7 +36,7 @@
                          label="手机号"
                          width="120"></el-table-column>
         <el-table-column align="center"
-                         prop="subjectName"
+                         prop="subjectNames"
                          label="声部名称"></el-table-column>
         <el-table-column align="center"
                          prop="createTime"
@@ -56,13 +60,13 @@
             <div>{{ scope.row.isView ? '是' : '否' }}</div>
           </template>
         </el-table-column>
-        <el-table-column align="center"
+        <!-- <el-table-column align="center"
                          prop="isReplied"
                          label="是否回复">
           <template slot-scope="scope">
             <div>{{ scope.row.isReplied ? '是' : '否' }}</div>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column align="center"
                          label="查看作业"
                          width="200px">
@@ -70,9 +74,11 @@
             <div>
               <!--   -->
               <el-button type="text"
-                         v-for="(item,index) in scope.row.urlList"
-                         :key="index"
-                         @click="lookWork(item)">{{'作业'+(index+1) }}</el-button>
+                         v-if="scope.row.urlList"
+                         @click="lookWork(scope.row)">查看作业</el-button>
+              <el-button type="text"
+                         v-if="scope.row.isReplied"
+                         @click="lookReplied(scope.row)">查看回复</el-button>
             </div>
           </template>
         </el-table-column>
@@ -84,18 +90,42 @@
     </div>
     <el-dialog title="查看作业"
                @close="closeWorkVisible"
-               width="680px"
+               width="480px"
                append-to-body
                :visible.sync="workVisible">
       <!-- activeUrl -->
-      <video style="width:640px;"
-             :src="activeUrl"
-             ref="dialogVideo"
-             controls="controls">您的浏览器不支持视频播放</video>
+      <swiper ref="mySwiper"
+              :options="swiperOptions"
+              v-if="activeRow">
+        <swiper-slide v-for="
+                   (item,index)
+                   in
+                   activeRow.urlList"
+                      :key="index">
+          <video style="width:480px;"
+                 :src="item"
+                 ref="dialogVideo"
+                 controls="controls">您的浏览器不支持视频播放</video>
+
+        </swiper-slide>
+        <div class="swiper-pagination"
+             slot="pagination"></div>
+        <div class="swiper-button-prev swiper-button-white"
+             @click="prev"
+             slot="button-prev"></div>
+        <div class="swiper-button-next swiper-button-white"
+             @click="next"
+             slot="button-next"></div>
+      </swiper>
+
     </el-dialog>
   </div>
 </template>
 <script>
+import { Swiper, SwiperSlide, directive } from 'vue-awesome-swiper'
+
+// import style (>= Swiper 6.x)
+import 'swiper/swiper-bundle.css'
 import pagination from "@/components/Pagination/index";
 import {
   findStudentCourseHomeworks,
@@ -104,7 +134,13 @@ import {
 } from "@/api/buildTeam";
 export default {
   props: ["courseScheduleId"],
-  components: { pagination },
+  components: {
+    pagination, Swiper,
+    SwiperSlide
+  },
+  directives: {
+    swiper: directive
+  },
   data () {
     return {
       tableList: [],
@@ -119,9 +155,24 @@ export default {
       homeworkNum: null,
       repliedNum: null,
       activeUrl: null,
-      content: null
+      content: null,
+      activeRow: null,
+      swiperOptions: {
+        loop: true,
+        pagination: '.swiper-pagination',
+        navigation: {
+          nextEl: '.swiper-button-next',
+          prevEl: '.swiper-button-prev'
+        }
+        // Some Swiper option/callback...
+      }
     };
   },
+  computed: {
+    swiper () {
+      return this.$refs.mySwiper.$swiper
+    }
+  },
   mounted () {
     this.init();
   },
@@ -163,16 +214,26 @@ export default {
               item.urlList = item.url ? item.url.split(",") : [];
               return item;
             });
+            console.log(this.tableList)
           }
         }
       );
     },
-    lookWork (url) {
+    lookWork (row) {
+      this.activeRow = row
       this.workVisible = true;
-      this.activeUrl = url;
     },
     closeWorkVisible () {
       this.activeUrl = "";
+    },
+    prev () {
+      this.swiper.slidePrev()
+    },
+    next () {
+      this.swiper.slideNext()
+    },
+    lookReplied (row) {
+
     }
   }, watch: {
     courseScheduleId (val) {
@@ -189,7 +250,7 @@ export default {
   text-align: center;
 }
 .work {
-  margin-bottom: 30px;
-  font-size: 16px;
+  line-height: 30px;
+  font-size: 14px;
 }
 </style>

+ 0 - 1
src/views/teamDetail/componentCourse/teacherList.vue

@@ -75,7 +75,6 @@
       </el-table-column>
     </el-table>
     <el-dialog width="1000px"
-               title="GPS"
                :visible.sync="gpsVisible"
                append-to-body>
       <gpsLoction v-if="gpsVisible"

+ 9 - 0
src/views/teamDetail/components/studentList.vue

@@ -206,6 +206,14 @@
             <div>{{ scope.row.isActive?'是':'否'}}</div>
           </template>
         </el-table-column>
+        <el-table-column label="退团原因"
+                         align="center">
+          <template slot-scope="scope">
+            <div>
+              <Tooltip :content="scope.row.quitReason" />
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column align="center"
                          fixed="right"
                          width="300px;"
@@ -701,6 +709,7 @@ import { getToken } from "@/utils/auth";
 import { permission } from "@/utils/directivePage";
 import { addVisit } from "@/views/returnVisitManager/api.js"
 import cleanDeep from 'clean-deep'
+import Tooltip from '@/components/Tooltip/index'
 export default {
   name: "tstudentList",
   data () {

+ 2 - 2
src/views/teamDetail/index.vue

@@ -53,12 +53,12 @@
                      name="6">
           <salaryList v-if="activeIndex == 6" />
         </el-tab-pane> -->
-        <el-tab-pane label="课酬调整"
+        <!-- <el-tab-pane label="课酬调整"
                      v-if="permission('/teamDetails/salaryList')"
                      name="7">
           <salaryList v-if="activeIndex == '7'"
                       :teamid='teamid' />
-        </el-tab-pane>
+        </el-tab-pane> -->
       </el-tabs>
 
     </div>

+ 10 - 10
src/views/teamDetail/teamCourseList.vue

@@ -349,15 +349,15 @@
                          :teachMode='maskForm.teachMode'></teacherList>
           </div>
         </el-tab-pane>
+        <!--      v-if="maskForm.teachMode != 'OFFLINE'" -->
         <el-tab-pane label="作业"
-                     v-if="maskForm.teachMode != 'OFFLINE'"
                      name="third">
           <div v-if="activeName == 'third'">
             <studentWork :courseScheduleId="maskForm.id"></studentWork>
           </div>
         </el-tab-pane>
+        <!--    v-if="maskForm.type == 'VIP' || maskForm.type == 'PRACTICE'" -->
         <el-tab-pane label="评论"
-                     v-if="maskForm.type == 'VIP' || maskForm.type == 'PRACTICE'"
                      name="four">
           <div v-if="activeName == 'four'">
             <courseEvaluate :courseScheduleId="maskForm.id"></courseEvaluate>
@@ -628,14 +628,14 @@ export default {
       this.maskForm = row;
       this.activeName = "first";
       this.classVisible = true;
-      // getTeacherPersonalAttendanceDetail({ courseScheduleId: row.id }).then(res => {
-      //   if (res.code == 200) {
-      //     this.maskForm = res.data;
-      //     this.maskForm.id = row.id;
-      //     this.activeName = "first";
-      //     this.classVisible = true;
-      //   }
-      // })
+      getTeacherPersonalAttendanceDetail({ courseScheduleId: row.id }).then(res => {
+        if (res.code == 200) {
+          this.maskForm = { ...this.maskForm, ...res.data };
+          this.maskForm.id = row.id;
+          this.activeName = "first";
+          this.classVisible = true;
+        }
+      })
 
     },
     handleClick (tab, event) {