<template>
  <!-- 组件详情页面：模块列表及其下面的元件列表 -->
  <div class="page-container-merge">
    <CommonNavbar
      id="header"
      :bgColor="bgColor"
      v-show="isShowNavbar"
      :isBlack="isBlack"
      :isShowShare="isShowShare"
      :title="navTitle"
      :shareTitle="project.projectName"
      :shareTitleInfo="project.projectIntro"
      :isFixNavbar="isFixNavbar"
      :shareUrl="shareUrl"
      :burialPoint="pointStyle"
      :projectId="projectId"
      :limitTimes="limitTimes"
      borderStyle="0px solid #fff"
      :backMethod="from"
    ></CommonNavbar>
    <div class="page-content list-container">
      <!-- banner图片 -->
      <div v-if="bannerType == 1" class="page-content-img-container">
        <img class="banner-img" :src="attachmentUrl" />
        <img v-show="project.status == 5" class="banner-img-5" src="../images/status-keep-on.png" />
        <img v-show="project.status == 10" class="banner-img-10" src="../images/status-end-cme.png" />
      </div>
      <!-- banner视频 -->
      <CommonTcPlayer ref="tcPlayerRef" v-if="bannerType == 2" style="flex" :options="videoOptions" @sk-tip="isShowSkDialog=true"></CommonTcPlayer>
      <div class="sk-btn-cover-new" @click="continueStudy()" v-if="bannerType == 2 && hasBindCard">
      <!-- <div class="sk-btn-cover-new" @click="continueStudy()" > -->
        <span :class="{'android': isAndroid}">继续学习</span>
      </div>
      <!-- 项目标题 -->
      <CommonDescription
        :projectName="project.projectName"
        :studyNum="project.studyNum"
        :subject="project.subject"
      />
      <CommonAdertImg :advertInfoList="advertInfoList" position="0" />
      <!-- 简介和目录 -->
      <div class="intro-catalogue-container">
        <div
          id="content-title"
          class="title"
          :class="{'fixed-title-1': (fixedFlag && !isWeb), 'fixed-title-2': (fixedFlag && isWeb)}"
        >
          <span :class="{'focus': tabFlag}" @click="jumpIntro">简介</span>
          <span :class="{'focus': !tabFlag}" @click="jumpCatalogue">目录</span>
        </div>
        <div v-show="fixedFlag" class="fixed-flag-height"></div>
        <div id="intro-content" class="intro-content">
          <BasicInfo
            :projectNo="project.projectNo"
            :credit="project.credit"
            :level="project.level"
            :scope="project.scope"
            :startDate="project.startDate"
            :endDate="project.endDate"
            :organName="project.organName"
            :remind="project.remind"
            :projectCredit="project.projectCredit"
            :projectName="project.projectName"
          />
          <LearnKnow v-if="project.mustKnow" :mustKnow="project.mustKnow"></LearnKnow>
          <CommonSpliteLine></CommonSpliteLine>
          <ItemIntro v-if="textContent" :textContent="textContent" @itemIntroText="itemIntroText"></ItemIntro>
          <ItemLeader
            v-if="projectLeader"
            :projectLeader="projectLeader"
            :leaderText="leaderText"
            @changeLeaderText="changeLeaderText"
          />
          <TeacterIntro v-if="doctorList.length" :doctorList="doctorList"></TeacterIntro>
        </div>
        <CommonSpliteLine></CommonSpliteLine>
        <div id="catalogue-content" class="catalogue-content">
          <div class="catalogue-title">
            <span class="c-title">目录</span>
            <span v-if="needShowUpdate" class="c-sub">每周更新课程</span>
          </div>
          <CellListDetail
            :projectComponent="projectComponentDTOS"
            :actionList="actionList"
            :detailNum="detailNum"
            :courseRequire="courseRequire"
            :hasBindCard="hasBindCard"
            :limitTimes="limitTimes"
            :projectId="projectId"
          />
        </div>
      </div>

      <CommonAdertImg needPadTop :advertInfoList="advertInfoList" position="1" />
      <NoMoreContent />
      <div v-if="detailNum <= 9" class="no-more-bottom"></div>
    </div>

    <!-- <ExjumperButton
      @btnClick="beforeJumpToExam"
      v-if="hasBindCard"
      :btnText="project.currentProgress > 1 ? '参加考试' : '学完全部课程，可参加考试'"
      :type="project.currentProgress > 1 ? 'primary' : 'disabled'"
    ></ExjumperButton> -->
    <div v-if="!hasBindCard && !isWeb" style="padding-top: 30px"></div>

    <BindCardButton
      v-if="!hasBindCard && !isWeb"
      :cardInfo="cardInfo"
      @changeClick="changeClick"
      @gotoBuy="confirm"
    ></BindCardButton>

    <!--去激活-->
    <ChangeCard
      :changeErrorMsg="changeCardErrorMsg"
      :isShow="showChangeCard"
      @cancle="cancleChangeCard"
      @confirm="changeCardAction">
    </ChangeCard>
    <Loading v-show="showLoading" />
    <div>
      <span ref="copyLinkBtn"
        data-clipboard-action="copy"
        class="cobyOrderSn"
        :data-clipboard-text="this.project.cardKey"
        @click="copyLink"
      ></span>
    </div>

    <ShiKanCommonDialog
      class="shikan"
      needSubContent
      content="试看结束"
      subContent="购买后可看完整课程"
      confirmBtnText="去购买"
      :isShowDialog="isShowSkDialog"
      @handlerAction="goBuyKc"
    />

    <IOSDownloadDialog
      class="shikan"
      isSingle
      content="请您下载新版本App"
      cancleBtnText="我知道了"
      :isShowDialog="isShowIOSDownloadDialog"
      @handlerAction="goBack"
    />

    <CourseDialog
      :subContent="subContent"
      confirmBtnText="激活"
      needSubContent
      :isShowDialog="showBindCardTips"
      @handlerAction="handlerAction"
    ></CourseDialog>
  </div>
