From 64a96a0cff7d731ce26d039b1f80db389ffd0802 Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Mon, 15 Sep 2025 13:35:03 +0800 Subject: [PATCH 1/7] fix --- src/views/HomeMain.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/HomeMain.vue b/src/views/HomeMain.vue index 25c5c6fe..69f3782e 100644 --- a/src/views/HomeMain.vue +++ b/src/views/HomeMain.vue @@ -349,7 +349,7 @@ export default defineComponent({ const pastDuePage = computed(()=>{ const isAllowedRoute = route.path === '/home/events' || route.path === '/home/works'; const hasNoSystemAccess = userDetail.value.systemList.indexOf(1) === -1; - return !hasNoSystemAccess && !isAllowedRoute; + return hasNoSystemAccess && !isAllowedRoute; }) watch(()=>homeMainData.userDetailLanguage,(newVal)=>{ if(locale.value == newVal || !newVal)return From 06a313c216f6730d5a95ab42bce17070b72703cf Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Tue, 16 Sep 2025 11:39:45 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BA=A2=E7=BB=BF?= =?UTF-8?q?=E5=9B=BE=E6=9B=B4=E6=96=B0=E5=89=8D=E5=90=8E=E7=89=87=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/Detail/canvas/index.vue | 2 +- src/component/Detail/detailLeft/module/currentList.vue | 2 ++ src/component/Detail/model/modelPosition.vue | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/component/Detail/canvas/index.vue b/src/component/Detail/canvas/index.vue index 485fb8dd..875d8d6b 100644 --- a/src/component/Detail/canvas/index.vue +++ b/src/component/Detail/canvas/index.vue @@ -185,7 +185,7 @@ export default defineComponent({ }) } const frontBackChange = (value:any)=>{ - let full = detailData.frontBack.front[detailData.imgDomIndex].undividedLayer || detailData.frontBack.front[detailData.imgDomIndex].imageUrl + let full = detailData.frontBack.front[detailData.imgDomIndex].undividedLayer || detailData.selectDetail.path let size = { ...detailData.canvasConfig, } diff --git a/src/component/Detail/detailLeft/module/currentList.vue b/src/component/Detail/detailLeft/module/currentList.vue index 66c719d5..16c5eed2 100644 --- a/src/component/Detail/detailLeft/module/currentList.vue +++ b/src/component/Detail/detailLeft/module/currentList.vue @@ -58,6 +58,8 @@ export default defineComponent({ if(props.type != 'models'){ if(!file.resData.minIOPath){ file.minIOPath = getMinioUrl(file.imgUrl || file.resData.url) + }else{ + file.minIOPath = file.resData.minIOPath } if(!file.designType){ file.designType = file.resData.designType diff --git a/src/component/Detail/model/modelPosition.vue b/src/component/Detail/model/modelPosition.vue index deb47ba9..c7edf80a 100644 --- a/src/component/Detail/model/modelPosition.vue +++ b/src/component/Detail/model/modelPosition.vue @@ -481,7 +481,7 @@ export default defineComponent({ align-items: center; justify-content: center; img{ - height: auto; + // height: auto; } } } From 26bb4f2d6b620a1f173ff5d48cd07fffc1bc3506 Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Tue, 16 Sep 2025 12:31:09 +0800 Subject: [PATCH 3/7] fix --- src/component/Detail/detailLeft/module/currentList.vue | 6 +++--- src/component/Detail/detailLeft/sketch.vue | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/component/Detail/detailLeft/module/currentList.vue b/src/component/Detail/detailLeft/module/currentList.vue index 16c5eed2..36094527 100644 --- a/src/component/Detail/detailLeft/module/currentList.vue +++ b/src/component/Detail/detailLeft/module/currentList.vue @@ -56,13 +56,13 @@ export default defineComponent({ }) const selectImgItem = (file:any)=>{ if(props.type != 'models'){ - if(!file.resData.minIOPath){ - file.minIOPath = getMinioUrl(file.imgUrl || file.resData.url) + if(!file.resData?.minIOPath){ + file.minIOPath = getMinioUrl(file?.imgUrl || file?.resData?.url) }else{ file.minIOPath = file.resData.minIOPath } if(!file.designType){ - file.designType = file.resData.designType + file.designType = file?.resData?.designType } } // store.commit('DesignDetail/setNewDetail',file.resData) diff --git a/src/component/Detail/detailLeft/sketch.vue b/src/component/Detail/detailLeft/sketch.vue index b5895d3a..59dcfa14 100644 --- a/src/component/Detail/detailLeft/sketch.vue +++ b/src/component/Detail/detailLeft/sketch.vue @@ -76,10 +76,10 @@ export default defineComponent({ selectImgItem(data) return } - data.id = id if(data?.imgUrl)data.url = data.imgUrl let value = { data, + id, } if(detailData.currentDetailType == 'sketch'){ detailData.selectDetail.sketchString = '' From ffa60e26b8b19a0082751359e7f4ec38ac7f81fc Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Tue, 16 Sep 2025 13:14:20 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8Ddetail=E5=88=87=E6=8D=A2s?= =?UTF-8?q?ketch=E5=89=8D=E5=90=8E=E7=89=87=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/Detail/DesignDetail.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/component/Detail/DesignDetail.vue b/src/component/Detail/DesignDetail.vue index 5f9bcc6e..e81ff67e 100644 --- a/src/component/Detail/DesignDetail.vue +++ b/src/component/Detail/DesignDetail.vue @@ -302,14 +302,15 @@ export default defineComponent({ if(detailData.currentDetailType == 'sketch' && newData){ color = detailData.designDetail.clothes[0].color?.rgba?.r?`${detailData.designDetail.clothes[0].color.rgba.r} ${detailData.designDetail.clothes[0].color.rgba.g} ${detailData.designDetail.clothes[0].color.rgba.b}`:'' } + console.log(list[i]) let data:any = { changed:false, color, designType:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.designType:list[i].designType, id:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.id:list[i].id, - maskMinioUrl:list[i]?.maskMinioUrl, + maskMinioUrl:(newData && detailData.currentDetailType == 'sketch')?'':list[i]?.maskMinioUrl, // maskUrl:'', - maskUrl:list[i].maskUrl, + maskUrl:(newData && detailData.currentDetailType == 'sketch')?'':list[i]?.maskUrl, // offset:[ // -233.13985, // 406.90964 From 97e5f8bd66e3f2593ba819c9650a6175eafb3ff0 Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Tue, 16 Sep 2025 13:57:15 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E8=B0=83=E6=95=B4canvas=E7=AC=94=E8=A7=A6?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E6=94=B9=E4=B8=BA=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/image/brush/PencilBrush-2.jpg | Bin 2843 -> 0 bytes .../brush/{CrayonBrush.jpg => crayon.jpg} | Bin public/image/brush/fur.jpg | Bin 0 -> 7485 bytes public/image/brush/{InkBrush.jpg => ink.jpg} | Bin .../brush/{LongfurBrush.jpg => longFur.jpg} | Bin .../brush/{MarkerBrush.jpg => marker.jpg} | Bin public/image/brush/pen.jpg | Bin 0 -> 1131 bytes .../brush/{PencilBrush.jpg => pencil.jpg} | Bin .../brush/{RibbonBrush.jpg => ribbon.jpg} | Bin public/image/brush/shaded.jpg | Bin 0 -> 4027 bytes public/image/brush/spray.jpg | Bin 0 -> 11052 bytes .../brush/{imgBrush.webp => texture.jpg} | Bin .../brush/{WritingBrush.jpg => writing.jpg} | Bin .../CanvasEditor/components/BrushPanel.vue | 6 ++- src/component/Canvas/CanvasEditor/index.vue | 2 +- .../managers/brushes/brushManager.js | 13 ++++++ .../Detail/detailRight/editPrintElement.vue | 2 +- src/tool/listData.js | 4 +- src/views/HomeMain.vue | 38 +++++++++--------- src/views/Login.vue | 1 - 20 files changed, 41 insertions(+), 25 deletions(-) delete mode 100644 public/image/brush/PencilBrush-2.jpg rename public/image/brush/{CrayonBrush.jpg => crayon.jpg} (100%) create mode 100644 public/image/brush/fur.jpg rename public/image/brush/{InkBrush.jpg => ink.jpg} (100%) rename public/image/brush/{LongfurBrush.jpg => longFur.jpg} (100%) rename public/image/brush/{MarkerBrush.jpg => marker.jpg} (100%) create mode 100644 public/image/brush/pen.jpg rename public/image/brush/{PencilBrush.jpg => pencil.jpg} (100%) rename public/image/brush/{RibbonBrush.jpg => ribbon.jpg} (100%) create mode 100644 public/image/brush/shaded.jpg create mode 100644 public/image/brush/spray.jpg rename public/image/brush/{imgBrush.webp => texture.jpg} (100%) rename public/image/brush/{WritingBrush.jpg => writing.jpg} (100%) diff --git a/public/image/brush/PencilBrush-2.jpg b/public/image/brush/PencilBrush-2.jpg deleted file mode 100644 index 4ae64cd39dd14b093a1469ba3ffb291b5c01be02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2843 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 F{|^sBZ#w`0 literal 0 HcmV?d00001 diff --git a/public/image/brush/InkBrush.jpg b/public/image/brush/ink.jpg similarity index 100% rename from public/image/brush/InkBrush.jpg rename to public/image/brush/ink.jpg diff --git a/public/image/brush/LongfurBrush.jpg b/public/image/brush/longFur.jpg similarity index 100% rename from public/image/brush/LongfurBrush.jpg rename to public/image/brush/longFur.jpg diff --git a/public/image/brush/MarkerBrush.jpg b/public/image/brush/marker.jpg similarity index 100% rename from public/image/brush/MarkerBrush.jpg rename to public/image/brush/marker.jpg diff --git a/public/image/brush/pen.jpg b/public/image/brush/pen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..450979ad85b8616c7d3785174ffa9455b1824297 GIT binary patch literal 1131 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ksV>y_B zu*iD4IEGZrd3$HC-(xSC_Cy=wvK%F)r%aauE;yf7EiAvoC_3H2-<@lVP#0tUyhrCH zUHuZA&vDJa|EpH(^lRC)$o(HJ_*81|&u5tM^w>OxhW{;XjJYN}8H*Dgq(|efK^*oA&v`hl2Y0|F5sF-}t)r3VH=PXbv#Jg&wp_j({QmC^Va7g_uWgg- zfmS{62+rS;dwbQY9rA7KR+`H=X>>JhH7W7kn|SR~fce+9-RrVvEqlFdqdJpJ<}2Rn z_n&Rjb$Mfh^KV!_-wR>wc)e>|?#~`}pq_^UhjPr4q4MHR31HTYP?IY_wNid_s*wnHu0TXeEa$n70;aW4=!#j*7KaS?lqs~ z5ANNMZybB@<#4SiPVVm{7#`0xv-*74}$-HIK`?pW- z_1Wrt^Yf*#|Gy>dzVzco(-)f$|bZ+go z+_&talT|cNZ(6lVpD%CLG0W}c%6-K}MW25Ck~+TeU#@Ec`|%TRi)6jK=kjP-r5twJ z8s6?${q5VmvX*l@O?-3nzKQQ%w|O4Ba{hjX-2Ga$zxHj{S-onL&f6Upm5nyfs{VW8ZtA)`NS$Z#%B`a_{!zFL&QR=6HC1?CSd66H{;2 z*zMo5=gIU;*>~#i3jUpcwW|&Ys;ab37yZt=R-L~*=dwwmWTrS*bZ%b!@iP8@NxFY; zT70|8p8fLf>$s9Tr4{de^Y6%Cztn8IJNxBcHf4E3=V)%7>8Gz|g^C=N|KmdKI;Vst07AbV6#xJL literal 0 HcmV?d00001 diff --git a/public/image/brush/PencilBrush.jpg b/public/image/brush/pencil.jpg similarity index 100% rename from public/image/brush/PencilBrush.jpg rename to public/image/brush/pencil.jpg diff --git a/public/image/brush/RibbonBrush.jpg b/public/image/brush/ribbon.jpg similarity index 100% rename from public/image/brush/RibbonBrush.jpg rename to public/image/brush/ribbon.jpg diff --git a/public/image/brush/shaded.jpg b/public/image/brush/shaded.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a60d35c017cb131bfb67e9b9bd079c9f7938ee63 GIT binary patch literal 4027 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 AdH?_b literal 0 HcmV?d00001 diff --git a/public/image/brush/imgBrush.webp b/public/image/brush/texture.jpg similarity index 100% rename from public/image/brush/imgBrush.webp rename to public/image/brush/texture.jpg diff --git a/public/image/brush/WritingBrush.jpg b/public/image/brush/writing.jpg similarity index 100% rename from public/image/brush/WritingBrush.jpg rename to public/image/brush/writing.jpg diff --git a/src/component/Canvas/CanvasEditor/components/BrushPanel.vue b/src/component/Canvas/CanvasEditor/components/BrushPanel.vue index 0688d390..f78e5935 100644 --- a/src/component/Canvas/CanvasEditor/components/BrushPanel.vue +++ b/src/component/Canvas/CanvasEditor/components/BrushPanel.vue @@ -14,7 +14,8 @@ @click="setBrushTypeWithCommand(brush.id)" :class="['brush-type-item', { active: brushStore.state.type === brush.id }]" > -
+ + {{ brush.name }} @@ -886,6 +887,7 @@ onMounted(() => { const availableBrushes = toolManager.brushManager .getBrushTypes() ?.filter((brush) => brush.id !== "eraser"); + console.log(availableBrushes) BrushStore.setAvailableBrushes(availableBrushes); } }); @@ -1178,6 +1180,8 @@ const brushStore = BrushStore; margin-bottom: 8px; border-radius: 4px; background-color: rgba(0, 0, 0, 0.02); + object-fit: contain; + background-color: #fff; } /* 保持笔刷预览内容样式一致 */ diff --git a/src/component/Canvas/CanvasEditor/index.vue b/src/component/Canvas/CanvasEditor/index.vue index f72cee5a..7715ed39 100644 --- a/src/component/Canvas/CanvasEditor/index.vue +++ b/src/component/Canvas/CanvasEditor/index.vue @@ -340,7 +340,7 @@ onMounted(async () => { props.redGreenImageUrl ) { canvasManager.canvas.fill = "#fff"; // 设置画布背景色为白色 // 初始化红绿图模式管理器 - redGreenModeManager = new RedGreenModeManager({ + redGreenModeManager = new toolManagerRedGreenModeManager({ canvas: canvasManager.canvas, canvasManager, layerManager, diff --git a/src/component/Canvas/CanvasEditor/managers/brushes/brushManager.js b/src/component/Canvas/CanvasEditor/managers/brushes/brushManager.js index 051659ab..15ae7463 100644 --- a/src/component/Canvas/CanvasEditor/managers/brushes/brushManager.js +++ b/src/component/Canvas/CanvasEditor/managers/brushes/brushManager.js @@ -65,6 +65,7 @@ export class BrushManager { description: "基础铅笔工具,适合精细线条绘制", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/pencil.jpg', }); // 注册材质笔刷 @@ -73,6 +74,7 @@ export class BrushManager { description: "使用纹理图片作为笔刷,支持缩放和透明度", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/texture.jpg', }); // 注册集成的笔刷类型 @@ -81,54 +83,63 @@ export class BrushManager { description: "使用纹理图片作为笔刷,支持缩放和透明度", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/crayon.jpg', }); brushRegistry.register("fur", FurBrush, { name: this.t("Canvas.Fur"), description: "使用纹理图片作为笔刷,支持缩放和透明度", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/fur.jpg', }); brushRegistry.register("ink", InkBrush, { name: this.t("Canvas.Ink"), description: "墨水笔刷,适合书写和绘图", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/ink.jpg', }); brushRegistry.register("", LongfurBrush, { name: this.t("Canvas.Longfur"), description: "长毛发笔刷,适合绘制动物毛皮、草或头发", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/longFur.jpg', }); brushRegistry.register("writing", WritingBrush, { name: this.t("Canvas.Writing"), description: "书法笔刷,模拟中国传统书法毛笔效果,具有笔锋和墨色变化", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/writing.jpg', }); brushRegistry.register("marker", MarkerBrush, { name: this.t("Canvas.Marker"), description: "马克笔笔刷,适合粗线条和填充", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/marker.jpg', }); brushRegistry.register("pen", CustomPenBrush, { name: this.t("Canvas.Pen"), description: "自定义钢笔笔刷,适合书写和绘图", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/pen.jpg', }); brushRegistry.register("ribbon", RibbonBrush, { name: this.t("Canvas.Ribbon"), description: "丝带笔刷,适合创建流动的丝带效果", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/ribbon.jpg', }); brushRegistry.register("shaded", ShadedBrush, { name: this.t("Canvas.Shaded"), description: "阴影笔刷,适合创建渐变和阴影效果", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/shaded.jpg', }); brushRegistry.register("spray", SprayBrush, { @@ -136,6 +147,7 @@ export class BrushManager { description: "模拟喷枪效果,创建散点效果", t:this.t, category: this.t('Canvas.BasicBrushes'), + imgUrl:'./image/brush/spray.jpg', }); // brushRegistry.register("sketchy", SketchyBrush); @@ -365,6 +377,7 @@ export class BrushManager { description: brushInfo.metadata.description || "", category: brushInfo.metadata.category || "默认", icon: brushInfo.metadata.icon || null, + imgUrl: brushInfo.metadata.imgUrl || null, })); } diff --git a/src/component/Detail/detailRight/editPrintElement.vue b/src/component/Detail/detailRight/editPrintElement.vue index 8d445c33..6ee603d6 100644 --- a/src/component/Detail/detailRight/editPrintElement.vue +++ b/src/component/Detail/detailRight/editPrintElement.vue @@ -1,6 +1,6 @@