174 lines
5.9 KiB
Vue
174 lines
5.9 KiB
Vue
|
<template>
|
||
|
<view>
|
||
|
<view class="run-time bg-white m-t-20">
|
||
|
<view class="black nr m-b-20">工作日: </view>
|
||
|
<view class="days flex row-between">
|
||
|
<block v-for="(item, index) in weekdaysText" :key="index">
|
||
|
<template>
|
||
|
<view @click="selectDayFunc(index)" class="item" :class="weekdays[index] == null ? 'not-select' : 'select'">{{item}}</view>
|
||
|
</template>
|
||
|
</block>
|
||
|
</view>
|
||
|
|
||
|
<view class="black nr m-t-40 m-b-20">营业时间: </view>
|
||
|
|
||
|
<view class="time flex row-between">
|
||
|
<view class="flex row-between" @click="openTimePickerFunc(1)">
|
||
|
{{start[0]}}:{{start[1]}}
|
||
|
<u-icon name="arrow-down" size="20"></u-icon>
|
||
|
</view>
|
||
|
-
|
||
|
<view class="flex row-between" @click="openTimePickerFunc(2)">
|
||
|
{{end[0]}}:{{end[1]}}
|
||
|
<u-icon name="arrow-down" size="20"></u-icon>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
|
||
|
<button class="my-btn white md flex br60 row-center" @click="onSubmit">完成</button>
|
||
|
|
||
|
<!-- 时间选择组件 -->
|
||
|
<u-picker v-model="show" @confirm="confirm" mode="time" :params="params"></u-picker>
|
||
|
|
||
|
<u-toast ref="uToast" />
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import {
|
||
|
apiSetShopInfo
|
||
|
} from '@/api/store'
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
weekdays: [],
|
||
|
weekdaysText: ['日',"一","二",'三','四','五','六'],
|
||
|
|
||
|
type: 1, //1 = 开始时间 2=结束时间
|
||
|
show: false,
|
||
|
params: {
|
||
|
year: false,
|
||
|
month: false,
|
||
|
day: false,
|
||
|
hour: true,
|
||
|
minute: true,
|
||
|
second: false,
|
||
|
timestamp: true, // 1.3.7版本提供
|
||
|
},
|
||
|
start: ['00','00'],//时 分
|
||
|
end: ['00','00'],//时 分
|
||
|
startTimestamp: '',//开始时间戳
|
||
|
endTimestamp: ''//结束时间戳
|
||
|
}
|
||
|
},
|
||
|
onLoad() {
|
||
|
// 工作日计算
|
||
|
let arr = [null, null, null, null, null, null, null];
|
||
|
let weekdays = this.shopInfo.weekdays;
|
||
|
let weekdaysText = [0, 1, 2, 3, 4, 5, 6]
|
||
|
for (let i = 0; i < weekdaysText.length; i++) {
|
||
|
for (let j = 0; j < weekdays.length; j++) {
|
||
|
if (weekdaysText[i] == weekdays[j]) {
|
||
|
arr[i] = weekdays[j];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
this.weekdays = arr;
|
||
|
|
||
|
// 营业时间计算
|
||
|
let start = this.shopInfo.run_start_time;
|
||
|
let end = this.shopInfo.run_end_time;
|
||
|
this.start = start.split(':');
|
||
|
this.end = end.split(':');
|
||
|
this.startTimestamp = ((start.split(':')[0])*60*60) + ((start.split(':')[1])*60) + (Number(new Date(new Date().toLocaleDateString()).getTime())/1000)
|
||
|
this.endTimestamp = ((end.split(':')[0])*60*60) + ((end.split(':')[1])*60) + (Number(new Date(new Date().toLocaleDateString()).getTime())/1000)
|
||
|
},
|
||
|
methods: {
|
||
|
// 选择营业工作日
|
||
|
selectDayFunc(index) {
|
||
|
let weekdaysText = [0, 1, 2, 3, 4, 5, 6]
|
||
|
weekdaysText.forEach(item => {
|
||
|
if(item == index) {
|
||
|
this.weekdays[index] = this.weekdays[index] == null ? item : null
|
||
|
}
|
||
|
})
|
||
|
this.weekdaysText = [...this.weekdaysText]
|
||
|
},
|
||
|
|
||
|
openTimePickerFunc(type) {
|
||
|
this.type = type;
|
||
|
this.show = true;
|
||
|
},
|
||
|
|
||
|
confirm(time) {
|
||
|
if(this.type == 1) {
|
||
|
this.start = [time.hour, time.minute]
|
||
|
this.startTimestamp = time.timestamp;
|
||
|
} else {
|
||
|
this.end = [time.hour, time.minute]
|
||
|
this.endTimestamp = time.timestamp;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
async onSubmit() {
|
||
|
const params = {
|
||
|
run_start_time: Number(this.startTimestamp),
|
||
|
run_end_time: Number(this.endTimestamp),
|
||
|
weekdays: this.weekdays.filter(item => typeof item == 'string' || typeof item == 'number')
|
||
|
}
|
||
|
|
||
|
await apiSetShopInfo({...params})
|
||
|
this.$refs.uToast.show({
|
||
|
title: '设置成功',
|
||
|
type: 'success'
|
||
|
})
|
||
|
setTimeout(() => {
|
||
|
this.$Router.back()
|
||
|
}, 1000)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss">
|
||
|
.run-time {
|
||
|
padding: 30rpx;
|
||
|
|
||
|
.days {
|
||
|
.item {
|
||
|
width: 76rpx;
|
||
|
height: 76rpx;
|
||
|
border-radius: 50%;
|
||
|
line-height: 76rpx;
|
||
|
text-align: center;
|
||
|
color: $-color-white;
|
||
|
font-size: $-font-size-nr;
|
||
|
}
|
||
|
.select {
|
||
|
background-color: $-color-primary;
|
||
|
}
|
||
|
.not-select {
|
||
|
background-color: #EEEEEE;
|
||
|
}
|
||
|
}
|
||
|
.time {
|
||
|
padding-bottom: 20rpx;
|
||
|
>view {
|
||
|
width: 322rpx;
|
||
|
height: 64rpx;
|
||
|
padding: 20rpx;
|
||
|
font-size: $-font-size-nr;
|
||
|
border: 1rpx solid #dbdbdb;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.my-btn {
|
||
|
height: 88rpx;
|
||
|
margin: 30rpx 26rpx;
|
||
|
margin-top: 40rpx;
|
||
|
text-align: center;
|
||
|
background-color: $-color-primary;
|
||
|
}
|
||
|
</style>
|