<template> <div class="class"> <div class="form-block"> <el-form label-width="90px" inline> <el-form-item label="期数"> <el-cascader :options="goodsList" :props="{value:'id',label:'name'}" @active-item-change="handleItemChange" @change="changePeriods" v-model="selectedGoods" > </el-cascader> </el-form-item> <el-form-item label="老师"> <el-select v-model="teacher_id" placeholder="请选择" clearable> <el-option v-for="(data,index) in teacherList" :key="index" :label="data.teacher_name" :value="data.teacher_id"> </el-option> </el-select> </el-form-item> <el-form-item label=""> <el-button type="primary" @click="getClassList"> 搜索 </el-button> </el-form-item> <el-form-item style="float: right"> <el-button @click="onAdd" type="success" v-if="!$store.state.readonly">+添加班级</el-button> </el-form-item> </el-form> </div> <div v-if="classList && classList.length > 0"> <el-form label-width="90px" inline> <el-form-item label="期数">{{title.title}}</el-form-item> <el-form-item label="开始时间">{{title.start_at}}</el-form-item> <el-form-item label="结束时间">{{title.over_at}}</el-form-item> <el-form-item label="可看课包数">{{title.watch_num }}</el-form-item> <el-form-item label="已看课包数">{{title.has_watch_num }}</el-form-item> </el-form> </div> <div v-if="!classList || classList.length === 0"> <el-form label-width="300px" inline> <el-form-item label="暂无期数信息,请先选择期数"></el-form-item> </el-form> </div> <div> <el-table :data="classList" style="width: 100%"> <el-table-column prop="teacher_name" label="班主任"> </el-table-column> <el-table-column prop="max_join_num" label="最大人数"> </el-table-column> <el-table-column prop="created_at" label="创建于"> </el-table-column> <el-table-column prop="join_num" label="现有人数"> </el-table-column> <el-table-column width="250" label="操作"> <template slot-scope="scope"> <el-button @click="showUser(scope.row)" size="mini" type="primary">班级成员</el-button> <el-button @click="editClass(scope.row)" size="mini" v-if="!$store.state.readonly" type="warning">编辑</el-button> <el-button @click="delClass(scope.row)" size="mini" v-if="!$store.state.readonly" type="danger">删除</el-button> </template> </el-table-column> </el-table> </div> <page :nowPage="nowPage" :total="total" :limit="limit" @pageChange="onPageChange"/> <class-dialog :dialogObj="dialogObj" @reflash="getClassList"></class-dialog> <user-list :userObj="userObj" @reflash="getClassList"/> </div> </template> <script> import {getGoodsListApi,getPeriodsApi,getClassListApi,getPeriodsTeacherApi,delClassApi} from "../../service/api"; import classDialog from './dialog' import UserList from './userList' import page from '../framework/page' export default { data(){ return { nowPage: 1, total: 0, limit: 10, periodsId:null, goodsList:[], teacher_id:'', classList:[], title:'', teacherList:[], userObj:{ classId:'', title:'', show:false, }, dialogObj:{ show:false, title:'添加班级', periodsId:'', type:0, id:0 }, selectedGoods: [] } }, components:{ UserList, classDialog, page }, mounted(){ this.initPage(); }, methods:{ initQuery(){ let _query = this.$route.query; if (_query && _query.goods_id && _query.periods_id) { this.selectedGoods = [parseInt(_query.goods_id),parseInt(_query.periods_id)]; getPeriodsApi({goods_id:this.selectedGoods[0]}).then(res=>{ res.list.forEach(i=>{i.name = i.title}); this.goodsList.find(i=>{return i.id === this.selectedGoods[0]}).children = res.list let nowGoods = this.goodsList.find(i=>{return i.id === this.selectedGoods[0]}); this.periods = nowGoods.children.find(i=>{return i.id === this.selectedGoods[1]}); this.teacher_id = ''; this.getClassList() }) } else { getPeriodsApi({goods_id:this.goodsList[0].id}).then(res=>{ res.list.forEach(i=>{i.name = i.title}); this.goodsList[0].children = res.list; this.periods = res.list[0] }) } }, initPage(){ getGoodsListApi().then(res=>{ res.list.forEach(i=>{ i.children = []; }); this.goodsList = res.list; this.initQuery(); }); }, showUser(data){ this.userObj={ classId:data.id, show:true, title:`${data.teacher_name}班级用户列表` } }, getTeacher(){ getPeriodsTeacherApi(this.periods.id).then(res=>{ this.teacherList = res }) }, changePeriods(data){ if(data.length>1){ let nowGoods = this.goodsList.find(i=>{return i.id === data[0]}); this.periods = nowGoods.children.find(i=>{return i.id === data[1]}); this.teacher_id = ''; this.getTeacher() } }, onPageChange(val){ this.nowPage = val; this.getClassList(); }, getClassList(){ this.getTeacher(); let json = { limit: this.limit, page: this.nowPage } if (this.teacher_id) { json.teacher_id = this.teacher_id } getClassListApi(this.periods.id,json).then(res=>{ this.title = res.periods; this.classList = res.list; this.total = res.total; }) }, handleItemChange(val){ getPeriodsApi({goods_id:val[0]}).then(res=>{ res.list.forEach(i=>{i.name = i.title}); this.goodsList.find(i=>{return i.id === val[0]}).children = res.list }) }, delClass(data){ this.$confirm('此操作将删除该班级?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { delClassApi(data.id).then(res=>{ this.$message({ type: 'success', message: '删除成功!' }); }); this.getClassList() }); }, onAdd(){ this.dialogObj = { show:true, title:'添加班级', periodsId:this.periods ? this.periods.id : '', type:0, } }, editClass(data){ this.dialogObj = { show:true, title:'编辑班级', periodsId:this.periods.id, type:1, id:data.id } } } } </script> <style scoped lang="less"> .class{ padding: 20px 0; } </style>