1
0
mirror of synced 2025-12-10 07:58:13 +08:00

releases 4.7.55

This commit is contained in:
xuliangzhan
2024-07-18 17:21:48 +08:00
parent dbbc904a4f
commit e60b66124a
4 changed files with 75 additions and 31 deletions

View File

@@ -9,7 +9,7 @@ import type { TableFilterMethods, TableFilterPrivateMethods } from '../../../../
const { renderer, hooks } = VxeUI
const tableFilterMethodKeys: (keyof TableFilterMethods)[] = ['setFilter', 'clearFilter', 'getCheckedFilters']
const tableFilterMethodKeys: (keyof TableFilterMethods)[] = ['openFilter', 'setFilter', 'clearFilter', 'getCheckedFilters', 'updateFilterOptionStatus']
hooks.add('tableFilterModule', {
setupTable ($xeTable) {
@@ -17,6 +17,43 @@ hooks.add('tableFilterModule', {
const { refTableHeader, refTableBody, refTableFilter } = $xeTable.getRefMaps()
const { computeFilterOpts, computeMouseOpts } = $xeTable.getComputeMaps()
// 确认筛选
const confirmFilter = (evnt: Event) => {
const { filterStore } = reactData
filterStore.options.forEach((option: any) => {
option.checked = option._checked
})
$xeTable.confirmFilterEvent(evnt)
}
// (单选)筛选发生改变
const changeRadioOption = (evnt: Event, checked: boolean, item: any) => {
const { filterStore } = reactData
filterStore.options.forEach((option: any) => {
option._checked = false
})
item._checked = checked
$xeTable.checkFilterOptions()
confirmFilter(evnt)
}
// (多选)筛选发生改变
const changeMultipleOption = (evnt: Event, checked: boolean, item: any) => {
item._checked = checked
$xeTable.checkFilterOptions()
}
/**
* 重置筛选
* 当筛选面板中的重置按钮被按下时触发
* @param {Event} evnt 事件
*/
const resetFilter = (evnt: Event) => {
const { filterStore } = reactData
$xeTable.handleClearFilter(filterStore.column)
$xeTable.confirmFilterEvent(evnt)
}
const filterPrivateMethods: TableFilterPrivateMethods = {
checkFilterOptions () {
const { filterStore } = reactData
@@ -187,7 +224,20 @@ hooks.add('tableFilterModule', {
// 存在滚动行为未结束情况
setTimeout(() => $xeTable.recalculate(), 50)
})
}
},
handleFilterChangeRadioOption: changeRadioOption,
handleFilterChangeMultipleOption: changeMultipleOption,
// 筛选发生改变
handleFilterChangeOption (evnt: Event, checked: boolean, item: any) {
const { filterStore } = reactData
if (filterStore.multiple) {
changeMultipleOption(evnt, checked, item)
} else {
changeRadioOption(evnt, checked, item)
}
},
handleFilterConfirmFilter: confirmFilter,
handleFilterResetFilter: resetFilter
}
const filterMethods: TableFilterMethods = {
@@ -277,6 +327,11 @@ hooks.add('tableFilterModule', {
}
})
return filterList
},
updateFilterOptionStatus (item: any, checked: boolean) {
item._checked = checked
item.checked = checked
return nextTick()
}
}

View File

@@ -39,22 +39,12 @@ export default defineComponent({
*************************/
// 确认筛选
const confirmFilter = (evnt: Event) => {
const { filterStore } = props
filterStore.options.forEach((option: any) => {
option.checked = option._checked
})
$xeTable.confirmFilterEvent(evnt)
$xeTable.handleFilterConfirmFilter(evnt)
}
// (单选)筛选发生改变
const changeRadioOption = (evnt: Event, checked: boolean, item: any) => {
const { filterStore } = props
filterStore.options.forEach((option: any) => {
option._checked = false
})
item._checked = checked
$xeTable.checkFilterOptions()
confirmFilter(evnt)
$xeTable.handleFilterChangeRadioOption(evnt, checked, item)
}
/**
@@ -63,25 +53,17 @@ export default defineComponent({
* @param {Event} evnt 事件
*/
const resetFilter = (evnt: Event) => {
const { filterStore } = props
$xeTable.handleClearFilter(filterStore.column)
$xeTable.confirmFilterEvent(evnt)
$xeTable.handleFilterResetFilter(evnt)
}
// (多选)筛选发生改变
const changeMultipleOption = (evnt: Event, checked: boolean, item: any) => {
item._checked = checked
$xeTable.checkFilterOptions()
$xeTable.handleFilterChangeMultipleOption(evnt, checked, item)
}
// 筛选发生改变
const changeOption = (evnt: Event, checked: boolean, item: any) => {
const { filterStore } = props
if (filterStore.multiple) {
changeMultipleOption(evnt, checked, item)
} else {
changeRadioOption(evnt, checked, item)
}
$xeTable.handleFilterChangeOption(evnt, checked, item)
}
const changeAllOption = (evnt: Event, checked: boolean) => {

View File

@@ -441,6 +441,13 @@ function handleFilterMethod ({ option, row, column }: any) {
return cellValue == data
}
function handleInputFilterMethod ({ option, row, column }: any) {
const { data } = option
const cellValue = XEUtils.get(row, column.property)
/* eslint-disable eqeqeq */
return XEUtils.toValueString(cellValue).indexOf(data) > -1
}
function nativeSelectEditRender (renderOpts: any, params: any) {
return [
h('select', {
@@ -561,7 +568,7 @@ renderer.mixin({
renderEdit: nativeEditRender,
renderDefault: nativeEditRender,
renderFilter: nativeFilterRender,
defaultFilterMethod: handleFilterMethod
defaultFilterMethod: handleInputFilterMethod
},
textarea: {
autofocus: 'textarea',
@@ -614,7 +621,7 @@ renderer.mixin({
},
renderDefault: defaultEditRender,
renderFilter: defaultFilterRender,
defaultFilterMethod: handleFilterMethod
defaultFilterMethod: handleInputFilterMethod
},
VxeNumberInput: {
autofocus: '.vxe-number-input--inner',
@@ -635,7 +642,7 @@ renderer.mixin({
},
renderDefault: defaultEditRender,
renderFilter: defaultFilterRender,
defaultFilterMethod: handleFilterMethod
defaultFilterMethod: handleInputFilterMethod
},
VxeDatePicker: {
autofocus: '.vxe-date-picker--inner',
@@ -750,7 +757,7 @@ renderer.mixin({
},
renderDefault: oldEditRender,
renderFilter: oldFilterRender,
defaultFilterMethod: handleFilterMethod
defaultFilterMethod: handleInputFilterMethod
},
$textarea: {
autofocus: '.vxe-textarea--inner'