<template>
  <view class="container industry-content" id="industry-content">
    <view v-if="haveData">
      <view class="content-top">
        <view class="top-bg">
			<!-- 详情封面图 -->
			<image :src="industryVideo.DetailImgUrl" class="industry-video-poster" 
			v-show="industryVideo.Id && industryVideo.DetailImgUrl && !havePlayed"
			@click="handelVideoPlay"></image>
			<!-- 视频 -->
			<video :src="industryVideo.ResourceUrl" class="industry-video" id="industry-video"
			v-show="industryVideo.ResourceUrl && (havePlayed || (!industryVideo.DetailImgUrl))" controls></video>
			<view class="top-bg-title" 
			:style="{'height':industryVideo.Id?'70rpx':'99rpx',
			'background-color':industryVideo.Id?'white':'#d1ebff'}">产业赛道布局于{{ layoutTime }}</view>
		</view>
		<!-- industryVideo.ResourceUrl -- 视频url -->
        <view class="top-box" :style="{'top':industryVideo.Id?'418rpx':'99rpx'}">
          <view class="top-tab-cont">
            <view class="tab-cont">
              <scroll-view scroll-x="true" scroll-with-animation class="scroll-tab" :scroll-into-view="'_' + tabIndex">
                <block v-for="(item, index) in tabBars" :key="item.CategoryId">
                  <view :id="'_' + index" class="scroll-tab-item" :class="{ active: tabAct_id == item.CategoryId }" @click.stop="toggleTab(item, index)">
                    {{ item.MatchTypeName }}
                    <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/border_act.png" mode="" class="border_act" v-if="tabAct_id == item.CategoryId"></image>
                    <text class="reg-hint" v-if="item.IsRed"></text>
                  </view>
                </block>
              </scroll-view>
            </view>
            <view class="lucency" v-if="tabBars.length > 6"></view>
          </view>
        </view>
      </view>
      <view class="collect-ul" :style="{'padding-top':industryVideo.ResourceUrl?'528rpx':'210rpx'}">
        <!-- 其他tab -->
        <block v-show="tabAct_id!==99999">
          <view class="collect-ltem" v-for="(item, index) in collectList" :key="index" @click="goDetail(item, index)">
            <view class="item-left">
              <text class="title text_twoLine"
                >{{ item.Title }}
                <text class="reg-text" v-if="item.IsRed"></text>
              </text>
              <text class="text_twoLine desc">{{ item.PublishDate }}</text>
            </view>
            <u-icon name="arrow-right" color="#BDBDBD" size="34"></u-icon>
          </view>
          <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="totalPage > 1&&tabAct_id!==99999" />
        </block>
        <!-- 时间线 -->
        <block v-if="tabAct_id===99999">
          <view class="time-line">
            <view class="line-item" v-for="(item,index) in timeLine" :key="index" @click="goDetailFromTimeLine(item, index)">
              <view class="time">{{item.date}}</view>
              <view class="content" v-if="item.Content.length">
                <rich-text class="rich-text" :style="{height:item.isExpand?'auto':richTextHeight+'px'}" :data-index="index" :class="{'expand':item.isExpand}"
                  :nodes="item.Content">
                </rich-text> 
                <view class="expan-btn" :class="{'pos':!item.isExpand}" @click="handleExpand(item,index)" v-if="item.isShowBtn">{{item.isExpand?'收起':'展开'}}</view>
              </view>
              <view class="title" v-else>{{item.Title}}</view>
            </view>
            <view v-show="loadTimeLine" class="loadTimeLine"></view>
            <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="totalPage > 1&&tabAct_id===99999" />
          </view>
        </block>
      </view>
    </view>
    <view class="nodata" v-else>
      <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/act_search.png" mode="" class="nodata_ico"></image>
      <text>暂时没有报告的内容</text>
    </view>
    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   <!-- 权限弹窗 -->
   	<modalDialog :isShowhasPermission="isShowhasPermission" :applyForIsShow="applyForIsShow" :jurisdictionList="jurisdictionList" :hasPermission="hasPermission" />
  </view>
