<template>
	<!-- <page-meta :root-font-size="getRootFontSize()"></page-meta> -->
  <view class="situationsCenter-page">
	<!-- <app-update url="123"  ref="appUpdate" ></app-update> -->
    <view class="calender-remind" @click="toMessagePage">
      <image
        :src="`/static/message-${messageType ? 'unread' : 'read'}.png`"
      ></image>
    </view>
	<view class="search-box" :style="{top:statusBarHeight==0?50:statusBarHeight}">
	  <view
	    class="search-model"
	    @click="openSearchBar"
	    v-show="isSearchBoxShow"
	  >
	    <image class="search-pic" src="/static/search.png"></image>
	  </view>
	  <view class="search-bar" v-show="isSearchBarShow">
	    <view class="search-item">
	      <image class="search-pic" src="/static/search.png"></image>
	      <image
	        class="text-clear"
	        @click="valueEmpty"
	        src="/static/text-clear.png"
	      ></image>
	      <input
	        class="searh-input"
	        v-model="inputValue"
	        @confirm="searchByKeywords($event)"
	        placeholder="搜索项目"
	        placeholder-style="font-weight: 400,color: #A1A7B3"
	      />
	    </view>
	    <text class="cancel-text" @click="closeSearchBar">取消</text>
	  </view>
	</view>
    <view class="situation-list">

      <scroll-view
        class="scroll-box"
        scroll-y="true"
        @scrolltolower="toLower"
        lower-threshold="5"
      >
        <view class="content" :style="[situationList.length === 0 ?{height:'100%'}:{}]">
          <view
            class="situation"
            v-for="(item, index) in situationList"
            :key="item.id"
            @click="gotoDetail(item.situationID)"
          >
            <image
              class="situation-topic"
              :src="`/static/${
                item.topic ? 'situation-case' : 'situation-system'
              }.png`"
            ></image>
            <view class="title">
              <text class="title-name">{{ item.name }}</text>
            </view>
            <view class="check-group">
              <text class="group-text">
                {{
                  nowPermission == 2
                    ? "剩余" + (item.toDistributeCount || 0) + "个待分配"
                    : item.checkGroupName
                }}</text
              >
            </view>
            <view class="row">
              <image
                class="situation-check"
                src="/static/situation-check.png"
              ></image>
              <text class="text">{{ item.checkStatus }}</text>
            </view>
            <view class="row">
              <image
                class="situation-time"
                src="/static/situation-time.png"
              ></image>
              <text class="text">{{ item.nextCheckTime }}</text>
            </view>
          </view>
					<tm-no-data v-if="situationList.length === 0" 
						:textArr="['还没有情境', '快点击右下方按钮新建一个吧']" />
        </view>
      </scroll-view>
    </view>
    <view v-if="nowPermission == 1" class="situaions-add" @click="gotoCreate">
      <image class="add-pic" src="/static/situation-add.png"></image>
    </view>
    <tm-tabbar :permission="nowPermission" />
  </view>
</template>
/**
 * 情境中心
 */
<script>
import websocket from "../../utils/ws.js"; //引入websocket
import {wsURL} from "../../utils/requestUrl.js";
// import appUpdate from "@/components/app-update/app-update.vue"

export default {
  data() {
    return {
      page: 1, //页数
      inputValue: "",
      nowPermission: "",
      isSearchBarShow: false, //搜索栏是否可见
      isSearchBoxShow: true, //搜索图标是否可见
      situationList: [], //情境卡片列表
      totalCount: "", //返回数据的总条数
      refTimer: null,
      isInitWs: null,
      messageType: null,
      num: 1,
	  // showUpdatePop:false,
      timer: null,
      // ws接口参数
      initParams: {}
    };
  },
  // components:{appUpdate},
  created: function () {
    this.nowPermission = uni.getStorageSync("nowPermission");
    this.init(true);
    this.refTimer = setInterval(() => {
      this.isInitWs = websocket.ws ? false : true;
      const {hiId, user, permission} = this.initParams;
      this.isInitWs && this.initWebsocket(hiId, user, permission);
    }, 3 * 60 * 1000);
    // this.messStatus();
  },
  beforeDestroy() {
    // 关闭ws连接
    websocket.close();
    clearInterval(this.refTimer);
    clearTimeout(this.timer);
  },
  computed:{
	  statusBarHeight(){
		   const {statusBarHeight} = uni.getSystemInfoSync();
		   return statusBarHeight;
	  }
  },
  mounted() {

  },
  methods: {
    openSearchBar() {
      this.isSearchBarShow = true;
      this.isSearchBoxShow = false;
    },
    closeSearchBar() {
      this.isSearchBarShow = false;
      this.isSearchBoxShow = true;
    },
    valueEmpty() {
      this.inputValue = "";
    },
    gotoCreate() {
      uni.navigateTo({
        url: "/pages/creatingSituations/creatingSituations",
      });
    },
    gotoDetail(id) {
      uni.navigateTo({
        url: `/pages/situationDetail/situationDetail?situationId=${id}`,
      });
    },
    getSituationList(data, callback) {
      this.$store
        .dispatch({
          type: "situationsCenter/commActions",
          payload: {
            data,
            key: "situationList",
          },
        })
        .then((data) => {
          if (data) callback(data);
        });
    },
    searchByKeywords(event) {
      let data = {
        pageNum: 1,
        pageSize: 300,
        keyword: event.target.value,
      };
      this.getSituationList(data, (data) => {
        this.situationList = [];
        this.createSituationList(data.list);
      });
    },
    createSituationList(list = []) {
      list.map((item, index) => {
        this.situationList.push({
          name: item.name,
          checkStatus: item.checkStatus,
          nextCheckTime: item.nextCheckTime,
          checkGroupName: item.checkGroupName,
          topic: item.topic == 0 ? true : false,
          situationID: item.id,
          toDistributeCount: item.toDistributeCount,
        });
      });
    },
    toLower() {
	  console.log('toLower');
      uni.showToast({
        title: "加载中....",
        icon: "loading",
        duration: 2000,
      });
      let count = this.situationList.length;
	  console.log(this.totalCount,count);
      if (this.totalCount != count) {
        this.page++;
        let data = {
          pageNum: this.page,
          pageSize: 300,
        };
        this.getSituationList(data, (data) => {
          this.createSituationList(data.list);
          let hiId = uni.getStorageSync("hiId");
          let user = uni.getStorageSync("id");
          let permission = uni.getStorageSync("nowPermission");
          this.initParams = {
            hiId,
            user,
            permission
          };
          this.isInitWs && this.initWebsocket(hiId, user, permission);
        });
      } else {
        uni.showToast({
          title: "没有更多数据了",
          icon: "none",
          duration: 1000,
        });
      }
    },
    toMessagePage() {
      // this.messageType = false;
      uni.navigateTo({
        url: `/pages/messages/messages`,
      });
    },
    init(isInitWs) {
      this.isInitWs = isInitWs;
      this.initSituationList();
    },
    initWebsocket(hiId, user, permission) {
      websocket.url = wsURL(hiId, user, permission);
      websocket.createWebSocket(this.resolverWsData.bind(this));
    },
    // 解析websocket返回数据
    resolverWsData(type) {
      let types = JSON.parse(type);
      switch (types.type) {
        case "TO_READ":
          this.messageType = true;
          break;
        default:
          this.messageType = false;
          break;
      }
    },
    initSituationList() {
      let data = {
        pageNum: 1,
        pageSize: 300,
      };
      this.getSituationList(data, (data) => {
        this.totalCount = data.totalCount;
        this.createSituationList(data.list);
        let hiId = uni.getStorageSync("hiId");
        let user = uni.getStorageSync("id");
        let permission = uni.getStorageSync("nowPermission");
        this.initParams = {
          hiId,
          user,
          permission
        };
        this.isInitWs && this.initWebsocket(hiId, user, permission);
      });
    },
    // messStatus(){
    // 	let num = 1;
    // 	let timer = setInterval(()=>{
    // 	  this.$store.dispatch({
    // 		  type: "calendar/commActions",
    // 		  payload: {
    // 			key: "messagesList",
    // 			data: {
    // 			  pageNum: num,
    // 			  pageSize: 100,
    // 			},
    // 		  },
    // 		}).then((res)=>{
    // 			if(res && res.list.length == 0){
    // 				clearInterval(timer)
    // 			}else if(res && res.list.length != 0){
    // 				res.list.map((item)=>{
    // 					if(!item.readStatus){
    // 						this.messageType = true;
    // 						return;
    // 					}
    // 				})
    // 			}
    // 		})
    // 	  num++;
    // 	},200)
    // }
  },
};
</script>

<style lang="less">

.situationsCenter-page {
  height: 100%;
  .calender-remind {
    width: 62.5rpx;
    height: 62.5rpx;
    position: fixed;
	top:20rpx;
    right: 25rpx;
    background: rgba(255, 255, 255, 0.95);
    border-radius: 50%;
    z-index: 2;
    image {
      margin-left: 17.5rpx;
      margin-top: 16.87rpx;
      width: 27.5rpx;
      height: 28.75rpx;
    }
  }
  .search-box {
    position: fixed;
	top:20rpx;
    left: 25rpx;
    z-index: 2;
    .search-model {
      height: 62.5rpx;
      width: 62.5rpx;
      background-color: #ffffff;
      text-align: center;
      border-radius: 50%;
      box-shadow: 0px 10px 10px 0px rgba(217, 221, 228, 0.5);
      border: 1px solid #e6eaf2;
      opacity: 0.85;
      .search-pic {
        width: 27.5rpx;
        height: 27.5rpx;
        margin-top: 17.5rpx;
      }
    }
    .search-bar {
      background-color: #ffffff;
      width: 700rpx;
      height: 62.5rpx;
      top:0rpx;
      position: absolute;
      z-index: 2;
      .search-item {
        background-color: #ffffff;
        width: 593.75rpx;
        height: 62.5rpx;
        float: left;
        border-radius: 6.25rpx;
        border-right: 1.25rpx solid #f0f2f7;;
        .search-pic {
          width: 21.87rpx;
          height: 21.87rpx;
          margin-left: 12.5rpx;
          margin-top: 20.62rpx;
          float: left;
        }
        .searh-input {
          background-color: #ffffff;
          width: 525rpx;
          height: 55rpx;
          font-size: 22.5rpx;
          float: right;
          margin-top: 3.75rpx;
          margin-left: 3.12rpx;
        }
        .text-clear {
          width: 21.87rpx;
          height: 21.87rpx;
          float: right;
          margin-top: 20.62rpx;
          margin-right: 6.25rpx;
        }
      }
      .cancel-text {
        font-size: 22.5rpx;
        line-height: 62.5rpx;
        color: #a1a7b3;
        margin-right: 31.25rpx;
        float: right;
      }
    }
  }
  
  .situation-list {
    position: relative;
    height: 100%;
    .scroll-box {
      width: 100%;
      height: calc(100% - 87.5rpx);
      .content {
        display: flex;
        flex-flow: row wrap;
        padding-bottom: 100rpx;
        .situation {
          height: 187.5rpx;
          width: 337.5rpx;
          background: #ffffff;
          box-shadow: 0px 6px 20px 0px rgba(0, 13, 51, 0.1);
          border-radius: 8px;
          margin-left: 25rpx;
          margin-top: 25rpx;

          .situation-topic {
            width: 62.5rpx;
            height: 25rpx;
            float: right;
          }
          .title {
            height: 22.5rpx;
            margin-left: 20rpx;
            margin-top: 25rpx;
            display: flex;
            align-items: center;
            .title-name {
			  width: 300rpx;
              font-size: 22.5rpx;
              font-family: SourceHanSansCN-Bold, SourceHanSansCN;
              font-weight: bold;
              color: #292c33;
			  overflow:hidden; //超出的文本隐藏
			  text-overflow:ellipsis; //溢出用省略号显示
			  white-space:nowrap; //溢出不换行

            }
          }
          .check-group {
            margin-left: 20rpx;
            margin-top: 15rpx;
            margin-bottom: 25rpx;
            height: 17.5rpx;
            display: flex;
            align-items: center;
            .group-text {
              font-size: 17.5rpx;
              font-family: SourceHanSansCN-Normal, SourceHanSansCN;
              font-weight: 400;
              color: #666e80;
            }
          }
          .row {
            margin-left: 20rpx;
            margin-bottom: 17.5rpx;
            display: flex;
            align-items: center;
            height: 20rpx;
            .situation-check {
              width: 20rpx;
              height: 20rpx;
            }
            .situation-time {
              width: 20rpx;
              height: 20rpx;
            }
            .text {
              font-size: 20rpx;
              font-family: SourceHanSansCN-Normal, SourceHanSansCN;
              font-weight: 400;
              color: #292c33;
              margin-left: 11.25rpx;
            }
          }
        }
      }
    }
  }
  .situaions-add {
    position: fixed;
    right: 25rpx;
    bottom: 130rpx;
    .add-pic {
      width: 75rpx;
      height: 75rpx;
    }
  }
}
</style>