</template>
<script>
import CommonNavbar from "@/components/common/common-navbar";
import CommonDescription from "@/components/common/common-description";
import CommonSpliteLine from "@/components/common/common-splite-line";

import CellListDetail from "@/components/business/cell-list-detail";
import CommonTcPlayer from "@/components/common/common-tcplayer";
import Loading from "@/components/common/common-loading";

import BasicInfo from "@/components/cme/basic-info";
import LearnKnow from "@/components/cme/learn-know";
import ItemIntro from "@/components/cme/item-intro";
import ItemLeader from "@/components/cme/item-leader";
import TeacterIntro from "@/components/cme/teacter-intro";
import CommonDialog from "@/components/cme/common-dialog";
import CourseDialog from "@/components/course/course-dialog";
import ExjumperButton from "@/components/cme/exjumper-button";
import NoMoreContent from "@/components/business/no-more-content";
import CommonAdertImg from "@/components/common/common-advert-img";
import ShiKanCommonDialog from "@/components/cme/common-dialog";
import IOSDownloadDialog from "@/components/cme/common-dialog";

import { getWebPageUrl, gotoPage, getAppVersion } from "@/utils/index";
import { mapGetters, mapActions } from "vuex";
import vueFilters from "@/utils/filter";
import { Toast } from "vant";
import BindCardButton from "@/components/cme/bind-card-button";
import ChangeCard from "@/components/cme/change-card";
let cataOffsetTop = 0;
let intorOffsetTop = 0;
let titleOffsetHeight = 50;

