From 23dbefdd91a2afb128109ecca08c06634d663476 Mon Sep 17 00:00:00 2001
From: WangHao <43278047@qq.com>
Date: Sat, 6 Nov 2021 23:03:15 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8B=96=E6=8B=BD=E6=A1=86?=
 =?UTF-8?q?=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ruoyi-ui/package.json                         |  2 +-
 ruoyi-ui/src/main.js                          |  4 ++
 ruoyi-ui/src/router/index.js                  |  8 +++
 ruoyi-ui/src/views/bookmark/infra/nested.vue  | 37 ++++++++++++++
 .../views/bookmark/vuedraggable/index2.vue    | 51 +++++++++++++++++++
 5 files changed, 101 insertions(+), 1 deletion(-)
 create mode 100644 ruoyi-ui/src/views/bookmark/infra/nested.vue
 create mode 100644 ruoyi-ui/src/views/bookmark/vuedraggable/index2.vue

diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
index 27f7069e5..e265b7cdb 100644
--- a/ruoyi-ui/package.json
+++ b/ruoyi-ui/package.json
@@ -67,7 +67,7 @@
     "vue-router": "3.0.2",
     "vue-splitpane": "1.0.4",
     "vue-timeago": "^5.1.2",
-    "vuedraggable": "2.20.0",
+    "vuedraggable": "^2.20.0",
     "vuex": "3.1.0"
   },
   "devDependencies": {
diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js
index 4782d7f52..70d363e2b 100644
--- a/ruoyi-ui/src/main.js
+++ b/ruoyi-ui/src/main.js
@@ -27,6 +27,9 @@ import 'element-ui/lib/theme-chalk/index.css'
 //媒体查詢
 import '@/assets/styles/base.css'
 
+// 引入
+import draggable from "vuedraggable";
+
 // 全局引入VueMaterial组件库 https://vuematerial.io/
 // import VueMaterial from 'vue-material'
 // import 'vue-material/dist/vue-material.min.css'
@@ -90,3 +93,4 @@ new Vue({
   store,
   render: h => h(App)
 })
+
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
index 81d0aeaf2..c8c7a2c8f 100644
--- a/ruoyi-ui/src/router/index.js
+++ b/ruoyi-ui/src/router/index.js
@@ -127,6 +127,14 @@ export const constantRoutes = [
     path: '/daohang',
     component: resolve => require(['../views/bookmark/menu/index.vue'], resolve),
     hidden: true,
+  },{
+    path: '/draggable',
+    component: resolve => require(['../views/bookmark/vuedraggable/index.vue'], resolve),
+    hidden: true,
+  },{
+    path: '/draggable2',
+    component: resolve => require(['../views/bookmark/vuedraggable/index2.vue'], resolve),
+    hidden: true,
   },
   {
     path: '/login',
diff --git a/ruoyi-ui/src/views/bookmark/infra/nested.vue b/ruoyi-ui/src/views/bookmark/infra/nested.vue
new file mode 100644
index 000000000..7a876b3b7
--- /dev/null
+++ b/ruoyi-ui/src/views/bookmark/infra/nested.vue
@@ -0,0 +1,37 @@
+<template>
+  <draggable class="dragArea" tag="ul" :list="tasks" :group="{ name: 'g1' }">
+    <li v-for="el in tasks" :key="el.name">
+      <p>{{ el.name }}</p>
+<!--      <nested-draggable :tasks="el.tasks" />-->
+
+      <draggable :list="el.tasks" tag="ul" group="g2">
+    <li v-for="el in el.tasks" :key="el.name">
+      <p>{{ el.name }}</p>
+    </li>
+  </draggable>
+
+
+    </li>
+  </draggable>
+</template>
+<script>
+  import draggable from "vuedraggable";
+  export default {
+    props: {
+      tasks: {
+        required: true,
+        type: Array
+      }
+    },
+    components: {
+      draggable
+    },
+    name: "nested-draggable"
+  };
+</script>
+<style scoped>
+  .dragArea {
+    min-height: 50px;
+    outline: 1px dashed;
+  }
+</style>
diff --git a/ruoyi-ui/src/views/bookmark/vuedraggable/index2.vue b/ruoyi-ui/src/views/bookmark/vuedraggable/index2.vue
new file mode 100644
index 000000000..41d9320ea
--- /dev/null
+++ b/ruoyi-ui/src/views/bookmark/vuedraggable/index2.vue
@@ -0,0 +1,51 @@
+<template>
+  <div class="row">
+    <div class="col-8">
+      <h3>Nested draggable</h3>
+      <nested-draggable :tasks="list" />
+    </div>
+
+    <rawDisplayer class="col-3" :value="list" title="List" />
+  </div>
+</template>
+
+<script>
+  import nestedDraggable from "../infra/nested";
+  export default {
+    name: "nested-example",
+    display: "Nested",
+    order: 15,
+    components: {
+      nestedDraggable
+    },
+    data() {
+      return {
+        list: [
+          {
+            name: "task 1",
+            tasks: [
+              {
+                name: "task 2",
+                tasks: []
+              }
+            ]
+          },
+          {
+            name: "task 3",
+            tasks: [
+              {
+                name: "task 4",
+                tasks: []
+              }
+            ]
+          },
+          {
+            name: "task 5",
+            tasks: []
+          }
+        ]
+      };
+    }
+  };
+</script>
+<style scoped></style>