<template>
  <div class="home">
    <header class="header">
      <div class="header__header">
        <div class="container">
          <div class="text-list" v-if="!userInfo">
            <a @click="go('/login', { state: 1 })">登录</a>
            <a @click="go('/login', { state: 2 })">注册</a>
          </div>

          <div class="icon-list" v-else>
            <!-- <a @click="go('/person-center/my-message')">
              <i class="el-icon-message-solid icon"></i>
            </a> -->

            <el-tooltip
              placement="bottom-end"
              v-model="msgShow"
              :hide-after="0"
              manual
              popper-class="tooltipStyle"
            >
              <el-badge
                :is-dot="msgCount > 0 ? true : false"
                class="item"
                style="vertical-align: baseline"
              >
                <el-button
                  style="font-size: 20px; padding: 0px"
                  icon="el-icon-message-solid"
                  type="text"
                  @click="go('/person-center/my-message')"
                ></el-button>
              </el-badge>
              <div slot="content" class="dis_plays">
                <p style="max-width: 247px">{{ msgData.text }}</p>
                <div class="toolbth" @click="newGoToStudy">立即学习</div>
                <i
                  style="font-size: 18px;cursor:pointer;"
                  class="el-icon-close"
                  @click="clearMsg"
                ></i>
              </div>
            </el-tooltip>
            <el-dropdown @command="handleCommand">
              <span class="el-dropdown-link">
                <i
                  class="el-icon-user-solid"
                  style="
                    font-size: 20px;
                    color: #3f8dfd;
                    cursor: pointer;
                    margin-left: 20px;
                  "
                  @click="go('/person-center/my-course')"
                ></i>
              </span>
              <el-dropdown-menu slot="dropdown">
                <el-dropdown-item command="1">我的课程</el-dropdown-item>
                <el-dropdown-item command="2">我的题库</el-dropdown-item>
                <el-dropdown-item command="3">个人中心</el-dropdown-item>
                <el-dropdown-item command="4">退出登录</el-dropdown-item>
              </el-dropdown-menu>
            </el-dropdown>
          </div>
        </div>
      </div>
      <div class="header__body">
        <div class="container clearfix">
          <a class="logo">
            <img
              v-if="header.companyLogo"
              :src="$tools.splitImgHost(header.companyLogo)"
              alt=""
            />
            <h1 v-else></h1>
          </a>
          <div class="search">
            <div class="search__select">
              <select v-model="type">
                <option value="1">课程</option>
                <option value="2">题库</option>
                <option value="6">直播</option>
              </select>
            </div>
            <div class="search__input">
              <input
                v-model="searchKey"
                type="text"
                autocomplete="new-password"
              />
            </div>
            <el-button type="primary" @click="search" class="search__btn"
              >搜索</el-button
            >
          </div>
          <div
            class="contact"
            v-show="false"
            v-if="header.serviceTel.status == 1"
          >
            <div class="contact__phone">{{ header.serviceTel.tel }}</div>
            <div class="contact__time">
              {{ header.serviceTel.time }}
            </div>
          </div>
        </div>
      </div>
    </header>

    <section class="section">
      <div class="container">
        <div class="tabs">
          <template v-for="(item, index) in showNav(header.Nav)">
            <a v-if="item.name === '首页'" :key="index" class="tab active"
              >首页</a
            >
            <a
              v-if="item.name === '走进祥粤'"
              :key="index"
              class="tab"
              @click="go('/about')"
              >走进祥粤</a
            >
            <a
              v-if="item.name === '课程'"
              :key="index"
              class="tab"
              @click="go('/course-list')"
              >课程</a
            >
            <a
              v-if="item.name === '题库'"
              :key="index"
              class="tab"
              @click="go('/bank-list')"
              >题库</a
            >
            <a
              v-if="item.name === '直播'"
              :key="index"
              class="tab"
              @click="go('/live-list')"
              >直播</a
            >
          </template>
        </div>
      </div>
      <div class="swiper-wrap" :style="{ background: color }">
        <div class="container">
          <div class="left-box">
            <div class="left-box__header">课程导航</div>
            <div class="left-box__body">
              <div class="bg"></div>
              <div class="slide-list">
                <div
                  class="slide-list__item"
                  v-for="(type, typeItem) in typeList"
                  :key="'type' + typeItem"
                >
                  <div class="title" @click="goCourse(type)">
                    {{ type.educationName }}
                  </div>
                  <ul class="nav">
                    <li
                      v-for="(slideItem, slideIndex) in slideList[typeItem]"
                      :key="'item' + slideIndex"
                      @click="goCourse(slideItem)"
                    >
                      <div class="text">
                        {{ slideItem.projectName }}-{{ slideItem.businessName }}
                      </div>
                    </li>
                  </ul>
                </div>
              </div>
              <ul class="list">
                <li v-for="(item, index) in typeList" :key="index">
                  <div class="text">
                    <div class="text__title" @click="goCourse(item)">
                      {{ item.educationName }}
                    </div>
                    <div class="text__desc">
                      <a
                        @click="goCourse(aItem)"
                        class="item"
                        v-for="(aItem, aIndex) in item.list"
                        :key="'aItem' + aIndex"
                        >{{ aItem.projectName }}-{{ aItem.businessName }}</a
                      >
                    </div>
                  </div>
                </li>
              </ul>
            </div>
          </div>

          <div class="swiper">
            <swiper
              v-if="bannerList.length > 0"
              ref="mySwiper"
              @slideChangeTransitionStart="slideChangeTransitionStart($event)"
              class=""
              v-bind:options="swiperOptions"
            >
              <swiper-slide
                v-for="(item, index) in bannerList"
                v-bind:key="index"
                @click.native="swiperJump(item)"
              >
                <img
                  :src="$tools.splitImgHost(item.adverUrl, true, 1272)"
                  alt=""
                />
              </swiper-slide>

              <div class="swiper-pagination" slot="pagination"></div>
              <!-- <div class="swiper-button-prev" slot="button-prev"></div>
              <div class="swiper-button-next" slot="button-next"></div> -->
            </swiper>
          </div>

          <div class="right-box">
            <div class="bg"></div>
            <div class="no-login" v-if="!userInfo">
              <template v-if="loginType == 1">
                <el-form :model="loginForm" ref="loginForm" :rules="loginRules">
                  <div class="input">
                    <el-form-item prop="account">
                      <el-input
                        autocomplete="new-password"
                        v-model="loginForm.account"
                        @keyup.enter.native="login"
                        placeholder="请输入手机号或身份证号"
                      ></el-input>
                    </el-form-item>
                  </div>
                  <div class="input">
                    <el-form-item prop="pwd">
                      <el-input
                        autocomplete="new-password"
                        type="password"
                        v-model="loginForm.pwd"
                        placeholder="请输入密码"
                        @keyup.enter.native="login"
                      ></el-input>
                    </el-form-item>
                  </div>
                  <el-button
                    type="primary"
                    class="submit"
                    @click="login()"
                    :loading="isLogin"
                    >登录</el-button
                  >
                  <div class="bottom-text">
                    <a class="text" @click="loginType = 2">手机验证码登录</a>
                    <a class="text" @click="go('/login?state=2')">注册</a>
                  </div>
                  <div class="dis_flex">
                    <div class="dis_flex_wxloginImg">
                      <img src="@/assets/wx.png" alt="" @click="wxLoginFunc" />
                    </div>
                  </div>
                </el-form>
              </template>

              <template v-if="loginType == 2">
                <el-form
                  :model="loginSmsForm"
                  ref="loginSmsForm"
                  :rules="loginSmsRules"
                >
                  <div class="input">
                    <el-form-item prop="tel">
                      <el-input
                        autocomplete="new-password"
                        v-model="loginSmsForm.tel"
                        placeholder="请输入手机号"
                      ></el-input>
                    </el-form-item>
                  </div>
                  <div class="input">
                    <el-form-item prop="code">
                      <el-input
                        autocomplete="new-password"
                        v-model="loginSmsForm.code"
                        placeholder="请输入验证码"
                      >
                        <span slot="suffix" @click="getLoginSms" class="btn">{{
                          countDown == 0
                            ? "获取验证码"
                            : `${countDown}秒重新获取`
                        }}</span>
                      </el-input>
                    </el-form-item>
                  </div>
                  <el-button
                    type="primary"
                    class="submit"
                    :loading="isloginSms"
                    @click="loginSms()"
                    >登录</el-button
                  >
                  <div class="bottom-text">
                    <a class="text" @click="loginType = 1">账号密码登录</a>
                    <a class="text" @click="go('/login?state=2')">注册</a>
                  </div>
                  <div class="dis_flex">
                    <div class="dis_flex_wxloginImg">
                      <img src="@/assets/wx.png" alt="" @click="wxLoginFunc" />
                    </div>
                  </div>
                </el-form>
              </template>
            </div>

            <div class="has-login" v-else>
              <div class="userinfo">
                <img src="@/assets/ava.png" class="avatar" alt="" />
                <div class="nickname">{{ userInfo && userInfo.realname }}</div>
              </div>

              <div class="type-list">
                <div
                  class="type-list__item"
                  @click="go('/person-center/my-course')"
                >
                  <img src="@/assets/kc.png" alt="" />
                  <div class="text">课程</div>
                </div>
                <div
                  class="type-list__item"
                  @click="go('/person-center/my-bank')"
                >
                  <img src="@/assets/tk.png" alt="" />
                  <div class="text">题库</div>
                </div>
                <div
                  class="type-list__item"
                  @click="go('/person-center/my-order')"
                >
                  <img src="@/assets/dd.png" alt="" />
                  <div class="text">订单</div>
                </div>
              </div>

              <div class="history">
                <div class="btn">上次播放</div>
                <div class="title" @click="goLast">
                  {{ recordList.goodsName }}
                </div>
                <div class="progress">
                  <span
                    >已学{{
                      toFixed(
                        (recordList.videoCurrentTime /
                          recordList.durationTime) *
                          100
                      )
                    }}%</span
                  >
                  <span>{{ recordList.date }}</span>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>

    <section class="course">
      <div class="container">
        <div class="course__header">
          <div class="title">推荐课程</div>
          <div class="tabs">
            <div
              v-for="(item, index) in goodsList1"
              :key="index"
              class="tab"
              :class="active1 === index ? 'active' : ''"
              @click="active1 = index"
            >
              {{ item.name }}
            </div>
          </div>
        </div>
        <div class="course__body">
          <p
            v-if="
              !goodsList1[active1] ||
              !goodsList1[active1].goodsList ||
              goodsList1[active1].goodsList.length === 0
            "
            class="text_align"
          >
            该培训项目无推荐课程
          </p>
          <ul v-else class="list clearfix">
            <template v-for="(item, index) in goodsList1[active1].goodsList">
              <li class="course-item" :key="index" v-if="index < 15">
                <GoodsItem :item="item"></GoodsItem>
              </li>
            </template>
          </ul>
        </div>

        <div class="course__footer">
          <div class="btn" @click="go('/course-list')">查看更多</div>
        </div>
      </div>
    </section>

    <section class="bank">
      <div class="container">
        <div class="bank__header">
          <div class="title">推荐题库</div>
          <div class="tabs">
            <div
              v-for="(item, index) in goodsList2"
              :key="index"
              class="tab"
              :class="active2 === index ? 'active' : ''"
              @click="active2 = index"
            >
              {{ item.name }}
            </div>
          </div>
        </div>
        <div class="bank__body">
          <p
            v-if="
              !goodsList2[active2] ||
              !goodsList2[active2].goodsList ||
              goodsList2[active2].goodsList.length === 0
            "
            class="text_align"
          >
            该培训项目无推荐题库
          </p>
          <ul v-else class="list clearfix">
            <template v-for="(item, index) in goodsList2[active2].goodsList">
              <li
                class="bank-item"
                v-if="index < 15"
                :key="index"
                @click="goodsDetail(item, 2)"
              >
                <GoodsItem :item="item"></GoodsItem>
                <!-- <div class="bank-item__img">
                  <div class="note" v-if="item.year">{{ item.year }}</div>
                  <img
                    v-if="item.coverUrl"
                    :src="$tools.splitImgHost(item.coverUrl)"
                    alt=""
                  />
                </div>
                <div class="bank-item__title">
                  {{ item.goodsName }}
                </div>
                <div class="bank-item__desc">
                  <div class="price">￥{{ item.standPrice }}</div>
                  <a class="add" @click.stop="addCart(item)">加购物车</a>
                </div> -->
              </li>
            </template>
          </ul>
        </div>

        <div class="bank__footer">
          <div class="btn" @click="go('/bank-list')">查看更多</div>
        </div>
      </div>
    </section>

    <el-dialog
      :visible.sync="bindShow"
      width="348px"
      center
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      class="bind"
    >
      <a class="bind__close" @click="bindNext">X</a>
      <div class="bind__header">关联学员身份</div>
      <div class="bind__body">
        <el-form
          class="bind-form"
          ref="bindForm"
          :model="bindForm"
          :rules="bindForm"
        >
          <el-form-item prop="realname"
            ><el-input placeholder="真实姓名" v-model="bindForm.realname">
            </el-input
          ></el-form-item>
          <el-form-item prop="idCard">
            <el-input placeholder="身份证号码" v-model="bindForm.idCard">
            </el-input
          ></el-form-item>
          <el-button
            class="submit"
            type="primary"
            :loading="isBind"
            round
            @click="bind()"
            >确定</el-button
          >
          <div class="bind-next" @click="bindNext">下次再关联</div>
        </el-form>
      </div>
    </el-dialog>

    <ToolBar></ToolBar>
    <Footer></Footer>
    <wx-login ref="wxLogin" @wxLoginBack="wxLoginBack"></wx-login>

    <RebuildModal
      ref="rebuildModal"
      @rebuildSubmit="rebuildSubmit($event)"
    ></RebuildModal>
  </div>
