@lx-frontend/wrap-element-ui 1.0.21-beta.1 → 1.0.21-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lx-frontend/wrap-element-ui",
3
- "version": "1.0.21-beta.1",
3
+ "version": "1.0.21-beta.2",
4
4
  "description": "wrap-element-ui",
5
5
  "author": "",
6
6
  "main": "src/components/index.ts",
@@ -9,14 +9,14 @@
9
9
  v-bind="datePickerCommonProps"
10
10
  placeholder="开始日期"
11
11
  :value="tempFilteredValue[config.prop[0]]"
12
- :picker-options="startDateDisabledOptions"
12
+ :picker-options="genStartDateDisabledOptions(tempFilteredValue[config.prop[1]], config.limit)"
13
13
  @input="handleStartDateChange"
14
14
  />
15
15
  <el-date-picker
16
16
  v-bind="datePickerCommonProps"
17
17
  placeholder="结束日期"
18
18
  :value="tempFilteredValue[config.prop[1]]"
19
- :picker-options="endDateDisabledOptions"
19
+ :picker-options="genEndDateDisabledOptions(tempFilteredValue[config.prop[0]], config.limit)"
20
20
  @input="handleEndDateChange"
21
21
  />
22
22
  </div>
@@ -24,10 +24,8 @@
24
24
  </template>
25
25
 
26
26
  <script setup lang="ts">
27
- import { computed } from 'vue';
28
27
  import { IFilterDoubleDatePicker } from '../../types';
29
- import dayjs from 'dayjs';
30
- import type { DatePickerOptions } from 'element-ui/types/date-picker';
28
+ import { genStartDateDisabledOptions, genEndDateDisabledOptions } from '../../../helper';
31
29
 
32
30
  interface IFilterDoubleDatePickerProps {
33
31
  /** 日期选择器配置 */
@@ -51,34 +49,6 @@ const datePickerCommonProps = {
51
49
  editable: false,
52
50
  } as const;
53
51
 
54
- /** 开始日期禁用配置 */
55
- const startDateDisabledOptions = computed<DatePickerOptions>(() => {
56
- const endDate = props.tempFilteredValue[props.config.prop[1]];
57
-
58
- return {
59
- disabledDate: (time: Date) => {
60
- if (!endDate) return false;
61
-
62
- const currentDate = dayjs(time);
63
- return currentDate.isAfter(dayjs(endDate), 'day');
64
- }
65
- };
66
- });
67
-
68
- /** 结束日期禁用配置 */
69
- const endDateDisabledOptions = computed<DatePickerOptions>(() => {
70
- const startDate = props.tempFilteredValue[props.config.prop[0]];
71
-
72
- return {
73
- disabledDate: (time: Date) => {
74
- if (!startDate) return false;
75
-
76
- const currentDate = dayjs(time);
77
- return currentDate.isBefore(dayjs(startDate), 'day');
78
- }
79
- };
80
- });
81
-
82
52
  /** 处理开始日期变更 */
83
53
  const handleStartDateChange = (val: string | null) => {
84
54
  emit('update:tempFilteredValue', props.config.prop[0], val || '');
@@ -40,7 +40,9 @@ export interface IFilterDoubleDatePicker {
40
40
  type: 'doubleDatePicker',
41
41
  prop: [string, string],
42
42
  label?: string,
43
- pickerOptions?: DatePicker['pickerOptions']
43
+ pickerOptions?: DatePicker['pickerOptions'],
44
+ /** 限制天数范围 */
45
+ limit?: number
44
46
  }
45
47
 
46
48
  /** 筛选组件 - 月日选择器 */
@@ -8,7 +8,7 @@
8
8
  v-for="({
9
9
  isEmpty = true, key, type, prop, label, placeholder, candidate, filterable=false, withoutAll=false, collapseTags=false,
10
10
  clearable=false, multiple=false, multipleLimit=0, changeCb, inputLimitCallback, slotName, dateType='date',
11
- doubleIsInline = true, maxlength = 255,
11
+ doubleIsInline = true, maxlength = 255, doubleDatePickerLimit
12
12
  }) in config"
13
13
  :key="label"
14
14
  :label="showLabel ? label : ''"
@@ -84,7 +84,9 @@
84
84
  value-format="yyyy-MM-dd"
85
85
  format="yyyy-MM-dd"
86
86
  type="date"
87
+ :editable="false"
87
88
  :placeholder="(placeholder || [])[0] || '开始日期'"
89
+ :picker-options="genStartDateDisabledOptions(formData[prop[1]], doubleDatePickerLimit)"
88
90
  />
89
91
  <el-date-picker
90
92
  @input="val => handleInput(val, prop[1], '', key)"
@@ -93,7 +95,9 @@
93
95
  value-format="yyyy-MM-dd"
94
96
  format="yyyy-MM-dd"
95
97
  type="date"
98
+ :editable="false"
96
99
  :placeholder="(placeholder || [])[1] || '结束日期'"
100
+ :picker-options="genEndDateDisabledOptions(formData[prop[0]], doubleDatePickerLimit)"
97
101
  />
98
102
  <el-checkbox
99
103
  :value="checkedIds[key]"
@@ -124,6 +128,8 @@
124
128
  </template>
125
129
 
126
130
  <script>
131
+ import { genStartDateDisabledOptions, genEndDateDisabledOptions } from '../helper';
132
+
127
133
  export default {
128
134
  name: 'SearchForm',
129
135
  props: {
@@ -187,6 +193,8 @@ export default {
187
193
  this.initialData = Object.freeze({ ...this.formData })
188
194
  },
189
195
  methods: {
196
+ genStartDateDisabledOptions,
197
+ genEndDateDisabledOptions,
190
198
  handleInput (val, prop, inputLimitCallback, key) {
191
199
  if (inputLimitCallback && !inputLimitCallback(val)) return false
192
200
  if (val) {
@@ -0,0 +1,37 @@
1
+ import dayjs from "dayjs";
2
+
3
+ /** 开始日期禁用配置 */
4
+ export function genStartDateDisabledOptions(endDate: string, limit: number = 0) {
5
+ return {
6
+ disabledDate: (time: Date) => {
7
+ if (!endDate) return false;
8
+
9
+ const currentDate = dayjs(time);
10
+ const baseOption = currentDate.isAfter(dayjs(endDate), 'day');
11
+
12
+ if (!limit) {
13
+ return baseOption
14
+ }
15
+
16
+ return baseOption || currentDate.isBefore(dayjs(endDate).subtract(limit - 1, 'day'), 'day');
17
+ }
18
+ };
19
+ }
20
+
21
+ /** 结束日期禁用配置 */
22
+ export function genEndDateDisabledOptions(startDate: string, limit: number = 0) {
23
+ return {
24
+ disabledDate: (time: Date) => {
25
+ if (!startDate) return false;
26
+
27
+ const currentDate = dayjs(time);
28
+ const baseOption = currentDate.isBefore(dayjs(startDate), 'day');
29
+
30
+ if (!limit) {
31
+ return baseOption
32
+ }
33
+
34
+ return baseOption || currentDate.isAfter(dayjs(startDate).add(limit - 1, 'day'), 'day');
35
+ }
36
+ };
37
+ }