164 lines
4.0 KiB
Vue
164 lines
4.0 KiB
Vue
<template>
|
|
<view class="mine-choose-time" v-if="isLoad">
|
|
<scroll-view class="scroll-left fill-base" scroll-y :scroll-into-view="scrollNav" :scroll-with-animation="true"
|
|
v-if="sendDay.length> 0">
|
|
<block v-for="(item,index) in sendDay" :key="index">
|
|
<view @tap="onChangeNav(index,1)" :id="`scrollNav${index}`"
|
|
class="item-child flex-center f-paragraph c-title" :class="[{'active':index==scrollInd}]"
|
|
:style="{color: index == scrollInd ? primaryColor: ''}">
|
|
<view class="flex-center child ellipsis"
|
|
:style="{borderLeft: index == scrollInd ? `5rpx solid ${primaryColor}`:''}">
|
|
{{`${item.date} (${item.week})`}}
|
|
</view>
|
|
</view>
|
|
</block>
|
|
</scroll-view>
|
|
<view class="scroll-right abs fill-base pl-lg" v-if="sendTime.length > 0">
|
|
<view @tap="onChangeNav(index,2)" class="item-child flex-center f-paragraph c-paragraph"
|
|
style="padding-right: 25rpx;" :style="{color: index == checkInd ? primaryColor: ''}"
|
|
v-for="(item,index) in sendTime" :key="index">
|
|
<view class="flex-1" :class="[{'text-delete': item.status != 1}]">
|
|
{{item.time_text}}
|
|
</view>
|
|
<i class="iconfont icon-xuanze-fill" v-if="index == checkInd"></i>
|
|
</view>
|
|
<view class="mg-lg">
|
|
<abnor v-if="!loading&&sendTime.length<=0"></abnor>
|
|
</view>
|
|
</view>
|
|
|
|
<abnor v-if="!loading&&sendDay.length<=0"></abnor>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
mapState,
|
|
mapActions
|
|
} from 'vuex';
|
|
export default {
|
|
data() {
|
|
return {
|
|
isLoad: false,
|
|
options: {},
|
|
today_time: '',
|
|
sendDay: [],
|
|
sendTime: [],
|
|
loading: false,
|
|
scrollNav: 'scrollNav0',
|
|
scrollInd: 0,
|
|
checkInd: -1
|
|
}
|
|
},
|
|
computed: mapState({
|
|
commonOptions: state => state.user.commonOptions,
|
|
primaryColor: state => state.config.configInfo.primaryColor,
|
|
subColor: state => state.config.configInfo.subColor,
|
|
}),
|
|
onLoad(options) {
|
|
let {
|
|
index = '-1'
|
|
} = options
|
|
if (index && index.includes('_')) {
|
|
let arr = index.split('_')
|
|
this.scrollInd = arr[0]
|
|
this.checkInd = arr[1]
|
|
}
|
|
this.options = options
|
|
this.$util.showLoading()
|
|
this.initIndex()
|
|
},
|
|
methods: {
|
|
async initIndex(type = 0) {
|
|
let cur_time = new Date().getTime()
|
|
this.today_time = this.$util.DateToUnix(this.$util.formatTime(cur_time, 'YY-M-D h:m'))
|
|
let {
|
|
time = [],
|
|
date = []
|
|
} = await this.$api.claim.sendTime()
|
|
if (date.length > 0) {
|
|
let {
|
|
date: cur_day
|
|
} = date[type]
|
|
time.map(item => {
|
|
item.time_text = `${item.start_time} ~ ${item.end_time}`
|
|
item.end_time_unix = this.$util.DateToUnix(`${cur_day} ${item.end_time}`)
|
|
item.status = item.end_time_unix < this.today_time ? 0 : 1
|
|
})
|
|
}
|
|
this.sendDay = date
|
|
this.sendTime = time
|
|
this.loading = false
|
|
this.isLoad = true
|
|
this.$util.hideAll()
|
|
},
|
|
async initRefresh() {
|
|
this.initIndex()
|
|
},
|
|
async onChangeNav(index, type = 1) {
|
|
let key = type == 1 ? 'sendDay' : 'sendTime'
|
|
if (type == 1) {
|
|
this.checkInd = this.scrollInd == index ? this.checkInd : -1
|
|
this.scrollInd = index
|
|
this.scrollNav = `scrollNav${index}`
|
|
await this.initIndex(index)
|
|
} else {
|
|
let {
|
|
status,
|
|
} = this[key][index]
|
|
if (status != 1) return
|
|
this.checkInd = index
|
|
let item = this[key][index]
|
|
let {
|
|
date
|
|
} = this.sendDay[this.scrollInd]
|
|
item.date = date
|
|
let send_info = {
|
|
time_index: `${this.scrollInd}_${index}`,
|
|
time: item
|
|
}
|
|
this.$util.getPage(-1).send_info = send_info
|
|
this.$util.goUrl({
|
|
url: 1,
|
|
openType: 'navigateBack'
|
|
})
|
|
}
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.mine-choose-time {
|
|
|
|
.scroll-left {
|
|
width: 260rpx;
|
|
height: 100vh;
|
|
position: fixed;
|
|
top: 0;
|
|
bottom: 0;
|
|
}
|
|
|
|
.item-child {
|
|
height: 98rpx;
|
|
}
|
|
|
|
.item-child.active {
|
|
background: #F9F9F9;
|
|
}
|
|
|
|
.item-child .child {
|
|
width: 100%;
|
|
height: 32rpx;
|
|
padding: 0 5%;
|
|
}
|
|
|
|
.scroll-right {
|
|
min-height: 100vh;
|
|
top: 0;
|
|
width: 460rpx;
|
|
margin-left: 292rpx;
|
|
}
|
|
}
|
|
</style>
|