| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 | 
							- <template>
 
-   <div class="m-container">
 
-     <h2>
 
-       <div class="squrt"></div>VIP课列表
 
-     </h2>
 
-     <div class="newBand" v-permission="'/buildVip'" @click="gotoBuildVip">新建VIP课</div>
 
-     <div class="newBand" v-permission="'export/vipGroupList'" @click="onVIPCourseExport">导出VIP课</div>
 
-     <div class="m-core">
 
-       <!-- 搜索类型 -->
 
-       <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
 
-         <!-- 状态 指导老师 活动方案-->
 
-         <el-form-item>
 
-           <el-input v-model.trim="searchForm.search" @keyup.enter.native="search" placeholder="课程名称"></el-input>
 
-         </el-form-item>
 
-         <el-form-item prop="orgin">
 
-           <el-select
 
-             class="multiple"
 
-             v-model.trim="searchForm.orgin"
 
-             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.trim="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.trim="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-select v-model.trim="searchForm.activityId" clearable filterable placeholder="活动方案">
 
-             <el-option
 
-               v-for="(item,index) in activeList"
 
-               :key="index"
 
-               :value="item.id"
 
-               :label="item.name"
 
-             ></el-option>
 
-           </el-select>
 
-         </el-form-item>
 
-               <el-form-item prop="status">
 
-           <el-select
 
-             class="multiple"
 
-             v-model.trim="searchForm.hasEducationalTeacherId"
 
-             filterable
 
-             clearable
 
-             placeholder="是否有教务老师"
 
-           >
 
-             <el-option label="是" value="true"></el-option>
 
-             <el-option  label="否" value="false"></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="status" label="课程状态">
 
-             <template slot-scope="scope">
 
-               <div>{{ scope.row.status | formatterStatus}}</div>
 
-             </template>
 
-           </el-table-column>
 
-           <el-table-column align="center" prop="userName" label="指导老师"></el-table-column>
 
-           <el-table-column align="center" prop="educationalTeacherName" 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" prop="vipGroupActivityName" label="活动方案"></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" label="月均消耗">
 
-             <template slot-scope="scope">{{ scope.row.monthConsumeRate }}%</template>
 
-           </el-table-column>
 
-           <el-table-column align="center" prop="paymentExpireDate" label="开课时间">
 
-             <template slot-scope="scope">
 
-               <div>
 
-                 <p>{{scope.row.courseStartDate | formatterTime}}</p>
 
-               </div>
 
-             </template>
 
-           </el-table-column>
 
-           <el-table-column align="center" prop="coursesExpireDate" label="结束时间">
 
-             <template slot-scope="scope">
 
-               <div>
 
-                 <p>{{scope.row.coursesExpireDate | formatterTime}}</p>
 
-               </div>
 
-             </template>
 
-           </el-table-column>
 
-           <el-table-column align="center" prop="createTime" label="申请时间">
 
-             <template slot-scope="scope">
 
-               <div>
 
-                 <p>{{scope.row.createTime | formatterTime}}</p>
 
-               </div>
 
-             </template>
 
-           </el-table-column>
 
-           <el-table-column align="center" width="150px" fixed="right" label="操作">
 
-             <template slot-scope="scope">
 
-               <div>
 
-                 <el-button
 
-                   type="text"
 
-                   v-permission="'/vipDetail'"
 
-                   @click="gotoVipDetail(scope.row)"
 
-                 >查看</el-button>
 
-                 <!-- 
 
-                 <el-button type="text">启动</el-button>-->
 
-                 <!-- <el-button type="text"
 
-                            v-if="scope.row.status <3"
 
-                 @click='closeVip(scope.row.id)'>关闭</el-button>-->
 
-                 <el-popover
 
-                   placement="top"
 
-                   width="160"
 
-                   v-permission="'vipGroupManage/stopVipGroup'"
 
-                   v-if="scope.row.status <3"
 
-                   :ref="scope.$index"
 
-                 >
 
-                   <p style="margin-bottom:10px;">确定停止该vip课?</p>
 
-                   <el-input v-model.trim="scope.row.stopReason" placeholder="请输入关闭原因"></el-input>
 
