From 1b43f9856691b5dba46648c1187f46cafc1ee04f Mon Sep 17 00:00:00 2001 From: "X1627315083@163.com" <1627315083@qq.com> Date: Mon, 16 Mar 2026 09:46:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=B0=83=E6=95=B43d=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/icons/threeLogo.svg | 11 ++++++ src/assets/images/threeLoading.png | Bin 0 -> 698 bytes .../components/tools/threeModel/model.vue | 35 +++++++++++++++--- .../components/tools/upload-file.vue | 2 +- .../Canvas/components/base-modal.vue | 2 +- src/lang/en.ts | 4 ++ src/lang/zh-cn.ts | 4 ++ 7 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 src/assets/icons/threeLogo.svg create mode 100644 src/assets/images/threeLoading.png diff --git a/src/assets/icons/threeLogo.svg b/src/assets/icons/threeLogo.svg new file mode 100644 index 0000000..8e3c6b2 --- /dev/null +++ b/src/assets/icons/threeLogo.svg @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/images/threeLoading.png b/src/assets/images/threeLoading.png new file mode 100644 index 0000000000000000000000000000000000000000..512121d4e74114a02b53cb411d4867a456450262 GIT binary patch literal 698 zcmV;r0!96aP)dV`c>+r%Wj>P6^M$4CK5tOsc92hQqVBm_v!p^1gmW@&04bj#$$i}{rf%6Ua%F5 zMSU`vd>V~LhQeO3jmP8oa5&_%+3fE{a6BGYg%CFmha>Ly`_*7D$b3E@*ECJwn*{;^ zZnN10puFGjYlFdn&FAyqQn0S;;niw&XR%l`KsbN|6$GQ0z;?TxK_vrFpmW187O@uoP!j^6=ka(RRaITOTrP%~;RZ}m6k5Y@bppSG;_K;j`iJ%^G7GF$t4^u_`&p?} z+ATdOR+tYZgJv=rg6asxe!u^9n&;VU_8z|6!=JZ!VM-}RDRoRGjbe;_ z9K!H0qSxzj@)8dvPzWwOo=Q;kYNOGpp1=xzXaJL+s@Llc0b*Vsqc|SGaUgj}>BNrR zgd-J+A>eBZ7F3_#geMY-*W2y3Lyr}WM#JPSlAlE)5f$SXKsgToc2sG0ilKgv{nvoL zM*%H3=ii~Y^8`NUU8z(GVZ#rqs6wHTKesNOPTyhO6+#1RzqVSf1
+
+ +
-
Load...
+
+ + {{ $t('threeModel.loading') }} +
@@ -190,30 +196,49 @@ defineExpose({open}) border: 1px solid #D9D9D9; overflow: hidden; } + > .icon{ + position: absolute; + bottom: 2.4rem; + right: 2.4rem; + } > .load{ position: absolute; width: 100%; height: 100%; top: 0; left: 0; - background: rgba(0, 0, 0, .2); + background: #e6e6e6; display: flex; align-items: center; justify-content: center; flex-direction: column; color: #fff; + > .text{ + font-weight: 500; + font-size: 1.8rem; + line-height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: #747474; + > img{ + margin-right: 1rem; + } + } > i{ font-size: 3rem; } > .loadBox{ - width: 15rem; + width: 26rem; height: 1rem; - border-radius: 1rem; + border-radius: 3.3rem; background: #fff; overflow: hidden; + margin-top: 1.2rem; > .schedule{ height: 100%; - background: greenyellow; + border-radius: 3.3rem; + background: #848484; } } } diff --git a/src/components/Canvas/FlowCanvas/components/tools/upload-file.vue b/src/components/Canvas/FlowCanvas/components/tools/upload-file.vue index 27a6907..740e719 100644 --- a/src/components/Canvas/FlowCanvas/components/tools/upload-file.vue +++ b/src/components/Canvas/FlowCanvas/components/tools/upload-file.vue @@ -80,7 +80,7 @@ text-align: center; line-height: 18px; background-color: #fff; - font-size: 6px; + font-size: 9px; color: #000; border: 1px solid #d9d9d9; cursor: pointer; diff --git a/src/components/Canvas/components/base-modal.vue b/src/components/Canvas/components/base-modal.vue index a6377c5..0ce7ed6 100644 --- a/src/components/Canvas/components/base-modal.vue +++ b/src/components/Canvas/components/base-modal.vue @@ -26,7 +26,7 @@ default: '63vw' } }) - const showDialog = ref(false) + const showDialog = ref(true) const open = (url_: any) => { showDialog.value = true } diff --git a/src/lang/en.ts b/src/lang/en.ts index c6a61b2..1750c74 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -187,5 +187,9 @@ export default { }, assistant: { inputPlaceholder: 'Ask anything', + }, + //3d面板 + threeModel: { + loading: 'Loading', } } diff --git a/src/lang/zh-cn.ts b/src/lang/zh-cn.ts index b98be7b..db123b9 100644 --- a/src/lang/zh-cn.ts +++ b/src/lang/zh-cn.ts @@ -182,5 +182,9 @@ export default { }, assistant: { inputPlaceholder: '请输入' + }, + //3d面板 + threeModel: { + loading: '加载中', } } From 710a135089212ec9cd058c88590de8f949303272 Mon Sep 17 00:00:00 2001 From: "X1627315083@163.com" <1627315083@qq.com> Date: Mon, 16 Mar 2026 09:47:01 +0800 Subject: [PATCH 2/3] fix --- src/components/Canvas/components/base-modal.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Canvas/components/base-modal.vue b/src/components/Canvas/components/base-modal.vue index 0ce7ed6..a6377c5 100644 --- a/src/components/Canvas/components/base-modal.vue +++ b/src/components/Canvas/components/base-modal.vue @@ -26,7 +26,7 @@ default: '63vw' } }) - const showDialog = ref(true) + const showDialog = ref(false) const open = (url_: any) => { showDialog.value = true } From dec750ab4821e5478e00fcb7f840ca7f935faa74 Mon Sep 17 00:00:00 2001 From: lzp Date: Mon, 16 Mar 2026 11:38:58 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=B1=E5=BA=A6=E7=94=BB=E5=B8=83?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/details-panel/index.vue | 12 ++++++-- .../Canvas/DepthCanvas/depth-canvas.vue | 3 +- .../DepthCanvas/manager/BrushIndicator.js | 2 ++ .../DepthCanvas/manager/CanvasManager.ts | 29 +++++++++++++++++++ .../manager/brushes/brushManager.js | 3 +- 5 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/components/Canvas/DepthCanvas/components/details-panel/index.vue b/src/components/Canvas/DepthCanvas/components/details-panel/index.vue index 5e61ee3..5e0320c 100644 --- a/src/components/Canvas/DepthCanvas/components/details-panel/index.vue +++ b/src/components/Canvas/DepthCanvas/components/details-panel/index.vue @@ -3,7 +3,7 @@
Edit Details - +
@@ -50,6 +50,7 @@ box-shadow: 0 1.66rem 2.33rem 0 rgba(0, 0, 0, 0.05); } > .header { + flex-shrink: 0; cursor: pointer; width: 100%; height: 5rem; @@ -64,10 +65,17 @@ font-size: 1.6rem; color: #000; } + > .arrow { + transition: transform 0.2s; + transform: rotate(-90deg); + &.show { + transform: rotate(0); + } + } } > .content { padding: 1.6rem; - + overflow-y: auto; } } diff --git a/src/components/Canvas/DepthCanvas/depth-canvas.vue b/src/components/Canvas/DepthCanvas/depth-canvas.vue index 112f3db..dd3dd1a 100644 --- a/src/components/Canvas/DepthCanvas/depth-canvas.vue +++ b/src/components/Canvas/DepthCanvas/depth-canvas.vue @@ -15,9 +15,10 @@
diff --git a/src/components/Canvas/DepthCanvas/manager/BrushIndicator.js b/src/components/Canvas/DepthCanvas/manager/BrushIndicator.js index 01184f7..ae38561 100644 --- a/src/components/Canvas/DepthCanvas/manager/BrushIndicator.js +++ b/src/components/Canvas/DepthCanvas/manager/BrushIndicator.js @@ -426,6 +426,8 @@ export class BrushIndicator { this.canvas.on("mouse:over", this._mouseEnterHandler); this.canvas.on("mouse:out", this._mouseLeaveHandler); this.canvas.on("mouse:move", this._mouseMoveHandler); + + this._observeCanvasChanges(); } /** diff --git a/src/components/Canvas/DepthCanvas/manager/CanvasManager.ts b/src/components/Canvas/DepthCanvas/manager/CanvasManager.ts index 0b24676..72949b9 100644 --- a/src/components/Canvas/DepthCanvas/manager/CanvasManager.ts +++ b/src/components/Canvas/DepthCanvas/manager/CanvasManager.ts @@ -147,6 +147,35 @@ export class CanvasManager { resetZoom() { this.animationManager.resetZoom() } + // 使用动画管理器的缩放方法 + animateZoom(point, targetZoom, options = {}) { + console.log(point, targetZoom, options) + this.animationManager.animateZoom(point, targetZoom, options); + } + zoomIn() { + const currentZoom = this.canvas.getZoom() + const newZoom = Math.min(currentZoom + 0.1, 20) // 增加20%,最大20倍 + + // 使用画布中心作为缩放点 + const centerPoint = { + x: this.canvas.width / 2, + y: this.canvas.height / 2 + } + + this.animateZoom(centerPoint, newZoom) + } + + zoomOut() { + const currentZoom = this.canvas.getZoom() + const newZoom = Math.max(currentZoom - 0.1, 0.1) // 减少20%,最小0.1倍 + + // 使用画布中心作为缩放点 + const centerPoint = { + x: this.canvas.width / 2, + y: this.canvas.height / 2 + } + this.animateZoom(centerPoint, newZoom) + } getObjects() { return this.canvas.getObjects() || [] } diff --git a/src/components/Canvas/DepthCanvas/manager/brushes/brushManager.js b/src/components/Canvas/DepthCanvas/manager/brushes/brushManager.js index e6542c4..05bb571 100644 --- a/src/components/Canvas/DepthCanvas/manager/brushes/brushManager.js +++ b/src/components/Canvas/DepthCanvas/manager/brushes/brushManager.js @@ -487,7 +487,8 @@ export class BrushManager { // 更新活动笔刷 if (this.activeBrush) { - this.activeBrush.configure(this.canvas.freeDrawingBrush, { color }); + const currentOpacity = this.brushStore.state.opacity; + this.activeBrush.configure(this.canvas.freeDrawingBrush, { color, opacity: currentOpacity }); } // 更新笔刷指示器大小