فهرست منبع

02/09 23:37

后台课程组
261568008@qq.com 5 سال پیش
والد
کامیت
0659a91958

+ 28 - 0
src/api/buildTeam.js

@@ -907,3 +907,31 @@ export function updateStudentAttendances (data) {
     data: data
   })
 }
+
+// 获取陪练课列表
+export function practiceGroupManage (data) {
+  return request({
+    url: api + '/practiceGroupManage/queryAll',
+    method: 'get',
+    params: data
+  })
+}
+
+// 获取陪练课程组
+export function findPracticeGroupCourseSchedules(data) {
+  return request({
+    url: api + '/practiceGroupManage/findPracticeGroupCourseSchedules',
+    method: 'get',
+    params: data
+  })
+}
+
+// 陪练课调整
+// courseSchedule/practiceCourseAdjus
+export function practiceCourseAdjus(data) {
+  return request({
+    url: api + '/courseSchedule/practiceCourseAdjust',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}

+ 5 - 1
src/router/index.js

@@ -237,6 +237,10 @@ export const asyncRoutes = {
   // 课表列表
   teamCourseList: () => import('@/views/teamDetail/teamCourseList'),
   // 运营预警
-  operationalList: () => import('@/views/operationalEarly/operationalList')
+  operationalList: () => import('@/views/operationalEarly/operationalList'),
+  // 陪练课列表
+  accompanyList:()=> import('@/views/accompanyManager/accompanyList'),
+  // 陪练课详情
+  accompanys:()=> import('@/views/accompanyManager/accompanys')
 }
 export default router

+ 232 - 0
src/views/accompanyManager/accompanyList.vue

@@ -0,0 +1,232 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>陪练课列表
+    </h2>
+  
+    <div class="m-core">
+      <el-form :inline="true" class="searchForm" v-model="searchForm">
+        <!-- 状态 指导老师 活动方案-->
+        <el-form-item>
+          <el-input v-model="searchForm.search" @keyup.enter.native="search" placeholder="课程名称"></el-input>
+        </el-form-item>
+           <el-form-item>
+          <el-select
+            class="multiple"
+            v-model="searchForm.organIdList"
+            filterable
+            clearable
+            placeholder="请选择分部"
+          >
+            <el-option
+              v-for="(item,index) in organList"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <!-- statusList -->
+        <!-- <el-form-item prop="status">
+          <el-select
+            class="multiple"
+            v-model="searchForm.status"
+            filterable
+            clearable
+            placeholder="请选课程状态"
+          >
+            <el-option
+              v-for="(item,index) in statusList"
+              :key="index"
+              :label="item.lable"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item> -->
+
+        <el-form-item>
+          <el-select v-model="searchForm.teacherId" clearable filterable placeholder="指导老师">
+            <el-option
+              v-for="(item,index) in teacherList"
+              :key="index"
+              :value="item.id"
+              :label="item.realName"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="search" type="danger">搜索</el-button>
+          <el-button @click="onReSet" type="primary">重置</el-button>
+        </el-form-item>
+      </el-form>
+         <!-- tab -->
+      <div class="tableWrap">
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{background:'#EDEEF0',color:'#444'}"
+          :data="tableData"
+        >
+          <el-table-column align="center" prop="id" label="课程编号"></el-table-column>
+          <el-table-column align="center" prop="name" label="课程名称"></el-table-column>
+           <el-table-column align="center" prop="organName" label="所属分部"></el-table-column>
+          <!-- organName -->
+          <!-- <el-table-column align="center" prop="status" label="课程状态">
+            <template slot-scope="scope">
+              <div>{{ scope.row.status | formatterStatus}}</div>
+            </template>
+          </el-table-column> -->
+          <el-table-column align="center" prop="teacherName" label="指导老师"></el-table-column>
+          <el-table-column align="center" prop="studentNum" label="班级人数"></el-table-column>
+          <el-table-column align="center" label="课程单价">
+            <template slot-scope="scope">
+              <div>
+                <p>线上:{{scope.row.onlineClassesUnitPrice}}</p>
+                <p>线下:{{scope.row.offlineClassesUnitPrice}}</p>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="当前课次">
+            <template slot-scope="scope">
+              <div>
+                <p>{{scope.row.currentClassTimes + '/' + scope.row.totalClassTimes}}</p>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="coursesStartDate" label="开课时间">
+            <template slot-scope="scope">
+              <div>
+                <p>{{scope.row.coursesStartDate | formatTimer}}</p>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="coursesExpireDate" label="结束时间">
+            <template slot-scope="scope">
+              <div>
+                <p>{{scope.row.coursesExpireDate | formatTimer}}</p>
+              </div>
+            </template>
+          </el-table-column>
+
+          <el-table-column align="center" width="150px" fixed="right" label="操作">
+               <template slot-scope="scope">
+            <div>
+              <!-- v-permission="'courseSchedule/classStartDateAdjust'"  v-if="!scope.row.isSettlement" -->
+              <el-button
+                type="text"
+                
+               
+                @click="lookCrouse(scope.row)"
+              >查看</el-button>
+            </div>
+          </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          :total="rules.total"
+          :page.sync="rules.page"
+          :limit.sync="rules.limit"
+          :page-sizes="rules.page_size"
+          @pagination="getList"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import { getTeacher, getEmployeeOrgan,practiceGroupManage } from "@/api/buildTeam";
+export default {
+  components:{pagination},
+  data() {
+    return {
+        searchForm:{
+            search:null,
+            status:null,
+            teacherId:null,
+            organIdList:null
+        },
+        organList:[],
+        statusList:[],
+        teacherList:[],
+        tableData:[],
+        rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      },
+    }
+  },
+    created() {
+    if (this.$route.query.searchForm) {
+      this.$route.query.searchForm instanceof Object
+        ? (this.searchForm = this.$route.query.searchForm)
+        : (this.searchForm = JSON.parse(this.$route.query.searchForm));
+    }
+    if (this.$route.query.rules) {
+      this.$route.query.rules instanceof Object
+        ? (this.rules = this.$route.query.rules)
+        : (this.rules = JSON.parse(this.$route.query.rules));
+    }
+    this.init();
+  },
+  mounted() {},
+  activated() {
+    this.init();
+  },methods:{
+    init(){
+         getEmployeeOrgan().then(res => {
+        if (res.code == 200) {
+          this.organList = res.data;
+        }
+      });
+       //   <!-- 状态 指导老师 活动方案-->
+      getTeacher().then(res => {
+        if (res.code == 200) {
+          this.teacherList = res.data;
+        }
+      });
+      this.getList()
+    },
+      search(){
+        this.rules.page = 1;
+        this.getList();
+      },
+      onReSet(){
+         this.searchForm = {
+            search:null,
+            status:null,
+            teacherId:null,
+            organIdList:null
+        }
+       this.search();
+      },
+      getList(){
+        let obj = {
+          search:this.searchForm.search,
+          teacherId:this.searchForm.teacherId,
+          organId:this.searchForm.organIdList,
+          page:this.rules.page,
+          rows:this.rules.limit
+        }
+        practiceGroupManage(obj).then(res=>{
+          if(res.code == 200){
+            
+            this.tableData = res.data.rows;
+            this.rules.total = res.data.total
+          }
+        })
+      },
+      lookCrouse(row){
+         let rules = JSON.stringify(this.rules);
+      let searchForm = JSON.stringify(this.searchForm);
+        this.$router.push({path:'/business/accompanys',query:{id:row.id, rules, searchForm}})
+      }
+      
+  }
+};
+</script>
+<style lang="sass">
+    
+</style>

+ 247 - 0
src/views/accompanyManager/accompanys.vue

@@ -0,0 +1,247 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <el-page-header @back="goBack" content="陪练课程组"></el-page-header>
+    </h2>
+   <!--   v-permission="'vipGroupManage/updateVipBaseInfo'" -->
+      <!-- <div
+        class="newBand"
+      
+        @click="addrVisible = true"
+    >修改老师</div> -->
+    <div class="tableWrap">
+      <el-table :data="tableList" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <!-- @selection-change="handleSelectionChange" -->
+        <!-- <el-table-column type="selection" :selectable="isDisabled" width="55"></el-table-column> -->
+        <el-table-column label="课程编号" align="center" prop="id"></el-table-column>
+        <el-table-column label="课程名称" align="center" prop="name"></el-table-column>
+        <!-- <el-table-column label="班级id"
+                         align="center"
+                         prop="classGroupId">
+        </el-table-column>-->
+        <el-table-column label="上课日期" align="center" prop="classDate">
+          <template slot-scope="scope">
+            <div>{{ scope.row.classDate | formatTimer}}</div>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column label="课程状态" align="center" prop="status">
+          <template slot-scope="scope">
+            <div>{{ scope.row.status | coursesStatus }}</div>
+          </template>
+        </el-table-column>-->
+        <el-table-column label="结算状态" align="center">
+          <template slot-scope="scope">
+            <div>{{scope.row.isSettlement?'已结算':'未结算'}}</div>
+          </template>
+        </el-table-column>
+        <el-table-column label="开始时间" align="center" prop="startClassTimeStr"></el-table-column>
+        <el-table-column label="结束时间" align="center" prop="endClassTimeStr"></el-table-column>
+        <!-- <el-table-column label="教学点" align="center" prop="schoolName">
+          <template slot-scope="scope">
+            <div>{{scope.row.schoolName?scope.row.schoolName:'网络教室'}}</div>
+          </template>
+        </el-table-column>-->
+        <el-table-column label="操作">
+          <template slot-scope="scope">
+            <div>
+              <el-button
+                type="text"
+                v-permission="'courseSchedule/classStartDateAdjust'"
+                v-if="!scope.row.isSettlement"
+                @click="resetClass(scope.row)"
+              >调整</el-button>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        :total="rules.total"
+        :page.sync="rules.page"
+        :limit.sync="rules.limit"
+        :page-sizes="rules.page_size"
+        @pagination="getList"
+      />
+    </div>
+    <el-dialog title="课程调整" width="400px" :before-close="handleClose" :visible.sync="courseVisible">
+      <el-form
+        :model="maskForm"
+        ref="maskForm"
+        :rules="maskRules"
+        label-position="right"
+        label-width="80px;"
+        :inline="true"
+      >
+        <el-form-item label="上课日期" prop="date">
+          <el-date-picker
+            v-model="maskForm.date"
+            style="width:200px!important;"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="开始时间" prop="startTime">
+          <el-time-select
+            placeholder="起始时间"
+            style="width:200px!important;"
+            v-model="startTime"
+            :picker-options="{
+                            start: '07:00',
+                            step: '00:30',
+                            end: '21:00'
+                            }"
+          ></el-time-select>
+        </el-form-item>
+        <!-- <el-form-item label="结束时间"
+                      prop="endTime">
+          <el-time-select placeholder="结束时间"
+                          v-model="maskForm.endTime"
+                          :picker-options="{
+                            start: '04:30',
+                            step: '00:05',
+                            end: '23:30',
+                            minTime: maskForm.startTime
+                          }">
+          </el-time-select>
+        </el-form-item>  v-if="maskForm.teachMode=='OFFLINE'"-->
+        <!-- <el-form-item label="课程类型" prop="courseType">
+          <el-select clearable v-model="maskForm.teachMode">
+            <el-option label="线上课" value="ONLINE"></el-option>
+            <el-option label="线下课" value="OFFLINE"></el-option>
+          </el-select>
+        </el-form-item>-->
+        <!-- <el-form-item label="教学地点" v-if="maskForm.teachMode == 'OFFLINE'">
+          <el-select v-model="maskForm.address" filterable clearable>
+            <el-option
+              v-for="(item,index) in schoolList"
+              :key="index"
+              :value="item.id"
+              :label="item.name"
+            ></el-option>
+          </el-select>
+        </el-form-item>-->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="courseVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitResetClass">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import { findPracticeGroupCourseSchedules,practiceCourseAdjus } from "@/api/buildTeam";
+export default {
+  components: {
+    pagination
+  },
+  data() {
+    return {
+      courseVisible: false,
+      Frules: null,
+      FsearchForm: null,
+      rules: {
+        // 分页规则
+        limit: 20, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 50, 100] // 选择限制显示条数
+      },
+      tableList: [],
+      practiceId: null,
+      maskForm: {
+        date: "",
+        startTime: "",
+        id: ""
+      },
+      startTime:null,
+      maskRules: {
+        date: [{ required: true, message: "请选择上课时间", trigger: "blur" }],
+        // startTime: [{ required: true, message: '请选择上课开始时间', trigger: 'blur' },],
+        endTime: [
+          { required: true, message: "请选择上课结束时间", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.init();
+  },
+  activated() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.practiceId = this.$route.query.id;
+      if (this.$route.query.rules) {
+        this.Frules = this.$route.query.rules;
+      }
+      if (this.$route.query.searchForm) {
+        this.FsearchForm = this.$route.query.searchForm;
+      }
+      //   console.log(this.practiceId)
+        this.getList()
+    },
+    getList() {
+          findPracticeGroupCourseSchedules({ practiceId: this.practiceId }).then(
+        res => {
+          if (res.code == 200) {
+            this.tableList = res.data.pageInfo.rows;
+            this.rules.total = res.data.pageInfo.total;
+          }
+        }
+      );
+    },
+    goBack() {
+      this.$router.push({
+        path: "/business/accompanyList",
+        query: { rules: this.Frules, searchForm: this.FsearchForm }
+      });
+    },
+    handleClose() {
+      this.courseVisible = false;
+      this.startTime = "";
+      this.maskForm = {
+        date: "",
+        startTime: "",
+        id: ""
+      };
+      this.$refs["maskForm"].resetFields();
+    },
+    submitResetClass() {
+      //   endClassTimeStr: this.maskForm.endTime,
+      if (!this.startTime) {
+        this.$message.error("请填写修改时间");
+        return;
+      }
+      let obj = {
+        startClassTimeStr: this.startTime,
+        id: this.maskForm.id,
+        classDate: this.maskForm.date,
+
+      };
+        practiceCourseAdjus(obj).then(res => {
+          if (res.code == 200) {
+            this.$message.success("修改成功");
+            this.courseVisible = false;
+            this.getList();
+       } //else {
+    //     this.$message.error(res.msg)
+    //   }
+        });
+    }, resetClass(row) {
+      /**
+       * maskForm.startTime
+       *
+       */
+
+      this.maskForm.date = row.classDate;
+      this.startTime = row.startClassTimeStr;
+      // this.maskForm.endTime = row.endClassTimeStr;
+      this.maskForm.id = row.id;
+      // 修改课时
+      this.courseVisible = true;
+    },
+  }
+};
+</script>

+ 5 - 4
src/views/teamDetail/teamCourseList.vue

@@ -101,6 +101,7 @@
           </el-table-column>
           <el-table-column align="center" prop="groupName" label="乐团/VIP名"></el-table-column>
           <el-table-column align="center" prop="classGroupName" label="班级名称"></el-table-column>
+           <el-table-column align="center" prop="subjectName" label="声部"></el-table-column>
           <el-table-column align="center" prop="name" label="课程名称"></el-table-column>
           <el-table-column align="center" label="课程类型">
             <template slot-scope="scope">
@@ -127,16 +128,16 @@
               <div>{{ scope.row.isSignIn | attendanceType}}</div>
             </template>
           </el-table-column>
-          <el-table-column align="center" label="是否签退">
+          <el-table-column align="center" label="是否签退"  fixed="right">
             <template slot-scope="scope">
               <div>{{ scope.row.isSignOut | attendanceOutType}}</div>
             </template>
           </el-table-column>
-          <el-table-column align="center" prop="isCallNames" label="是否点名">
+          <el-table-column align="center" prop="isCallNames" label="是否点名"  fixed="right">
             <template slot-scope="scope">{{ scope.row.isCallNames ? '是' : '否' }}</template>
           </el-table-column>
-          <el-table-column align="center" prop="teacherName" label="指导老师"></el-table-column>
-          <el-table-column align="center" label="详情">
+          <el-table-column align="center" prop="teacherName" label="指导老师"  fixed="right"></el-table-column>
+          <el-table-column align="center" label="详情"  fixed="right">
             <template slot-scope="scope">
               <div>
                 <el-button type="text" @click="lookDetail(scope.row)">详情</el-button>

+ 1 - 1
src/views/vipClass/vipList.vue

@@ -241,7 +241,7 @@ export default {
       this.$route.query.rules instanceof Object
         ? (this.rules = this.$route.query.rules)
         : (this.rules = JSON.parse(this.$route.query.rules));
-    }
+    } 
     this.init();
   },
   mounted() {},

+ 1 - 1
src/views/vipClass/vipReset.vue

@@ -133,7 +133,7 @@
             <el-option label="线下课" value="OFFLINE"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="教学地点" v-if="maskForm.teachMode == "OFFLINE"">
+        <el-form-item label="教学地点" v-if="maskForm.teachMode == 'OFFLINE'">
           <el-select v-model="maskForm.address" filterable clearable>
             <el-option
               v-for="(item,index) in schoolList"