</template>

<script>
import RebuildModal from "@/components/rebuildModal";
import wxLogin from "@/components/wxLogin/index";
import Footer from "@/components/footer/index";
import ToolBar from "@/components/toolbar/index";
import GoodsItem from "@/components/goodsItem/index";
import { swiper, swiperSlide } from "vue-awesome-swiper";
import { mapGetters, mapMutations } from "vuex";
import "swiper/swiper-bundle.css";
export default {
  name: "Home",
  components: {
    swiper,
    swiperSlide,
    Footer,
    GoodsItem,
    ToolBar,
    wxLogin,
    RebuildModal,
  },
  computed: {
    ...mapGetters(["userInfo", "token", "header", "msgCount"]),

    showNav: function () {
      return function (list) {
        var newList = [];
        if (list) {
          newList = list.filter((item) => {
            return item.status === 1;
          });
        }
        return newList;
      };
    },
  },
  data() {
    return {
      msgShow: false,
      msgData: {},
      showBox: false,
      indexToken: "",
      indexUserAccount: "",
      colors: [],
      color: "",
      countDown: 0,
      countDownTimer: null,
      loginRules: {
        account: [
          { required: true, trigger: "blur", message: "请输入手机号/身份证号" },
        ],
        pwd: [{ required: true, trigger: "blur", message: "请输入密码" }],
      },
      loginSmsRules: {
        code: [{ required: true, trigger: "blur", message: "请输入验证码" }],
        tel: [{ required: true, trigger: "blur", message: "请输入手机号" }],
      },
      bindRules: {
        code: [{ required: true, trigger: "blur", message: "请输入验证码" }],
        tel: [{ required: true, trigger: "blur", message: "请输入手机号" }],
        pwd: [{ required: true, trigger: "blur", message: "请输入密码" }],
        read: [{ required: true, trigger: "blur", message: "请勾选服务协议" }],
      },
      bindShow: false,
      loginType: 2,
      loginForm: {},
      loginSmsForm: {},
      bindForm: {},
      isLogin: false,
      isLoginSms: false,
      isBind: false,
      getLoginCodeLock: false,

      isloginSms: false,
      swiperOptions: {
        loop: true,
        observer: true,
        observeParents: true,
        speed: 300,
        autoplayDisableOnInteraction: false,
        autoplayStopOnLast: false,
        autoplay: {
          delay: 1000,
          disableOnInteraction: false,
        },
        // 显示分页
        pagination: {
          el: ".swiper-pagination",
          clickable: true, //允许分页点击跳转
        },
        // 设置点击箭头
        navigation: {
          nextEl: ".swiper-button-next",
          prevEl: ".swiper-button-prev",
        },
      },
      bannerList: [],
      goodsList1: [{}], //推荐课程列表
      goodsList2: [{}], //推荐题库列表
      typeList: [],
      slideList: [],
      active1: 0, //推荐课程index
      active2: 0, //推荐题库index
      searchKey: "",
      type: "1",
      recordList: {},
    };
  },
  mounted() {
    if (this.userInfo) {
      this.getRecord();
      this.getmsg();
      this.getMsgCount();
    }
    this.getActivityList();
    // this.color = this.colors[0];
    this.advertisingList();
    this.educationTypeList();
  },
  watch: {
    userInfo(val) {
      if (val) {
        this.getRecord();
        this.getmsg();
        this.getMsgCount();
      }
    },
  },
  methods: {
    /**
     * 关闭消息
     */
    clearMsg() {
      let ary = {
        userId: this.msgData.userId,
        msgId: this.msgData.id,
        updateTime: new Date(new Date().toLocaleDateString()).getTime(),
      };
      localStorage.setItem("msg", JSON.stringify(ary));
      this.msgShow = false;
    },
    rebuildSubmit(item) {
      this.$router.push({
        path: `/my-course-detail/${item.goodsId}`,
        query: {
          gradeId: item.gradeId,
          orderGoodsId: item.orderGoodsId,
          rebuild: 1,
        },
      });
    },
    getGoodsData() {
      return new Promise((resolve, reject) => {
        this.$request.goodsDetail(this.msgData.goodsId).then((res) => {
          resolve(res.data);
        });
      });
    },
    /**
     * 前往学习
     */
    async newGoToStudy() {
      let item = await this.getGoodsData();
      if (item.goodsType == 1) {
        this.sysTime = this.$tools.timest();
        item.orderGoodsId = this.msgData.orderGoodsId;
        this.canJump(item).then((res) => {
          this.clearMsg();
          this.$router.push({
            path: `/my-course-detail/${item.goodsId}`,
            query: {
              gradeId: item.gradeId,
              orderGoodsId: item.orderGoodsId,
              courseId: res.rows[0].courseId || "",
            },
          });
        });

        // arsty = '立刻学习';

        //题库
      } else if (item.goodsType == 2) {
        this.clearMsg();
        this.$router.push({
          path: "/person-center/my-bank/bank-detail/" + item.goodsId,
          query: {
            orderGoodsId: item.orderGoodsId,
          },
        });
      }
    },
    canJump(item) {
      return new Promise((resolve) => {
        this.$request
          .orderInfo({
            orderGoodsId: item.orderGoodsId,
          })
          .then(async (res) => {
            let items = res.data;
            let currentTime = this.$tools.timest();
            if (items.interfaceAccountId > 0) {
              //学习账号已开通

              if (items.learnStatus == 1) {
                //跳转第三方h5

                const confirmText = [
                  "您的学习账号已经开通，请按照步骤操作，进行学习。",
                  "1.点击【跳转学习网址】按钮",
                  "2.打开学习网址后，选择【个人用户】进行登录",
                  "(1)账号：您个人的身份证号码",
                  "(2)密码：身份证号码，再加111111",
                ];
                const newDatas = [];
                const h = this.$createElement;
                for (const i in confirmText) {
                  newDatas.push(h("p", null, confirmText[i]));
                }
                this.$confirm(h("div", null, newDatas), "温馨提示", {
                  confirmButtonText: "跳转学习网址",
                  cancelButtonText: "关闭",
                  closeOnClickModal: false,
                  closeOnPressEscape: false,
                  distinguishCancelAndClose: false,
                  showClose: false,
                })
                  .then((_) => {
                    window.open("http://admin.zhujianpeixun.com/", "_blank");
                  })
                  .catch((_) => {});

                return;
              } else {
                this.$message({
                  type: "warning",
                  message:
                    "您的学习账号未开通，请稍后再尝试，有疑问，请联系020-87085982！",
                });
                return;
              }
            }
            // //内部系统
            // if (items.interfacePushId > 0 && items.officialStatus != 1) {
            //   this.$message({
            //     type: "warning",
            //     message:
            //       "机构正在为您报名中，请耐心等待，有疑问请联系020-87085982！",
            //   });
            //   return;
            // }
            if (items.goodsType !== 6) {
              if (
                this.sysTime <= items.serviceStartTime ||
                this.sysTime >= items.serviceEndTime
              ) {
                this.$message({
                  type: "warning",
                  message: "不在学习服务期，不能进入学习",
                });
                return;
              }

              if (
                (items.classStartTime &&
                  this.sysTime <= items.classStartTime) ||
                (items.classEndTime && this.sysTime >= items.classEndTime)
              ) {
                this.$message({
                  type: "warning",
                  message: "不在班级有效期，不能进入学习",
                });
                return;
              }

              if (items.learningStatus == 2) {
                this.$message({
                  type: "warning",
                  message: "开放学习时间待定，不能进入学习",
                });
                return;
              }

              if (items.classStatus == 0) {
                this.$message({
                  type: "warning",
                  message: "尚未开班，不能进入学习",
                });
                return;
              }
              if (
                items.learningStatus == 3 &&
                this.sysTime < items.learningTimeStart
              ) {
                this.$message({
                  type: "warning",
                  message: "不在开放学习时间,不能进入学习",
                });
                return;
              }

              let rebuildStatus = await this.courseGoodsRebuildStatus(
                items.goodsId,
                items.gradeId
              );

              if (rebuildStatus == 0) {
                this.$refs.rebuildModal.showModal(items);
                return;
              }
            }

            // if (item.educationName == "继续教育") {
            this.$request
              .lockLockStatus({
                action: "jxjy",
              })
              .then((res) => {
                //有其他端在操作，不能学习
                this.$message({
                  type: "warning",
                  message: res.msg,
                });
              })
              .catch((err) => {
                //可以学习
                this.$request
                  .courseCourseList({
                    pageNum: 1,
                    pageSize: 1,
                    goodsId: items.goodsId,
                    gradeId: items.gradeId,
                  })
                  .then((res) => {
                    if (res.rows.length) {
                      resolve(res);
                    } else {
                      this.$message({
                        type: "warning",
                        message: "课程内暂无可以学习的科目",
                      });
                    }
                  });
              });

            // } else {
            //   this.$request
            //     .courseCourseList({
            //       pageNum: 1,
            //       pageSize: 1,
            //       goodsId: items.goodsId,
            //       gradeId: items.gradeId,
            //     })
            //     .then((res) => {
            //       if (res.rows.length) {
            //         resolve(res);
            //       } else {
            //         this.$message({
            //           type: "warning",
            //           message: "课程内暂无可以学习的科目",
            //         });
            //       }
            //     });
            // }
          });
      });
    },

    /**
     * @param {Object} goodsId 商品id
     * 查询商品重修状态
     */
    courseGoodsRebuildStatus(goodsId, gradeId) {
      return new Promise((resolve) => {
        this.$request
          .courseGoodsRebuildStatus({
            goodsId: goodsId,
            gradeId: gradeId,
          })
          .then((res) => {
            resolve(res.data);
          });
      });
    },
    /**
     * 微信登入
     */
    wxLoginFunc() {
      this.$refs.wxLogin.openBoxs();
    },
    /**
     * 微信登入—返回数据
     */
    wxLoginBack(res) {
      // if (res.data.full_info) {
        localStorage.setItem("user_account", res.data.user_account);
        localStorage.setItem("token", res.data.token);
        this.getInfo();
      // } else {
        this.indexUserAccount = res.data.user_account;
        this.indexToken = res.data.token;
        // this.isLogin = false;
        //弹窗
        // this.bindShow = true;
      // }
    },
    goLast() {
      if (this.recordList.goodsType == 6) {
        this.go("/my-live-detail/" + this.recordList.goodsId, {
          gradeId: this.recordList.gradeId,
          orderGoodsId: this.recordList.orderGoodsId,
          courseId: this.recordList.courseId,
        });
      } else if (this.recordList.goodsType == 1) {
        this.go("/my-course-detail/" + this.recordList.goodsId, {
          gradeId: this.recordList.gradeId,
          orderGoodsId: this.recordList.orderGoodsId,
          courseId: this.recordList.courseId,
        });
      }
    },
    swiperJump(swiper) {
      if (swiper.jumpType == 1) {
        //无跳转
        return;
      } else if (swiper.jumpType == 2) {
        //url
        window.open(swiper.jumpUrl, "_blank");
      } else if (swiper.jumpType == 3) {
        //内部接口
        this.$router.push({
          path: swiper.jumpUrl,
        });
      }
    },
    handleCommand(command) {
      switch (command) {
        case "1":
          this.go("/person-center/my-course");
          break;
        case "2":
          this.go("/person-center/my-bank");
          break;

        case "3":
          this.go("/person-center/my-info");
          break;
        case "4":
          this.$tools.exit();
          break;

        default:
          break;
      }
    },
    toFixed(num) {
      if (num) {
        let str = String(num).indexOf(".");

        if (str != -1) {
          return +num.toFixed(2);
        } else {
          return num;
        }
      } else {
        return 0;
      }
    },
    ...mapMutations(["setUserInfo", "getMsgCount"]),
    /**
     * 播放记录
     */
    getRecord() {
      this.$request
        .studRrecordListUserRecord({
          pageNum: 1,
          pageSize: 1,
        })
        .then((res) => {
          if (res.rows.length) {
            this.recordList = res.rows[0];
          }
        });
    },
    search() {
      if (!this.searchKey.trim()) {
        this.$message({
          type: "warning",
          duration: 2000,
          message: "请输入搜索内容",
        });

        return;
      }
      let type = this.type;

      //根据类型跳转题库或者列表页面
      if (type == "1") {
        this.$router.push({
          path: "/course-list",
          query: {
            searchKey: this.searchKey,
          },
        });
      } else if (type == "6") {
        this.$router.push({
          path: "/live-list",
          query: {
            searchKey: this.searchKey,
          },
        });
      } else {
        this.$router.push({
          path: "/bank-list",
          query: {
            searchKey: this.searchKey,
          },
        });
      }
    },
    /**
     * 查看商品详情
     */
    goodsDetail(item, type) {
      if (type === 1) {
        this.$router.push({
          path: "/course-detail/" + item.goodsId,
        });
      }
      if (type === 2) {
        this.$router.push({
          path: "/bank-detail/" + item.goodsId,
        });
      }
    },
    educationTypeList() {
      this.$request.educationTypeList().then((res) => {
        this.typeList = res.rows.slice(0, 5);
        this.typeList.forEach((typeItem, index) => {
          this.businessList(typeItem.id, index);
        });
      });
    },

    businessList(educationId, index) {
      this.$request
        .businessList({ educationId })
        .then((res) => {
          this.$set(this.slideList, index, res.rows);
          if (res.rows.length >= 2) {
            let newRows = res.rows.slice(0, 2);
            let length = 0;
            newRows.forEach((row) => {
              let str = row.projectName + "-" + row.businessName;
              length = length + str.length;
            });

            if (length >= 17) {
              this.$set(this.typeList[index], "list", res.rows.slice(0, 1));
            } else {
              this.$set(this.typeList[index], "list", res.rows.slice(0, 2));
            }
          } else {
            this.$set(this.typeList[index], "list", res.rows);
          }
        })
        .catch((err) => {
          console.log(err, "err");
        });
    },

    /**
     * 加入购物车
     */
    addCart(item) {
      this.$request
        .addCart({ goodsId: item.goodsId })
        .then((res) => {
          if (res) {
            this.getCartCount();
            this.$message({
              message: "加入购物车成功",
              type: "success",
            });
          }
        })
        .catch((err) => {
          if (err.code == 500) {
            this.$message({
              message: err.msg,
              type: "warning",
            });
          }
        });
    },
    /**
     * 获取推荐商品
     */
    getActivityList() {
      this.$request
        .appCommonActivityRecommendList({ platform: 2, status: 1 })
        .then((res) => {
          let goodsList1 = []; //推荐视频商品
          let goodsList2 = []; //推荐题库商品
          res.rows.forEach((item) => {
            if (item.type === 1) {
              goodsList1.push(item);
            }
            if (item.type === 2) {
              goodsList2.push(item);
            }
          });
          this.goodsList1 = goodsList1.sort((a, b) => a.sort - b.sort);
          this.goodsList2 = goodsList2.sort((a, b) => a.sort - b.sort);
        });
    },
    goCourse(item) {
      this.$router.push({
        path: "/course-list",
        query: {
          educationId: item.educationId ? item.educationId : item.id || "",
          projectId: item.projectId || "",
          businessId: item.educationId ? item.id : "",
        },
      });
    },
    slideChangeTransitionStart(e) {
      this.color = this.colors[this.$refs.mySwiper.swiper.realIndex];
    },
    advertisingList() {
      this.$request
        .advertisinghomeLocationList({
          platform: 2, //1小程序2PC网站
          status: 1,
          locationKey: "home-banner", //首页轮播KEY
        })
        .then((res) => {
          this.swiperOptions.autoplay.delay = res.data[0].intervalTime * 1000;
          /**
           * 如果存在-调用轮播图列表
           */
          if (res.data.length) {
            this.$request
              .advertisingList({ locationId: res.data[0].locationId })
              .then((res) => {
                this.bannerList = res.rows;
                this.colors = res.rows.map((item) => {
                  return item.color ? item.color : "rgba(225,225,225,0.1)";
                });
                this.color = this.colors[0];
              });
          }
        });
    },
    go(path, query) {
      this.$router.push({
        path,
        query,
      });
    },
    mouseover() {
      clearTimeout(this.timer);
      this.showBox = true;
    },

    mouseLeave() {
      clearTimeout(this.timer);
      this.timer = setTimeout(() => {
        this.showBox = false;
      }, 500);
    },
    login() {
      this.$refs.loginForm.validate((valid) => {
        if (valid) {
          this.isLogin = true;
          let loginForm = JSON.parse(JSON.stringify(this.loginForm));
          loginForm.pwd = this.$tools.encryptor(loginForm.pwd);
          console.log(this.loginForm);
          this.$request
            .login(loginForm)
            .then((res) => {
              // if (res.data.full_info) {
                localStorage.setItem("user_account", res.data.user_account);
                localStorage.setItem("token", res.data.token);

                this.getInfo();
              // } else {
                this.indexUserAccount = res.data.user_account;
                this.indexToken = res.data.token;
                // this.isLogin = false;
                //弹窗
                // this.bindShow = true;
              // }
            })
            .catch((err) => {
              this.isLogin = false;
              this.$message({
                message: err.msg,
                type: "error",
              });
            });
        }
      });
    },
    /**
     * 获取登录短信
     */
    getLoginSms() {
      this.$refs.loginSmsForm.validateField("tel", (valid) => {
        if (!valid) {
          if (this.countDown == 0) {
            if (this.getLoginCodeLock) {
              return;
            }
            this.getLoginCodeLock = true;
            this.$request
              .getLoginSms({ tel: this.loginSmsForm.tel })
              .then((res) => {
                this.getLoginCodeLock = false;
                this.$message({
                  message: `验证码已发送`,
                  type: "success",
                });
                this.countDown = 60;
                this.countDownTimer = setInterval(() => {
                  if (this.countDown == 0) {
                    clearInterval(this.countDownTimer);
                  } else {
                    this.countDown--;
                  }
                }, 1000);
              })
              .catch((err) => {
                this.$message.error(err.msg);
                this.getLoginCodeLock = false;
              });
          }
        }
      });
    },
    /**
     * 手机号登录
     */
    loginSms() {
      this.$refs.loginSmsForm.validate((valid) => {
        if (valid) {
          this.isloginSms = true;
          this.$request
            .loginSms(this.loginSmsForm)
            .then((res) => {
              this.isloginSms = false;
              // if (res.data.full_info) {
                localStorage.setItem("user_account", res.data.user_account);
                localStorage.setItem("token", res.data.token);
                this.$tools.setUuid(new Date().valueOf() + "");
                this.getInfo();
              // } else {
                this.indexUserAccount = res.data.user_account;
                this.indexToken = res.data.token;
                // this.bindShow = true;
              // }
            })
            .catch((err) => {
              this.isloginSms = false;
              this.$message({
                message: err.msg,
                type: "error",
              });
            });
        }
      });
    },
    /**
     * 消息提示
     */
    getmsg() {
      this.$request.informUserselectLastUnStudyMsg().then((res) => {
        if (res.data && res.data.id) {
          let today = new Date(new Date().toLocaleDateString()).getTime();
          if (localStorage.getItem("msg")) {
            let ary = JSON.parse(localStorage.getItem("msg"));
            if (ary.updateTime === today) {
              this.msgShow = false;
              return;
            }
          }
          this.$nextTick(() => {
            this.msgData = res.data;
            this.msgShow = true;
          });
        } else {
          this.msgShow = false;
        }
      });
    },
    /**
     * 获取用户登录信息
     */
    getInfo() {
      this.$request
        .getInfo({fromPlat: 2})
        .then((res) => {
          this.loginForm = {};
          this.loginSmsForm = {};
          this.isLogin = false;
          this.isloginSms = false;
          this.setUserInfo(res.data);
          this.getmsg();
        })
        .catch((err) => {
          this.isLogin = false;
          this.isloginSms = false;
          this.$message({
            message: err.msg,
            type: "error",
          });
        });
    },
    bind() {
      this.$refs.bindForm.validate((valid) => {
        if (valid) {
          this.isBind = true;
          let bindForm = JSON.parse(JSON.stringify(this.bindForm));
          bindForm.token = this.indexToken;
          this.$request
            .bindIdCard(bindForm)
            .then((res) => {
              this.isBind = false;
              this.bindShow = false;
              this.$message({
                message: "关联成功",
                type: "success",
              });
              localStorage.setItem("user_account", this.indexUserAccount);
              localStorage.setItem("token", this.indexToken);
              this.$tools.setUuid(new Date().valueOf() + "");
              this.getInfo();
            })
            .catch((err) => {
              this.isBind = false;
              this.$message({
                message: err.msg,
                type: "error",
              });
            });
        }
      });
    },

    bindNext() {
      this.bindShow = false;
      this.indexToken = "";
      this.indexUserAccount = "";
    },
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
.text_align {
  text-align: center;
  font-size: 18px;
  margin: 40px 0px;
}
.home {
  .header {
    background: #ffffff;

    &__header {
      box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.04);

      .text-list {
        height: 40px;
        line-height: 40px;
        text-align: right;
        font-size: 0;

        a {
          color: #3f8dfd;
          font-size: 14px;
          padding: 0 14px;

          &:nth-last-of-type(1) {
            padding-right: 0;
            border-left: 1px solid #3f8dfd;
          }
        }
      }

      .icon-list {
        height: 40px;
        line-height: 40px;
        text-align: right;
        font-size: 0;

        a {
          color: #3f8dfd;
          font-size: 14px;
          padding: 0 14px;
          position: relative;

          .icon {
            font-size: 20px;
          }
          .modal-box {
            width: 162px;
            background: #ffffff;
            box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.1);
            border-radius: 8px;
            position: absolute;
            top: 34px;
            left: -40px;
            li {
              margin-left: 10px;
              border-bottom: 1px solid #eeeeee;
              height: 40px;
              line-height: 40px;
              cursor: pointer;
              padding-left: 5px;
              color: #666666;
              text-align: left;
              &:hover {
                background: #eeeeee;
                color: #3f8dfd;
              }

              &:nth-last-of-type(1) {
                border: 0;
              }
            }
          }
        }
      }
    }

    &__body {
      margin-top: 16px;
      .logo {
        float: left;
        img {
          width: 162px;
          height: 33px;
        }
        h1 {
          background: url("~@/assets/logo.png") no-repeat center;
          width: 162px;
          height: 33px;
        }
      }

      .search {
        float: left;
        margin-left: 160px;
        width: 648px;
        background: #fafbfc;
        border: 1px solid #3f8dfd;
        border-radius: 8px;
        display: flex;
        overflow: hidden;

        &__select {
          width: 76px;
          border-right: 1px solid #fff;

          select {
            text-align: center;
            width: 100%;
            height: 100%;
            border: 0;
            outline: none;
          }
        }

        &__input {
          flex: 1;

          input {
            width: 100%;
            height: 100%;
          }
        }

        &__btn {
          padding: 0;
          text-align: center;
          width: 80px;
          height: 40px;
          line-height: 40px;
          font-size: 14px;
          border-radius: 0;
        }
      }

      .contact {
        float: right;
        padding-left: 45px;
        background: url("~@/assets/cus.png") no-repeat left top;

        &__phone {
          font-size: 18px;
          font-family: Microsoft YaHei;
          font-weight: bold;
          color: #666666;
        }

        &__time {
          font-size: 14px;
          font-family: Microsoft YaHei;
          font-weight: 400;
          color: #666666;
        }
      }
    }
  }

  .section {
    margin-top: 40px;

    .tabs {
      margin-left: 324px;

      .tab {
        display: inline-block;
        width: 138px;
        height: 40px;
        font-size: 16px;
        text-align: center;
        line-height: 40px;
        color: #333;

        &.active {
          color: #3f8dfd;
          background: #f0f5fc;
        }
      }
    }
    .swiper-wrap {
      transition: background 0.3s;
      height: 400px;
      position: relative;

      .container {
        position: relative;
        height: 400px;
        .left-box {
          position: absolute;
          top: -40px;
          left: 0;
          height: 440px;
          width: 300px;
          z-index: 10;

          &__header {
            height: 40px;
            line-height: 40px;
            color: #fff;
            font-size: 16px;
            background: #3f8dfd;
            text-align: center;
          }

          &__body {
            position: relative;
            height: 400px;
            background: rgba(0, 0, 0, 0.5);
            overflow: hidden;

            &:hover {
              overflow: visible;
              .slide-list {
                opacity: 1;
                left: 100%;
              }
            }
            .slide-list {
              opacity: 0;
              transition: all 0.3s;
              width: 672px;
              padding: 0;
              background: rgba(255, 255, 255, 1);
              position: absolute;
              top: 0;
              left: 0;
              padding-left: 24px;
              z-index: 10;

              &__item {
                min-height: 80px;
                display: flex;
                align-items: center;
                border-bottom: 1px solid #ddd;

                &:nth-last-of-type(1) {
                  border: 0;
                }
                .title {
                  cursor: pointer;
                  color: #fff;
                  width: 120px;
                  height: 28px;
                  border: 1px solid #ffffff;
                  border-radius: 14px;
                  background: #3f8dfd;
                  line-height: 26px;
                  text-align: center;
                  border-radius: 15px;
                  margin-right: 10px;
                }

                .nav {
                  flex: 1;
                  display: flex;
                  flex-wrap: wrap;
                  li {
                    margin: 9px 24px 9px 0;
                    display: flex;

                    .text {
                      cursor: pointer;
                      font-size: 14px;
                      font-family: Microsoft YaHei;
                      font-weight: 400;
                      color: #666;
                    }
                  }
                }
              }
            }

            .bg {
              backdrop-filter: blur(10px);
              position: absolute;
              left: 0;
              top: 0;
              width: 100%;
              height: 100%;
              z-index: 12;
            }

            .list {
              position: relative;
              z-index: 22;
              padding-left: 16px;
              li {
                padding: 12px 0;
                height: 80px;
                border-bottom: 1px solid rgba(255, 255, 255, 0.6);
                display: flex;

                &:nth-last-of-type(1) {
                  border: 0;
                }

                .text {
                  flex: 1;
                  &__title {
                    cursor: pointer;
                    font-size: 16px;
                    font-family: Microsoft YaHei;
                    font-weight: 400;
                    color: #ffffff;
                  }

                  &__desc {
                    margin-top: 16px;
                    .item {
                      font-size: 14px;
                      font-family: Microsoft YaHei;
                      font-weight: 400;
                      color: #ffffff;
                      margin-right: 30px;
                    }
                  }
                }
              }
            }
          }
        }

        .swiper {
          .swiper-slide {
            cursor: pointer;
            height: 400px;

            img {
              width: 100%;
              height: 100%;
            }
          }

          .swiper-pagination {
            text-align: right;
            padding-right: 324px;

            /deep/ .swiper-pagination-bullet {
              background: rgba(255, 255, 255, 0.4);

              &-active {
                background: rgba(255, 255, 255, 1);
              }
            }
          }
        }

        .right-box {
          width: 300px;
          background: rgba(0, 0, 0, 0.5);
          position: absolute;
          right: 0;
          bottom: 0;
          top: 0;
          z-index: 10;

          .bg {
            backdrop-filter: blur(10px);
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            z-index: 2;
          }

          .no-login {
            position: relative;
            z-index: 10;
            .input {
              margin: 16px;
              height: 40px;
              background: #ffffff;
              border-radius: 8px;

              input {
                padding: 0 16px;
                width: 100%;
                height: 100%;
                font-size: 14px;
                color: #333;

                &::placeholder {
                  color: #999;
                }
              }

              .btn {
                font-size: 14px;
                font-family: Microsoft YaHei;
                font-weight: 400;
                color: #3f8dfd;
                white-space: nowrap;
                cursor: pointer;
              }
            }

            .submit {
              margin: 16px;
              font-size: 16px;
              margin-top: 16px;
              box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.08);
              display: block;
              width: 268px;
            }

            .bottom-text {
              margin: 16px;
              display: flex;
              justify-content: space-between;

              .text {
                color: #fff;
              }
            }
          }

          .has-login {
            position: relative;
            z-index: 10;
            padding: 14px 0 0 14px;

            .userinfo {
              display: flex;
              align-items: center;

              .avatar {
                width: 40px;
                height: 40px;
              }

              .nickname {
                font-size: 16px;
                font-family: Microsoft YaHei;
                font-weight: bold;
                color: #ffffff;
                margin-left: 7px;
              }
            }

            .type-list {
              display: flex;
              margin-top: 28px;
              padding-bottom: 14px;
              border-bottom: 1px solid #fff;
              &__item {
                cursor: pointer;
                margin-right: 38px;
                .img {
                  width: 64px;
                  height: 64px;
                }

                .text {
                  text-align: center;
                  margin-top: 10px;
                  font-size: 14px;
                  font-family: Microsoft YaHei;
                  font-weight: 400;
                  color: #ffffff;
                }

                &:nth-last-of-type(1) {
                  margin-right: 0;
                }
              }
            }

            .history {
              border-bottom: 1px solid #fff;
              padding-bottom: 15px;
              .btn {
                margin-top: 15px;
                width: 64px;
                height: 24px;
                border: 1px solid #ffffff;
                border-radius: 8px;
                text-align: center;
                line-height: 24px;
                color: #fff;
              }

              .title {
                cursor: pointer;
                margin-top: 15px;
                padding-right: 15px;
                font-size: 14px;
                font-family: Microsoft YaHei;
                font-weight: 400;
                color: #ffffff;
              }

              .progress {
                margin-top: 15px;
                display: flex;
                justify-content: space-between;
                padding-right: 15px;

                span {
                  font-size: 14px;
                  font-family: Microsoft YaHei;
                  font-weight: 400;
                  color: #ffffff;
                }
              }
            }
          }
        }
      }
    }
  }

  .course {
    background: #f5f7fa;
    padding-top: 40px;

    &__header {
      display: flex;
      align-items: center;

      .title {
        background: url("~@/assets/video.png") no-repeat left center;
        padding-left: 36px;
        font-size: 24px;
        font-family: YouSheBiaoTiHei;
        font-weight: 400;
        color: #333333;
        text-shadow: 0px 6px 6px rgba(249, 113, 13, 0.08);
      }

      .tabs {
        margin-left: 40px;
        display: flex;
        align-items: center;

        .tab {
          cursor: pointer;
          user-select: none;
          // width: 88px;
          padding: 0px 6px;
          height: 24px;
          border: 1px solid #f84e05;
          border-radius: 12px;
          text-align: center;
          line-height: 24px;
          color: #f84e05;
          font-size: 14px;
          margin: 0 4px;

          &.active {
            color: #fff;
            background: #f84e05;
          }
        }
      }
    }

    &__body {
      .list {
        width: 100%;

        .course-item {
          float: left;
        }
      }
    }

    &__footer {
      overflow: hidden;
      .btn {
        cursor: pointer;
        width: 146px;
        height: 40px;
        background: #e3eaf7;
        border-radius: 8px;
        margin: 20px auto 40px;
        color: #3f8dfd;
        text-align: center;
        line-height: 40px;
        transition: all 0.2s;
        &:hover {
          color: #fff;
          box-shadow: 0px 8px 4px 0px rgba(7, 82, 208, 0.08);
          background: #3f8dfd;
        }
      }
    }
  }

  .bank {
    background: #fff;
    padding-top: 40px;

    &__header {
      display: flex;
      align-items: center;

      .title {
        background: url("~@/assets/exercise.png") no-repeat left center;
        padding-left: 36px;
        font-size: 24px;
        font-family: YouSheBiaoTiHei;
        font-weight: 400;
        color: #333333;
        text-shadow: 0px 6px 6px rgba(249, 113, 13, 0.08);
      }

      .tabs {
        margin-left: 40px;
        display: flex;
        align-items: center;

        .tab {
          cursor: pointer;
          user-select: none;
          padding: 0px 6px;
          // width: 88px;
          height: 24px;
          border: 1px solid #437cff;
          border-radius: 12px;
          text-align: center;
          line-height: 24px;
          color: #437cff;
          font-size: 14px;
          margin: 0 4px;

          &.active {
            color: #fff;
            background: #437cff;
          }
        }
      }
    }

    &__body {
      .list {
        width: 100%;

        .bank-item {
          float: left;
        }
      }
    }

    &__footer {
      overflow: hidden;
      .btn {
        cursor: pointer;
        width: 146px;
        height: 40px;
        background: #e3eaf7;
        border-radius: 8px;
        margin: 20px auto 40px;
        color: #3f8dfd;
        text-align: center;
        line-height: 40px;
        transition: all 0.2s;
        &:hover {
          color: #fff;
          box-shadow: 0px 8px 4px 0px rgba(7, 82, 208, 0.08);
          background: #3f8dfd;
        }
      }
    }
  }

  .bind {
    /deep/ .el-dialog__header {
      display: none;
    }
    /deep/ .el-dialog__body {
      padding: 0;
      overflow: unset;
    }
    &__close {
      position: absolute;
      right: 0;
      top: -28px;
      width: 24px;
      height: 24px;
      line-height: 24px;
      text-align: center;
      color: #eee;
      border: 1px solid #eee;
      border-radius: 50%;
    }
    &__header {
      height: 40px;
      text-align: center;
      line-height: 40px;
      border-bottom: 1px solid #eeeeee;
    }
    &__body {
      height: 248px;
      padding: 24px;
      position: relative;
      box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.04);
      border-radius: 8px;
      .submit {
        width: 100%;
      }

      .bind-next {
        font-size: 14px;
        text-align: center;
        color: #999;
        margin-top: 10px;
        cursor: pointer;
      }
    }
  }
}
.fade-enter,
.fade-leave-to {
  opacity: 0;
  height: 0;
}
.fade-enter-to,
.fade-leave {
  opacity: 1;
  height: 122px;
}
.fade-enter-active,
.fade-leave-active {
  transition: all 0.3s;
}
.dis_flex {
  user-select: none;
  display: flex;
  align-items: center;
  justify-content: center;
  .dis_flex_wxloginImg {
    cursor: pointer;
    width: 76px;
    height: 76px;
    border-radius: 50%;
    overflow: hidden;
    background-color: #fff;
    line-height: 76px;
    text-align: center;
    img {
      vertical-align: middle;
      width: 40px;
      height: 40px;
    }
  }
}
/deep/ .el-badge__content.is-fixed {
  top: 7px;
}
.dis_plays {
  display: flex;
  align-items: center;
}
.toolbth {
  border-radius: 55px;
  background-color: #fff;
  color: #3f8dfd;
  font-size: 14px;
  padding: 5px 14px;
  margin-right: 16px;
  user-select: none;
  cursor: pointer;
}
</style>
<style lang="scss">
.tooltipStyle {
  background-color: #3f8dfd !important;
  color: #fff;
}
.tooltipStyle .popper__arrow {
  border-bottom-color: #3f8dfd!important;
}
.tooltipStyle .popper__arrow::after {
  border-bottom-color: #3f8dfd!important;
}
</style>
