一、功能背景描述:
在后台管理系统中,需求添加某些配置选项,并且选项可以拖拽调整顺序,指定按钮图标允许拖拽,不是整行拖拽。最终将配置的选项传给后端保存。功能如下图展示:
二、代码实现:
2.1:下载插件
中文文档 :
vue.draggable中文文档 - itxst.com
https://www.itxst.com/vue-draggable/tutorial.html
npm i vuedraggable
2.2:按需页面引入并注册插件
<script>
import draggable from 'vuedraggable'
export default {
components: { draggable },
</script>
2.3:使用
<draggable v-if="item.radioType !== 3" v-model="item.options" :disabled="allowDrag">
<div v-for="(childItem, childIndex) in item.options" :key="childIndex" style="display: flex;margin-bottom: 20px;">
<img @mouseenter="startLongPress" @mouseleave="endLongPress" class="drag_icon mr10" style="cursor: move;" src="@/assets/ReturnVisit/drag.png" alt="拖动图标">
<span style="width: 8%;">选项{{ childIndex+1 }}:</span>
<el-input v-model="childItem.cname" placeholder="请输入选项" clearable maxlength="100" show-word-limit type="textarea" autosize resize="none" />
<el-button type="primary" icon="el-icon-plus" circle class="ml20" @click.stop="handleAdd(childItem.cname,index)" />
<el-button v-if="item.options.length > 1" type="danger" icon="el-icon-delete" circle @click.stop="handleReduce(childIndex,index)" />
</draggable>
<script>
import draggable from 'vuedraggable'
export default {
name: 'ProblemItem',
components: { draggable },
props: {
questionList: {
type: Array,
default: () => []
data() {
return {
tageType: ['', 'warning', 'success'],
allowDrag: false, // 控制是否允许拖拽
longPressTimer: null, // 长按计时器
longPressThreshold: 300, // 长按阈值
computed: {
question_list: {
get() {
return this.questionList
set(value) {
this.$emit('update:questionList', value)
return value
mounted() {
methods: {
startLongPress() {
clearTimeout(this.longPressTimer);
this.longPressTimer = setTimeout(() => {
//鼠标移入后的逻辑
console.log('鼠标移入');
this.allowDrag = false
// 可以在这里触发一个事件或者执行其他操作
}, 300);
endLongPress() {
clearTimeout(this.longPressTimer);
// 在这里可以添加松开鼠标后的逻辑(如果需要)
console.log('鼠标松开');
this.allowDrag = true
</script>
有问题指正下哈谢谢!
jQuery-UI为我们提供了一个非常便捷的
拖拽
方法:
draggable
(),在
使用
此方法时,我们可能会希望控件只在某一区域
中
移动,不能被拖出边界,这样的话我们可以
使用
下面的方法:
调用
draggable
()时:
$('#element').
draggable
({containment: '#background'});
上述代码是将element的
拖拽
范围
限制在backg...
今天分享一个
vue
项目
中
在不同列表
拖拽
设置选项的功能,这个功能也是在做项目
中
遇到的,先说下这个功能的要点(参考下图),有2个列表,左侧列表展示已选,右侧列表展示未选,通过
拖拽
进行设置,已选的选项不能超过4个,超过的话自动将
拖拽
之前的最后一项清除到右侧,且如果从已选往未选里拖的时候,右侧显示垃圾桶的提示(如图)。
拖拽
功能图片:
垃圾桶显示图:
首先讲讲
vue
-
draggable
的
使用
安装
vue
-
draggable
:
npm install
vue
draggable
在
使用
插件
的组件内引入
vue
-
draggable
并注册组件:
import
draggable
from "
vue
dra
v-model 绑定数据数组 可获取排序之后的最新数组
tag
指定
vue
draggable
渲染之后的标签类型,默认div
group 组名--相同组名之间可
拖拽
。可传obj格式
企业微信-新版WECOM-JSSDK-分享消息到当前会话-sendChatMessage-(fail_no permission与errMsg: “sendChatMessage:no permis)
企业微信-新版WECOM-JSSDK-分享消息到当前会话-sendChatMessage-(fail_no permission与errMsg: “sendChatMessage:no permis)
m0_67927735:
企业微信-新版WECOM-JSSDK-分享消息到当前会话-sendChatMessage-(fail_no permission与errMsg: “sendChatMessage:no permis)
m0_59799452:
企业微信-新版WECOM-JSSDK-分享消息到当前会话-sendChatMessage-(fail_no permission与errMsg: “sendChatMessage:no permis)
Rlm*:
企业微信-新版WECOM-JSSDK-分享消息到当前会话-sendChatMessage-(fail_no permission与errMsg: “sendChatMessage:no permis)
Rlm*:
企业微信-新版WECOM-JSSDK-分享消息到当前会话-sendChatMessage-(fail_no permission与errMsg: “sendChatMessage:no permis)
cococodemaster: