<template>
  <view class="page">
    <u-tabs
        lineWidth="336rpx"
        :list="tabsList"
        itemStyle="height:80rpx;padding-bottom:10rpx;background-color: #fff;"
        @click="tabsClick"
    ></u-tabs>
		<view class="container">
			<u-sticky offset-top="200">
				<u-button type="primary" text="高级搜索" @click="popupOpen"></u-button>
			</u-sticky>
		</view>
		<u-popup :show="popupShow" mode="right" :overlay="true" customStyle='width: 300px;' :safeAreaInsetTop="true" @close="popupClose" @open="popupOpen">
			<view>
				<u-datetime-picker
							:show="addStartPickBarShow"
							v-model="addTimeStart"
							mode="date"
							@close="addPickBarOnClose('start')"
							@cancel="addPickBarOnCancel('start')"
							@confirm="addPickBarOnConfirm"
					></u-datetime-picker>
						<u-button @click="addStartPickBarShow = true">起始时间：{{ addTimeStartStr == '' ? '请选择起始时间...' : addTimeStartStr }}</u-button>
				<u-datetime-picker
							:show="addEndPickBarShow"
							v-model="addTimeEnd"
							mode="date"
							@close="addPickBarOnClose('end')"
							@cancel="addPickBarOnCancel('end')"
							@confirm="addPickBarOnConfirm"
					></u-datetime-picker>
						<u-button @click="addEndPickBarShow = true">结束时间：{{ addTimeEndStr == '' ? '请选择结束时间...' : addTimeEndStr }}</u-button>
					<u-toast ref="uToast"></u-toast>
				<view class="u-page">
				        <view class="u-demo-block">
				            <view class="u-demo-block__content">
				                <u-row customStyle="margin-bottom: 10px">
				                    <u-col span="6">
				                        <view class="demo-layout bg-purple-light">
											<u-button @click="resetAdvancedParam">重置</u-button>
										</view>
				                    </u-col>
				                    <u-col span="6">
				                        <view class="demo-layout bg-purple">
											<u-button @click="advancedSearch">搜索</u-button>
										</view>
				                    </u-col>
				                </u-row>

				            </view>
				        </view>
				    </view>

			</view>
		</u-popup>
    <view class="message_list">
      <u-list @scrolltolower="scrolltolower" v-if="list.length > 0">
        <u-list-item v-for="(item, index) in list" :key="index">
          <view class="message_item arrow" @click="fnNavigator(item)">
            <view class="message_flex">
              <view>
                <template v-if="item.corppromisType ==='1'"> <!-- 0承诺书1责任状 -->
                  <view class="fontstyle">发状人：{{ item.coverpeople }}</view>
                  <view class="fontstyle">受状人：{{ item.NAME }}</view>
                </template>
                <template v-else>
                  <view class="fontstyle">被承诺人：{{ item.coverpeople }}</view>
                  <view class="fontstyle">承诺人：{{ item.NAME }}</view>
                </template>

                <view v-if="item.SIGNTIME != null" class="fontstyle">已签字</view>
                <view v-else class="fontstyle_red">未签字</view>
                <view class="message_time">{{ item.SIGNTIME }}</view>
              </view>
              <view class="font0" v-if="TYPE === '2'">{{ item.ISREAD == '0' ? '待阅' : '已阅' }}</view>
            </view>
          </view>
        </u-list-item>
      </u-list>
      <empty v-else></empty>
    </view>
  </view>
</template>

<script>
import {getMyPromiseList, getReceivePromiseList} from "../../../api";

