<template>
  <view class="container activity-content">
    <view class="top-content">
      <!-- 搜索 -->
      <view class="searchTarget-header" v-if="!dynamicName">
        <input type="text" placeholder="请输入关键字" placeholder-class="sea_ipt_placeholder" class="sea_ipt" v-model="searchTxt" focus="true" confirm-type="search" @confirm="searchHandle" />
        <icon type="search" size="15" class="sea_ico" />
        <view class="ipt-right">
          <icon type="clear" size="16" color="#E0E0E0" v-show="searchTxt" @click="clearIpt" />
          <text class="line">|</text>
          <text @click="searchHandle" style="color: #3385ff">搜索</text>
        </view>
      </view>
      <!-- 选中的气泡主题 -->
      <view class="dynamic-name" v-if="dynamicName">
        <text>{{ dynamicName }}</text>
        <icon type="clear" size="16" color="#E0E0E0" @click="clearDynamicName" />
      </view>
      <!-- 搜索历史 -->
      <view class="search-cont-top" v-if="!isShowSearch && historySearchList.length">
        <view class="cont-tit">
          <text>搜索历史</text>
          <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/empty_ico.png" class="empty_ico" @click="clearHistory"></image>
        </view>
        <view class="targetList">
          <view class="target-item" v-for="(item, index) in historySearchList" :key="index" @click="chooseTarget(item)">{{ item }}</view>
        </view>
      </view>
      <!-- 气泡主题list -->
      <view class="dynamic-content" v-if="!isShowSearch">
        <view class="target-title"> 更多主题搜索： </view>
        <view class="target-item">
          <view class="target-ul target-left">
            <view class="target-text" v-for="(item, index) in dynamicList" :key="index" v-if="index % 2 === 0">
              <text @click="changeTarget(item.KeyWord)">
                {{ item.KeyWord }}
              </text>
            </view>
            <view class="lucency" style="width: 65rpx">
              <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/broadside-ico.png" mode=""></image>
            </view>
          </view>
          <view class="target-ul target-right">
            <view class="target-text" v-for="(item, index) in dynamicList" :key="index" v-if="index % 2 !== 0">
              <text @click="changeTarget(item.KeyWord)">
                {{ item.KeyWord }}
              </text>
            </view>
            <view class="lucency" style="width: 35rpx">
              <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/broadside-ico.png" mode=""></image>
            </view>
          </view>
        </view>
      </view>
      <!-- 各种状态选择 -->
      <view class="select-conyent" v-if="isShowSearch && !dynamicName">
        <van-dropdown-menu active-color="#333333">
          <van-dropdown-item id="statusstate" :title="activeStateName" @close="closeTheWindow('statusstate')">
            <view class="menu-items">
              <view class="menu-items-box" @click="overallBtn('statusstate', key)" v-for="key in listActivityStaus" :key="key.Id">
                <view class="items-box">
                  <u-icon v-if="key.IsChoose" name="checkbox-mark" color="#2C83FF" size="24"></u-icon>
                </view>
                <text>{{ key.StatusName }}</text>
              </view>
            </view>
            <view style="background-color: #f8f8fa; width: 100%">
              <view style="margin: 0 auto; width: 682rpx; border-bottom: 2rpx solid #e5e5e5"> </view>
            </view>
            <view class="menu-items">
              <view class="menu-items-box" @click="timeListBtn('statusstate', key)" v-for="key in activityTimeList" :key="key.Id">
                <view class="items-box">
                  <u-icon v-if="key.IsChoose" name="checkbox-mark" color="#2C83FF" size="24"></u-icon>
                </view>
                <text>{{ key.StatusName }}</text>
              </view>
            </view>
            <view class="replacement-box">
              <view class="replacement">
                <text @click="replacementBtn('statusstate')" class="replacement-box">重置</text>
                <text @click="replacementConfirm('statusstate')">确定</text>
              </view>
            </view>
          </van-dropdown-item>
          <van-dropdown-item id="industry" :title="chartPermissionName" @close="closeTheWindow('industry')">
            <view class="decide">
              <view class="items-box">
                <u-icon v-if="isShowJurisdiction" name="checkbox-mark" color="#2C83FF" size="24"> </u-icon>
              </view>
              <text @click="isJurisdiction">始终只展示有权限的行业</text>
            </view>
            <view style="background-color: #f8f8fa; width: 100%">
              <view style="margin: 0 auto; width: 682rpx; border-bottom: 2rpx solid #e5e5e5"> </view>
            </view>
            <view class="menu-items">
              <view class="menu-items-box" v-for="item in listChartPermission" :key="item.ChartPermissionId" @click="overallClick('industry', item)">
                <view class="items-box">
                  <u-icon v-if="item.IsChoose" name="checkbox-mark" :color="isShowJurisdiction ? '#ccc' : '#2C83FF'" size="24"></u-icon>
                </view>
                <text>{{ item.PermissionName }}</text>
              </view>
            </view>
            <view class="replacement">
              <text @click="replacementBtn('industry')" class="replacement-box">重置</text>
              <text @click="replacementConfirm('industry')">确定</text>
            </view>
          </van-dropdown-item>
          <van-dropdown-item id="genre" :title="activityTypeName" @close="closeTheWindow('genre')">
            <view class="menu-items">
              <view class="menu-items-box" @click="overallActivity('genre', item)" v-for="item in listActivityType" :key="item.ActivityTypeId">
                <view class="items-box">
                  <u-icon v-if="item.IsChoose" name="checkbox-mark" color="#2C83FF" size="24"> </u-icon>
                </view>
                <text>{{ item.ActivityTypeName }}</text>
              </view>
            </view>
            <view class="replacement">
              <text @click="replacementBtn('genre')" class="replacement-box">重置</text>
              <text @click="replacementConfirm('genre')">确定</text>
            </view>
          </van-dropdown-item>
        </van-dropdown-menu>
      </view>
    </view>
    <!-- 内容列表部分 -->
    <!-- 活动列表 -->
    <view v-if="haveData" class="activity-pages" :class="dynamicName ? 'activity-page' : '' ">
         <view class="collect-ul">
      <view class="collect-ltem" v-for="(item, index) in collectList" :key="index">
        <view class="title-date" @click="goDetail(item)">
          <text :class="item.ActivityType == 1 ? '' : 'xianxia'">{{ item.ActivityType == 1 ? "线上" : "线下" }}</text>
          {{ item.ActivityTimeText }}
        </view>
        <view class="item-li">
          <view class="item-img" @click="goDetail(item)">
            <image :src="item.ImgUrl">
            <text v-if="item.ActiveState==1" class="img-status begin">未开始</text>
            <text v-else-if="item.ActiveState==2"  class="img-status proceed">进行中</text>
            <text v-else class="img-status">已结束</text>
            <view class="img-type">
              <image :src="item.ImgUrlText" mode=""></image>
            </view>
          </view>
          <view class="item">
            <view class="item-text" @click="goDetail(item)">
              <text class="activity-title"> {{ item.ActivityName }} </text>
              <text class="text_twoLine" v-if="item.ActivityTypeName == '专家电话会' || item.ActivityTypeName == '专家线下沙龙' || item.ActivityTypeName == '研选电话会'">专家背景：{{ item.Expert }} </text>
              <text class="text_twoLine" v-if="item.ActivityTypeName == '公司调研电话会' || item.ActivityTypeName == '公司线下调研'">嘉宾：{{ item.DistinguishedGuest }} </text>
              <text class="text_twoLine" v-if="item.ActivityTypeName == '分析师电话会' || item.ActivityTypeName == '分析师线下沙龙'">主讲人：{{ item.Speaker }}</text>
            </view>
            <block v-if="item.ActiveState == 1">
              <view class="bottom-box city" v-if="item.ActiveState == 1 && item.IsLimitPeople == 1 && item.ActivityTypeName == '公司调研电话会'">
                <view class="city-img">
                  <image v-if="item.City" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/location.png" />
                  {{ item.City }}
                </view>
                <text class="button" v-if="item.IsSignup !== 1" @click="wanttosignup(item.ActivityId)">我要报名</text>
                <text class="button" v-else @click="signupCancel(item.ActivityId, 2, item.ActivityTime)">{{ item.SignupType == 1 ? "取消外呼" : "取消报名" }}</text>
              </view>
              <view class="bottom-box" v-else-if="item.ActivityType == 1">
               <view class="" style="width:130rpx">
                  <text v-if="item.ActivityTypeId == 1" @click="askingGo(item)">帮我带问</text>
               </view>
                <text @click="meetingReminderAdd(item.ActivityId)" v-if="item.IsCancelMeetingReminder == 0">会议提醒</text>
                <text @click="meetingReminderCancel(item.ActivityId)" v-else>取消提醒</text>
                <text class="button" v-if="item.IsSignup !== 1" @click="signupAdd(item.ActivityId, 1)">预约外呼</text>
                <text class="button" @click="signupCancel(item.ActivityId, 1, item.ActivityTime)" v-else>取消外呼</text>
              </view>
              <view class="bottom-box city" v-else>
                <view class="city-img">
                  <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/location.png" />
                  {{ item.City }}
                </view>
                <text class="button" v-if="item.IsSignup !== 1" @click="signupAdd(item.ActivityId, 3)">我要报名</text>
                <text class="button" v-else @click="signupCancel(item.ActivityId, 3, item.ActivityTime)">取消报名</text>
              </view>
            </block>
            <block v-else>
               <view class="bottom-box city" v-if="item.City">
                <view class="city-img">
                  <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/location.png" />
                  {{ item.City }}
                </view>
              </view>  
               <view class="bottom-box real-time" v-if="item.ActiveState == 2 && item.ActivityTypeId == 1">
                 <text class="button"  @click="askingGo(item,'提问')">实时提问</text>
                </view>
            </block>
          </view>
        </view>
      </view>
      <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="totalPage > 1" />
    </view>
    </view>
    <!-- 缺审部分 -->
    <view class="nodata" v-else>
      <image src="https://hzstatic.hzinsights.com/cygx/czbk/act_search.png" mode="" class="nodata_ico"></image>
      <text>未找到搜索结果</text>
    </view>
    <!-- 各种自定义弹框 -->
		<modalDialog :isShow="isShow" :signupType="signupType" :goFollow="goFollow" :signupStatus="signupStatus"
				:hasPermission="hasPermission" :jurisdictionList="jurisdictionList" :editIsShow="editIsShow"
				:isCancelShow="isCancelShow" :idTypeCancel="idTypeCancel" @cancelShowBtn="cancelEnsure"
				:countryCode="countryCode" :mobileEdit="mobileEdit" :goOnNextStep="goOnNextStep"
				:isShowhasPermission="isShowhasPermission" :applyForIsShow="applyForIsShow" 
				:mailboxBinding="mailboxBinding"/>
    <!-- 选择区号弹出层 -->
    <areaCode :isAreaCode="isAreaCode" :areaCode="areaCode" />
    <!-- 参会方式弹出层 -->
		<view class="select-box">
			<u-popup v-model="selectShow" mode="bottom">
				<view style="color: #333333;font-size: 28rpxrpx;">请选择参会方式</view>
				<view style="color: #2C83FF;" @click="signupAdd('id',1)">预约外呼</view>
				<view style="color: #2C83FF;" @click="signupAdd('id',2)">自主拨入</view>
				<view style="color: #A9AFB8;" @click="selectShow=false">取消</view>
			</u-popup>
		</view>
    
   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
  </view>
