This commit is contained in:
wtq
2025-11-13 14:42:30 +08:00
commit 7d879ff3bc
349 changed files with 54558 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
.info {
padding: 30rpx 30rpx 60rpx 30rpx;
box-sizing: border-box;
background: linear-gradient(0deg, #ffe2d2, #fdf6f0);
font-size: 28rpx;
}
.time-root {
padding: 30rpx;
box-sizing: border-box;
margin-top: -35rpx;
border-radius: 30rpx 30rpx 0 0;
background-color: #fff;
.time {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #f6f7fb;
border-radius: 15rpx;
text {
display: inline-block;
padding: 0 20rpx;
box-sizing: border-box;
}
view {
width: 100%;
text-align: center;
padding: 20rpx;
box-sizing: border-box;
}
.time-active {
box-sizing: border-box;
padding: 18rpx;
border: 2rpx solid $jx-primary;
border-radius: 15rpx;
}
}
}
.tip {
font-size: 26rpx;
margin-bottom: 15rpx;
color: red;
}
.button {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background-color: #fff;
padding: 30rpx;
box-sizing: border-box;
box-shadow: -10rpx 0rpx 10rpx rgb(166, 166, 166);
view {
background: linear-gradient(90deg, #ffe14f, #fdc450);
border-radius: 50rpx;
padding: 20rpx 0;
text-align: center;
box-sizing: border-box;
}
}

View File

@@ -0,0 +1,175 @@
import { computed, ref } from 'vue'
import { onLoad } from "@dcloudio/uni-app";
import { getStorage } from '@/utils/storage';
import merchant from '@/api/https/merchant';
import useGlobalFunc from '@/composables/useGlobalFunc';
import { store } from "@/store";
export default {
setup() {
const { isTxd } = useGlobalFunc()
// ******************** 时间选择组件操作 *****************************
//#region
const dateTimePicker = ref<any>(null) // 时间组件实例
const timeActive = ref<number>(0) // 时间选择高亮
const timeIng = ref<string>('00:00') // 选择器的当前时间
// 确认选择时间
function confirm(e: AnyObject): void {
switch (timeActive.value) {
case 1:
businessTime.value.timer1 = e.value
break
case 2:
businessTime.value.timer2 = e.value
break
case 3:
businessTime.value.timer3 = e.value
break
case 4:
businessTime.value.timer4 = e.value
break
}
}
// 打开时间设置
function setTime(type: number): void {
timeActive.value = type
let time = businessTime.value
switch (type) {
case 1:
timeIng.value = time.timer1
break
case 2:
timeIng.value = time.timer2
break
case 3:
timeIng.value = time.timer3
break
case 4:
timeIng.value = time.timer4
break
}
dateTimePicker.value.open()
}
// 时间标题
const timeTitle = computed(() => {
let type = timeActive.value
if (type == 1 || type == 3) {
return '选择开始时间'
} else {
return '选择结束时间'
}
})
//#endregion
// ******************** 获取门店营业时间 *****************************
//#region
const businessTime = ref<AnyObject>({})
onLoad(async() => {
store.commit('storeInfo/jxLoadingFn', true)
if(!store.getters['storeInfo/businessHours']) await store.dispatch('storeInfo/getOneStore',getStorage("storeID"))
businessTime.value = store.getters['storeInfo/businessHours']
store.commit('storeInfo/jxLoadingFn', false)
})
//#endregion
// ******************** 保存营业时间 *****************************
//#region
async function saveBusinessTime() {
let time = businessTime.value
// 一开始时间大于结束时间
if (formatTime(time.timer1) >= formatTime(time.timer2)) {
return uni.jxAlert({
title: '营业时间一',
content: `开始时间不能大于结束时间,您可以修改为【${time.timer2}${time.timer1}`
})
}
// 第二段时间小于第一段时间
if (time.timer3 != '00:00' && time.timer4 != '00:00') {
if (formatTime(time.timer3) < formatTime(time.timer2)) {
return uni.jxAlert({
title: '提示',
content: `第二段营业时间不能小于第一段营业时间,您可以修改到【${time.timer2}】点之后`
})
}
}
// 二开始时间大于结束时间
if (formatTime(time.timer3) > formatTime(time.timer4)) {
return uni.jxAlert({
title: '营业时间二',
content: `开始时间不能大于结束时间,您可以修改为【${time.timer3}${time.timer4}`
})
}
// 校验通过
let data = {
storeID: getStorage("storeID"),
payload: JSON.stringify({
openTime1: formatTime(time.timer1),
closeTime1: formatTime(time.timer2),
openTime2: formatTime(time.timer3),
closeTime2: formatTime(time.timer4),
}),
}
let updateTimerRes = await merchant.update_store(data);
if (updateTimerRes.code == 0) {
uni.jxAlert({
title: '提示',
content: '修改成功,请返回下拉刷新',
success: () => {
uni.navigateBack()
}
})
} else {
uni.jxAlert({
title: '操作提示',
content: `提示:${updateTimerRes.desc}`,
success: () => {
uni.navigateBack()
}
})
}
}
// 格式化数据
function formatTime(time: string): number {
let newTime = time.slice(0, 2) + time.slice(-2)
return +newTime
}
//#endregion
// ******************** 修改淘鲜达线上时间 *****************************
//#region
async function setTxdIngTime(time: AnyObject) {
if (isTxd()) {
let data = {
vendorOrgCode: 34402634,
txdStores: JSON.stringify({
flag: [2],
txdStoreID: `JX${getStorage('storeID')}`,
startTime: time.timer1,
endTime: time.timer2
})
}
let res = await merchant.update_txd_store(data)
console.log('ZSW-res', res);
} else {
console.log('此店铺暂无淘鲜达店铺')
}
}
//#endregion
return {
dateTimePicker, // 时间组件实例
confirm, // 选择时间val
businessTime, // 营业时间
timeActive, // 时间选择高亮
setTime, // 打开时间设置
timeTitle, // 选择器标题
saveBusinessTime, // 确定修改时间
timeIng, // 选择器的当前时间
}
}
}

View File

@@ -0,0 +1,75 @@
<template>
<view class="info">
<uni-title type="h3" title="配送站点营业时间 00:00-24:00" />
<view> 门店营业时间需在配送站点营业时间内才会有骑手配送</view>
<view> 如需在此时间范围外营业请咨询业务经理调整配送方式</view>
<view> 第二段营业时间需要在第一段营业时间之后</view>
<view> 淘鲜达仅使用营业时间一</view>
</view>
<view class="time-root">
<uni-title type="h3" title="营业时间一" />
<view class="time one">
<view
class="left"
:class="{ 'time-active': timeActive == 1 }"
@tap="setTime(1)"
>
{{ businessTime.timer1 }}
</view>
<text class="middle"></text>
<view
class="right"
:class="{ 'time-active': timeActive == 2 }"
@tap="setTime(2)"
>
{{ businessTime.timer2 }}
</view>
</view>
<uni-title type="h2" title="营业时间二(非必选)" />
<view class="tip">提示:不需要第二段时间设置为00:00至00:00即可</view>
<view class="time two">
<view
class="left"
:class="{ 'time-active': timeActive == 3 }"
@tap="setTime(3)"
>
{{ businessTime.timer3 }}
</view>
<text class="middle"></text>
<view
class="right"
:class="{ 'time-active': timeActive == 4 }"
@tap="setTime(4)"
>
{{ businessTime.timer4 }}
</view>
</view>
</view>
<view class="button" @tap="saveBusinessTime">
<view>确认修改</view>
</view>
<uv-datetime-picker
:title="timeTitle"
confirmColor="#4eb331"
v-model="timeIng"
ref="dateTimePicker"
mode="time"
@confirm="confirm"
/>
</template>
<script lang="ts" src="./setBusinessTime" >
</script>
<style lang="scss" scoped>
@import './setBusinessTime.scss';
</style>
<style>
page {
background-color: #fff;
}
</style>