-                   <div style="text-align: right; margin-top: 20px">
 
-                     <el-button
 
-                       size="mini"
 
-                       type="text"
 
-                       @click="scope._self.$refs[scope.$index].doClose()"
 
-                     >取消</el-button>
 
-                     <el-button type="primary" size="mini" @click="closeVip(scope)">确定</el-button>
 
-                   </div>
 
-                   <el-button type="text" slot="reference">停止</el-button>
 
-                 </el-popover>
 
-                 <el-button
 
-                   type="text"
 
-                   v-if="scope.row.status > 1&&scope.row.status != 3"
 
-                   v-permission="'/vipReset'"
 
-                   @click="resetVip(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 {
 
-   getVipList,
 
-   vipGroupActivity,
 
-   closeVip,
 
-   getVipGroupDetail
 
- } from "@/api/vipSeting";
 
- import { getTeacher, getEmployeeOrgan } from "@/api/buildTeam";
 
- import store from "@/store";
 
- import axios from "axios";
 
- import { getToken } from "@/utils/auth";
 
- export default {
 
-   components: { pagination },
 
-   name: "vipList",
 
-   data() {
 
-     return {
 
-       organId: null,
 
-       searchForm: {
 
-         teacherId: null,
 
-         activityId: null,
 
-         search: null,
 
-         orgin: null,
 
-         status: null,
 
-         hasEducationalTeacherId:null
 
-       },
 
-       teacherList: [],
 
-       activeList: [],
 
-       tableData: [],
 
-       organList: [],
 
-       rules: {
 
-         // 分页规则
 
-         limit: 10, // 限制显示条数
 
-         page: 1, // 当前页
 
-         total: 0, // 总条数
 
-         page_size: [10, 20, 40, 50] // 选择限制显示条数
 
-       },
 
-       statusList: [
 
-         { lable: "未开始", value: "0" },
 
-         { lable: "报名中", value: "1" },
 
-         { lable: "报名结束", value: "5" },
 
-         { lable: "进行中", value: "2" },
 
-         { lable: "已结束", value: "4" },
 
-         { lable: "取消", value: "3" },
 
-         { lable: "暂停", value: "6" }
 
-       ]
 
-     };
 
-   },
 
-   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));
 
-     } 
 
-   
 
-   },
 
-   mounted() {
 
-       this.init();
 
-   },
 
-   activated() {
 
-     this.init();
 
-   },
 
