vue3使用AntDesign<a-table>左右拖拽列及下拉框新增自定义数据

1、左右拖拽列

安装依赖

pnpm install sortablejs

引入

import Sortable from 'sortablejs';
 onMounted(() => {
  const container = document.querySelector('.ant-table-thead > tr');
  new Sortable(container, {
    filter: '.ant-table-selection-column, .ant-table-cell-fix-right-first', // 忽略选择列和操作列
    handle: '.ant-table-cell',
    animation: 150,
    onStart:(evt) => {
      console.log('开始拖拽的时候')
    },
    onEnd: (evt) => {
      const { oldIndex, newIndex } = evt;
      if (oldIndex !== newIndex) {
        const movedItem = columns.value.splice(oldIndex-1, 1)[0]; // 这里减1是列表有选择框
        columns.value.splice(newIndex-1, 0, movedItem);
        localStorage.setItem('computedColumns', JSON.stringify(columns.value));
      }
    }
  });
});

以上基本上就能实现左右拖拽了,但是会有的问题,目前空置的是选择列和操作列是不能拖动的,但是倒数第二列如果要拖到最后一列还是可以拖动的,目前没有找到解决方法,如果有解决的欢迎评论区代码附上一起探讨
2、下拉框新增自定义数据
在这里插入图片描述

<a-select
	allowClear
	@dropdownVisibleChange="changeMointor"
	placeholder="请选择入监控节点"
	ref="select"
	style="width: 180px"
	v-model:value="addexcludepool.intranetInControl"
	:options="hostIPData"
	:getPopupContainer="(triggerNode) => triggerNode.parentNode"
>
	<template #dropdownRender="{ menuNode: menu }">
		<v-nodes :vnodes="menu" />
		<a-divider style="margin: 4px 0" />
		<div style="padding: 4px 8px; cursor: pointer;color:#1677FF" @mousedown.prevent="handleAddClick">
			<plus-outlined />
			新增入监控节点
		</div>
	</template>	
</a-select>
const  VNodes = ref((_, {
  attrs,
}) => {
  return attrs.vnodes;
})
const handleAddClick = () => {
	console.log('逻辑内容)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张张Z7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值