zhb 1 月之前
父节点
当前提交
da0ccec329

+ 26 - 4
components/cwg-complex-search.vue

@@ -17,11 +17,13 @@
                                     @change="(e) => field.onChange?.(e) || handleSearch()" />
                             </template>
                             <template v-else-if="field.type === 'date'">
-                                <uni-datetime-picker v-model="formData[field.key]" type="date"
+                                <uni-datetime-picker :start="dateLimit.start" :end="dateLimit.end"
+                                    v-model="formData[field.key]" type="date"
                                     :placeholder="field.placeholder || '请选择日期'" @change="handleDateChange" />
                             </template>
                             <template v-else-if="field.type === 'daterange'">
-                                <uni-datetime-picker v-model="formData[field.key]" type="daterange"
+                                <uni-datetime-picker :start="dateLimit.start" :end="dateLimit.end"
+                                    v-model="formData[field.key]" type="daterange"
                                     :placeholder="field.placeholder || '请选择日期范围'" @change="handleDateChange" />
                             </template>
                             <template v-else-if="field.type === 'picker'">
@@ -48,7 +50,7 @@
             <!-- 移动端:只显示筛选按钮,点击弹出底部抽屉 -->
             <view class="mobile-filter">
                 <view v-if="dateField" class="mobile-date-wrapper">
-                    <uni-datetime-picker v-model="formData[dateField.key]"
+                    <uni-datetime-picker :start="dateLimit.start" :end="dateLimit.end" v-model="formData[dateField.key]"
                         :type="dateField.type === 'daterange' ? 'daterange' : 'date'"
                         :placeholder="dateField.placeholder || (dateField.type === 'daterange' ? '选择日期范围' : '选择日期')"
                         @change="handleDateChange" />
@@ -138,7 +140,27 @@ const props = defineProps({
 })
 
 const emit = defineEmits(['update:modelValue', 'search', 'reset'])
-console.log(props.fields, 12);
+// 时间选择器限制:今天,近一年
+const dateLimit = computed(() => {
+    const now = new Date()
+    // 结束日期 = 今天
+    const endDate = new Date(now)
+    // 开始日期 = 今天 - 365天
+    const startDate = new Date(now)
+    startDate.setDate(startDate.getDate() - 365)
+
+    const format = (d) => {
+        const y = d.getFullYear()
+        const m = String(d.getMonth() + 1).padStart(2, '0')
+        const d2 = String(d.getDate()).padStart(2, '0')
+        return `${y}-${m}-${d2}`
+    }
+
+    return {
+        start: format(startDate),
+        end: format(endDate)
+    }
+})
 
 // 获取日期字段的默认值(当前月范围或当天)
 const getDefaultDateValue = (field) => {

+ 3 - 15
uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue

@@ -17,7 +17,7 @@
 						<view class="range-separator">{{ rangeSeparator }}</view>
 
 						<view class="uni-date__x-input text-center">{{ displayRangeValue.endDate || endPlaceholderText
-							}}</view>
+						}}</view>
 					</view>
 
 					<view v-if="showClearIcon" class="uni-date__icon-clear" @click.stop="clear">
@@ -508,20 +508,8 @@ export default {
 				this.pickerVisible = !this.pickerVisible
 				if (!this.isPhone && this.isRange && this.isFirstShow) {
 					this.isFirstShow = false
-					const {
-						startDate,
-						endDate
-					} = this.calendarRange
-					if (startDate && endDate) {
-						if (this.diffDate(startDate, endDate) < 30) {
-							this.$refs.right.changeMonth('pre')
-						}
-					} else {
-						// this.$refs.right.changeMonth('next')
-						if (this.isPhone) {
-							this.$refs.right.cale.lastHover = false;
-						}
-					}
+					// 设置左边显示当前月,右边显示当前月的下一月
+					this.$refs.right.changeMonth('next')
 				}
 
 			}, 50)