</template>

<script>
import { Mine } from "@/config/api.js"; //模拟
import { Reports } from "@/config/api.js"; //模拟
import { Throttle } from "@/config/util.js";
import freeCharge from "@/components/freeCharge";
import modalDialog from "@/components/modalDialog.vue";
let app = getApp({ allowDefault: true });
export default {
  data() {
    return {
      tabAct_id: "",
      tabBars: [],
      industrialManagementId: "",
      layoutTime: "",
      refresh: false, //正在下拉
      page_no: 1,
      pageSize: 10,
      categoryId: "",
      collectList: [],
      isShow: false,
      haveData: true,
      status: "loadmore",
      loadText: {
        loadmore: "上拉加载更多",
        loading: "加载中",
        nomore: "已经到底了",
      },
      totalPage: "",
      toggleTabIndex: 0,
      titleReport: "",
      pcTabActive: "",
      industryVideo:{},
      authInfo:{},
      havePlayed:false,
      isShowhasPermission: false, //  联系销售的提交申请
      applyForIsShow: false, // 提交申请
      jurisdictionList: {},
      hasPermission: "", //权限
      timeLine:[],//时间线数据
      mockTimeLine:[
        {
          date:'不重要',
          Content:'<p>hello,world</p><p>hello,world</p><p>hello,world</p>'
        },//第一项是为了获取当前手机下,三行是多少相对高度
      ],
      loadTimeLine:false,//时间线的遮罩
      richTextHeight:1000,//晨会富文本最大高度
    };
  },
  onLoad(option) {
    this.industrialManagementId = option.id;
    this.tabAct_id = option.tab;
    this.toArticleCategoryList();
  },
  onShow() {
    this.$store.dispatch("statistics", { PageType: "IndustryList", IndustrialManagementId: this.industrialManagementId });
  },
  components: {
    freeCharge,
	  modalDialog
  },
  watch: {
    //监听tabs的变化
    tabAct_id: {
      handler() {
        if (this.tabAct_id) {
          (this.page_no = 1), (this.collectList = []);
          this.getCollectList();
        }
      },
      immediate: true,
    },
  },
  methods: {
    //tabs切换事件
    toggleTab(item, index) {
      this.toggleTabIndex = index;
      if (this.tabAct_id !== item.CategoryId) {
        this.tabAct_id = item.CategoryId;
        this.pageNum = 1;
        this.timeLine=[]
        this.totalPage=""
        uni.pageScrollTo({
          scrollTop: 0,
          duration: 0,
        });
      }
    },
    toArticleCategoryList() {
      Reports.toArticleCategoryList({
        IndustrialManagementId: this.industrialManagementId,
        ShowTimeLine:1
      }).then((res) => {
        if (res.Ret == 200) {
          uni.setNavigationBarTitle({
            title: res.Data.IndustryName,
          });
          this.titleReport = res.Data.IndustryName;
          this.layoutTime = res.Data.LayoutTime;
		  this.industryVideo = res.Data.IndustryVideo
		  this.authInfo = res.Data.AuthInfo
          if (res.Data.List) {
            this.tabAct_id = res.Data.List[0].CategoryId;
            this.tabBars = res.Data.List;
          }
        }
      });
    },
    /* 获取列表 */
    getCollectList() {
      //just for test
      if(this.tabAct_id===99999) {
        Reports.getArticleList({
        PageSize: this.pageSize,
        CurrentIndex: this.page_no,
        CategoryId: 99999,
        IndustrialManagementId: this.industrialManagementId,
      }).then((res)=>{
       if(res.Ret===200){
         this.loadTimeLine = true
         this.status = this.page_no < res.Data.Paging.Pages ? "loadmore" : "nomore"
         this.totalPage = res.Data.Paging.Pages
         let list = res.Data.List||[]
         list = list.map(item=>{
            let temp = item
            temp.date = item.PublishTime.split(" ")[0]
            if(item.Content.length){
              temp.isExpand = true
              temp.isShowBtn = true
            }
            return temp
          })
         if(this.page_no===1){
          this.timeLine = list
          this.haveData = this.timeLine.length ? true : false;
          if (this.refresh) {
            uni.stopPullDownRefresh();
            this.refresh = false;
          }
         }else{
           this.timeLine = this.timeLine.concat(list)
         }
       }
        this.timeLine.unshift(this.mockTimeLine[0])
        //在获取高度前把所有的晨会展开,收起的话无法获取正确高度
        this.timeLine.forEach(item=>{
          if(item.Content.length){
            item.isExpand = true
            item.isShowBtn = true
          }
        })
        setTimeout(()=>{
          this.getConentsHeight()
        },0)
      })
        return
      }
      Reports.getArticleList({
        PageSize: this.pageSize,
        CurrentIndex: this.page_no,
        CategoryId: this.tabAct_id,
        IndustrialManagementId: this.industrialManagementId,
      }).then((res) => {
        if (res.Ret === 200) {
          this.status = this.page_no < res.Data.Paging.Pages ? "loadmore" : "nomore";
          this.totalPage = res.Data.Paging.Pages; //总页数
          if (this.page_no === 1) {
            this.pcTabActive = res.Data.ChartPermissionId;
            this.collectList = res.Data.List || [];
            this.haveData = this.collectList.length ? true : false;
            if (this.refresh) {
              uni.stopPullDownRefresh();
              this.refresh = false;
            }
          } else {
            this.collectList = this.collectList.concat(res.Data.List);
          }
        }
      });
    },
    async goDetail(item, index) {
      /* 无需授权且已绑定 检验是或否有权限 */
      if (index == 0) {
        this.tabBars[this.toggleTabIndex].IsRed = false;
      }
      this.collectList[index].IsRed = false;
      await this.$store.dispatch("checkHandle");
      if (!this.$store.state.isAuth && !this.$store.state.isBind) {
        // 已授权已绑定
        if (item.SubCategoryName=== "路演精华") {
          //跳转路演精华
          uni.navigateTo({
            url: "/reportPages/roadEssence/roadEssence?id=" + item.ArticleId,
          });
        } else {
          uni.navigateTo({
            url: "/pageMy/reportDetail/reportDetail?id=" + item.ArticleId,
          });
        }
      }
    },
	// 视频播放权限判断
	handelVideoPlay(){
		if (!this.$store.state.isAuth && !this.$store.state.isBind) {
		  if (this.authInfo.HasPermission == 1) {
		    this.playVideo()
		  } else {
		    this.hasPermission = this.authInfo.HasPermission;
		    this.jurisdictionList.ActivityId = this.industryVideo.Id;
		    this.jurisdictionList.isAudioVideo = 3;
		    if (this.hasPermission == 2) {
		      this.jurisdictionList.SellerMobile = this.authInfo.SellerMobile;
		      this.jurisdictionList.SellerName = this.authInfo.SellerName;
		      this.jurisdictionList.PopupMsg = this.authInfo.PopupMsg;
		      this.isShowhasPermission = true;
		    } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
		      this.jurisdictionList.PopupMsg = this.authInfo.PopupMsg;
		      this.applyForIsShow = true;
		    }
		  }
		} else {
		  this.$store.dispatch("checkHandle");
		}
	},
	// 播放视频
	playVideo(){		
		const query = uni.createSelectorQuery().in(this)
		query.select("#industry-video").context(data =>{
			data.context.play()
			setTimeout(()=>{
				this.havePlayed=true
			},10)
		}).exec()
	},
    //展开收起晨会内容
    handleExpand(item,index){
      item.isExpand = !item.isExpand
      this.timeLine.splice(index,1,item)
    },
    //获取所有晨会内容的高度并决定是否显示展开收起按钮
    getConentsHeight(){
      const query = wx.createSelectorQuery()
      query.selectAll(".rich-text").boundingClientRect()
      query.exec(res=>{
        /* console.log(res[0][0].height) */
        //根据timeLine的第一项确定当前手机三行文字的高度
        const standardHeight = res[0][0].height 
        this.richTextHeight = standardHeight
        res[0].forEach(item=>{
          let temp = this.timeLine[item.dataset.index]
          //超过这个高度的,需要显示展开/收起按钮
          if(item.height>standardHeight){
            temp.isExpand = false
            temp.isShowBtn = true
          }else{
            temp.isExpand = true
            temp.isShowBtn = false
          }
        })
        //然后把timeLine的第一项扔掉
        this.timeLine.shift()
        this.loadTimeLine = false
      })
    },
    async goDetailFromTimeLine(item, index){
      if(item.Content.length!==0) return;
      await this.$store.dispatch("checkHandle");
      if (!this.$store.state.isAuth && !this.$store.state.isBind) {
        // 已授权已绑定
        if (item.SubCategoryName=== "路演精华") {
          //跳转路演精华
          uni.navigateTo({
            url: "/reportPages/roadEssence/roadEssence?id=" + item.Id,
          });
        } else {
          uni.navigateTo({
            url: "/pageMy/reportDetail/reportDetail?id=" + item.Id,
          });
        }
      }
    },
    getNode(content,isExpand){
      return `<div style='-webkit-line-clamp: ${isExpand?9999:3};-webkit-box-orient: vertical;display: -webkit-box;overflow: hidden;text-overflow: ellipsis;'>${content}</div>`
    }
  },
  /* 触底 */
  onReachBottom: Throttle(function () {
    if (this.status === "nomore") return;
    this.status = "loading";
    this.page_no++;
    if (this.tabAct_id) {
      this.getCollectList();
    }
  }),
  /* 下拉刷新 */
  onPullDownRefresh: Throttle(function () {
    if (this.tabAct_id) {
      this.page_no = 1;
      this.refresh = true;
      this.getCollectList();
    }
  }),
  /**
   * 用户点击分享
   */
  onShareAppMessage: function (res) {
    return {
      title: this.isHorzMobile ? "好友向您推荐此内容，上传名片享查研观向免费月卡！" : this.titleReport,
      path: "/reportPages/IndustryReport/IndustryReport?id=" + this.industrialManagementId + "&tab=" + this.tabAct_id + "&tabs=" + this.pcTabActive,
      success: (res) => {},
      fail: (err) => {},
    };
  },
};
</script>

