From 426e7f789b313326ed8458927dca11a84dd3a414 Mon Sep 17 00:00:00 2001
From: donghao <donghao@supervision.ltd>
Date: Tue, 16 Jan 2024 13:54:43 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8A=A8=E6=95=88=E5=88=9D=E5=A7=8B?=
 =?UTF-8?q?=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/assets/animate/device/01.json             | 1278 ++++-------------
 src/components/Animate/index.ts               |    3 +
 src/components/Animate/src/AnimateDevice.vue  |   38 +
 .../CustomTree/src/collapseTreeItem           |    0
 src/components/CustomTree/src/demo.md         |  472 ++++++
 src/components/CustomTree/src/demoItem.md     |  347 +++++
 src/views/demo/animateDevice.vue              |    4 +-
 src/views/device/components/DeviceCard.vue    |    7 +-
 8 files changed, 1125 insertions(+), 1024 deletions(-)
 create mode 100644 src/components/Animate/index.ts
 create mode 100644 src/components/Animate/src/AnimateDevice.vue
 create mode 100644 src/components/CustomTree/src/collapseTreeItem
 create mode 100644 src/components/CustomTree/src/demo.md
 create mode 100644 src/components/CustomTree/src/demoItem.md

diff --git a/src/assets/animate/device/01.json b/src/assets/animate/device/01.json
index ea93985..7bdeee1 100644
--- a/src/assets/animate/device/01.json
+++ b/src/assets/animate/device/01.json
@@ -1,1062 +1,300 @@
 {
-  "nm": "scene1",
+  "v": "4.8.0",
+  "meta": { "g": "LottieFiles AE 3.5.3", "a": "", "k": "", "d": "", "tc": "" },
+  "fr": 25,
+  "ip": 0,
+  "op": 20,
+  "w": 400,
+  "h": 400,
+  "nm": "合成 1",
   "ddd": 0,
-  "h": 500,
-  "w": 500,
-  "meta": { "g": "@lottiefiles/creator 0.48.0" },
+  "assets": [
+    {
+      "id": "image_0",
+      "w": 400,
+      "h": 272,
+      "u": "",
+      "p": "data:image/png;base64,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",
+      "e": 1
+    }
+  ],
   "layers": [
     {
-      "ty": 0,
-      "nm": " scene1",
-      "sr": 1,
-      "st": 0,
-      "op": 210,
-      "ip": 0,
-      "hd": false,
       "ddd": 0,
-      "bm": 0,
-      "hasMask": false,
-      "ao": 0,
-      "ks": {
-        "a": { "a": 0, "k": [226.99806213378906, 251] },
-        "s": { "a": 0, "k": [100, 100] },
-        "sk": { "a": 0, "k": 0 },
-        "p": { "a": 0, "k": [226.99806213378906, 251] },
-        "r": { "a": 0, "k": 0 },
-        "sa": { "a": 0, "k": 0 },
-        "o": { "a": 0, "k": 100 }
-      },
-      "ef": [],
-      "w": 500,
-      "h": 500,
-      "refId": "Scene 1",
-      "ind": 1
-    },
-    {
-      "ty": 0,
-      "nm": " scene1",
+      "ind": 1,
+      "ty": 4,
+      "nm": "形状图层 3",
       "sr": 1,
-      "st": 0,
-      "op": 210,
-      "ip": 0,
-      "hd": false,
-      "ddd": 0,
-      "bm": 0,
-      "hasMask": false,
-      "ao": 0,
       "ks": {
-        "a": { "a": 0, "k": [226.99806213378906, 251] },
-        "s": { "a": 0, "k": [100, 100] },
-        "sk": { "a": 0, "k": 0 },
-        "p": { "a": 0, "k": [226.99806213378906, 251] },
-        "r": { "a": 0, "k": 0 },
-        "sa": { "a": 0, "k": 0 },
-        "o": { "a": 0, "k": 100 }
-      },
-      "ef": [],
-      "w": 500,
-      "h": 500,
-      "refId": "Scene 1",
-      "ind": 2
-    }
-  ],
-  "v": "5.7.0",
-  "fr": 30,
-  "op": 210,
-  "ip": 0,
-  "assets": [
-    {
-      "nm": "scene1",
-      "id": "Scene 1",
-      "layers": [
-        {
-          "ty": 4,
-          "nm": "Shape Layer 1",
-          "sr": 1,
-          "st": 0,
-          "op": 207.89999999999998,
-          "ip": 146.99999999999997,
-          "hd": false,
-          "ddd": 0,
-          "bm": 0,
-          "hasMask": false,
-          "ao": 0,
-          "ks": {
-            "a": { "a": 0, "k": [32.00000000000001, 33] },
-            "s": { "a": 0, "k": [500, 500] },
-            "sk": { "a": 0, "k": 0 },
-            "p": {
-              "a": 1,
-              "k": [
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [347, 251],
-                  "t": 148
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [433, 251],
-                  "t": 159
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [433, 251],
-                  "t": 188
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [433, 233],
-                  "t": 191
-                },
-                { "s": [433, 251], "t": 194 }
-              ]
+        "o": {
+          "a": 1,
+          "k": [
+            {
+              "i": { "x": [0.659], "y": [0.843] },
+              "o": { "x": [0.391], "y": [0] },
+              "t": 0,
+              "s": [100]
             },
-            "r": { "a": 0, "k": 0 },
-            "sa": { "a": 0, "k": 0 },
-            "o": { "a": 0, "k": 100 }
-          },
-          "ef": [],
-          "shapes": [
             {
-              "ty": "gr",
-              "bm": 0,
-              "hd": false,
-              "nm": "Group 5",
-              "it": [
-                {
-                  "ty": "sh",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Path 5",
-                  "d": 1,
-                  "ks": {
-                    "a": 0,
-                    "k": {
-                      "c": true,
-                      "i": [
-                        [0, 0],
-                        [0, -11.3888407],
-                        [-4.3333333, 0],
-                        [0, 11.388840700000003],
-                        [9.388840700000003, 0],
-                        [3.1184307999999987, -3.696753659999999],
-                        [5.215011799999999, 0]
-                      ],
-                      "o": [
-                        [-9.38884075, 0],
-                        [0, 11.388840700000003],
-                        [4.3333333, 0],
-                        [0, -11.3888407],
-                        [-5.215011799999999, 0],
-                        [-3.1184307999999987, -3.696753659999999],
-                        [0, 0]
-                      ],
-                      "v": [
-                        [19, 6],
-                        [2, 23],
-                        [32, 60],
-                        [62, 23],
-                        [45, 6],
-                        [32, 12.0449665],
-                        [19, 6]
-                      ]
-                    }
-                  }
-                },
-                {
-                  "ty": "fl",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Fill",
-                  "c": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.1137, 0.6392, 0.2235],
-                        "t": 184
-                      },
-                      { "s": [0.6392, 0.1137, 0.6157], "t": 191 }
-                    ]
-                  },
-                  "r": 2,
-                  "o": { "a": 0, "k": 100 }
-                },
-                {
-                  "ty": "tr",
-                  "a": { "a": 0, "k": [32, 33] },
-                  "s": { "a": 0, "k": [25, 25] },
-                  "sk": { "a": 0, "k": 0 },
-                  "p": { "a": 0, "k": [32, 33] },
-                  "r": { "a": 0, "k": 0 },
-                  "sa": { "a": 0, "k": 0 },
-                  "o": { "a": 0, "k": 100 }
-                }
-              ]
-            }
+              "i": { "x": [0.6], "y": [0.927] },
+              "o": { "x": [0.283], "y": [-0.13] },
+              "t": 10,
+              "s": [0]
+            },
+            { "t": 20, "s": [100] }
           ],
-          "ind": 1
+          "ix": 11
         },
+        "r": { "a": 0, "k": 0, "ix": 10 },
+        "p": { "a": 0, "k": [72.25, 240.125, 0], "ix": 2 },
+        "a": { "a": 0, "k": [-178.25, 16.625, 0], "ix": 1 },
+        "s": { "a": 0, "k": [100, 100, 100], "ix": 6 }
+      },
+      "ao": 0,
+      "shapes": [
         {
-          "ty": 4,
-          "nm": "Shape Layer 1",
-          "sr": 1,
-          "st": 0,
-          "op": 207.89999999999998,
-          "ip": 132.3,
-          "hd": false,
-          "ddd": 0,
-          "bm": 0,
-          "hasMask": false,
-          "ao": 0,
-          "ks": {
-            "a": { "a": 0, "k": [32.00000000000001, 33] },
-            "s": { "a": 0, "k": [500, 500] },
-            "sk": { "a": 0, "k": 0 },
-            "p": {
-              "a": 1,
-              "k": [
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [261, 251],
-                  "t": 133.3
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [347, 251],
-                  "t": 142.3
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [347, 251],
-                  "t": 184
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [347, 237],
-                  "t": 186
-                },
-                { "s": [347, 251], "t": 189 }
-              ]
+          "ty": "gr",
+          "it": [
+            {
+              "d": 1,
+              "ty": "el",
+              "s": { "a": 0, "k": [16, 16], "ix": 2 },
+              "p": { "a": 0, "k": [0, 0], "ix": 3 },
+              "nm": "椭圆路径 1",
+              "mn": "ADBE Vector Shape - Ellipse",
+              "hd": false
             },
-            "r": { "a": 0, "k": 0 },
-            "sa": { "a": 0, "k": 0 },
-            "o": { "a": 0, "k": 100 }
-          },
-          "ef": [],
-          "shapes": [
             {
-              "ty": "gr",
+              "ty": "fl",
+              "c": {
+                "a": 0,
+                "k": [0.909803921569, 0.050980392157, 0.050980392157, 1],
+                "ix": 4
+              },
+              "o": { "a": 0, "k": 100, "ix": 5 },
+              "r": 1,
               "bm": 0,
-              "hd": false,
-              "nm": "Group 5",
-              "it": [
-                {
-                  "ty": "sh",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Path 5",
-                  "d": 1,
-                  "ks": {
-                    "a": 0,
-                    "k": {
-                      "c": true,
-                      "i": [
-                        [0, 0],
-                        [0, -11.3888407],
-                        [-4.3333333, 0],
-                        [0, 11.388840700000003],
-                        [9.388840700000003, 0],
-                        [3.1184307999999987, -3.696753659999999],
-                        [5.215011799999999, 0]
-                      ],
-                      "o": [
-                        [-9.38884075, 0],
-                        [0, 11.388840700000003],
-                        [4.3333333, 0],
-                        [0, -11.3888407],
-                        [-5.215011799999999, 0],
-                        [-3.1184307999999987, -3.696753659999999],
-                        [0, 0]
-                      ],
-                      "v": [
-                        [19, 6],
-                        [2, 23],
-                        [32, 60],
-                        [62, 23],
-                        [45, 6],
-                        [32, 12.0449665],
-                        [19, 6]
-                      ]
-                    }
-                  }
-                },
-                {
-                  "ty": "fl",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Fill",
-                  "c": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.1137, 0.6392, 0.2235],
-                        "t": 178
-                      },
-                      { "s": [0.6392, 0.1137, 0.6157], "t": 185 }
-                    ]
-                  },
-                  "r": 2,
-                  "o": { "a": 0, "k": 100 }
-                },
-                {
-                  "ty": "tr",
-                  "a": { "a": 0, "k": [32, 33] },
-                  "s": { "a": 0, "k": [25, 25] },
-                  "sk": { "a": 0, "k": 0 },
-                  "p": { "a": 0, "k": [32, 33] },
-                  "r": { "a": 0, "k": 0 },
-                  "sa": { "a": 0, "k": 0 },
-                  "o": { "a": 0, "k": 100 }
-                }
-              ]
-            }
-          ],
-          "ind": 2
-        },
-        {
-          "ty": 4,
-          "nm": "Shape Layer 1",
-          "sr": 1,
-          "st": 0,
-          "op": 206.99999999999997,
-          "ip": 117.00000000000001,
-          "hd": false,
-          "ddd": 0,
-          "bm": 0,
-          "hasMask": false,
-          "ao": 0,
-          "ks": {
-            "a": { "a": 0, "k": [32, 33] },
-            "s": { "a": 0, "k": [500, 500] },
-            "sk": { "a": 0, "k": 0 },
-            "p": {
-              "a": 1,
-              "k": [
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [174, 251],
-                  "t": 118
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [261, 251],
-                  "t": 128
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [261, 251],
-                  "t": 178
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [261, 233],
-                  "t": 181
-                },
-                { "s": [261, 251], "t": 185 }
-              ]
+              "nm": "填充 1",
+              "mn": "ADBE Vector Graphic - Fill",
+              "hd": false
             },
-            "r": { "a": 0, "k": 0 },
-            "sa": { "a": 0, "k": 0 },
-            "o": { "a": 0, "k": 100 }
-          },
-          "ef": [],
-          "shapes": [
             {
-              "ty": "gr",
-              "bm": 0,
-              "hd": false,
-              "nm": "Group 5",
-              "it": [
-                {
-                  "ty": "sh",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Path 5",
-                  "d": 1,
-                  "ks": {
-                    "a": 0,
-                    "k": {
-                      "c": true,
-                      "i": [
-                        [0, 0],
-                        [0, -11.3888407],
-                        [-4.3333333, 0],
-                        [0, 11.388840700000003],
-                        [9.388840700000003, 0],
-                        [3.1184307999999987, -3.696753659999999],
-                        [5.215011799999999, 0]
-                      ],
-                      "o": [
-                        [-9.38884075, 0],
-                        [0, 11.388840700000003],
-                        [4.3333333, 0],
-                        [0, -11.3888407],
-                        [-5.215011799999999, 0],
-                        [-3.1184307999999987, -3.696753659999999],
-                        [0, 0]
-                      ],
-                      "v": [
-                        [19, 6],
-                        [2, 23],
-                        [32, 60],
-                        [62, 23],
-                        [45, 6],
-                        [32, 12.0449665],
-                        [19, 6]
-                      ]
-                    }
-                  }
-                },
-                {
-                  "ty": "fl",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Fill",
-                  "c": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.1137, 0.6392, 0.2235],
-                        "t": 173
-                      },
-                      { "s": [0.6392, 0.1137, 0.6157], "t": 179 }
-                    ]
-                  },
-                  "r": 2,
-                  "o": { "a": 0, "k": 100 }
-                },
-                {
-                  "ty": "tr",
-                  "a": {
-                    "a": 0,
-                    "k": [101.60000000000001, 18.599999999999994]
-                  },
-                  "s": { "a": 0, "k": [25, 25] },
-                  "sk": { "a": 0, "k": 0 },
-                  "p": { "a": 0, "k": [49.400000000000006, 29.4] },
-                  "r": { "a": 0, "k": 0 },
-                  "sa": { "a": 0, "k": 0 },
-                  "o": { "a": 0, "k": 100 }
-                }
-              ]
+              "ty": "tr",
+              "p": { "a": 0, "k": [-178.438, 16.063], "ix": 2 },
+              "a": { "a": 0, "k": [0, 0], "ix": 1 },
+              "s": { "a": 0, "k": [100, 100], "ix": 3 },
+              "r": { "a": 0, "k": 0, "ix": 6 },
+              "o": { "a": 0, "k": 100, "ix": 7 },
+              "sk": { "a": 0, "k": 0, "ix": 4 },
+              "sa": { "a": 0, "k": 0, "ix": 5 },
+              "nm": "变换"
             }
           ],
