@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
package/src/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue
CHANGED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
v-bind="datePickerCommonProps"
|
|
10
10
|
placeholder="开始日期"
|
|
11
11
|
:value="tempFilteredValue[config.prop[0]]"
|
|
12
|
-
:picker-options="
|
|
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="
|
|
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
|
|
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
|
+
}
|