export default {
  data() {
    return {
      tabsList: [
        // {name: '我的承诺', id: '1'},
        {name: '发出承诺', id: '1'},
        {name: '接收承诺', id: '2'}
      ],
      TYPE: '1',
      pageSize: 10,
      currentPage: 1,
      totalPage: 0,
      list: [],
	  popupShow: false, // 高级搜索弹窗
	  addStartPickBarShow: false, // 起始日期选择器
	  addEndPickBarShow: false, // 结束日期选择器
	  addTimeStart: Number(new Date()), // 承诺书添加时间-起始
	  addTimeEnd: Number(new Date()), // 承诺书添加时间-结束
	  addTimeStartStr: '', // 承诺书添加时间-起始-字符串
	  addTimeEndStr: '', // 承诺书添加时间-结束-字符串
    }
  },
  computed: {
    userInfo() {
      return this.$store.getters.getUserInfo
    }
  },
  onShow(event) {
    this.resetList()
  },
  methods: {
    async fnGetMyPromiseList() {
      let resData = await getMyPromiseList({
        USER_ID: this.userInfo.USER_ID,
        showCount: this.pageSize,
        currentPage: this.currentPage,
		ADDSTART: this.addTimeStartStr,
		ADDEND: this.addTimeEndStr
      })
      this.list = [...this.list, ...resData.varList]
      this.totalPage = resData.page.totalPage
    },
    async fnGetReceivePromiseList() {
      let resData = await getReceivePromiseList({
        USER_ID: this.userInfo.USER_ID,
        showCount: this.pageSize,
        currentPage: this.currentPage,
		ADDSTART: this.addTimeStartStr,
		ADDEND: this.addTimeEndStr
      })
      this.list = [...this.list, ...resData.varList]
    },
    resetList() {
      this.pageSize = 10
      this.currentPage = 1
      this.list = []
      this.getData();
    },
    getData() {
      if (this.TYPE === '1') this.fnGetMyPromiseList()
      if (this.TYPE === '2') this.fnGetReceivePromiseList()
    },
    scrolltolower() {
      this.currentPage++;
      if (this.totalPage >= this.currentPage) this.getData();
    },
    tabsClick(e) {
      this.TYPE = e.id
	  this.resetAllAddTime()
      this.resetList()
    },
    fnNavigator(item) {
      uni.$u.route({
        url: 'pages/mine/promise/detail',
        params: {
          PROMISE_ID: item.PROMISE_ID,
          PROMISEPEOPLE_ID: item.PROMISEPEOPLE_ID,
          TYPE: this.TYPE
        }
      })
    },
	// 高级搜索弹窗弹出函数
	popupOpen() {
	  this.popupShow = true

	},
	// 高级搜索弹窗关闭函数
	popupClose() {
	  this.popupShow = false

	},
	// 高级搜索日期选择器关闭回调
	addPickBarOnClose(type) {
		switch (type) {
			case 'start':
				this.addStartPickBarShow = false;
				break;
			case 'end':
				this.addEndPickBarShow = false;
				break;
			default:
				this.$refs.uToast.show({message:'日期选择参数错误',duration:1000})
		}
	},
	// 高级搜索日期选择器取消回调
	addPickBarOnCancel(type) {
		this.addPickBarOnClose(type)
	},
	// 高级搜索日期选择器确认回调
	addPickBarOnConfirm(value) {
		// alert(value.value)
		switch (this.addStartPickBarShow) {
			case true:
				// start type
				this.addTimeStartStr = uni.$u.timeFormat(value.value, 'yyyy-mm-dd')
				this.addPickBarOnClose('start')
				break;
			case false:
				// end type
				this.addTimeEndStr = uni.$u.timeFormat(value.value, 'yyyy-mm-dd')
				this.addPickBarOnClose('end')
				break;
			default:
				this.$refs.uToast.show({message:'日期选择参数错误',duration:1000})
		}
	},
		// 清除高级搜索内的起始日期、结束日期组件绑定的时间属性（时间戳类型）；清除根据时间戳格式化的文本日期
	resetAllAddTime() {
		this.addTimeStart = Number(new Date())
		this.addTimeEnd = Number(new Date())
		this.addTimeStartStr = ''
		this.addTimeEndStr = ''
	},
	// 重置高级搜索条件
	resetAdvancedParam() {
		this.resetAllAddTime()
		this.resetList()
	},
	// 高级搜索
	advancedSearch(){
		const toast = uni.$u.toast
		// 日期合法判定
		if (this.addTimeStartStr > this.addTimeEndStr){
				// 包含两种case：case1 开始时间 > 结束时间；case2 开始时间有值，结束时间为空
			this.$refs.uToast.show({message:'日期不合法',duration:1000})
			return
		}
		if (this.addTimeEndStr != '' && this.addTimeStartStr == ''){
			// 结束时间有值，开始时间为空
			this.$refs.uToast.show({message:'日期不合法',duration:1000})
			return
		}
		this.resetList()
		this.popupClose()
	}

  }
}
</script>

<style scoped>
.page {
  background-color: #f7f9ff;
  height: 100vh;
}
.wrap {
	padding: 12px;
}

.demo-layout {
	height: 25px;
	border-radius: 4px;
}

.bg-purple {
	background: #CED7E1;
}

.bg-purple-light {
	background: #e5e9f2;
}

.bg-purple-dark {
	background: #99a9bf;
}
</style>