-          "ind": 3
-        },
-        {
-          "ty": 4,
-          "nm": "Shape Layer 1",
-          "sr": 1,
-          "st": 0,
-          "op": 206.99999999999997,
-          "ip": 105,
-          "hd": false,
-          "ddd": 0,
+          "nm": "椭圆 1",
+          "np": 3,
+          "cix": 2,
           "bm": 0,
-          "hasMask": false,
-          "ao": 0,
-          "ks": {
-            "a": { "a": 0, "k": [32.00000000000001, 33] },
-            "s": { "a": 0, "k": [500, 500] },
-            "sk": { "a": 0, "k": 0 },
-            "p": {
-              "a": 1,
-              "k": [
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [91.49612426757818, 251],
-                  "t": 106
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [174.00000000000003, 251],
-                  "t": 116
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [174.00000000000003, 251],
-                  "t": 173
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [174.00000000000003, 233],
-                  "t": 176
-                },
-                { "s": [174.00000000000003, 251], "t": 179 }
-              ]
+          "ix": 1,
+          "mn": "ADBE Vector Group",
+          "hd": false
+        }
+      ],
+      "ip": 5,
+      "op": 20,
+      "st": -10,
+      "bm": 0
+    },
+    {
+      "ddd": 0,
+      "ind": 2,
+      "ty": 4,
+      "nm": "形状图层 2",
+      "sr": 1,
+      "ks": {
+        "o": {
+          "a": 1,
+          "k": [
+            {
+              "i": { "x": [0.659], "y": [0.843] },
+              "o": { "x": [0.391], "y": [0] },
+              "t": 0,
+              "s": [100]
             },
-            "r": { "a": 0, "k": 0 },
-            "sa": { "a": 0, "k": 0 },
-            "o": { "a": 0, "k": 100 }
-          },
-          "ef": [],
-          "shapes": [
             {
-              "ty": "gr",
-              "bm": 0,
-              "hd": false,
-              "nm": "Group 5",
-              "it": [
-                {
-                  "ty": "sh",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Path 5",
-                  "d": 1,
-                  "ks": {
-                    "a": 0,
-                    "k": {
-                      "c": true,
-                      "i": [
-                        [0, 0],
-                        [0, -11.3888407],
-                        [-4.3333333, 0],
-                        [0, 11.388840700000003],
-                        [9.388840700000003, 0],
-                        [3.1184307999999987, -3.696753659999999],
-                        [5.215011799999999, 0]
-                      ],
-                      "o": [
-                        [-9.38884075, 0],
-                        [0, 11.388840700000003],
-                        [4.3333333, 0],
-                        [0, -11.3888407],
-                        [-5.215011799999999, 0],
-                        [-3.1184307999999987, -3.696753659999999],
-                        [0, 0]
-                      ],
-                      "v": [
-                        [19, 6],
-                        [2, 23],
-                        [32, 60],
-                        [62, 23],
-                        [45, 6],
-                        [32, 12.0449665],
-                        [19, 6]
-                      ]
-                    }
-                  }
-                },
-                {
-                  "ty": "fl",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Fill",
-                  "c": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.1137, 0.6392, 0.2235],
-                        "t": 168
-                      },
-                      { "s": [0.6392, 0.1137, 0.6157], "t": 174 }
-                    ]
-                  },
-                  "r": 2,
-                  "o": { "a": 0, "k": 100 }
-                },
-                {
-                  "ty": "tr",
-                  "a": { "a": 0, "k": [32, 33] },
-                  "s": { "a": 0, "k": [25, 25] },
-                  "sk": { "a": 0, "k": 0 },
-                  "p": { "a": 0, "k": [32, 33] },
-                  "r": { "a": 0, "k": 0 },
-                  "sa": { "a": 0, "k": 0 },
-                  "o": { "a": 0, "k": 100 }
-                }
-              ]
-            }
+              "i": { "x": [0.6], "y": [0.927] },
+              "o": { "x": [0.283], "y": [-0.13] },
+              "t": 10,
+              "s": [0]
+            },
+            { "t": 20, "s": [100] }
           ],
