@lx-frontend/wrap-element-ui 1.0.25 → 1.0.26
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/README.md +54 -4
- package/dist/auto/index.mjs +21 -0
- package/dist/auto/types/index.d.ts +9 -0
- package/dist/vue2/index.css +1 -0
- package/dist/vue2/index.mjs +3017 -0
- package/dist/vue2/types/components/AddMembers/index.vue.d.ts +31 -0
- package/dist/vue2/types/components/AuditSteps/index.vue.d.ts +46 -0
- package/dist/vue2/types/components/DemoComponent/index.vue.d.ts +2 -0
- package/{src/components/EditableTable/bizHooks/index.ts → dist/vue2/types/components/EditableTable/bizHooks/index.d.ts} +1 -1
- package/dist/vue2/types/components/EditableTable/bizHooks/useCellHover.d.ts +11 -0
- package/dist/vue2/types/components/EditableTable/bizHooks/useColumnHeaderOperation.d.ts +34 -0
- package/dist/vue2/types/components/EditableTable/bizHooks/useDefaultOperation.d.ts +22 -0
- package/dist/vue2/types/components/EditableTable/bizHooks/useDragSort.d.ts +14 -0
- package/dist/vue2/types/components/EditableTable/bizHooks/usePagination.d.ts +12 -0
- package/dist/vue2/types/components/EditableTable/bizHooks/useRowBgColor.d.ts +15 -0
- package/dist/vue2/types/components/EditableTable/bizHooks/useViewSetting.d.ts +26 -0
- package/dist/vue2/types/components/EditableTable/features/bizColorSelect.vue.d.ts +25 -0
- package/dist/vue2/types/components/EditableTable/features/bizEditCell.vue.d.ts +21 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue.d.ts +21 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue.d.ts +21 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue.d.ts +21 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue.d.ts +21 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.d.ts +48 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue.d.ts +21 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue.d.ts +21 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue.d.ts +23 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/index.vue.d.ts +311 -0
- package/dist/vue2/types/components/EditableTable/features/bizTableOperatePopover.vue.d.ts +32 -0
- package/dist/vue2/types/components/EditableTable/features/bizViewSettingDialog.vue.d.ts +30 -0
- package/dist/vue2/types/components/EditableTable/index.vue.d.ts +472 -0
- package/dist/vue2/types/components/EditableTable/types/index.d.ts +235 -0
- package/dist/vue2/types/components/Ellipsis/MultilineEllipsis.vue.d.ts +91 -0
- package/dist/vue2/types/components/Ellipsis/index.vue.d.ts +89 -0
- package/dist/vue2/types/components/LxTable/index.vue.d.ts +2 -0
- package/dist/vue2/types/components/PopoverForm/index.vue.d.ts +50 -0
- package/dist/vue2/types/components/SearchForm/index.vue.d.ts +116 -0
- package/dist/vue2/types/components/SearchForm/types/index.d.ts +65 -0
- package/dist/vue2/types/components/SearchSelect/index.vue.d.ts +53 -0
- package/dist/vue2/types/components/helper.d.ts +8 -0
- package/dist/vue2/types/components/index.d.ts +12 -0
- package/dist/vue2/types/components/singleMessage/index.d.ts +4 -0
- package/dist/vue2/types/vue2/index.d.ts +1363 -0
- package/dist/vue3/index.css +1 -0
- package/dist/vue3/index.mjs +2306 -0
- package/dist/vue3/index.mjs.map +1 -0
- package/dist/vue3/types/components/EditableTable/features/bizColorSelect.vue.d.ts +31 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue.d.ts +23 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue.d.ts +23 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue.d.ts +23 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue.d.ts +23 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.d.ts +48 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue.d.ts +23 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue.d.ts +23 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue.d.ts +25 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/index.vue.d.ts +77 -0
- package/dist/vue3/types/components/EditableTable/features/bizTableOperatePopover.vue.d.ts +36 -0
- package/dist/vue3/types/components/EditableTable/features/bizViewSettingDialog.vue.d.ts +35 -0
- package/dist/vue3/types/components/EditableTable/hooks/index.d.ts +9 -0
- package/dist/vue3/types/components/EditableTable/hooks/useCellHover.d.ts +19 -0
- package/dist/vue3/types/components/EditableTable/hooks/useColumnHeaderOperation.d.ts +37 -0
- package/dist/vue3/types/components/EditableTable/hooks/useDefaultOperation.d.ts +22 -0
- package/dist/vue3/types/components/EditableTable/hooks/useDragSort.d.ts +15 -0
- package/dist/vue3/types/components/EditableTable/hooks/usePagination.d.ts +12 -0
- package/dist/vue3/types/components/EditableTable/hooks/useRowBgColor.d.ts +18 -0
- package/dist/vue3/types/components/EditableTable/hooks/useRowEdit.d.ts +14 -0
- package/dist/vue3/types/components/EditableTable/hooks/useTableRender.d.ts +41 -0
- package/dist/vue3/types/components/EditableTable/hooks/useViewSetting.d.ts +26 -0
- package/dist/vue3/types/components/EditableTable/index.vue.d.ts +4478 -0
- package/dist/vue3/types/components/EditableTable/types.d.ts +419 -0
- package/dist/vue3/types/components/helper.d.ts +8 -0
- package/dist/vue3/types/index.d.ts +7 -0
- package/dist/vue3/types/stories/EditableTable.fake.d.ts +33 -0
- package/dist/vue3/types/stories/EditableTable.hook.d.ts +12 -0
- package/dist/vue3/types/stories/EditableTable.stories.d.ts +18 -0
- package/package.json +38 -8
- package/src/components/AddMembers/index.vue +0 -149
- package/src/components/AuditSteps/index.vue +0 -140
- package/src/components/DemoComponent/index.vue +0 -21
- package/src/components/EditableTable/README.md +0 -147
- package/src/components/EditableTable/bizHooks/useCellHover.ts +0 -72
- package/src/components/EditableTable/bizHooks/useColumnHeaderOperation.ts +0 -339
- package/src/components/EditableTable/bizHooks/useDefaultOperation.ts +0 -96
- package/src/components/EditableTable/bizHooks/useDragSort.ts +0 -291
- package/src/components/EditableTable/bizHooks/usePagination.ts +0 -31
- package/src/components/EditableTable/bizHooks/useRowBgColor.ts +0 -44
- package/src/components/EditableTable/bizHooks/useViewSetting.ts +0 -206
- package/src/components/EditableTable/features/bizColorSelect.vue +0 -63
- package/src/components/EditableTable/features/bizEditCell.vue +0 -44
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue +0 -40
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue +0 -56
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue +0 -94
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue +0 -26
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.ts +0 -131
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue +0 -115
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue +0 -39
- package/src/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue +0 -50
- package/src/components/EditableTable/features/bizTableHeaderPopover/index.vue +0 -160
- package/src/components/EditableTable/features/bizTableOperatePopover.vue +0 -67
- package/src/components/EditableTable/features/bizViewSettingDialog.vue +0 -137
- package/src/components/EditableTable/index.less +0 -820
- package/src/components/EditableTable/index.vue +0 -681
- package/src/components/EditableTable/pin-top.png +0 -0
- package/src/components/EditableTable/types/index.ts +0 -212
- package/src/components/Ellipsis/MultilineEllipsis.vue +0 -141
- package/src/components/Ellipsis/index.vue +0 -119
- package/src/components/LxTable/index.vue +0 -296
- package/src/components/PopoverForm/index.vue +0 -66
- package/src/components/SearchForm/index.vue +0 -262
- package/src/components/SearchForm/types/index.ts +0 -81
- package/src/components/SearchSelect/index.vue +0 -153
- package/src/components/helper.ts +0 -37
- package/src/components/index.ts +0 -24
- package/src/components/singleMessage/index.ts +0 -44
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<!-- 复选框 -->
|
|
2
|
-
<template>
|
|
3
|
-
<div class="editable-table-sort-filter__filter">
|
|
4
|
-
<div class="editable-table-sort-filter__filter-title">
|
|
5
|
-
{{ config.label || '筛选' }}
|
|
6
|
-
</div>
|
|
7
|
-
<el-checkbox-group
|
|
8
|
-
class="editable-table-sort-filter__filter-checkbox-group"
|
|
9
|
-
:value="tempFilteredValue[config.prop]"
|
|
10
|
-
@input="val => emit('update:tempFilteredValue', config.prop, val)"
|
|
11
|
-
>
|
|
12
|
-
<el-checkbox
|
|
13
|
-
v-for="item in config.options"
|
|
14
|
-
:key="item.value"
|
|
15
|
-
:label="item.value"
|
|
16
|
-
:title="item.text"
|
|
17
|
-
class="editable-table-sort-filter__filter-checkbox"
|
|
18
|
-
>
|
|
19
|
-
{{ item.text }}
|
|
20
|
-
</el-checkbox>
|
|
21
|
-
</el-checkbox-group>
|
|
22
|
-
</div>
|
|
23
|
-
</template>
|
|
24
|
-
|
|
25
|
-
<script setup lang="ts">
|
|
26
|
-
import { IFilterSelect } from '../../types';
|
|
27
|
-
|
|
28
|
-
defineProps<{
|
|
29
|
-
config: IFilterSelect
|
|
30
|
-
tempFilteredValue: Record<string, string>
|
|
31
|
-
}>()
|
|
32
|
-
|
|
33
|
-
const emit = defineEmits<{
|
|
34
|
-
(e: 'update:tempFilteredValue', key: string, value: string): void
|
|
35
|
-
}>()
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
<style scoped lang="less">
|
|
39
|
-
|
|
40
|
-
</style>
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
<!-- 单选框 -->
|
|
2
|
-
<template>
|
|
3
|
-
<div class="editable-table-sort-filter__filter">
|
|
4
|
-
<div class="editable-table-sort-filter__filter-title">
|
|
5
|
-
{{ config.label || '筛选' }}
|
|
6
|
-
</div>
|
|
7
|
-
<el-radio-group
|
|
8
|
-
style="display: flex;flex-direction: column;gap: 6px;"
|
|
9
|
-
:value="tempFilteredValue[config.prop]"
|
|
10
|
-
@input="val => emit('update:tempFilteredValue', config.prop, val)"
|
|
11
|
-
>
|
|
12
|
-
<el-radio
|
|
13
|
-
v-for="item in config.options"
|
|
14
|
-
:key="item.value"
|
|
15
|
-
:label="item.value"
|
|
16
|
-
:title="item.text"
|
|
17
|
-
>
|
|
18
|
-
<span class="color-option">
|
|
19
|
-
<span
|
|
20
|
-
class="icon"
|
|
21
|
-
:style="{ background: item.color }"
|
|
22
|
-
/>
|
|
23
|
-
<span>{{ item.text }}</span>
|
|
24
|
-
</span>
|
|
25
|
-
</el-radio>
|
|
26
|
-
</el-radio-group>
|
|
27
|
-
</div>
|
|
28
|
-
</template>
|
|
29
|
-
|
|
30
|
-
<script setup lang="ts">
|
|
31
|
-
import { IFilterColorRadio } from '../../types';
|
|
32
|
-
|
|
33
|
-
defineProps<{
|
|
34
|
-
config: IFilterColorRadio
|
|
35
|
-
tempFilteredValue: Record<string, string>
|
|
36
|
-
}>()
|
|
37
|
-
|
|
38
|
-
const emit = defineEmits<{
|
|
39
|
-
(e: 'update:tempFilteredValue', key: string, value: string): void
|
|
40
|
-
}>()
|
|
41
|
-
</script>
|
|
42
|
-
|
|
43
|
-
<style scoped lang="less">
|
|
44
|
-
.color-option {
|
|
45
|
-
display: flex;
|
|
46
|
-
align-items: center;
|
|
47
|
-
|
|
48
|
-
.icon {
|
|
49
|
-
border-radius: 50%;
|
|
50
|
-
width: 1em;
|
|
51
|
-
height: 1em;
|
|
52
|
-
margin-right: 0.3em;
|
|
53
|
-
border: 1px solid #ccc;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
</style>
|
package/src/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
<!-- 日期范围选择(分开的两个日期选择器) -->
|
|
2
|
-
<template>
|
|
3
|
-
<div class="editable-table-sort-filter__sort">
|
|
4
|
-
<div class="editable-table-sort-filter__search-title">
|
|
5
|
-
{{ config.label || '筛选' }}
|
|
6
|
-
</div>
|
|
7
|
-
<div class="editable-table-sort-filter__date-picker-content">
|
|
8
|
-
<el-date-picker
|
|
9
|
-
v-bind="datePickerCommonProps"
|
|
10
|
-
placeholder="开始日期"
|
|
11
|
-
:value="tempFilteredValue[config.prop[0]]"
|
|
12
|
-
:picker-options="pickerStartOptions"
|
|
13
|
-
@input="handleStartDateChange"
|
|
14
|
-
/>
|
|
15
|
-
<el-date-picker
|
|
16
|
-
v-bind="datePickerCommonProps"
|
|
17
|
-
placeholder="结束日期"
|
|
18
|
-
:value="tempFilteredValue[config.prop[1]]"
|
|
19
|
-
:picker-options="pickerEndOptions"
|
|
20
|
-
@input="handleEndDateChange"
|
|
21
|
-
/>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
</template>
|
|
25
|
-
|
|
26
|
-
<script setup lang="ts">
|
|
27
|
-
import { IFilterDoubleDatePicker, IFilterDoubleDatePickerLimit } from '../../types';
|
|
28
|
-
import { genStartDateDisabledOptions, genEndDateDisabledOptions } from '../../../helper';
|
|
29
|
-
import { computed, toRefs } from 'vue';
|
|
30
|
-
|
|
31
|
-
interface IFilterDoubleDatePickerProps {
|
|
32
|
-
/** 日期选择器配置 */
|
|
33
|
-
config: IFilterDoubleDatePicker | IFilterDoubleDatePickerLimit;
|
|
34
|
-
/** 临时筛选值 */
|
|
35
|
-
tempFilteredValue: Record<string, string>;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const props = defineProps<IFilterDoubleDatePickerProps>();
|
|
39
|
-
const { config, tempFilteredValue } = toRefs(props)
|
|
40
|
-
|
|
41
|
-
const emit = defineEmits<{
|
|
42
|
-
(e: 'update:tempFilteredValue', key: string, value: string): void;
|
|
43
|
-
}>();
|
|
44
|
-
|
|
45
|
-
/** 日期选择器通用配置 */
|
|
46
|
-
const datePickerCommonProps = {
|
|
47
|
-
valueFormat: 'yyyy-MM-dd',
|
|
48
|
-
format: 'yyyy-MM-dd',
|
|
49
|
-
type: 'date',
|
|
50
|
-
size: 'small',
|
|
51
|
-
editable: false,
|
|
52
|
-
} as const;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const pickerStartOptions = computed(() => {
|
|
56
|
-
// 自定义禁用选项优先级最高
|
|
57
|
-
if ('pickerOptions' in config.value && config.value.pickerOptions?.start) {
|
|
58
|
-
return config.value.pickerOptions.start;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// 限制天数范围 自动生成禁用选项
|
|
62
|
-
if ('limit' in config.value) {
|
|
63
|
-
return genStartDateDisabledOptions(tempFilteredValue.value[config.value.prop[1]], config.value.limit);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// 默认(只限制起止时间,不限制范围)
|
|
67
|
-
return genStartDateDisabledOptions(tempFilteredValue.value[config.value.prop[1]]);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
const pickerEndOptions = computed(() => {
|
|
71
|
-
// 自定义禁用选项优先级最高
|
|
72
|
-
if ('pickerOptions' in config.value && config.value.pickerOptions?.end) {
|
|
73
|
-
return config.value.pickerOptions.end;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// 限制天数范围 自动生成禁用选项
|
|
77
|
-
if ('limit' in config.value) {
|
|
78
|
-
return genEndDateDisabledOptions(tempFilteredValue.value[config.value.prop[0]], config.value.limit);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// 默认(只限制起止时间,不限制范围)
|
|
82
|
-
return genEndDateDisabledOptions(tempFilteredValue.value[config.value.prop[0]]);
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
/** 处理开始日期变更 */
|
|
86
|
-
const handleStartDateChange = (val: string | null) => {
|
|
87
|
-
emit('update:tempFilteredValue', config.value.prop[0], val || '');
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
/** 处理结束日期变更 */
|
|
91
|
-
const handleEndDateChange = (val: string | null) => {
|
|
92
|
-
emit('update:tempFilteredValue', config.value.prop[1], val || '');
|
|
93
|
-
};
|
|
94
|
-
</script>
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="editable-table-sort-filter__search">
|
|
3
|
-
<div class="editable-table-sort-filter__search-title">
|
|
4
|
-
{{ config.label || '搜索' }}
|
|
5
|
-
</div>
|
|
6
|
-
<el-input
|
|
7
|
-
class="editable-table-sort-filter__search-input"
|
|
8
|
-
:placeholder="config.placeholder || '请输入内容'"
|
|
9
|
-
:value="tempFilteredValue[config.prop]"
|
|
10
|
-
@input="val => emit('update:tempFilteredValue', config.prop, val)"
|
|
11
|
-
/>
|
|
12
|
-
</div>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script setup lang="ts">
|
|
16
|
-
import { IFilterInput } from '../../types';
|
|
17
|
-
|
|
18
|
-
defineProps<{
|
|
19
|
-
config: IFilterInput
|
|
20
|
-
tempFilteredValue: Record<string, string>
|
|
21
|
-
}>()
|
|
22
|
-
|
|
23
|
-
const emit = defineEmits<{
|
|
24
|
-
(e: 'update:tempFilteredValue', key: string, value: string): void
|
|
25
|
-
}>()
|
|
26
|
-
</script>
|
package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.ts
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import dayjs from 'dayjs';
|
|
2
|
-
|
|
3
|
-
// 月份配置 - 月份对应的天数
|
|
4
|
-
const monthConfig = [
|
|
5
|
-
{ month: 1, day: 31 },
|
|
6
|
-
{ month: 2, day: 29 },
|
|
7
|
-
{ month: 3, day: 31 },
|
|
8
|
-
{ month: 4, day: 30 },
|
|
9
|
-
{ month: 5, day: 31 },
|
|
10
|
-
{ month: 6, day: 30 },
|
|
11
|
-
{ month: 7, day: 31 },
|
|
12
|
-
{ month: 8, day: 31 },
|
|
13
|
-
{ month: 9, day: 30 },
|
|
14
|
-
{ month: 10, day: 31 },
|
|
15
|
-
{ month: 11, day: 30 },
|
|
16
|
-
{ month: 12, day: 31 },
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* 组装极联选择组件默认选项
|
|
21
|
-
* example: [
|
|
22
|
-
* {
|
|
23
|
-
* value: '1',
|
|
24
|
-
* label: '1月',
|
|
25
|
-
* children: [
|
|
26
|
-
* { value: '1', label: '1日' },
|
|
27
|
-
* ... // 1月份的每一天
|
|
28
|
-
* ]
|
|
29
|
-
* },
|
|
30
|
-
* ... // 其他月份的选项
|
|
31
|
-
* ]
|
|
32
|
-
*/
|
|
33
|
-
export function getMonthDayPickerDefaultOptions() {
|
|
34
|
-
return monthConfig.map(
|
|
35
|
-
(item) => ({
|
|
36
|
-
value: item.month.toString(),
|
|
37
|
-
label: `${ item.month }月`,
|
|
38
|
-
children: Array.from(
|
|
39
|
-
{ length: item.day },
|
|
40
|
-
(_, i) => (
|
|
41
|
-
{ value: `${ i + 1 }`, label: `${ i + 1 }日` }
|
|
42
|
-
)
|
|
43
|
-
)
|
|
44
|
-
})
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* 组装日期范围级联选择组件禁用选项
|
|
50
|
-
* @param date 日期 - 级联选择组件值
|
|
51
|
-
* @param isStartDate 区分传递的date是 开始日期 / 结束日期
|
|
52
|
-
* @param digits 时间范围 n个月
|
|
53
|
-
*/
|
|
54
|
-
export function disableOutOfRangeOptions({
|
|
55
|
-
date = [],
|
|
56
|
-
isStartDate = false,
|
|
57
|
-
digits = 3
|
|
58
|
-
}: { date: string[], isStartDate?: boolean, digits: number }) {
|
|
59
|
-
// 写死一个闰年年份 仅用于比较时间
|
|
60
|
-
// 如果非闰年 dayjs('year-02-29') 会输出 year-3-1 导致日期范围选择器出错
|
|
61
|
-
const year = 2024;
|
|
62
|
-
const baseMonthDay = 30;
|
|
63
|
-
const options = getMonthDayPickerDefaultOptions();
|
|
64
|
-
|
|
65
|
-
return options.map(
|
|
66
|
-
(month) => {
|
|
67
|
-
const children = month.children.map(
|
|
68
|
-
(day) => {
|
|
69
|
-
// 组装日期 - 当前这个选项对应的完整日期
|
|
70
|
-
const currentDate = dayjs([year, month.value, day.value].join('-'));
|
|
71
|
-
|
|
72
|
-
// 是否需要禁用当前日期
|
|
73
|
-
let disabled = false;
|
|
74
|
-
|
|
75
|
-
// 如果有传入日期,则判断是否在禁用日期范围内
|
|
76
|
-
if (date.length > 0) {
|
|
77
|
-
// 组装日期 - 传入日期对应的完整日期
|
|
78
|
-
const baseDate = dayjs([year, ...date].join('-'));
|
|
79
|
-
|
|
80
|
-
// 如果是开始时间,则结束时间范围为 baseDate + digits
|
|
81
|
-
// 如果是结束时间,则开始时间范围为 baseDate - digits
|
|
82
|
-
if (isStartDate) {
|
|
83
|
-
const maxDate = baseDate.add(digits * baseMonthDay - 1, 'day');
|
|
84
|
-
// 推算时间范围超过12月31号,结束时间可选年初时间
|
|
85
|
-
if (maxDate.year() > year) {
|
|
86
|
-
disabled = currentDate.isAfter(maxDate.subtract(366, 'day'), 'day') && currentDate.isBefore(baseDate, 'day');
|
|
87
|
-
} else {
|
|
88
|
-
disabled = currentDate.isAfter(maxDate, 'day') || currentDate.isBefore(baseDate, 'day');
|
|
89
|
-
}
|
|
90
|
-
} else {
|
|
91
|
-
const minDate = baseDate.subtract(digits * baseMonthDay - 1, 'day');
|
|
92
|
-
// 推算时间范围在1月1号前,开始时间可选年末时间
|
|
93
|
-
if (minDate.year() < year) {
|
|
94
|
-
disabled = currentDate.isBefore(minDate.add(366, 'day'), 'day') && currentDate.isAfter(baseDate, 'day');
|
|
95
|
-
} else {
|
|
96
|
-
disabled = currentDate.isBefore(minDate, 'day') || currentDate.isAfter(baseDate, 'day');
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return {
|
|
102
|
-
...day,
|
|
103
|
-
disabled
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
);
|
|
107
|
-
|
|
108
|
-
// 如果当前月份每天都是禁用日期,则整个月份禁用
|
|
109
|
-
const disabled = children.every((day) => day.disabled);
|
|
110
|
-
|
|
111
|
-
return {
|
|
112
|
-
...month,
|
|
113
|
-
disabled,
|
|
114
|
-
children
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* 格式化月日级联选择组件值 MM-dd
|
|
122
|
-
* @param date 日期 - 级联选择组件值
|
|
123
|
-
* @returns 格式化后的日期字符串
|
|
124
|
-
*/
|
|
125
|
-
export function formatMonthDayPickerValue(date: string[]) {
|
|
126
|
-
return date
|
|
127
|
-
.map(
|
|
128
|
-
(str) => str.padStart(2, '0')
|
|
129
|
-
)
|
|
130
|
-
.join('-');
|
|
131
|
-
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
<!-- 月/日选择器 -->
|
|
2
|
-
<template>
|
|
3
|
-
<div class="editable-table-sort-filter__sort">
|
|
4
|
-
<div class="editable-table-sort-filter__search-title">
|
|
5
|
-
{{ config.label || '筛选' }}
|
|
6
|
-
</div>
|
|
7
|
-
<div class="editable-table-sort-filter__date-picker-content">
|
|
8
|
-
<el-cascader
|
|
9
|
-
clearable
|
|
10
|
-
:value="startDate"
|
|
11
|
-
separator=""
|
|
12
|
-
size="small"
|
|
13
|
-
placeholder="开始日期"
|
|
14
|
-
popper-class="month-day-picker"
|
|
15
|
-
:options="startDateOptions"
|
|
16
|
-
@change="value => handleDateChange(config.prop[0], value)"
|
|
17
|
-
/>
|
|
18
|
-
<el-cascader
|
|
19
|
-
clearable
|
|
20
|
-
:value="endDate"
|
|
21
|
-
separator=""
|
|
22
|
-
size="small"
|
|
23
|
-
placeholder="结束日期"
|
|
24
|
-
popper-class="month-day-picker"
|
|
25
|
-
:options="endDateOptions"
|
|
26
|
-
@change="value => handleDateChange(config.prop[1], value)"
|
|
27
|
-
/>
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
</template>
|
|
31
|
-
<script setup lang="ts">
|
|
32
|
-
import {
|
|
33
|
-
disableOutOfRangeOptions, formatMonthDayPickerValue,
|
|
34
|
-
getMonthDayPickerDefaultOptions
|
|
35
|
-
} from './BizMonthDayPicker.helper';
|
|
36
|
-
import { computed, toRefs } from 'vue';
|
|
37
|
-
import { IFilterMonthDayPicker } from '../../types';
|
|
38
|
-
|
|
39
|
-
const props = defineProps<{
|
|
40
|
-
config: IFilterMonthDayPicker
|
|
41
|
-
tempFilteredValue: Record<string, string>
|
|
42
|
-
}>()
|
|
43
|
-
const { config, tempFilteredValue } = toRefs(props)
|
|
44
|
-
|
|
45
|
-
const emit = defineEmits<{
|
|
46
|
-
(e: 'update:tempFilteredValue', key: string, value: string): void
|
|
47
|
-
}>()
|
|
48
|
-
|
|
49
|
-
const formatDate = (date: string) => {
|
|
50
|
-
if (date) {
|
|
51
|
-
return date
|
|
52
|
-
.split('-')
|
|
53
|
-
// 01 -> 1
|
|
54
|
-
.map(
|
|
55
|
-
(v) => String(Number(v))
|
|
56
|
-
)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return []
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const startDate = computed(() => {
|
|
63
|
-
const { prop } = config.value;
|
|
64
|
-
return formatDate(tempFilteredValue.value[prop[0]]);
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
const endDate = computed(() => {
|
|
68
|
-
const { prop } = config.value;
|
|
69
|
-
return formatDate(tempFilteredValue.value[prop[1]]);
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
// 开始日期范围限制
|
|
73
|
-
const startDateOptions = computed(
|
|
74
|
-
() => {
|
|
75
|
-
if (endDate.value.length === 0) {
|
|
76
|
-
return getMonthDayPickerDefaultOptions();
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return disableOutOfRangeOptions({
|
|
80
|
-
date: endDate.value,
|
|
81
|
-
isStartDate: false,
|
|
82
|
-
digits: config.value.limit
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
// 结束日期范围限制
|
|
88
|
-
const endDateOptions = computed(
|
|
89
|
-
() => {
|
|
90
|
-
if (startDate.value.length === 0) {
|
|
91
|
-
return getMonthDayPickerDefaultOptions();
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return disableOutOfRangeOptions({
|
|
95
|
-
date: startDate.value,
|
|
96
|
-
isStartDate: true,
|
|
97
|
-
digits: config.value.limit
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* 选择时间更改统一回调
|
|
104
|
-
*/
|
|
105
|
-
const handleDateChange = (key: string, value: string[]) => {
|
|
106
|
-
const currentValue = value.length === 0
|
|
107
|
-
? ''
|
|
108
|
-
: formatMonthDayPickerValue(value)
|
|
109
|
-
emit('update:tempFilteredValue', key, currentValue);
|
|
110
|
-
}
|
|
111
|
-
</script>
|
|
112
|
-
|
|
113
|
-
<style scoped lang="less">
|
|
114
|
-
|
|
115
|
-
</style>
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
<!-- 单选框 -->
|
|
2
|
-
<template>
|
|
3
|
-
<div class="editable-table-sort-filter__filter">
|
|
4
|
-
<div class="editable-table-sort-filter__filter-title">
|
|
5
|
-
{{ config.label || '筛选' }}
|
|
6
|
-
</div>
|
|
7
|
-
<el-radio-group
|
|
8
|
-
style="display: flex;flex-direction: column;gap: 6px;"
|
|
9
|
-
:value="tempFilteredValue[config.prop]"
|
|
10
|
-
@input="val => emit('update:tempFilteredValue', config.prop, val)"
|
|
11
|
-
>
|
|
12
|
-
<el-radio
|
|
13
|
-
v-for="item in config.options"
|
|
14
|
-
:key="item.value"
|
|
15
|
-
:label="item.value"
|
|
16
|
-
:title="item.text"
|
|
17
|
-
>
|
|
18
|
-
{{ item.text }}
|
|
19
|
-
</el-radio>
|
|
20
|
-
</el-radio-group>
|
|
21
|
-
</div>
|
|
22
|
-
</template>
|
|
23
|
-
|
|
24
|
-
<script setup lang="ts">
|
|
25
|
-
import { IFilterSelect } from '../../types';
|
|
26
|
-
|
|
27
|
-
defineProps<{
|
|
28
|
-
config: IFilterSelect
|
|
29
|
-
tempFilteredValue: Record<string, string>
|
|
30
|
-
}>()
|
|
31
|
-
|
|
32
|
-
const emit = defineEmits<{
|
|
33
|
-
(e: 'update:tempFilteredValue', key: string, value: string): void
|
|
34
|
-
}>()
|
|
35
|
-
</script>
|
|
36
|
-
|
|
37
|
-
<style scoped lang="less">
|
|
38
|
-
|
|
39
|
-
</style>
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="editable-table-sort-filter__sort">
|
|
3
|
-
<div
|
|
4
|
-
v-for="item in sortConfigs"
|
|
5
|
-
:key="item.prop"
|
|
6
|
-
>
|
|
7
|
-
<div class="editable-table-sort-filter__sort-title">
|
|
8
|
-
{{ item.label || '排序' }}
|
|
9
|
-
</div>
|
|
10
|
-
<div class="editable-table-sort-filter__sort-btns">
|
|
11
|
-
<el-button
|
|
12
|
-
:class="['editable-table-sort-filter__sort-btn', checkActiveProp('ascending', item.prop) && 'editable-table-sort-filter__sort-btn--active']"
|
|
13
|
-
@click="() => emit('update:sort', 'ascending', item.prop)"
|
|
14
|
-
>
|
|
15
|
-
升序
|
|
16
|
-
</el-button>
|
|
17
|
-
<el-button
|
|
18
|
-
:class="['editable-table-sort-filter__sort-btn', checkActiveProp('descending', item.prop) && 'editable-table-sort-filter__sort-btn--active']"
|
|
19
|
-
@click="() => emit('update:sort', 'descending', item.prop)"
|
|
20
|
-
>
|
|
21
|
-
降序
|
|
22
|
-
</el-button>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
</template>
|
|
27
|
-
|
|
28
|
-
<script setup lang="ts">
|
|
29
|
-
import { computed } from 'vue';
|
|
30
|
-
import { IColumnConfig } from '../../types';
|
|
31
|
-
|
|
32
|
-
const props = defineProps<{
|
|
33
|
-
column: IColumnConfig
|
|
34
|
-
tempSortType: 'ascending' | 'descending' | ''
|
|
35
|
-
tempSortProp: string
|
|
36
|
-
}>()
|
|
37
|
-
|
|
38
|
-
const emit = defineEmits<{
|
|
39
|
-
(e: 'update:sort', type: 'ascending' | 'descending', prop: string): void
|
|
40
|
-
}>()
|
|
41
|
-
|
|
42
|
-
const checkActiveProp = (type: 'ascending' | 'descending', prop: string) => {
|
|
43
|
-
return props.tempSortType === type && props.tempSortProp === prop
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const sortConfigs = computed(() => {
|
|
47
|
-
if (Array.isArray(props.column._sortable)) return props.column._sortable
|
|
48
|
-
return [{ ...props.column, label: '排序' }]
|
|
49
|
-
})
|
|
50
|
-
</script>
|