export default {
  data() {
    return {
      // token: "9B62E5874DA94979A54DB3E9DFC1443F",
      isWeb: window.__isWeb,
      isAndroid: __isAndroid,
      textContent: "",
      leaderText: "",
      pageTitle: "",
      isShowShare: true,
      tabFlag: true, // 显示目录还是简介
      fixedFlag: false, // 目录和简介是否固定
      project: {
        credit: "", // 学分
        creditId: 0, // 学分Id
        level: "", // 项目等级
        scope: "", // 申请范围
        remind: "", // 在不在范围提醒
        startDate: 0, // 开始时间
        endDate: 0, // 结束时间
        organName: "", // 发起机构
        projectName: "", // 项目名称
        projectNo: "", // 项目编号
        currentProgress: 0, // 项目进度
        projectIntro: "", // 项目介绍
        mustKnow: "", // 学习须知
        studyNum: 0, // 学习人数
        studyProgress: "0%", // 学习进度
        subject: "", // 学科
        status: 0, // 项目状态 5是进行中 10是已结束
        certificateUrl: "", // 证书url
        inScope: 0, // 是否在范围内判断
        projectCredit: "", // 学分
        certificateId: "0",
        examBtnUrl: "", //  考试按钮跳转连接
        firstIntoExam: false, //  true弹框，是否首次进入考试,用于首次跳转弹框提示,只跟项目和人员有关
        jumpToContents: false, //  是否跳转到目录
        cardStatus: 0,
        cardKey: '',
      },
      hasBindCard: false, // 是否绑定过学习卡或激活过   没有绑定，则显示绑定按钮
      limitTimes: 60,
      projectLeader: {},
      doctorList: [],
      from: "inner",
      isBlack: false,
      showLoading: false,
      projectId: "1",
      contentList: [],
      //moduleName: "",
      bannerType: 1, // 1 图片 2视频
      videoOptions: {
        mp4: "",
        autoplay: true, //iOS下safari浏览器，以及大部分移动端浏览器是不开放视频自动播放这个能力的
        coverpic: require("../images/video-cover.png"),
        width: "415", //视频的显示宽度，请尽量使用视频分辨率宽度
        height: "210", //视频的显示高度，请尽量使用视频分辨率高度
        trySeeTime: '',
        x5_fullscreen: false,
      },
      //projectStatus: 1, //1没有获得证书 2是获得全部证书
      // attachmentUrl: require("../images/banner-default.png"),
      attachmentUrl: require("../images/video-cover.png"),
      bgColor: "none",
      navTitle: "项目详情",
      // compTitle: "组件名称",
      isShowNavbar: true,
      isFixNavbar: true,
      pointStyle: "activity",
      projectComponentDTOS: [],
      actionList: [],
      detailNum: 0,
      courseRequire: 0,
      clientType: 0,
      // currentProgress>1时考试按钮显示并可用
      btnType: "primary", // primary: 可跳转时（currentProgress = 1）; disabled: 不可跳转时
      btnText: "学完全部课程，可参加考试", // 参加考试（currentProgress = 1）; 或者学完全部课程，可参加考试
      provinceId: "",
      organizationId: "",
      cardInfo: {
        id: 0
      },
      advertInfoList: [],
      showChangeCard: false, //是否展示激活弹框,
      changeCardErrorMsg: "",
      isInfresh: false,
      needShowUpdate: false,
      skCourseId: 0,
      isShowSkDialog: false,
      isShowIOSDownloadDialog: false,
      shareUrl: location.href,
      showBindCardTips: false,
      cmeCardModels: {
        cardNo: "",
        cardKey: "",
        cardType: 3,
        orderId: 0,
      },
      subContent: "",
      hasNoUsedCard: false,
    };
  },
  components: {
    CommonNavbar,
    CommonDescription,
    CommonSpliteLine,
    CellListDetail,
    Loading,
    CommonTcPlayer,
    BasicInfo,
    LearnKnow,
    ItemIntro,
    ItemLeader,
    TeacterIntro,
    CommonDialog,
    CourseDialog,
    ExjumperButton,
    CommonAdertImg,
    NoMoreContent,
    BindCardButton,
    ChangeCard,
    ShiKanCommonDialog,
    IOSDownloadDialog
  },

  computed: {
    // ...mapGetters(["userInfo"])
  },

  created() {
    let _this = this;
    this.from = this.$route.query.from || this.from || "native";
    this.projectId = this.$route.query.id || 1;
    console.log('#######location', location);

    window.__getUserInfo64Comp = function(param) {
      // appVersion 安卓 3.2.2  iOS
      console.log("__getUserInfo64Comp", param);
      _this.token = param.userToken;
      let appVersion = param.appVersion || '300';
      let appVersionNum = appVersion.split(".").join("");
      // 如果是iOS系统并且版本小于344，则提示升级
      if(__isIOS && appVersionNum < 344) {
        _this.isShowIOSDownloadDialog = true;
      }
      _this.setUserInfo(param);
      _this.checkToken();
      _this.getProjectInfoById();
    };
    _this.getUserInfo();
    // if (__isWeb && process.env.BUILD_ENV == "development") {
    //   let param = {};
    //   __getUserInfo64Comp(param);
    // }

    if (__isWeb) {
      _this.getProjectInfoById();
    }
    window.__refresh = function() {
      _this.isInfresh = true;
      _this.getUserInfo();
    };

    window.__getPositionData = function(param) {
      console.log(param);
      // _this.showLoading = false;
      param.setEntry = true;
      _this.getProvinceIdByPosition(param);
    };

    // 调用广告位接口
    this.getAdvertInfoList();
  },
  mounted() {
    window.addEventListener("scroll", this.scrollFun);
    const _this = this;
  },
  beforeDestroyed() {
    window.removeEventListener("scroll", this.scrollFun);
  },
  methods: {
    // ...mapActions(["setUserInfo"]),

    cancleChangeCard() {
      this.showChangeCard = false;
    },

    // 处理提示信息框
    handlerAction(type) {
      if(type == 1) {
        this.$sendBuriedData({
          component_tag: `882#88219`
        });
        this.showBindCardTips = false;
      } else {
        this.$sendBuriedData({
          component_tag: `882#88218`
        });        
        this.changeCardAction(this.cmeCardModels.cardKey, true)
      }
    },

    // 查询是否买过类似的卡，但还没有绑定
    hasNoUsedCardAction() {
      let param = {
        setEntry: true
      };
      this.GET(`cme/projectCard/queryNoUsedCard/${this.project.goodsType}/${this.project.cardType}`, param).then(({ data }) => {
        this.hasNoUsedCard = data.hasNoUsedCard;
        if (data.hasNoUsedCard == 1) {
          this.cmeCardModels = data.cmeCardModels[0] || {};
          this.showBindCardTips = true;
        }
      });
    },

    // 激活  返回值：0绑定失败，1绑定成功
    changeCardAction(cardKey, isInTips) {
      let _this = this;
      let param = {
        idType: 1,
        cardKey: cardKey,
        cardType: this.project.cardType || 3,
        goodsType: this.project.goodsType || 3,
        channel: 1,
        portalProjectId: this.projectId,
        setEntry: true
      };
      _this.changeCardErrorMsg = "";
      this.POST("cme/projectCard/bind", param).then(res => {
        isInTips && (_this.showBindCardTips = false);
        if (res.code == "000000") {
          if(res.data == 0) {
            if(isInTips) {
              Toast(res.message);            
            } else {
              _this.changeCardErrorMsg = "请输入正确的激活码";
            }            
          } else {
            _this.$refs.tcPlayerRef && _this.$refs.tcPlayerRef.pause();
            _this.showChangeCard = false;
            Toast("激活成功，开始学习");
            _this.getProjectInfoById();
          }
        } else {
          Toast(res.message);            
        }
      }).catch( e => {
        console.log('in catch', isInTips);
        if(isInTips) {
          Toast("无效的激活码");
          _this.showBindCardTips = false;
        } else {
          _this.changeCardErrorMsg = "请输入正确的激活码";
        }
      });
    },

    // 复制卡密
    copyLink() {
      let _this = this;
      let clipboard = new this.clipboard(".cobyOrderSn");
      clipboard.on("success", function() {
        e.clearSelection();
        Toast("已成功复制激活码");
      });
      clipboard.on("error", function() {
        e.clearSelection();
        Toast("复制激活码失败");
      });
    },

    // 查询教培项目广告位配置信息
    getAdvertInfoList() {
      let param = {
        setEntry: true
      };
      this.GET(`portal/jump/${this.projectId}/1`, param).then(res => {
        if (res.code == "000000") {
          this.advertInfoList = (res.data && res.data.list) || [];
          console.log("advertInfoList", this.advertInfoList);
        }
      });
    },

    // 点击“参与考试”
    beforeJumpToExam() {
      // this.$sendBuriedData({
      //   component_tag: `882#8824`
      // });
      // 如果是首次，则弹出弹框
      this.jumpToCardList();
    },

    // 跳转II类学习详情页面（跳转的页面由后面配置）
    jumpToCardList() {
      // this.$sendBuriedData({
      //   component_tag: `885#8851`
      // });

      this.showLoading = false;
      // 判断版本号，如果小于3.4.0，则只做提示
      let appVersion = this.userInfo.appVersion;
      let appVersionNum = appVersion.split(".").join("");
      if (appVersionNum < 341) {
        Toast("请您下载新版本App");
        return;
      }
      // 复制卡密
      this.$refs.copyLinkBtn.click();

      setTimeout(() => {
        if (window.__isWeb) {
          return;
        } else {
          let pageUrl = this.project.examBtnUrl;
          let paramList = [
            {
              key: "pageUrl",
              value: pageUrl,
              type: 4,
              seqNo: 1
            },
            // 此字段不配置，则用原来的逻辑
            {
              key: "needCache",
              value: "1", // 0不缓存，其它值都做缓存
              type: 4,
              seqNo: 1
            }
          ];
          rocNative.dispatchEventByModuleCode({
            modeCode: "M300",
            jsonString: paramList
          });
        }
      }, 1000);
    },

    // 跳转前判断是否有机构，否则使用定位信息
    preJumper() {
      // TODO 测试代码
      if (window.__isWeb) {
        this.getCardInfoByProvinceId(310);
      } else {
        if (this.organizationId != 0 && this.provinceId != 0) {
          this.getCardInfoByProvinceId(this.provinceId);
        } else {
          this.getPositionData();
        }
      }
    },

    // 根据位置信息获取省ID
    getProvinceIdByPosition(param) {
      param.setEntry = true;
      this.POST("aggregate/cme/convertLocationToProvinceId", param).then(
        res => {
          if (res.code == "000000") {
            this.getCardInfoByProvinceId(res.data);
          }
        }
      );
    },

    // 根据省ID，获取学习卡信息
    getCardInfoByProvinceId(provinceId) {
      let param = {
        area: provinceId + "",
        cardType: this.project.cardType || 3,
        cardTypeList: [ this.project.cardType || 3],
        goodsType: this.project.goodsType,
      };
      param.setEntry = true;
      this.POST("trade/goods/cardList_v2", param).then(res => {
        if (res.code == "000000") {
          this.showLoading = false;
          this.cardInfo = (res.data && res.data[0]) || { id: 0, name: "职称考精讲课程卡" };
          this.subContent = `您已购买“${this.cardInfo.goodsName}”，是否使用此卡绑定并激活当前内容？一旦使用，不可更改或退回`
        }
      });
    },

    // 获取地理位置信息
    getPositionData() {
      // this.showLoading = true;
      console.log("getPositionData");
      rocNative.getPositionData({
        __funcName: "__getPositionData"
      });
    },

    confirm() {
      console.log('new confirm');
      this.$sendBuriedData({
        component_tag: `882#88203`
      });
      // 直接传入职称考项目ID(projectId)
      let projectId = this.projectId;
      let pageUrl = getWebPageUrl(
        `profexam/#/index?id=${projectId}&projectName=${this.project.projectName}&profexamProjectId=${projectId}`
      );
      let courseUrl = encodeURIComponent(pageUrl);
      // sessionStorage.setItem("courseUrl", courseUrl);
      let paramPageUrl = getWebPageUrl(`profexam/#/goods-detail?goodsId=${this.cardInfo.id}&projectId=${projectId}&courseUrl=${courseUrl}`);
      let paramList = [
        {
          key: "pageUrl",
          value: paramPageUrl,
          type: 4,
          seqNo: 1
        }      
      ]
      this.$refs.tcPlayerRef && this.$refs.tcPlayerRef.pause();
      rocNative.dispatchEventByModuleCode({
        modeCode: "M300",
        jsonString: paramList
      });
    },

    // 跳转到原生的购买页面
    confirmOld() {
      this.$sendBuriedData({
        component_tag: `882#88203`
      });

      let appVersion = this.userInfo.appVersion || "";
      let appVersionNum = appVersion.split(".").join("");
      if (appVersionNum < 344) {
        Toast("请您下载新版本App");
        return;
      }

      // 直接传入职称考项目ID(projectId)
      let projectId = this.project.projectId;
      let pageUrl = getWebPageUrl(
        `/profexam/#/index?id=${projectId}&projectName=${this.project.projectName}&profexamProjectId=${projectId}`
      );
      let paramList = [
        {
          key: "className",
          value:
            "com.picahealth.yunque.activitys.studycard.StudyCardDetailActivity###PicaDo.LearningCardVC",
          type: 4,
          seqNo: 1
        },
        {
          key: "goodId",
          value: this.cardInfo.id,
          type: 4,
          seqNo: 1
        },
        {
          key: "courseUrl",
          value: encodeURIComponent(pageUrl),
          // value: projectId,
          type: 4,
          seqNo: 1
        }
      ];
      this.$refs.tcPlayerRef && this.$refs.tcPlayerRef.pause();
      rocNative.dispatchEventByModuleCode({
        modeCode: "M200",
        jsonString: paramList
      });
    },

    // 首次进入考试时记录(点击‘我知道了’时调用)
    firstIntoExamAction() {
      let _this = this;
      let param = {
        token: _this.userInfo.userToken || this.token,
        setEntry: true
      };
      this.NEW_POST(`cme/project/${_this.projectId}/firstIntoExam`, param).then(
        res => {
          if (res.code == "000000") {
            this.project.firstIntoExam = false;
          }
        }
      );
    },

    //获取用户信息
    getUserInfo() {
      rocNative.getUserInfo({
        __funcName: "__getUserInfo64Comp"
      });
    },

    // token是否失效校验
    checkToken() {
      let _this = this;
      let param = {
        token: _this.userInfo.userToken || _this.token,
        setEntry: true
      };
      this.GET("campaign/admin/task/checkToken", param).then(res => {
        if (res.code !== "000000") {
          //未登录 跳转登录页
          console.log("跳登录", _this.isInfresh);
          if(_this.isInfresh) {
            rocNative.goBack();
          } else {
            _this.$refs.tcPlayerRef && _this.$refs.tcPlayerRef.pause();
            rocNative.gotoLogin();
          }
          _this.isInfresh = false;
        }
      });
    },

    //去激活
    changeClick(msg) {
      console.log("in changeClick");
      this.showChangeCard = true;

      this.$sendBuriedData({
        component_tag: `882#88202`
      });
    },

    scrollFun() {
      //如果是第一次的弹框，则直接退出
      let scrollTop =
        document.body.scrollTop || document.documentElement.scrollTop;
      let h = intorOffsetTop - 135;
      // 显示头部导航
      if (scrollTop > 20) {
        this.isBlack = true;
        this.bgColor = "#fff";
      } else {
        this.isBlack = false;
        this.bgColor = "none";
      }

      if (window.__isWeb) {
        h = intorOffsetTop - 75;
      } else if (window.__isIOS) {
        h = intorOffsetTop - 140;
      }

      // 如果滚动高度大于简介头部（并减去tab高度），则进行固定
      if (scrollTop > h) {
        this.fixedFlag = true;
      } else {
        this.fixedFlag = false;
      }

      // 如果滚动高度大于
      if (scrollTop > cataOffsetTop - 600) {
        this.tabFlag = false;
      } else {
        this.tabFlag = true;
      }
    },

    // 锚点到简介
    jumpIntro() {
      if (!this.tabFlag) {
        this.tabFlag = true;
      }
      if (!this.fixedFlag) {
        this.fixedFlag = true;
      }
      let h;
      if (this.isWeb) {
        h = intorOffsetTop - 30 - titleOffsetHeight;
      } else {
        h = intorOffsetTop - 85 - titleOffsetHeight;
      }
      window.scrollTo(0, h);
      this.isBlack = true;
      this.bgColor = "#fff";
      // this.$sendBuriedData({
      //   component_tag: `211#211007#${this.projectId}`
      // });
    },

    // 锚点到目录
    jumpCatalogue() {
      if (this.tabFlag) {
        this.tabFlag = false;
      }
      if (!this.fixedFlag) {
        this.fixedFlag = true;
      }
      let h;
      if (this.isWeb) {
        h = cataOffsetTop - titleOffsetHeight;
      } else {
        h = cataOffsetTop - 100;
      }
      window.scrollTo(0, h);
      this.isBlack = true;
      this.bgColor = "#fff";
      // this.$sendBuriedData({
      //   component_tag: `211#211008#${this.projectId}`
      // });
    },

    // 获取项目详情
    getProjectInfoById() {
      let _this = this;
      let param = {
        token: _this.userInfo.userToken || this.token || '47993ED00ECB46CE8D31ECF3AE34B4AA',
        setEntry: true
      };
      let videoUrl = this.$route.query.videoUrl || '';
      if(videoUrl) {
        param.trySeeFlag = 0;
      } else {
        param.trySeeFlag = 1;
      }
      console.log('getProjectInfoById', param);
      _this.showLoading = true;
      this.NEW_GET(`cme/project/${_this.projectId}/info`, param).then(res => {
        // _this.showLoading = false;
        if (res.code == "000000") {
          if(videoUrl) {
            _this.limitTimes = this.$route.query.trySeeTime || 300000;
            _this.videoOptions.mp4 = videoUrl;
            _this.videoOptions.trySeeTime = this.$route.query.trySeeTime || 300000;
          } else {
            _this.limitTimes = res.data.trySeeTime;
            _this.videoOptions.mp4 = res.data.attachmentUrl;
            _this.videoOptions.trySeeTime = res.data.trySeeTime || 300000;
          }
          _this.hasBindCard = res.data.cardStatus == 0 ? false : true;
          if(_this.hasBindCard) {
            _this.videoOptions.trySeeTime = 300000;
            _this.videoOptions.autoplay = false;
          // 如果没有绑定卡，则查询是否有未绑定的卡
          }
          let mp4Url = _this.videoOptions.mp4;
          // 判断是否是mp4
          if(mp4Url.lastIndexOf('.mp4') > 0) {
            _this.bannerType = 2;
          } else {
            if (res.data.attachmentType == 2) {
              _this.videoOptions.mp4 = res.data.attachmentUrl;
            } else {
              _this.attachmentUrl = res.data.attachmentUrl;
            }
            _this.bannerType = res.data.attachmentType;
          }

          console.log('location', location);
          console.log('_this.videoOptions.mp4, trySeeTime, autoplay', _this.videoOptions.mp4, _this.videoOptions.trySeeTime, _this.videoOptions.autoplay);
          _this.project = res.data;

          if (_this.project.projectIntro) {
            _this.textContent =
              _this.project.projectIntro.length > 70
                ? _this.project.projectIntro.slice(0, 70) + "..."
                : this.project.projectIntro;
          }
          _this.project.mustKnow = _this.project.mustKnow.replace(
            /(\r\n)|\r|\n/g,
            "<br>"
          );

          _this.projectLeader = res.data.projectLeader;
          if (_this.projectLeader && _this.projectLeader.info) {
            _this.leaderText =
              _this.projectLeader.info.length > 70
                ? _this.projectLeader.info.slice(0, 70) + "..."
                : this.projectLeader.info;
          }
          _this.doctorList = res.data.doctorList;

          //_this.projectStatus = res.data.projectStatus;
          _this.projectComponentDTOS = _this.setListData(
            res.data.projectComponentDTOS
          );

          // TODO    Add by Anndy Yang
          if (_this.project.currentProgress == 2) {
            _this.$nextTick(() => {
              window.scrollTo(0, 0);
            });
          }

          _this.provinceId = res.data.positionModel.provinceId;
          _this.organizationId = res.data.positionModel.organizationId;
          _this.courseRequire = res.data.courseRequire || 0;

          setTimeout(() => {
            console.log('in setTimeout 800');
            _this.showLoading = false;
          }, 800);

          setTimeout(() => {
            console.log('in setTimeout 200');
            cataOffsetTop = document.getElementById("catalogue-content")
              .offsetTop;
            intorOffsetTop = document.getElementById("intro-content").offsetTop;
            console.log(
              "getProjectInfoById",
              cataOffsetTop,
              intorOffsetTop
            );
            // 直接跳转
            // if (_this.project.jumpToContents) {
            if (_this.hasBindCard) {
              setTimeout(() => {
                this.jumpCatalogue();
              }, 200);
            }
            // _this.copyLink();
          }, 200);


          // 请求成功后统计，获取项目名
          this.$sendBuriedData({
            component_tag: `882#88201#${_this.projectId}#${_this.project.projectName}`
          });

          // 如果 hasBindCard 为false，则获取卡信息  0：未绑卡 1：已绑卡
          if (!_this.hasBindCard) {
            _this.preJumper();
            _this.hasNoUsedCardAction();
          }

          // 请求成功后统计，获取项目名
          this.$sendBuriedData({
            component_tag: `882#88201#${_this.projectId}#${_this.project.projectName}`
          });
        }
      });
    },

    // 项目负责人--详情(收起)
    changeLeaderText(data) {
      let _this = this;
      if (_this.projectLeader.info) {
        if (!data.allTextFlag) {
          _this.leaderText =
            _this.projectLeader.info.length > 70
              ? _this.projectLeader.info.slice(0, 70) + "..."
              : this.projectLeader.info;
        } else {
          _this.leaderText = _this.projectLeader.info;
        }
      }
    },

    // 项目介绍
    itemIntroText(data) {
      let _this = this;
      if (_this.project.projectIntro) {
        if (!data.allTextFlag) {
          _this.textContent =
            _this.project.projectIntro.length > 70
              ? _this.project.projectIntro.slice(0, 70) + "..."
              : this.project.projectIntro;
        } else {
          _this.textContent = _this.project.projectIntro;
        }
      }
    },
    setListData(data) {
      let _this = this;
      let list = data;
      let actionList = [];
      let detailNum = 0;
      let needShowUpdate = false;
      for (let i = 0; i < list.length; i++) {
        for (let j = 0; j < list[i].portalModuleDTOS.length; j++) {
          detailNum++;
          list[i].portalModuleDTOS[j].value =
            "共" + list[i].portalModuleDTOS[j].nodeCount + "节";

          // if (list[i].portalModuleDTOS[j].status === 2) {
          //   list[i].portalModuleDTOS[j].value =
          //     "共" + list[i].portalModuleDTOS[j].nodeCount + "节";
          // } else {
          //   list[i].portalModuleDTOS[j].value = "尚未开始";
          // }

          // list[i].portalModuleDTOS[j].disabled =
          //   list[i].portalModuleDTOS[j].status === 2 ? false : true;
          //展开项记录
          if (list[i].portalModuleDTOS[j].expandStatus == 1) {
            actionList.push(list[i].portalModuleDTOS[j].expandKey);
          }
          for (
            let z = 0;
            z < list[i].portalModuleDTOS[j].contentList.length;
            z++
          ) {
            if(!needShowUpdate) {
              if(!list[i].portalModuleDTOS[j].contentList[z].id) {
                this.needShowUpdate = true;
              }
            }
            list[i].portalModuleDTOS[j].contentList[z].height = _this.getHight(
              list[i].portalModuleDTOS[j].contentList[z]
            );
          }
        }
      }
      _this.needShowUpdate = needShowUpdate;
      _this.actionList = actionList;
      _this.detailNum = detailNum;
      // console.log("list转为：", list, actionList, detailNum);
      return list;
    },

    // 这里？
    getHight(data) {
      let len = vueFilters.strLength(data.name);
      let certificate = data.certificateFlag;
      if (len > 30 && certificate == 2) {
        return "2";
      } else if (len > 30 && certificate != 2) {
        return 2;
      } else if (len <= 30 && certificate == 2) {
        return "1";
      } else if (len <= 30 && certificate != 2) {
        return 1;
      }
    },

    // 查找没有学习完成的课程或考试
    continueStudy() {
      let courseIdOrExamId = '';
      let portalModuleDTOS = [];
      let contentList = [];
      let item = {};
      let firstItem = null;
      outloop: for(let i = 0; i < this.projectComponentDTOS.length; i ++) {
        portalModuleDTOS = this.projectComponentDTOS[i].portalModuleDTOS;
        for(let j = 0; j < portalModuleDTOS.length; j ++) {
          contentList = portalModuleDTOS[j].contentList;
          for(let k = 0; k < contentList.length; k ++) {
            item = contentList[k];
            if(!firstItem && item.id) {
              firstItem = item;
            }
            if( (item.type == 1 && item.id && (item.useFlag != 2) && (item.status == 11 || item.status == 12))
              || (item.type == 2 && item.id && (item.useFlag != 2) && (item.status == 21 || item.status == 22)) ) {
              this.continueStudyType = item.type;
              this.skCourseId = item.id;
              break outloop;
            }
          }
        }
      }
      if(!this.skCourseId) {
        this.continueStudyType = firstItem.type;
        this.skCourseId = firstItem.id;
      }
      console.log('continueStudyType', this.continueStudyType, 'skCourseId', this.skCourseId);
      if(this.continueStudyType == 1) {
        this.gotoExamNew();
      } else {
        this.gotoCourseNew();
      }
    },

    // 跳转到考试
    gotoExamNew: function(examId) {
      let paramList = [
        {
          key: "className",
          value:
            "com.picahealth.yunque.activitys.exammodule.ExamPreActivity###PicaDo.ExamModuleManager",
          type: 4,
          seqNo: 1
        },
        {
          key: "examId",
          value: this.skCourseId,
          type: 4,
          seqNo: 1
        }
      ];

      rocNative.dispatchEventByModuleCode({
        modeCode: "M200",
        jsonString: paramList
      });
    },

    // 跳转到课程
    gotoCourseNew: function() {
      // if(this.hasBindCard || this.project.cmeType != 2) return;
      // let courseId = '';
      let appVersion = getAppVersion(this.userInfo.appVersion);
      // 弹框提示下载新版本可以试看
      if(appVersion < 343 && !this.hasBindCard) {
        this.$dialog.confirm({
          className: 'con-dialog',
          showCancelButton: false,
          // message: '激活/购买后可学习完整课程',
          message: '升级最新版本可试看课程',
          confirmButtonText: '我知道了',
        }).then(res => {

        })
        return;
      }
      let paramList = []
      paramList = [
        {
          key: "className",
          value: "com.picahealth.yunque.activitys.courseplaynew.MyTcPlayVideoActivity###CourseMultiMediaPlayController",
          type: 4,
          seqNo: 1
        },
        {
          key: "isCHC",
          value: 0,
          type: 4,
          seqNo: 1
        },
        {
          key: "courseId",
          value: this.skCourseId,
          type: 4,
          seqNo: 1
        },
        {
          key: "courseRequire",
          value: this.courseRequire - 0,
          type: 4,
          seqNo: 1
        },
        {
          key: "projectId",
          value: this.projectId,
          type: 4,
          seqNo: 1
        },
      ];
      console.log('gotoCourse', paramList);
      rocNative.dispatchEventByModuleCode({
        modeCode: "M200",
        jsonString: paramList
      });
    },

    goBuyKc(type) {
      this.$refs.tcPlayerRef && this.$refs.tcPlayerRef.pause();
      this.isShowSkDialog = false;
      type == 2 && this.confirm();
    },

    // 直接返回到上层
    goBack() {
      this.isShowIOSDownloadDialog = false;
      rocNative.goBack();
    }


  }
};
</script>
<style lang="less" scoped>
.page-container-merge {
  .nav-top .nav-title {
    height: 0px;
    // padding: 18px;
  }
  .banner-img {
    display: inherit;
    width: 375px;
    height: 210px;
    &-1 {
      position: absolute;
      left: 0;
      top: 180px;
      width: 76px;
      height: 30px;
    }
    &-5 {
      position: absolute;
      left: 0;
      top: 180px;
      width: 76px;
      height: 30px;
    }
    &-10 {
      position: absolute;
      left: 0;
      top: 180px;
      width: 76px;
      height: 30px;
    }
  }
  .list-container {
    // margin-bottom: 40px;
    .sk-btn-cover-new {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 210px;
      z-index: 100;
      text-align: center;
      // background: #fff;
      font-size: 13px;
      // border-radius: 50%;
      background: rgba(51, 51, 51, 0.8);
      span {
        display: inline-block;
        margin-top: 82px;
        width: 100px;
        height: 36px;
        line-height: 36px;
        font-size: 15px;
        font-weight: 700;
        border-radius: 20px;
        color: #fff;
        background: #449284;
        &.android {
          padding-top: 2px;
        }
      }
    }
  }
  .intro-catalogue-container {
    .title {
      height: 50px;
      line-height: 30px;
      padding: 0 15px;
      border-bottom: 1px solid #f0f1f2;
      span {
        display: inline-block;
        line-height: 15px;
        font-size: 15px;
        color: #979899;
        padding-right: 35px;
      }
      span.focus {
        position: relative;
        color: #373839;
      }
      span.focus:after {
        content: "";
        position: absolute;
        left: 9px;
        bottom: -14px;
        background: #449284;
        // border-bottom: 1px solid #449284;
        width: 10px;
        height: 3px;
        border-radius: 3px;
      }
    }
    .title.fixed-title-1 {
      position: fixed;
      left: 0;
      top: 60px;
      background: #fff;
      width: 100%;
      z-index: 999;
    }
    .title.fixed-title-2 {
      position: fixed;
      left: 0;
      top: 0px;
      background: #fff;
      width: 100%;
      z-index: 999;
    }
    .catalogue-content {
      padding: 0 15px;
      .catalogue-title {
        // display: flex;
        // flex-direction: row;
        // align-items: center;
        // align-content: center;
        margin-top: 5px;
        // margin-bottom: 16px;
        .c-title {
          font-size: 18px;
          color: #373839;
          font-weight: 700;
        }
        .c-sub {
          margin-left: -6px;
          font-size: 12px;
          color: #979899;
        }
      }
    }
    .fixed-flag-height {
      height: 50px;
    }
  }
}
.no-more-bottom {
  position: relative;
  width: 100%;
  height: 40px;
}
</style>