-          "ind": 4
+          "ix": 11
         },
+        "r": { "a": 0, "k": 0, "ix": 10 },
+        "p": { "a": 0, "k": [46.75, 226.625, 0], "ix": 2 },
+        "a": { "a": 0, "k": [-178.25, 16.625, 0], "ix": 1 },
+        "s": { "a": 0, "k": [100, 100, 100], "ix": 6 }
+      },
+      "ao": 0,
+      "shapes": [
         {
-          "ty": 4,
-          "nm": "Shape Layer 1",
-          "sr": 1,
-          "st": 0,
-          "op": 207.89999999999998,
-          "ip": 86.1,
-          "hd": false,
-          "ddd": 0,
-          "bm": 0,
-          "hasMask": false,
-          "ao": 0,
-          "ks": {
-            "a": { "a": 0, "k": [32, 33] },
-            "s": { "a": 0, "k": [500, 500] },
-            "sk": { "a": 0, "k": 0 },
-            "p": {
-              "a": 1,
-              "k": [
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [250, 251],
-                  "t": 98.1
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [91.49612426757815, 251],
-                  "t": 103.1
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [91.49612426757815, 251],
-                  "t": 166
-                },
-                {
-                  "o": { "x": 0.167, "y": 0.167 },
-                  "i": { "x": 0.833, "y": 0.833 },
-                  "s": [91.49612426757815, 232],
-                  "t": 170
-                },
-                { "s": [91.49612426757815, 251], "t": 174 }
-              ]
+          "ty": "gr",
+          "it": [
+            {
+              "d": 1,
+              "ty": "el",
+              "s": { "a": 0, "k": [16, 16], "ix": 2 },
+              "p": { "a": 0, "k": [0, 0], "ix": 3 },
+              "nm": "椭圆路径 1",
+              "mn": "ADBE Vector Shape - Ellipse",
+              "hd": false
             },
-            "r": { "a": 0, "k": 0 },
-            "sa": { "a": 0, "k": 0 },
-            "o": { "a": 0, "k": 100 }
-          },
-          "ef": [],
-          "shapes": [
             {
-              "ty": "gr",
+              "ty": "fl",
+              "c": {
+                "a": 0,
+                "k": [0.909803921569, 0.050980392157, 0.050980392157, 1],
+                "ix": 4
+              },
+              "o": { "a": 0, "k": 100, "ix": 5 },
+              "r": 1,
               "bm": 0,
-              "hd": false,
-              "nm": "Group 5",
-              "it": [
-                {
-                  "ty": "sh",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Path 5",
-                  "d": 1,
-                  "ks": {
-                    "a": 0,
-                    "k": {
-                      "c": true,
-                      "i": [
-                        [0, 0],
-                        [0, -11.3888407],
-                        [-4.3333333, 0],
-                        [0, 11.388840700000003],
-                        [9.388840700000003, 0],
-                        [3.1184307999999987, -3.696753659999999],
-                        [5.215011799999999, 0]
-                      ],
-                      "o": [
-                        [-9.38884075, 0],
-                        [0, 11.388840700000003],
-                        [4.3333333, 0],
-                        [0, -11.3888407],
-                        [-5.215011799999999, 0],
-                        [-3.1184307999999987, -3.696753659999999],
-                        [0, 0]
-                      ],
-                      "v": [
-                        [19, 6],
-                        [2, 23],
-                        [32, 60],
-                        [62, 23],
-                        [45, 6],
-                        [32, 12.0449665],
-                        [19, 6]
-                      ]
-                    }
-                  }
-                },
-                {
-                  "ty": "fl",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Fill",
-                  "c": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0, 0, 0],
-                        "t": 80
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.2078, 0.4039, 0.8941],
-                        "t": 86.1
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.1137, 0.6392, 0.2235],
-                        "t": 96.1
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.1137, 0.6392, 0.2235],
-                        "t": 164
-                      },
-                      { "s": [0.6392, 0.1137, 0.6157], "t": 169 }
-                    ]
-                  },
-                  "r": 2,
-                  "o": { "a": 0, "k": 100 }
-                },
-                {
-                  "ty": "tr",
-                  "a": { "a": 0, "k": [32, 33] },
-                  "s": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [100, 100],
-                        "t": 86.1
-                      },
-                      { "s": [25, 25], "t": 98.1 }
-                    ]
-                  },
-                  "sk": { "a": 0, "k": 0 },
-                  "p": { "a": 0, "k": [32, 33] },
-                  "r": { "a": 0, "k": 0 },
-                  "sa": { "a": 0, "k": 0 },
-                  "o": { "a": 0, "k": 100 }
-                }
-              ]
+              "nm": "填充 1",
+              "mn": "ADBE Vector Graphic - Fill",
+              "hd": false
+            },
+            {
+              "ty": "tr",
+              "p": { "a": 0, "k": [-178.438, 16.063], "ix": 2 },
+              "a": { "a": 0, "k": [0, 0], "ix": 1 },
+              "s": { "a": 0, "k": [100, 100], "ix": 3 },
+              "r": { "a": 0, "k": 0, "ix": 6 },
+              "o": { "a": 0, "k": 100, "ix": 7 },
+              "sk": { "a": 0, "k": 0, "ix": 4 },
+              "sa": { "a": 0, "k": 0, "ix": 5 },
+              "nm": "变换"
             }
           ],
