提交 8947617f authored 作者: lidongxu's avatar lidongxu

refactor(mobile/promotion): 促销移动端_和 PC 端的计划新增联动测试完毕

同上
上级 e4b5f1f9
<template>
<van-calendar :show-mark="false"
:min-date="searchMinDate"
:max-date="searchMaxDate"
type="range"
allow-same-day
teleport="body" />
</template>
<script setup>
const props = defineProps({
setNextMaxMonth: { // 设置下一个月的最大日期为最大范围
type: Boolean,
default: false
}
})
// 设置最小日期选择范围
const searchMinDate = computed(() => {
// 默认为今年 1 月 1 日
return new Date(new Date().getFullYear(), 0, 1)
})
// 设置最大日期选择范围
const searchMaxDate = computed(() => {
if (props.setNextMaxMonth) {
// 设置下个月最后一日为最大范围
return new Date(new Date().getFullYear(), new Date().getMonth() + 2, 0)
} else {
// 默认为当前日期的六个月后
return new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate())
}
})
</script>
import { isMobile } from '@/utils' import { isMobile } from '@/utils'
// 移动端组件 // 移动端组件
// 选择搜索列表
import PickerSearch from './components/PickerSearch' import PickerSearch from './components/PickerSearch'
// 选择日期
import PickerCalendar from './components/PickerCalendar'
// 只有在移动端引入 // 只有在移动端引入
if (isMobile()) { if (isMobile()) {
...@@ -20,6 +23,6 @@ if (isMobile()) { ...@@ -20,6 +23,6 @@ if (isMobile()) {
} }
export default function (app) { export default function (app) {
// 移动端组件 app.component('PickerSearch', PickerSearch);
app.component('PickerSearch', PickerSearch) app.component('PickerCalendar', PickerCalendar);
} }
...@@ -25,11 +25,11 @@ ...@@ -25,11 +25,11 @@
:value="form.storeName" :value="form.storeName"
name="storeName" name="storeName"
placeholder="点击选择门店"> placeholder="点击选择门店">
<p>{{ form.storeAddr }} - {{ form.storeCode }}</p> <p v-if="form.storeName">{{ form.storeAddr }} - {{ form.storeCode }}</p>
</div> </div>
</template> </template>
</van-field> </van-field>
<van-field v-model="form.date" <van-field :modelValue="parseTime(form.date, '{y}-{m}-{d}')"
is-link is-link
readonly readonly
:disabled="!!planId" :disabled="!!planId"
...@@ -38,7 +38,13 @@ ...@@ -38,7 +38,13 @@
placeholder="点击选择时间" placeholder="点击选择时间"
required required
:rules="[{ required: true, message: '请选择日期' }]" :rules="[{ required: true, message: '请选择日期' }]"
@click="selDate" /> @click="selCalendar" />
<PickerCalendar v-model:show="showCalendar"
:default-date="form.date"
:min-date="new Date()"
setNextMaxMonth
type="single"
@confirm="confirmCalendar" />
<van-field v-model="form.pattern" <van-field v-model="form.pattern"
is-link is-link
readonly readonly
...@@ -128,14 +134,14 @@ ...@@ -128,14 +134,14 @@
:searchShow="showPickerSearch" :searchShow="showPickerSearch"
@search="search" @search="search"
@confirm="confirm"></PickerSearch> @confirm="confirm"></PickerSearch>
<van-popup v-model:show="showDatePicker" <!-- <van-popup v-model:show="showCalendar"
destroy-on-close destroy-on-close
position="bottom"> position="bottom">
<van-date-picker v-model="selDateArr" <van-date-picker v-model="confirmCalendarArr"
@confirm="onConfirmDate" @confirm="onConfirmDate"
:min-date="minDate" :min-date="minDate"
:max-date="maxDate" /> :max-date="maxDate" />
</van-popup> </van-popup> -->
<van-popup v-model:show="showInTimePicker" <van-popup v-model:show="showInTimePicker"
destroy-on-close destroy-on-close
position="bottom"> position="bottom">
...@@ -241,19 +247,27 @@ const getStoreList = async (storeName) => { ...@@ -241,19 +247,27 @@ const getStoreList = async (storeName) => {
getStoreList() getStoreList()
// 活动日期 // 活动日期
const showDatePicker = ref(false) const showCalendar = ref(false)
const selDateArr = ref([]) const selCalendar = () => {
const minDate = ref('') showCalendar.value = true
const maxDate = ref('') }
const selDate = () => { const confirmCalendar = (value) => {
showDatePicker.value = true form.date = value
selDateArr.value = form.date ? form.date.split('-') : [new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()] showCalendar.value = false
minDate.value = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate())
// 最大值到下个月最后一天
maxDate.value = new Date(new Date().getFullYear(), new Date().getMonth() + 2, 0)
} }
const searchMinDate = ref({}) // 最小日期范围
const confirmCalendarArr = ref([])
const maxDate = ref('')
// const confirmCalendar = () => {
// showCalendar.value = true
// confirmCalendarArr.value = form.date ? form.date.split('-') : [new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()]
// searchMinDate.value = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate())
// // 最大值到下个月最后一天
// maxDate.value = new Date(new Date().getFullYear(), new Date().getMonth() + 2, 0)
// }
const onConfirmDate = (value) => { const onConfirmDate = (value) => {
showDatePicker.value = false showCalendar.value = false
form.date = value?.selectedValues.join('-') form.date = value?.selectedValues.join('-')
} }
......
...@@ -21,15 +21,9 @@ ...@@ -21,15 +21,9 @@
placeholder="选择日期" placeholder="选择日期"
@click="selSearchCalendar"> @click="selSearchCalendar">
</van-field> </van-field>
<van-calendar v-model:show="showCalendar" <PickerCalendar v-model:show="showCalendar"
:min-date="searchMinDate"
:show-mark="false"
type="range"
allow-same-day
teleport="body"
:default-date="[query.activityStartDate, query.activityEndDate]" :default-date="[query.activityStartDate, query.activityEndDate]"
@confirm="confirmCalendar" /> @confirm="confirmCalendar" />
<!-- 活动类型 --> <!-- 活动类型 -->
<van-field v-model="query.planStatus" <van-field v-model="query.planStatus"
is-link is-link
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论