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>
 |