-          "ind": 5
-        },
-        {
-          "ty": 4,
-          "nm": "Shape Layer 1",
-          "sr": 1,
-          "st": 0,
-          "op": 105,
-          "ip": 46.5,
-          "hd": false,
-          "ddd": 0,
+          "nm": "椭圆 1",
+          "np": 3,
+          "cix": 2,
           "bm": 0,
-          "hasMask": false,
-          "ao": 0,
-          "ks": {
-            "a": { "a": 0, "k": [32, 33] },
-            "s": { "a": 0, "k": [500, 500] },
-            "sk": { "a": 0, "k": 0 },
-            "p": { "a": 0, "k": [250, 251] },
-            "r": { "a": 0, "k": 0 },
-            "sa": { "a": 0, "k": 0 },
-            "o": { "a": 0, "k": 100 }
-          },
-          "ef": [],
-          "shapes": [
+          "ix": 1,
+          "mn": "ADBE Vector Group",
+          "hd": false
+        }
+      ],
+      "ip": 2,
+      "op": 20,
+      "st": -5,
+      "bm": 0
+    },
+    {
+      "ddd": 0,
+      "ind": 3,
+      "ty": 4,
+      "nm": "形状图层 1",
+      "sr": 1,
+      "ks": {
+        "o": {
+          "a": 1,
+          "k": [
             {
-              "ty": "gr",
-              "bm": 0,
-              "hd": false,
-              "nm": "Group 5",
-              "it": [
-                {
-                  "ty": "sh",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Path 5",
-                  "d": 1,
-                  "ks": {
-                    "a": 0,
-                    "k": {
-                      "c": true,
-                      "i": [
-                        [0, 0],
-                        [0, -11.3888407],
-                        [-4.3333333, 0],
-                        [0, 11.388840700000003],
-                        [9.388840700000003, 0],
-                        [3.1184307999999987, -3.696753659999999],
-                        [5.215011799999999, 0]
-                      ],
-                      "o": [
-                        [-9.38884075, 0],
-                        [0, 11.388840700000003],
-                        [4.3333333, 0],
-                        [0, -11.3888407],
-                        [-5.215011799999999, 0],
-                        [-3.1184307999999987, -3.696753659999999],
-                        [0, 0]
-                      ],
-                      "v": [
-                        [19, 6],
-                        [2, 23],
-                        [32, 60],
-                        [62, 23],
-                        [45, 6],
-                        [32, 12.0449665],
-                        [19, 6]
-                      ]
-                    }
-                  }
-                },
-                {
-                  "ty": "fl",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Fill",
-                  "c": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [0.8941, 0.2078, 0.2078],
-                        "t": 47
-                      },
-                      { "s": [0.2078, 0.4039, 0.8941], "t": 60 }
-                    ]
-                  },
-                  "r": 2,
-                  "o": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [100],
-                        "t": 82
-                      },
-                      { "s": [0], "t": 95 }
-                    ]
-                  }
-                },
-                {
-                  "ty": "tr",
-                  "a": { "a": 0, "k": [32, 33] },
-                  "s": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [100, 100],
-                        "t": 46.5
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [120, 120],
-                        "t": 65.5
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [90, 90],
-                        "t": 67.5
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [110, 110],
-                        "t": 73.5
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [97, 97],
-                        "t": 78.5
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [102, 102],
-                        "t": 82.5
-                      },
-                      { "s": [100, 100], "t": 86.5 }
-                    ]
-                  },
-                  "sk": { "a": 0, "k": 0 },
-                  "p": { "a": 0, "k": [32, 33] },
-                  "r": { "a": 0, "k": 0 },
-                  "sa": { "a": 0, "k": 0 },
-                  "o": { "a": 0, "k": 100 }
-                }
-              ]
-            }
+              "i": { "x": [0.659], "y": [0.843] },
+              "o": { "x": [0.391], "y": [0] },
+              "t": 0,
+              "s": [100]
+            },
+            {
+              "i": { "x": [0.6], "y": [0.927] },
+              "o": { "x": [0.283], "y": [-0.13] },
+              "t": 10,
+              "s": [0]
+            },
+            { "t": 20, "s": [100] }
           ],
-          "ind": 6
+          "ix": 11
         },
+        "r": { "a": 0, "k": 0, "ix": 10 },
+        "p": { "a": 0, "k": [21.75, 211.625, 0], "ix": 2 },
+        "a": { "a": 0, "k": [-178.25, 16.625, 0], "ix": 1 },
+        "s": { "a": 0, "k": [100, 100, 100], "ix": 6 }
+      },
+      "ao": 0,
+      "shapes": [
         {
-          "ty": 4,
-          "nm": "Shape Layer 1",
-          "sr": 1,
-          "st": 0,
-          "op": 58.50000000000001,
-          "ip": 0,
-          "hd": false,
-          "ddd": 0,
-          "bm": 0,
-          "hasMask": false,
-          "ao": 0,
-          "ks": {
-            "a": { "a": 0, "k": [32, 33] },
-            "s": { "a": 0, "k": [500, 500] },
-            "sk": { "a": 0, "k": 0 },
-            "p": { "a": 0, "k": [250, 251] },
-            "r": { "a": 0, "k": 0 },
-            "sa": { "a": 0, "k": 0 },
-            "o": { "a": 0, "k": 100 }
-          },
-          "ef": [],
-          "shapes": [
+          "ty": "gr",
+          "it": [
             {
-              "ty": "gr",
+              "d": 1,
+              "ty": "el",
+              "s": { "a": 0, "k": [16, 16], "ix": 2 },
+              "p": { "a": 0, "k": [0, 0], "ix": 3 },
+              "nm": "椭圆路径 1",
+              "mn": "ADBE Vector Shape - Ellipse",
+              "hd": false
+            },
+            {
+              "ty": "fl",
+              "c": {
+                "a": 0,
+                "k": [0.909803921569, 0.050980392157, 0.050980392157, 1],
+                "ix": 4
+              },
+              "o": { "a": 0, "k": 100, "ix": 5 },
+              "r": 1,
               "bm": 0,
-              "hd": false,
-              "nm": "Group 5",
-              "it": [
-                {
-                  "ty": "sh",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Path 5",
-                  "d": 1,
-                  "ks": {
-                    "a": 0,
-                    "k": {
-                      "c": true,
-                      "i": [
-                        [0, 0],
-                        [0, -11.3888407],
-                        [-4.3333333, 0],
-                        [0, 11.388840700000003],
-                        [9.388840700000003, 0],
-                        [3.1184307999999987, -3.696753659999999],
-                        [5.215011799999999, 0]
-                      ],
-                      "o": [
-                        [-9.38884075, 0],
-                        [0, 11.388840700000003],
-                        [4.3333333, 0],
-                        [0, -11.3888407],
-                        [-5.215011799999999, 0],
-                        [-3.1184307999999987, -3.696753659999999],
-                        [0, 0]
-                      ],
-                      "v": [
-                        [19, 6],
-                        [2, 23],
-                        [32, 60],
-                        [62, 23],
-                        [45, 6],
-                        [32, 12.0449665],
-                        [19, 6]
-                      ]
-                    }
-                  }
-                },
-                {
-                  "ty": "fl",
-                  "bm": 0,
-                  "hd": false,
-                  "nm": "Fill",
-                  "c": { "a": 0, "k": [0.8941, 0.2078, 0.2078] },
-                  "r": 2,
-                  "o": { "a": 0, "k": 100 }
-                },
-                {
-                  "ty": "tr",
-                  "a": { "a": 0, "k": [32, 33] },
-                  "s": {
-                    "a": 1,
-                    "k": [
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [100, 100],
-                        "t": 0
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [120, 120],
-                        "t": 19
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [90, 90],
-                        "t": 27
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [110, 110],
-                        "t": 33
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [97, 97],
-                        "t": 38
-                      },
-                      {
-                        "o": { "x": 0.167, "y": 0.167 },
-                        "i": { "x": 0.833, "y": 0.833 },
-                        "s": [102, 102],
-                        "t": 42
-                      },
-                      { "s": [100, 100], "t": 46 }
-                    ]
-                  },
-                  "sk": { "a": 0, "k": 0 },
-                  "p": { "a": 0, "k": [32, 33] },
-                  "r": { "a": 0, "k": 0 },
-                  "sa": { "a": 0, "k": 0 },
-                  "o": { "a": 0, "k": 100 }
-                }
-              ]
+              "nm": "填充 1",
+              "mn": "ADBE Vector Graphic - Fill",
+              "hd": false
+            },
+            {
+              "ty": "tr",
+              "p": { "a": 0, "k": [-178.438, 16.063], "ix": 2 },
+              "a": { "a": 0, "k": [0, 0], "ix": 1 },
+              "s": { "a": 0, "k": [100, 100], "ix": 3 },
+              "r": { "a": 0, "k": 0, "ix": 6 },
+              "o": { "a": 0, "k": 100, "ix": 7 },
+              "sk": { "a": 0, "k": 0, "ix": 4 },
+              "sa": { "a": 0, "k": 0, "ix": 5 },
+              "nm": "变换"
             }
           ],
-          "ind": 7
+          "nm": "椭圆 1",
+          "np": 3,
+          "cix": 2,
+          "bm": 0,
+          "ix": 1,
+          "mn": "ADBE Vector Group",
+          "hd": false
         }
-      ]
+      ],
+      "ip": 0,
+      "op": 20,
+      "st": 0,
+      "bm": 0
+    },
+    {
+      "ddd": 0,
+      "ind": 5,
+      "ty": 2,
+      "nm": "Group 427319515.png",
+      "cl": "png",
+      "refId": "image_0",
+      "sr": 1,
+      "ks": {
+        "o": { "a": 0, "k": 100, "ix": 11 },
+        "r": { "a": 0, "k": 0, "ix": 10 },
+        "p": { "a": 0, "k": [200, 200, 0], "ix": 2 },
+        "a": { "a": 0, "k": [200, 136, 0], "ix": 1 },
+        "s": { "a": 0, "k": [100, 100, 100], "ix": 6 }
+      },
+      "ao": 0,
+      "ip": 0,
+      "op": 21,
+      "st": 0,
+      "bm": 0
     }
