<template>
    <div class="context">
        <div class="panel">
            <h5>课程管理
            </h5>
            <div class="likeTab">
                <el-button type="" @click="goType('classManage')"  size="mini">当前课程</el-button>
                <el-button type="primary" @click="goType('classHistory')"  size="mini">历史记录</el-button>
            </div>
            <div class="panel-body">
                <div class="panel_control">
                    <el-row :gutter="20">
                        <el-col :span="7">
                            <el-date-picker v-model="panel.timeScope" type="daterange" range-separator="至"
                                start-placeholder="开始日期" end-placeholder="结束日期">
                            </el-date-picker>
                        </el-col>
                        <el-col :span="4">
                            <el-button size="" type="primary" @click="query" :disabled="serachBtnStatus" plain>查询
                            </el-button>
                        </el-col>
                    </el-row>
                </div>
            </div>
        </div>

        <div class="table">
            <el-table :data="tableData" border is-horizontal-resize :default-sort="{prop: 'date', order: 'descending'}"
                element-loading-background="rgba(0, 0, 0, 0.8)" class="" @selection-change="handleSelectionChange">
                >
                <el-table-column label="序号" type="index" width="50" align="center">
                    <template scope="scope">
                        <span>{{(start) + scope.$index + 1}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="BeginTime" label="上课时间" :formatter="filterFmtDate" width="160">
                </el-table-column>
                <el-table-column prop="ClassName" label="课程" width="110" sortable>
                    <template slot-scope="scope">
                        <span class="lessonSpan"
                            :style="{background:scope.row.ClassColor}">{{scope.row.ClassName}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="ConsumeHour" label="消耗课时" width="110" sortable>
                </el-table-column>
                <el-table-column prop="OrderNum" label="实际预约人数" width="130" sortable>
                </el-table-column>
                <el-table-column prop="SvName" label="区域" width="110" sortable>
                </el-table-column>
                <el-table-column prop="ClassType" label="课程类型" width="110" sortable>
                    <template slot-scope="scope">
                        <span v-if="scope.row.ClassType == 1">团课</span>
                        <span v-if="scope.row.ClassType == 3">私教</span>
                        <span v-if="scope.row.ClassType == 2 && scope.row.PkNum == 2">两队PK</span>
                        <span v-if="scope.row.ClassType == 2 && scope.row.PkNum == 3">三队PK</span>
                    </template>
                </el-table-column>
                <el-table-column prop="FinishClass" label="当前状态" width="110" sortable>
                    <template slot-scope="scope">
                        <span v-if="scope.row.FinishClass == 0" style="color: red">未上课</span>
                        <span v-if="scope.row.FinishClass == 1">已下课</span>
                        <span v-if="scope.row.FinishClass == 2" style="color: yellowgreen">已上课</span>
                        <span v-if="scope.row.FinishClass == 3">准备上课</span>
                        <span v-if="scope.row.FinishClass == 4">已完成</span>
                    </template>
                </el-table-column>
                <el-table-column prop="Status" label="操作">
                    <template slot-scope="scope">
                        <!--<el-button type="primary" round size="mini" @click="checkClassOverPrepare(scope.row)">-->
                        <!--下课-->
                        <!--</el-button>-->
                        <!--                        <el-button type="primary" round size="mini" v-if="scope.row.FinishClass == 0"-->
                        <!--                                   @click="showDialogMemberVisible(scope.row)">-->
                        <!--                            上课-->
                        <!--                        </el-button>-->
                        <el-button type="primary" round size="mini"
                            v-if="scope.row.FinishClass == 3 || scope.row.FinishClass == 2" @click="seeEdit(scope.row)">
                            管理
                        </el-button>
                        <!--修改区域 todo-->
                        <el-button type="primary" round plain size="mini" v-if="scope.row.FinishClass == 3"
                            @click="changeShopVenue(scope.row)">
                            编辑
                        </el-button>
                        <!--已完成才能看详情-->
                        <el-button type="primary" round plain size="mini"
                            v-if="scope.row.FinishClass == 1 || scope.row.FinishClass == 4"
                            @click="seeDetail(scope.row)">
                            详情
                        </el-button>

                    </template>
                </el-table-column>
            </el-table>
            <br>
            <el-pagination background :total="pageination.total" :page-size="pageination.pageItem"
                @current-change="pageChange"     :current-page.sync="cur_page"></el-pagination>
        </div>
        <el-dialog :title="dialogTitle" :visible.sync="dialogMemberVisible" width="650px">
            <div class="dialogContent">
                <h5 class="classNames">{{className}}</h5>
                <div class="">
                    <el-form ref="form" :model="form" label-width="160px">
                        <el-form-item label="区域" :required="true">
                            <el-select v-model="form.svId" filterable placeholder="请选择" @change="changeLocationValue">
                                <el-option v-for="item in form.svList" :key="item.SvId" :label="item.Name"
                                    :value="item.SvId">
                                </el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="类型" :required="true">
                            <el-select v-model="form.classType" filterable placeholder="请选择">
                                <el-option v-for="item in form.ClassTypeOptions" :key="item.value" :label="item.label"
                                    :value="item.value">
                                </el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="组队方式" v-if="form.classType == 2">
                            <el-select v-model="form.pkNum" filterable placeholder="请选择">
                                <el-option v-for="item in form.PKTypeOptions" :key="item.value" :label="item.label"
                                    :value="item.value">
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-form>
                </div>
            </div>
            <div class="dialogFooter">
                <el-button type="primary" size="small" v-if="form.btnType == 0" @click="getClassStartPrepare()">确定
                </el-button>
                <el-button type="primary" size="small" v-if="form.btnType == 1" @click="getClassStartPrepareForEdit()">
                    确定
                </el-button>
                <el-button size="small" @click="dialogMemberVisible = false">取消</el-button>
            </div>
        </el-dialog>
    </div>
</template>

<script>
    import Global from '../../Global.js'
    import {
        ClassPreFinishListQuery,
        ClassOverPrepare,
        ClassDetailQuery,
        QueryShopVenue,
        ClassStartPrepare,
        DispPlanInfoEdit,
    } from "../../api/getApiRes";

    let qs = require('qs');
    export default {
        data() {
            return {
                dialogMemberVisible: false,
                serachBtnStatus: false,
                dialogVisible: false,//其他dialog
                dialogFinishVisible: false,//确认下课dialog
                dialogLesson: false,//课时调整
                dialogGift: false,//赠送课时调整
                dialogExpTime: false,//有效期调整
                dialogLessonTable: false,//会员课程
                dialogTitle: '上课准备',
                className: '',
                current: getNowDate(),
                dialogValue: [],
                start: 0,
                draw: 1,
                // panel 配置项目
                panel: {
                    usercode: '',
                    username: '',
                    compname: '',
                    keyword: '',
                    USERCODE: '',
                    endType: '',
                    taskstatus: 99,
                    draw: 1,
                    start: 0,
                    recordsTotal: 0,
                    tableData: [],
                    allTableData: [],
                    limit: '10',
                    multipleSort: false,
                    loading: false,
                    fileList: [],
                    multipleSelection: [],
                    detectedmac: '',
                    options: [
                        { value: 99, label: '全部' },
                        { value: 1, label: '进行中' },
                        { value: 2, label: '已完成' },
                    ],

                    endTypeOptions: [
                        { value: 99, label: '全部' },
                        { value: 30, label: '近一个月' },
                        { value: 7, label: '近一周' },
                        { value: 1, label: '当日' },
                    ],
                    time1: globalBt(),
                    timeScope: globalBt2(0),
                },
                multipleSelection: [],
                pageination: {
                    pageItem: 10,
                    pageoptions: pageOptions(),
                    total: 100,
                    pageIndex: 1,
                },
                form: {
                    name: '',
                    svId: '',
                    svName: '',
                    classType: 1,
                    userCode: '',
                    coach: '',
                    coachOptions: [],
                    shopId: '',
                    memberType: 1,
                    lesson: 1,
                    gift: 1,
                    pktype: 1,
                    pkNum: 2,
                    btnType: 0,//0新建，1编辑
                    memo: '',
                    expTime: '',
                    StdId: '',
                    svList: [],//区域列表
                    dialogdata: [],//穿梭待选
                    dialogValue: [],//穿梭已选
                    ClassTypeOptions: [
                        { value: 1, label: '团课' },
                        // {value: 2, label: '竞技PK'},
                        { value: 3, label: '私教' },
                    ],
                    PKTypeOptions: [
                        { value: 2, label: '2队PK' },
                        { value: 3, label: '3队PK' },
                    ],
                },
                memberTypes: [
                    { value: 1, label: '年会员' },
                    { value: 2, label: '充值会员' },
                ],
                tableData: []
            }
        },
        mounted() {
            this.getTableQuery();
        },
        methods: {
            goType(url) {
                this.$router.push({ path: '/' + url });
            },
            // 更改上课区域
            changeShopVenue(row) {
                this.dialogMemberVisible = true;
                this.form.btnType = 1;//0新建，1编辑
                // 读取本行信息
                this.dialogMemberVisible = true;
                this.className = row.ClassName + ' ' + row.BeginStr + ' - ' + row.EndStr;
                this.form.StdId = row.StdId;
                this.getQueryShopVenue();
                this.form.svId = row.SvId;
                this.form.classType = row.ClassType;
                this.form.pkNum = row.PkNum;
            },
            // 准备上课
            getClassStartPrepare() {
                let that = this;
                if (!that.form.svId) {
                    that.$message.error('上课区域不能为空');
                    return false
                }
                // 不是竞技pk的时候为0
                let uppkNum = that.form.classType == 2 ? that.form.pkNum : 0;

                let param = {
                    token: localStorage.token,
                    stdId: that.form.StdId,
                    svId: that.form.svId,
                    svName: that.form.svName,
                    classType: that.form.classType,
                    pkNum: uppkNum,
                };
                let postdata = qs.stringify(param);
                ClassStartPrepare(postdata).then(res => {
                    let json = res;
                    if (json.Code == 0) {
                        // NewId: 0
                        that.dialogMemberVisible = false;
                        this.getTableQuery();
                        this.$router.push({
                            path: '/classEdit',
                            query: {
                                StdId: that.form.StdId,
                                ClassName: that.form.ClassName,
                                BeginStr: that.form.BeginStr,
                                EndStr: that.form.EndStr,
                                FinishClass: 3,
                            }
                        });
                    } else {
                        that.$message.error(json.Memo + ' 错误码：' + json.Code);
                    }
                })
            },
            // 编辑
            getClassStartPrepareForEdit() {
                let that = this;
                if (!that.form.svId) {
                    that.$message.error('上课区域不能为空');
                    return false
                }
                // 不是竞技pk的时候为0
                let uppkNum = that.form.classType == 2 ? that.form.pkNum : 0;

                let param = {
                    token: localStorage.token,
                    stdId: that.form.StdId,
                    svId: that.form.svId,
                    svName: that.form.svName,
                    classType: that.form.classType,
                    pkNum: uppkNum,
                };
                let postdata = qs.stringify(param);
                DispPlanInfoEdit(postdata).then(res => {
                    let json = res;
                    if (json.Code == 0) {
                        // NewId: 0
                        that.dialogMemberVisible = false;
                        this.getTableQuery();
                    } else {
                        that.$message.error(json.Memo + ' 错误码：' + json.Code);
                    }
                })
            },
            seeDetail(row) {
                this.$router.push({
                    path: '/classInfoDetail', query: {
                        StdId: row.StdId,
                        ClassName: row.ClassName,
                        BeginStr: row.BeginStr,
                        EndStr: row.EndStr,
                    }
                });
            },
            seeEdit(row) {
                this.$router.push({
                    path: '/courseEdit', query: {
                        StdId: row.StdId,
                        ClassName: row.ClassName,
                        BeginStr: row.BeginStr,
                        EndStr: row.EndStr,
                        FinishClass: row.FinishClass,
                    }
                });
            },
            // 获取select的label
            changeLocationValue(val) {
                //locations是v-for里面的也是datas里面的值
                let obj = {};
                obj = this.form.svList.find((item) => {
                    return item.SvId === val;
                });
                this.form.svName = obj.Name;
            },
            // 获取区域列表
            getQueryShopVenue() {
                let that = this;
                let param = {
                    key: localStorage.ServiceKey,
                    shopId: localStorage.ServiceId,
                };
                if (!localStorage.ServiceKey) {
                    that.$message.error('还未与心率系统对接，请联系管理员');
                    return false
                }
                let postdata = qs.stringify(param);
                QueryShopVenue(postdata).then(res => {
                    let json = res;
                    if (json.Code == 0) {
                        that.form.svList = json.Rs;
                    } else {
                        that.$message.error(json.Memo + ' 错误码：' + json.Code);
                    }
                })
            },
            vipSelect(stdId) {
                let that = this;
                // 筛选相同的stdid的classId
                that.form.stdList.map(function (item) {
                    if (item.value == stdId) {
                        let param = {
                            token: localStorage.token,
                            // classId: item.classId
                        };
                        let postdata = qs.stringify(param);
                        // VipUserListQuery
                        VipUserSimpleQuery(postdata).then(res => {
                            let json = res;
                            if (json.Code == 0) {
                                that.form.userId = '';
                                that.form.userList = turnResToOptionBySimViper(json.Rs);
                            } else {
                                that.$message.error(json.Memo + ' 错误码：' + json.Code);
                            }
                        })
                    }
                })
            },
            showDialogMemberVisible(row) {
                this.dialogMemberVisible = true;
                this.form.btnType = 0;//0新建，1编辑编辑
                // clear
                this.form.svList = "";
                this.form.classType = 1;
                this.form.pkNum = "";

                this.form.StdId = row.StdId;
                this.form.ClassName = row.ClassName;
                this.form.BeginStr = row.BeginStr;
                this.form.EndStr = row.EndStr;
                this.form.FinishClass = row.FinishClass;

                this.className = row.ClassName + ' ' + row.BeginStr + ' - ' + row.EndStr;
                this.form.StdId = row.StdId;
                this.getQueryShopVenue();
            },
            // 检测当前课是否处于可改变状态
            // 固定下当前已预约人数列表
            checkClassOverPrepare(row) {
                let that = this;
                let param = {
                    token: localStorage.token,
                    stdId: row.StdId,
                };
                let postdata = qs.stringify(param);
                ClassOverPrepare(postdata).then(res => {
                    let json = res;
                    if (json.Code == 0) {
                        that.goFinish(row);
                    } else {
                        that.$message.error(json.Memo + ' 错误码：' + json.Code);
                    }
                })
            },
            goFinish(row) {
                this.$router.push({
                    path: '/finishDetail', query: {
                        id: row.StdId,
                        classId: row.ClassId,
                        ClassName: row.ClassName,
                        BeginTime: row.BeginTime,
                    }
                });
            },
            handleSelectionChange(val) {
                this.multipleSelection = val;
            },
            // 查询按钮
            query() {
                let that = this;
                that.start = 0;
                that.cur_page = 1;
                that.serachBtnStatus = true;
                let totalTime = 2;
                let clock = window.setInterval(() => {
                    totalTime--;
                    if (totalTime < 0) {
                        totalTime = 2;
                        that.serachBtnStatus = false;
                    }
                }, 1000);
                this.getTableQuery();
                this.$message.success('查询完毕');
            },
            // 页面数据查询
            getTableQuery() {
                let that = this;
                that.loading = true;
                let param = {
                    token: localStorage.token,
                    tagname: that.panel.tagname,//标签名
                    bt: nonTfmtDatetoLength(that.panel.timeScope[0], 10) + " 00:00:00",
                    et: nonTfmtDatetoLength(that.panel.timeScope[1], 10) + " 23:59:59",
                    fcStatus: '1,4',//状态字符串，空是全部 或 0,3,2 是待上课 或 1,4 已下课
                    start: 1,//
                    tableMax: 9999,//
                };
                let postdata = qs.stringify(param);
                ClassDetailQuery(postdata).then(res => {
                    let json = res;
                    if (json.Code == 0) {
                        that.loading = false;
                        if (json.Rs) {
                            that.allTableData = json.Rs;
                            that.recordsTotal = json.Rs.length;
                        } else {
                            that.allTableData = [];
                            that.recordsTotal = 0;
                        }
                        // 设置分页数据
                        that.setPagination();
                    } else {
                        that.$message.error(json.Memo + ' 错误码：' + json.Code);
                    }
                })
            },
            // 设置分页数据
            setPagination() {
                // 分页属性
                let that = this;
                that.pageination.total = that.recordsTotal;

                // 默认分页
                that.tableData = that.allTableData.filter((item, index) => {
                    return index < that.pageination.pageItem;
                });
            },
            // 每页显示数量
            handleSizeChange() {
                let that = this;
                that.tableData = that.allTableData.filter((item, index) => {
                    return index < that.pageination.pageItem;
                });
                that.draw = that.pageination.pageItem;
                // that.getTableQuery();
            },
            // 翻页
            pageChange(pageIndex) {
                let that = this;
                // 获取当前页
                let index = that.pageination.pageItem * (pageIndex - 1);
                // 数据总数
                let nums = that.pageination.pageItem * pageIndex;
                // 容器
                let tables = [];
                for (var i = index; i < nums; i++) {
                    if (that.allTableData[i]) {
                        tables.push(that.allTableData[i])
                    }
                    this.tableData = tables;
                }
                that.start = index * that.draw;
                // that.getTableQuery();
            },
            // 过滤时间
            filterFmtDate(value, row, column) {
                let that = this;
                return nonTfmtDate(column, 11);
            },
        },
        watch: {
            $route(to) {
                if (to.name == 'classHistory') {
                    this.getTableQuery();
                }
            },
        },
    }
</script>

<style scoped>
    @import "../../assets/css/panel.css";

    .context {
        /* height: 770px; */
        overflow-y: scroll;
        display: block;
        margin: 0 auto;
        background-color: #fff !important;
        padding: 30px;
    }

    .panel-body {
        padding: 20px;
        background: #F0F2F5;
    }

    .change {
        width: 100%;
        overflow: hidden;
        display: block;
        margin: 0 auto;
        padding-top: 10px;
        padding-bottom: 10px;
    }

    .change button {
        float: left;
    }

    .change button.pull-right {
        float: right;
    }

    .dialogTitle {
        width: 100%;
        overflow: hidden;
        display: block;
        margin: 0 auto;
        color: #000000;
        font-size: 18px;
        text-align: center;
    }

    .dialogTitle em {
        float: none;
        font-style: normal;
        color: #3799FF;
        margin: 0;
    }

    /deep/ .el-transfer-panel__item .el-checkbox__input {
        left: 40px;
    }

    .dialogFooter {
        width: 90%;
        overflow: hidden;
        display: block;
        margin: 0 auto;
        margin-top: 10px;
    }

    .dialogFooter button {
        float: right;
        margin-left: 10px;
    }

    .dialogContent {
        width: 100%;
        overflow: hidden;
        display: block;
        margin: 0 auto;
    }

    .dialogContent .pull-left {
        width: 30%;
        float: left;
    }

    .dialogContent .pull-right {
        width: 70%;
        float: right;
    }

    .blueTitle {
        width: 200px;
        overflow: hidden;
        display: block;
        margin: 0 auto;
        margin-top: 10px;
        margin-bottom: 40px;
        background: #F0F2F5;
        border-radius: 19px;
        text-align: center;
        color: #3799FF;
        font-size: 16px;
        padding: 5px 24px;
    }

    .current {
        width: 158px;
        height: 23px;
        /*float: left;*/
        border-radius: 250px;
        text-align: center;
        background: #F0F2F5;
        color: #545454;
        font-size: 14px;
        padding: 3px 10px;
        margin-left: 20px;
    }

    .lessonSpan {
        width: 78px;
        height: 22px;
        border-radius: 11px;
        margin-right: 5px;
        float: left;
        margin-bottom: 3px;
        text-align: center;
        color: #000;
        font-size: 12px;
    }

    .classNames {
        width: 211px;
        height: 25px;
        background: #f0f2f5;
        font-family: "Source Han Sans CN";
        font-weight: normal;
        font-size: 16px;
        color: #3799ff;
        border-radius: 250px;
        text-align: center;
        margin: 0 auto;
        margin-bottom: 10px;
    }

    /deep/ .el-date-editor .el-range-separator {
        line-height: 25px;
    }

    .likeTab {
        width: 100%;
        overflow: hidden;
        display: block;
        margin: 0 auto;
        padding-top: 10px;
        padding-bottom: 0;
        border-bottom: 1px solid #ccc;
        margin-bottom: 10px;
    }

    .likeTab button {
        float: left;
        border-radius: 0;
    }

    .likeTab button.pull-right {
        float: right;
    }
    
    @media (min-width: 320px) and (max-width: 1367px) {
        .panel /deep/ .el-date-editor--daterange {
            max-width: 240px;
        }
        .panel /deep/ .el-date-editor .el-range-separator {
            line-height: 35px;
        }
    }
</style>