fix: 修复当一个页面存在多个RePureTableBar组件,列无法正常拖动问题

This commit is contained in:
xiaoxian521 2024-04-15 12:52:01 +08:00
parent a5b57908ec
commit ea36e260e2

View File

@ -1,7 +1,15 @@
import Sortable from "sortablejs"; import Sortable from "sortablejs";
import { transformI18n } from "@/plugins/i18n"; import { transformI18n } from "@/plugins/i18n";
import { useEpThemeStoreHook } from "@/store/modules/epTheme"; import { useEpThemeStoreHook } from "@/store/modules/epTheme";
import { defineComponent, ref, computed, type PropType, nextTick } from "vue"; import {
type PropType,
ref,
unref,
computed,
nextTick,
defineComponent,
getCurrentInstance
} from "vue";
import { import {
delay, delay,
cloneDeep, cloneDeep,
@ -34,6 +42,10 @@ const props = {
isExpandAll: { isExpandAll: {
type: Boolean, type: Boolean,
default: true default: true
},
tableKey: {
type: [String, Number] as PropType<string | number>,
default: "0"
} }
}; };
@ -46,6 +58,7 @@ export default defineComponent({
const loading = ref(false); const loading = ref(false);
const checkAll = ref(true); const checkAll = ref(true);
const isIndeterminate = ref(false); const isIndeterminate = ref(false);
const instance = getCurrentInstance()!;
const isExpandAll = ref(props.isExpandAll); const isExpandAll = ref(props.isExpandAll);
const filterColumns = cloneDeep(props?.columns).filter(column => const filterColumns = cloneDeep(props?.columns).filter(column =>
isBoolean(column?.hide) isBoolean(column?.hide)
@ -170,9 +183,9 @@ export default defineComponent({
const rowDrop = (event: { preventDefault: () => void }) => { const rowDrop = (event: { preventDefault: () => void }) => {
event.preventDefault(); event.preventDefault();
nextTick(() => { nextTick(() => {
const wrapper: HTMLElement = document.querySelector( const wrapper: HTMLElement = (
".el-checkbox-group>div" instance?.proxy?.$refs[`GroupRef${unref(props.tableKey)}`] as any
); ).$el.firstElementChild;
Sortable.create(wrapper, { Sortable.create(wrapper, {
animation: 300, animation: 300,
handle: ".drag-btn", handle: ".drag-btn",
@ -299,6 +312,7 @@ export default defineComponent({
<div class="pt-[6px] pl-[11px]"> <div class="pt-[6px] pl-[11px]">
<el-scrollbar max-height="36vh"> <el-scrollbar max-height="36vh">
<el-checkbox-group <el-checkbox-group
ref={`GroupRef${unref(props.tableKey)}`}
modelValue={checkedColumns.value} modelValue={checkedColumns.value}
onChange={value => handleCheckedColumnsChange(value)} onChange={value => handleCheckedColumnsChange(value)}
> >