<style lang="scss">
.industry-content {
  background-color: #f7f7f7;
  // height: 100vh;
  .top-bg {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 100;
    background-color: white;
	text-align: center;
	.industry-video-poster{
		border-radius: 8rpx 8rpx 0 0;
		height: 340rpx;
		width: 728rpx;
	}
	.industry-video{
		height: 340rpx;
		width: 728rpx;
	}
	.top-bg-title{
		height: 99rpx;
		color: #2c83ff;
		background-color: #d1ebff;
		font-size: 28rpx;
		display: flex;
		align-items: center;
		justify-content: center;
	}
	.test{
		position: relative;
		span{
			position: absolute;
			left: 30rpx;
			bottom: 30rpx;
			color: white;
		}
	}
  }
  .top-box {
    position: fixed;

    width: 100%;

    top: 99rpx;
    left: 0;
    z-index: 100;
  }

  .top-tab-cont {
    .lucency {
      position: absolute;
      top: 0;
      right: 0;
      width: 32px;
      height: 30px;
      opacity: 0.9;
      background-color: #fff;
    }
    .tab-cont {
      padding: retu;
      padding: 30rpx 26rpx 0;
      background-color: #fff;
      font-size: 32rpx;
      box-shadow: 0 3rpx 6rpx rgba(187, 216, 255, 0.2);

      .scroll-tab {
        width: 100%;
        white-space: nowrap;
      }
      .scroll-tab-item {
        // flex-grow: 1;
        text-align: center;
        display: inline-block;
        padding: 0rpx 8rpx 30rpx 8rpx;
        margin-right: 60rpx;
        border-bottom: 8rpx solid transparent;
        position: relative;
        &:last-child {
          margin-right: 0;
        }
        &.active {
          border-bottom: none;
          color: #2c83ff;
          font-weight: 700;
        }
        .border_act {
          width: 100%;
          height: 8rpx;
          position: absolute;
          bottom: 0;
          left: 0;
        }
        .reg-hint {
          position: absolute;
          top: 0rpx;
          right: -10rpx;
          width: 14rpx;
          height: 14rpx;
          background-color: #ff0000;
          border-radius: 50%;
        }
      }
    }
  }
  .collect-ul {
    // margin-top: 30rpx;s
    padding-top: 210rpx;
    // padding-top: 4rpx;
    .collect-ltem {
      display: flex;
      padding: 30rpx 34rpx;
      background: #fff;
      margin-bottom: 4rpx;
      align-items: center;
      justify-content: space-between;
      .title {
        position: relative;
        max-width: 625rpx;
        color: #4a4a4a;
        font-size: 34rpx;
        padding-left: 28rpx;
        .reg-text {
          position: absolute;
          top: 15rpx;
          left: 0rpx;
          width: 14rpx;
          height: 14rpx;
          background-color: #ff0000;
          border-radius: 50%;
          z-index: 9;
        }
      }
      .desc {
        margin-top: 17rpx;
        padding-left: 28rpx;
        width: 625rpx;
        color: #999;
      }
    }
    .time-line{
      margin-top:15rpx;
      padding:30rpx 40rpx 50rpx 40rpx;
      min-height: calc(100vh - 190rpx);
      background-color:#FFFFFF;
      position: relative;
      .loadTimeLine{
        top:0;bottom:0;left:0;right:0;
        position:absolute;
        background-color: #fff;
        z-index: 6;
      }
      .line-item{
        position:relative;
        padding:0 0 50rpx 40rpx;
        /* border-left:1rpx solid #DAE9FD; */
        &:last-child{
          padding-bottom: 0;
          &::after{
            height: calc(100% - 25rpx);
          }
        }
        &:first-child{
          .time{
            &::after{
              background-color: #3385FF;
            }
          }
        }
        &::before,&::after{
          position:absolute;
          content: "";
          
        }
        &::before{
          width:24rpx;
          height: 24rpx;
          background-color: #DAE9FD;
          z-index: 1;
          left:0;
          top:27rpx;
          transform: translate(-50%,-50%);
          border-radius: 50%;
        }
        &::after{
          top:17rpx;
          left:0;
          width:1rpx;
          height:calc(100%);
          background-color: #DAE9FD;
          z-index: 2;
        }
        .time{
          width:245rpx;
          height: 55rpx;
          text-align: center;
          line-height: 45rpx;
          padding:5rpx 20rpx;
          background-color: #F5F9FF;
          border-radius: 64rpx;
          color:#5181C9;
          font-size: 32rpx;
          margin-bottom:20rpx;
          position: relative;
          &::before,&::after{
            position:absolute;
            content: "";
            left:-36rpx;
            top:27rpx;
            width:24rpx;
            height:1rpx;
            background-color:#DAE9FD;
            z-index: 1;
          }
          &::after{
            left:-40rpx;
            top:27rpx;
            width:12rpx;
            height:12rpx;
            border-radius: 50%;
            transform: translate(-50%,-50%);
            background-color:#9DC5FF;
            z-index: 3;
          }
        }
        .content{
          color:#666666;
          position: relative;
          .rich-text{
            overflow: hidden;
            text-overflow: ellipsis;
            text-align: justify;
            display: -webkit-box;
            -webkit-line-clamp: 3;
            -webkit-box-orient: vertical;
            position: relative;
            &.expand{
              -webkit-line-clamp: 999;
              height: auto;
            }
          }
          .expan-btn{
            color:#2C83FF;
            text-align: right;
            &.pos{
              padding:0 0 0 40rpx;
              background-color: rgba(255, 255, 255, 0.882);
              position:absolute;
              right:0;
              bottom:0;
            }
          }
        }
        .title{
          color:#3385FF;
        }
      }
    }
    
  }
}
#industry-content{
  .industry-video-module{
	  .global-video-box{
		  .video-content{
			  top: 400rpx!important;
		  }
		  .close-icon{
			  top: 330rpx!important;
		  }
	  }
  }
}
</style>