-   methods: {
 
-     init() {
 
-       getEmployeeOrgan().then(res => {
 
-         if (res.code == 200) {
 
-           this.organList = res.data;
 
-         }
 
-       });
 
-       //   <!-- 状态 指导老师 活动方案-->
 
-       getTeacher({ organId: this.organId }).then(res => {
 
-         if (res.code == 200) {
 
-           this.teacherList = res.data;
 
-         }
 
-       });
 
-       // 获取活动方案
 
-       vipGroupActivity({ organId: this.organId }).then(res => {
 
-         if (res.code == 200) {
 
-           this.activeList = res.data.rows;
 
-         }
 
-       });
 
-       this.getList();
 
-     },
 
-     search() {
 
-       this.rules.page = 1;
 
-       this.getList();
 
-     },
 
-     onReSet() {
 
-       this.searchForm = {
 
-         teacherId: null,
 
-         activityId: null,
 
-         search: null,
 
-         orgin: null,
 
-         status: null
 
-       };
 
-       this.getList();
 
-     },
 
-     getList() {
 
-       
 
-         let params = this.searchForm;
 
-         params.page = this.rules.page;
 
-         params.rows = this.rules.limit;
 
-         params.hasEducationalTeacherId = this.searchForm.hasEducationalTeacherId || null
 
-         params.organId = this.searchForm.orgin || null;
 
-         params.status = this.searchForm.status || null;
 
-         getVipList(params).then(res => {
 
-           if (res.code == 200) {
 
-             this.tableData= []
 
-             setTimeout(() => {
 
-                 this.tableData = res.data.rows;
 
-             }, 50);
 
-             this.rules.total = res.data.total;
 
-          
 
-           }
 
-         
 
-       });
 
-     },
 
-     // 跳转到vip详情
 
-     gotoVipDetail(row) {
 
-       let rules = JSON.stringify(this.rules);
 
-       let searchForm = JSON.stringify(this.searchForm);
 
-       let id = row.id;
 
-       let name = row.name;
 
-       this.$router.push({
 
-         path: "/business/vipDetail",
 
-         query: { id, name, rules, searchForm }
 
-       });
 
-     },
 
-     closeVip(scope) {
 
-       let id = scope.row.id;
 
-       closeVip({ vipGroupId: id, stopReason: scope.row.stopReason }).then(
 
-         res => {
 
-           if (res.code == 200) {
 
-             this.$message.success("停止课程成功");
 
-             scope._self.$refs[scope.$index].doClose();
 
-             this.getList();
 
-           }
 
-         }
 
-       );
 
-     },
 
-     gotoBuildVip() {
 
-       let rules = JSON.stringify(this.rules);
 
-       let searchForm = JSON.stringify(this.searchForm);
 
-       this.$router.push({
 
-         path: "/business/buildVip",
 
-         query: { rules, searchForm }
 
-       });
 
-     },
 
-     onVIPCourseExport() {
 
-       // 导出VIP课
 
-       let searchForm = this.searchForm;
 
-       let data = {
 
-         teacherId: searchForm.teacherId || null,
 
-         activityId: searchForm.activityId || null,
 
-         organId: searchForm.orgin || null,
 
-         status: searchForm.status || null,
 
-         search: searchForm.search || null
 
-       };
 
-       let url = "/api-web/export/vipGroupList";
 
-       const options = {
 
-         method: "get",
 
-         headers: {
 
-           Authorization: getToken()
 
-         },
 
-         params: data,
 
-         url,
 
-         responseType: "blob"
 
-       };
 
-       this.$confirm("您确定导出报表", "提示", {
 
-         confirmButtonText: "确定",
 
-         cancelButtonText: "取消",
 
-         type: "warning"
 
-       })
 
-         .then(() => {
 
-           axios(options).then(res => {
 
-             let blob = new Blob([res.data], {
 
-               // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
 
-               type: "application/vnd.ms-excel;charset=utf-8"
 
-               //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
 
-             });
 
-             let objectUrl = URL.createObjectURL(blob);
 
-             let link = document.createElement("a");
 
-             let fname = "VIP列表" + new Date().getTime(); //下载文件的名字
 
-             link.href = objectUrl;
 
-             link.setAttribute("download", fname);
 
-             document.body.appendChild(link);
 
-             link.click();
 
-           });
 
-         })
 
-         .catch(() => {});
 
-     },
 
-     // 修改vip
 
-     resetVip(row) {
 
-       let id  = row.id;
 
-       let educationalTeacherId = row.educationalTeacherId;
 
-       let rules = JSON.stringify(this.rules);
 
-       let searchForm = JSON.stringify(this.searchForm);
 
-       this.$router.push({
 
-         path: "/business/vipReset",
 
-         query: { id,educationalTeacherId, rules, searchForm }
 
-       });
 
-     }
 
-   },
 
-   filters: {
 
-     formatterTime(val) {
 
-       let result;
 
-       if (val) {
 
-         result = val.split(" ")[0];
 
-       } else {
 
-         result = "";
 
-       }
 
-       return result;
 
-     },
 
-     formatterStatus(val) {
 
-       let arr = [
 
-         "未开始",
 
-         "报名中",
 
-         "进行中",
 
-         "取消",
 
-         "已结束",
 
-         "报名结束",
 
-         "暂停"
 
-       ];
 
-       return arr[val];
 
-     }
 
-   }
 
- };
 
- </script>
 
- <style lang="scss" scoped>
 
- .m-container {
 
-   box-sizing: border-box;
 
-   background-color: #fff;
 
-   // padding: 18px 95px 55px 60px;
 
- }
 
- .newBand {
 
-   display: inline-block;
 
- }
 
- </style>
 
 
  |