需求决定(2026-09-12):负坐标/超出画布为合法摆放状态; 重叠误报根因是尺寸语义(已由归一化修复),坐标钳制一并移除。 文档同步标注该决策。 Co-Authored-By: Claude <noreply@anthropic.com>
1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[95],{8955:function(e,t,a){var s=a(7842),n=a(1212),i=a(467),c=a(9379),r=a(436),o=a(5544),d=a(118),u=a(758),l=a.n(u),h=a(6540),m=a(5234),p=a(1457),g=a(6845),f=a(9703),x=a(9201),v=a(5414),j=a(9674),N=a(3053),y=a(9513),S=a(4848);function w(){var e=(0,f.wR)(),t=(e.theme,e.resolvedTheme),a=(0,x.c)();(0,v.l)(t);var s=(0,h.useState)(null),u=(0,o.A)(s,2),w=u[0],k=u[1],A=(0,h.useState)(1),b=(0,o.A)(A,2),T=(b[0],b[1],(0,h.useState)("")),E=(0,o.A)(T,2),Y=E[0],I=E[1],D=(0,h.useState)(1),M=(0,o.A)(D,2),P=M[0],_=M[1],O=(0,h.useState)([]),F=(0,o.A)(O,2),R=F[0],B=F[1],q=(0,h.useState)(null),z=(0,o.A)(q,2),V=z[0],C=z[1],H=(0,h.useState)(!1),J=(0,o.A)(H,2),X=J[0],G=J[1],L=(0,h.useState)({x:0,y:0}),K=(0,o.A)(L,2),Q=K[0],U=K[1],W=(0,h.useState)(!1),Z=(0,o.A)(W,2),$=Z[0],ee=Z[1],te=(0,h.useState)(!1),ae=(0,o.A)(te,2),se=ae[0],ne=ae[1],ie=function(e,t){(0,g.x9)({productId:e.id,productName:e.name,unitPrice:e.price,count:t}).then(function(e){return(0,p.Fu)([e].concat((0,r.A)((0,p.p_)()))),I(e.id),(0,g.i5)(e.id,{status:"designing"}).then(function(t){(0,p.Fu)((0,p.p_)().map(function(a){return a.id===e.id?(0,c.A)((0,c.A)({},a),{},{status:t.status}):a}))}).catch(function(){(0,p.Fu)((0,p.p_)().map(function(t){return t.id===e.id?(0,c.A)((0,c.A)({},t),{},{status:"designing"}):t}))})}).catch(function(){var a={id:"DSG"+Date.now(),productId:e.id,productName:e.name,productIcon:e.icon,unitPrice:e.price,count:t,status:"designing",createdAt:(new Date).toISOString().slice(0,10)};(0,p.Fu)([].concat((0,r.A)((0,p.p_)()),[a])),I(a.id)})};(0,h.useEffect)(function(){var e=l().getCurrentInstance().router,t=e?e.params:void 0,a=t?t.source:void 0,s=t&&t.productId||t&&t.category;if("product"===a&&s){var n=(0,m.y9)(s);if(n){k(n);var i=Number(t?t.quantity:void 0)||1;_(i),ie(n,i)}}else if("designList"===a&&t&&t.designId){var r=t.designId,o=(0,p.p_)(),d=o.find(function(e){return e.id===r});if(d){I(r),_(d.count);var u=(0,m.y9)(d.productId);u&&k(u);var h=d.designData,f=h?h.stickers:void 0;if(f){var x=h&&h.category&&h.category.mask||(u?u.mask:void 0),v=x?f.map(function(e){if(e.width>x.width||e.height>x.height){var t=.6*Math.min(x.width,x.height)/Math.max(e.width,e.height);return(0,c.A)((0,c.A)({},e),{},{width:Math.round(e.width*t),height:Math.round(e.height*t)})}return e}):f;B(v)}else if(h?h.imageSrc:void 0){var j={id:"legacy_"+Date.now(),src:h.imageSrc,x:h.imagePos&&h.imagePos.x||0,y:h.imagePos&&h.imagePos.y||0,scale:h.imagePos&&h.imagePos.scale||1,width:200,height:200,isOverlapping:!1};B([j])}"undesigned"===d.status&&((0,p.i5)(r,{status:"designing"}),(0,g.i5)(r,{status:"designing"}).catch(function(){}))}}else if(s){var N=(0,m.y9)(s);N&&(k(N),ie(N,1))}},[]);var ce=(0,h.useRef)(null),re=(0,h.useRef)({designId:"",quantity:1,category:null,stickers:[]});re.current={designId:Y,quantity:P,category:w,stickers:R};var oe=function(){var e=re.current,t=e.designId,a=e.quantity,s=e.category,n=e.stickers;if(t&&s){var i=(0,p.p_)().find(function(e){return e.id===t}),r=(0,c.A)((0,c.A)({},i&&i.designData?i.designData:{}),{},{version:1,category:(0,c.A)({id:s.id,mask:s.mask},s.tone?{tone:s.tone}:{}),stickers:n});(0,p.i5)(t,{designData:r}),(0,g.i5)(t,{item:{productId:s.id,productName:s.name,unitPrice:s.price,count:a,designData:r}}).catch(function(){})}},de=function(){ce.current&&(clearTimeout(ce.current),ce.current=null),oe()};l().useDidHide(de),(0,h.useEffect)(function(){return de},[]);var ue=(0,h.useRef)(!0);(0,h.useEffect)(function(){ue.current?ue.current=!1:(ce.current&&clearTimeout(ce.current),ce.current=setTimeout(oe,800))},[R]);var le=(0,h.useRef)(!0);l().useDidShow(function(){if(le.current)le.current=!1;else{var e=re.current.designId;if(e){var t=(0,p.p_)().find(function(t){return t.id===e}),a=t&&t.designData?t.designData.stickers:void 0;a&&a.length&&B(he(a))}}});var he=function(e){for(var t=e.map(function(e){return(0,c.A)((0,c.A)({},e),{},{isOverlapping:!1})}),a=0;a<t.length;a++)for(var s=a+1;s<t.length;s++){var n=t[a],i=t[s],r=n.width*n.scale,o=n.height*n.scale,d=i.width*i.scale,u=i.height*i.scale;n.x<i.x+d&&n.x+r>i.x&&n.y<i.y+u&&n.y+o>i.y&&(t[a].isOverlapping=!0,t[s].isOverlapping=!0)}var l=t.some(function(e){return e.isOverlapping});return ne(l),t},me=function(){l().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(e){var t=e.tempFilePaths[0];l().getImageInfo({src:t,success:function(e){var a=Math.min(w.mask.width,w.mask.height),s=.6*a/Math.max(e.width,e.height),n={id:"stk_"+Date.now(),src:t,x:0,y:0,scale:1,width:Math.round(e.width*s),height:Math.round(e.height*s),isOverlapping:!1},i=[].concat((0,r.A)(R),[n]),c=he(i);B(c),C(n.id)},fail:function(){var e=Math.min(w.mask.width,w.mask.height),a=.6*e/200,s={id:"stk_"+Date.now(),src:t,x:0,y:0,scale:1,width:Math.round(200*a),height:Math.round(200*a),isOverlapping:!1},n=[].concat((0,r.A)(R),[s]),i=he(n);B(i),C(s.id)}})}})},pe=function(e){var t=R.filter(function(t){return t.id!==e}),a=he(t);B(a),V===e&&C(null)},ge=function(e,t){var a=e.touches[0],s=R.find(function(e){return e.id===t});s&&(C(t),G(!0),U({x:a.clientX-s.x,y:a.clientY-s.y}))},fe=function(e){if(X&&V){var t=e.touches[0],a=R.map(function(e){return e.id!==V?e:(0,c.A)((0,c.A)({},e),{},{x:t.clientX-Q.x,y:t.clientY-Q.y})}),s=he(a);B(s)}},xe=function(){return G(!1)},ve=function(){V&&Y&&(de(),l().navigateTo({url:"/pages/diy/stickerEdit/index?designId=".concat(Y,"&stickerId=").concat(V)}))},je=function(e,t){var a=R.map(function(a){return a.id!==e?a:(0,c.A)((0,c.A)({},a),{},{scale:Math.max(.3,Math.min(3,a.scale+t))})}),s=he(a);B(s)},Ne=function(e){var t=e.edits;if(t){var a=t.brightness||0,s=t.hue||0,n=t.contrast||0;if(0!==a||0!==s||0!==n)return"brightness(".concat(100+a,"%) hue-rotate(").concat(s,"deg) contrast(").concat(100+n,"%)")}},ye=function(){l().navigateBack()},Se=function(){if(!w)return{width:300,height:420};var e={width:w.mask.width,height:w.mask.height};return"rect"===w.mask.shape&&(e.borderRadius=w.mask.borderRadius||0),"circle"===w.mask.shape&&(e.borderRadius="50%"),e},we=function(){var e=(0,i.A)((0,n.A)().m(function e(){var t,a,s,i;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!se){e.n=1;break}return l().showToast({title:"\u8d34\u7eb8\u4e0d\u80fd\u91cd\u53e0",icon:"none"}),e.a(2);case 1:if(!Y||!w){e.n=6;break}return e.n=2,(0,g.x5)({stickers:R,category:w,version:1});case 2:return t=e.v,a=(0,c.A)({id:w.id,mask:w.mask},w.tone?{tone:w.tone}:{}),s=(0,p.p_)().find(function(e){return e.id===Y}),i=(0,c.A)((0,c.A)({},s&&s.designData?s.designData:{}),{},{version:1,category:a,stickers:t.stickers||R}),(0,p.i5)(Y,{status:"designing",designData:i}),e.p=3,e.n=4,(0,g.i5)(Y,{status:"designing",item:{productId:w.id,productName:w.name,unitPrice:w.price,count:P,designData:i}});case 4:e.n=6;break;case 5:e.p=5,e.v,l().showToast({title:"\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u5df2\u6682\u5b58\u5230\u672c\u5730",icon:"none"});case 6:ee(!1),l().navigateTo({url:"/pages/checkout/index?designId=".concat(Y)});case 7:return e.a(2)}},e,null,[[3,5]])}));return function(){return e.apply(this,arguments)}}(),ke=V?R.find(function(e){return e.id===V}):void 0,Ae=ke?ke.scale:1;return w?(0,S.jsxs)(d.Ss,{className:"theme-".concat(t),children:[(0,S.jsx)(j.A,{}),(0,S.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,S.jsxs)(d.Ss,{className:"diy-page",children:[(0,S.jsx)(d.Ss,{className:"page-header surface-card",style:{paddingTop:"".concat(a.statusBarHeight+12,"px")},children:(0,S.jsxs)(d.Ss,{className:"flex-between",style:{width:"100%"},children:[(0,S.jsx)(d.EY,{className:"back-btn",onTap:ye,children:"\u2190"}),(0,S.jsx)(d.EY,{className:"page-title",children:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0"}),(0,S.jsx)(d.Ss,{className:"header-spacer"})]})}),(0,S.jsx)(d.Ss,{className:"canvas-wrapper surface-card mt-20",catchMove:!0,children:(0,S.jsxs)(d.Ss,{className:"canvas-area",style:Se(),children:[R.map(function(e){return(0,S.jsx)(d._V,{className:"canvas-image ".concat(e.isOverlapping?"overlap":""," ").concat(V===e.id?"active":""),src:e.src,style:{transform:"translate(".concat(e.x,"px, ").concat(e.y,"px) scale(").concat(e.scale,")"),opacity:X&&V===e.id?.8:1,zIndex:V===e.id?10:5,filter:Ne(e),width:e.width||200,height:e.height||200},onTouchStart:function(t){return ge(t,e.id)},onTouchMove:fe,onTouchEnd:xe,onTap:function(){return C(e.id)},mode:"aspectFit"},e.id)}),(0,S.jsx)(d.Ss,{className:"mask-border",style:Se()})]})}),(0,S.jsxs)(d.Ss,{className:"sticker-panel surface-card mt-20",children:[(0,S.jsx)(d.EY,{className:"section-title",children:"\u8d34\u7eb8"}),(0,S.jsxs)(d.Ss,{className:"sticker-list",children:[R.map(function(e){return(0,S.jsxs)(d.Ss,{className:"sticker-thumb ".concat(e.isOverlapping?"overlap":""," ").concat(V===e.id?"active":""),children:[(0,S.jsx)(d._V,{src:e.src,className:"sticker-thumb-img",mode:"aspectFit",onTap:function(){return C(e.id)}}),(0,S.jsx)(d.Ss,{className:"sticker-del",onTap:function(){return pe(e.id)},children:(0,S.jsx)(d.EY,{className:"del-icon",children:"\xd7"})})]},e.id)}),(0,S.jsxs)(d.Ss,{className:"sticker-add-btn",onTap:me,children:[(0,S.jsx)(d.EY,{className:"add-icon",children:"+"}),(0,S.jsx)(d.EY,{className:"add-label",children:"\u6dfb\u52a0"})]})]}),se&&(0,S.jsx)(d.EY,{className:"overlap-hint",children:"\u6709\u8d34\u7eb8\u91cd\u53e0\uff0c\u8bf7\u8c03\u6574\u4f4d\u7f6e"})]}),V&&(0,S.jsxs)(d.Ss,{className:"toolbar surface-card mt-20",children:[(0,S.jsxs)(d.Ss,{className:"tool-row",children:[(0,S.jsx)(d.EY,{className:"tool-label",children:"\u7f29\u653e"}),(0,S.jsxs)(d.Ss,{className:"flex-center",style:{gap:"20px"},children:[(0,S.jsx)(d.Ss,{className:"tool-btn",onTap:function(){return je(V,-.1)},children:"\uff0d"}),(0,S.jsxs)(d.EY,{className:"tool-value",children:[Math.round(100*Ae),"%"]}),(0,S.jsx)(d.Ss,{className:"tool-btn",onTap:function(){return je(V,.1)},children:"\uff0b"})]})]}),(0,S.jsxs)(d.Ss,{className:"tool-row",children:[(0,S.jsx)(d.EY,{className:"tool-label",children:"\u63d0\u793a"}),(0,S.jsx)(d.EY,{className:"tool-hint",children:"\u62d6\u52a8\u8c03\u6574\u4f4d\u7f6e\uff0c\u8d34\u7eb8\u4e0d\u53ef\u91cd\u53e0"})]})]}),(0,S.jsx)(d.Ss,{className:"edit-btn-bar mt-20",children:(0,S.jsx)(d.Ss,{className:"edit-btn ".concat(V?"active":"disabled"),onTap:ve,children:(0,S.jsx)(d.EY,{children:"\u7f16\u8f91"})})}),(0,S.jsxs)(y.A,{children:[(0,S.jsx)(d.Ss,{className:"btn-primary",onTap:function(){return ee(!0)},children:(0,S.jsx)(d.EY,{children:"\u9884\u89c8\u6548\u679c"})}),(0,S.jsx)(d.Ss,{className:"btn-secondary",onTap:me,children:(0,S.jsx)(d.EY,{children:"\u6dfb\u52a0\u8d34\u7eb8"})})]}),$&&(0,S.jsx)(d.Ss,{className:"preview-overlay",children:(0,S.jsxs)(d.Ss,{className:"preview-card surface-card",children:[(0,S.jsx)(d.EY,{className:"preview-title",children:"\u786e\u8ba4\u6548\u679c"}),(0,S.jsx)(d.Ss,{className:"preview-canvas",style:Se(),children:R.map(function(e){return(0,S.jsx)(d._V,{className:"preview-image ".concat(e.isOverlapping?"overlap":""),src:e.src,style:{transform:"translate(".concat(e.x,"px, ").concat(e.y,"px) scale(").concat(e.scale,")"),filter:Ne(e),width:e.width||200,height:e.height||200},mode:"aspectFit"},e.id)})}),(0,S.jsxs)(d.Ss,{className:"product-info",children:[(0,S.jsx)(d.EY,{className:"product-name",children:w.name}),(0,S.jsxs)(d.EY,{className:"product-size",children:["\u753b\u5e03\u5c3a\u5bf8: ",w.mask.width," \xd7 ",w.mask.height," px"]}),se&&(0,S.jsx)(d.EY,{className:"overlap-hint",children:"\u8d34\u7eb8\u6709\u91cd\u53e0\uff0c\u4e0d\u53ef\u63d0\u4ea4"})]}),(0,S.jsxs)(d.Ss,{className:"preview-actions",children:[(0,S.jsx)(d.Ss,{className:"btn-secondary",onTap:function(){return ee(!1)},children:(0,S.jsx)(d.EY,{children:"\u8fd4\u56de\u4fee\u6539"})}),(0,S.jsx)(d.Ss,{className:"btn-primary ".concat(se?"disabled":""),onTap:we,children:(0,S.jsx)(d.EY,{children:"\u786e\u8ba4\u5b8c\u6210"})})]})]})}),(0,S.jsx)(d.Ss,{className:"safe-bottom-placeholder"})]})]}):(0,S.jsxs)(d.Ss,{className:"theme-".concat(t),children:[(0,S.jsx)(j.A,{}),(0,S.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,S.jsx)(d.Ss,{className:"diy-page",children:(0,S.jsx)(d.EY,{className:"page-title",children:"\u52a0\u8f7d\u4e2d..."})})]})}var k={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"DIY\u5de5\u4f5c\u53f0"};Page((0,s.createPageConfig)(w,"pages/diy/index",{root:{cn:[]}},k||{}))}},function(e){var t=function(t){return e(e.s=t)};e.O(0,[907,96,76],function(){return t(8955)});e.O()}]); |