-  ]
+  ],
+  "markers": []
 }
diff --git a/src/components/Animate/index.ts b/src/components/Animate/index.ts
new file mode 100644
index 0000000..e27357b
--- /dev/null
+++ b/src/components/Animate/index.ts
@@ -0,0 +1,3 @@
+import AnimateDevice from "./src/AnimateDevice.vue";
+
+export { AnimateDevice };
diff --git a/src/components/Animate/src/AnimateDevice.vue b/src/components/Animate/src/AnimateDevice.vue
new file mode 100644
index 0000000..04e08c5
--- /dev/null
+++ b/src/components/Animate/src/AnimateDevice.vue
@@ -0,0 +1,38 @@
+<!--
+ * @Author: donghao donghao@supervision.ltd
+ * @Date: 2024-01-16 13:49:37
+ * @LastEditors: donghao donghao@supervision.ltd
+ * @LastEditTime: 2024-01-16 13:53:47
+ * @FilePath: \General-AI-Platform-Web-Client\src\components\Animate\src\animateDevice.vue
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<script setup lang="ts">
+import { ref, onMounted } from "vue"; //引入相关api
+import lottie from "lottie-web"; //引入动效库
+import json01 from "@/assets/animate/device/01.json"; //引入下载的动效json
+
+defineOptions({
+  name: "AnimateDevice"
+});
+
+const animation1 = ref(null); //获取dom
+function initAnimate() {
+  console.log(lottie, "lottie");
+  lottie.loadAnimation({
+    container: animation1.value, //选择渲染dom
+    renderer: "svg", //渲染格式
+    loop: true, //循环播放
+    autoplay: true, //是否i自动播放,
+    animationData: json01 //渲染动效json
+  });
+}
+onMounted(() => {
+  initAnimate();
+});
+</script>
+
+<template>
+  <div style="width: 100px">
+    <div ref="animation1" />
+  </div>
+</template>
diff --git a/src/components/CustomTree/src/collapseTreeItem b/src/components/CustomTree/src/collapseTreeItem
new file mode 100644
index 0000000..e69de29
diff --git a/src/components/CustomTree/src/demo.md b/src/components/CustomTree/src/demo.md
new file mode 100644
index 0000000..fd82da1
--- /dev/null
+++ b/src/components/CustomTree/src/demo.md
@@ -0,0 +1,472 @@
+<template>
+  <div class="courseCat_wrap courseLession_wrap" v-if="pageMode == 'courseCat'">
+    <van-sticky>
+      <div class="bg-white title_box">
+        <p class=" fs18 fw5 text_color title_centent flex-rb flex-ac">
+          {{ detailInfo.name }}
+        </p>
+        <p class="fs12 text-gray progress_box">
+          已学习<span class="theme_color">{{ totalLesson.learnedCount }}</span
+          >节/共{{ totalLesson.totalCount }}节
+        </p>
+      </div>
+
+      <HTab
+        ref="HTabComp"
+        class="bg-white"
+        :options="csTabOptions"
+        :tabList="tabOptions"
+        @change="menuChange"
+      >
+      </HTab>
+    </van-sticky>
+
+    <div class="catalogTree fs14" ref="CSCatTreeRefs">
+      <ul class="bg-white root_cat_box pdx15">
+        <li v-for="(v, index) in state.courseTreeData" :key="v.id">
+          <div
+            class="chapter_box flex-ac flex-rb"
+            v-if="v.type == 0"
+            @click="handleExpend(v)"
+          >
+            <span class="chapter_label fw5 single-line">
+              {{ v.name }}
+            </span>
+            <div class="collapseIcon_box flex-cc">
+              <div class="arrow" :class="v.expended ? '' : 'activeUp'"></div>
+            </div>
+          </div>
+          <div class="courseware_box" v-if="v.type == 2">
+            <!-- 课 -->
+            <CSLessonsBox
+              :lessonDownProgress="lessonDownProgress"
+              :info="v"
+              :courseDetail="detailInfo"
+              :lessonStudyProgress="lessonStudyProgress"
+            />
+          </div>
+          <div class="section_box flex-ac flex-rb" v-if="v.type == 1">
+            <span>{{ v.name }}</span>
+          </div>
+          <transition name="mybox">
+            <div class="box" v-show="v.expended">
+              <ul v-if="isArray(v.childrenList) && v.childrenList.length">
+                <li v-for="(item, index) in [...v.childrenList]" :key="item.id">
+                  <CSLessonsBox
+                    :info="item"
+                    :courseDetail="detailInfo"
+                    :lessonDownProgress="lessonDownProgress"
+                    :lessonStudyProgress="lessonStudyProgress"
+                  />
+                  <hr
+                    class="mdy20"
+                    v-if="index !== [...v.childrenList].length - 1"
+                  />
+                </li>
+              </ul>
+              <CSLessonPracticeBox
+                :info="v.coursePaperVOS"
+                :courseInfo="v"
+                :courseDetail="detailInfo"
+                v-if="
+                  v.type == 0 &&
+                    isArray(v.coursePaperVOS) &&
+                    v.coursePaperVOS.length &&
+                    v.coursePaperVOS != ['']
+                "
+              />
+            </div>
+          </transition>
+        </li>
+        <li v-for="v in practiceList" :key="v.id" class="bg-white exam_box">
+          <p
+            class="fs14 pdy12"
+            v-if="v.type == 0 && detailInfo.joinStatus >= 1"
+          >
+            课后练习
+          </p>
+          <div
+            class="flex pdy12"
+            v-if="v.type == 0 && detailInfo.joinStatus >= 1"
+          >
+            <span class="flex-cc exam_tag fs10">
+              <span class="exam_tag_icon"></span>
+              <span class="fss10">练习</span>
+            </span>
+            <div class="exam_title">
+              <p class="paperName_label fw5 single-line">
+                {{ v.paperName }}
+              </p>
+              <div class="flex-rb exam_status fs12 theme_color">
+                <span class=" single-line" v-if="v.status == 0">
+                  未开始
+                </span>
+                <span class=" single-line paper_name" v-if="v.status == 1">
+                  <span v-if="v.pass">已通过</span>
+                  <span v-else>未通过</span>
+                </span>
+                <span
+                  :class="[`${fetchDetailCatBtn(v).statusType}_tags`]"
+                  @click="doTabCoursePractice(v, {...detailInfo})"
+                >
+                  {{ fetchDetailCatBtn(v).practiceLabel }}
+                </span>
+              </div>
+            </div>
+          </div>
+        </li>
+      </ul>
+      <HEmpty v-if="!state.courseTreeData.length && !isLoading" />
+      <div ref="CSDetailCommentRefs">
+        <CSDetailComment
+          ref="detailCommentRefs"
+          :info="detailInfo"
+          :courseConf="courseConf"
+          @tenantComment="doTenantComment"
+        />
+      </div>
+    </div>
+
+  </div>
+  <!-- {{ pageMode }} -->
+  <div v-if="pageMode == 'courseDot'">
+    <CSLessonPoint
+      ref="CSLessonPointRefs"
+      :stepData="pointData"
+      @closeDot="openCat"
+      @dotTab="doDotTab"
+    />
+  </div>
+  <!-- 评论 -->
+  <CComment
+    ref="commentRefs"
+    :ocInfo="courseConf"
+    :isNeedClose="true"
+    @successComment="successComment"
+  />
+</template>
+
+<script setup>
+import {
+  reactive,
+  nextTick,
+  computed,
+  ref,
+  onMounted,
+  onActivated,
+  getCurrentInstance,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+//
+// 组件区
+import {
+  CSLessonsBox,
+  CSLessonPracticeBox,
+  CSDetailComment,
+  CSLessonPoint,
+} from "../components";
+import { HTab, HEmpty } from "@/components/HVant/index";
+import { CComment } from "@/components/common";
+// hooks
+import { clientChangeVideo, clientChangeVideoDot } from "@/hooks/web/useClientFc"
+import { useWebFunc } from "@/hooks/web/useWebFunc";
+import { useCourseCat } from "../hooks/useCourseCat";
+import { useCourseDetail } from "../hooks/useCourseDetail";
+import { useConf, useReqApi, useCourseMain } from "../hooks/useMain";
+import {
+  fetchNextCoursewareNode,
+  fetchCurrentCourseNode,
+} from "../hooks/format";
+// 其它
+import { isArray } from "@/utils/is/isString";
+//数据
+import { testFlag } from "../hooks/test";
+import { testData } from "@/testData/courseDot";
+const { appContext } = getCurrentInstance();
+const route = useRoute();
+const router = useRouter();
+const {
+  getCourseCatalogApi,
+  getCourseInfoApi,
+  updateLastLearnCatalogIdCourseApi,
+  getCourseProgressApi,
+} = useReqApi;
+const { courseVideoDetailTabConf } = useConf;
+
+const {
+  doTabExam,
+  clientCourseCatPracticeAlertView,
+  doLoadCoursePractice,
+  practiceList,
+  doTabCoursePractice
+} = useCourseCat();
+const { setWebFunc } = useWebFunc();
+const { fetchDetailCatBtn } = useCourseDetail();
+
+// 初始值
+const lessonDownProgress = ref({}); // 课件下载进度
+const courseRecordInfo = ref({
+  totalProgress: 0,
+}); // 课程端数据汇总
+const lessonStudyProgress = ref({}); // 课件学习进度
+const totalLesson = ref({
+  learnedCount: 0,
+  totalCount: 0,
+});
+
+const state = reactive({
+  currMenuIndex: 0,
+  activeLesson: [],
+  courseListOptions: {
+    // isCustom: true
+  },
+  courseTreeData: [], //courseCatData
+});
+const detailInfo = ref({});
+const pageMode = ref("courseCat");
+const isLoading = ref(false);
+const courseConf = reactive({
+  operationType: 0,
+});
+const csTabOptions = reactive({
+  defaultValue: 0,
+});
+const tabOptions = computed(() => {
+  return courseVideoDetailTabConf.filter((item) => {
+    if (item.id === "1") {
+      item.name = `评论(${detailInfo.value.commentCount || 0})`;
+    }
+    return item;
+  });
+});
+
+const pointData = ref([]); // 知识点
+const currentCatData = ref({}); // 当前学习目录项
+// 实例
+const CSCatTreeRefs = ref("");
+const CSDetailCommentRefs = ref("");
+const commentRefs = ref("");
+const detailCommentRefs = ref("");
+const CSLessonPointRefs = ref("");
+
+/**step1 目录、评论模块切换 */
+function menuChange(record) {
+  state.currMenuIndex = record;
+  nextTick(() => {
+    switch (record) {
+      case "0":
+         window.scrollTo(
+          0,
+          0
+        );
+        break;
+      case "1":
+        // CSDetailCommentRefs.value.scrollIntoView({
+        //   behavior: "smooth",
+        // });
+        window.scrollTo(
+          0,
+          CSDetailCommentRefs.value.offsetTop - CSCatTreeRefs.value.offsetTop
+        );
+        break;
+    }
+  });
+}
+
+/**step2 目录详情数据 评论数据 推荐课程数据*/
+// 目录数据
+async function loadCatData(nextCat, nextCatId) {
+  isLoading.value = true;
+  const res = await getCourseCatalogApi({ id: route.query.id }).finally(() => {
+    isLoading.value = false;
+  });
+  // console.log(res, "loadCatData");
+  if (isArray(res)) {
+    state.courseTreeData = res.filter((item) => {
+      item.expended = true;
+      return item;
+    });
+    if (nextCatId) {
+      // 下一课已经解锁 广播下一节点id
+      let params = {
+        ...nextCat,
+        courseTrainId: route.query.id,
+      };
+      appContext.config.globalProperties.Bus.emit(
+        "changeCurrentCatId",
+        nextCatId
+      );
+      clientChangeVideo(params, (_) => {});
+    }
+  } else {
+    state.courseTreeData = [];
+  }
+}
+
+/**step3 目录交互完善 展开收起 对接端 */
+//收起/展开
+function handleExpend(record) {
+  record.expended = !record.expended;
+}
+
+/**step4 other */
+// 关闭知识点-打开目录
+function openKnowledge() {
+  if (testFlag.isOpenDot) {
+    pointData.value = testData;
+    openDot();
+  } else {
+    setWebFunc("webOpenKnowledge", (res) => {
+      pointData.value = JSON.parse(res);
+      console.info("pointData", pointData.value);
+      openDot();
+    });
+  }
+}
+// 从端获取下载进度
+function fetchDownloadProgress() {
+  setWebFunc("changeDownloadProgress", (res) => {
+    lessonDownProgress.value = res;
+  });
+}
+// 从端获取学习进度
+function fetchStudyProgress() {
+  setWebFunc("changeStudyProgress", (res) => {
+    // console.log(res, "changeStudyProgress");
+    lessonStudyProgress.value = res.studyCourseware;
+    courseRecordInfo.value = res;
+    // // 播报课程总进度
+    lessonStudyProgress.value.learningProgress>=1 && loadCourseProgress()
+  });
+}
+// 从接口获取学习进度 获取总进度
+async function loadCourseProgress() {
+  const res = await getCourseProgressApi({ id: route.query.id });
+  // console.log(res, "loadCourseProgress_res");
+  totalLesson.value = res;
+}
+
+// 完成本节播放,后续处理 (练习提醒、下一节自动切换) completeStatus 练习完成状态
+function webFnPlayNextVideo() {
+  setWebFunc("playNextVideo", (res) => {
+    const currentCat = fetchCurrentCourseNode(
+      state.courseTreeData,
+      res.catalogId
+    );
+    // 播报课程总进度
+    loadCourseProgress();
+    console.log("currentCat_coursePaperVOS", currentCat);
+    // 确认是练习提醒还是进入下一节
+    if (
+      currentCat.coursePaperVOS &&
+      (![1, 2].includes(currentCat.coursePaperVOS?.status) ||
+        ![1].includes(currentCat?.completeStatus))
+    ) {
+      // 课节练习提醒 练习提醒 课程状态处理 completeStatus 0 未完成 2 音视频完成 1 全部完成含练习
+      currentCatData.value = {
+        ...currentCat,
+        coursePracticeType: "coursewarePractice",
+      };
+      clientCourseCatPracticeAlertView({}, () => {
+        const { coursePaperVOS } = currentCatData.value;
+        doTabExam(coursePaperVOS[0]);
+      });
+    } else {
+      // 直接跳下一节课
+      fetchNextCourse(res);
+    }
+  });
+}
+
+// 判断当前课是否有练习
+function fetchNextCourse(res) {
+  // 弹下一课提醒
+  const nextCat = fetchNextCoursewareNode(state.courseTreeData, res.catalogId);
+  const nextCatId = nextCat.id;
+  //有下一课, 自动播放下一课,没有不处理
+  if (nextCatId != res.catalogId) {
+    updateChangeLessonApi(nextCatId);
+    loadCatData(nextCat, nextCatId);
+  } else {
+    // 广播下一节点id
+    // appContext.config.globalProperties.Bus.emit("changeCurrentCatId", nextCatId);
+  }
+}
+
+// 汇报上次学到的课
+function updateChangeLessonApi(nextCatId) {
+  updateLastLearnCatalogIdCourseApi({
+    courseCatalogId: nextCatId,
+    resourceId: route.query.id,
+  });
+}
+
+// 打开目录
+function openCat() {
+  pageMode.value = "courseCat";
+}
+// 打开知识点
+function openDot() {
+  pageMode.value = "courseDot";
+}
+// 切换知识点
+function doDotTab(params) {
+  clientChangeVideoDot(params, (res) => {
+    if (res == 1) {
+      CSLessonPointRefs.value.initChangePoint();
+    }
+  });
+}
+
+function loadDetail() {
+  nextTick(() => {
+    detailCommentRefs.value.initData();
+  });
+  if (isLoading.value) {
+    return;
+  }
+  doLoadData();
+  loadCatData();
+  doLoadCoursePractice();
+  loadCourseProgress();
+}
+
+// 详情数据
+async function doLoadData() {
+  const res = await getCourseInfoApi({
+    id: Number(route.query.id),
+  });
+  detailInfo.value = res;
+}
+
+function loadWebFunc() {
+  openKnowledge();
+  fetchDownloadProgress();
+  fetchStudyProgress();
+  webFnPlayNextVideo();
+}
+
+// 打开评论
+function doTenantComment() {
+  commentRefs.value.initPopup();
+}
+
+// 评论成功
+function successComment() {
+  loadDetail();
+}
+
+onMounted(() => {
+  loadWebFunc();
+  loadDetail();
+});
+
+onActivated(() => {
+  loadDetail();
+});
+</script>
+
+<style lang="less">
+@import url("../style/courseCat.less");
+@import url("../style/courseDetail.less");
+</style>
diff --git a/src/components/CustomTree/src/demoItem.md b/src/components/CustomTree/src/demoItem.md
new file mode 100644
index 0000000..863b4bb
--- /dev/null
+++ b/src/components/CustomTree/src/demoItem.md
@@ -0,0 +1,347 @@
+<template>
+  <div class="course_lessonsBox fs14 text_1">
+    <!-- 节 -->
+    <div class="section_box flex-ac flex-rb" v-if="catLatestInfo.type == 1">
+      <span>{{ catLatestInfo.name }}</span>
+    </div>
+    <!-- 课 -->
+    <!-- filter_gray -->
+    <div class="lesson_box flex-rb" :class="{'filter_gray': fetchIsNoneEffect(catLatestInfo)}" v-if="catLatestInfo.type == 2" @click="handelTab">
+      <div class="flex-re">
+        <span class="lesson_tag courseCat_tag theme_color flex-cc fs10">
+          <span class="icon_cat" :class="activeClass(catLatestInfo).iconClass"></span>
+          <span class="fss10">{{ activeClass(catLatestInfo).label }}</span>
+        </span>
+        <!-- 课件内容 -->
+        <div class="lesson_content_box">
+          <div class="flex cat_title_box">
+            <p class="lesson_infoName text_2 flex-wr">{{ catLatestInfo.name }}</p>
+            <span class="fss11" v-if="currentCatId == catLatestInfo.id">正在学</span>
+            <span class="fss11" v-if="!currentCatId && catLatestInfo.lastLearn"
+              >上次学到</span
+            >
+          </div>
+
+          <div class="course_status_box text_3">
+            <csLessonStatus
+              :isLock="currentIsLock"
+              :courseInfo="catLatestInfo"
+              :courseDetail="courseDetail"
+              :lessonStudyProgress="lessonStudyProgress"
+            />
+          </div>
+        </div>
+      </div>
+      <div @click.stop="doDownLoadEvent()">
+        <!-- 课件下载 -->
+        <div
+          class="flex-cc lesson_down"
+          v-if="currentIsLock == 0 && [3, 4].includes(catLatestInfo.courseType)"
+
+        >
+          <!-- 下载进度为0 -->
+          <span v-if="courseDetail.joinStatus < 1"></span>
+          <!-- @click.stop="doDownLoad" -->
+          <span
+            class="lesson_down_icon"
+            v-else-if="downloadProgress == 0"
+          ></span>
+          <!-- 正在下载 | 暂停 -->
+          <div
+            class="tc"
+            v-else-if="downloadProgress < 100 && downloadProgress > 0"
+          >
+          <!-- @click.stop="changeDownLoadMode" -->
+            <div>
+              <span
+                class="lesson_down_loading_icon"
+                :class="isDownload ? 'downloadPause' : 'downLoading'"
+              ></span>
+              <p class="w-8 fss11 theme_color">下载 {{ downloadProgress }} %</p>
+            </div>
+            <!-- <div v-if="!isDownload" @click.stop="doDownLoad">
+            <span class="lesson_down_loading_icon"></span>
+            <p class="fss11 theme_color">已暂停</p>
+          </div> -->
+          </div>
+          <!-- 下载完成 -->
+          <span v-else class="theme_color">已下载</span>
+        </div>
+        <div class="flex-cc noeffect_box" v-if="fetchIsNoneEffect(info)">
+          <div class="icon_noEffect"></div>
+        </div>
+      </div>
+    </div>
+    <ul>
+      <li v-for="v in catLatestInfo.childrenList">
+        <courseLessonsBox
+          :info="v"
+          :courseDetail="courseDetail"
+          color="#21CC64"
+          :lessonDownProgress="lessonDownProgress"
+          :lessonStudyProgress="lessonStudyProgress"
+        />
+      </li>
+    </ul>
+    <csLessonPracticeBox
+      :info="catLatestInfo.coursePaperVOS"
+      :courseInfo="info"
+      v-if="
+        catLatestInfo.type == 1 &&
+          isArray(catLatestInfo.coursePaperVOS) &&
+          catLatestInfo.coursePaperVOS.length &&
+          catLatestInfo.coursePaperVOS != ['']
+      "
+    />
+
+  </div>
+</template>
+
+<script setup>
+import {
+  defineComponent,
+  ref,
+  nextTick,
+  getCurrentInstance,
+  onMounted,
+  watch,
+  computed,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+// 组件
+import csLessonStatus from "./csLessonStatus.vue";
+import csLessonPracticeBox from "./csLessonPracticeBox.vue";
+// hooks
+import { clientChangeVideo, clientDownloadVideo,  clientMediaDownloadProgress,
+  clientCancelDownloadMedia } from "@/hooks/web/useClientFc"
+  import { formatIsUnLock } from "@/hooks/format/comm";
+import { useCourseMain, useReqApi } from "../hooks/useMain";
+import { useCourseDetail } from "../hooks/useCourseDetail";
+import { debounceFun } from "@/hooks/core/useLodash.js";
+import {globalDebounceTime} from "@/config/settingConfig/core.js"
+
+//方法
+import { isArray } from "@/utils/is/isString";
+const { appContext } = getCurrentInstance();
+const {
+  activeClass
+} = useCourseMain();
+
+const props = defineProps({
+  info: {
+    type: Object,
+    default() {
+      return {
+        id: "",
+        name: "",
+        childrenList: [],
+        isLastLearnCatalog: false,
+      };
+    },
+  },
+
+  courseDetail: {
+    type: Object,
+    default() {
+      return {};
+    },
+  },
+
+  lessonDownProgress: {
+    type: Object,
+    default() {
+      return {};
+    },
+  },
+
+  lessonStudyProgress: {
+    type: Object,
+    default() {
+      return {};
+    },
+  },
+});
+defineComponent({ name: "courseLessonsBox" });
+
+const router = useRouter();
+const route = useRoute();
+const currentCatId = ref(""); // 课件目录id (正在学)
+const currentDownloadCatId = ref(""); // 课件目录id (下载)
+const { fetchCourseTipByRecord , fetchIsNoneEffect} = useCourseDetail();
+const { updateLastLearnCatalogIdCourseApi } = useReqApi;
+
+const isDownload = ref(true); //控制下载课件的暂停
+const currCatFullData = ref({}); //当前目录课节更新所有数据
+
+const catLatestInfo = computed(() => { //实时的课程目录课件数据
+  return {...props.info ,...currCatFullData.value}
+})
+// 下载进度
+const downloadProgress = ref(0);
+// const currentIsLock = ref(1);
+const currentIsLock = computed(()=>{
+  return props.info?.isLock
+})
+
+
+// 跳转播放视频
+const handelTab = 
+  debounceFun(function() {
+   console.log('debounceFun_handelTab')
+   if(fetchIsNoneEffect(props.info)){ // 课节已失效
+    return
+  }
+  if(props.info.id == currentCatId.value){ // 相同目录事件不处理
+    return
+  }
+   updateChangeLessonApi();
+ }, globalDebounceTime);
+ 
+
+  
+
+// 汇报上次学到的课 拿到当前实时的返回进度
+async function updateChangeLessonApi() {
+  const resData = await updateLastLearnCatalogIdCourseApi({
+    courseCatalogId: props.info.id,
+    resourceId: route.query.id,
+  });
+  let params = {
+      ...props.info,
+      courseTrainId: route.query.id,
+  };
+  if(resData){
+    params = {...params, ...resData.data}
+  }
+
+  if (formatIsUnLock({ ...params })) {
+    currCatFullData.value = params // 本课节接口数据更新
+    appContext.config.globalProperties.Bus.emit(
+      "changeCurrentCatId",
+      props.info.id
+  );
+    //判断是否有锁
+    clientChangeVideo(params, (res) => {});
+  } else {
+    // 报名、锁状态提示
+    fetchCourseTipByRecord(props.courseDetail, "课件");
+  }
+  console.log(params, "updateChangeLessonApi");
+}
+
+// 下载相关
+function doDownLoadEvent() {
+  if(currentIsLock.value == 0 && [3, 4].includes(catLatestInfo.value?.courseType)){
+    if(props.courseDetail.joinStatus < 1){
+      return
+    }
+    if(downloadProgress.value == 0){
+      doDownLoad()
+      return
+    }
+    if(downloadProgress.value < 100 && downloadProgress.value > 0){
+      changeDownLoadMode()
+      return
+    }
+  }
+ 
+}
+
+// 下载课件
+const doDownLoad = debounceFun(function() {
+  if(fetchIsNoneEffect(props.info)){
+    return
+  }
+  let params = {
+    ...props.info,
+    courseTrainId: route.query.id,
+  };
+  currentDownloadCatId.value = props.info.id;
+  console.log(params, "clientDownloadVideo");
+  clientDownloadVideo(params, (res) => {});
+}, globalDebounceTime);
+
+//停止下载正在下载的课件
+const changeDownLoadMode = debounceFun(function() {
+  let params = {
+    ...props.info,
+    courseTrainId: route.query.id,
+  };
+  currentDownloadCatId.value = props.info.id;
+  console.log(params, "clientCancelDownloadMedia");
+  if (isDownload.value) {
+    doDownLoad();
+  } else {
+    clientCancelDownloadMedia(params, (res) => {});
+  }
+  changeIsDownload();
+}, globalDebounceTime);
+
+// 切换暂停 | 继续 下载模式
+function changeIsDownload() {
+  isDownload.value = !isDownload.value;
+}
+
+function initChangeDownloadProgress() {
+  console.log(
+    props.info.id,
+    props.lessonDownProgress,
+    "initChangeDownloadProgress"
+  );
+  const { progress } = props.lessonDownProgress;
+  fetchDownloadProgressVal(progress);
+}
+
+function fetchDownloadProgressVal(progress) {
+  let currProgress = Math.floor(100 * progress);
+  if (currProgress <= 0) {
+    currProgress = 0;
+  }
+  if (currProgress >= 100) {
+    currProgress = 100;
+    isDownload.value = false;
+  }
+  downloadProgress.value = currProgress;
+}
+
+nextTick(() => {
+  // if (props.info) {
+  //   currentIsLock.value = props.info?.isLock;
+  // }
+  if (props.info.isLastLearnCatalog) {
+    currentCatId.value = props.info.id;
+  }
+  // console.log(props.info.lessonId, "isLastLearnCatalog");
+  appContext.config.globalProperties.Bus.on("changeCurrentCatId", (data) => {
+    console.log("接收到的内容是:" + data);
+    currentCatId.value = data;
+    // if(){
+    //   currentIsLock.value = 0; //解锁
+    // }
+  });
+  if (props.info.type == 2) {
+    // 只有课才调用获取初始加载进度
+    clientMediaDownloadProgress(
+      { ...props.info, courseTrainId: route.query.id },
+      (res) => {
+        // initChangeDownloadProgress(res)
+        isDownload.value = res?.progress > 0 && res?.progress < 1;
+        fetchDownloadProgressVal(res?.progress);
+      }
+    );
+  }
+});
+watch(
+  () => props.lessonDownProgress,
+  () => {
+    if (props.lessonDownProgress.catalogId == props.info.id) {
+      initChangeDownloadProgress();
+    }
+  },
+  { deep: true }
+);
+</script>
+
+<style lang="less">
+@import url("../style/courseCat.less");
+</style>
diff --git a/src/views/demo/animateDevice.vue b/src/views/demo/animateDevice.vue
index 15d667c..292ca12 100644
--- a/src/views/demo/animateDevice.vue
+++ b/src/views/demo/animateDevice.vue
@@ -2,7 +2,7 @@
  * @Author: donghao donghao@supervision.ltd
  * @Date: 2024-01-15 11:06:34
  * @LastEditors: donghao donghao@supervision.ltd
- * @LastEditTime: 2024-01-15 11:07:03
+ * @LastEditTime: 2024-01-16 13:50:46
  * @FilePath: \general-work-web\General-AI-Platform-Web-Client\src\views\demo\animateDevice.vue
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
@@ -32,7 +32,7 @@ onMounted(() => {
 </script>
 
 <template>
-  <div>
+  <div style="width: 100px">
     <div ref="animation1" />
   </div>
 </template>
diff --git a/src/views/device/components/DeviceCard.vue b/src/views/device/components/DeviceCard.vue
index ab0795e..65913e8 100644
--- a/src/views/device/components/DeviceCard.vue
+++ b/src/views/device/components/DeviceCard.vue
@@ -3,6 +3,7 @@ import { computed, PropType } from "vue";
 import control from "@/assets/svg/device/control.svg?component";
 import monitor1 from "@/assets/svg/device/monitor1.svg?component";
 import monitor2 from "@/assets/svg/device/monitor2.svg?component";
+import { AnimateDevice } from "@/components/Animate";
 defineOptions({
   name: "DeviceCard"
 });
@@ -41,7 +42,7 @@ const isEnabledClass = computed(() => [
 <template>
   <div :class="cardClass">
     <div class="device-header">
-      <div class="device--logo mr-2">
+      <div class="mr-2 device--logo">
         <control />
         <monitor1 v-if="false" />
         <monitor2 v-if="false" />
@@ -67,7 +68,9 @@ const isEnabledClass = computed(() => [
         </div>
         <div>创建时间:<span>DEVICE00002</span></div>
       </div>
-      <div class="device-icon"><img src="@/assets/control.png" /></div>
+      <div class="device-icon">
+        <AnimateDevice /><img src="@/assets/control.png" />
+      </div>
     </div>
   </div>
 </template>