diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md index 075327186f5f28ff8719fee37aecddeac5d5ba3d..a7c50a64f79a66c9efaddcbab68153c6bacc08f7 100644 --- a/CHANGELOG.zh_CN.md +++ b/CHANGELOG.zh_CN.md @@ -8,15 +8,15 @@ ### 🐛 Bug Fixes -- **Table** - - 修复滚动条样式问题 +- **BasicTable** + - 修复滚动条样式问题(移除了滚动样式补丁) - 修复树形表格的带有展开图标的单元格的内容对齐问题 - 新增`headerTop`插槽 - 修复操作列的按钮在 disabled 状态下的颜色显示 -- **AppSearch** 修复可能会搜索隐藏菜单的问题 - **TableAction** - - 仅在 action.tooltip 存在的情况下 才包裹 Tooltip 组件 + - 仅在 `action.tooltip`存在的情况下 才创建 Tooltip 组件 - 修复组件内的圆形按钮内容没有居中的问题 +- **AppSearch** 修复可能会搜索隐藏菜单的问题 - **BasicUpload** 修复处理非`array`值时报错的问题 - **Form** 修复`FormItem`的`suffix`插槽样式问题 - **Menu** @@ -27,6 +27,7 @@ - **Markdown** 修复初始化异常以及不能正确地动态设置 value 的问题 - **Modal** 确保 props 正确被传递 - **MultipleTab** 修复可能会意外创建登录路由标签的问题 +- **BasicTree** 修复搜索功能可能导致`checkedKeys`丢失的问题 - **其它** - 修复菜单默认折叠的配置不起作用的问题 - 修复`safari`浏览器报错导致网站打不开 diff --git a/src/components/Tree/src/Tree.vue b/src/components/Tree/src/Tree.vue index 36bb391b157c502eca828ea55b07aaefaf8a2818..5d7c962d689ac7c5ea1d34f10c4d43f703596c6d 100644 --- a/src/components/Tree/src/Tree.vue +++ b/src/components/Tree/src/Tree.vue @@ -18,7 +18,7 @@ import TreeHeader from './TreeHeader.vue'; import { ScrollContainer } from '/@/components/Container'; - import { omit, get } from 'lodash-es'; + import { omit, get, cloneDeep, concat, uniq } from 'lodash-es'; import { isBoolean, isFunction } from '/@/utils/is'; import { extendSlots, getSlot } from '/@/utils/helper/tsxHelper'; import { filter } from '/@/utils/helper/treeHelper'; @@ -56,6 +56,25 @@ searchData: [] as TreeItem[], }); + const copyState = { + checkedKeys: [], + }; + + watch( + () => searchState.startSearch, + (newVal, oldVal) => { + if (newVal && !oldVal) { + // before search, save current checkedKeys + copyState.checkedKeys = cloneDeep(state.checkedKeys); + } else if (!newVal && oldVal) { + // after search, restore checkedKeys + state.checkedKeys = uniq(concat(state.checkedKeys, copyState.checkedKeys)); + copyState.checkedKeys = []; + } + }, + { immediate: true } + ); + const treeDataRef = ref([]); const [createContextMenu] = useContextMenu();