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>