</template>

<script>
import { activity,User } from "@/config/api.js";
import { Throttle } from "@/config/util.js";
import modalDialog from "@/components/modalDialog.vue";
import areaCode from "@/activityPages/components/areaCode.vue";
import myMixin from "../components/index.js";
import myActivityMixin from "../components/indexActivity.js";
import freeCharge  from '@/components/freeCharge'
let app = getApp({allowDefault: true});
export default {
  data() {
    return {
      searchTxt: "",
      isShowSearch: false,
      status: "loadmore",
      totalPage: "",
      haveData: true,
      activeState: "1,2,3", //活动进行状态
      activeStateName: "全部状态",
      selectShow: false,
      dynamicList: [],
      dynamicName: "",
    };
  },
  mixins: [myMixin,myActivityMixin],
  components: {
    modalDialog,
    areaCode,
    freeCharge,
  },
  methods: {
    //获取快捷主题
    fastSearchKeWord() {
      activity
        .fastSearchKeWord({
          ActiveState: this.activeState,
          ActivityTypeIds: this.activityTypeIds,
          ChartPermissionIds: this.chartPermissionIds,
          WhichDay: this.activityTimeStatus,
          Label: "More",
        })
        .then((res) => {
          if (res.Ret !== 200) return;
          this.dynamicList = res.Data.List || [];
        });
    },
    //主题的点击事件
    //点击了快捷主题
    changeTarget(val) {
      if (val) {
        this.dynamicName = val;
      }
      if (this.isGain) {
        this.empty();
        this.getList();
      }
      this.getUserSearchContent();
      this.isShowSearch = true;
    },
    //清除主题的点击事件
    //清除了快捷主题
    clearDynamicName() {
      this.dynamicName = "";
      this.searchTxt = "";
      this.collectList = [];
      this.haveData = true;
      this.isShowSearch = false;
    },
    // 遍历
    preserve() {
      const arr = [];
      const str = [];
      this.listActivityStaus.forEach((item) => {
        if (item.IsChoose) {
          arr.push(item.Id);
          str.push(item.StatusName);
        }
      });
      if (str.length == this.listActivityStaus.length || str.length <= 0) {
        this.activeStateName = "所有状态";
      } else {
        this.activeStateName = str.join(",");
      }
      this.activeState = arr.join(",");
      const arrTwo = [];
      this.activityTimeList.forEach((key) => {
        if (key.IsChoose) {
          arrTwo.push(key.Id);
        }
      });
      this.activityTimeStatus = arrTwo.join(",");
      const hyArr = [];
      const hyStr = [];
      this.listChartPermission.forEach((key) => {
        if (key.IsChoose) {
          hyArr.push(key.ChartPermissionId);
          hyStr.push(key.PermissionName);
        }
      });
      if ((hyStr.length == 6 && this.listChartPermission.length == 6) || hyStr.length <= 0) {
        this.chartPermissionName = "所有行业";
      } else {
        this.chartPermissionName = hyStr.join(",");
      }
      this.chartPermissionIds = hyArr.join(",");
      const lxArr = [];
      const lxStr = [];
      this.listActivityType.forEach((key) => {
        if (key.IsChoose) {
          lxArr.push(key.ActivityTypeId);
          lxStr.push(key.ActivityTypeName);
        }
      });
      if (lxStr.length == this.listActivityType.length || lxStr.length <= 0) {
        this.activityTypeName = "所有类型";
      } else {
        this.activityTypeName = lxStr.join(",");
      }
      this.activityTypeIds = lxArr.join(",");
      this.getList();
    },
    // 通过分享进来的下拉选择的状态、关联
    shareOption() {
      const arr = this.activeState.split(",").map((item) => item - 0);
      this.listActivityStaus.forEach((item) => {
        if (arr.indexOf(item.Id) !== -1) {
          item.IsChoose = true;
        } else {
          item.IsChoose = false;
        }
      });
      const arrTwo = this.activityTimeStatus.split(",").map((item) => item - 0);
      this.activityTimeList.forEach((item) => {
        if (arrTwo.indexOf(item.Id) !== -1) {
          item.IsChoose = true;
        } else {
          item.IsChoose = false;
        }
      });
      const hyarr = this.chartPermissionIds.split(",").map((item) => item - 0);
      this.listChartPermission.forEach((key) => {
        if (hyarr.indexOf(key.ChartPermissionId) !== -1) {
          key.IsChoose = true;
        } else {
          key.IsChoose = false;
        }
      });
      const lxarr = this.activityTypeIds.split(",").map((item) => item - 0);
      this.listActivityType.forEach((key) => {
        if (lxarr.indexOf(key.ActivityTypeId) !== -1) {
          key.IsChoose = true;
        } else {
          key.IsChoose = false;
        }
      });
      this.preserve();
    },
    //搜索记录进来
    searchHandle() {
      if (this.searchTxt) {
         this.page_no = 1;
        //添加搜索记录
        if (!this.historySearchList.includes(this.searchTxt)) {
          this.historySearchList.unshift(this.searchTxt);
          this.$db.set("historySearchListActivity", JSON.stringify(this.historySearchList));
        }
        this.isShowSearch = true;
        if (this.isGain) {
          this.empty();
          this.getList();
        }
        this.getUserSearchContent();
      } else {
        this.$util.toast("请输入关键字");
      }
    },
    // 选择历史搜索
    chooseTarget(item) {
      this.searchTxt = item;
      this.collectList = [];
      this.page_no = 1;
      this.searchHandle();
    },
    /* 历史搜索清空 */
    clearHistory() {
      this.historySearchList = [];
      this.$db.del("historySearchListActivity");
    },
    //获取列表
    async getList() {
      const res = this.dynamicName
        ? await activity.getActivityListNew({
            PageSize: this.pageSize,
            CurrentIndex: this.page_no,
            ActiveState: "2,3", //活动进行状态
            Label: this.dynamicName,
          })
        : await activity.getActivityList({
            PageSize: this.pageSize,
            CurrentIndex: this.page_no,
            ActiveState: this.activeState, //活动进行状态
            ActivityTypeIds: this.activityTypeIds, //活动类型id 多个用 , 隔开
            ChartPermissionIds: this.chartPermissionIds, //行业id 多个用 , 隔开
            KeyWord: this.searchTxt,
            WhichDay: this.activityTimeStatus,
          });
      if (res.Ret !== 200) return;
      this.status = this.page_no < res.Data.Paging.Pages ? "loadmore" : "nomore";
      this.totalPage = res.Data.Paging.Pages; //总页数
      if (this.page_no === 1) {
        this.collectList = res.Data.List || [];
        this.haveData = this.collectList.length ? true : false;
        if (this.refresh) {
          uni.stopPullDownRefresh();
          this.refresh = false;
        }
      } else {
        this.collectList.push(...res.Data.List);
      }
    },
    //获取活动详情接口
    getUserSearchContent(name) {
      activity
        .getUserSearchContent({
          IsShowJurisdiction: this.isId,
        })
        .then((res) => {
          if (this.isGain) {
            res.Data.ListActivityStaus.forEach((item) => {
              item.IsChoose = true;
            });
          }
          this.isShowJurisdiction = res.Data.IsShowJurisdiction;
          this.listActivityStaus = res.Data.ListActivityStaus;
          this.listActivityType = res.Data.ListActivityType;
          this.listChartPermission = res.Data.ListChartPermission || [];
          this.listChartPermissionInit = res.Data.ListChartPermission2;
          if (this.isGain) {
            // this.preserve()
          } else {
            this.shareOption();
          }
          if (name == "traverse") {
            const hyArr = [];
            this.listChartPermission.forEach((key) => {
              if (key.IsChoose) {
                hyArr.push(key.ChartPermissionId);
              }
            });

            this.chartPermissionIds = hyArr.join(",");
          }
        });
    },
    //恢复下拉选择的初始状态
    empty() {
      this.listActivityStaus.forEach((item) => (item.IsChoose = true));
      this.activeState = "1,2,3";
      this.activeStateName = "全部状态";
      this.chartPermissionIds = "";
      this.activityTimeList.forEach((key) => {
        key.IsChoose = false;
      });
      this.activityTimeStatus = "";
      this.listChartPermission.forEach((item) => (item.IsChoose = false));
      this.chartPermissionName = "所有行业";
      this.listActivityType.forEach((item) => (item.IsChoose = false));
      this.activityTypeIds = "";
      this.activityTypeName = "所有类型";
    },
    /* 表单清空 */
    clearIpt() {
      this.searchTxt = "";
      this.collectList = [];
      this.haveData = true;
      this.isShowSearch = false;
    },
    //获取是否需要填写区号接口
    countryCcode() {
      User.countryCcode().then((res) => {
        if (res.Ret == 200) {
          this.isNeedAddCountryCode = res.Data.IsNeedAddCountryCode;
        }
      });
    },
  },
  onShow() {
    this.countryCcode(); //判断是否加区号
    this.$store.dispatch("statistics", { PageType: "ActivitSearch" });
  },
  //load
  onLoad(option) {
      if (this.$db.get("historySearchListActivity")) {
        let historyList = JSON.parse(this.$db.get("historySearchListActivity"));
        this.historySearchList = historyList;
      }
      if (option.text || option.dycName) {
        this.activeState = option.statesId; //活动进行状态
        this.activityTypeIds = option.typeIds; //活动类型id 多个用 , 隔开
        this.chartPermissionIds = option.chartIds; //行业id 多个用 , 隔开
        this.activeStateName = option.stateName;
        this.chartPermissionName = option.chartName;
        this.activityTypeName = option.typeName;
        this.searchTxt = option.text;
        this.dynamicName = option.dycName || "";
        this.activityTimeStatus = option.timeStatus;
        this.isGain = false;
        this.isShowSearch = true;
      } else {
        this.isGain = true;
      }
      if (option.text) {
        this.searchHandle();
      } else if (option.dycName) {
        this.changeTarget();
      }
      this.fastSearchKeWord();
  },
  /* 触底 */
  onReachBottom: Throttle(function () {
    if (this.status === "nomore") return;
    this.status = "loading";
    this.page_no++;
    this.getList();
  }),
  /* 用户点击分享  */
  onShareAppMessage: function (res) {
    return {
      title: this.isHorzMobile ? "好友向您推荐此内容，上传名片享查研观向免费月卡！" :  "活动搜索",
      path:
        "/activityPages/activitySearch/activitySearch?statesId=" +
        this.activeState +
        "&typeIds=" +
        this.activityTypeIds +
        "&chartIds=" +
        this.chartPermissionIds +
        "&stateName=" +
        this.activeStateName +
        "&chartName=" +
        this.chartPermissionName +
        "&typeName=" +
        this.activityTypeName +
        "&text=" +
        this.searchTxt +
        "&timeStatus=" +
        this.activityTimeStatus +
        "&dycName=" +
        this.dynamicName,
      success: (res) => {},
      fail: (err) => {},
    };
  },
  /* 下拉刷新 */
  onPullDownRefresh: Throttle(function () {
    this.page_no = 1;
    this.refresh = true;
    if (this.tabsActive == 0) {
      this.getList();
    } else {
      this.getScheduleList();
    }
  }),
};
</script>

<style scoped lang="scss">
@import "../components/index.scss";
.dynamic-content {
  padding: 0 0 0 0 !important;
  .target-title {
    color: #333333 !important;
    font-size: 28rpx !important;
  }
}
.dynamic-name {
  display: flex;
  align-items: center;
  padding: 36rpx 10rpx 20rpx !important;
  color: #3385ff;
  font-size: 28rpx;
  text {
    max-width: 100%;
    padding-right: 40rpx;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  icon {
    width: 32rpx;
    height: 32rpx;
  }
}

.activity-pages {
  padding-top: 200rpx;
  padding-bottom: 30rpx;
}
.activity-page {
  padding-top: 100rpx !important;
}
@import '../components/indexActivity.scss';
</style>
