From 8438fea72ffa3e687259bd1979993a6c662aa54b Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 03:10:51 +0800 Subject: [PATCH 01/15] =?UTF-8?q?feat(r2):=20=E5=89=8D=E7=AB=AF=20API=20?= =?UTF-8?q?=E5=B1=82=E2=80=94=E2=80=94=E5=9C=B0=E5=9D=80/=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=B8=85=E5=8D=95=E5=88=87=E6=8D=A2=E5=88=B0=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3=EF=BC=88=E9=98=B6=E6=AE=B52?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - api/address.ts: fetchAddresses/createAddress/updateAddress/deleteAddress/ setDefaultAddress;region[] ↔ province/city/district 双向转换唯一落点 - api/design.ts: fetchDesignList/createDesign/updateDesign/deleteDesign/ deleteDesigns;状态映射 DRAFT↔undesigned、SUBMITTED↔designing、 PROCESSING↔processing、DONE↔ordered;一条设计=一条清单(items 固定 1 元素, title=productName,productIcon 不上传由页面按 productId 兜底) - types/index.ts: DesignItem.status 补 'processing'、productIcon 改 optional、 AddressItem 补 createdAt?;全部消费点已确认兼容(均有兜底) - docs/r2-workflow.md: R2 工作流程与阶段0 契约确认记录 验证:build:weapp 通过;Node 打桩 Taro.request 转发本地 3091 后端实测 13 项全过(region 往返/状态映射/designData 保留/越权 403/无效 token 401) Co-Authored-By: Claude --- dist/common.js | 2 +- dist/pages/diy/index.js | 2 +- dist/pages/diy/stickerEdit/index.js | 2 +- dist/pages/profile/index.js | 2 +- dist/pages/wordcloud/index.js | 2 +- docs/r2-workflow.md | 203 ++++++++++++++++++++++++++++ src/types/index.ts | 16 ++- src/utils/api/address.ts | 96 ++++++++++++- src/utils/api/design.ts | 122 ++++++++++++++++- 9 files changed, 428 insertions(+), 19 deletions(-) create mode 100644 docs/r2-workflow.md diff --git a/dist/common.js b/dist/common.js index ed9594c..d00f353 100644 --- a/dist/common.js +++ b/dist/common.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[76],{9513:function(n,t,e){e.d(t,{A:function(){return i}});var r=e(118),o=e(4848);function i(n){var t=n.children,e=n.className,i=n.style;return(0,o.jsx)(r.Ss,{className:"bottom-action-bar ".concat(e||""),style:i,children:t})}},7723:function(n,t,e){e.d(t,{A:function(){return d}});var r=e(5544),o=e(758),i=e.n(o),c=e(6540),u=e(118),a=e(6764),s=e(9703),l=e(8199),f=e(4848);function d(n){var t=(0,c.useState)("checking"),e=(0,r.A)(t,2),o=e[0],d=e[1],g=(0,c.useCallback)(function(){var n=!1;return(0,a.d)().then(function(t){n||d(t?"ok":"denied")}).catch(function(){n||d("denied")}),function(){n=!0}},[]);return(0,c.useEffect)(function(){var n=g(),t=function(){g()},e=function(){g()};return i().eventCenter.on("tabBarChange",t),i().eventCenter.on(s.Wo,e),i().eventCenter.on("authStateChanged",t),function(){n(),i().eventCenter.off("tabBarChange",t),i().eventCenter.off(s.Wo,e),i().eventCenter.off("authStateChanged",t)}},[g]),"checking"===o?(0,f.jsx)(u.Ss,{className:"login-guard",children:(0,f.jsxs)(u.Ss,{className:"login-guard-inner",children:[(0,f.jsx)(u._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u8bbe\u7f6e.png"),mode:"aspectFit"}),(0,f.jsx)(u.EY,{className:"login-guard-title",children:"\u6821\u9a8c\u767b\u5f55\u72b6\u6001"})]})}):"denied"===o?(0,f.jsx)(u.Ss,{className:"login-guard",children:(0,f.jsxs)(u.Ss,{className:"login-guard-inner",children:[(0,f.jsx)(u._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"}),(0,f.jsx)(u.EY,{className:"login-guard-title",children:"\u8bf7\u5148\u767b\u5f55"}),(0,f.jsx)(u.EY,{className:"login-guard-desc",children:"\u767b\u5f55\u540e\u67e5\u770b\u60a8\u7684\u4e13\u5c5e\u5185\u5bb9"}),(0,f.jsx)(u.Ss,{className:"btn-primary login-guard-btn",onTap:function(){return i().switchTab({url:"/pages/profile/index"})},children:(0,f.jsx)(u.EY,{children:"\u53bb\u767b\u5f55"})})]})}):n.children}},3053:function(n,t,e){e.d(t,{A:function(){return d}});var r=e(5544),o=e(118),i=e(758),c=e.n(i),u=e(6540),a=e(9201);function s(n){var t=n.viewportBottom,e=n.scrollTop,r=n.statusBarHeight,o=Number.isFinite(t)?t:0,i=Number.isFinite(e)?e:0,c=Number.isFinite(r)?r:0;return Math.max(0,o+i-c-8)}function l(n){var t=n.scrollTop,e=n.startY,r=n.rangeY,o=Number.isFinite(t)?t:0,i=Math.max(0,Number.isFinite(e)?e:0),c=Math.max(1,Number.isFinite(r)?r:1);return o<=i?0:Math.min(1,(o-i)/c)}var f=e(4848);function d(n){var t=n.title,e=n.targetSelector,i=void 0===e?".page-header":e,d=n.showBack,g=void 0!==d&&d,h=(0,a.c)(),p=(0,u.useState)(0),m=(0,r.A)(p,2),v=m[0],y=m[1],S=(0,u.useMemo)(function(){return{startY:Math.max(0,h.headerPaddingTop-h.statusBarHeight),rangeY:Math.max(48,.45*h.headerPaddingTop)}},[h.headerPaddingTop,h.statusBarHeight]),k=(0,u.useRef)(S),b=(0,u.useRef)(null),A=(0,u.useRef)(0),w=(0,u.useCallback)(function(n){A.current=n,null===b.current&&(b.current=setTimeout(function(){b.current=null;var n=k.current,t=n.startY,e=n.rangeY;y(l({scrollTop:A.current,startY:t,rangeY:e}))},16))},[]);return(0,u.useEffect)(function(){var n=!1,t=null;k.current=S;var e=function(){n||c().createSelectorQuery().select(i).boundingClientRect(function(t){if(!n){if(!t||Array.isArray(t)||"number"!==typeof t.bottom||"number"!==typeof t.height)return k.current=S,void w(A.current);var e=s({viewportBottom:t.bottom,scrollTop:A.current,statusBarHeight:h.statusBarHeight}),r=Math.max(32,.7*t.height);k.current={startY:e,rangeY:r},w(A.current)}}).exec()};return c().nextTick(function(){n||(t=setTimeout(e,80))}),function(){n=!0,null!==t&&clearTimeout(t),null!==b.current&&clearTimeout(b.current),b.current=null}},[w,S,i]),c().usePageScroll(function(n){w(n.scrollTop)}),(0,f.jsxs)(o.Ss,{className:"scroll-top-mask",style:{height:"".concat(Math.max(h.menuButtonTop+h.menuButtonHeight+18,h.statusBarHeight+52)+24,"px"),opacity:v},children:[(0,f.jsx)(o.Ss,{className:"scroll-top-blur scroll-top-blur-mid"}),(0,f.jsx)(o.Ss,{className:"scroll-top-blur scroll-top-blur-soft"}),(0,f.jsx)(o.Ss,{className:"scroll-top-gradient"}),g&&(0,f.jsx)(o.Ss,{className:"scroll-top-back",style:{top:"".concat(h.menuButtonTop,"px")},onTap:function(){return c().navigateBack()},children:(0,f.jsx)(o.EY,{className:"scroll-top-back-arrow",children:"\u2190"})}),(0,f.jsx)(o.EY,{className:"scroll-top-title",style:{top:"calc(".concat(h.menuButtonTop,"px + 40rpx)"),transform:"translateY(-50%)",opacity:Math.max(0,Math.min(1,(v-.5)/.5))},children:t})]})}},9674:function(n,t,e){e.d(t,{A:function(){return c}});var r=e(118),o=e(9703),i=e(4848);function c(n){var t=n.darkTop,e=void 0!==t&&t,c=(0,o.wR)(),u=c.resolvedTheme,a="dark"===u||e,s=a?"#191919":"#faf7f2",l=a?"#ffffff":"#000000";return(0,i.jsx)(r.tf,{backgroundColor:s,backgroundColorTop:s,backgroundColorBottom:s,backgroundTextStyle:a?"light":"dark",rootBackgroundColor:s,children:(0,i.jsx)(r.yk,{frontColor:l,backgroundColor:s})})}},9703:function(n,t,e){e.d(t,{NP:function(){return g},Wo:function(){return d},wR:function(){return h}});var r=e(5544),o=e(6540),i=e(758),c=e.n(i),u=e(118),a=e(1457),s=e(6606),l=e(4848),f=(0,o.createContext)({theme:"auto",resolvedTheme:"light",toggleTheme:function(){},setTheme:function(){}}),d="themeChange";function g(n){var t=n.children,e=(0,o.useState)((0,a.O4)()),g=(0,r.A)(e,2),h=g[0],p=g[1],m=(0,o.useState)((0,a.eW)((0,a.O4)())),v=(0,r.A)(m,2),y=v[0],S=v[1],k=(0,o.useRef)(null),b=(0,o.useCallback)(function(n){S((0,a.eW)(n))},[]),A=(0,o.useCallback)(function(n){(0,a.Rq)(n),k.current=n,"auto"===(0,a.O4)()&&S(n)},[]),w=(0,o.useCallback)(function(){try{var n=c().getAppBaseInfo();A("dark"===n.theme?"dark":"light")}catch(n){}try{c().createSelectorQuery().select(".system-theme-detector").fields({computedStyle:["opacity"]}).exec(function(n){var t=n&&n[0]&&n[0].computedStyle&&n[0].computedStyle.opacity;A("1"===t?"dark":"light")})}catch(n){}},[A]),T=(0,o.useCallback)(function(n){(0,a.F0)(n),p(n),"auto"===n?w():b(n)},[w,b]),C=(0,o.useCallback)(function(){var n="light"===y?"dark":"light";T(n)},[y,T]);return(0,o.useEffect)(function(){w()},[w]),(0,o.useEffect)(function(){var n,t=function(n){!n||"dark"!==n.theme&&"light"!==n.theme||A(n.theme)},e=c();return null===(n=e.onThemeChange)||void 0===n||n.call(e,t),function(){var n;null===(n=e.offThemeChange)||void 0===n||n.call(e,t)}},[A]),(0,o.useEffect)(function(){if("auto"===h){var n=setInterval(function(){try{var n=c().getAppBaseInfo(),t="dark"===n.theme?"dark":"light";t!==k.current&&A(t)}catch(n){}},2e3);return function(){return clearInterval(n)}}},[h,A]),(0,o.useEffect)(function(){c().eventCenter.trigger(d,y)},[y]),(0,o.useEffect)(function(){(0,s.G)(y)},[y]),(0,i.useDidShow)(function(){"auto"===h&&w()}),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(u.Ss,{className:"system-theme-detector"}),(0,l.jsx)(f.Provider,{value:{theme:h,resolvedTheme:y,toggleTheme:C,setTheme:T},children:t})]})}function h(){return(0,o.useContext)(f)}},9201:function(n,t,e){e.d(t,{c:function(){return a}});var r=e(5544),o=e(6540),i=e(758),c=e.n(i),u=null;function a(){var n=(0,o.useState)(null!==u&&void 0!==u?u:{statusBarHeight:20,menuButtonTop:26,menuButtonHeight:32,capsuleRight:368,safeInsetTop:20,safeInsetBottom:0,headerPaddingTop:66,backBtnPaddingTop:20}),t=(0,r.A)(n,2),e=t[0],i=t[1];return(0,o.useEffect)(function(){if(u)i(u);else try{var n,t,e,r,o,a,s,l,f=c().getSystemInfoSync(),d=c().getMenuButtonBoundingClientRect(),g=f.statusBarHeight||20,h=null!==(n=d.top)&&void 0!==n?n:g+4,p=null!==(t=d.height)&&void 0!==t?t:32,m=null!==(e=d.right)&&void 0!==e?e:f.windowWidth-7,v=null!==(r=null===(o=f.safeArea)||void 0===o?void 0:o.top)&&void 0!==r?r:g,y=null!==(a=f.safeAreaInsetBottom)&&void 0!==a?a:f.screenHeight-(null!==(s=null===(l=f.safeArea)||void 0===l?void 0:l.bottom)&&void 0!==s?s:f.screenHeight),S=Math.max(h+p+6,g+44),k=Math.max(g,h-4),b={statusBarHeight:g,menuButtonTop:h,menuButtonHeight:p,capsuleRight:m,safeInsetTop:v,safeInsetBottom:y,headerPaddingTop:S,backBtnPaddingTop:k};u=b,i(b)}catch(n){}},[]),e}},5414:function(n,t,e){e.d(t,{l:function(){return u}});var r=e(6540),o=e(758),i=e.n(o),c=e(6606);function u(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.mode,u=void 0===e?"auto":e,a=(0,r.useCallback)(function(){var t="dark"===u||"auto"===u&&"light"===n,e=t?"#000000":"#ffffff",r=t?"#faf7f2":"#191919";i().setNavigationBarColor({frontColor:e,backgroundColor:r}),(0,c.G)(n,r)},[u,n]);(0,r.useEffect)(a,[a]),(0,o.useDidShow)(a)}},5787:function(n,t,e){e.d(t,{l8:function(){return w},jp:function(){return f},gf:function(){return i.gf},xZ:function(){return T},iD:function(){return c},ri:function(){return a},x5:function(){return B},W$:function(){return A},r7:function(){return s}});var r=e(1212),o=e(467),i=e(3246);function c(n){return u.apply(this,arguments)}function u(){return u=(0,o.A)((0,r.A)().m(function n(t){var e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,i.Ay.post("/api/auth/login",{code:t},{auth:!1});case 1:return e=n.v,null!==e&&void 0!==e&&e.accessToken&&(0,i.WG)(e.accessToken),n.a(2,e)}},n)})),u.apply(this,arguments)}function a(){(0,i.L)()}function s(n){return l.apply(this,arguments)}function l(){return l=(0,o.A)((0,r.A)().m(function n(t){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,i.Ay.patch("/api/users/me",t))}},n)})),l.apply(this,arguments)}function f(){return d.apply(this,arguments)}function d(){return d=(0,o.A)((0,r.A)().m(function n(){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,i.Ay.get("/api/users/me"))}},n)})),d.apply(this,arguments)}var g=e(4765),h=e(9379),p=e(758),m=e.n(p);function v(n,t,e,r){return y.apply(this,arguments)}function y(){return y=(0,o.A)((0,r.A)().m(function n(t,e,o,c){var u,a;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.n=1,m().uploadFile({url:"".concat(i.C1).concat(t),filePath:e,name:o,formData:c,header:{Authorization:"Bearer ".concat((0,i.gf)())}});case 1:u=n.v,n.p=2,a=JSON.parse(u.data),n.n=4;break;case 3:throw n.p=3,n.v,new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5");case 4:if(!a||"number"!==typeof a.code||0===a.code){n.n=5;break}throw new Error(a.message||"\u8bf7\u6c42\u5931\u8d25");case 5:return n.a(2,a&&"number"===typeof a.code?a.data:a)}},n,null,[[2,3]])})),y.apply(this,arguments)}function S(n){return i.Ay.get("/api/upload/credentials?key=".concat(encodeURIComponent(n)))}function k(n,t){return b.apply(this,arguments)}function b(){return b=(0,o.A)((0,r.A)().m(function n(t,e){var o,i;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(e.presignedUrl){n.n=1;break}throw new Error("\u83b7\u53d6 COS \u76f4\u4f20\u5730\u5740\u5931\u8d25");case 1:return o=m().getFileSystemManager(),i=o.readFileSync(t),n.n=2,m().request({url:e.presignedUrl,method:"PUT",data:i,header:{"Content-Type":"application/octet-stream"}});case 2:return n.a(2,e.presignedUrl.split("?")[0])}},n)})),b.apply(this,arguments)}function A(n){return v("/api/sketch",n,"image")}function w(n,t,e){return v("/api/wordcloud/generate",n,"image",(0,h.A)({names:t},e?{params:JSON.stringify(e)}:{}))}function T(n){return i.Ay.get("/api/wordcloud/jobs/".concat(n))}function C(n){return!!n&&/^(wxfile:|http:\/\/tmp\/|tmp\/)/i.test(n)}function x(n){return _.apply(this,arguments)}function _(){return _=(0,o.A)((0,r.A)().m(function n(t){var e,o;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.p=0,e="uploads/sticker/".concat(Date.now(),"_").concat(Math.floor(1e6*Math.random()),".jpg"),n.n=1,S(e);case 1:return o=n.v,n.n=2,k(t,o);case 2:return n.a(2,n.v);case 3:return n.p=3,n.v,n.a(2,t)}},n,null,[[0,3]])})),_.apply(this,arguments)}function B(n){return j.apply(this,arguments)}function j(){return j=(0,o.A)((0,r.A)().m(function n(t){var e,o,i,c,u,a,s,l,f,d,p,m,v,y,S,k;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:if(t){n.n=1;break}return n.a(2,t);case 1:if(e=(0,h.A)({},t),!t.background||!C(t.background.src)){n.n=3;break}return a=h.A,s=(0,h.A)({},t.background),l={},n.n=2,x(t.background.src);case 2:f=n.v,e.background=a(s,l,{src:f});case 3:if(!t.stickers||!t.stickers.length){n.n=14;break}o=[],i=(0,g.A)(t.stickers),n.p=4,i.s();case 5:if((c=i.n()).done){n.n=10;break}if(u=c.value,d=o,!C(u.src)){n.n=7;break}return m=h.A,v=(0,h.A)({},u),y={},n.n=6,x(u.src);case 6:S=n.v,p=m(v,y,{src:S}),n.n=8;break;case 7:p=u;case 8:d.push.call(d,p);case 9:n.n=5;break;case 10:n.n=12;break;case 11:n.p=11,k=n.v,i.e(k);case 12:return n.p=12,i.f(),n.f(12);case 13:e.stickers=o;case 14:return n.a(2,e)}},n,null,[[4,11,12,13]])})),j.apply(this,arguments)}},8199:function(n,t,e){e.d(t,{uq:function(){return o}});var r="https://wordcloudwechat.oss-cn-hangzhou.aliyuncs.com";function o(n){if(!n)return"";if(/^(https?:|wxfile:|data:)/i.test(n))return n;if(!r)return n;var t=r.replace(/\/+$/,"");if(!n.startsWith("/img/"))return n;var e=n.startsWith("/")?n:"/".concat(n);return"".concat(t).concat(e)}},6764:function(n,t,e){e.d(t,{d:function(){return y},m:function(){return h}});var r=e(1212),o=e(467),i=e(2284),c=e(758),u=e.n(c),a=e(5787),s=e(1457),l="smart_auth_verified",f=18e5,d=null,g=null;function h(){d=null,g=null;try{u().removeStorageSync(l)}catch(n){}}function p(n){var t=d||function(){try{var n=u().getStorageSync(l);return n&&"object"===(0,i.A)(n)?n:null}catch(n){return null}}();return t&&t.openid===n?Date.now()-t.at>f?null:(d=t,t.ok):null}function m(n,t){var e={openid:n,ok:t,at:Date.now()};d=e;try{u().setStorageSync(l,e)}catch(n){}}function v(){var n=(0,s.Q4)();return!(null===n||void 0===n||!n.openid)&&!(0,s.Ic)(n.openid)&&!!n.accessToken&&!!(0,a.gf)()}function y(){return S.apply(this,arguments)}function S(){return S=(0,o.A)((0,r.A)().m(function n(){var t,e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(t=(0,s.Q4)(),null!==t&&void 0!==t&&t.openid){n.n=1;break}return console.log("[AuthGuard] \u65e0\u672c\u5730\u7528\u6237\uff0c\u5224\u5b9a\u672a\u767b\u5f55"),n.a(2,!1);case 1:if(console.log("[AuthGuard] \u672c\u5730\u7528\u6237 openid=",t.openid),!(0,s.Ic)(t.openid)){n.n=2;break}return(0,s.Hf)(),(0,a.ri)(),h(),n.a(2,!1);case 2:if(e=p(t.openid),null===e){n.n=3;break}return console.log("[AuthGuard] \u547d\u4e2d\u672c\u5730\u7f13\u5b58 ok=",e),n.a(2,e);case 3:return g||(g=(0,a.jp)().then(function(n){console.log("[AuthGuard] getMe \u8fd4\u56de:",JSON.stringify(n));var e=!!n&&!!n.id&&n.openid===t.openid;return console.log("[AuthGuard] \u4e00\u81f4\u6027=",e),e?(m(t.openid,!0),!0):((0,s.Hf)(),(0,a.ri)(),h(),!1)}).catch(function(n){return console.error("[AuthGuard] getMe \u5931\u8d25\uff0c\u8d70\u672c\u5730\u4f1a\u8bdd\u515c\u5e95:",n),v()}).finally(function(){g=null})),n.a(2,g)}},n)})),S.apply(this,arguments)}},5234:function(n,t,e){e.d(t,{QE:function(){return l},R6:function(){return u},rj:function(){return s},y9:function(){return a},zv:function(){return c}});var r=e(9379),o=e(8199),i=[{id:"notebook-small",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5c0f\uff09",desc:"\u4fbf\u643a\u968f\u884c\uff0c\u8bb0\u5f55\u70b9\u6ef4",icon:"/icon/\u4e66\u672c.png",iconImg:"/icon/\u4e66\u672c.png",price:12,originalPrice:18,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u4f18\u8d28\u7eb8\u5f20\uff0c\u5c01\u9762\u91c7\u7528\u9ad8\u6863PU\u6750\u8d28\uff0c\u624b\u611f\u7ec6\u817b\u3002\u5185\u9875\u53ef\u5b9a\u5236\u6a2a\u7ebf\u3001\u65b9\u683c\u6216\u7a7a\u767d\u4e09\u79cd\u7248\u5f0f\u3002\u6fc0\u5149\u5fae\u96d5\u5de5\u827a\u5c06\u540d\u5b57\u6216\u56fe\u6848\u7cbe\u51c6\u523b\u5370\u5728\u5c01\u9762\uff0c\u6c38\u4e0d\u892a\u8272\u3002\u5c0f\u5de7\u8f7b\u4fbf\uff0c\u9002\u5408\u968f\u8eab\u643a\u5e26\uff0c\u65e0\u8bba\u662f\u8bfe\u5802\u7b14\u8bb0\u8fd8\u662f\u65e5\u5e38\u5907\u5fd8\uff0c\u90fd\u662f\u4f60\u7684\u4e13\u5c5e\u4f34\u4fa3\u3002",subtitle:"\u638c\u5fc3\u95f4\u7684\u4e13\u5c5e\u5370\u8bb0 \xb7 \u6fc0\u5149\u5fae\u96d5 \xb7 \u4e09\u8272\u5185\u9875\u53ef\u9009",tone:[28,22,18],story:"\u7075\u611f\u6e90\u81ea\u624b\u8d26\u6587\u5316\u4e2d\u5bf9\u4e66\u5199\u4eea\u5f0f\u611f\u7684\u8ffd\u6c42\u3002\u6211\u4eec\u76f8\u4fe1\uff0c\u5728\u6570\u5b57\u6d2a\u6d41\u7684\u65f6\u4ee3\uff0c\u7eb8\u7b14\u7684\u6e29\u5ea6\u4f9d\u7136\u4e0d\u53ef\u66ff\u4ee3\u3002\u5f53\u6fc0\u5149\u5fae\u96d5\u5728PU\u5c01\u9762\u4e0a\u7559\u4e0b\u4e13\u5c5e\u5370\u8bb0\uff0c\u6bcf\u4e00\u7b14\u4e66\u5199\u90fd\u5728\u4e0e\u8fc7\u53bb\u5bf9\u8bdd\u3002\u7b14\u8bb0\u672c\u5c0f\u5de7\u5230\u8db3\u4ee5\u653e\u5165\u4efb\u4f55\u53e3\u888b\uff0c\u5374\u627f\u8f7d\u7740\u72ec\u4e00\u65e0\u4e8c\u7684\u8bb0\u5fc6\u3002",scene:"\u8bfe\u5802\u7b14\u8bb0\u3001\u65e5\u5e38\u5907\u5fd8\u3001\u65c5\u884c\u624b\u8d26\u3001\u5fc3\u60c5\u65e5\u8bb0\u3002\u9002\u5408\u9001\u7ed9\u540c\u5b66\u3001\u4f34\u4fa3\u6216\u4f5c\u4e3a\u6d3b\u52a8\u4f34\u624b\u793c\u2014\u2014\u8ba9\u6bcf\u4e00\u4e2a\u4eba\u90fd\u62e5\u6709\u523b\u7740\u81ea\u5df1\u540d\u5b57\u7684\u4e13\u5c5e\u7b14\u8bb0\u672c\u3002",tags:["\u4f34\u624b\u793c","\u5b66\u751f","\u624b\u8d26","\u4fbf\u643a","\u6fc0\u5149\u5fae\u96d5"],specs:[["\u5c3a\u5bf8","105 \xd7 148mm\uff08A6\uff09"],["\u9875\u6570","120\u5f20/240\u9875"],["\u5185\u9875\u7248\u5f0f","\u6a2a\u7ebf / \u65b9\u683c / \u7a7a\u767d \u53ef\u9009"],["\u5c01\u9762\u6750\u8d28","\u9ad8\u6863PU\u76ae\u9769"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u6c38\u4e0d\u892a\u8272\uff09"],["\u9002\u7528\u573a\u666f","\u8bfe\u5802\u3001\u65c5\u884c\u3001\u65e5\u5e38\u5907\u5fd8"]],images:["/img/book_small/The1.jpg"],mask:{shape:"rect",width:300,height:420,borderRadius:8}},{id:"notebook-large",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5927\uff09",desc:"\u5927\u5f00\u672c\uff0c\u66f4\u591a\u521b\u4f5c\u7a7a\u95f4",icon:"/icon/\u4e66\u672c_\u5927.png",iconImg:"/icon/\u4e66\u672c_\u5927.png",price:45,originalPrice:58,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"A4\u5c3a\u5bf8\u5927\u5f00\u672c\uff0c180\xb0\u5e73\u644a\u8bbe\u8ba1\uff0c\u4e66\u5199\u66f4\u81ea\u7531\u3002\u5c01\u9762\u53ef\u9009\u771f\u76ae\u3001\u4eff\u5e03\u7eb9\u6216\u78e8\u7802\u6750\u8d28\uff0c\u6fc0\u5149\u5fae\u96d5\u533a\u57df\u66f4\u5927\uff0c\u9002\u5408\u5448\u73b0\u5168\u73ed\u540d\u5b57\u3001\u56e2\u961f\u53e3\u53f7\u6216\u516c\u53f8Logo\u7b49\u5927\u7bc7\u5e45\u5185\u5bb9\u3002\u662f\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u4f01\u4e1a\u5e74\u4f1a\u793c\u54c1\u7684\u9996\u9009\u3002",subtitle:"\u5927\u7bc7\u5e45\u5b9a\u5236\u9996\u9009 \xb7 180\xb0\u5e73\u644a \xb7 \u6bd5\u4e1a/\u56e2\u5efa\u5fc5\u5907",tone:[35,28,22],story:"\u6bcf\u4e00\u6b21\u544a\u522b\u90fd\u503c\u5f97\u88ab\u90d1\u91cd\u4e66\u5199\u3002\u6bd5\u4e1a\u5b63\u7684\u6559\u5ba4\u91cc\uff0c\u7b14\u8bb0\u672c\u644a\u5f00\u5728\u8bfe\u684c\u4e0a\uff0c\u5168\u73ed\u7684\u540d\u5b57\u88ab\u6fc0\u5149\u523b\u5370\u5728\u5c01\u9762\u4e2d\u592e\uff0c\u6210\u4e3a\u6c38\u6052\u7684\u540c\u5b66\u5f55\u3002180\xb0\u5e73\u644a\u8bbe\u8ba1\u8ba9\u4e66\u5199\u4e0d\u518d\u88ab\u8ba2\u88c5\u675f\u7f1a\uff0cA4\u5927\u5c3a\u5bf8\u7ed9\u4f60\u5c3d\u60c5\u6325\u6d12\u7684\u5929\u5730\u3002\u8fd9\u662f\u9001\u7ed9\u4e00\u7fa4\u4eba\u6700\u597d\u7684\u544a\u522b\u793c\u7269\u3002",scene:"\u6bd5\u4e1a\u7eaa\u5ff5\u518c\u3001\u516c\u53f8\u5e74\u4f1a\u793c\u54c1\u3001\u56e2\u961f\u5efa\u8bbe\u4f34\u624b\u793c\u3001\u5ba2\u6237\u7b54\u8c22\u3002\u7279\u522b\u9002\u5408\u9700\u8981\u5728\u5c01\u9762\u5448\u73b0\u5927\u91cf\u6587\u5b57\u6216\u56fe\u6848\u7684\u5b9a\u5236\u9700\u6c42\u2014\u2014\u73ed\u7ea7\u540d\u5355\u3001\u516c\u53f8\u613f\u666f\u3001\u56e2\u961f\u53e3\u53f7\u4e00\u7f51\u6253\u5c3d\u3002",tags:["\u6bd5\u4e1a\u793c","\u56e2\u5efa","\u4f01\u4e1a\u5b9a\u5236","\u5927\u7bc7\u5e45","\u5e73\u644a\u8bbe\u8ba1"],specs:[["\u5c3a\u5bf8","210 \xd7 297mm\uff08A4\uff09"],["\u9875\u6570","100\u5f20/200\u9875"],["\u5c01\u9762\u6750\u8d28","\u771f\u76ae / \u4eff\u5e03\u7eb9 / \u78e8\u7802 \u53ef\u9009"],["\u5f00\u5408\u9002\u7528","180\xb0\u5e73\u644a\u8bbe\u8ba1"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u9ad8\u6e05\u6670\u5ea6\uff09"],["\u5b9a\u5236\u9762\u79ef","\u5c01\u9762\u6574\u9762\u53ef\u96d5"]],images:["/img/book_big/The1.jpg","/img/book_big/The2.jpg"],mask:{shape:"rect",width:340,height:480,borderRadius:8}},{id:"coaster",name:"\u94dc\u8d28\u676f\u57ab",desc:"\u91d1\u5c5e\u8d28\u611f\uff0c\u684c\u9762\u827a\u672f",icon:"/icon/\u676f\u5b50.png",iconImg:"/icon/\u676f\u5b50.png",price:25,originalPrice:35,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u91c7\u7528\u4f18\u8d28\u9ec4\u94dc\u6750\u8d28\uff0c\u8868\u9762\u7ecf\u62c9\u4e1d\u5de5\u827a\u5904\u7406\uff0c\u5448\u73b0\u54d1\u5149\u91d1\u5c5e\u8d28\u611f\u3002\u80cc\u9762\u914d\u6709\u9632\u6ed1\u8f6f\u6728\u57ab\uff0c\u4fdd\u62a4\u684c\u9762\u540c\u65f6\u9632\u6b62\u6ed1\u52a8\u3002\u6fc0\u5149\u5fae\u96d5\u53ef\u5728\u8868\u9762\u523b\u5370\u540d\u5b57\u3001\u65e5\u671f\u6216\u795d\u798f\u8bed\uff0c\u662f\u4e54\u8fc1\u65b0\u5c45\u3001\u65b0\u5a5a\u8d3a\u793c\u7684\u7cbe\u81f4\u4e4b\u9009\u3002",subtitle:"\u9ec4\u94dc\u8d28\u611f \xb7 \u62c9\u4e1d\u54d1\u5149 \xb7 \u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851",tone:[42,30,18],story:"\u8bbe\u8ba1\u7075\u611f\u6765\u81ea\u65e5\u5f0f\u4f98\u5bc2\u7f8e\u5b66\u3002\u5c81\u6708\u4f1a\u5728\u9ec4\u94dc\u8868\u9762\u7559\u4e0b\u6e29\u67d4\u7684\u6c27\u5316\u75d5\u8ff9\uff0c\u5c31\u5982\u540c\u4e00\u676f\u8336\u4ece\u70ed\u5230\u51c9\u7684\u8fc7\u7a0b\u3002\u62c9\u4e1d\u5904\u7406\u540e\u7684\u54d1\u5149\u8868\u9762\u5728\u706f\u5149\u4e0b\u5448\u73b0\u7ec6\u817b\u7684\u91d1\u5c5e\u7eb9\u7406\uff0c\u6fc0\u5149\u5fae\u96d5\u7684\u540d\u5b57\u6210\u4e3a\u8fd9\u4ef6\u5668\u7269\u4e0a\u6700\u51b7\u9759\u7684\u6ce8\u811a\u3002\u5b83\u4e0d\u53ea\u662f\u676f\u57ab\uff0c\u66f4\u662f\u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851\u3002",scene:"\u4e54\u8fc1\u9001\u793c\u3001\u65b0\u5a5a\u8d3a\u793c\u3001\u5496\u5561\u89d2\u5e03\u7f6e\u3001\u529e\u516c\u684c\u7f8e\u5b66\u3002\u9002\u5408\u9001\u7ed9\u559c\u6b22\u624b\u51b2\u5496\u5561\u7684\u670b\u53cb\uff0c\u6216\u4f5c\u4e3a\u5a5a\u793c\u5bbe\u5ba2\u7684\u56de\u793c\u2014\u2014\u6bcf\u4e00\u53ea\u676f\u57ab\u4e0a\u90fd\u523b\u7740\u5bbe\u5ba2\u7684\u540d\u5b57\uff0c\u8ba9\u793c\u7269\u672c\u8eab\u6210\u4e3a\u5ea7\u4f4d\u5361\u3002",tags:["\u4e54\u8fc1\u793c","\u65b0\u5a5a\u8d3a\u793c","\u684c\u9762\u7f8e\u5b66","\u9ec4\u94dc","\u624b\u51b2\u5496\u5561"],specs:[["\u6750\u8d28","\u9ec4\u94dc + \u80cc\u9762\u8f6f\u6728\u9632\u6ed1\u57ab"],["\u8868\u9762\u5904\u7406","\u62c9\u4e1d\u54d1\u5149"],["\u76f4\u5f84","100mm"],["\u539a\u5ea6","3mm"],["\u96d5\u523b\u5de5\u827a","\u5149\u7ea4\u6fc0\u5149\u7cbe\u7ec6\u5fae\u96d5"],["\u8010\u6e29","\u2264120\xb0C"]],images:["/img/cup/The1.jpg"],mask:{shape:"circle",width:280,height:280}},{id:"penbox",name:"\u7af9\u5236\u7b14\u76d2",desc:"\u81ea\u7136\u7af9\u7eb9\uff0c\u6587\u623f\u96c5\u5668",icon:"/icon/\u7b14\u76d2.png",iconImg:"/icon/\u7b14\u76d2.png",price:75,originalPrice:98,leadTime:"7-10\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u5929\u7136\u6960\u7af9\uff0c\u7ecf\u591a\u9053\u5de5\u5e8f\u6253\u78e8\u629b\u5149\uff0c\u4fdd\u7559\u5929\u7136\u7af9\u7eb9\u808c\u7406\u3002\u76d2\u76d6\u91c7\u7528\u78c1\u5438\u5f00\u5408\uff0c\u5185\u90e8\u8bbe\u6709\u5206\u5c42\u9694\u677f\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u7af9\u9762\u4e0a\u5448\u73b0\u6df1\u6d45\u4e0d\u4e00\u7684\u96d5\u523b\u6548\u679c\uff0c\u878d\u5165\u58a8\u9999\u6c14\u8d28\u3002\u9002\u5408\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u7684\u6587\u623f\u4f34\u4fa3\u3002",subtitle:"\u5929\u7136\u6960\u7af9 \xb7 \u78c1\u5438\u5f00\u5408 \xb7 \u6587\u623f\u96c5\u5668\u4e4b\u9009",tone:[30,24,16],story:"\u6bcf\u4e00\u53ea\u7b14\u76d2\u90fd\u6765\u81ea\u540c\u4e00\u7247\u7af9\u6797\u7684\u4e0d\u540c\u90e8\u4f4d\uff0c\u56e0\u6b64\u7eb9\u8def\u7edd\u4e0d\u91cd\u590d\u2014\u2014\u6b63\u5982\u6ca1\u6709\u4e24\u4e2a\u4eba\u7684\u4e66\u6cd5\u98ce\u683c\u5b8c\u5168\u76f8\u540c\u3002\u6211\u4eec\u4fdd\u7559\u4e86\u6960\u7af9\u5929\u7136\u7684\u6e29\u6da6\u89e6\u611f\uff0c\u53ea\u5728\u8868\u9762\u4ee5\u6fc0\u5149\u523b\u4e0b\u540d\u5b57\u6216\u4e00\u53e5\u7bb4\u8a00\u3002\u6253\u5f00\u78c1\u5438\u76d2\u76d6\u65f6\u7684\u6e05\u8106\u58f0\u54cd\uff0c\u662f\u6587\u623f\u4e2d\u7684\u5c0f\u5c0f\u4eea\u5f0f\u3002",scene:"\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u88c5\u5907\u3001\u6559\u5e08\u8282\u793c\u7269\u3001\u4e66\u623f\u6696\u623f\u793c\u3002\u9002\u5408\u9001\u7ed9\u5199\u5b57\u597d\u770b\u7684\u4eba\u2014\u2014\u56e0\u4e3a\u61c2\u4e66\u5199\u7684\u4eba\uff0c\u624d\u61c2\u4e00\u53ea\u597d\u7b14\u76d2\u7684\u5206\u91cf\u3002",tags:["\u6587\u623f","\u4e66\u6cd5","\u6559\u5e08\u8282","\u4e66\u623f","\u5929\u7136\u6750\u8d28"],specs:[["\u6750\u8d28","\u5929\u7136\u6960\u7af9"],["\u5f00\u5408\u65b9\u5f0f","\u78c1\u5438\u5f0f\u76d2\u76d6"],["\u5185\u90e8\u7ed3\u6784","\u5206\u5c42\u9694\u677f\uff08\u53ef\u8c03\u8282\uff09"],["\u5c3a\u5bf8","200 \xd7 65 \xd7 30mm"],["\u8868\u9762\u5904\u7406","\u624b\u5de5\u6253\u78e8\u629b\u5149\uff0c\u65e0\u6f06"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u70e7\u8680\uff08\u6df1\u6d45\u53ef\u8c03\uff09"]],images:["/img/penbox/The1.jpg","/img/penbox/The2.jpg","/img/penbox/The3.jpg"],mask:{shape:"rect",width:320,height:160,borderRadius:12}},{id:"booklamp",name:"\u4e66\u672c\u578b\u706f",desc:"\u6e29\u6696\u5149\u5f71\uff0c\u70b9\u4eae\u5fc3\u610f",icon:"/icon/\u4e66\u706f.png",iconImg:"/icon/\u4e66\u706f.png",price:45,originalPrice:68,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u5f00\u5408\u5f0f\u8bbe\u8ba1\uff0c\u6253\u5f00\u5373\u4eae\uff0c\u5408\u62e2\u5373\u706d\uff0c\u5982\u9b54\u6cd5\u4e66\u822c\u5145\u6ee1\u60ca\u559c\u3002\u91c7\u7528LED\u6696\u5149\u706f\u6e90\uff0c\u5149\u7ebf\u67d4\u548c\u4e0d\u523a\u773c\uff0c\u53ef\u6301\u7eed\u70b9\u4eae6-8\u5c0f\u65f6\u3002\u5c01\u9762\u6fc0\u5149\u5fae\u96d5\u53ef\u5b9a\u5236\u6587\u5b57\u3001\u56fe\u6848\u6216\u7167\u7247\uff0c\u8ba9\u6e29\u6696\u7684\u706f\u5149\u627f\u8f7d\u4e13\u5c5e\u8bb0\u5fc6\u3002\u662f\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u793c\u7269\u7684\u521b\u610f\u4e4b\u9009\u3002",subtitle:"\u5f00\u5408\u5373\u4eae \xb7 LED\u6696\u5149 \xb7 \u9b54\u6cd5\u4e66\u822c\u7684\u60ca\u559c",tone:[25,20,15],story:"\u7075\u611f\u6765\u81ea\u300a\u54c8\u5229\xb7\u6ce2\u7279\u300b\u4e2d\u7684\u9b54\u6cd5\u8bfe\u672c\u2014\u2014\u6253\u5f00\u4e00\u672c\u4e66\uff0c\u5149\u8292\u503e\u6cfb\u800c\u51fa\u3002\u6211\u4eec\u91c7\u7528\u675c\u90a6\u7eb8\u4e0e\u5b9e\u6728\u5c01\u9762\u7ed3\u5408\uff0c\u8ba9\u706f\u4f53\u65e2\u8f7b\u8584\u53c8\u575a\u56fa\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u5c01\u9762\u7559\u4e0b\u4f60\u7684\u540d\u5b57\u6216\u4e00\u5e45\u5c0f\u753b\uff0c\u5f53\u706f\u5728\u6df1\u591c\u4eae\u8d77\uff0c\u90a3\u662f\u4e13\u5c5e\u4e8e\u4f60\u7684\u6e29\u6696\u89d2\u843d\u3002",scene:"\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u5e8a\u5934\u591c\u706f\u3001\u9732\u8425\u6c1b\u56f4\u706f\u3001\u513f\u7ae5\u623f\u3002\u7279\u522b\u9002\u5408\u5728\u5c01\u9762\u523b\u4e0a\u4e24\u4e2a\u4eba\u7684\u540d\u5b57\u548c\u4e00\u53e5\u60c5\u8bdd\uff0c\u5728\u60c5\u4eba\u8282\u6216\u7eaa\u5ff5\u65e5\u9001\u51fa\u2014\u2014\u6253\u5f00\u4e66\u706f\uff0c\u5c31\u50cf\u6253\u5f00\u4e00\u5c01\u4f1a\u53d1\u5149\u7684\u60c5\u4e66\u3002",tags:["\u60c5\u4fa3\u793c","\u6bd5\u4e1a\u7eaa\u5ff5","\u591c\u706f","\u6c1b\u56f4\u706f","\u521b\u610f\u793c\u7269"],specs:[["\u5149\u6e90","LED \u6696\u767d\u5149\uff083000K\uff09"],["\u7eed\u822a","6-8\u5c0f\u65f6\uff08\u5185\u7f6e\u53ef\u5145\u7535\u9502\u7535\u6c60\uff09"],["\u5145\u7535","USB Type-C \u63a5\u53e3"],["\u5c01\u9762\u6750\u8d28","\u675c\u90a6\u7eb8 + \u5b9e\u6728\u5c01\u9762"],["\u5c55\u5f00\u5c3a\u5bf8","210 \xd7 150mm"],["\u96d5\u523b\u5de5\u827a","\u6fc0\u5149\u5fae\u96d5\uff08\u652f\u6301\u6587\u5b57+\u7b80\u5355\u56fe\u6848\uff09"]],images:["/img/booklight/The1.jpg","/img/booklight/The2.jpg"],mask:{shape:"rect",width:320,height:240,borderRadius:4}}],c=i.map(function(n){return(0,r.A)((0,r.A)({},n),{},{images:(n.images||[]).map(function(n){return(0,o.uq)(n)}),iconImg:(0,o.uq)(n.iconImg)})}),u=c,a=function(n){return c.find(function(t){return t.id===n})},s={"notebook-small":(0,o.uq)("/icon/\u4e66\u672c.png"),"notebook-large":(0,o.uq)("/icon/\u4e66\u672c_\u5927.png"),coaster:(0,o.uq)("/icon/\u676f\u5b50.png"),penbox:(0,o.uq)("/icon/\u7b14\u76d2.png"),booklamp:(0,o.uq)("/icon/\u4e66\u706f.png")};function l(n){return null!==n&&void 0!==n&&n.iconImg?(0,o.uq)(n.iconImg):null!==n&&void 0!==n&&n.id?(0,o.uq)(s[n.id]||"/icon/\u56db\u89d2\u661f.svg"):(0,o.uq)("/icon/\u56db\u89d2\u661f.svg")}},3246:function(n,t,e){e.d(t,{C1:function(){return a},L:function(){return g},Sy:function(){return l},WG:function(){return d},gf:function(){return f},q:function(){return m}});var r=e(1212),o=e(9379),i=e(467),c=e(758),u=e.n(c),a="https://wxbackend.tokenleaping.com",s="smart_access_token";function l(){try{u().hideLoading()}catch(n){}}function f(){try{return u().getStorageSync(s)||""}catch(n){return""}}function d(n){u().setStorageSync(s,n)}function g(){try{u().removeStorageSync(s)}catch(n){}}var h=null;var p=null;function m(n){p=n}function v(n,t,e,r){return y.apply(this,arguments)}function y(){return y=(0,i.A)((0,r.A)().m(function n(t,e,o,i){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,u().request({url:"".concat(a).concat(t),method:e,data:o,header:i}))}},n)})),y.apply(this,arguments)}function S(n){return k.apply(this,arguments)}function k(){return k=(0,i.A)((0,r.A)().m(function n(t){var e,i,c,u,a,s,l,d,m,y,S,k,b,A,w,T,C,x,_=arguments;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return e=_.length>1&&void 0!==_[1]?_[1]:{},i=e.method,c=void 0===i?"GET":i,u=e.data,a=e.headers,s=void 0===a?{}:a,l=e.auth,d=void 0===l||l,m=e.skipAuthRefresh,y=void 0!==m&&m,S=function(){var n=f();return(0,o.A)((0,o.A)({"Content-Type":"application/json"},d&&n?{Authorization:"Bearer ".concat(n)}:{}),s)},n.p=1,n.n=2,v(t,c,u,S());case 2:k=n.v,n.n=4;break;case 3:throw n.p=3,n.v,b=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),b.statusCode=-1,b;case 4:if(401!==k.statusCode||y||!p){n.n=9;break}return n.n=5,p();case 5:if(A=n.v,!A){n.n=9;break}return n.p=6,n.n=7,v(t,c,u,S());case 7:k=n.v,n.n=9;break;case 8:throw n.p=8,n.v,w=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),w.statusCode=-1,w;case 9:if(401!==k.statusCode){n.n=10;break}throw g(),null===(T=h)||void 0===T||T(),C=new Error("\u767b\u5f55\u5df2\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55"),C.statusCode=401,C;case 10:if(x=k.data,!x||"number"!==typeof x.code||0===x.code){n.n=11;break}throw new Error(x.message||"\u8bf7\u6c42\u5931\u8d25");case 11:return n.a(2,x&&"number"===typeof x.code?x.data:x)}},n,null,[[6,8],[1,3]])})),k.apply(this,arguments)}var b={get:function(n,t){return S(n,(0,o.A)((0,o.A)({},t),{},{method:"GET"}))},post:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"POST",data:t}))},put:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"PUT",data:t}))},patch:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"PATCH",data:t}))},del:function(n,t){return S(n,(0,o.A)((0,o.A)({},t),{},{method:"DELETE"}))}};t.Ay=b},1457:function(n,t,e){e.d(t,{E1:function(){return O},cY:function(){return S},Hf:function(){return P},kg:function(){return H},ab:function(){return Q},hG:function(){return F},IU:function(){return C},Re:function(){return U},EB:function(){return z},p_:function(){return v},n7:function(){return w},O4:function(){return V},ug:function(){return q},Q4:function(){return I},Ic:function(){return u},Q1:function(){return M},kh:function(){return b},eW:function(){return X},Fu:function(){return y},Rq:function(){return K},F0:function(){return Z},iA:function(){return R},iZ:function(){return Y},yU:function(){return L},i5:function(){return k},uF:function(){return G}});var r=e(758),o=e.n(r),i="smart_user_info",c="smart_active_openid";function u(n){return!!n&&(n.startsWith("mock_")||n.startsWith("mock-"))}function a(){var n,t=null;try{t=o().getStorageSync(i)}catch(n){t=null}var e=(null===(n=t)||void 0===n?void 0:n.openid)||o().getStorageSync(c)||"_guest_";return o().setStorageSync(c,e),e}function s(n){var t=a();return"".concat(n,"_").concat(t)}function l(n,t){return"".concat(n,"_").concat(t)}var f=e(6764),d=e(9379),g=e(436),h=e(8199),p=e(5234);function m(n){try{return o().getStorageSync(l("design_list",n))||[]}catch(n){return[]}}function v(){try{return o().getStorageSync(s("design_list"))||[]}catch(n){return[]}}function y(n){o().setStorageSync(s("design_list"),n)}function S(n,t){var e=v(),r=(0,h.uq)((null===n||void 0===n?void 0:n.iconImg)||p.rj[null===n||void 0===n?void 0:n.id]||"/icon/\u56db\u89d2\u661f.svg"),o={id:"DSG"+Date.now(),productId:n.id,productName:n.name,productIcon:r,unitPrice:n.price,count:t,status:"undesigned",createdAt:(new Date).toISOString().slice(0,10)};return y([].concat((0,g.A)(e),[o])),o}function k(n,t){var e=v(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(e[r]=(0,d.A)((0,d.A)({},e[r]),t),y(e))}function b(n){var t=v().filter(function(t){return!n.includes(t.id)});y(t)}function A(n){try{return o().getStorageSync(l("order_list",n))||[]}catch(n){return[]}}function w(){try{return o().getStorageSync(s("order_list"))||[]}catch(n){return[]}}function T(n){o().setStorageSync(s("order_list"),n)}function C(n){var t,e=v(),r=w(),o=e.find(function(t){return t.id===n});if(!o)return null;var i=null!==(t=o.productIcon)&&void 0!==t&&t.startsWith("/icon/")||/^https?:/i.test(o.productIcon||"")?o.productIcon:p.rj[o.productId]||"/icon/\u56db\u89d2\u661f.svg",c=(0,h.uq)(i),u={id:"ORD"+Date.now().toString().slice(-9),productName:o.productName,productIcon:c,statusCode:"pending",date:(new Date).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).replace(/\//g,"-"),price:"\xa5"+(o.unitPrice*o.count).toFixed(2),count:o.count,sku:"".concat(o.productName," \xd7 ").concat(o.count)},a=e.findIndex(function(t){return t.id===n});return-1!==a&&(e[a].status="ordered",e[a].orderId=u.id),y(e),T([u].concat((0,g.A)(r))),u}var x="smart_user_registry",_="zhihui2024";function B(){try{return o().getStorageSync(x)||[]}catch(n){return[]}}function j(n){var t=B();t.includes(n)||(t.push(n),o().setStorageSync(x,t))}function N(n){var t=B().filter(function(t){return t!==n});o().setStorageSync(x,t)}function I(){try{return o().getStorageSync(i)}catch(n){return null}}function E(n){var t;o().setStorageSync(i,n),null!==n&&void 0!==n&&n.openid&&(o().setStorageSync(c,n.openid),o().setStorageSync("user_info_".concat(n.openid),n),j(n.openid)),(0,f.m)(),null===(t=o().eventCenter)||void 0===t||t.trigger("authStateChanged",{openid:(null===n||void 0===n?void 0:n.openid)||""})}function D(n){try{var t=o().getStorageSync("user_info_".concat(n));if(t)return t}catch(n){}var e=I();return(null===e||void 0===e?void 0:e.openid)===n?e:null}function P(){var n;o().removeStorageSync(i),o().removeStorageSync(c),(0,f.m)(),null===(n=o().eventCenter)||void 0===n||n.trigger("authStateChanged",{openid:""})}function R(n){E(n)}function q(){return I()}function M(){var n=B();return n.map(function(n){var t=D(n),e=m(n),r=A(n);return{openid:n,nickName:(null===t||void 0===t?void 0:t.nickName)||"\u672a\u77e5\u7528\u6237",avatarUrl:(null===t||void 0===t?void 0:t.avatarUrl)||"",loginAt:(null===t||void 0===t?void 0:t.loginAt)||0,designCount:e.length,orderCount:r.length}})}function H(n,t){var e="mock_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,6),r={openid:e,nickName:n||"\u5fae\u4fe1\u7528\u6237",avatarUrl:t||"",loginAt:Date.now()};return E(r),r}function Y(n){var t=D(n);return!!t&&(o().setStorageSync(i,t),o().setStorageSync(c,n),!0)}function F(n){o().removeStorageSync("user_info_".concat(n)),o().removeStorageSync("design_list_".concat(n)),o().removeStorageSync("order_list_".concat(n)),o().removeStorageSync("address_list_".concat(n)),N(n);var t=I();(null===t||void 0===t?void 0:t.openid)===n&&P()}function G(n){return n===_}function U(){try{return o().getStorageSync(s("address_list"))||[]}catch(n){return[]}}function W(n){o().setStorageSync(s("address_list"),n)}function O(n){var t=U(),e=(0,d.A)((0,d.A)({},n),{},{id:"ADR"+Date.now()});return e.isDefault&&t.forEach(function(n){n.isDefault=!1}),W([e].concat((0,g.A)(t))),e}function L(n,t){var e=U(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(t.isDefault&&e.forEach(function(n){n.isDefault=!1}),e[r]=(0,d.A)((0,d.A)({},e[r]),t),W(e))}function Q(n){var t=U().filter(function(t){return t.id!==n});W(t)}function z(){return U().find(function(n){return n.isDefault})}var J="smart_theme";function V(){try{return o().getStorageSync(J)||"auto"}catch(n){return"auto"}}function Z(n){o().setStorageSync(J,n)}var $=null;function K(n){$=n}function X(n){if("auto"===n){if($)return $;try{var t=o().getAppBaseInfo();if("dark"===t.theme||"light"===t.theme)return t.theme}catch(n){}return"light"}return n}},6606:function(n,t,e){e.d(t,{G:function(){return c}});var r=e(758),o=e.n(r);function i(n){return"dark"===n?"#191919":"#faf7f2"}function c(n,t){var e=null!==t&&void 0!==t?t:i(n);o().setBackgroundColor({backgroundColor:e,backgroundColorTop:e,backgroundColorBottom:e}),o().setBackgroundTextStyle({textStyle:"dark"===n?"light":"dark"})}}}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[76],{9513:function(n,t,e){e.d(t,{A:function(){return i}});var r=e(118),o=e(4848);function i(n){var t=n.children,e=n.className,i=n.style;return(0,o.jsx)(r.Ss,{className:"bottom-action-bar ".concat(e||""),style:i,children:t})}},7723:function(n,t,e){e.d(t,{A:function(){return d}});var r=e(5544),o=e(758),i=e.n(o),c=e(6540),u=e(118),a=e(6764),s=e(9703),l=e(8199),f=e(4848);function d(n){var t=(0,c.useState)("checking"),e=(0,r.A)(t,2),o=e[0],d=e[1],g=(0,c.useCallback)(function(){var n=!1;return(0,a.d)().then(function(t){n||d(t?"ok":"denied")}).catch(function(){n||d("denied")}),function(){n=!0}},[]);return(0,c.useEffect)(function(){var n=g(),t=function(){g()},e=function(){g()};return i().eventCenter.on("tabBarChange",t),i().eventCenter.on(s.Wo,e),i().eventCenter.on("authStateChanged",t),function(){n(),i().eventCenter.off("tabBarChange",t),i().eventCenter.off(s.Wo,e),i().eventCenter.off("authStateChanged",t)}},[g]),"checking"===o?(0,f.jsx)(u.Ss,{className:"login-guard",children:(0,f.jsxs)(u.Ss,{className:"login-guard-inner",children:[(0,f.jsx)(u._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u8bbe\u7f6e.png"),mode:"aspectFit"}),(0,f.jsx)(u.EY,{className:"login-guard-title",children:"\u6821\u9a8c\u767b\u5f55\u72b6\u6001"})]})}):"denied"===o?(0,f.jsx)(u.Ss,{className:"login-guard",children:(0,f.jsxs)(u.Ss,{className:"login-guard-inner",children:[(0,f.jsx)(u._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"}),(0,f.jsx)(u.EY,{className:"login-guard-title",children:"\u8bf7\u5148\u767b\u5f55"}),(0,f.jsx)(u.EY,{className:"login-guard-desc",children:"\u767b\u5f55\u540e\u67e5\u770b\u60a8\u7684\u4e13\u5c5e\u5185\u5bb9"}),(0,f.jsx)(u.Ss,{className:"btn-primary login-guard-btn",onTap:function(){return i().switchTab({url:"/pages/profile/index"})},children:(0,f.jsx)(u.EY,{children:"\u53bb\u767b\u5f55"})})]})}):n.children}},3053:function(n,t,e){e.d(t,{A:function(){return d}});var r=e(5544),o=e(118),i=e(758),c=e.n(i),u=e(6540),a=e(9201);function s(n){var t=n.viewportBottom,e=n.scrollTop,r=n.statusBarHeight,o=Number.isFinite(t)?t:0,i=Number.isFinite(e)?e:0,c=Number.isFinite(r)?r:0;return Math.max(0,o+i-c-8)}function l(n){var t=n.scrollTop,e=n.startY,r=n.rangeY,o=Number.isFinite(t)?t:0,i=Math.max(0,Number.isFinite(e)?e:0),c=Math.max(1,Number.isFinite(r)?r:1);return o<=i?0:Math.min(1,(o-i)/c)}var f=e(4848);function d(n){var t=n.title,e=n.targetSelector,i=void 0===e?".page-header":e,d=n.showBack,g=void 0!==d&&d,h=(0,a.c)(),p=(0,u.useState)(0),m=(0,r.A)(p,2),v=m[0],y=m[1],S=(0,u.useMemo)(function(){return{startY:Math.max(0,h.headerPaddingTop-h.statusBarHeight),rangeY:Math.max(48,.45*h.headerPaddingTop)}},[h.headerPaddingTop,h.statusBarHeight]),k=(0,u.useRef)(S),b=(0,u.useRef)(null),A=(0,u.useRef)(0),w=(0,u.useCallback)(function(n){A.current=n,null===b.current&&(b.current=setTimeout(function(){b.current=null;var n=k.current,t=n.startY,e=n.rangeY;y(l({scrollTop:A.current,startY:t,rangeY:e}))},16))},[]);return(0,u.useEffect)(function(){var n=!1,t=null;k.current=S;var e=function(){n||c().createSelectorQuery().select(i).boundingClientRect(function(t){if(!n){if(!t||Array.isArray(t)||"number"!==typeof t.bottom||"number"!==typeof t.height)return k.current=S,void w(A.current);var e=s({viewportBottom:t.bottom,scrollTop:A.current,statusBarHeight:h.statusBarHeight}),r=Math.max(32,.7*t.height);k.current={startY:e,rangeY:r},w(A.current)}}).exec()};return c().nextTick(function(){n||(t=setTimeout(e,80))}),function(){n=!0,null!==t&&clearTimeout(t),null!==b.current&&clearTimeout(b.current),b.current=null}},[w,S,i]),c().usePageScroll(function(n){w(n.scrollTop)}),(0,f.jsxs)(o.Ss,{className:"scroll-top-mask",style:{height:"".concat(Math.max(h.menuButtonTop+h.menuButtonHeight+18,h.statusBarHeight+52)+24,"px"),opacity:v},children:[(0,f.jsx)(o.Ss,{className:"scroll-top-blur scroll-top-blur-mid"}),(0,f.jsx)(o.Ss,{className:"scroll-top-blur scroll-top-blur-soft"}),(0,f.jsx)(o.Ss,{className:"scroll-top-gradient"}),g&&(0,f.jsx)(o.Ss,{className:"scroll-top-back",style:{top:"".concat(h.menuButtonTop,"px")},onTap:function(){return c().navigateBack()},children:(0,f.jsx)(o.EY,{className:"scroll-top-back-arrow",children:"\u2190"})}),(0,f.jsx)(o.EY,{className:"scroll-top-title",style:{top:"calc(".concat(h.menuButtonTop,"px + 40rpx)"),transform:"translateY(-50%)",opacity:Math.max(0,Math.min(1,(v-.5)/.5))},children:t})]})}},9674:function(n,t,e){e.d(t,{A:function(){return c}});var r=e(118),o=e(9703),i=e(4848);function c(n){var t=n.darkTop,e=void 0!==t&&t,c=(0,o.wR)(),u=c.resolvedTheme,a="dark"===u||e,s=a?"#191919":"#faf7f2",l=a?"#ffffff":"#000000";return(0,i.jsx)(r.tf,{backgroundColor:s,backgroundColorTop:s,backgroundColorBottom:s,backgroundTextStyle:a?"light":"dark",rootBackgroundColor:s,children:(0,i.jsx)(r.yk,{frontColor:l,backgroundColor:s})})}},9703:function(n,t,e){e.d(t,{NP:function(){return g},Wo:function(){return d},wR:function(){return h}});var r=e(5544),o=e(6540),i=e(758),c=e.n(i),u=e(118),a=e(1457),s=e(6606),l=e(4848),f=(0,o.createContext)({theme:"auto",resolvedTheme:"light",toggleTheme:function(){},setTheme:function(){}}),d="themeChange";function g(n){var t=n.children,e=(0,o.useState)((0,a.O4)()),g=(0,r.A)(e,2),h=g[0],p=g[1],m=(0,o.useState)((0,a.eW)((0,a.O4)())),v=(0,r.A)(m,2),y=v[0],S=v[1],k=(0,o.useRef)(null),b=(0,o.useCallback)(function(n){S((0,a.eW)(n))},[]),A=(0,o.useCallback)(function(n){(0,a.Rq)(n),k.current=n,"auto"===(0,a.O4)()&&S(n)},[]),w=(0,o.useCallback)(function(){try{var n=c().getAppBaseInfo();A("dark"===n.theme?"dark":"light")}catch(n){}try{c().createSelectorQuery().select(".system-theme-detector").fields({computedStyle:["opacity"]}).exec(function(n){var t=n&&n[0]&&n[0].computedStyle&&n[0].computedStyle.opacity;A("1"===t?"dark":"light")})}catch(n){}},[A]),T=(0,o.useCallback)(function(n){(0,a.F0)(n),p(n),"auto"===n?w():b(n)},[w,b]),C=(0,o.useCallback)(function(){var n="light"===y?"dark":"light";T(n)},[y,T]);return(0,o.useEffect)(function(){w()},[w]),(0,o.useEffect)(function(){var n,t=function(n){!n||"dark"!==n.theme&&"light"!==n.theme||A(n.theme)},e=c();return null===(n=e.onThemeChange)||void 0===n||n.call(e,t),function(){var n;null===(n=e.offThemeChange)||void 0===n||n.call(e,t)}},[A]),(0,o.useEffect)(function(){if("auto"===h){var n=setInterval(function(){try{var n=c().getAppBaseInfo(),t="dark"===n.theme?"dark":"light";t!==k.current&&A(t)}catch(n){}},2e3);return function(){return clearInterval(n)}}},[h,A]),(0,o.useEffect)(function(){c().eventCenter.trigger(d,y)},[y]),(0,o.useEffect)(function(){(0,s.G)(y)},[y]),(0,i.useDidShow)(function(){"auto"===h&&w()}),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(u.Ss,{className:"system-theme-detector"}),(0,l.jsx)(f.Provider,{value:{theme:h,resolvedTheme:y,toggleTheme:C,setTheme:T},children:t})]})}function h(){return(0,o.useContext)(f)}},9201:function(n,t,e){e.d(t,{c:function(){return a}});var r=e(5544),o=e(6540),i=e(758),c=e.n(i),u=null;function a(){var n=(0,o.useState)(null!==u&&void 0!==u?u:{statusBarHeight:20,menuButtonTop:26,menuButtonHeight:32,capsuleRight:368,safeInsetTop:20,safeInsetBottom:0,headerPaddingTop:66,backBtnPaddingTop:20}),t=(0,r.A)(n,2),e=t[0],i=t[1];return(0,o.useEffect)(function(){if(u)i(u);else try{var n,t,e,r,o,a,s,l,f=c().getSystemInfoSync(),d=c().getMenuButtonBoundingClientRect(),g=f.statusBarHeight||20,h=null!==(n=d.top)&&void 0!==n?n:g+4,p=null!==(t=d.height)&&void 0!==t?t:32,m=null!==(e=d.right)&&void 0!==e?e:f.windowWidth-7,v=null!==(r=null===(o=f.safeArea)||void 0===o?void 0:o.top)&&void 0!==r?r:g,y=null!==(a=f.safeAreaInsetBottom)&&void 0!==a?a:f.screenHeight-(null!==(s=null===(l=f.safeArea)||void 0===l?void 0:l.bottom)&&void 0!==s?s:f.screenHeight),S=Math.max(h+p+6,g+44),k=Math.max(g,h-4),b={statusBarHeight:g,menuButtonTop:h,menuButtonHeight:p,capsuleRight:m,safeInsetTop:v,safeInsetBottom:y,headerPaddingTop:S,backBtnPaddingTop:k};u=b,i(b)}catch(n){}},[]),e}},5414:function(n,t,e){e.d(t,{l:function(){return u}});var r=e(6540),o=e(758),i=e.n(o),c=e(6606);function u(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.mode,u=void 0===e?"auto":e,a=(0,r.useCallback)(function(){var t="dark"===u||"auto"===u&&"light"===n,e=t?"#000000":"#ffffff",r=t?"#faf7f2":"#191919";i().setNavigationBarColor({frontColor:e,backgroundColor:r}),(0,c.G)(n,r)},[u,n]);(0,r.useEffect)(a,[a]),(0,o.useDidShow)(a)}},6845:function(n,t,e){e.d(t,{l8:function(){return w},jp:function(){return f},gf:function(){return i.gf},xZ:function(){return T},iD:function(){return c},ri:function(){return a},x5:function(){return B},W$:function(){return A},r7:function(){return s}});var r=e(1212),o=e(467),i=e(3246);function c(n){return u.apply(this,arguments)}function u(){return u=(0,o.A)((0,r.A)().m(function n(t){var e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,i.Ay.post("/api/auth/login",{code:t},{auth:!1});case 1:return e=n.v,null!==e&&void 0!==e&&e.accessToken&&(0,i.WG)(e.accessToken),n.a(2,e)}},n)})),u.apply(this,arguments)}function a(){(0,i.L)()}function s(n){return l.apply(this,arguments)}function l(){return l=(0,o.A)((0,r.A)().m(function n(t){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,i.Ay.patch("/api/users/me",t))}},n)})),l.apply(this,arguments)}function f(){return d.apply(this,arguments)}function d(){return d=(0,o.A)((0,r.A)().m(function n(){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,i.Ay.get("/api/users/me"))}},n)})),d.apply(this,arguments)}var g=e(4765),h=e(9379),p=e(758),m=e.n(p);function v(n,t,e,r){return y.apply(this,arguments)}function y(){return y=(0,o.A)((0,r.A)().m(function n(t,e,o,c){var u,a;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.n=1,m().uploadFile({url:"".concat(i.C1).concat(t),filePath:e,name:o,formData:c,header:{Authorization:"Bearer ".concat((0,i.gf)())}});case 1:u=n.v,n.p=2,a=JSON.parse(u.data),n.n=4;break;case 3:throw n.p=3,n.v,new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5");case 4:if(!a||"number"!==typeof a.code||0===a.code){n.n=5;break}throw new Error(a.message||"\u8bf7\u6c42\u5931\u8d25");case 5:return n.a(2,a&&"number"===typeof a.code?a.data:a)}},n,null,[[2,3]])})),y.apply(this,arguments)}function S(n){return i.Ay.get("/api/upload/credentials?key=".concat(encodeURIComponent(n)))}function k(n,t){return b.apply(this,arguments)}function b(){return b=(0,o.A)((0,r.A)().m(function n(t,e){var o,i;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(e.presignedUrl){n.n=1;break}throw new Error("\u83b7\u53d6 COS \u76f4\u4f20\u5730\u5740\u5931\u8d25");case 1:return o=m().getFileSystemManager(),i=o.readFileSync(t),n.n=2,m().request({url:e.presignedUrl,method:"PUT",data:i,header:{"Content-Type":"application/octet-stream"}});case 2:return n.a(2,e.presignedUrl.split("?")[0])}},n)})),b.apply(this,arguments)}function A(n){return v("/api/sketch",n,"image")}function w(n,t,e){return v("/api/wordcloud/generate",n,"image",(0,h.A)({names:t},e?{params:JSON.stringify(e)}:{}))}function T(n){return i.Ay.get("/api/wordcloud/jobs/".concat(n))}function C(n){return!!n&&/^(wxfile:|http:\/\/tmp\/|tmp\/)/i.test(n)}function x(n){return _.apply(this,arguments)}function _(){return _=(0,o.A)((0,r.A)().m(function n(t){var e,o;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.p=0,e="uploads/sticker/".concat(Date.now(),"_").concat(Math.floor(1e6*Math.random()),".jpg"),n.n=1,S(e);case 1:return o=n.v,n.n=2,k(t,o);case 2:return n.a(2,n.v);case 3:return n.p=3,n.v,n.a(2,t)}},n,null,[[0,3]])})),_.apply(this,arguments)}function B(n){return j.apply(this,arguments)}function j(){return j=(0,o.A)((0,r.A)().m(function n(t){var e,o,i,c,u,a,s,l,f,d,p,m,v,y,S,k;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:if(t){n.n=1;break}return n.a(2,t);case 1:if(e=(0,h.A)({},t),!t.background||!C(t.background.src)){n.n=3;break}return a=h.A,s=(0,h.A)({},t.background),l={},n.n=2,x(t.background.src);case 2:f=n.v,e.background=a(s,l,{src:f});case 3:if(!t.stickers||!t.stickers.length){n.n=14;break}o=[],i=(0,g.A)(t.stickers),n.p=4,i.s();case 5:if((c=i.n()).done){n.n=10;break}if(u=c.value,d=o,!C(u.src)){n.n=7;break}return m=h.A,v=(0,h.A)({},u),y={},n.n=6,x(u.src);case 6:S=n.v,p=m(v,y,{src:S}),n.n=8;break;case 7:p=u;case 8:d.push.call(d,p);case 9:n.n=5;break;case 10:n.n=12;break;case 11:n.p=11,k=n.v,i.e(k);case 12:return n.p=12,i.f(),n.f(12);case 13:e.stickers=o;case 14:return n.a(2,e)}},n,null,[[4,11,12,13]])})),j.apply(this,arguments)}},8199:function(n,t,e){e.d(t,{uq:function(){return o}});var r="";function o(n){if(!n)return"";if(/^(https?:|wxfile:|data:)/i.test(n))return n;if(!r)return n;var t=r.replace(/\/+$/,"");if(!n.startsWith("/img/"))return n;var e=n.startsWith("/")?n:"/".concat(n);return"".concat(t).concat(e)}},6764:function(n,t,e){e.d(t,{d:function(){return y},m:function(){return h}});var r=e(1212),o=e(467),i=e(2284),c=e(758),u=e.n(c),a=e(6845),s=e(1457),l="smart_auth_verified",f=18e5,d=null,g=null;function h(){d=null,g=null;try{u().removeStorageSync(l)}catch(n){}}function p(n){var t=d||function(){try{var n=u().getStorageSync(l);return n&&"object"===(0,i.A)(n)?n:null}catch(n){return null}}();return t&&t.openid===n?Date.now()-t.at>f?null:(d=t,t.ok):null}function m(n,t){var e={openid:n,ok:t,at:Date.now()};d=e;try{u().setStorageSync(l,e)}catch(n){}}function v(){var n=(0,s.Q4)();return!(null===n||void 0===n||!n.openid)&&!(0,s.Ic)(n.openid)&&!!n.accessToken&&!!(0,a.gf)()}function y(){return S.apply(this,arguments)}function S(){return S=(0,o.A)((0,r.A)().m(function n(){var t,e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(t=(0,s.Q4)(),null!==t&&void 0!==t&&t.openid){n.n=1;break}return console.log("[AuthGuard] \u65e0\u672c\u5730\u7528\u6237\uff0c\u5224\u5b9a\u672a\u767b\u5f55"),n.a(2,!1);case 1:if(console.log("[AuthGuard] \u672c\u5730\u7528\u6237 openid=",t.openid),!(0,s.Ic)(t.openid)){n.n=2;break}return(0,s.Hf)(),(0,a.ri)(),h(),n.a(2,!1);case 2:if(e=p(t.openid),null===e){n.n=3;break}return console.log("[AuthGuard] \u547d\u4e2d\u672c\u5730\u7f13\u5b58 ok=",e),n.a(2,e);case 3:return g||(g=(0,a.jp)().then(function(n){console.log("[AuthGuard] getMe \u8fd4\u56de:",JSON.stringify(n));var e=!!n&&!!n.id&&n.openid===t.openid;return console.log("[AuthGuard] \u4e00\u81f4\u6027=",e),e?(m(t.openid,!0),!0):((0,s.Hf)(),(0,a.ri)(),h(),!1)}).catch(function(n){return console.error("[AuthGuard] getMe \u5931\u8d25\uff0c\u8d70\u672c\u5730\u4f1a\u8bdd\u515c\u5e95:",n),v()}).finally(function(){g=null})),n.a(2,g)}},n)})),S.apply(this,arguments)}},5234:function(n,t,e){e.d(t,{QE:function(){return l},R6:function(){return u},rj:function(){return s},y9:function(){return a},zv:function(){return c}});var r=e(9379),o=e(8199),i=[{id:"notebook-small",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5c0f\uff09",desc:"\u4fbf\u643a\u968f\u884c\uff0c\u8bb0\u5f55\u70b9\u6ef4",icon:"/icon/\u4e66\u672c.png",iconImg:"/icon/\u4e66\u672c.png",price:12,originalPrice:18,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u4f18\u8d28\u7eb8\u5f20\uff0c\u5c01\u9762\u91c7\u7528\u9ad8\u6863PU\u6750\u8d28\uff0c\u624b\u611f\u7ec6\u817b\u3002\u5185\u9875\u53ef\u5b9a\u5236\u6a2a\u7ebf\u3001\u65b9\u683c\u6216\u7a7a\u767d\u4e09\u79cd\u7248\u5f0f\u3002\u6fc0\u5149\u5fae\u96d5\u5de5\u827a\u5c06\u540d\u5b57\u6216\u56fe\u6848\u7cbe\u51c6\u523b\u5370\u5728\u5c01\u9762\uff0c\u6c38\u4e0d\u892a\u8272\u3002\u5c0f\u5de7\u8f7b\u4fbf\uff0c\u9002\u5408\u968f\u8eab\u643a\u5e26\uff0c\u65e0\u8bba\u662f\u8bfe\u5802\u7b14\u8bb0\u8fd8\u662f\u65e5\u5e38\u5907\u5fd8\uff0c\u90fd\u662f\u4f60\u7684\u4e13\u5c5e\u4f34\u4fa3\u3002",subtitle:"\u638c\u5fc3\u95f4\u7684\u4e13\u5c5e\u5370\u8bb0 \xb7 \u6fc0\u5149\u5fae\u96d5 \xb7 \u4e09\u8272\u5185\u9875\u53ef\u9009",tone:[28,22,18],story:"\u7075\u611f\u6e90\u81ea\u624b\u8d26\u6587\u5316\u4e2d\u5bf9\u4e66\u5199\u4eea\u5f0f\u611f\u7684\u8ffd\u6c42\u3002\u6211\u4eec\u76f8\u4fe1\uff0c\u5728\u6570\u5b57\u6d2a\u6d41\u7684\u65f6\u4ee3\uff0c\u7eb8\u7b14\u7684\u6e29\u5ea6\u4f9d\u7136\u4e0d\u53ef\u66ff\u4ee3\u3002\u5f53\u6fc0\u5149\u5fae\u96d5\u5728PU\u5c01\u9762\u4e0a\u7559\u4e0b\u4e13\u5c5e\u5370\u8bb0\uff0c\u6bcf\u4e00\u7b14\u4e66\u5199\u90fd\u5728\u4e0e\u8fc7\u53bb\u5bf9\u8bdd\u3002\u7b14\u8bb0\u672c\u5c0f\u5de7\u5230\u8db3\u4ee5\u653e\u5165\u4efb\u4f55\u53e3\u888b\uff0c\u5374\u627f\u8f7d\u7740\u72ec\u4e00\u65e0\u4e8c\u7684\u8bb0\u5fc6\u3002",scene:"\u8bfe\u5802\u7b14\u8bb0\u3001\u65e5\u5e38\u5907\u5fd8\u3001\u65c5\u884c\u624b\u8d26\u3001\u5fc3\u60c5\u65e5\u8bb0\u3002\u9002\u5408\u9001\u7ed9\u540c\u5b66\u3001\u4f34\u4fa3\u6216\u4f5c\u4e3a\u6d3b\u52a8\u4f34\u624b\u793c\u2014\u2014\u8ba9\u6bcf\u4e00\u4e2a\u4eba\u90fd\u62e5\u6709\u523b\u7740\u81ea\u5df1\u540d\u5b57\u7684\u4e13\u5c5e\u7b14\u8bb0\u672c\u3002",tags:["\u4f34\u624b\u793c","\u5b66\u751f","\u624b\u8d26","\u4fbf\u643a","\u6fc0\u5149\u5fae\u96d5"],specs:[["\u5c3a\u5bf8","105 \xd7 148mm\uff08A6\uff09"],["\u9875\u6570","120\u5f20/240\u9875"],["\u5185\u9875\u7248\u5f0f","\u6a2a\u7ebf / \u65b9\u683c / \u7a7a\u767d \u53ef\u9009"],["\u5c01\u9762\u6750\u8d28","\u9ad8\u6863PU\u76ae\u9769"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u6c38\u4e0d\u892a\u8272\uff09"],["\u9002\u7528\u573a\u666f","\u8bfe\u5802\u3001\u65c5\u884c\u3001\u65e5\u5e38\u5907\u5fd8"]],images:["/img/book_small/The1.jpg"],mask:{shape:"rect",width:300,height:420,borderRadius:8}},{id:"notebook-large",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5927\uff09",desc:"\u5927\u5f00\u672c\uff0c\u66f4\u591a\u521b\u4f5c\u7a7a\u95f4",icon:"/icon/\u4e66\u672c_\u5927.png",iconImg:"/icon/\u4e66\u672c_\u5927.png",price:45,originalPrice:58,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"A4\u5c3a\u5bf8\u5927\u5f00\u672c\uff0c180\xb0\u5e73\u644a\u8bbe\u8ba1\uff0c\u4e66\u5199\u66f4\u81ea\u7531\u3002\u5c01\u9762\u53ef\u9009\u771f\u76ae\u3001\u4eff\u5e03\u7eb9\u6216\u78e8\u7802\u6750\u8d28\uff0c\u6fc0\u5149\u5fae\u96d5\u533a\u57df\u66f4\u5927\uff0c\u9002\u5408\u5448\u73b0\u5168\u73ed\u540d\u5b57\u3001\u56e2\u961f\u53e3\u53f7\u6216\u516c\u53f8Logo\u7b49\u5927\u7bc7\u5e45\u5185\u5bb9\u3002\u662f\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u4f01\u4e1a\u5e74\u4f1a\u793c\u54c1\u7684\u9996\u9009\u3002",subtitle:"\u5927\u7bc7\u5e45\u5b9a\u5236\u9996\u9009 \xb7 180\xb0\u5e73\u644a \xb7 \u6bd5\u4e1a/\u56e2\u5efa\u5fc5\u5907",tone:[35,28,22],story:"\u6bcf\u4e00\u6b21\u544a\u522b\u90fd\u503c\u5f97\u88ab\u90d1\u91cd\u4e66\u5199\u3002\u6bd5\u4e1a\u5b63\u7684\u6559\u5ba4\u91cc\uff0c\u7b14\u8bb0\u672c\u644a\u5f00\u5728\u8bfe\u684c\u4e0a\uff0c\u5168\u73ed\u7684\u540d\u5b57\u88ab\u6fc0\u5149\u523b\u5370\u5728\u5c01\u9762\u4e2d\u592e\uff0c\u6210\u4e3a\u6c38\u6052\u7684\u540c\u5b66\u5f55\u3002180\xb0\u5e73\u644a\u8bbe\u8ba1\u8ba9\u4e66\u5199\u4e0d\u518d\u88ab\u8ba2\u88c5\u675f\u7f1a\uff0cA4\u5927\u5c3a\u5bf8\u7ed9\u4f60\u5c3d\u60c5\u6325\u6d12\u7684\u5929\u5730\u3002\u8fd9\u662f\u9001\u7ed9\u4e00\u7fa4\u4eba\u6700\u597d\u7684\u544a\u522b\u793c\u7269\u3002",scene:"\u6bd5\u4e1a\u7eaa\u5ff5\u518c\u3001\u516c\u53f8\u5e74\u4f1a\u793c\u54c1\u3001\u56e2\u961f\u5efa\u8bbe\u4f34\u624b\u793c\u3001\u5ba2\u6237\u7b54\u8c22\u3002\u7279\u522b\u9002\u5408\u9700\u8981\u5728\u5c01\u9762\u5448\u73b0\u5927\u91cf\u6587\u5b57\u6216\u56fe\u6848\u7684\u5b9a\u5236\u9700\u6c42\u2014\u2014\u73ed\u7ea7\u540d\u5355\u3001\u516c\u53f8\u613f\u666f\u3001\u56e2\u961f\u53e3\u53f7\u4e00\u7f51\u6253\u5c3d\u3002",tags:["\u6bd5\u4e1a\u793c","\u56e2\u5efa","\u4f01\u4e1a\u5b9a\u5236","\u5927\u7bc7\u5e45","\u5e73\u644a\u8bbe\u8ba1"],specs:[["\u5c3a\u5bf8","210 \xd7 297mm\uff08A4\uff09"],["\u9875\u6570","100\u5f20/200\u9875"],["\u5c01\u9762\u6750\u8d28","\u771f\u76ae / \u4eff\u5e03\u7eb9 / \u78e8\u7802 \u53ef\u9009"],["\u5f00\u5408\u9002\u7528","180\xb0\u5e73\u644a\u8bbe\u8ba1"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u9ad8\u6e05\u6670\u5ea6\uff09"],["\u5b9a\u5236\u9762\u79ef","\u5c01\u9762\u6574\u9762\u53ef\u96d5"]],images:["/img/book_big/The1.jpg","/img/book_big/The2.jpg"],mask:{shape:"rect",width:340,height:480,borderRadius:8}},{id:"coaster",name:"\u94dc\u8d28\u676f\u57ab",desc:"\u91d1\u5c5e\u8d28\u611f\uff0c\u684c\u9762\u827a\u672f",icon:"/icon/\u676f\u5b50.png",iconImg:"/icon/\u676f\u5b50.png",price:25,originalPrice:35,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u91c7\u7528\u4f18\u8d28\u9ec4\u94dc\u6750\u8d28\uff0c\u8868\u9762\u7ecf\u62c9\u4e1d\u5de5\u827a\u5904\u7406\uff0c\u5448\u73b0\u54d1\u5149\u91d1\u5c5e\u8d28\u611f\u3002\u80cc\u9762\u914d\u6709\u9632\u6ed1\u8f6f\u6728\u57ab\uff0c\u4fdd\u62a4\u684c\u9762\u540c\u65f6\u9632\u6b62\u6ed1\u52a8\u3002\u6fc0\u5149\u5fae\u96d5\u53ef\u5728\u8868\u9762\u523b\u5370\u540d\u5b57\u3001\u65e5\u671f\u6216\u795d\u798f\u8bed\uff0c\u662f\u4e54\u8fc1\u65b0\u5c45\u3001\u65b0\u5a5a\u8d3a\u793c\u7684\u7cbe\u81f4\u4e4b\u9009\u3002",subtitle:"\u9ec4\u94dc\u8d28\u611f \xb7 \u62c9\u4e1d\u54d1\u5149 \xb7 \u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851",tone:[42,30,18],story:"\u8bbe\u8ba1\u7075\u611f\u6765\u81ea\u65e5\u5f0f\u4f98\u5bc2\u7f8e\u5b66\u3002\u5c81\u6708\u4f1a\u5728\u9ec4\u94dc\u8868\u9762\u7559\u4e0b\u6e29\u67d4\u7684\u6c27\u5316\u75d5\u8ff9\uff0c\u5c31\u5982\u540c\u4e00\u676f\u8336\u4ece\u70ed\u5230\u51c9\u7684\u8fc7\u7a0b\u3002\u62c9\u4e1d\u5904\u7406\u540e\u7684\u54d1\u5149\u8868\u9762\u5728\u706f\u5149\u4e0b\u5448\u73b0\u7ec6\u817b\u7684\u91d1\u5c5e\u7eb9\u7406\uff0c\u6fc0\u5149\u5fae\u96d5\u7684\u540d\u5b57\u6210\u4e3a\u8fd9\u4ef6\u5668\u7269\u4e0a\u6700\u51b7\u9759\u7684\u6ce8\u811a\u3002\u5b83\u4e0d\u53ea\u662f\u676f\u57ab\uff0c\u66f4\u662f\u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851\u3002",scene:"\u4e54\u8fc1\u9001\u793c\u3001\u65b0\u5a5a\u8d3a\u793c\u3001\u5496\u5561\u89d2\u5e03\u7f6e\u3001\u529e\u516c\u684c\u7f8e\u5b66\u3002\u9002\u5408\u9001\u7ed9\u559c\u6b22\u624b\u51b2\u5496\u5561\u7684\u670b\u53cb\uff0c\u6216\u4f5c\u4e3a\u5a5a\u793c\u5bbe\u5ba2\u7684\u56de\u793c\u2014\u2014\u6bcf\u4e00\u53ea\u676f\u57ab\u4e0a\u90fd\u523b\u7740\u5bbe\u5ba2\u7684\u540d\u5b57\uff0c\u8ba9\u793c\u7269\u672c\u8eab\u6210\u4e3a\u5ea7\u4f4d\u5361\u3002",tags:["\u4e54\u8fc1\u793c","\u65b0\u5a5a\u8d3a\u793c","\u684c\u9762\u7f8e\u5b66","\u9ec4\u94dc","\u624b\u51b2\u5496\u5561"],specs:[["\u6750\u8d28","\u9ec4\u94dc + \u80cc\u9762\u8f6f\u6728\u9632\u6ed1\u57ab"],["\u8868\u9762\u5904\u7406","\u62c9\u4e1d\u54d1\u5149"],["\u76f4\u5f84","100mm"],["\u539a\u5ea6","3mm"],["\u96d5\u523b\u5de5\u827a","\u5149\u7ea4\u6fc0\u5149\u7cbe\u7ec6\u5fae\u96d5"],["\u8010\u6e29","\u2264120\xb0C"]],images:["/img/cup/The1.jpg"],mask:{shape:"circle",width:280,height:280}},{id:"penbox",name:"\u7af9\u5236\u7b14\u76d2",desc:"\u81ea\u7136\u7af9\u7eb9\uff0c\u6587\u623f\u96c5\u5668",icon:"/icon/\u7b14\u76d2.png",iconImg:"/icon/\u7b14\u76d2.png",price:75,originalPrice:98,leadTime:"7-10\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u5929\u7136\u6960\u7af9\uff0c\u7ecf\u591a\u9053\u5de5\u5e8f\u6253\u78e8\u629b\u5149\uff0c\u4fdd\u7559\u5929\u7136\u7af9\u7eb9\u808c\u7406\u3002\u76d2\u76d6\u91c7\u7528\u78c1\u5438\u5f00\u5408\uff0c\u5185\u90e8\u8bbe\u6709\u5206\u5c42\u9694\u677f\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u7af9\u9762\u4e0a\u5448\u73b0\u6df1\u6d45\u4e0d\u4e00\u7684\u96d5\u523b\u6548\u679c\uff0c\u878d\u5165\u58a8\u9999\u6c14\u8d28\u3002\u9002\u5408\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u7684\u6587\u623f\u4f34\u4fa3\u3002",subtitle:"\u5929\u7136\u6960\u7af9 \xb7 \u78c1\u5438\u5f00\u5408 \xb7 \u6587\u623f\u96c5\u5668\u4e4b\u9009",tone:[30,24,16],story:"\u6bcf\u4e00\u53ea\u7b14\u76d2\u90fd\u6765\u81ea\u540c\u4e00\u7247\u7af9\u6797\u7684\u4e0d\u540c\u90e8\u4f4d\uff0c\u56e0\u6b64\u7eb9\u8def\u7edd\u4e0d\u91cd\u590d\u2014\u2014\u6b63\u5982\u6ca1\u6709\u4e24\u4e2a\u4eba\u7684\u4e66\u6cd5\u98ce\u683c\u5b8c\u5168\u76f8\u540c\u3002\u6211\u4eec\u4fdd\u7559\u4e86\u6960\u7af9\u5929\u7136\u7684\u6e29\u6da6\u89e6\u611f\uff0c\u53ea\u5728\u8868\u9762\u4ee5\u6fc0\u5149\u523b\u4e0b\u540d\u5b57\u6216\u4e00\u53e5\u7bb4\u8a00\u3002\u6253\u5f00\u78c1\u5438\u76d2\u76d6\u65f6\u7684\u6e05\u8106\u58f0\u54cd\uff0c\u662f\u6587\u623f\u4e2d\u7684\u5c0f\u5c0f\u4eea\u5f0f\u3002",scene:"\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u88c5\u5907\u3001\u6559\u5e08\u8282\u793c\u7269\u3001\u4e66\u623f\u6696\u623f\u793c\u3002\u9002\u5408\u9001\u7ed9\u5199\u5b57\u597d\u770b\u7684\u4eba\u2014\u2014\u56e0\u4e3a\u61c2\u4e66\u5199\u7684\u4eba\uff0c\u624d\u61c2\u4e00\u53ea\u597d\u7b14\u76d2\u7684\u5206\u91cf\u3002",tags:["\u6587\u623f","\u4e66\u6cd5","\u6559\u5e08\u8282","\u4e66\u623f","\u5929\u7136\u6750\u8d28"],specs:[["\u6750\u8d28","\u5929\u7136\u6960\u7af9"],["\u5f00\u5408\u65b9\u5f0f","\u78c1\u5438\u5f0f\u76d2\u76d6"],["\u5185\u90e8\u7ed3\u6784","\u5206\u5c42\u9694\u677f\uff08\u53ef\u8c03\u8282\uff09"],["\u5c3a\u5bf8","200 \xd7 65 \xd7 30mm"],["\u8868\u9762\u5904\u7406","\u624b\u5de5\u6253\u78e8\u629b\u5149\uff0c\u65e0\u6f06"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u70e7\u8680\uff08\u6df1\u6d45\u53ef\u8c03\uff09"]],images:["/img/penbox/The1.jpg","/img/penbox/The2.jpg","/img/penbox/The3.jpg"],mask:{shape:"rect",width:320,height:160,borderRadius:12}},{id:"booklamp",name:"\u4e66\u672c\u578b\u706f",desc:"\u6e29\u6696\u5149\u5f71\uff0c\u70b9\u4eae\u5fc3\u610f",icon:"/icon/\u4e66\u706f.png",iconImg:"/icon/\u4e66\u706f.png",price:45,originalPrice:68,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u5f00\u5408\u5f0f\u8bbe\u8ba1\uff0c\u6253\u5f00\u5373\u4eae\uff0c\u5408\u62e2\u5373\u706d\uff0c\u5982\u9b54\u6cd5\u4e66\u822c\u5145\u6ee1\u60ca\u559c\u3002\u91c7\u7528LED\u6696\u5149\u706f\u6e90\uff0c\u5149\u7ebf\u67d4\u548c\u4e0d\u523a\u773c\uff0c\u53ef\u6301\u7eed\u70b9\u4eae6-8\u5c0f\u65f6\u3002\u5c01\u9762\u6fc0\u5149\u5fae\u96d5\u53ef\u5b9a\u5236\u6587\u5b57\u3001\u56fe\u6848\u6216\u7167\u7247\uff0c\u8ba9\u6e29\u6696\u7684\u706f\u5149\u627f\u8f7d\u4e13\u5c5e\u8bb0\u5fc6\u3002\u662f\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u793c\u7269\u7684\u521b\u610f\u4e4b\u9009\u3002",subtitle:"\u5f00\u5408\u5373\u4eae \xb7 LED\u6696\u5149 \xb7 \u9b54\u6cd5\u4e66\u822c\u7684\u60ca\u559c",tone:[25,20,15],story:"\u7075\u611f\u6765\u81ea\u300a\u54c8\u5229\xb7\u6ce2\u7279\u300b\u4e2d\u7684\u9b54\u6cd5\u8bfe\u672c\u2014\u2014\u6253\u5f00\u4e00\u672c\u4e66\uff0c\u5149\u8292\u503e\u6cfb\u800c\u51fa\u3002\u6211\u4eec\u91c7\u7528\u675c\u90a6\u7eb8\u4e0e\u5b9e\u6728\u5c01\u9762\u7ed3\u5408\uff0c\u8ba9\u706f\u4f53\u65e2\u8f7b\u8584\u53c8\u575a\u56fa\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u5c01\u9762\u7559\u4e0b\u4f60\u7684\u540d\u5b57\u6216\u4e00\u5e45\u5c0f\u753b\uff0c\u5f53\u706f\u5728\u6df1\u591c\u4eae\u8d77\uff0c\u90a3\u662f\u4e13\u5c5e\u4e8e\u4f60\u7684\u6e29\u6696\u89d2\u843d\u3002",scene:"\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u5e8a\u5934\u591c\u706f\u3001\u9732\u8425\u6c1b\u56f4\u706f\u3001\u513f\u7ae5\u623f\u3002\u7279\u522b\u9002\u5408\u5728\u5c01\u9762\u523b\u4e0a\u4e24\u4e2a\u4eba\u7684\u540d\u5b57\u548c\u4e00\u53e5\u60c5\u8bdd\uff0c\u5728\u60c5\u4eba\u8282\u6216\u7eaa\u5ff5\u65e5\u9001\u51fa\u2014\u2014\u6253\u5f00\u4e66\u706f\uff0c\u5c31\u50cf\u6253\u5f00\u4e00\u5c01\u4f1a\u53d1\u5149\u7684\u60c5\u4e66\u3002",tags:["\u60c5\u4fa3\u793c","\u6bd5\u4e1a\u7eaa\u5ff5","\u591c\u706f","\u6c1b\u56f4\u706f","\u521b\u610f\u793c\u7269"],specs:[["\u5149\u6e90","LED \u6696\u767d\u5149\uff083000K\uff09"],["\u7eed\u822a","6-8\u5c0f\u65f6\uff08\u5185\u7f6e\u53ef\u5145\u7535\u9502\u7535\u6c60\uff09"],["\u5145\u7535","USB Type-C \u63a5\u53e3"],["\u5c01\u9762\u6750\u8d28","\u675c\u90a6\u7eb8 + \u5b9e\u6728\u5c01\u9762"],["\u5c55\u5f00\u5c3a\u5bf8","210 \xd7 150mm"],["\u96d5\u523b\u5de5\u827a","\u6fc0\u5149\u5fae\u96d5\uff08\u652f\u6301\u6587\u5b57+\u7b80\u5355\u56fe\u6848\uff09"]],images:["/img/booklight/The1.jpg","/img/booklight/The2.jpg"],mask:{shape:"rect",width:320,height:240,borderRadius:4}}],c=i.map(function(n){return(0,r.A)((0,r.A)({},n),{},{images:(n.images||[]).map(function(n){return(0,o.uq)(n)}),iconImg:(0,o.uq)(n.iconImg)})}),u=c,a=function(n){return c.find(function(t){return t.id===n})},s={"notebook-small":(0,o.uq)("/icon/\u4e66\u672c.png"),"notebook-large":(0,o.uq)("/icon/\u4e66\u672c_\u5927.png"),coaster:(0,o.uq)("/icon/\u676f\u5b50.png"),penbox:(0,o.uq)("/icon/\u7b14\u76d2.png"),booklamp:(0,o.uq)("/icon/\u4e66\u706f.png")};function l(n){return null!==n&&void 0!==n&&n.iconImg?(0,o.uq)(n.iconImg):null!==n&&void 0!==n&&n.id?(0,o.uq)(s[n.id]||"/icon/\u56db\u89d2\u661f.svg"):(0,o.uq)("/icon/\u56db\u89d2\u661f.svg")}},3246:function(n,t,e){e.d(t,{C1:function(){return a},L:function(){return g},Sy:function(){return l},WG:function(){return d},gf:function(){return f},q:function(){return m}});var r=e(1212),o=e(9379),i=e(467),c=e(758),u=e.n(c),a="https://wxbackend.tokenleaping.com",s="smart_access_token";function l(){try{u().hideLoading()}catch(n){}}function f(){try{return u().getStorageSync(s)||""}catch(n){return""}}function d(n){u().setStorageSync(s,n)}function g(){try{u().removeStorageSync(s)}catch(n){}}var h=null;var p=null;function m(n){p=n}function v(n,t,e,r){return y.apply(this,arguments)}function y(){return y=(0,i.A)((0,r.A)().m(function n(t,e,o,i){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,u().request({url:"".concat(a).concat(t),method:e,data:o,header:i}))}},n)})),y.apply(this,arguments)}function S(n){return k.apply(this,arguments)}function k(){return k=(0,i.A)((0,r.A)().m(function n(t){var e,i,c,u,a,s,l,d,m,y,S,k,b,A,w,T,C,x,_=arguments;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return e=_.length>1&&void 0!==_[1]?_[1]:{},i=e.method,c=void 0===i?"GET":i,u=e.data,a=e.headers,s=void 0===a?{}:a,l=e.auth,d=void 0===l||l,m=e.skipAuthRefresh,y=void 0!==m&&m,S=function(){var n=f();return(0,o.A)((0,o.A)({"Content-Type":"application/json"},d&&n?{Authorization:"Bearer ".concat(n)}:{}),s)},n.p=1,n.n=2,v(t,c,u,S());case 2:k=n.v,n.n=4;break;case 3:throw n.p=3,n.v,b=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),b.statusCode=-1,b;case 4:if(401!==k.statusCode||y||!p){n.n=9;break}return n.n=5,p();case 5:if(A=n.v,!A){n.n=9;break}return n.p=6,n.n=7,v(t,c,u,S());case 7:k=n.v,n.n=9;break;case 8:throw n.p=8,n.v,w=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),w.statusCode=-1,w;case 9:if(401!==k.statusCode){n.n=10;break}throw g(),null===(T=h)||void 0===T||T(),C=new Error("\u767b\u5f55\u5df2\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55"),C.statusCode=401,C;case 10:if(x=k.data,!x||"number"!==typeof x.code||0===x.code){n.n=11;break}throw new Error(x.message||"\u8bf7\u6c42\u5931\u8d25");case 11:return n.a(2,x&&"number"===typeof x.code?x.data:x)}},n,null,[[6,8],[1,3]])})),k.apply(this,arguments)}var b={get:function(n,t){return S(n,(0,o.A)((0,o.A)({},t),{},{method:"GET"}))},post:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"POST",data:t}))},put:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"PUT",data:t}))},patch:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"PATCH",data:t}))},del:function(n,t){return S(n,(0,o.A)((0,o.A)({},t),{},{method:"DELETE"}))}};t.Ay=b},1457:function(n,t,e){e.d(t,{E1:function(){return O},cY:function(){return S},Hf:function(){return P},kg:function(){return H},ab:function(){return Q},hG:function(){return F},IU:function(){return C},Re:function(){return U},EB:function(){return z},p_:function(){return v},n7:function(){return w},O4:function(){return V},ug:function(){return q},Q4:function(){return I},Ic:function(){return u},Q1:function(){return M},kh:function(){return b},eW:function(){return X},Fu:function(){return y},Rq:function(){return K},F0:function(){return Z},iA:function(){return R},iZ:function(){return Y},yU:function(){return L},i5:function(){return k},uF:function(){return G}});var r=e(758),o=e.n(r),i="smart_user_info",c="smart_active_openid";function u(n){return!!n&&(n.startsWith("mock_")||n.startsWith("mock-"))}function a(){var n,t=null;try{t=o().getStorageSync(i)}catch(n){t=null}var e=(null===(n=t)||void 0===n?void 0:n.openid)||o().getStorageSync(c)||"_guest_";return o().setStorageSync(c,e),e}function s(n){var t=a();return"".concat(n,"_").concat(t)}function l(n,t){return"".concat(n,"_").concat(t)}var f=e(6764),d=e(9379),g=e(436),h=e(8199),p=e(5234);function m(n){try{return o().getStorageSync(l("design_list",n))||[]}catch(n){return[]}}function v(){try{return o().getStorageSync(s("design_list"))||[]}catch(n){return[]}}function y(n){o().setStorageSync(s("design_list"),n)}function S(n,t){var e=v(),r=(0,h.uq)((null===n||void 0===n?void 0:n.iconImg)||p.rj[null===n||void 0===n?void 0:n.id]||"/icon/\u56db\u89d2\u661f.svg"),o={id:"DSG"+Date.now(),productId:n.id,productName:n.name,productIcon:r,unitPrice:n.price,count:t,status:"undesigned",createdAt:(new Date).toISOString().slice(0,10)};return y([].concat((0,g.A)(e),[o])),o}function k(n,t){var e=v(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(e[r]=(0,d.A)((0,d.A)({},e[r]),t),y(e))}function b(n){var t=v().filter(function(t){return!n.includes(t.id)});y(t)}function A(n){try{return o().getStorageSync(l("order_list",n))||[]}catch(n){return[]}}function w(){try{return o().getStorageSync(s("order_list"))||[]}catch(n){return[]}}function T(n){o().setStorageSync(s("order_list"),n)}function C(n){var t,e=v(),r=w(),o=e.find(function(t){return t.id===n});if(!o)return null;var i=null!==(t=o.productIcon)&&void 0!==t&&t.startsWith("/icon/")||/^https?:/i.test(o.productIcon||"")?o.productIcon:p.rj[o.productId]||"/icon/\u56db\u89d2\u661f.svg",c=(0,h.uq)(i),u={id:"ORD"+Date.now().toString().slice(-9),productName:o.productName,productIcon:c,statusCode:"pending",date:(new Date).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).replace(/\//g,"-"),price:"\xa5"+(o.unitPrice*o.count).toFixed(2),count:o.count,sku:"".concat(o.productName," \xd7 ").concat(o.count)},a=e.findIndex(function(t){return t.id===n});return-1!==a&&(e[a].status="ordered",e[a].orderId=u.id),y(e),T([u].concat((0,g.A)(r))),u}var x="smart_user_registry",_="zhihui2024";function B(){try{return o().getStorageSync(x)||[]}catch(n){return[]}}function j(n){var t=B();t.includes(n)||(t.push(n),o().setStorageSync(x,t))}function N(n){var t=B().filter(function(t){return t!==n});o().setStorageSync(x,t)}function I(){try{return o().getStorageSync(i)}catch(n){return null}}function E(n){var t;o().setStorageSync(i,n),null!==n&&void 0!==n&&n.openid&&(o().setStorageSync(c,n.openid),o().setStorageSync("user_info_".concat(n.openid),n),j(n.openid)),(0,f.m)(),null===(t=o().eventCenter)||void 0===t||t.trigger("authStateChanged",{openid:(null===n||void 0===n?void 0:n.openid)||""})}function D(n){try{var t=o().getStorageSync("user_info_".concat(n));if(t)return t}catch(n){}var e=I();return(null===e||void 0===e?void 0:e.openid)===n?e:null}function P(){var n;o().removeStorageSync(i),o().removeStorageSync(c),(0,f.m)(),null===(n=o().eventCenter)||void 0===n||n.trigger("authStateChanged",{openid:""})}function R(n){E(n)}function q(){return I()}function M(){var n=B();return n.map(function(n){var t=D(n),e=m(n),r=A(n);return{openid:n,nickName:(null===t||void 0===t?void 0:t.nickName)||"\u672a\u77e5\u7528\u6237",avatarUrl:(null===t||void 0===t?void 0:t.avatarUrl)||"",loginAt:(null===t||void 0===t?void 0:t.loginAt)||0,designCount:e.length,orderCount:r.length}})}function H(n,t){var e="mock_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,6),r={openid:e,nickName:n||"\u5fae\u4fe1\u7528\u6237",avatarUrl:t||"",loginAt:Date.now()};return E(r),r}function Y(n){var t=D(n);return!!t&&(o().setStorageSync(i,t),o().setStorageSync(c,n),!0)}function F(n){o().removeStorageSync("user_info_".concat(n)),o().removeStorageSync("design_list_".concat(n)),o().removeStorageSync("order_list_".concat(n)),o().removeStorageSync("address_list_".concat(n)),N(n);var t=I();(null===t||void 0===t?void 0:t.openid)===n&&P()}function G(n){return n===_}function U(){try{return o().getStorageSync(s("address_list"))||[]}catch(n){return[]}}function W(n){o().setStorageSync(s("address_list"),n)}function O(n){var t=U(),e=(0,d.A)((0,d.A)({},n),{},{id:"ADR"+Date.now()});return e.isDefault&&t.forEach(function(n){n.isDefault=!1}),W([e].concat((0,g.A)(t))),e}function L(n,t){var e=U(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(t.isDefault&&e.forEach(function(n){n.isDefault=!1}),e[r]=(0,d.A)((0,d.A)({},e[r]),t),W(e))}function Q(n){var t=U().filter(function(t){return t.id!==n});W(t)}function z(){return U().find(function(n){return n.isDefault})}var J="smart_theme";function V(){try{return o().getStorageSync(J)||"auto"}catch(n){return"auto"}}function Z(n){o().setStorageSync(J,n)}var $=null;function K(n){$=n}function X(n){if("auto"===n){if($)return $;try{var t=o().getAppBaseInfo();if("dark"===t.theme||"light"===t.theme)return t.theme}catch(n){}return"light"}return n}},6606:function(n,t,e){e.d(t,{G:function(){return c}});var r=e(758),o=e.n(r);function i(n){return"dark"===n?"#191919":"#faf7f2"}function c(n,t){var e=null!==t&&void 0!==t?t:i(n);o().setBackgroundColor({backgroundColor:e,backgroundColorTop:e,backgroundColorBottom:e}),o().setBackgroundTextStyle({textStyle:"dark"===n?"light":"dark"})}}}]); \ No newline at end of file diff --git a/dist/pages/diy/index.js b/dist/pages/diy/index.js index d26e8a1..988b8ed 100644 --- a/dist/pages/diy/index.js +++ b/dist/pages/diy/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[95],{8955:function(e,a,s){var t=s(7842),c=s(1212),n=s(467),i=s(9379),r=s(436),l=s(5544),o=s(118),d=s(758),u=s.n(d),h=s(6540),m=s(5234),p=s(1457),x=s(5787),g=s(9703),f=s(9201),v=s(5414),j=s(9674),N=s(3053),S=s(9513),y=s(4848);function w(){var e=(0,g.wR)(),a=(e.theme,e.resolvedTheme),s=(0,f.c)();(0,v.l)(a);var t=(0,h.useState)(null),d=(0,l.A)(t,2),w=d[0],b=d[1],k=(0,h.useState)(1),A=(0,l.A)(k,2),E=(A[0],A[1],(0,h.useState)("")),T=(0,l.A)(E,2),Y=T[0],D=T[1],I=(0,h.useState)(1),O=(0,l.A)(I,2),P=(O[0],O[1]),_=(0,h.useState)([]),F=(0,l.A)(_,2),M=F[0],B=F[1],R=(0,h.useState)(null),z=(0,l.A)(R,2),V=z[0],q=z[1],C=(0,h.useState)(!1),G=(0,l.A)(C,2),J=G[0],X=G[1],H=(0,h.useState)({x:0,y:0}),L=(0,l.A)(H,2),K=L[0],Q=L[1],U=(0,h.useState)(!1),W=(0,l.A)(U,2),Z=W[0],$=W[1],ee=(0,h.useState)(!1),ae=(0,l.A)(ee,2),se=ae[0],te=ae[1];(0,h.useEffect)(function(){var e=u().getCurrentInstance().router,a=e?e.params:void 0,s=a?a.source:void 0,t=a&&a.productId||a&&a.category;if("product"===s&&t){var c=(0,m.y9)(t);if(c){b(c),P(Number(a?a.quantity:void 0)||1);var n={id:"DSG"+Date.now(),productId:c.id,productName:c.name,productIcon:c.icon,unitPrice:c.price,count:Number(a?a.quantity:void 0)||1,status:"designing",createdAt:(new Date).toISOString().slice(0,10)},i=(0,p.p_)();(0,p.Fu)([].concat((0,r.A)(i),[n])),D(n.id)}}else if("designList"===s&&a&&a.designId){var l=a.designId,o=(0,p.p_)(),d=o.find(function(e){return e.id===l});if(d){D(l),P(d.count);var h=(0,m.y9)(d.productId);if(h&&b(h),d.designData?d.designData.stickers:void 0)B(d.designData.stickers);else if(d.designData?d.designData.imageSrc:void 0){var x={id:"legacy_"+Date.now(),src:d.designData.imageSrc,x:d.designData.imagePos&&d.designData.imagePos.x||0,y:d.designData.imagePos&&d.designData.imagePos.y||0,scale:d.designData.imagePos&&d.designData.imagePos.scale||1,width:200,height:200,isOverlapping:!1};B([x])}}}else if(t){var g=(0,m.y9)(t);if(g){b(g);var f={id:"DSG"+Date.now(),productId:g.id,productName:g.name,productIcon:g.icon,unitPrice:g.price,count:1,status:"designing",createdAt:(new Date).toISOString().slice(0,10)},v=(0,p.p_)();(0,p.Fu)([].concat((0,r.A)(v),[f])),D(f.id)}}},[]);var ce=function(e){for(var a=e.map(function(e){return(0,i.A)((0,i.A)({},e),{},{isOverlapping:!1})}),s=0;sn.x&&c.yn.y&&(a[s].isOverlapping=!0,a[t].isOverlapping=!0)}var u=a.some(function(e){return e.isOverlapping});return te(u),a},ne=function(){u().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(e){var a=e.tempFilePaths[0];u().getImageInfo({src:a,success:function(e){var s={id:"stk_"+Date.now(),src:a,x:0,y:0,scale:1,width:e.width,height:e.height,isOverlapping:!1},t=[].concat((0,r.A)(M),[s]),c=ce(t);B(c),q(s.id)},fail:function(){var e={id:"stk_"+Date.now(),src:a,x:0,y:0,scale:1,width:200,height:200,isOverlapping:!1},s=[].concat((0,r.A)(M),[e]),t=ce(s);B(t),q(e.id)}})}})},ie=function(e){var a=M.filter(function(a){return a.id!==e}),s=ce(a);B(s),V===e&&q(null)},re=function(e,a){var s=e.touches[0],t=M.find(function(e){return e.id===a});t&&(q(a),X(!0),Q({x:s.clientX-t.x,y:s.clientY-t.y}))},le=function(e){if(J&&V){var a=e.touches[0],s=M.map(function(e){return e.id!==V?e:(0,i.A)((0,i.A)({},e),{},{x:a.clientX-K.x,y:a.clientY-K.y})}),t=ce(s);B(t)}},oe=function(){return X(!1)},de=function(){V&&Y&&u().navigateTo({url:"/pages/diy/stickerEdit/index?designId=".concat(Y,"&stickerId=").concat(V)})},ue=function(e,a){var s=M.map(function(s){return s.id!==e?s:(0,i.A)((0,i.A)({},s),{},{scale:Math.max(.3,Math.min(3,s.scale+a))})}),t=ce(s);B(t)},he=function(){u().navigateBack()},me=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},pe=function(){var e=(0,n.A)((0,c.A)().m(function e(){var a;return(0,c.A)().w(function(e){while(1)switch(e.n){case 0:if(!se){e.n=1;break}return u().showToast({title:"\u8d34\u7eb8\u4e0d\u80fd\u91cd\u53e0",icon:"none"}),e.a(2);case 1:if(!Y){e.n=3;break}return e.n=2,(0,x.x5)({stickers:M,category:w,version:1});case 2:a=e.v,(0,p.i5)(Y,{designData:a});case 3:$(!1),u().navigateTo({url:"/pages/checkout/index?designId=".concat(Y)});case 4:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}(),xe=V?M.find(function(e){return e.id===V}):void 0,ge=xe?xe.scale:1;return w?(0,y.jsxs)(o.Ss,{className:"theme-".concat(a),children:[(0,y.jsx)(j.A,{}),(0,y.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,y.jsxs)(o.Ss,{className:"diy-page",children:[(0,y.jsx)(o.Ss,{className:"page-header surface-card",style:{paddingTop:"".concat(s.statusBarHeight+12,"px")},children:(0,y.jsxs)(o.Ss,{className:"flex-between",style:{width:"100%"},children:[(0,y.jsx)(o.EY,{className:"back-btn",onTap:he,children:"\u2190"}),(0,y.jsx)(o.EY,{className:"page-title",children:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0"}),(0,y.jsx)(o.Ss,{className:"header-spacer"})]})}),(0,y.jsx)(o.Ss,{className:"canvas-wrapper surface-card mt-20",catchMove:!0,children:(0,y.jsxs)(o.Ss,{className:"canvas-area",style:me(),children:[M.map(function(e){return(0,y.jsx)(o._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:J&&V===e.id?.8:1,zIndex:V===e.id?10:5,width:e.width||200,height:e.height||200},onTouchStart:function(a){return re(a,e.id)},onTouchMove:le,onTouchEnd:oe,onTap:function(){return q(e.id)},mode:"aspectFit"},e.id)}),(0,y.jsx)(o.Ss,{className:"mask-border",style:me()})]})}),(0,y.jsxs)(o.Ss,{className:"sticker-panel surface-card mt-20",children:[(0,y.jsx)(o.EY,{className:"section-title",children:"\u8d34\u7eb8"}),(0,y.jsxs)(o.Ss,{className:"sticker-list",children:[M.map(function(e){return(0,y.jsxs)(o.Ss,{className:"sticker-thumb ".concat(e.isOverlapping?"overlap":""," ").concat(V===e.id?"active":""),children:[(0,y.jsx)(o._V,{src:e.src,className:"sticker-thumb-img",mode:"aspectFit",onTap:function(){return q(e.id)}}),(0,y.jsx)(o.Ss,{className:"sticker-del",onTap:function(){return ie(e.id)},children:(0,y.jsx)(o.EY,{className:"del-icon",children:"\xd7"})})]},e.id)}),(0,y.jsxs)(o.Ss,{className:"sticker-add-btn",onTap:ne,children:[(0,y.jsx)(o.EY,{className:"add-icon",children:"+"}),(0,y.jsx)(o.EY,{className:"add-label",children:"\u6dfb\u52a0"})]})]}),se&&(0,y.jsx)(o.EY,{className:"overlap-hint",children:"\u6709\u8d34\u7eb8\u91cd\u53e0\uff0c\u8bf7\u8c03\u6574\u4f4d\u7f6e"})]}),V&&(0,y.jsxs)(o.Ss,{className:"toolbar surface-card mt-20",children:[(0,y.jsxs)(o.Ss,{className:"tool-row",children:[(0,y.jsx)(o.EY,{className:"tool-label",children:"\u7f29\u653e"}),(0,y.jsxs)(o.Ss,{className:"flex-center",style:{gap:"20px"},children:[(0,y.jsx)(o.Ss,{className:"tool-btn",onTap:function(){return ue(V,-.1)},children:"\uff0d"}),(0,y.jsxs)(o.EY,{className:"tool-value",children:[Math.round(100*ge),"%"]}),(0,y.jsx)(o.Ss,{className:"tool-btn",onTap:function(){return ue(V,.1)},children:"\uff0b"})]})]}),(0,y.jsxs)(o.Ss,{className:"tool-row",children:[(0,y.jsx)(o.EY,{className:"tool-label",children:"\u63d0\u793a"}),(0,y.jsx)(o.EY,{className:"tool-hint",children:"\u62d6\u52a8\u8c03\u6574\u4f4d\u7f6e\uff0c\u8d34\u7eb8\u4e0d\u53ef\u91cd\u53e0"})]})]}),(0,y.jsx)(o.Ss,{className:"edit-btn-bar mt-20",children:(0,y.jsx)(o.Ss,{className:"edit-btn ".concat(V?"active":"disabled"),onTap:de,children:(0,y.jsx)(o.EY,{children:"\u7f16\u8f91"})})}),(0,y.jsxs)(S.A,{children:[(0,y.jsx)(o.Ss,{className:"btn-primary",onTap:function(){return $(!0)},children:(0,y.jsx)(o.EY,{children:"\u9884\u89c8\u6548\u679c"})}),(0,y.jsx)(o.Ss,{className:"btn-secondary",onTap:ne,children:(0,y.jsx)(o.EY,{children:"\u6dfb\u52a0\u8d34\u7eb8"})})]}),Z&&(0,y.jsx)(o.Ss,{className:"preview-overlay",children:(0,y.jsxs)(o.Ss,{className:"preview-card surface-card",children:[(0,y.jsx)(o.EY,{className:"preview-title",children:"\u786e\u8ba4\u6548\u679c"}),(0,y.jsx)(o.Ss,{className:"preview-canvas",style:me(),children:M.map(function(e){return(0,y.jsx)(o._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,")"),width:e.width||200,height:e.height||200},mode:"aspectFit"},e.id)})}),(0,y.jsxs)(o.Ss,{className:"product-info",children:[(0,y.jsx)(o.EY,{className:"product-name",children:w.name}),(0,y.jsxs)(o.EY,{className:"product-size",children:["\u753b\u5e03\u5c3a\u5bf8: ",w.mask.width," \xd7 ",w.mask.height," px"]}),se&&(0,y.jsx)(o.EY,{className:"overlap-hint",children:"\u8d34\u7eb8\u6709\u91cd\u53e0\uff0c\u4e0d\u53ef\u63d0\u4ea4"})]}),(0,y.jsxs)(o.Ss,{className:"preview-actions",children:[(0,y.jsx)(o.Ss,{className:"btn-secondary",onTap:function(){return $(!1)},children:(0,y.jsx)(o.EY,{children:"\u8fd4\u56de\u4fee\u6539"})}),(0,y.jsx)(o.Ss,{className:"btn-primary ".concat(se?"disabled":""),onTap:pe,children:(0,y.jsx)(o.EY,{children:"\u786e\u8ba4\u5b8c\u6210"})})]})]})}),(0,y.jsx)(o.Ss,{className:"safe-bottom-placeholder"})]})]}):(0,y.jsxs)(o.Ss,{className:"theme-".concat(a),children:[(0,y.jsx)(j.A,{}),(0,y.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,y.jsx)(o.Ss,{className:"diy-page",children:(0,y.jsx)(o.EY,{className:"page-title",children:"\u52a0\u8f7d\u4e2d..."})})]})}var b={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"DIY\u5de5\u4f5c\u53f0"};Page((0,t.createPageConfig)(w,"pages/diy/index",{root:{cn:[]}},b||{}))}},function(e){var a=function(a){return e(e.s=a)};e.O(0,[907,96,76],function(){return a(8955)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[95],{8955:function(e,a,s){var t=s(7842),c=s(1212),n=s(467),i=s(9379),r=s(436),l=s(5544),o=s(118),d=s(758),u=s.n(d),h=s(6540),m=s(5234),p=s(1457),x=s(6845),g=s(9703),f=s(9201),v=s(5414),j=s(9674),N=s(3053),S=s(9513),y=s(4848);function w(){var e=(0,g.wR)(),a=(e.theme,e.resolvedTheme),s=(0,f.c)();(0,v.l)(a);var t=(0,h.useState)(null),d=(0,l.A)(t,2),w=d[0],b=d[1],k=(0,h.useState)(1),A=(0,l.A)(k,2),E=(A[0],A[1],(0,h.useState)("")),T=(0,l.A)(E,2),Y=T[0],D=T[1],I=(0,h.useState)(1),O=(0,l.A)(I,2),P=(O[0],O[1]),_=(0,h.useState)([]),F=(0,l.A)(_,2),M=F[0],B=F[1],R=(0,h.useState)(null),z=(0,l.A)(R,2),V=z[0],q=z[1],C=(0,h.useState)(!1),G=(0,l.A)(C,2),J=G[0],X=G[1],H=(0,h.useState)({x:0,y:0}),L=(0,l.A)(H,2),K=L[0],Q=L[1],U=(0,h.useState)(!1),W=(0,l.A)(U,2),Z=W[0],$=W[1],ee=(0,h.useState)(!1),ae=(0,l.A)(ee,2),se=ae[0],te=ae[1];(0,h.useEffect)(function(){var e=u().getCurrentInstance().router,a=e?e.params:void 0,s=a?a.source:void 0,t=a&&a.productId||a&&a.category;if("product"===s&&t){var c=(0,m.y9)(t);if(c){b(c),P(Number(a?a.quantity:void 0)||1);var n={id:"DSG"+Date.now(),productId:c.id,productName:c.name,productIcon:c.icon,unitPrice:c.price,count:Number(a?a.quantity:void 0)||1,status:"designing",createdAt:(new Date).toISOString().slice(0,10)},i=(0,p.p_)();(0,p.Fu)([].concat((0,r.A)(i),[n])),D(n.id)}}else if("designList"===s&&a&&a.designId){var l=a.designId,o=(0,p.p_)(),d=o.find(function(e){return e.id===l});if(d){D(l),P(d.count);var h=(0,m.y9)(d.productId);if(h&&b(h),d.designData?d.designData.stickers:void 0)B(d.designData.stickers);else if(d.designData?d.designData.imageSrc:void 0){var x={id:"legacy_"+Date.now(),src:d.designData.imageSrc,x:d.designData.imagePos&&d.designData.imagePos.x||0,y:d.designData.imagePos&&d.designData.imagePos.y||0,scale:d.designData.imagePos&&d.designData.imagePos.scale||1,width:200,height:200,isOverlapping:!1};B([x])}}}else if(t){var g=(0,m.y9)(t);if(g){b(g);var f={id:"DSG"+Date.now(),productId:g.id,productName:g.name,productIcon:g.icon,unitPrice:g.price,count:1,status:"designing",createdAt:(new Date).toISOString().slice(0,10)},v=(0,p.p_)();(0,p.Fu)([].concat((0,r.A)(v),[f])),D(f.id)}}},[]);var ce=function(e){for(var a=e.map(function(e){return(0,i.A)((0,i.A)({},e),{},{isOverlapping:!1})}),s=0;sn.x&&c.yn.y&&(a[s].isOverlapping=!0,a[t].isOverlapping=!0)}var u=a.some(function(e){return e.isOverlapping});return te(u),a},ne=function(){u().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(e){var a=e.tempFilePaths[0];u().getImageInfo({src:a,success:function(e){var s={id:"stk_"+Date.now(),src:a,x:0,y:0,scale:1,width:e.width,height:e.height,isOverlapping:!1},t=[].concat((0,r.A)(M),[s]),c=ce(t);B(c),q(s.id)},fail:function(){var e={id:"stk_"+Date.now(),src:a,x:0,y:0,scale:1,width:200,height:200,isOverlapping:!1},s=[].concat((0,r.A)(M),[e]),t=ce(s);B(t),q(e.id)}})}})},ie=function(e){var a=M.filter(function(a){return a.id!==e}),s=ce(a);B(s),V===e&&q(null)},re=function(e,a){var s=e.touches[0],t=M.find(function(e){return e.id===a});t&&(q(a),X(!0),Q({x:s.clientX-t.x,y:s.clientY-t.y}))},le=function(e){if(J&&V){var a=e.touches[0],s=M.map(function(e){return e.id!==V?e:(0,i.A)((0,i.A)({},e),{},{x:a.clientX-K.x,y:a.clientY-K.y})}),t=ce(s);B(t)}},oe=function(){return X(!1)},de=function(){V&&Y&&u().navigateTo({url:"/pages/diy/stickerEdit/index?designId=".concat(Y,"&stickerId=").concat(V)})},ue=function(e,a){var s=M.map(function(s){return s.id!==e?s:(0,i.A)((0,i.A)({},s),{},{scale:Math.max(.3,Math.min(3,s.scale+a))})}),t=ce(s);B(t)},he=function(){u().navigateBack()},me=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},pe=function(){var e=(0,n.A)((0,c.A)().m(function e(){var a;return(0,c.A)().w(function(e){while(1)switch(e.n){case 0:if(!se){e.n=1;break}return u().showToast({title:"\u8d34\u7eb8\u4e0d\u80fd\u91cd\u53e0",icon:"none"}),e.a(2);case 1:if(!Y){e.n=3;break}return e.n=2,(0,x.x5)({stickers:M,category:w,version:1});case 2:a=e.v,(0,p.i5)(Y,{designData:a});case 3:$(!1),u().navigateTo({url:"/pages/checkout/index?designId=".concat(Y)});case 4:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}(),xe=V?M.find(function(e){return e.id===V}):void 0,ge=xe?xe.scale:1;return w?(0,y.jsxs)(o.Ss,{className:"theme-".concat(a),children:[(0,y.jsx)(j.A,{}),(0,y.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,y.jsxs)(o.Ss,{className:"diy-page",children:[(0,y.jsx)(o.Ss,{className:"page-header surface-card",style:{paddingTop:"".concat(s.statusBarHeight+12,"px")},children:(0,y.jsxs)(o.Ss,{className:"flex-between",style:{width:"100%"},children:[(0,y.jsx)(o.EY,{className:"back-btn",onTap:he,children:"\u2190"}),(0,y.jsx)(o.EY,{className:"page-title",children:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0"}),(0,y.jsx)(o.Ss,{className:"header-spacer"})]})}),(0,y.jsx)(o.Ss,{className:"canvas-wrapper surface-card mt-20",catchMove:!0,children:(0,y.jsxs)(o.Ss,{className:"canvas-area",style:me(),children:[M.map(function(e){return(0,y.jsx)(o._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:J&&V===e.id?.8:1,zIndex:V===e.id?10:5,width:e.width||200,height:e.height||200},onTouchStart:function(a){return re(a,e.id)},onTouchMove:le,onTouchEnd:oe,onTap:function(){return q(e.id)},mode:"aspectFit"},e.id)}),(0,y.jsx)(o.Ss,{className:"mask-border",style:me()})]})}),(0,y.jsxs)(o.Ss,{className:"sticker-panel surface-card mt-20",children:[(0,y.jsx)(o.EY,{className:"section-title",children:"\u8d34\u7eb8"}),(0,y.jsxs)(o.Ss,{className:"sticker-list",children:[M.map(function(e){return(0,y.jsxs)(o.Ss,{className:"sticker-thumb ".concat(e.isOverlapping?"overlap":""," ").concat(V===e.id?"active":""),children:[(0,y.jsx)(o._V,{src:e.src,className:"sticker-thumb-img",mode:"aspectFit",onTap:function(){return q(e.id)}}),(0,y.jsx)(o.Ss,{className:"sticker-del",onTap:function(){return ie(e.id)},children:(0,y.jsx)(o.EY,{className:"del-icon",children:"\xd7"})})]},e.id)}),(0,y.jsxs)(o.Ss,{className:"sticker-add-btn",onTap:ne,children:[(0,y.jsx)(o.EY,{className:"add-icon",children:"+"}),(0,y.jsx)(o.EY,{className:"add-label",children:"\u6dfb\u52a0"})]})]}),se&&(0,y.jsx)(o.EY,{className:"overlap-hint",children:"\u6709\u8d34\u7eb8\u91cd\u53e0\uff0c\u8bf7\u8c03\u6574\u4f4d\u7f6e"})]}),V&&(0,y.jsxs)(o.Ss,{className:"toolbar surface-card mt-20",children:[(0,y.jsxs)(o.Ss,{className:"tool-row",children:[(0,y.jsx)(o.EY,{className:"tool-label",children:"\u7f29\u653e"}),(0,y.jsxs)(o.Ss,{className:"flex-center",style:{gap:"20px"},children:[(0,y.jsx)(o.Ss,{className:"tool-btn",onTap:function(){return ue(V,-.1)},children:"\uff0d"}),(0,y.jsxs)(o.EY,{className:"tool-value",children:[Math.round(100*ge),"%"]}),(0,y.jsx)(o.Ss,{className:"tool-btn",onTap:function(){return ue(V,.1)},children:"\uff0b"})]})]}),(0,y.jsxs)(o.Ss,{className:"tool-row",children:[(0,y.jsx)(o.EY,{className:"tool-label",children:"\u63d0\u793a"}),(0,y.jsx)(o.EY,{className:"tool-hint",children:"\u62d6\u52a8\u8c03\u6574\u4f4d\u7f6e\uff0c\u8d34\u7eb8\u4e0d\u53ef\u91cd\u53e0"})]})]}),(0,y.jsx)(o.Ss,{className:"edit-btn-bar mt-20",children:(0,y.jsx)(o.Ss,{className:"edit-btn ".concat(V?"active":"disabled"),onTap:de,children:(0,y.jsx)(o.EY,{children:"\u7f16\u8f91"})})}),(0,y.jsxs)(S.A,{children:[(0,y.jsx)(o.Ss,{className:"btn-primary",onTap:function(){return $(!0)},children:(0,y.jsx)(o.EY,{children:"\u9884\u89c8\u6548\u679c"})}),(0,y.jsx)(o.Ss,{className:"btn-secondary",onTap:ne,children:(0,y.jsx)(o.EY,{children:"\u6dfb\u52a0\u8d34\u7eb8"})})]}),Z&&(0,y.jsx)(o.Ss,{className:"preview-overlay",children:(0,y.jsxs)(o.Ss,{className:"preview-card surface-card",children:[(0,y.jsx)(o.EY,{className:"preview-title",children:"\u786e\u8ba4\u6548\u679c"}),(0,y.jsx)(o.Ss,{className:"preview-canvas",style:me(),children:M.map(function(e){return(0,y.jsx)(o._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,")"),width:e.width||200,height:e.height||200},mode:"aspectFit"},e.id)})}),(0,y.jsxs)(o.Ss,{className:"product-info",children:[(0,y.jsx)(o.EY,{className:"product-name",children:w.name}),(0,y.jsxs)(o.EY,{className:"product-size",children:["\u753b\u5e03\u5c3a\u5bf8: ",w.mask.width," \xd7 ",w.mask.height," px"]}),se&&(0,y.jsx)(o.EY,{className:"overlap-hint",children:"\u8d34\u7eb8\u6709\u91cd\u53e0\uff0c\u4e0d\u53ef\u63d0\u4ea4"})]}),(0,y.jsxs)(o.Ss,{className:"preview-actions",children:[(0,y.jsx)(o.Ss,{className:"btn-secondary",onTap:function(){return $(!1)},children:(0,y.jsx)(o.EY,{children:"\u8fd4\u56de\u4fee\u6539"})}),(0,y.jsx)(o.Ss,{className:"btn-primary ".concat(se?"disabled":""),onTap:pe,children:(0,y.jsx)(o.EY,{children:"\u786e\u8ba4\u5b8c\u6210"})})]})]})}),(0,y.jsx)(o.Ss,{className:"safe-bottom-placeholder"})]})]}):(0,y.jsxs)(o.Ss,{className:"theme-".concat(a),children:[(0,y.jsx)(j.A,{}),(0,y.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,y.jsx)(o.Ss,{className:"diy-page",children:(0,y.jsx)(o.EY,{className:"page-title",children:"\u52a0\u8f7d\u4e2d..."})})]})}var b={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"DIY\u5de5\u4f5c\u53f0"};Page((0,t.createPageConfig)(w,"pages/diy/index",{root:{cn:[]}},b||{}))}},function(e){var a=function(a){return e(e.s=a)};e.O(0,[907,96,76],function(){return a(8955)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/diy/stickerEdit/index.js b/dist/pages/diy/stickerEdit/index.js index 7258c02..8c14e0d 100644 --- a/dist/pages/diy/stickerEdit/index.js +++ b/dist/pages/diy/stickerEdit/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[339],{9519:function(e,s,t){var a=t(7842),n=t(1212),c=t(467),r=t(9379),i=t(5544),l=t(118),o=t(758),d=t.n(o),u=t(6540),h=t(1457),f=t(5787),m=t(9703),x=t(9201),g=t(5414),v=t(9674),j=t(3053),S=t(9513),w=t(4848),N=function(e,s,t){return Math.min(Math.max(e,s),t)};function p(){var e=(0,m.wR)(),s=e.resolvedTheme,t=(0,x.c)();(0,g.l)(s);var a=(0,u.useState)(""),o=(0,i.A)(a,2),p=o[0],T=o[1],k=(0,u.useState)(""),b=(0,i.A)(k,2),A=b[0],y=b[1],E=(0,u.useState)(null),Y=(0,i.A)(E,2),M=Y[0],C=Y[1],I=(0,u.useState)(0),R=(0,i.A)(I,2),D=R[0],B=R[1],P=(0,u.useState)(0),q=(0,i.A)(P,2),Q=q[0],U=q[1],F=(0,u.useState)(0),X=(0,i.A)(F,2),H=X[0],J=X[1],O=(0,u.useState)(!1),_=(0,i.A)(O,2),z=_[0],W=_[1],$=(0,u.useState)(!1),G=(0,i.A)($,2),K=G[0],L=G[1],V=((0,u.useRef)(null),(0,u.useRef)(null)),Z=(0,u.useRef)(null),ee=(0,u.useRef)({width:0,height:0}),se=(0,u.useCallback)(function(e){K||d().nextTick(function(){var s=d().createSelectorQuery();s.select("#editCanvas").fields({node:!0,size:!0}).exec(function(s){var t=s&&s[0],a=t?t.node:void 0;if(a){var n=a.getContext("2d"),c=s[0]&&s[0].width||300,r=s[0]&&s[0].height||400;c<=0&&(c=300),r<=0&&(r=400);var i=d().getSystemInfoSync().pixelRatio||1;a.width=Math.round(c*i),a.height=Math.round(r*i),n.scale(i,i),Z.current=a,V.current=n,ee.current={width:c,height:r},L(!0),te(n,c,r,e)}else setTimeout(function(){return se(e)},300)})})},[K]);(0,u.useEffect)(function(){var e=d().getCurrentInstance().router,s=e?e.params:void 0,t=s?s.designId:"",a=s?s.stickerId:"";T(t),y(a);var n=(0,h.p_)(),c=n.find(function(e){return e.id===t}),r=c&&c.designData&&c.designData.stickers?c.designData.stickers.find(function(e){return e.id===a}):void 0;r&&(C(r),B(r.edits&&r.edits.brightness||0),U(r.edits&&r.edits.hue||0),J(r.edits&&r.edits.contrast||0),se(r))},[se]);var te=function(e,s,t,a,n){if(e&&Z.current){var c=Z.current;if(s&&t){var r=a.width||200,i=a.height||200,l=c.createImage();l.onload=function(){e.clearRect(0,0,s,t),e.save();var a=.9*Math.min(s/r,t/i,4),c=r*a,o=i*a,d=(s-c)/2,u=(t-o)/2,h=n?n.brightness:D,f=n?n.hue:Q,m=n?n.contrast:H;e.filter=0!==h||0!==f||0!==m?"brightness(".concat(100+h,"%) hue-rotate(").concat(f,"deg) contrast(").concat(100+m,"%)"):"none",e.drawImage(l,d,u,c,o),e.restore()},l.onerror=function(e){console.error("Canvas load image error:",e,a.src),d().showToast({title:"\u56fe\u7247\u52a0\u8f7d\u5931\u8d25",icon:"none"})},a.src&&(l.src=a.src)}}},ae=function(){if(M&&V.current&&Z.current){var e=ee.current,s=e.width,t=e.height;te(V.current,s,t,M,{brightness:D,hue:Q,contrast:H})}};(0,u.useEffect)(function(){ae()},[D,Q,H]);var ne=function(){M&&p&&(W(!0),d().canvasToTempFilePath({canvas:Z.current,quality:.92,success:function(e){var s=e.tempFilePath,t=(0,h.p_)(),a=t.findIndex(function(e){return e.id===p});if(-1!==a){var n=t[a].designData&&t[a].designData.stickers||[],c=n.findIndex(function(e){return e.id===A});-1!==c?(n[c]=(0,r.A)((0,r.A)({},n[c]),{},{src:s,edits:{brightness:D,hue:Q,contrast:H}}),(0,h.i5)(p,{designData:(0,r.A)((0,r.A)({},t[a].designData),{},{stickers:n})}),d().showToast({title:"\u4fdd\u5b58\u6210\u529f",icon:"success"}),d().navigateBack()):W(!1)}else W(!1)},fail:function(){W(!1),d().showToast({title:"\u4fdd\u5b58\u5931\u8d25",icon:"none"})}}))},ce=function(){M&&(d().cropImage?d().cropImage({src:M.src,cropScale:"1:1",success:function(e){var s=(0,r.A)((0,r.A)({},M),{},{src:e.tempFilePath});C(s),setTimeout(function(){return ae()},200)}}):d().showToast({title:"\u5f53\u524d\u5fae\u4fe1\u7248\u672c\u4e0d\u652f\u6301\u88c1\u526a",icon:"none"}))},re=function(){var e=(0,c.A)((0,n.A)().m(function e(){var s,t;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(M){e.n=1;break}return e.a(2);case 1:return W(!0),e.p=2,e.n=3,(0,f.W$)(M.src);case 3:if(s=e.v,null===s||void 0===s||!s.imageUrl){e.n=4;break}t=(0,r.A)((0,r.A)({},M),{},{src:s.imageUrl,edits:(0,r.A)((0,r.A)({},M.edits),{},{sketchSrc:s.imageUrl})}),C(t),W(!1),setTimeout(function(){return ae()},200),d().showToast({title:"\u7ebf\u7a3f\u751f\u6210\u6210\u529f",icon:"success"}),e.n=5;break;case 4:throw new Error("no imageUrl");case 5:e.n=7;break;case 6:e.p=6,e.v,ie();case 7:return e.a(2)}},e,null,[[2,6]])}));return function(){return e.apply(this,arguments)}}(),ie=function(){M&&V.current?(d().showToast({title:"\u4f7f\u7528\u672c\u5730\u7ebf\u7a3f",icon:"none"}),B(20),J(80),U(0),W(!1)):W(!1)},le="".concat((D+100)/200*100,"%"),oe="".concat((Q+180)/360*100,"%"),de="".concat((H+100)/200*100,"%");return(0,w.jsxs)(l.Ss,{className:"theme-".concat(s),children:[(0,w.jsx)(v.A,{}),(0,w.jsx)(j.A,{title:"\u7f16\u8f91\u8d34\u7eb8",targetSelector:".edit-header",showBack:!0}),(0,w.jsxs)(l.Ss,{className:"sticker-edit-page",children:[(0,w.jsxs)(l.Ss,{className:"edit-header",style:{paddingTop:"".concat(t.statusBarHeight+12,"px")},children:[(0,w.jsx)(l.EY,{className:"edit-back",onTap:function(){return d().navigateBack()},children:"\u2190"}),(0,w.jsx)(l.EY,{className:"edit-title",children:"\u7f16\u8f91\u8d34\u7eb8"}),(0,w.jsx)(l.EY,{className:"edit-save",onTap:ne,children:"\u4fdd\u5b58"})]}),(0,w.jsx)(l.Ss,{className:"edit-canvas-wrap",children:(0,w.jsx)(l.Hl,{id:"editCanvas",type:"2d",className:"edit-canvas",style:{width:"100%",height:"480rpx"}})}),(0,w.jsxs)(l.Ss,{className:"edit-tools surface-card mt-20",children:[(0,w.jsxs)(l.Ss,{className:"edit-row",children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u5feb\u901f\u64cd\u4f5c"}),(0,w.jsxs)(l.Ss,{className:"edit-quick-actions",children:[(0,w.jsx)(l.Ss,{className:"quick-btn",onTap:ce,children:(0,w.jsx)(l.EY,{children:"\u88c1\u526a"})}),(0,w.jsx)(l.Ss,{className:"quick-btn",onTap:re,children:(0,w.jsx)(l.EY,{children:"\u8f6c\u7ebf\u7a3f"})})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);B(N(a,-100,100))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u4eae\u5ea6"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:le}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:le}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:D>0?"+".concat(D):D})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((360*t-180)/1);U(N(a,-180,180))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u8272\u76f8"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:oe}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:oe}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:Q>0?"+".concat(Q):Q})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);J(N(a,-100,100))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u5bf9\u6bd4\u5ea6"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:de}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:de}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:H>0?"+".concat(H):H})]})]})]}),(0,w.jsx)(l.Ss,{style:{flex:1}}),(0,w.jsxs)(S.A,{className:"edit-footer",children:[(0,w.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return d().navigateBack()},children:(0,w.jsx)(l.EY,{children:"\u53d6\u6d88"})}),(0,w.jsx)(l.Ss,{className:"btn-primary",onTap:ne,children:(0,w.jsx)(l.EY,{children:"\u4fdd\u5b58"})})]}),(0,w.jsx)(l.Ss,{className:"safe-bottom-placeholder"}),z&&(0,w.jsx)(l.Ss,{className:"edit-loading",children:(0,w.jsx)(l.EY,{className:"edit-loading-text",children:"\u5904\u7406\u4e2d\u2026"})})]})]})}var T={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u7f16\u8f91\u8d34\u7eb8"};Page((0,a.createPageConfig)(p,"pages/diy/stickerEdit/index",{root:{cn:[]}},T||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(9519)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[339],{9519:function(e,s,t){var a=t(7842),n=t(1212),c=t(467),r=t(9379),i=t(5544),l=t(118),o=t(758),d=t.n(o),u=t(6540),h=t(1457),f=t(6845),m=t(9703),x=t(9201),g=t(5414),v=t(9674),j=t(3053),S=t(9513),w=t(4848),N=function(e,s,t){return Math.min(Math.max(e,s),t)};function p(){var e=(0,m.wR)(),s=e.resolvedTheme,t=(0,x.c)();(0,g.l)(s);var a=(0,u.useState)(""),o=(0,i.A)(a,2),p=o[0],T=o[1],k=(0,u.useState)(""),b=(0,i.A)(k,2),A=b[0],y=b[1],E=(0,u.useState)(null),Y=(0,i.A)(E,2),M=Y[0],C=Y[1],I=(0,u.useState)(0),R=(0,i.A)(I,2),D=R[0],B=R[1],P=(0,u.useState)(0),q=(0,i.A)(P,2),Q=q[0],U=q[1],F=(0,u.useState)(0),X=(0,i.A)(F,2),H=X[0],J=X[1],O=(0,u.useState)(!1),_=(0,i.A)(O,2),z=_[0],W=_[1],$=(0,u.useState)(!1),G=(0,i.A)($,2),K=G[0],L=G[1],V=((0,u.useRef)(null),(0,u.useRef)(null)),Z=(0,u.useRef)(null),ee=(0,u.useRef)({width:0,height:0}),se=(0,u.useCallback)(function(e){K||d().nextTick(function(){var s=d().createSelectorQuery();s.select("#editCanvas").fields({node:!0,size:!0}).exec(function(s){var t=s&&s[0],a=t?t.node:void 0;if(a){var n=a.getContext("2d"),c=s[0]&&s[0].width||300,r=s[0]&&s[0].height||400;c<=0&&(c=300),r<=0&&(r=400);var i=d().getSystemInfoSync().pixelRatio||1;a.width=Math.round(c*i),a.height=Math.round(r*i),n.scale(i,i),Z.current=a,V.current=n,ee.current={width:c,height:r},L(!0),te(n,c,r,e)}else setTimeout(function(){return se(e)},300)})})},[K]);(0,u.useEffect)(function(){var e=d().getCurrentInstance().router,s=e?e.params:void 0,t=s?s.designId:"",a=s?s.stickerId:"";T(t),y(a);var n=(0,h.p_)(),c=n.find(function(e){return e.id===t}),r=c&&c.designData&&c.designData.stickers?c.designData.stickers.find(function(e){return e.id===a}):void 0;r&&(C(r),B(r.edits&&r.edits.brightness||0),U(r.edits&&r.edits.hue||0),J(r.edits&&r.edits.contrast||0),se(r))},[se]);var te=function(e,s,t,a,n){if(e&&Z.current){var c=Z.current;if(s&&t){var r=a.width||200,i=a.height||200,l=c.createImage();l.onload=function(){e.clearRect(0,0,s,t),e.save();var a=.9*Math.min(s/r,t/i,4),c=r*a,o=i*a,d=(s-c)/2,u=(t-o)/2,h=n?n.brightness:D,f=n?n.hue:Q,m=n?n.contrast:H;e.filter=0!==h||0!==f||0!==m?"brightness(".concat(100+h,"%) hue-rotate(").concat(f,"deg) contrast(").concat(100+m,"%)"):"none",e.drawImage(l,d,u,c,o),e.restore()},l.onerror=function(e){console.error("Canvas load image error:",e,a.src),d().showToast({title:"\u56fe\u7247\u52a0\u8f7d\u5931\u8d25",icon:"none"})},a.src&&(l.src=a.src)}}},ae=function(){if(M&&V.current&&Z.current){var e=ee.current,s=e.width,t=e.height;te(V.current,s,t,M,{brightness:D,hue:Q,contrast:H})}};(0,u.useEffect)(function(){ae()},[D,Q,H]);var ne=function(){M&&p&&(W(!0),d().canvasToTempFilePath({canvas:Z.current,quality:.92,success:function(e){var s=e.tempFilePath,t=(0,h.p_)(),a=t.findIndex(function(e){return e.id===p});if(-1!==a){var n=t[a].designData&&t[a].designData.stickers||[],c=n.findIndex(function(e){return e.id===A});-1!==c?(n[c]=(0,r.A)((0,r.A)({},n[c]),{},{src:s,edits:{brightness:D,hue:Q,contrast:H}}),(0,h.i5)(p,{designData:(0,r.A)((0,r.A)({},t[a].designData),{},{stickers:n})}),d().showToast({title:"\u4fdd\u5b58\u6210\u529f",icon:"success"}),d().navigateBack()):W(!1)}else W(!1)},fail:function(){W(!1),d().showToast({title:"\u4fdd\u5b58\u5931\u8d25",icon:"none"})}}))},ce=function(){M&&(d().cropImage?d().cropImage({src:M.src,cropScale:"1:1",success:function(e){var s=(0,r.A)((0,r.A)({},M),{},{src:e.tempFilePath});C(s),setTimeout(function(){return ae()},200)}}):d().showToast({title:"\u5f53\u524d\u5fae\u4fe1\u7248\u672c\u4e0d\u652f\u6301\u88c1\u526a",icon:"none"}))},re=function(){var e=(0,c.A)((0,n.A)().m(function e(){var s,t;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(M){e.n=1;break}return e.a(2);case 1:return W(!0),e.p=2,e.n=3,(0,f.W$)(M.src);case 3:if(s=e.v,null===s||void 0===s||!s.imageUrl){e.n=4;break}t=(0,r.A)((0,r.A)({},M),{},{src:s.imageUrl,edits:(0,r.A)((0,r.A)({},M.edits),{},{sketchSrc:s.imageUrl})}),C(t),W(!1),setTimeout(function(){return ae()},200),d().showToast({title:"\u7ebf\u7a3f\u751f\u6210\u6210\u529f",icon:"success"}),e.n=5;break;case 4:throw new Error("no imageUrl");case 5:e.n=7;break;case 6:e.p=6,e.v,ie();case 7:return e.a(2)}},e,null,[[2,6]])}));return function(){return e.apply(this,arguments)}}(),ie=function(){M&&V.current?(d().showToast({title:"\u4f7f\u7528\u672c\u5730\u7ebf\u7a3f",icon:"none"}),B(20),J(80),U(0),W(!1)):W(!1)},le="".concat((D+100)/200*100,"%"),oe="".concat((Q+180)/360*100,"%"),de="".concat((H+100)/200*100,"%");return(0,w.jsxs)(l.Ss,{className:"theme-".concat(s),children:[(0,w.jsx)(v.A,{}),(0,w.jsx)(j.A,{title:"\u7f16\u8f91\u8d34\u7eb8",targetSelector:".edit-header",showBack:!0}),(0,w.jsxs)(l.Ss,{className:"sticker-edit-page",children:[(0,w.jsxs)(l.Ss,{className:"edit-header",style:{paddingTop:"".concat(t.statusBarHeight+12,"px")},children:[(0,w.jsx)(l.EY,{className:"edit-back",onTap:function(){return d().navigateBack()},children:"\u2190"}),(0,w.jsx)(l.EY,{className:"edit-title",children:"\u7f16\u8f91\u8d34\u7eb8"}),(0,w.jsx)(l.EY,{className:"edit-save",onTap:ne,children:"\u4fdd\u5b58"})]}),(0,w.jsx)(l.Ss,{className:"edit-canvas-wrap",children:(0,w.jsx)(l.Hl,{id:"editCanvas",type:"2d",className:"edit-canvas",style:{width:"100%",height:"480rpx"}})}),(0,w.jsxs)(l.Ss,{className:"edit-tools surface-card mt-20",children:[(0,w.jsxs)(l.Ss,{className:"edit-row",children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u5feb\u901f\u64cd\u4f5c"}),(0,w.jsxs)(l.Ss,{className:"edit-quick-actions",children:[(0,w.jsx)(l.Ss,{className:"quick-btn",onTap:ce,children:(0,w.jsx)(l.EY,{children:"\u88c1\u526a"})}),(0,w.jsx)(l.Ss,{className:"quick-btn",onTap:re,children:(0,w.jsx)(l.EY,{children:"\u8f6c\u7ebf\u7a3f"})})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);B(N(a,-100,100))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u4eae\u5ea6"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:le}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:le}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:D>0?"+".concat(D):D})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((360*t-180)/1);U(N(a,-180,180))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u8272\u76f8"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:oe}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:oe}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:Q>0?"+".concat(Q):Q})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);J(N(a,-100,100))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u5bf9\u6bd4\u5ea6"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:de}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:de}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:H>0?"+".concat(H):H})]})]})]}),(0,w.jsx)(l.Ss,{style:{flex:1}}),(0,w.jsxs)(S.A,{className:"edit-footer",children:[(0,w.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return d().navigateBack()},children:(0,w.jsx)(l.EY,{children:"\u53d6\u6d88"})}),(0,w.jsx)(l.Ss,{className:"btn-primary",onTap:ne,children:(0,w.jsx)(l.EY,{children:"\u4fdd\u5b58"})})]}),(0,w.jsx)(l.Ss,{className:"safe-bottom-placeholder"}),z&&(0,w.jsx)(l.Ss,{className:"edit-loading",children:(0,w.jsx)(l.EY,{className:"edit-loading-text",children:"\u5904\u7406\u4e2d\u2026"})})]})]})}var T={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u7f16\u8f91\u8d34\u7eb8"};Page((0,a.createPageConfig)(p,"pages/diy/stickerEdit/index",{root:{cn:[]}},T||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(9519)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/profile/index.js b/dist/pages/profile/index.js index f13373d..aadbbb5 100644 --- a/dist/pages/profile/index.js +++ b/dist/pages/profile/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[481],{2579:function(e,s,a){var n=a(7842),i=a(1212),t=a(467),r=a(5544),c=a(118),l=a(758),o=a.n(l),u=a(6540),d=a(1457),p=a(9703),m=a(9201),g=a(5414),h=a(9674),x=a(3053),f=a(5787),j=a(3246),v=a(8199),N=a(4848),S={"\u6211\u7684\u8bbe\u8ba1":(0,v.uq)("/icon/\u8c03\u8272\u76d8.png"),"\u8bcd\u4e91\u751f\u6210":(0,v.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),"\u6536\u8d27\u5730\u5740":(0,v.uq)("/icon/\u5730\u5740.png"),"\u8054\u7cfb\u5ba2\u670d":(0,v.uq)("/icon/\u7535\u8bdd.png"),"\u4f7f\u7528\u5e2e\u52a9":(0,v.uq)("/icon/\u4f7f\u7528\u5e2e\u52a9.png"),"\u8bbe\u7f6e":(0,v.uq)("/icon/\u8bbe\u7f6e.png")},b=[{key:"toDesign",label:"\u5f85\u8bbe\u8ba1",icon:(0,v.uq)("/icon/\u4e09\u89d2\u5c3a.png")},{key:"pending",label:"\u5f85\u4ed8\u6b3e",icon:(0,v.uq)("/icon/\u56db\u89d2\u661f.svg")},{key:"paid",label:"\u5f85\u53d1\u8d27",icon:(0,v.uq)("/icon/\u5305\u88f9.png")},{key:"shipping",label:"\u5f85\u6536\u8d27",icon:(0,v.uq)("/icon/\u676f\u5b50.png")},{key:"done",label:"\u5df2\u5b8c\u6210",icon:(0,v.uq)("/icon/\u4e66\u672c.png")}],k=[{label:"\u6211\u7684\u8bbe\u8ba1",path:"/pages/designList/index"},{label:"\u8bcd\u4e91\u751f\u6210",path:"/pages/wordcloud/index"},{label:"\u6536\u8d27\u5730\u5740",path:"/pages/address/index"},{label:"\u8054\u7cfb\u5ba2\u670d",path:"/pages/service/index"},{label:"\u4f7f\u7528\u5e2e\u52a9",path:"/pages/agreement/index"},{label:"\u8bbe\u7f6e",path:"/pages/settings/index"}],w=function(){};function T(){var e=(0,p.wR)(),s=(e.theme,e.resolvedTheme),a=(0,m.c)();(0,g.l)(s);var n=(0,u.useState)(!1),T=(0,r.A)(n,2),y=T[0],A=T[1],E=(0,u.useState)({nickName:"",avatarUrl:""}),Y=(0,r.A)(E,2),q=Y[0],U=Y[1],F=(0,u.useState)(!1),_=(0,r.A)(F,2),D=_[0],P=_[1],V=(0,u.useState)("entry"),L=(0,r.A)(V,2),C=L[0],J=L[1],O=(0,u.useState)(""),B=(0,r.A)(O,2),H=B[0],I=B[1],M=(0,u.useState)(""),R=(0,r.A)(M,2),W=R[0],$=R[1],z=(0,u.useState)(!1),G=(0,r.A)(z,2),K=G[0],Q=G[1],X=(0,u.useState)({toDesign:0,pending:0,paid:0,shipping:0,done:0}),Z=(0,r.A)(X,2),ee=Z[0],se=Z[1],ae=function(){var e=(0,d.n7)(),s=(0,d.p_)();se({toDesign:s.filter(function(e){return"undesigned"===e.status||"designing"===e.status}).length,pending:e.filter(function(e){return"pending"===e.statusCode}).length,paid:e.filter(function(e){return"paid"===e.statusCode}).length,shipping:e.filter(function(e){return"shipping"===e.statusCode}).length,done:e.filter(function(e){return"done"===e.statusCode}).length})},ne=function(){var e=(0,d.ug)();e&&e.openid?(A(!0),U({nickName:e.nickName||"",avatarUrl:e.avatarUrl||""})):(A(!1),U({nickName:"",avatarUrl:""})),ae()};(0,l.useDidShow)(function(){ne()});var ie=function(){J("entry"),I(""),$(""),P(!0)},te=function(){return P(!1)},re=function(e){Q(!1),(0,j.Sy)(),o().showToast({title:e,icon:"none"})},ce=function(e,s,a,n){var i={openid:s,nickName:a||"\u5fae\u4fe1\u7528\u6237",avatarUrl:n||"",accessToken:e,loginAt:Date.now()};(0,d.iA)(i),U({nickName:i.nickName,avatarUrl:i.avatarUrl}),A(!0),P(!1),J("entry"),Q(!1),(0,j.Sy)(),o().showToast({title:"\u767b\u5f55\u6210\u529f",icon:"success"})},le=function(){var e=(0,t.A)((0,i.A)().m(function e(){var s,a,n,t,r,c;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!K){e.n=1;break}return e.a(2);case 1:return console.log("[Profile] \u767b\u5f55\u6309\u94ae\u88ab\u70b9\u51fb\uff0c\u5f00\u59cb\u767b\u5f55\u6d41\u7a0b"),Q(!0),o().showLoading({title:"\u767b\u5f55\u4e2d",mask:!0}),e.p=2,e.n=3,o().login();case 3:return s=e.v,console.log("[Profile] wx.login \u6210\u529f\uff0ccode=",s.code),e.n=4,(0,f.iD)(s.code);case 4:if(a=e.v,console.log("[Profile] \u540e\u7aef /auth/login \u8fd4\u56de:",JSON.stringify(a)),a&&a.accessToken){e.n=5;break}return re("\u767b\u5f55\u5931\u8d25\uff0c\u672a\u62ff\u5230 token"),e.a(2);case 5:return n="",e.p=6,e.n=7,(0,f.jp)();case 7:t=e.v,n=t&&t.openid||"",e.n=9;break;case 8:e.p=8,e.v,n="";case 9:if(n){e.n=10;break}return re("\u767b\u5f55\u5f02\u5e38\uff0c\u8bf7\u91cd\u8bd5"),e.a(2);case 10:if(r=a.isNewUser||!a.nickname||!a.avatar,!r){e.n=11;break}return I(a.nickname||""),$(a.avatar||""),(0,j.Sy)(),Q(!1),J("fill"),o().showToast({title:"\u8bf7\u8bbe\u7f6e\u5934\u50cf\u548c\u6635\u79f0",icon:"none"}),e.a(2);case 11:ce(a.accessToken,n,a.nickname||"",a.avatar||""),e.n=13;break;case 12:e.p=12,c=e.v,console.error("[Profile] \u767b\u5f55\u6d41\u7a0b\u51fa\u9519:",c),re(c&&c.message||"\u540e\u7aef\u8fde\u63a5\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc");case 13:return e.a(2)}},e,null,[[6,8],[2,12]])}));return function(){return e.apply(this,arguments)}}(),oe=function(){var e=(0,t.A)((0,i.A)().m(function e(){var s,a,n,t;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!K){e.n=1;break}return e.a(2);case 1:return Q(!0),o().showLoading({title:"\u4fdd\u5b58\u4e2d",mask:!0}),e.p=2,e.n=3,(0,f.r7)({nickname:H||void 0,avatar:W||void 0});case 3:return s="",e.p=4,e.n=5,(0,f.jp)();case 5:a=e.v,s=a&&a.openid||"",e.n=7;break;case 6:e.p=6,e.v,s="";case 7:if(s){e.n=8;break}return re("\u4fdd\u5b58\u5f02\u5e38\uff0c\u8bf7\u91cd\u8bd5"),e.a(2);case 8:n=(0,d.ug)(),ce(n&&n.accessToken||(0,f.gf)(),s,H,W),e.n=10;break;case 9:e.p=9,t=e.v,console.error("[Profile] \u4fdd\u5b58\u8d44\u6599\u51fa\u9519:",t),re(t&&t.message||"\u4fdd\u5b58\u5931\u8d25");case 10:return e.a(2)}},e,null,[[4,6],[2,9]])}));return function(){return e.apply(this,arguments)}}(),ue=function(e){$(e.detail.avatarUrl||"")},de=function(e){switch(o().hideToast(),e){case"toDesign":o().setStorageSync("designList:filter","toDesign"),o().switchTab({url:"/pages/designList/index"});break;case"pending":o().setStorageSync("orders:filter","pending"),o().switchTab({url:"/pages/orders/index"});break;case"paid":o().setStorageSync("orders:filter","paid"),o().switchTab({url:"/pages/orders/index"});break;case"shipping":o().setStorageSync("orders:filter","shipping"),o().switchTab({url:"/pages/orders/index"});break;case"done":o().setStorageSync("orders:filter","done"),o().switchTab({url:"/pages/orders/index"});break}},pe=function(e,s){if(o().hideToast(),!y&&(e.includes("designList")||e.includes("orders")))return o().showToast({title:"\u8bf7\u5148\u767b\u5f55",icon:"none"}),void P(!0);"\u8054\u7cfb\u5ba2\u670d"!==s?e.startsWith("/pages/")&&(e.includes("designList")||e.includes("orders")?o().switchTab({url:e,fail:function(e){console.error("switchTab fail",e),o().showToast({title:"\u8df3\u8f6c\u5931\u8d25",icon:"none"})}}):o().navigateTo({url:e,fail:function(e){console.error("navigateTo fail",e),o().showToast({title:"\u8df3\u8f6c\u5931\u8d25",icon:"none"})}})):o().navigateTo({url:"/pages/service/index",fail:function(e){console.error("navigateTo service fail",e),o().showToast({title:"\u8df3\u8f6c\u5931\u8d25",icon:"none"})}})};return(0,N.jsxs)(c.Ss,{className:"theme-".concat(s),style:{minHeight:"100vh"},children:[(0,N.jsx)(h.A,{}),(0,N.jsx)(x.A,{title:"\u6211\u7684",targetSelector:".profile-header"}),(0,N.jsxs)(c.Ss,{className:"profile-page",children:[(0,N.jsxs)(c.Ss,{className:"profile-header surface-card",style:{marginTop:"".concat(a.statusBarHeight+12,"px")},children:[(0,N.jsxs)(c.Ss,{className:"user-info",children:[y&&q.avatarUrl?(0,N.jsx)(c._V,{className:"avatar",src:q.avatarUrl,mode:"aspectFill"}):(0,N.jsx)(c.Ss,{className:"avatar-placeholder",onTap:ie,children:(0,N.jsx)(c._V,{className:"avatar-icon-img",src:(0,v.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"})}),(0,N.jsxs)(c.Ss,{className:"user-meta",children:[(0,N.jsx)(c.EY,{className:"user-name",onTap:y?w:ie,children:y?q.nickName:"\u70b9\u51fb\u767b\u5f55"}),(0,N.jsx)(c.EY,{className:"user-level",children:y?"\u667a\u7ed8\u5fae\u523b\u4f1a\u5458":"\u6388\u6743\u5fae\u4fe1\uff0c\u5f00\u542f\u4e13\u5c5e\u5b9a\u5236"})]})]}),(0,N.jsxs)(c.Ss,{className:"status-grid",children:[(0,N.jsx)(c.Ss,{className:"status-row row2",children:b.slice(0,2).map(function(e){return(0,N.jsxs)(c.Ss,{className:"status-group",children:[(0,N.jsxs)(c.Ss,{className:"status-item",onTap:function(){return de(e.key)},children:[(0,N.jsx)(c._V,{className:"status-icon-img",src:e.icon,mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"status-num",children:ee[e.key]}),(0,N.jsx)(c.EY,{className:"status-label",children:e.label})]}),(0,N.jsx)(c.Ss,{className:"status-divider"})]},e.key)})}),(0,N.jsx)(c.Ss,{className:"status-divider-h"}),(0,N.jsx)(c.Ss,{className:"status-row row3",children:b.slice(2).map(function(e,s){return(0,N.jsxs)(c.Ss,{className:"status-group",children:[(0,N.jsxs)(c.Ss,{className:"status-item",onTap:function(){return de(e.key)},children:[(0,N.jsx)(c._V,{className:"status-icon-img",src:e.icon,mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"status-num",children:ee[e.key]}),(0,N.jsx)(c.EY,{className:"status-label",children:e.label})]}),s<2&&(0,N.jsx)(c.Ss,{className:"status-divider"})]},e.key)})})]})]}),(0,N.jsxs)(c.Ss,{className:"mt-20",children:[(0,N.jsx)(c.EY,{className:"section-title",children:"\u5e38\u7528\u529f\u80fd"}),(0,N.jsx)(c.Ss,{className:"menu-grid",children:k.map(function(e,s){return(0,N.jsxs)(c.Ss,{className:"menu-card surface-card",onTap:function(){return pe(e.path,e.label)},children:[(0,N.jsx)(c._V,{className:"menu-icon-img",src:S[e.label],mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"menu-label",children:e.label})]},s)})})]}),(0,N.jsx)(c.Ss,{className:"enterprise-section surface-card mt-20",children:(0,N.jsxs)(c.Ss,{className:"flex-between",children:[(0,N.jsxs)(c.Ss,{className:"flex-column",children:[(0,N.jsxs)(c.Ss,{className:"flex-center",children:[(0,N.jsx)(c._V,{className:"enterprise-icon",src:(0,v.uq)("/icon/\u4f01\u4e1a\u6279\u91cf\u5b9a\u5236.png"),mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"enterprise-title",children:"\u4f01\u4e1a\u6279\u91cf\u5b9a\u5236"})]}),(0,N.jsx)(c.EY,{className:"enterprise-desc",children:"\u5e74\u4f1a\u793c\u54c1\u3001\u5165\u804c\u7eaa\u5ff5\u3001\u56e2\u5efa\u4f34\u624b\u793c"})]}),(0,N.jsx)(c.Ss,{className:"btn-primary enterprise-btn",children:(0,N.jsx)(c.EY,{children:"\u7acb\u5373\u54a8\u8be2"})})]})}),D&&(0,N.jsx)(c.Ss,{className:"modal-overlay",children:(0,N.jsxs)(c.Ss,{className:"login-card surface-card",children:[(0,N.jsx)(c.EY,{className:"login-title",children:"\u767b\u5f55\u667a\u7ed8\u5fae\u523b"}),"entry"===C?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(c.EY,{className:"login-desc",children:"\u767b\u5f55\u540e\u540c\u6b65\u60a8\u7684\u8bbe\u8ba1\u6e05\u5355\u548c\u8ba2\u5355"}),(0,N.jsxs)(c.Ss,{className:"login-actions",children:[(0,N.jsx)(c.Ss,{className:"btn-secondary",onTap:te,children:(0,N.jsx)(c.EY,{children:"\u53d6\u6d88"})}),(0,N.jsx)(c.Ss,{className:"btn-primary",onTap:le,children:(0,N.jsx)(c.EY,{children:"\u5fae\u4fe1\u767b\u5f55"})})]})]}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(c.EY,{className:"login-desc",children:"\u8bf7\u8bbe\u7f6e\u60a8\u7684\u5934\u50cf\u548c\u6635\u79f0"}),(0,N.jsx)(c.$n,{className:"avatar-btn",openType:"chooseAvatar",onChooseAvatar:ue,children:W?(0,N.jsx)(c._V,{className:"avatar-img",src:W,mode:"aspectFill"}):(0,N.jsx)(c._V,{className:"avatar-placeholder-img",src:(0,v.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"})}),(0,N.jsx)(c.pd,{type:"nickname",className:"nickname-input",placeholder:"\u8bf7\u8f93\u5165\u6635\u79f0",value:H,onInput:function(e){return I(e.detail.value)}}),(0,N.jsxs)(c.Ss,{className:"login-actions",children:[(0,N.jsx)(c.Ss,{className:"btn-secondary",onTap:te,children:(0,N.jsx)(c.EY,{children:"\u53d6\u6d88"})}),(0,N.jsx)(c.Ss,{className:"btn-primary",onTap:oe,children:(0,N.jsx)(c.EY,{children:"\u4fdd\u5b58"})})]})]})]})})]})]})}var y={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u4e2a\u4eba\u4e2d\u5fc3"};Page((0,n.createPageConfig)(T,"pages/profile/index",{root:{cn:[]}},y||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(2579)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[481],{2579:function(e,s,a){var n=a(7842),i=a(1212),t=a(467),r=a(5544),c=a(118),l=a(758),o=a.n(l),u=a(6540),d=a(1457),p=a(9703),m=a(9201),g=a(5414),h=a(9674),x=a(3053),f=a(6845),j=a(3246),v=a(8199),N=a(4848),S={"\u6211\u7684\u8bbe\u8ba1":(0,v.uq)("/icon/\u8c03\u8272\u76d8.png"),"\u8bcd\u4e91\u751f\u6210":(0,v.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),"\u6536\u8d27\u5730\u5740":(0,v.uq)("/icon/\u5730\u5740.png"),"\u8054\u7cfb\u5ba2\u670d":(0,v.uq)("/icon/\u7535\u8bdd.png"),"\u4f7f\u7528\u5e2e\u52a9":(0,v.uq)("/icon/\u4f7f\u7528\u5e2e\u52a9.png"),"\u8bbe\u7f6e":(0,v.uq)("/icon/\u8bbe\u7f6e.png")},b=[{key:"toDesign",label:"\u5f85\u8bbe\u8ba1",icon:(0,v.uq)("/icon/\u4e09\u89d2\u5c3a.png")},{key:"pending",label:"\u5f85\u4ed8\u6b3e",icon:(0,v.uq)("/icon/\u56db\u89d2\u661f.svg")},{key:"paid",label:"\u5f85\u53d1\u8d27",icon:(0,v.uq)("/icon/\u5305\u88f9.png")},{key:"shipping",label:"\u5f85\u6536\u8d27",icon:(0,v.uq)("/icon/\u676f\u5b50.png")},{key:"done",label:"\u5df2\u5b8c\u6210",icon:(0,v.uq)("/icon/\u4e66\u672c.png")}],k=[{label:"\u6211\u7684\u8bbe\u8ba1",path:"/pages/designList/index"},{label:"\u8bcd\u4e91\u751f\u6210",path:"/pages/wordcloud/index"},{label:"\u6536\u8d27\u5730\u5740",path:"/pages/address/index"},{label:"\u8054\u7cfb\u5ba2\u670d",path:"/pages/service/index"},{label:"\u4f7f\u7528\u5e2e\u52a9",path:"/pages/agreement/index"},{label:"\u8bbe\u7f6e",path:"/pages/settings/index"}],w=function(){};function T(){var e=(0,p.wR)(),s=(e.theme,e.resolvedTheme),a=(0,m.c)();(0,g.l)(s);var n=(0,u.useState)(!1),T=(0,r.A)(n,2),y=T[0],A=T[1],E=(0,u.useState)({nickName:"",avatarUrl:""}),Y=(0,r.A)(E,2),q=Y[0],U=Y[1],F=(0,u.useState)(!1),_=(0,r.A)(F,2),D=_[0],P=_[1],V=(0,u.useState)("entry"),L=(0,r.A)(V,2),C=L[0],J=L[1],O=(0,u.useState)(""),B=(0,r.A)(O,2),H=B[0],I=B[1],M=(0,u.useState)(""),R=(0,r.A)(M,2),W=R[0],$=R[1],z=(0,u.useState)(!1),G=(0,r.A)(z,2),K=G[0],Q=G[1],X=(0,u.useState)({toDesign:0,pending:0,paid:0,shipping:0,done:0}),Z=(0,r.A)(X,2),ee=Z[0],se=Z[1],ae=function(){var e=(0,d.n7)(),s=(0,d.p_)();se({toDesign:s.filter(function(e){return"undesigned"===e.status||"designing"===e.status}).length,pending:e.filter(function(e){return"pending"===e.statusCode}).length,paid:e.filter(function(e){return"paid"===e.statusCode}).length,shipping:e.filter(function(e){return"shipping"===e.statusCode}).length,done:e.filter(function(e){return"done"===e.statusCode}).length})},ne=function(){var e=(0,d.ug)();e&&e.openid?(A(!0),U({nickName:e.nickName||"",avatarUrl:e.avatarUrl||""})):(A(!1),U({nickName:"",avatarUrl:""})),ae()};(0,l.useDidShow)(function(){ne()});var ie=function(){J("entry"),I(""),$(""),P(!0)},te=function(){return P(!1)},re=function(e){Q(!1),(0,j.Sy)(),o().showToast({title:e,icon:"none"})},ce=function(e,s,a,n){var i={openid:s,nickName:a||"\u5fae\u4fe1\u7528\u6237",avatarUrl:n||"",accessToken:e,loginAt:Date.now()};(0,d.iA)(i),U({nickName:i.nickName,avatarUrl:i.avatarUrl}),A(!0),P(!1),J("entry"),Q(!1),(0,j.Sy)(),o().showToast({title:"\u767b\u5f55\u6210\u529f",icon:"success"})},le=function(){var e=(0,t.A)((0,i.A)().m(function e(){var s,a,n,t,r,c;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!K){e.n=1;break}return e.a(2);case 1:return console.log("[Profile] \u767b\u5f55\u6309\u94ae\u88ab\u70b9\u51fb\uff0c\u5f00\u59cb\u767b\u5f55\u6d41\u7a0b"),Q(!0),o().showLoading({title:"\u767b\u5f55\u4e2d",mask:!0}),e.p=2,e.n=3,o().login();case 3:return s=e.v,console.log("[Profile] wx.login \u6210\u529f\uff0ccode=",s.code),e.n=4,(0,f.iD)(s.code);case 4:if(a=e.v,console.log("[Profile] \u540e\u7aef /auth/login \u8fd4\u56de:",JSON.stringify(a)),a&&a.accessToken){e.n=5;break}return re("\u767b\u5f55\u5931\u8d25\uff0c\u672a\u62ff\u5230 token"),e.a(2);case 5:return n="",e.p=6,e.n=7,(0,f.jp)();case 7:t=e.v,n=t&&t.openid||"",e.n=9;break;case 8:e.p=8,e.v,n="";case 9:if(n){e.n=10;break}return re("\u767b\u5f55\u5f02\u5e38\uff0c\u8bf7\u91cd\u8bd5"),e.a(2);case 10:if(r=a.isNewUser||!a.nickname||!a.avatar,!r){e.n=11;break}return I(a.nickname||""),$(a.avatar||""),(0,j.Sy)(),Q(!1),J("fill"),o().showToast({title:"\u8bf7\u8bbe\u7f6e\u5934\u50cf\u548c\u6635\u79f0",icon:"none"}),e.a(2);case 11:ce(a.accessToken,n,a.nickname||"",a.avatar||""),e.n=13;break;case 12:e.p=12,c=e.v,console.error("[Profile] \u767b\u5f55\u6d41\u7a0b\u51fa\u9519:",c),re(c&&c.message||"\u540e\u7aef\u8fde\u63a5\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc");case 13:return e.a(2)}},e,null,[[6,8],[2,12]])}));return function(){return e.apply(this,arguments)}}(),oe=function(){var e=(0,t.A)((0,i.A)().m(function e(){var s,a,n,t;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!K){e.n=1;break}return e.a(2);case 1:return Q(!0),o().showLoading({title:"\u4fdd\u5b58\u4e2d",mask:!0}),e.p=2,e.n=3,(0,f.r7)({nickname:H||void 0,avatar:W||void 0});case 3:return s="",e.p=4,e.n=5,(0,f.jp)();case 5:a=e.v,s=a&&a.openid||"",e.n=7;break;case 6:e.p=6,e.v,s="";case 7:if(s){e.n=8;break}return re("\u4fdd\u5b58\u5f02\u5e38\uff0c\u8bf7\u91cd\u8bd5"),e.a(2);case 8:n=(0,d.ug)(),ce(n&&n.accessToken||(0,f.gf)(),s,H,W),e.n=10;break;case 9:e.p=9,t=e.v,console.error("[Profile] \u4fdd\u5b58\u8d44\u6599\u51fa\u9519:",t),re(t&&t.message||"\u4fdd\u5b58\u5931\u8d25");case 10:return e.a(2)}},e,null,[[4,6],[2,9]])}));return function(){return e.apply(this,arguments)}}(),ue=function(e){$(e.detail.avatarUrl||"")},de=function(e){switch(o().hideToast(),e){case"toDesign":o().setStorageSync("designList:filter","toDesign"),o().switchTab({url:"/pages/designList/index"});break;case"pending":o().setStorageSync("orders:filter","pending"),o().switchTab({url:"/pages/orders/index"});break;case"paid":o().setStorageSync("orders:filter","paid"),o().switchTab({url:"/pages/orders/index"});break;case"shipping":o().setStorageSync("orders:filter","shipping"),o().switchTab({url:"/pages/orders/index"});break;case"done":o().setStorageSync("orders:filter","done"),o().switchTab({url:"/pages/orders/index"});break}},pe=function(e,s){if(o().hideToast(),!y&&(e.includes("designList")||e.includes("orders")))return o().showToast({title:"\u8bf7\u5148\u767b\u5f55",icon:"none"}),void P(!0);"\u8054\u7cfb\u5ba2\u670d"!==s?e.startsWith("/pages/")&&(e.includes("designList")||e.includes("orders")?o().switchTab({url:e,fail:function(e){console.error("switchTab fail",e),o().showToast({title:"\u8df3\u8f6c\u5931\u8d25",icon:"none"})}}):o().navigateTo({url:e,fail:function(e){console.error("navigateTo fail",e),o().showToast({title:"\u8df3\u8f6c\u5931\u8d25",icon:"none"})}})):o().navigateTo({url:"/pages/service/index",fail:function(e){console.error("navigateTo service fail",e),o().showToast({title:"\u8df3\u8f6c\u5931\u8d25",icon:"none"})}})};return(0,N.jsxs)(c.Ss,{className:"theme-".concat(s),style:{minHeight:"100vh"},children:[(0,N.jsx)(h.A,{}),(0,N.jsx)(x.A,{title:"\u6211\u7684",targetSelector:".profile-header"}),(0,N.jsxs)(c.Ss,{className:"profile-page",children:[(0,N.jsxs)(c.Ss,{className:"profile-header surface-card",style:{marginTop:"".concat(a.statusBarHeight+12,"px")},children:[(0,N.jsxs)(c.Ss,{className:"user-info",children:[y&&q.avatarUrl?(0,N.jsx)(c._V,{className:"avatar",src:q.avatarUrl,mode:"aspectFill"}):(0,N.jsx)(c.Ss,{className:"avatar-placeholder",onTap:ie,children:(0,N.jsx)(c._V,{className:"avatar-icon-img",src:(0,v.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"})}),(0,N.jsxs)(c.Ss,{className:"user-meta",children:[(0,N.jsx)(c.EY,{className:"user-name",onTap:y?w:ie,children:y?q.nickName:"\u70b9\u51fb\u767b\u5f55"}),(0,N.jsx)(c.EY,{className:"user-level",children:y?"\u667a\u7ed8\u5fae\u523b\u4f1a\u5458":"\u6388\u6743\u5fae\u4fe1\uff0c\u5f00\u542f\u4e13\u5c5e\u5b9a\u5236"})]})]}),(0,N.jsxs)(c.Ss,{className:"status-grid",children:[(0,N.jsx)(c.Ss,{className:"status-row row2",children:b.slice(0,2).map(function(e){return(0,N.jsxs)(c.Ss,{className:"status-group",children:[(0,N.jsxs)(c.Ss,{className:"status-item",onTap:function(){return de(e.key)},children:[(0,N.jsx)(c._V,{className:"status-icon-img",src:e.icon,mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"status-num",children:ee[e.key]}),(0,N.jsx)(c.EY,{className:"status-label",children:e.label})]}),(0,N.jsx)(c.Ss,{className:"status-divider"})]},e.key)})}),(0,N.jsx)(c.Ss,{className:"status-divider-h"}),(0,N.jsx)(c.Ss,{className:"status-row row3",children:b.slice(2).map(function(e,s){return(0,N.jsxs)(c.Ss,{className:"status-group",children:[(0,N.jsxs)(c.Ss,{className:"status-item",onTap:function(){return de(e.key)},children:[(0,N.jsx)(c._V,{className:"status-icon-img",src:e.icon,mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"status-num",children:ee[e.key]}),(0,N.jsx)(c.EY,{className:"status-label",children:e.label})]}),s<2&&(0,N.jsx)(c.Ss,{className:"status-divider"})]},e.key)})})]})]}),(0,N.jsxs)(c.Ss,{className:"mt-20",children:[(0,N.jsx)(c.EY,{className:"section-title",children:"\u5e38\u7528\u529f\u80fd"}),(0,N.jsx)(c.Ss,{className:"menu-grid",children:k.map(function(e,s){return(0,N.jsxs)(c.Ss,{className:"menu-card surface-card",onTap:function(){return pe(e.path,e.label)},children:[(0,N.jsx)(c._V,{className:"menu-icon-img",src:S[e.label],mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"menu-label",children:e.label})]},s)})})]}),(0,N.jsx)(c.Ss,{className:"enterprise-section surface-card mt-20",children:(0,N.jsxs)(c.Ss,{className:"flex-between",children:[(0,N.jsxs)(c.Ss,{className:"flex-column",children:[(0,N.jsxs)(c.Ss,{className:"flex-center",children:[(0,N.jsx)(c._V,{className:"enterprise-icon",src:(0,v.uq)("/icon/\u4f01\u4e1a\u6279\u91cf\u5b9a\u5236.png"),mode:"aspectFit"}),(0,N.jsx)(c.EY,{className:"enterprise-title",children:"\u4f01\u4e1a\u6279\u91cf\u5b9a\u5236"})]}),(0,N.jsx)(c.EY,{className:"enterprise-desc",children:"\u5e74\u4f1a\u793c\u54c1\u3001\u5165\u804c\u7eaa\u5ff5\u3001\u56e2\u5efa\u4f34\u624b\u793c"})]}),(0,N.jsx)(c.Ss,{className:"btn-primary enterprise-btn",children:(0,N.jsx)(c.EY,{children:"\u7acb\u5373\u54a8\u8be2"})})]})}),D&&(0,N.jsx)(c.Ss,{className:"modal-overlay",children:(0,N.jsxs)(c.Ss,{className:"login-card surface-card",children:[(0,N.jsx)(c.EY,{className:"login-title",children:"\u767b\u5f55\u667a\u7ed8\u5fae\u523b"}),"entry"===C?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(c.EY,{className:"login-desc",children:"\u767b\u5f55\u540e\u540c\u6b65\u60a8\u7684\u8bbe\u8ba1\u6e05\u5355\u548c\u8ba2\u5355"}),(0,N.jsxs)(c.Ss,{className:"login-actions",children:[(0,N.jsx)(c.Ss,{className:"btn-secondary",onTap:te,children:(0,N.jsx)(c.EY,{children:"\u53d6\u6d88"})}),(0,N.jsx)(c.Ss,{className:"btn-primary",onTap:le,children:(0,N.jsx)(c.EY,{children:"\u5fae\u4fe1\u767b\u5f55"})})]})]}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(c.EY,{className:"login-desc",children:"\u8bf7\u8bbe\u7f6e\u60a8\u7684\u5934\u50cf\u548c\u6635\u79f0"}),(0,N.jsx)(c.$n,{className:"avatar-btn",openType:"chooseAvatar",onChooseAvatar:ue,children:W?(0,N.jsx)(c._V,{className:"avatar-img",src:W,mode:"aspectFill"}):(0,N.jsx)(c._V,{className:"avatar-placeholder-img",src:(0,v.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"})}),(0,N.jsx)(c.pd,{type:"nickname",className:"nickname-input",placeholder:"\u8bf7\u8f93\u5165\u6635\u79f0",value:H,onInput:function(e){return I(e.detail.value)}}),(0,N.jsxs)(c.Ss,{className:"login-actions",children:[(0,N.jsx)(c.Ss,{className:"btn-secondary",onTap:te,children:(0,N.jsx)(c.EY,{children:"\u53d6\u6d88"})}),(0,N.jsx)(c.Ss,{className:"btn-primary",onTap:oe,children:(0,N.jsx)(c.EY,{children:"\u4fdd\u5b58"})})]})]})]})})]})]})}var y={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u4e2a\u4eba\u4e2d\u5fc3"};Page((0,n.createPageConfig)(T,"pages/profile/index",{root:{cn:[]}},y||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(2579)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/wordcloud/index.js b/dist/pages/wordcloud/index.js index d77d8cc..025de70 100644 --- a/dist/pages/wordcloud/index.js +++ b/dist/pages/wordcloud/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[18],{5849:function(s,e,a){var n=a(7842),c=a(1212),t=a(467),r=a(5544),l=a(118),i=a(758),o=a.n(i),u=a(6540),m=a(9703),d=a(9201),h=a(5414),p=a(9674),x=a(3053),j=a(8199),N=a(5787),g=a(4848);function S(){var s=(0,m.wR)(),e=(s.theme,s.resolvedTheme),a=(0,d.c)();(0,h.l)(e);var n=(0,u.useState)(1),i=(0,r.A)(n,2),S=i[0],f=i[1],b=(0,u.useState)(""),v=(0,r.A)(b,2),E=v[0],w=v[1],Y=(0,u.useState)(""),T=(0,r.A)(Y,2),A=T[0],k=T[1],y=(0,u.useState)(""),I=(0,r.A)(y,2),F=I[0],V=I[1],_=(0,u.useState)(!1),P=(0,r.A)(_,2),q=P[0],M=P[1],B=(0,u.useState)(0),J=(0,r.A)(B,2),O=J[0],z=J[1],C=(0,u.useState)(""),H=(0,r.A)(C,2),L=H[0],R=H[1],U=[{num:1,label:"\u4e0a\u4f20\u5e95\u56fe"},{num:2,label:"\u8f93\u5165\u540d\u5355"},{num:3,label:"\u751f\u6210\u9884\u89c8"}],Z=function(){o().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(s){w(s.tempFilePaths[0]),f(2)}})},D=function(){var s=(0,t.A)((0,c.A)().m(function s(){var e,a,n;return(0,c.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(A.trim()){s.n=1;break}return o().showToast({title:"\u8bf7\u5148\u8f93\u5165\u540d\u5b57",icon:"none"}),s.a(2);case 1:if(E){s.n=2;break}return o().showToast({title:"\u8bf7\u5148\u4e0a\u4f20\u5e95\u56fe",icon:"none"}),s.a(2);case 2:return f(3),M(!0),z(0),R(""),s.p=3,s.n=4,(0,N.l8)(E,A.trim());case 4:return e=s.v,a=e.jobId,s.n=5,G(a);case 5:s.n=7;break;case 6:s.p=6,n=s.v,M(!1),R(n instanceof Error?n.message:"\u751f\u6210\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5");case 7:return s.a(2)}},s,null,[[3,6]])}));return function(){return s.apply(this,arguments)}}(),G=function(s){return new Promise(function(e,a){var n=0,r=setInterval((0,t.A)((0,c.A)().m(function t(){var l;return(0,c.A)().w(function(c){while(1)switch(c.p=c.n){case 0:return c.p=0,c.n=1,(0,N.xZ)(s);case 1:l=c.v,z(Math.min(l.progress,100)),"success"===l.status?(clearInterval(r),M(!1),V(l.imageUrl||E),e()):"failed"===l.status&&(clearInterval(r),M(!1),R(l.error||"\u8bcd\u4e91\u751f\u6210\u5931\u8d25"),a(new Error(l.error||"\u8bcd\u4e91\u751f\u6210\u5931\u8d25"))),c.n=3;break;case 2:c.p=2,c.v,n+=1,n>5&&(clearInterval(r),M(!1),a(new Error("\u4efb\u52a1\u72b6\u6001\u83b7\u53d6\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5")));case 3:return c.a(2)}},t,null,[[0,2]])})),1500)})},K=function(){F&&o().saveImageToPhotosAlbum({filePath:F,success:function(){return o().showToast({title:"\u5df2\u4fdd\u5b58\u5230\u76f8\u518c",icon:"success"})},fail:function(){return o().showToast({title:"\u4fdd\u5b58\u5931\u8d25",icon:"none"})}})},Q=function(){S>1?f(S-1):o().navigateBack()};return(0,g.jsxs)(l.Ss,{className:"theme-".concat(e),children:[(0,g.jsx)(p.A,{}),(0,g.jsx)(x.A,{title:"AI\u8bcd\u4e91\u751f\u6210",targetSelector:".page-header.cloud-header",showBack:!0}),(0,g.jsxs)(l.Ss,{className:"wordcloud-page",children:[(0,g.jsxs)(l.Ss,{className:"page-header cloud-header",style:{paddingTop:"".concat(a.statusBarHeight+12,"px")},children:[(0,g.jsx)(l.Ss,{className:"back-btn",onTap:Q,children:(0,g.jsx)(l.EY,{className:"back-arrow",children:"\u2190"})}),(0,g.jsx)(l.EY,{className:"page-title",children:"AI\u8bcd\u4e91\u751f\u6210"}),(0,g.jsx)(l.Ss,{className:"header-spacer"})]}),(0,g.jsx)(l.Ss,{className:"step-indicator surface-card",children:U.map(function(s,e){return(0,g.jsxs)(l.Ss,{className:"step-item",children:[(0,g.jsx)(l.Ss,{className:"step-circle ".concat(S>=s.num?"active":""),children:(0,g.jsx)(l.EY,{className:"step-num",children:s.num})}),(0,g.jsx)(l.EY,{className:"step-label ".concat(S>=s.num?"active":""),children:s.label}),es.num?"active":"")})]},s.num)})}),1===S&&(0,g.jsxs)(l.Ss,{className:"step-content",children:[(0,g.jsx)(l.Ss,{className:"upload-area surface-card",onTap:Z,children:E?(0,g.jsx)(l._V,{className:"preview-image",src:E,mode:"aspectFit"}):(0,g.jsxs)(l.Ss,{className:"upload-placeholder",children:[(0,g.jsx)(l._V,{className:"upload-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"upload-title",children:"\u70b9\u51fb\u4e0a\u4f20\u5e95\u56fe"}),(0,g.jsx)(l.EY,{className:"upload-desc",children:"\u652f\u6301\u7167\u7247\u3001Logo\u3001\u56fe\u6848\u7b49"}),(0,g.jsx)(l.EY,{className:"upload-tip",children:"\u7cfb\u7edf\u5c06\u7528\u540d\u5b57\u586b\u5145\u5230\u6df1\u8272\u533a\u57df"})]})}),E&&(0,g.jsxs)(l.Ss,{className:"action-btns",children:[(0,g.jsx)(l.Ss,{className:"btn-primary",onTap:function(){return f(2)},children:(0,g.jsx)(l.EY,{children:"\u4e0b\u4e00\u6b65\uff1a\u8f93\u5165\u540d\u5355"})}),(0,g.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return w("")},children:(0,g.jsx)(l.EY,{children:"\u91cd\u65b0\u9009\u62e9"})})]})]}),2===S&&(0,g.jsxs)(l.Ss,{className:"step-content",children:[(0,g.jsxs)(l.Ss,{className:"input-section surface-card",children:[(0,g.jsx)(l.EY,{className:"section-title",children:"\u8f93\u5165\u540d\u5b57\u540d\u5355"}),(0,g.jsx)(l.TM,{className:"names-input",placeholder:"\u4f8b\u5982\uff1a\n\u5f20\u4e09\n\u674e\u56db\n\u738b\u4e94",value:A,onInput:function(s){return k(s.detail.value)},maxlength:5e3}),(0,g.jsxs)(l.EY,{className:"input-stats",children:["\u5df2\u8f93\u5165 ",A.split(/\n|\uff0c|,/).filter(function(s){return s.trim()}).length," \u4e2a\u540d\u5b57"]}),(0,g.jsxs)(l.Ss,{className:"input-tips",children:[(0,g.jsx)(l.EY,{className:"tip-item",children:"\u540d\u5b57\u4f1a\u968f\u673a\u5206\u5e03\u5728\u5e95\u56fe\u7684\u6df1\u8272\u533a\u57df"}),(0,g.jsx)(l.EY,{className:"tip-item",children:"\u5efa\u8bae\u8f93\u516510-200\u4e2a\u540d\u5b57\u6548\u679c\u6700\u4f73"})]})]}),(0,g.jsxs)(l.Ss,{className:"action-btns",children:[(0,g.jsx)(l.Ss,{className:"btn-primary",onTap:D,children:(0,g.jsx)(l.EY,{children:"\u5f00\u59cb\u751f\u6210\u8bcd\u4e91"})}),(0,g.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return f(1)},children:(0,g.jsx)(l.EY,{children:"\u4e0a\u4e00\u6b65"})})]})]}),3===S&&(0,g.jsx)(l.Ss,{className:"step-content",children:L?(0,g.jsxs)(l.Ss,{className:"generating-panel",children:[(0,g.jsx)(l._V,{className:"generating-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"generating-title",children:"\u751f\u6210\u5931\u8d25"}),(0,g.jsx)(l.EY,{className:"generating-subtitle",children:L}),(0,g.jsx)(l.Ss,{className:"action-btns",children:(0,g.jsx)(l.Ss,{className:"btn-primary",onTap:function(){R(""),f(2)},children:(0,g.jsx)(l.EY,{children:"\u8fd4\u56de\u4fee\u6539\u540d\u5355"})})})]}):q?(0,g.jsxs)(l.Ss,{className:"generating-panel",children:[(0,g.jsx)(l._V,{className:"generating-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"generating-title",children:"\u6b63\u5728\u751f\u6210\u8bcd\u4e91..."}),(0,g.jsx)(l.EY,{className:"generating-subtitle",children:"AI\u6b63\u5728\u5c06\u540d\u5b57\u878d\u5165\u56fe\u6848"}),(0,g.jsx)(l.Ss,{className:"progress-bar",children:(0,g.jsx)(l.Ss,{className:"progress-fill",style:{width:"".concat(Math.min(O,100),"%")}})}),(0,g.jsxs)(l.EY,{className:"progress-text",children:[Math.min(Math.round(O),100),"%"]})]}):(0,g.jsxs)(l.Ss,{className:"result-panel",children:[(0,g.jsxs)(l.Ss,{className:"result-image-wrapper surface-card",children:[(0,g.jsx)(l._V,{className:"result-image",src:F||"",mode:"aspectFit"}),(0,g.jsx)(l.Ss,{className:"watermark-badge",children:(0,g.jsx)(l.EY,{children:"\u667a\u7ed8\u5fae\u523b\u9884\u89c8"})})]}),(0,g.jsxs)(l.Ss,{className:"result-actions",children:[(0,g.jsxs)(l.Ss,{className:"action-btn",onTap:K,children:[(0,g.jsx)(l._V,{className:"action-icon",src:(0,j.uq)("/icon/\u8bbe\u7f6e.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"action-label",children:"\u4fdd\u5b58\u56fe\u7247"})]}),(0,g.jsxs)(l.Ss,{className:"action-btn",onTap:D,children:[(0,g.jsx)(l._V,{className:"action-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"action-label",children:"\u91cd\u65b0\u751f\u6210"})]}),(0,g.jsxs)(l.Ss,{className:"action-btn",onTap:function(){return f(2)},children:[(0,g.jsx)(l._V,{className:"action-icon",src:(0,j.uq)("/icon/\u8c03\u8272\u76d8.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"action-label",children:"\u4fee\u6539\u540d\u5355"})]})]})]})})]})]})}var f={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u8bcd\u4e91\u751f\u6210"};Page((0,n.createPageConfig)(S,"pages/wordcloud/index",{root:{cn:[]}},f||{}))}},function(s){var e=function(e){return s(s.s=e)};s.O(0,[907,96,76],function(){return e(5849)});s.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[18],{5849:function(s,e,a){var n=a(7842),c=a(1212),t=a(467),r=a(5544),l=a(118),i=a(758),o=a.n(i),u=a(6540),m=a(9703),d=a(9201),h=a(5414),p=a(9674),x=a(3053),j=a(8199),N=a(6845),g=a(4848);function S(){var s=(0,m.wR)(),e=(s.theme,s.resolvedTheme),a=(0,d.c)();(0,h.l)(e);var n=(0,u.useState)(1),i=(0,r.A)(n,2),S=i[0],f=i[1],b=(0,u.useState)(""),v=(0,r.A)(b,2),E=v[0],w=v[1],Y=(0,u.useState)(""),T=(0,r.A)(Y,2),A=T[0],k=T[1],y=(0,u.useState)(""),I=(0,r.A)(y,2),F=I[0],V=I[1],_=(0,u.useState)(!1),P=(0,r.A)(_,2),q=P[0],M=P[1],B=(0,u.useState)(0),J=(0,r.A)(B,2),O=J[0],z=J[1],C=(0,u.useState)(""),H=(0,r.A)(C,2),L=H[0],R=H[1],U=[{num:1,label:"\u4e0a\u4f20\u5e95\u56fe"},{num:2,label:"\u8f93\u5165\u540d\u5355"},{num:3,label:"\u751f\u6210\u9884\u89c8"}],Z=function(){o().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(s){w(s.tempFilePaths[0]),f(2)}})},D=function(){var s=(0,t.A)((0,c.A)().m(function s(){var e,a,n;return(0,c.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(A.trim()){s.n=1;break}return o().showToast({title:"\u8bf7\u5148\u8f93\u5165\u540d\u5b57",icon:"none"}),s.a(2);case 1:if(E){s.n=2;break}return o().showToast({title:"\u8bf7\u5148\u4e0a\u4f20\u5e95\u56fe",icon:"none"}),s.a(2);case 2:return f(3),M(!0),z(0),R(""),s.p=3,s.n=4,(0,N.l8)(E,A.trim());case 4:return e=s.v,a=e.jobId,s.n=5,G(a);case 5:s.n=7;break;case 6:s.p=6,n=s.v,M(!1),R(n instanceof Error?n.message:"\u751f\u6210\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5");case 7:return s.a(2)}},s,null,[[3,6]])}));return function(){return s.apply(this,arguments)}}(),G=function(s){return new Promise(function(e,a){var n=0,r=setInterval((0,t.A)((0,c.A)().m(function t(){var l;return(0,c.A)().w(function(c){while(1)switch(c.p=c.n){case 0:return c.p=0,c.n=1,(0,N.xZ)(s);case 1:l=c.v,z(Math.min(l.progress,100)),"success"===l.status?(clearInterval(r),M(!1),V(l.imageUrl||E),e()):"failed"===l.status&&(clearInterval(r),M(!1),R(l.error||"\u8bcd\u4e91\u751f\u6210\u5931\u8d25"),a(new Error(l.error||"\u8bcd\u4e91\u751f\u6210\u5931\u8d25"))),c.n=3;break;case 2:c.p=2,c.v,n+=1,n>5&&(clearInterval(r),M(!1),a(new Error("\u4efb\u52a1\u72b6\u6001\u83b7\u53d6\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5")));case 3:return c.a(2)}},t,null,[[0,2]])})),1500)})},K=function(){F&&o().saveImageToPhotosAlbum({filePath:F,success:function(){return o().showToast({title:"\u5df2\u4fdd\u5b58\u5230\u76f8\u518c",icon:"success"})},fail:function(){return o().showToast({title:"\u4fdd\u5b58\u5931\u8d25",icon:"none"})}})},Q=function(){S>1?f(S-1):o().navigateBack()};return(0,g.jsxs)(l.Ss,{className:"theme-".concat(e),children:[(0,g.jsx)(p.A,{}),(0,g.jsx)(x.A,{title:"AI\u8bcd\u4e91\u751f\u6210",targetSelector:".page-header.cloud-header",showBack:!0}),(0,g.jsxs)(l.Ss,{className:"wordcloud-page",children:[(0,g.jsxs)(l.Ss,{className:"page-header cloud-header",style:{paddingTop:"".concat(a.statusBarHeight+12,"px")},children:[(0,g.jsx)(l.Ss,{className:"back-btn",onTap:Q,children:(0,g.jsx)(l.EY,{className:"back-arrow",children:"\u2190"})}),(0,g.jsx)(l.EY,{className:"page-title",children:"AI\u8bcd\u4e91\u751f\u6210"}),(0,g.jsx)(l.Ss,{className:"header-spacer"})]}),(0,g.jsx)(l.Ss,{className:"step-indicator surface-card",children:U.map(function(s,e){return(0,g.jsxs)(l.Ss,{className:"step-item",children:[(0,g.jsx)(l.Ss,{className:"step-circle ".concat(S>=s.num?"active":""),children:(0,g.jsx)(l.EY,{className:"step-num",children:s.num})}),(0,g.jsx)(l.EY,{className:"step-label ".concat(S>=s.num?"active":""),children:s.label}),es.num?"active":"")})]},s.num)})}),1===S&&(0,g.jsxs)(l.Ss,{className:"step-content",children:[(0,g.jsx)(l.Ss,{className:"upload-area surface-card",onTap:Z,children:E?(0,g.jsx)(l._V,{className:"preview-image",src:E,mode:"aspectFit"}):(0,g.jsxs)(l.Ss,{className:"upload-placeholder",children:[(0,g.jsx)(l._V,{className:"upload-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"upload-title",children:"\u70b9\u51fb\u4e0a\u4f20\u5e95\u56fe"}),(0,g.jsx)(l.EY,{className:"upload-desc",children:"\u652f\u6301\u7167\u7247\u3001Logo\u3001\u56fe\u6848\u7b49"}),(0,g.jsx)(l.EY,{className:"upload-tip",children:"\u7cfb\u7edf\u5c06\u7528\u540d\u5b57\u586b\u5145\u5230\u6df1\u8272\u533a\u57df"})]})}),E&&(0,g.jsxs)(l.Ss,{className:"action-btns",children:[(0,g.jsx)(l.Ss,{className:"btn-primary",onTap:function(){return f(2)},children:(0,g.jsx)(l.EY,{children:"\u4e0b\u4e00\u6b65\uff1a\u8f93\u5165\u540d\u5355"})}),(0,g.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return w("")},children:(0,g.jsx)(l.EY,{children:"\u91cd\u65b0\u9009\u62e9"})})]})]}),2===S&&(0,g.jsxs)(l.Ss,{className:"step-content",children:[(0,g.jsxs)(l.Ss,{className:"input-section surface-card",children:[(0,g.jsx)(l.EY,{className:"section-title",children:"\u8f93\u5165\u540d\u5b57\u540d\u5355"}),(0,g.jsx)(l.TM,{className:"names-input",placeholder:"\u4f8b\u5982\uff1a\n\u5f20\u4e09\n\u674e\u56db\n\u738b\u4e94",value:A,onInput:function(s){return k(s.detail.value)},maxlength:5e3}),(0,g.jsxs)(l.EY,{className:"input-stats",children:["\u5df2\u8f93\u5165 ",A.split(/\n|\uff0c|,/).filter(function(s){return s.trim()}).length," \u4e2a\u540d\u5b57"]}),(0,g.jsxs)(l.Ss,{className:"input-tips",children:[(0,g.jsx)(l.EY,{className:"tip-item",children:"\u540d\u5b57\u4f1a\u968f\u673a\u5206\u5e03\u5728\u5e95\u56fe\u7684\u6df1\u8272\u533a\u57df"}),(0,g.jsx)(l.EY,{className:"tip-item",children:"\u5efa\u8bae\u8f93\u516510-200\u4e2a\u540d\u5b57\u6548\u679c\u6700\u4f73"})]})]}),(0,g.jsxs)(l.Ss,{className:"action-btns",children:[(0,g.jsx)(l.Ss,{className:"btn-primary",onTap:D,children:(0,g.jsx)(l.EY,{children:"\u5f00\u59cb\u751f\u6210\u8bcd\u4e91"})}),(0,g.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return f(1)},children:(0,g.jsx)(l.EY,{children:"\u4e0a\u4e00\u6b65"})})]})]}),3===S&&(0,g.jsx)(l.Ss,{className:"step-content",children:L?(0,g.jsxs)(l.Ss,{className:"generating-panel",children:[(0,g.jsx)(l._V,{className:"generating-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"generating-title",children:"\u751f\u6210\u5931\u8d25"}),(0,g.jsx)(l.EY,{className:"generating-subtitle",children:L}),(0,g.jsx)(l.Ss,{className:"action-btns",children:(0,g.jsx)(l.Ss,{className:"btn-primary",onTap:function(){R(""),f(2)},children:(0,g.jsx)(l.EY,{children:"\u8fd4\u56de\u4fee\u6539\u540d\u5355"})})})]}):q?(0,g.jsxs)(l.Ss,{className:"generating-panel",children:[(0,g.jsx)(l._V,{className:"generating-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"generating-title",children:"\u6b63\u5728\u751f\u6210\u8bcd\u4e91..."}),(0,g.jsx)(l.EY,{className:"generating-subtitle",children:"AI\u6b63\u5728\u5c06\u540d\u5b57\u878d\u5165\u56fe\u6848"}),(0,g.jsx)(l.Ss,{className:"progress-bar",children:(0,g.jsx)(l.Ss,{className:"progress-fill",style:{width:"".concat(Math.min(O,100),"%")}})}),(0,g.jsxs)(l.EY,{className:"progress-text",children:[Math.min(Math.round(O),100),"%"]})]}):(0,g.jsxs)(l.Ss,{className:"result-panel",children:[(0,g.jsxs)(l.Ss,{className:"result-image-wrapper surface-card",children:[(0,g.jsx)(l._V,{className:"result-image",src:F||"",mode:"aspectFit"}),(0,g.jsx)(l.Ss,{className:"watermark-badge",children:(0,g.jsx)(l.EY,{children:"\u667a\u7ed8\u5fae\u523b\u9884\u89c8"})})]}),(0,g.jsxs)(l.Ss,{className:"result-actions",children:[(0,g.jsxs)(l.Ss,{className:"action-btn",onTap:K,children:[(0,g.jsx)(l._V,{className:"action-icon",src:(0,j.uq)("/icon/\u8bbe\u7f6e.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"action-label",children:"\u4fdd\u5b58\u56fe\u7247"})]}),(0,g.jsxs)(l.Ss,{className:"action-btn",onTap:D,children:[(0,g.jsx)(l._V,{className:"action-icon",src:(0,j.uq)("/icon/\u8bcd\u4e91\u751f\u6210.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"action-label",children:"\u91cd\u65b0\u751f\u6210"})]}),(0,g.jsxs)(l.Ss,{className:"action-btn",onTap:function(){return f(2)},children:[(0,g.jsx)(l._V,{className:"action-icon",src:(0,j.uq)("/icon/\u8c03\u8272\u76d8.png"),mode:"aspectFit"}),(0,g.jsx)(l.EY,{className:"action-label",children:"\u4fee\u6539\u540d\u5355"})]})]})]})})]})]})}var f={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u8bcd\u4e91\u751f\u6210"};Page((0,n.createPageConfig)(S,"pages/wordcloud/index",{root:{cn:[]}},f||{}))}},function(s){var e=function(e){return s(s.s=e)};s.O(0,[907,96,76],function(){return e(5849)});s.O()}]); \ No newline at end of file diff --git a/docs/r2-workflow.md b/docs/r2-workflow.md new file mode 100644 index 0000000..aebd2bf --- /dev/null +++ b/docs/r2-workflow.md @@ -0,0 +1,203 @@ +# R2 地址 + 设计清单上链路工作流程 + +> 对应路线文档:`docs/routes/route-r2-address-design.md` +> 契约文档:后端 `wxmp_backend/docs/api-contract-v1.md` §4/§5、前端 `docs/design-data-contract-v1.md` +> 分支:前端 `wechat_wc` / 后端 `wxmp_backend` 均为 `feat/r2-address-design` + +--- + +## 一、这条链路在做什么 + +把「收货地址」和「设计清单」两组数据从**小程序本地 Storage**(openid 隔离的离线数据) +迁到**后端 PostgreSQL**(真实账号数据)。做完之后: + +- 换手机、清缓存、卸载重装,地址和设计清单不丢; +- 多端(未来 web/管理后台)能看到同一份数据; +- R3 的下单闭环能直接消费服务端的地址 id 和设计清单 id(下单接口要传 `addressId`、`designListId`); +- R4 的 WCD 生产打包能从服务端读到完整的 `designData` JSON。 + +一句话:这是把"玩具数据"换成"账本数据"的一步,R3 整条交易链路都压在它上面。 + +--- + +### 阶段 0:契约确认 ✅(2026-09-11 已确认,零契约改动) + +以下结论为 R2 实现的唯一依据,实现阶段不再讨论: + +1. **清单映射:一条前端 DesignItem = 一条后端 DesignList 记录**,`items` 数组固定 1 个元素。 + 依据:状态枚举是清单级实体字段(逐条映射的前提)、批量删除是 `{ids: string[]}`、 + `DesignList.orders` 逐条关联、R4 `wordcloud.service.ts` 已按 `items[0]` 消费。 + POST /api/design-list 请求体 `{ title, items: [单个条目] }`。 +2. **designData.category 裁剪为 `{ id, mask, tone? }`**:DIY 保存时只取这三个字段提交 + (当前 `diy/index.tsx` 提交完整 ProductCategory,需改为裁剪),其余展示字段由客户端 + 按 productId 从 productConfig 推导。与冻结契约 §2 一致,后端白名单不放宽。 +3. **productIcon 不入契约**:服务端不存图标,设计清单页继续用现有 + `PRODUCT_ICON_MAP[productId]` 兜底推导(`designList/index.tsx:168` 逻辑已存在)。 +4. **title 前端传 productName**:后端 `title` 保持必填不动,创建时填商品名。 +5. **GET 两个列表接口不分页**:返回纯数组(地址、清单均为小数据量)。 +6. **状态迁移触发点**:创建默认 `DRAFT`(product 加入清单);DIY 保存设计 → `SUBMITTED`; + `PROCESSING`/`DONE` 由 R3 订单流程驱动,前端不提交;`ordered` 由 `orderId != null` 派生, + 前端只读。状态机单向推进,禁止回退。 +7. **其他默认**:批量删除用单接口 `POST /api/design-list/batch-delete`; + `productId` R2 不做存在性校验(R1 商品表可能未 seed);手机号只做非空字符串校验; + 越权 403 / 不存在 404(契约既定)。 + +## 二、工作流程(按顺序) + +### 原阶段 0 任务清单(存档) + +1. 通读后端 `docs/api-contract-v1.md` §4(地址)、§5(设计清单)。 +2. 确认状态映射表已定死(不再讨论): + + | 前端显示 | 前端状态码 | 后端 DesignListStatus | + |---|---|---| + | 待设计 | `undesigned` | `DRAFT` | + | 设计中 | `designing` | `SUBMITTED` | + | 生产中 | `processing` | `PROCESSING` | + | 已下单 | `ordered`(派生) | `DONE` | + + `ordered` **不落库**,由 `orderId != null` 派生;前端不提交这个状态。 +3. 确认 Prisma `Address` / `DesignList` 模型字段与契约一致,缺字段先出迁移。 + +### 阶段 1:后端补齐 CRUD(先做,前端等它) + +改动范围:`src/addresses/`、`src/design-list/`,两个模块均已注册,骨架已存在。 + +**addresses(当前只有 GET/POST/PATCH :id/default,且 service 全是 TODO):** + +1. `PATCH /api/addresses/:id` —— 缺失,新增。 +2. `DELETE /api/addresses/:id` —— 缺失,新增;若删的是默认地址,事务内把最新一条设为默认。 +3. `POST` / `PATCH :id` / `PATCH :id/default` 的**默认地址唯一性事务**: + `prisma.$transaction` 内先 `updateMany` 清掉该用户所有 `isDefault`,再设新默认。 +4. `setDefault` 补 userId 归属校验(现在谁都能改任何人的地址,这是越权洞)。 +5. 所有按 id 的路由统一:非本人 → 403,不存在 → 404。 + +**design-list(当前只有 GET/GET :id/POST):** + +1. `PATCH /api/design-list/:id` —— 更新 `title`/`items`/状态迁移(状态机后端校验, + 只允许 `DRAFT → SUBMITTED → PROCESSING → DONE` 单向推进)。 +2. `DELETE /api/design-list/:id` + `POST /api/design-list/batch-delete`(body `{ ids: string[] }`, + 一次事务删,返回实际删除数——不要让前端循环单删)。 +3. `items` JSON 白名单校验:放行 `version/background/wordcloud/rotation/zIndex`, + **原样透传不修改**(`wordcloud` 分组是 R4 写入的,丢了 WCD 打包就失败); + 单条 designData ≤ 1MB,超限 400。 +4. `findOne` 补归属校验(当前 TODO)。 +5. Swagger 补全以上全部接口。 + +### 阶段 2:前端 API 层(页面不动) + +1. `src/utils/api/address.ts`(现为空占位):实现 + `fetchAddresses / createAddress / updateAddress / deleteAddress / setDefaultAddress`。 + **唯一一处**做 `region: [province, city, district]` ↔ `province/city/district` 双向转换, + 页面和 store 不允许出现第二次转换。 +2. `src/utils/api/design.ts`:实现 + `fetchDesignList / createDesign / updateDesign / deleteDesign(s)`, + 做后端 `DRAFT/SUBMITTED/...` ↔ 前端 `undesigned/designing/...` 的状态码映射。 +3. `src/types/index.ts`:`AddressItem` 增加服务端字段(服务端 id、`createdAt` 等); + `DesignItem.status` 补 `'processing'`、`DesignItem.orderId` 派生 `ordered` 展示。 + +### 阶段 3:切换页面(两个页面 + 三个写入点) + +| 文件 | 改动 | +|---|---| +| `pages/address/index.tsx` | 增删改查、设默认全部走 API;401 由 request 层统一抛出并引导登录;API 失败降级读本地缓存并提示 | +| `pages/designList/index.tsx` | 列表/筛选/批量删除走 API;状态筛选基于服务端返回的 `status` 计算,消灭魔法字符串 | +| `pages/product/index.tsx`(加入清单) | `addDesign` 写 API(需登录),失败降级本地 | +| `pages/diy/index.tsx`(保存 designData) | `updateDesign` 走 API;`designData.category` 裁剪为 `{id, mask, tone}`(决策#2);贴纸本地图路径允许暂存(R4 派单前才持久化,契约约束 #1) | +| `pages/diy/stickerEdit/index.tsx` | 同上,保存贴纸改动走 API | + +### 阶段 4:本地 store 降级改造 + +`utils/store/address.ts`、`design.ts` 保留,但语义变为"离线兜底缓存": + +- API 成功 → 把服务端数据写回本地缓存(下次冷启动先展示缓存再刷新); +- API 失败/断网 → 页面读缓存并可正常浏览,写操作提示失败; +- 登录后首次进入:只读服务端,**不自动合并**本地旧数据(`smart_design_list_` + 与服务端并存的问题按路线文档风险节处理:忽略或提供一次性导入,默认忽略)。 + +### 阶段 5:联调与验收 + +按路线文档验收标准逐条过: + +- 登录态下地址/清单全流程走真实后端; +- 越权访问返回 403、不存在返回 404(用两个账号互测); +- 默认地址永远唯一;删默认地址后自动产生新默认; +- 断网降级提示、401 引导登录; +- 前端 `npm run build:weapp` 通过、后端 `nest build` 通过; +- Swagger 涵盖全部接口;状态映射落进契约文档。 + +--- + +## 三、需要注意的部分(坑位清单) + +### 后端 + +1. **越权是本分支最大风险**。每个按 id 操作的 service 必须带 `where: { id, userId }`, + 查不到时区分 404/403:先查存在性再查归属,或统一 404(避免枚举他人资源 id 时, + 推荐统一 404,路线文档要求两者区分则按 403 处理——按契约文档走)。 +2. **默认地址唯一性只能由后端事务保证**。前端传 `isDefault: true` 只是一个"请求", + 不是规则;不要在 controller 之外有任何直接 update `isDefault` 的路径。 +3. **删除默认地址的补偿**必须和删除在同一个事务里,否则会出现"全员无默认"的中间态。 +4. **items JSON 是白名单透传,不是深校验**。后端只验结构和大小,不改内容; + 特别是 PATCH 时要做**合并语义**确认:不传 `designData` 不得清掉已有值 + (否则 R4 写入的 `wordcloud` 会被一次普通数量修改冲掉)。 +5. **状态机校验**:拒绝 `DONE → DRAFT` 这类回退;`ordered` 不接受前端提交。 +6. **批量删除**要么后端一个接口,要么明确部分失败语义——不要默认前端循环单删。 + +### 前端 + +1. **region 转换只写在 `api/address.ts` 一处**。散落到页面就会出现两套转换, + 后续排查字段错位会花双倍时间。 +2. **不要改 `checkout/index.tsx`**(红线:checkout 归 R3)。R2 只保证接口稳定, + checkout 里对本地 store 的读取暂不动,R3 接入时一并切换。 +3. **不要把 `wxfile://` 临时路径当脏数据清洗掉**。DIY 保存时贴纸 src 暂为本地路径是 + 契约允许的(R4 在下单/派单前才持久化),后端白名单放行即可。 +4. **`DesignItem.status` 增加 `processing` 后**,`designList` 页的 `STATUS_STYLE`、 + 筛选 tabs 要同步扩展,漏了会出现"生产中"条目渲染不出徽标。 +5. **401 处理已有全局机制**(`request.ts` 自动续登 + `onUnauthorized`), + 页面里不要自己再写跳登录逻辑,重复处理会出现双弹窗。 +6. **旧本地数据不迁移**。首次切换后以服务端为准,本地旧清单直接忽略; + 提前和需求方确认这一点(用户可能反馈"我的设计没了"——是预期行为,需要文案兜底)。 + +### 跨路线影响 + +| 受影响方 | 影响 | 需要做的 | +|---|---|---| +| **R3 订单** | 下单接口依赖服务端 `addressId` / `designListId` | R2 保证 id 稳定、可查询;R3 接入时 checkout 改传服务端 id | +| **R4 词云/派单** | `designData` 结构和保留字段 | R2 PATCH 不得丢 `wordcloud` / `category.mask` / 贴纸本地路径 | +| **profile / settings / orderDetail 页** | 现在从本地 store 读地址和清单数 | R2 期间 API 成功会回写本地缓存,这些页面**暂不改也能读到底数据**(读的是缓存);R3/R4 后续各自切换 | +| **userDatabase 账号管理** | 靠 `getDesignListFor(openid)` 跨账号读本地清单 | 服务端化后该功能语义变化(读不到别人云端数据),属于已知降级,无需处理 | + +--- + +## 四、影响面(改动文件总览) + +**后端 `wxmp_backend`(分支 feat/r2-address-design):** + +- `src/addresses/*`:补 PATCH :id、DELETE :id、默认事务、归属校验、DTO、Swagger +- `src/design-list/*`:补 PATCH/DELETE/批量删除、items 白名单与 1MB 校验、状态机、归属校验 +- `prisma/`:仅当模型字段与契约不一致时才出迁移(预计不需要) +- `docs/api-contract-v1.md`:落地状态映射表与错误码(如尚未完整落地) + +**前端 `wechat_wc`(分支 feat/r2-address-design):** + +- `src/utils/api/address.ts`、`design.ts`:从空占位到完整实现(核心新增) +- `src/types/index.ts`:AddressItem/DesignItem 对齐服务端结构 +- `src/pages/address/index.tsx`、`designList/index.tsx`:数据源切 API +- `src/pages/product/index.tsx`、`diy/index.tsx`、`diy/stickerEdit/index.tsx`:写入点切 API +- `src/utils/store/address.ts`、`design.ts`:降级为缓存层,接口签名尽量不变以减少页面改动 + +**明确不动:** `checkout/index.tsx`、`orders`/`orderDetail` 页、`utils/store/order.ts`(R3 所有)。 + +--- + +## 五、里程碑建议 + +| 步骤 | 产出 | 验证 | +|---|---|---| +| 1 | 后端 addresses 完整 CRUD + 事务 | Swagger 手测 + 双账号越权测试 | +| 2 | 后端 design-list 完整 CRUD + 校验 | 同上 + 超 1MB JSON 拒绝测试 | +| 3 | 前端 API 层 + 类型对齐 | `build:weapp` 通过 | +| 4 | 两个页面 + 三个写入点切换 | 真机全流程 | +| 5 | store 降级缓存 + 断网/401 场景 | 关服务端模拟断网 | +| 6 | 契约文档收口 + 双端构建 | 验收标准逐条打勾 | diff --git a/src/types/index.ts b/src/types/index.ts index 0cbc557..eefbce1 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -142,17 +142,23 @@ export interface WordCloudDispatchResult { message?: string } -/** 设计清单条目 */ +/** 设计清单条目(与后端 DesignList 一一对应,api-contract-v1 §5) */ export interface DesignItem { id: string productId: string productName: string - productIcon: string + /** + * 条目图标。服务端不存储(契约 forbidNonWhitelisted 拒绝多余字段), + * 页面按 PRODUCT_ICON_MAP[productId] 兜底推导;仅本地缓存/旧数据可能携带 + */ + productIcon?: string unitPrice: number count: number - status: 'undesigned' | 'designing' | 'ordered' + /** undesigned/designing 由前端驱动;processing/ordered 由服务端状态映射产生(R3 驱动) */ + status: 'undesigned' | 'designing' | 'processing' | 'ordered' designData?: DesignDataV1 orderId?: string + /** 服务端 createdAt(ISO),展示时取日期部分 */ createdAt: string } @@ -168,7 +174,7 @@ export interface OrderItem { sku: string } -/** 收货地址 */ +/** 收货地址(后端 province/city/district/detail 以 region 数组表达,转换只在 api/address.ts) */ export interface AddressItem { id: string name: string @@ -176,6 +182,8 @@ export interface AddressItem { region: string[] // [province, city, district] detail: string // 门牌号/详细地址 isDefault: boolean + /** 服务端创建时间(ISO 8601),本地缓存数据可能没有 */ + createdAt?: string } /** 编辑器中的图片状态(向后兼容) */ diff --git a/src/utils/api/address.ts b/src/utils/api/address.ts index bbafe6a..f1d3fcd 100644 --- a/src/utils/api/address.ts +++ b/src/utils/api/address.ts @@ -1,7 +1,93 @@ /** - * R2 收货地址接口归属文件。 - * 后端 /api/addresses CRUD 就绪后,在这里补充: - * fetchAddresses / createAddress / updateAddress / deleteAddress / setDefaultAddress - * 返回类型优先直接对应 src/types/index.ts 的 AddressItem 契约。 + * R2 收货地址接口(api-contract-v1 §4)。 + * + * 唯一负责 region: [province, city, district] ↔ 后端 province/city/district + * 双向转换的文件;页面与 store 不得出现第二次转换(route-r2 §3)。 */ -export {} +import http from '../request' +import type { AddressItem } from '../../types' + +/** 后端 Address 结构(契约 §4:四个独立地址字段) */ +interface ServerAddress { + id: string + name: string + phone: string + province: string + city: string + district: string + detail: string + isDefault: boolean + createdAt?: string + updatedAt?: string +} + +/** ServerAddress → 前端 AddressItem(合并省市区为 region 数组) */ +function toAddressItem(rec: ServerAddress): AddressItem { + return { + id: rec.id, + name: rec.name, + phone: rec.phone, + region: [rec.province, rec.city, rec.district], + detail: rec.detail, + isDefault: rec.isDefault, + createdAt: rec.createdAt, + } +} + +/** 前端 region 数组 → 后端四个独立字段 */ +function toServerFields(addr: { + name?: string + phone?: string + region?: string[] + detail?: string + isDefault?: boolean +}): Record { + // 后端 ValidationPipe forbidNonWhitelisted:undefined 字段会被 JSON 序列化丢弃, + // 这里显式展开保证只传后端声明的字段 + const body: Record = {} + if (addr.name !== undefined) body.name = addr.name + if (addr.phone !== undefined) body.phone = addr.phone + if (addr.region !== undefined) { + const [province = '', city = '', district = ''] = addr.region + body.province = province + body.city = city + body.district = district + } + if (addr.detail !== undefined) body.detail = addr.detail + if (addr.isDefault !== undefined) body.isDefault = addr.isDefault + return body +} + +/** 我的收货地址列表(默认地址在前) */ +export async function fetchAddresses(): Promise { + const list = await http.get('/api/addresses') + return (list || []).map(toAddressItem) +} + +/** 新增收货地址(首个地址后端自动设为默认) */ +export async function createAddress( + addr: Omit, +): Promise { + const rec = await http.post('/api/addresses', toServerFields(addr)) + return toAddressItem(rec) +} + +/** 更新本人地址(只传显式给出的字段;isDefault=true 由后端事务保证唯一默认) */ +export async function updateAddress( + id: string, + patch: Partial>, +): Promise { + const rec = await http.patch(`/api/addresses/${id}`, toServerFields(patch)) + return toAddressItem(rec) +} + +/** 删除本人地址(若删的是默认地址,后端自动补偿最新一条为默认) */ +export async function deleteAddress(id: string): Promise { + await http.del(`/api/addresses/${id}`) +} + +/** 设为默认地址 */ +export async function setDefaultAddress(id: string): Promise { + const rec = await http.patch(`/api/addresses/${id}/default`) + return toAddressItem(rec) +} diff --git a/src/utils/api/design.ts b/src/utils/api/design.ts index c8b10da..2b01bf0 100644 --- a/src/utils/api/design.ts +++ b/src/utils/api/design.ts @@ -1,7 +1,119 @@ /** - * R2 设计清单接口归属文件。 - * 后端 /api/design-list CRUD 就绪后,在这里补充: - * fetchDesignList / createDesign / updateDesign / deleteDesign - * 设计数据(贴纸、掩膜、分类信息)以 JSON 方式随 items/designData 提交。 + * R2 设计清单接口(api-contract-v1 §5)。 + * + * 映射约定(阶段0 决策,见 docs/r2-workflow.md): + * - 一条前端 DesignItem = 一条后端 DesignList 记录,items 固定 1 个元素; + * - title 由 productName 承担(后端必填); + * - productIcon 不入库(后端 forbidNonWhitelisted 会拒绝),页面按 productId 兜底推导; + * - 状态映射:DRAFT↔undesigned、SUBMITTED↔designing、PROCESSING↔processing、DONE↔ordered; + * - 前端只允许提交 designing(→SUBMITTED),PROCESSING/DONE 由 R3 驱动。 */ -export {} +import http from '../request' +import type { DesignDataV1, DesignItem } from '../../types' + +/** 后端 DesignListStatus → 前端状态码(契约 §5 映射表) */ +const SERVER_STATUS_MAP: Record = { + DRAFT: 'undesigned', + SUBMITTED: 'designing', + PROCESSING: 'processing', + DONE: 'ordered', +} + +/** 清单条目(后端 items[] 固定 1 个元素,契约 §5) */ +export interface DesignListEntryPayload { + productId: string + productName: string + unitPrice: number + count: number + designData?: DesignDataV1 +} + +/** 后端 DesignList 记录结构 */ +interface ServerDesignList { + id: string + userId?: string + title: string + items: (Partial & Record)[] + status: string + createdAt: string + updatedAt?: string +} + +/** ServerDesignList → 前端 DesignItem */ +function toDesignItem(rec: ServerDesignList): DesignItem { + const entry = rec.items && rec.items[0] + return { + id: rec.id, + productId: entry?.productId ?? '', + productName: entry?.productName || rec.title, + // productIcon 有意不返回:服务端不存储,页面按 PRODUCT_ICON_MAP[productId] 兜底 + unitPrice: entry?.unitPrice ?? 0, + count: entry?.count ?? 1, + status: SERVER_STATUS_MAP[rec.status] ?? 'undesigned', + designData: entry?.designData, + createdAt: (rec.createdAt || '').slice(0, 10), + } +} + +/** 我的设计清单(createdAt 倒序) */ +export async function fetchDesignList(): Promise { + const list = await http.get('/api/design-list') + return (list || []).map(toDesignItem) +} + +/** 创建清单(一条设计一条清单;后端初始状态 DRAFT/undesigned) */ +export async function createDesign(entry: DesignListEntryPayload): Promise { + const rec = await http.post('/api/design-list', { + title: entry.productName, + items: [ + { + productId: entry.productId, + productName: entry.productName, + unitPrice: entry.unitPrice, + count: entry.count, + ...(entry.designData !== undefined ? { designData: entry.designData } : {}), + }, + ], + }) + return toDesignItem(rec) +} + +export interface UpdateDesignPayload { + /** 新标题(前端一般不传) */ + title?: string + /** 状态迁移:前端只允许 designing(→SUBMITTED,DIY 保存设计时) */ + status?: 'designing' + /** 条目整体替换(items 是全量覆盖,修改 designData 时必须带全 4 个基本字段) */ + item?: DesignListEntryPayload +} + +/** 更新本人清单(部分更新:只传显式给出的字段) */ +export async function updateDesign(id: string, payload: UpdateDesignPayload): Promise { + const body: Record = {} + if (payload.title !== undefined) body.title = payload.title + if (payload.status !== undefined) body.status = 'SUBMITTED' + if (payload.item !== undefined) { + body.items = [ + { + productId: payload.item.productId, + productName: payload.item.productName, + unitPrice: payload.item.unitPrice, + count: payload.item.count, + ...(payload.item.designData !== undefined ? { designData: payload.item.designData } : {}), + }, + ] + } + const rec = await http.patch(`/api/design-list/${id}`, body) + return toDesignItem(rec) +} + +/** 删除本人清单 */ +export async function deleteDesign(id: string): Promise { + await http.del(`/api/design-list/${id}`) +} + +/** 批量删除(后端只删本人条目,返回实际删除数;部分 id 无效不报错) */ +export async function deleteDesigns(ids: string[]): Promise { + const res = await http.post<{ deleted: number }>('/api/design-list/batch-delete', { ids }) + return res?.deleted ?? 0 +} From fa434f765f2207d6ec626af1641701f1c8ae7990 Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 03:33:53 +0800 Subject: [PATCH 02/15] =?UTF-8?q?docs(r2):=20=E5=86=99=E5=85=A5=20WCD=20?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E7=A1=AC=E6=80=A7=E8=A7=84=E5=AE=9A=E5=B9=B6?= =?UTF-8?q?=E5=9C=A8=E9=98=B6=E6=AE=B53/4=20=E6=8F=92=E5=85=A5=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E6=B3=A8=E6=84=8F=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 依据 design-data-contract-v1.md 冻结版:designData 顶层 7 键白名单、 category.mask 必须保留、rotation/zIndex 本期持久化、贴纸 wxfile:// 允许暂存、 wordcloud 分组不得被 items 全量替换冲掉;阶段3 三个写入点与阶段4 缓存回写 各自插入红线提醒。 Co-Authored-By: Claude --- docs/r2-workflow.md | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/docs/r2-workflow.md b/docs/r2-workflow.md index aebd2bf..584e045 100644 --- a/docs/r2-workflow.md +++ b/docs/r2-workflow.md @@ -42,6 +42,36 @@ `productId` R2 不做存在性校验(R1 商品表可能未 seed);手机号只做非空字符串校验; 越权 403 / 不存在 404(契约既定)。 +### WCD 格式硬性规定(R2 全程适用,依据 `docs/design-data-contract-v1.md` 冻结版 2026-08-12) + +> R2 是 `designData` 的**生产者**;R4 下单后把它打成 `.wcd` 包(Zip:`manifest.json` + +> `document.json` + `assets/`)投递给词云平台还原整套画布。还原依赖三样东西全部在 +> designData 里:① 画布尺寸 ← `category.mask`;② 贴纸布局 ← `stickers[]` +> (x/y/scale/width/height/rotation/zIndex);③ 贴纸图片字节 ← 每个贴纸的**持久 URL**。 +> R2 保存的每一份 designData 都要为这三样负责,否则 R4 打包直接失败或画布走样。 + +**结构规定(后端白名单已按此实现):** + +1. designData 顶层只允许 **7 个键**:`version` / `category` / `background` / `wordcloud` / + `stickers` / `imageSrc` / `imagePos`(后两个为旧版兼容)。多余顶层键 → 后端 400 + (forbidNonWhitelisted + service 白名单双重拦截)。 +2. `category` 只提交 `{ id, mask, tone? }`(阶段0 决策#2)。`mask` 是 WCD 画布尺寸来源, + **禁止裁掉**——缺 mask 的数据 WCD 只能按产品默认尺寸兜底,画布会走样(契约约束#3)。 +3. `stickers[]` 内字段后端不深校验、原样透传。其中 `rotation` / `zIndex` 本期必须随 DIY + 保存持久化(契约决策#2 冻结,WCD 按 zIndex 排图层,约束#4;前端类型已具备); + `edits`(brightness/hue/contrast/sketchSrc)同样透传,虽然本期不进 WCD document.json。 +4. 贴纸 `src` 允许暂存 `wxfile://` / `tmp` 本地路径——契约约束#1 明确允许 + (R4 在下单/派单前上传 COS 并回写 src)。**R2 任何环节禁止把它当脏数据清洗掉**。 +5. `wordcloud` 分组由 R4 词云生成后写入,R2 任何写入路径**不得丢弃**(约束#2): + 后端 PATCH 已做部分更新语义(不传 items 不清 designData);但前端 `updateDesign` + 是 items 全量替换——页面必须基于服务端最新 designData 合并改动后再整包提交。 +6. 状态机不受本契约影响:`ordered` 仍由 `orderId != null` 派生,前端只读(约束#6)。 + +**边界(本期不做,契约 §4):** 贴纸 edits/线稿不进 WCD `document.json`(仅记 `manifest.meta`); +字体不随包携带;`.wcd` 只做「订单 → 词云平台」单向投递。 + +**涉及阶段:** 阶段 3(三个写入点)、阶段 4(缓存回写),注意事项已插入下文对应位置。 + ## 二、工作流程(按顺序) ### 原阶段 0 任务清单(存档) @@ -102,15 +132,17 @@ |---|---| | `pages/address/index.tsx` | 增删改查、设默认全部走 API;401 由 request 层统一抛出并引导登录;API 失败降级读本地缓存并提示 | | `pages/designList/index.tsx` | 列表/筛选/批量删除走 API;状态筛选基于服务端返回的 `status` 计算,消灭魔法字符串 | -| `pages/product/index.tsx`(加入清单) | `addDesign` 写 API(需登录),失败降级本地 | -| `pages/diy/index.tsx`(保存 designData) | `updateDesign` 走 API;`designData.category` 裁剪为 `{id, mask, tone}`(决策#2);贴纸本地图路径允许暂存(R4 派单前才持久化,契约约束 #1) | -| `pages/diy/stickerEdit/index.tsx` | 同上,保存贴纸改动走 API | +| `pages/product/index.tsx`(加入清单) | `addDesign` 写 API(需登录),失败降级本地。此时尚无 designData,创建后保持 DRAFT | +| `pages/diy/index.tsx`(保存 designData) | `updateDesign` 走 API;`designData.category` 裁剪为 `{id, mask, tone}`(决策#2);贴纸本地图路径允许暂存(R4 派单前才持久化,契约约束 #1)。**WCD 红线**:`category.mask` 必须保留;`stickers[].rotation/zIndex` 随保存持久化;items 是全量替换——提交前必须基于服务端最新 designData(含 R4 写入的 `wordcloud` 分组)合并改动后整包提交,不得只传改动片段(见「WCD 格式硬性规定」) | +| `pages/diy/stickerEdit/index.tsx` | 同上,保存贴纸改动走 API;同样受 WCD 红线约束(合并后整包提交,rotation/zIndex 带全) | ### 阶段 4:本地 store 降级改造 `utils/store/address.ts`、`design.ts` 保留,但语义变为"离线兜底缓存": - API 成功 → 把服务端数据写回本地缓存(下次冷启动先展示缓存再刷新); + **designData 原样存储**:不得清洗 `wxfile://` 等本地贴纸路径、不得裁剪任何字段 + (WCD 硬性规定 #4/#5); - API 失败/断网 → 页面读缓存并可正常浏览,写操作提示失败; - 登录后首次进入:只读服务端,**不自动合并**本地旧数据(`smart_design_list_` 与服务端并存的问题按路线文档风险节处理:忽略或提供一次性导入,默认忽略)。 From e557dbcb89762c3d2f4be95418445c03a41e90db Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 03:51:46 +0800 Subject: [PATCH 03/15] =?UTF-8?q?feat(r2):=20=E9=98=B6=E6=AE=B53=20?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E6=BA=90=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=88=B0=E6=9C=8D=E5=8A=A1=E7=AB=AF=20API=EF=BC=88=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=99=8D=E7=BA=A7=E6=9C=AC=E5=9C=B0=E7=BC=93=E5=AD=98?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - designList:列表/批量删除走 API,新增生产中(processing)徽标与筛选 tab - address:增删改查走 API,默认唯一性由服务端事务保证 - product:加入清单走 createDesign(服务端 DRAFT) - diy:进入即创建清单条目;保存时 category 裁剪 {id,mask,tone}、 designData 与服务端数据合并(保护 wordcloud 分组,WCD 红线)、 贴纸经 persistDesignMedia 持久化后整包提交(状态→designing) - stickerEdit:贴纸编辑合并后整包提交 - types:DesignDataV1.category 收窄为契约 §2 冻结形状 {id, mask, tone} - 全部写入点:API 成功回写本地缓存(checkout 等未迁移页面不受影响) Co-Authored-By: Claude --- src/pages/address/index.tsx | 43 +++++++++---- src/pages/designList/index.tsx | 21 +++++-- src/pages/diy/index.tsx | 94 ++++++++++++++++++++--------- src/pages/diy/stickerEdit/index.tsx | 17 +++++- src/pages/product/index.tsx | 26 ++++++-- src/types/index.ts | 11 +++- 6 files changed, 155 insertions(+), 57 deletions(-) diff --git a/src/pages/address/index.tsx b/src/pages/address/index.tsx index 40dbf51..730b225 100644 --- a/src/pages/address/index.tsx +++ b/src/pages/address/index.tsx @@ -2,7 +2,8 @@ import { View, Text, Image, Input, Picker } from '@tarojs/components' import Taro from '@tarojs/taro' import { useState, useEffect } from 'react' import './index.scss' -import { getAddressList, addAddress, updateAddress, deleteAddress } from '../../utils/store' +import { getAddressList, setAddressList, addAddress, updateAddress, deleteAddress } from '../../utils/store' +import { fetchAddresses, createAddress, updateAddress as updateAddressApi, deleteAddress as deleteAddressApi } from '../../utils/api' import type { AddressItem } from '../../types' import { useThemeContext } from '../../context/ThemeContext' import { useSafeArea } from '../../hooks/useSafeArea' @@ -26,7 +27,15 @@ export default function AddressPage() { const [detail, setDetail] = useState('') const [isDefault, setIsDefault] = useState(false) - const load = () => setList(getAddressList()) + const load = () => { + // API 优先,成功后回写本地缓存;失败降级读缓存 + fetchAddresses() + .then(data => { + setList(data) + setAddressList(data) + }) + .catch(() => setList(getAddressList())) + } useEffect(() => { load() @@ -62,8 +71,9 @@ export default function AddressPage() { content: '删除后将无法恢复该地址', success: (res) => { if (res.confirm) { - deleteAddress(id) - load() + deleteAddressApi(id) + .catch(() => deleteAddress(id)) // 失败降级本地删除 + .finally(load) } } }) @@ -80,15 +90,22 @@ export default function AddressPage() { return } const payload = { name, phone, region, detail, isDefault } - if (editing) { - updateAddress(editing.id, payload) - } else { - addAddress(payload) - } - Taro.showToast({ title: '保存成功', icon: 'success' }) - setShowForm(false) - resetForm() - load() + const save = editing + ? updateAddressApi(editing.id, payload) + : createAddress(payload) + save + .then(() => Taro.showToast({ title: '保存成功', icon: 'success' })) + .catch(() => { + // 服务端不可达时降级本地保存,联网后进入页面会刷新 + if (editing) updateAddress(editing.id, payload) + else addAddress(payload) + Taro.showToast({ title: '网络不可用,已暂存到本地', icon: 'none' }) + }) + .finally(() => { + setShowForm(false) + resetForm() + load() + }) } const onRegionChange = (e: any) => { diff --git a/src/pages/designList/index.tsx b/src/pages/designList/index.tsx index 4d5e1d2..60dc465 100644 --- a/src/pages/designList/index.tsx +++ b/src/pages/designList/index.tsx @@ -2,7 +2,8 @@ import { View, Text, ScrollView, Image } from '@tarojs/components' import Taro from '@tarojs/taro' import { useState, useEffect, useCallback } from 'react' import './index.scss' -import { getDesignList, removeDesigns, type DesignItem } from '../../utils/store' +import { getDesignList, setDesignList, removeDesigns, type DesignItem } from '../../utils/store' +import { fetchDesignList, deleteDesigns } from '../../utils/api' import { PRODUCT_ICON_MAP } from '../../utils/productConfig' import { assetUrl } from '../../utils/asset' import { useThemeContext } from '../../context/ThemeContext' @@ -17,6 +18,7 @@ const STATUS_TABS = [ { code: 'toDesign', label: '待设计' }, { code: 'undesigned', label: '未设计' }, { code: 'designing', label: '设计中' }, + { code: 'processing', label: '生产中' }, { code: 'ordered', label: '已下单' } ] @@ -25,6 +27,7 @@ const VISIBLE_STATUS_TABS = STATUS_TABS.filter(tab => tab.code !== 'undesigned') const STATUS_STYLE: Record = { undesigned: { label: '未设计', cls: 'badge-pink' }, designing: { label: '设计中', cls: 'badge-blue' }, + processing: { label: '生产中', cls: 'badge-warning' }, ordered: { label: '已下单', cls: 'badge-green' } } @@ -38,7 +41,13 @@ export default function DesignListPage() { const [selected, setSelected] = useState>(new Set()) const load = useCallback(() => { - setList(getDesignList()) + // API 优先,成功后回写本地缓存(checkout 等页面仍读缓存);失败降级读缓存 + fetchDesignList() + .then(data => { + setList(data) + setDesignList(data) + }) + .catch(() => setList(getDesignList())) }, []) const init = useCallback(() => { @@ -100,10 +109,12 @@ export default function DesignListPage() { content: `确定删除选中的 ${selected.size} 个条目吗?`, success: (res) => { if (res.confirm) { - removeDesigns(Array.from(selected)) + const ids = Array.from(selected) setSelected(new Set()) setManaging(false) - load() + deleteDesigns(ids) + .catch(() => removeDesigns(ids)) // 失败降级本地删除 + .finally(load) } } }) @@ -164,7 +175,7 @@ export default function DesignListPage() { {/* 列表 */} {filtered.map(item => { - const style = STATUS_STYLE[item.status] + const style = STATUS_STYLE[item.status] || STATUS_STYLE.undesigned const rawIcon = (item.productIcon || '').startsWith('/icon/') || /^https?:/i.test(item.productIcon || '') ? item.productIcon : PRODUCT_ICON_MAP[item.productId] || '/icon/四角星.svg' diff --git a/src/pages/diy/index.tsx b/src/pages/diy/index.tsx index 9455ed3..eea61c4 100644 --- a/src/pages/diy/index.tsx +++ b/src/pages/diy/index.tsx @@ -4,7 +4,7 @@ import { useState, useEffect } from 'react' import './index.scss' import { getProductById } from '../../utils/productConfig' import { getDesignList, setDesignList, updateDesign, type DesignItem, type StickerItem } from '../../utils/store' -import { persistDesignMedia } from '../../utils/api' +import { createDesign, updateDesign as updateDesignApi, persistDesignMedia } from '../../utils/api' import { useThemeContext } from '../../context/ThemeContext' import { useSafeArea } from '../../hooks/useSafeArea' import { useStatusBar } from '../../hooks/useStatusBar' @@ -27,6 +27,34 @@ export default function DIYPage() { const [previewMode, setPreviewMode] = useState(false) const [hasOverlap, setHasOverlap] = useState(false) + /** 进入 DIY 即创建清单条目:服务端创建(DRAFT,阶段0 决策#6),失败降级本地 */ + const createDesignEntry = (product: { id: string; name: string; price: number; icon: string }, count: number) => { + createDesign({ + productId: product.id, + productName: product.name, + unitPrice: product.price, + count + }) + .then(item => { + setDesignList([item, ...getDesignList()]) // 回写缓存,checkout 等页面仍读缓存 + setDesignId(item.id) + }) + .catch(() => { + const newDesign: DesignItem = { + id: 'DSG' + Date.now(), + productId: product.id, + productName: product.name, + productIcon: product.icon, + unitPrice: product.price, + count, + status: 'undesigned', + createdAt: new Date().toISOString().slice(0, 10) + } + setDesignList([...getDesignList(), newDesign]) + setDesignId(newDesign.id) + }) + } + useEffect(() => { const router = Taro.getCurrentInstance().router const params = router ? router.params : undefined @@ -37,20 +65,9 @@ export default function DIYPage() { const product = getProductById(productId) if (product) { setCategory(product) - setQuantity(Number(params ? params.quantity : undefined) || 1) - const newDesign: DesignItem = { - id: 'DSG' + Date.now(), - productId: product.id, - productName: product.name, - productIcon: product.icon, - unitPrice: product.price, - count: Number(params ? params.quantity : undefined) || 1, - status: 'designing', - createdAt: new Date().toISOString().slice(0, 10) - } - const list = getDesignList() - setDesignList([...list, newDesign]) - setDesignId(newDesign.id) + const count = Number(params ? params.quantity : undefined) || 1 + setQuantity(count) + createDesignEntry(product, count) } return } @@ -89,19 +106,7 @@ export default function DIYPage() { const found = getProductById(productId) if (found) { setCategory(found) - const newDesign: DesignItem = { - id: 'DSG' + Date.now(), - productId: found.id, - productName: found.name, - productIcon: found.icon, - unitPrice: found.price, - count: 1, - status: 'designing', - createdAt: new Date().toISOString().slice(0, 10) - } - const list = getDesignList() - setDesignList([...list, newDesign]) - setDesignId(newDesign.id) + createDesignEntry(found, 1) } } }, []) @@ -247,10 +252,39 @@ export default function DIYPage() { Taro.showToast({ title: '贴纸不能重叠', icon: 'none' }) return } - if (designId) { + if (designId && category) { // 贴纸/底图持久化(决策#4,R4 负责):本地图 → COS 持久 URL,保证后端 WCD 打包可下载素材 const data = await persistDesignMedia({ stickers, category, version: 1 }) - updateDesign(designId, { designData: data }) + // category 裁剪为 {id, mask, tone}(阶段0 决策#2;契约约束#3:mask 必须保留) + const trimmedCategory = { + id: category.id, + mask: category.mask, + ...(category.tone ? { tone: category.tone } : {}) + } + // WCD 红线:基于服务端已有 designData 合并(保留 R4 写入的 wordcloud 分组等),只覆盖本页编辑的字段 + const cached = getDesignList().find(d => d.id === designId) + const designData = { + ...(cached && cached.designData ? cached.designData : {}), + version: 1 as const, + category: trimmedCategory, + stickers: data.stickers || stickers + } + // 本地缓存同步(checkout 仍读缓存) + updateDesign(designId, { status: 'designing', designData }) + try { + await updateDesignApi(designId, { + status: 'designing', + item: { + productId: category.id, + productName: category.name, + unitPrice: category.price, + count: quantity, + designData + } + }) + } catch { + Taro.showToast({ title: '网络不可用,已暂存到本地', icon: 'none' }) + } } setPreviewMode(false) Taro.navigateTo({ url: `/pages/checkout/index?designId=${designId}` }) diff --git a/src/pages/diy/stickerEdit/index.tsx b/src/pages/diy/stickerEdit/index.tsx index 0811ccd..aecd3b7 100644 --- a/src/pages/diy/stickerEdit/index.tsx +++ b/src/pages/diy/stickerEdit/index.tsx @@ -4,7 +4,7 @@ import { useState, useEffect, useRef, useCallback } from 'react' import './index.scss' import { getProductById } from '../../../utils/productConfig' import { getDesignList, setDesignList, updateDesign, type DesignItem, type StickerItem } from '../../../utils/store' -import { sketchImage } from '../../../utils/api' +import { sketchImage, updateDesign as updateDesignApi } from '../../../utils/api' import { useThemeContext } from '../../../context/ThemeContext' import { useSafeArea } from '../../../hooks/useSafeArea' import { useStatusBar } from '../../../hooks/useStatusBar' @@ -232,7 +232,20 @@ export default function StickerEditPage() { src: newSrc, edits: { brightness, hue, contrast } } - updateDesign(designId, { designData: { ...dList[dIdx].designData, stickers } }) + const d = dList[dIdx] + // WCD 红线:基于服务端已有 designData 合并(保留 wordcloud 分组),只覆盖 stickers + const designData = { ...d.designData, stickers } + updateDesign(designId, { designData }) // 本地缓存同步 + // 服务端保存(items 全量替换,必须带全 4 个基本字段);失败暂存本地 + updateDesignApi(designId, { + item: { + productId: d.productId, + productName: d.productName, + unitPrice: d.unitPrice, + count: d.count, + designData + } + }).catch(() => Taro.showToast({ title: '网络不可用,已暂存到本地', icon: 'none' })) Taro.showToast({ title: '保存成功', icon: 'success' }) Taro.navigateBack() }, diff --git a/src/pages/product/index.tsx b/src/pages/product/index.tsx index 8756ee3..46a8d0b 100644 --- a/src/pages/product/index.tsx +++ b/src/pages/product/index.tsx @@ -3,7 +3,8 @@ import Taro from '@tarojs/taro' import { useState } from 'react' import './index.scss' import { getProductById } from '../../utils/productConfig' -import { addDesign } from '../../utils/store' +import { addDesign, getDesignList, setDesignList } from '../../utils/store' +import { createDesign } from '../../utils/api' import { useThemeContext } from '../../context/ThemeContext' import { useSafeArea } from '../../hooks/useSafeArea' import { useStatusBar } from '../../hooks/useStatusBar' @@ -60,10 +61,25 @@ export default function ProductPage() { } const confirmAdd = () => { - addDesign(product, quantity) - setShowModal(false) - Taro.showToast({ title: `已加入设计清单 x${quantity}`, icon: 'success' }) - setTimeout(() => Taro.navigateBack(), 1200) + // 写服务端(需登录,创建即 DRAFT),成功后回写本地缓存;失败降级本地 + createDesign({ + productId: product.id, + productName: product.name, + unitPrice: product.price, + count: quantity + }) + .then(item => { + setDesignList([item, ...getDesignList()]) + Taro.showToast({ title: `已加入设计清单 x${quantity}`, icon: 'success' }) + }) + .catch(() => { + addDesign(product, quantity) + Taro.showToast({ title: `网络不可用,已加入本地清单 x${quantity}`, icon: 'none' }) + }) + .finally(() => { + setShowModal(false) + setTimeout(() => Taro.navigateBack(), 1200) + }) } const goToDIY = () => { diff --git a/src/types/index.ts b/src/types/index.ts index eefbce1..3f55427 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -77,8 +77,15 @@ export interface StickerItem { export interface DesignDataV1 { /** 结构版本;旧数据缺省视为 v1 */ version?: 1 - /** 商品品类:mask 是画布尺寸来源,说明见 docs/mask-config-guide.md */ - category?: ProductCategory + /** + * 商品品类(契约 §2 冻结:仅 {id, mask, tone},DIY 保存时裁剪); + * mask 是画布尺寸来源,说明见 docs/mask-config-guide.md + */ + category?: { + id: string + mask: MaskConfig + tone?: [number, number, number] + } /** 底图(持久 URL),WCD 打包的画布底 */ background?: { src: string From 954cddfc222d7c45f2b29404897e552c32a99492 Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 03:58:55 +0800 Subject: [PATCH 04/15] =?UTF-8?q?feat(r2):=20=E9=98=B6=E6=AE=B54=20store?= =?UTF-8?q?=20=E9=99=8D=E7=BA=A7=E4=B8=BA=E7=A6=BB=E7=BA=BF=E5=85=9C?= =?UTF-8?q?=E5=BA=95=E7=BC=93=E5=AD=98=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - designList/address 两页缓存优先渲染(冷启动不空屏),联网后以服务端为准覆盖 - store/design.ts、store/address.ts 文件头注明缓存层语义(回写/兜底/旧数据不合并) - 流程文档勾选阶段 1-4 进度 Co-Authored-By: Claude --- docs/r2-workflow.md | 18 ++++++++++-------- src/pages/address/index.tsx | 4 +++- src/pages/designList/index.tsx | 4 +++- src/utils/store/address.ts | 7 +++++++ src/utils/store/design.ts | 7 +++++++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/docs/r2-workflow.md b/docs/r2-workflow.md index 584e045..6bc43d6 100644 --- a/docs/r2-workflow.md +++ b/docs/r2-workflow.md @@ -89,7 +89,7 @@ `ordered` **不落库**,由 `orderId != null` 派生;前端不提交这个状态。 3. 确认 Prisma `Address` / `DesignList` 模型字段与契约一致,缺字段先出迁移。 -### 阶段 1:后端补齐 CRUD(先做,前端等它) +### 阶段 1:后端补齐 CRUD(先做,前端等它)✅(2026-09-12,后端提交 0a3c8e8) 改动范围:`src/addresses/`、`src/design-list/`,两个模块均已注册,骨架已存在。 @@ -114,7 +114,7 @@ 4. `findOne` 补归属校验(当前 TODO)。 5. Swagger 补全以上全部接口。 -### 阶段 2:前端 API 层(页面不动) +### 阶段 2:前端 API 层(页面不动)✅(2026-09-12,前端提交 8438fea) 1. `src/utils/api/address.ts`(现为空占位):实现 `fetchAddresses / createAddress / updateAddress / deleteAddress / setDefaultAddress`。 @@ -126,7 +126,7 @@ 3. `src/types/index.ts`:`AddressItem` 增加服务端字段(服务端 id、`createdAt` 等); `DesignItem.status` 补 `'processing'`、`DesignItem.orderId` 派生 `ordered` 展示。 -### 阶段 3:切换页面(两个页面 + 三个写入点) +### 阶段 3:切换页面(两个页面 + 三个写入点)✅(2026-09-12,前端提交 e557dbc;WCD 红线已按上文落实) | 文件 | 改动 | |---|---| @@ -136,16 +136,18 @@ | `pages/diy/index.tsx`(保存 designData) | `updateDesign` 走 API;`designData.category` 裁剪为 `{id, mask, tone}`(决策#2);贴纸本地图路径允许暂存(R4 派单前才持久化,契约约束 #1)。**WCD 红线**:`category.mask` 必须保留;`stickers[].rotation/zIndex` 随保存持久化;items 是全量替换——提交前必须基于服务端最新 designData(含 R4 写入的 `wordcloud` 分组)合并改动后整包提交,不得只传改动片段(见「WCD 格式硬性规定」) | | `pages/diy/stickerEdit/index.tsx` | 同上,保存贴纸改动走 API;同样受 WCD 红线约束(合并后整包提交,rotation/zIndex 带全) | -### 阶段 4:本地 store 降级改造 +### 阶段 4:本地 store 降级改造 ✅(2026-09-12) -`utils/store/address.ts`、`design.ts` 保留,但语义变为"离线兜底缓存": +`utils/store/address.ts`、`design.ts` 保留,但语义变为"离线兜底缓存"(文件头已注明): -- API 成功 → 把服务端数据写回本地缓存(下次冷启动先展示缓存再刷新); +- API 成功 → 把服务端数据写回本地缓存(下次冷启动先展示缓存再刷新,designList/address + 两页已实现缓存优先渲染); **designData 原样存储**:不得清洗 `wxfile://` 等本地贴纸路径、不得裁剪任何字段 (WCD 硬性规定 #4/#5); - API 失败/断网 → 页面读缓存并可正常浏览,写操作提示失败; -- 登录后首次进入:只读服务端,**不自动合并**本地旧数据(`smart_design_list_` - 与服务端并存的问题按路线文档风险节处理:忽略或提供一次性导入,默认忽略)。 +- 登录后首次进入:只读服务端,**不自动合并**本地旧数据(联网刷新以服务端为准覆盖缓存, + `smart_design_list_` 与服务端并存的问题按路线文档风险节处理:忽略或提供 + 一次性导入,默认忽略)。 ### 阶段 5:联调与验收 diff --git a/src/pages/address/index.tsx b/src/pages/address/index.tsx index 730b225..240c768 100644 --- a/src/pages/address/index.tsx +++ b/src/pages/address/index.tsx @@ -28,7 +28,9 @@ export default function AddressPage() { const [isDefault, setIsDefault] = useState(false) const load = () => { - // API 优先,成功后回写本地缓存;失败降级读缓存 + // 缓存优先展示(冷启动不空屏),再拉服务端刷新; + // 刷新成功回写缓存并以服务端为准覆盖(旧本地数据不自动合并,route-r2 风险节) + setList(getAddressList()) fetchAddresses() .then(data => { setList(data) diff --git a/src/pages/designList/index.tsx b/src/pages/designList/index.tsx index 60dc465..a61646f 100644 --- a/src/pages/designList/index.tsx +++ b/src/pages/designList/index.tsx @@ -41,7 +41,9 @@ export default function DesignListPage() { const [selected, setSelected] = useState>(new Set()) const load = useCallback(() => { - // API 优先,成功后回写本地缓存(checkout 等页面仍读缓存);失败降级读缓存 + // 缓存优先展示(冷启动不空屏),再拉服务端刷新; + // 刷新成功回写缓存并以服务端为准覆盖(旧本地数据不自动合并,route-r2 风险节) + setList(getDesignList()) fetchDesignList() .then(data => { setList(data) diff --git a/src/utils/store/address.ts b/src/utils/store/address.ts index abb815d..d8541c5 100644 --- a/src/utils/store/address.ts +++ b/src/utils/store/address.ts @@ -1,3 +1,10 @@ +/** + * 收货地址本地存储 —— R2 后降级为「离线兜底缓存」层(按 openid 隔离,见 keys.ts)。 + * 真实 CRUD 已走 utils/api/address.ts;本层职责: + * - 页面 API 成功 → 回写缓存,供冷启动先展示与未迁移页面(checkout 等)读取; + * - API 失败/断网 → 页面读缓存正常浏览; + * - 联网刷新以服务端为准覆盖缓存,旧本地数据不做自动合并(route-r2 风险节:默认忽略)。 + */ import Taro from '@tarojs/taro' import type { AddressItem } from '../../types' import { key } from './keys' diff --git a/src/utils/store/design.ts b/src/utils/store/design.ts index b219e81..f727a8b 100644 --- a/src/utils/store/design.ts +++ b/src/utils/store/design.ts @@ -1,3 +1,10 @@ +/** + * 设计清单本地存储 —— R2 后降级为「离线兜底缓存」层(按 openid 隔离,见 keys.ts)。 + * 真实 CRUD 已走 utils/api/design.ts;本层职责: + * - 页面 API 成功 → 回写缓存,供冷启动先展示与未迁移页面(checkout 等)读取; + * - API 失败/断网 → 页面读缓存正常浏览; + * - 联网刷新以服务端为准覆盖缓存,旧本地数据不做自动合并(route-r2 风险节:默认忽略)。 + */ import Taro from '@tarojs/taro' import type { DesignItem } from '../../types' import { assetUrl } from '../asset' From 67436cb9e154015c41d14439a50ba19d5f35473f Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 17:18:22 +0800 Subject: [PATCH 05/15] =?UTF-8?q?docs(r2):=20=E9=98=B6=E6=AE=B55=20?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E6=94=B6=E5=8F=A3=20+=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=B7=A8=E7=BA=BF=E8=B7=AF=E4=BA=A4=E6=8E=A5=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=20docs/routes/R2/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - r2-workflow:阶段5 验证记录、验收期修复(PATCH /users/me、.env OSS) - routes/R2/README:R3(checkout 切换/删除守卫/状态触发权)、R4(designData 整包合并回写/贴纸 COS 硬前置)、R1(productId 校验/iconImg 下发)接入须知 - routes/README 索引更新 Co-Authored-By: Claude --- docs/r2-workflow.md | 23 +++++++++++++++- docs/routes/R2/README.md | 59 ++++++++++++++++++++++++++++++++++++++++ docs/routes/README.md | 4 +++ 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 docs/routes/R2/README.md diff --git a/docs/r2-workflow.md b/docs/r2-workflow.md index 6bc43d6..b677702 100644 --- a/docs/r2-workflow.md +++ b/docs/r2-workflow.md @@ -149,7 +149,28 @@ `smart_design_list_` 与服务端并存的问题按路线文档风险节处理:忽略或提供 一次性导入,默认忽略)。 -### 阶段 5:联调与验收 +### 阶段 5:联调与验收 ✅(2026-09-12 核心收口) + +**已验证:** + +- 后端 35 项 API 测试全过(CRUD/默认地址事务/403/404/状态机/白名单/1MB/401); +- 前端 API 层 13 项断言全过(复跑于阶段 3/4 之后,确认无回归); +- 真机验收步骤 1-9、11-13 全过(清单链路/地址链路/登录态边界); +- **数据库直查验证 WCD 红线**:`category` 裁剪为 `{id, mask, tone}` 落库、`mask` 完整、 + 贴纸 `wxfile://` 路径按契约保留(`persistDesignMedia` 因 upload 占位静默降级); +- `build:weapp` / `nest build` 双端构建通过; +- 越权 403/404 由双账号 API 测试覆盖(真机步骤 #14 免测)。 + +**验收期间发现并修复的问题(非 R2 引入):** + +1. 后端缺 `PATCH /api/users/me` 路由(契约 §2 遗漏)→ 已补(后端提交 3fc65e5); +2. 本机缺 `.env`(`OSS_BASE_URL`)导致首页大图空白 → 环境问题,已记录到 + `docs/routes/R2/README.md` 公共注意第 6 条。 + +**未覆盖(低风险,可后补):** 断网降级真机步骤 #10(代码路径已实现,逻辑简单)。 + +**交接收口:** 跨线路注意事项见 `docs/routes/R2/README.md`(R3 的 checkout 切换与 +删除守卫、R4 的整包合并回写、R1 的 productId 校验等)。 按路线文档验收标准逐条过: diff --git a/docs/routes/R2/README.md b/docs/routes/R2/README.md new file mode 100644 index 0000000..7aaa7ee --- /dev/null +++ b/docs/routes/R2/README.md @@ -0,0 +1,59 @@ +# R2 交接收口说明(给其他线路) + +> R2(地址 + 设计清单服务端化)已于 2026-09-12 完成阶段 1-5 核心验收, +> 分支 `feat/r2-address-design`(前后端成对)。本文档记录**其他线路接入时必须知道**的 +> 事实与红线,避免重复踩坑。实现细节见 `docs/r2-workflow.md`。 + +## 已生效的事实(所有线路) + +1. **地址/设计清单的真数据源是服务端**(PostgreSQL),本地 `utils/store` 已降级为 + 「离线兜底缓存」:页面 API 成功回写缓存、失败读缓存、联网刷新以服务端为准覆盖, + **旧本地数据不自动合并**(用户反馈"我的设计没了"是预期行为,相关页面需要文案兜底)。 +2. **designData 是服务端持久化 JSON**(白名单 7 键:version/category/background/wordcloud/ + stickers/imageSrc/imagePos,单条 ≤1MB)。DIY 保存时 `category` 裁剪为 `{id, mask, tone}`, + `mask` 已验证完整落库(WCD 画布尺寸来源)。 +3. **真机验证**:贴纸 `src` 目前落库为 `wxfile://` 本地路径(`persistDesignMedia` 因后端 + upload 模块占位而静默降级保留本地图)——契约允许,但 **R4 的 COS 上传是派单前硬前置**。 +4. **后端补齐了 `PATCH /api/users/me`**(契约 §2 历史遗漏,service 早有 updateProfile 但 + controller 未注册路由,Profile 页保存资料曾 404)。 +5. 后端 JSON body 上限 2MB(≤1MB 受理 / 1MB~2MB → 400 / >2MB → 413), + **multipart 上传不走此限制**。 +6. 环境坑:前端 `.env`(`OSS_BASE_URL`)不入库。新机器 clone 后必须手动创建,否则 + `assetUrl('/img/...')` 退化为找包内本地文件 → **首页大图全空白**(大图 8 月已迁 OSS, + 包内不再携带)。 + +## 给 R3(订单 + 支付) + +1. **checkout 页现在必须切换服务端 id**:`POST /api/orders` 要传服务端 `designListId` / + `addressId`。checkout 目前仍读本地 store(R2 红线未动它);因 R2 会把服务端数据回写 + 缓存,过渡期读缓存能拿到服务端 id,但 R3 接入时应直接切 API。 +2. **状态触发权归 R3**:`PROCESSING`/`DONE` 由订单流程驱动(前端从不提交); + `ordered` 由 `orderId != null` 派生,只读。R2 已实现单向状态机 + `DRAFT→SUBMITTED→PROCESSING→DONE`(后端校验,回退 400)。 +3. **删除保护(R3 落地项)**:R2 的 DELETE/batch-delete **没有**做"有订单关联的清单 + 禁止删除"的守卫。R3 建 Order→DesignList 关联时必须同步加 delete-guard 或明确外键行为 + (SetNull),否则用户可删掉订单引用的设计快照。 +4. orders / orderDetail / profile 页仍读本地 store,R3 接入时一并切 API + (读的是 R2 回写的缓存,过渡期数据可用)。 +5. 金额重算:按契约用服务端 Product 真实价格 + `designList.items[0]` 快照, + 忽略客户端金额;下单带 `requestId` 幂等。 + +## 给 R4(上传 / 词云 / 派单) + +1. **回写 designData 必须整包合并提交**:PATCH 的 `items` 是全量替换。R4 写入 + `wordcloud` 分组或回写贴纸 COS URL 时,要先取服务端最新 designData、合并后再整包 + PATCH——**不能只传改动片段**,否则会冲掉其他字段(与 DIY 保存同一条红线, + 见 `docs/design-data-contract-v1.md` 约束#2)。 +2. `persistDesignMedia`(`utils/api/upload.ts`)已就位且真机验证为静默降级——R4 把 + upload 模块做实后,现有调用点无需改动即自动生效。 +3. 前端 `DesignDataV1.category` 类型已收窄为 `{id, mask, tone}`(契约 §2 冻结形状), + R4 不要往该字段塞完整 ProductCategory。 +4. DIY 贴纸目前不产生 `rotation`(无旋转手势)、`zIndex` 仅渲染层使用——两字段类型已 + 备好但值可能缺席,WCD 打包按 optional 处理(契约决策#2)。 + +## 给 R1(商品目录) + +1. R2 的 `productId` **不做存在性校验**(当时商品表未 seed 的阶段0 决策#7)。 + R1 落地后如需收紧,属于契约语义变更,需同步 `api-contract` 版本。 +2. `productIcon` 不入库(决策#3):设计清单页图标按 `PRODUCT_ICON_MAP[productId]` 兜底。 + R1 商品表有 `iconImg` 后可改为服务端 optional 下发(契约允许字段新增)。 diff --git a/docs/routes/README.md b/docs/routes/README.md index 21398e4..3211068 100644 --- a/docs/routes/README.md +++ b/docs/routes/README.md @@ -11,6 +11,10 @@ | [R3 订单 + 支付占位](route-r3-order-pay.md) | `feat/r3-order-pay` | 服务端下单、金额重算、订单状态机、支付未配置占位 | | [R4 上传 + 词云 + 线稿](route-r4-upload-wordcloud.md) | `feat/r4-upload-wordcloud` | COS 上传、wordcloud 契约冻结、sketch、任务轮询 | +**已收口路线的交接说明**(后续线路接入前必读): + +- [R2 交接收口说明](R2/README.md)——R3/R4/R1 接入服务端化地址与设计清单前的事实、红线与待办。 + ## 合并顺序与依赖 - R1 是交易链路的前置,优先合入。 From c47071c9d87c8eeb18be2024ead4ceb85cbdbdf5 Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 17:49:06 +0800 Subject: [PATCH 06/15] =?UTF-8?q?docs(r2):=20DIY=20=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=206=20=E9=A1=B9=E9=97=AE=E9=A2=98=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 逐项根因定位(代码依据)+ 修复方案 + 契约影响 + 留意点: 1 重叠误报(CSS 钳制/原始像素与碰撞盒不一致,含旧数据兼容) 2 草稿持久化(防抖写缓存+服务端,status 不动) 3 SUBMITTED 触发点提前到进入工作台(决策#6 注记更新) 4 编辑页空白(问题2 修复即自动修复) 5 TouchSlider 启用 + CSS filter 预览替代 ctx.filter 6 checkout 地址同步滞后(R3 红线文件,记入 R3 待办) 问题5/6 的 R3 侧待办同步至 routes/R2/README.md Co-Authored-By: Claude --- docs/diy-fix-workflow.md | 208 +++++++++++++++++++++++++++++++++++++++ docs/routes/R2/README.md | 5 + 2 files changed, 213 insertions(+) create mode 100644 docs/diy-fix-workflow.md diff --git a/docs/diy-fix-workflow.md b/docs/diy-fix-workflow.md new file mode 100644 index 0000000..ebdd073 --- /dev/null +++ b/docs/diy-fix-workflow.md @@ -0,0 +1,208 @@ +# DIY 工作台修正工作流(R2 收口后问题清单) + +> 2026-09-12 真机验收后由需求方提出 6 个问题,本文档逐项记录:现象 → 根因(代码依据)→ +> 修复方案 → 契约影响 → 留意点。 +> 文件所有权:问题 1-5 全部在 R2 范围内(`pages/diy/*`);问题 6 的修复点在 +> `pages/checkout/index.tsx`(**R3 红线文件**,需 R3 接手或经批准后最小侵入)。 + +--- + +## 问题 1:重叠判定误报——视觉上没重叠却判为重叠 + +**根因(已定位,实锤)**:碰撞盒与视觉尺寸不一致。三个因素叠加: + +1. `addSticker` 用 `getImageInfo` 取**图片原始像素**作为 `width/height`(如 640×854), + 而画布 `canvas-area` 只有 280~420px——贴纸元素天然比画布大; +2. CSS `.canvas-image` 有 `max-width: 100%; max-height: 100%`(`diy/index.scss:104`), + **渲染时把元素钳制到画布内**,且 Image `mode='aspectFit'` 还会在盒内留白—— + 但碰撞检测 `checkOverlap` 用的是 `width × scale`(原始像素),**完全没考虑钳制**; +3. 贴纸初始位置固定 (0,0),且坐标不钳制(数据库已出现 `x: -111.93` 的负值, + 贴纸可以被拖出画布外)。 + +结果:两张视觉上分开的贴纸,碰撞盒仍然巨大且互相覆盖 → 误报。 + +**修复方案**: + +1. `addSticker` 时**归一化贴纸尺寸**:按 mask 画布等比缩放,使 `max(w, h) = min(mask.w, + mask.h) × 0.6`,`scale=1` 起步——从此 `width/height` 语义 =「画布显示像素」, + 渲染、碰撞、WCD 打包三者自洽; +2. `canvas-image` 保留 max 钳制作为兜底,但归一化后不再触发; +3. 拖动时把 `x/y` 钳制在 `[0, mask.w - 显示宽]` / `[0, mask.h - 显示高]` 区间内, + 杜绝负坐标和拖出画布。 + +**契约影响**:`designData.stickers[].width/height` 的**语义**从「原始像素」变为 +「画布显示像素」。这不是字段增删,但 WCD 打包按 `width × scale` 还原布局,语义必须 +自洽——需在 `design-data-contract-v1.md` 加**实现注记**(非版本升级,与 2MB 注记同性质)。 + +**留意点**: + +- 已落库的旧数据(如杯垫那条 640×854)是原始像素语义,新语义渲染会偏大—— + 需要一次性迁移(按同规则归一化)或在读取端兼容(判断 width > mask 宽则归一化); + 推荐后者(读端兼容),避免写数据迁移脚本; +- WCD 打包器(词云平台侧)读到的是新语义数据,联调前要同步告知。 + +--- + +## 问题 2:确认完成前设计数据不上库,中途退出即丢失 + +**现象确认**:属实。当前链路:进入 DIY 即 `createDesign`(DRAFT、无 designData), +`designData` 只在「确认完成」时一次性 PATCH。中途退出/切后台/杀进程 → 所有贴纸布局丢失, +只剩一条空 DRAFT 条目。 + +**是否正常**:是当前实现的设计取舍,但体验上不合理,应当改。 + +**修复方案(草稿持久化)**: + +1. `stickers` 状态每次变化(add/delete/move/scale)**防抖 800ms** 后写入本地缓存 + (`updateDesign(designId, { designData: draft })`,status 不动); +2. `useEffect` cleanup / `onHide` 时强制 flush 一次防抖; +3. 网络可用时异步 PATCH 服务端(同样不推状态);失败仅落缓存(现有降级语义); +4. 重新进入 DIY(source=designList)时从缓存 designData 恢复 `stickers`—— + 该恢复逻辑**已存在**(`diy/index.tsx` 读取 `design.designData.stickers`), + 草稿持久化接上后自动生效。 + +**契约影响**:无。DRAFT 状态携带 designData 完全合法(白名单/1MB 校验与状态无关); +不触发任何状态迁移。 + +**留意点**: + +- 拖动过程中 touchmove 每帧都触发,防抖窗口内的写入必须用最新值覆盖(闭包陷阱); +- 草稿里的贴纸 src 是 `wxfile://` 临时路径——**小程序临时文件可能被系统清理**, + 草稿恢复时图片可能 404,渲染需有占位兜底(灰块/删除按钮),不要因加载失败崩页; +- 不要把「草稿自动保存」做成「自动确认」:status 必须保持 DRAFT, + `SUBMITTED` 只能由用户显式确认触发。 + +--- + +## 问题 3:确认完成前清单条目一直是「未设计」 + +**根因**:这是阶段 0 决策#6 的字面实现——「DIY **保存设计** → SUBMITTED」。 +原本地版行为是**进入 DIY 即 marking 设计中**(旧代码 createDesign 时直接写 +`status: 'designing'`),R2 切服务端时按决策#6 改成了 DRAFT 起步,产生了语义回退感。 + +**修复方案(推荐)**:把 SUBMITTED 的触发点从「确认完成」提前到「**进入设计工作台**」: + +- `diy/index.tsx` 的 `createDesignEntry` 创建后立即 PATCH `status: 'designing'` + (或 `createDesign` 成功后追加一次状态调用);从 designList 进入(继续设计)同理; +- 「待设计」筛选 tab(`toDesign` = undesigned ∪ designing)不受影响; +- 配合问题 2 的草稿持久化后,语义变为「动过工作台 = 设计中」。 + +**契约影响**:无版本升级。契约只规定状态机方向与映射,触发点是前端实现细节; +但 `r2-workflow.md` 阶段 0 决策#6 的文字需要更新注记,`routes/R2/README.md` +给 R3 的状态触发权说明同步更新(R3 依旧独占 PROCESSING/DONE)。 + +**留意点**: + +- 「打开就进设计中」意味着用户误入也会推状态——可接受(原本地版即如此), + 但验收文案要说清; +- 状态机单向,DRAFT→SUBMITTED 之后无法回「未设计」,与筛选 tab 的 + 「待设计」聚合展示核对一遍视觉效果。 + +--- + +## 问题 4:确认完成前进入贴纸编辑页,Canvas 空白 + +**根因(与问题 2 同源)**:`stickerEdit` 从**本地缓存**读 `designData.stickers` +(`stickerEdit/index.tsx:146-148`)。而问题 2 的现状是确认完成前 designData 根本 +不在缓存里 → `sticker` 为 undefined → Canvas 没有绘制目标 → 空白。 +「应该任何时候进入都有渲染图」——对,这是缺陷不是设计。 + +**修复方案**:**做掉问题 2 即自动修复本问题**(草稿实时写缓存 → stickerEdit 永远 +能读到最新 stickers)。无独立改动。 + +**契约影响**:无。 + +**留意点**: + +- stickerEdit 找不到 designId/sticker 时目前静默返回(页面停 在空白 Canvas), + 加一个空态提示 + 返回按钮,避免"看起来像死了"; +- 修好后在真机回归一条链:DIY 加贴纸 → 不确认完成 → 直接点编辑 → 应看到该贴纸。 + +--- + +## 问题 5:贴纸编辑页渲染失败——滑块拖不动、线稿无效果、保存无变化 + +**根因(三个独立缺陷叠加)**: + +1. **滑块拖不动**:亮度/色相/对比度三个滑块用的是页内自定义 `onTouchMove` + + `Taro.createSelectorQuery().in(e.currentTarget)`(`stickerEdit/index.tsx:343`)。 + Taro React 里 `.in()` 需要组件实例,`e.currentTarget` 是事件对象 → 查询失败/ + rect 为 null → `ratio` 计算不出来 → 滑块不动。(文件顶部定义的 `TouchSlider` + 组件反而是好的,但根本没被使用——死代码 + 错实现并存。) +2. **转线稿后滑块动了但画面不变**:`applyFrontendSketch` 只 `setState` 数值 + (所以滑块位置跳变);画面重绘依赖 `ctx.filter`(Canvas 2D),**开发者工具/ + 部分基础库不支持 ctx.filter** → 重绘了但滤镜无效果。真调后端 `/api/sketch` + 成功时才会换 src(当前后端 sketch 为占位 → 总是走降级)。 +3. **保存回 DIY 无变化**:`handleSave` 用 `canvasToTempFilePath` 导出——Canvas 因 + 问题 4 空白/或 filter 无效时,导出的还是原图或直接失败 → 贴纸 src 没变或 + toast 保存失败。 + +**修复方案**: + +1. 三个滑块统一改用已定义的 `TouchSlider` 组件(基于 ref 的 + `getBoundingClientRect`,在 H5/小程序两端都可用),删除页内三段坏的 + onTouchMove 实现; +2. 预览层弃用 `ctx.filter`:改用 **CSS filter 直接套在 `` 上** + (`style={{ filter: 'brightness() hue-rotate() contrast()' }}`)——小程序 Image + 支持 CSS filter,所见即所得且不依赖 Canvas 能力; +3. 「保存」重新设计导出链路:优先请求后端 `/api/sketch`(真实线稿); + 纯滤镜场景导出保留 Canvas 方案但增加 `canvasReady` 前置校验, + Canvas 不可用时降级为「只保存 edits 参数、src 不变」——DIY 渲染端用 + CSS filter 读 `edits` 实时呈现(效果等价,且这是 WCD 边界内允许的: + edits 本来就不进 document.json,只记 manifest.meta)。 + +**契约影响**:无版本升级。`edits` 字段契约已冻结且本期不进 WCD document.json; +「edits 在小程序端渲染时应用」与契约边界一致。 + +**留意点**: + +- `edits` 应用点从「编辑页导出图」改为「DIY 渲染时套 CSS filter」后, + **DIY 画布和 checkout 预览都要消费 edits**,否则编辑效果只存在于编辑页; + checkout 是 R3 文件——本期只改 DIY 端,checkout 的滤镜预览记入 R3 待办; +- 删除 `TouchSlider` 死代码 or 启用它,二选一,不要留两套; +- 真机回归矩阵:调滑块 → 画面变;保存 → DIY 里效果保持;转线稿(后端就绪后) + → src 被替换为持久 URL。 + +--- + +## 问题 6:设计效果确认页(checkout)新建地址后不同步 + +**根因**:`checkout/index.tsx` 只在 **mount 时读一次**本地缓存地址 +(`useEffect` + `getDefaultAddress/getAddressList`),从地址页 `navigateBack` 返回后 +**没有任何 onShow 刷新**。而 R2 侧的地址页在新建成功后**已经正确回写了缓存** +(`setAddressList`)——数据就在缓存里,是 checkout 不重新读。 + +**是否 R2 工作内容**:**修复点在 checkout(R3 红线文件),不属于 R2**。 +R2 侧职责(API 保存 + 缓存回写)已正确完成并经真机验证。 + +**修复方案(记入 R3 待办)**: + +1. checkout 读地址改为「mount + `useDidShow`(onShow)双时机」,或 +2. 地址页保存成功后 `Taro.eventCenter.emit('addressesChanged')`,checkout 监听刷新; + 推荐前者(改动更小、无事件时序问题)。 + +**契约影响**:无。 + +**留意点**: + +- 已同步写入 `routes/R2/README.md` 给 R3 的待办; +- 临时绕过方案(不改代码):从确认页退出重进即同步(现况即如此)。 + +--- + +## 修复顺序与依赖 + +``` +问题2(草稿持久化)──┬──> 问题4(编辑页空白,自动修复) + └──> 问题3(进入即 designing,独立但同文件顺手做) +问题1(碰撞归一化 + 坐标钳制)—— 独立,含旧数据读端兼容 +问题5(TouchSlider + CSS filter 预览)—— 独立;edits 消费点需要 DIY 渲染端配合 +问题6 —— 不修(R3 待办,已记录) +``` + +**建议批次**:① 问题 2+3+4(同一文件、一次回归)→ ② 问题 1(含兼容验证)→ +③ 问题 5(改动面最大,单独一批)。 + +**统一验证清单**:加贴纸不重叠不误报 / 拖不出去 / 中途退出重进布局还在 / +进入工作台清单变「设计中」/ 编辑页任何时候有图 / 滑块可拖 / 编辑保存后 DIY 效果保持 / +`nest build` + `build:weapp` + 契约注记同步。 diff --git a/docs/routes/R2/README.md b/docs/routes/R2/README.md index 7aaa7ee..45286c3 100644 --- a/docs/routes/R2/README.md +++ b/docs/routes/R2/README.md @@ -35,6 +35,11 @@ (SetNull),否则用户可删掉订单引用的设计快照。 4. orders / orderDetail / profile 页仍读本地 store,R3 接入时一并切 API (读的是 R2 回写的缓存,过渡期数据可用)。 +5. **checkout 地址读取是一次性的**(仅 mount 读缓存,无 onShow 刷新)——用户从 + checkout 进入新建地址后返回不会同步,要重进页面才刷新。R3 切 checkout 时改为 + mount + onShow 双时机读取(详见 `docs/diy-fix-workflow.md` 问题 6)。 +6. **checkout 预览不消费贴纸 `edits`**(亮度/色相/对比度):DIY 渲染端套 CSS filter + 呈现编辑效果,checkout 预览接入时需同样消费(R3 待办,见 diy-fix-workflow 问题 5)。 5. 金额重算:按契约用服务端 Product 真实价格 + `designList.items[0]` 快照, 忽略客户端金额;下单带 `requestId` 幂等。 From 395fa4116c3a8f03079bb9317a8869756c47968b Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 18:53:07 +0800 Subject: [PATCH 07/15] =?UTF-8?q?docs(r2):=20=E5=A5=91=E7=BA=A6=E6=A0=B8?= =?UTF-8?q?=E5=AF=B9=E8=A1=A5=E5=85=85=20+=20design-data-contract=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20width/height=20=E8=AF=AD=E4=B9=89=E6=B3=A8?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - diy-fix-workflow:新增两份契约逐项核对总表 - design-data-contract-v1:stickers[].width/height/x/y 语义 = 画布显示像素 (实现注记,非版本升级),历史数据读端按 mask 归一化兼容 Co-Authored-By: Claude --- docs/design-data-contract-v1.md | 6 ++++++ docs/diy-fix-workflow.md | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/docs/design-data-contract-v1.md b/docs/design-data-contract-v1.md index 63a8a9a..0bbdf66 100644 --- a/docs/design-data-contract-v1.md +++ b/docs/design-data-contract-v1.md @@ -82,6 +82,12 @@ interface DesignDataV1 { - `imageSrc/imagePos` 保留为兼容旧版字段;新写入统一走 `background.src/pos`, WCD 打包器同时兜底读旧字段。 +> **实现注记(2026-09-12,DIY 修正,非版本升级)**:`stickers[].width/height` 的语义为 +> **画布显示像素**(坐标空间 = `category.mask` 的宽高),`x/y` 同为画布内坐标。 +> 渲染、碰撞检测、WCD 打包三方按同一语义消费,打包时不再做像素换算。 +> 历史数据中按「图片原始像素」写入的值(width > mask 宽高)由读取端按 mask 等比归一化兼容, +> 不做存量迁移。`addSticker` 时即归一化到画布空间(建议初始占 mask 短边 60%)。 + ## 3. 冻结约束(R2 需落地) | # | 约束 | 说明 | diff --git a/docs/diy-fix-workflow.md b/docs/diy-fix-workflow.md index ebdd073..992fa85 100644 --- a/docs/diy-fix-workflow.md +++ b/docs/diy-fix-workflow.md @@ -190,6 +190,24 @@ R2 侧职责(API 保存 + 缓存回写)已正确完成并经真机验证。 --- +## 契约核对总表(api-contract-v1.md + design-data-contract-v1.md) + +2026-09-12 对两份契约逐项核对后的结论: + +| # | api-contract-v1.md | design-data-contract-v1.md | +|---|---|---| +| 1 | 无需改(stickers 为 `unknown[]`,语义由子契约承载);§5 已加实现补充注记指引 | **加实现注记**:width/height/x/y 语义 = 画布显示像素,历史数据读端兼容(已完成) | +| 2 | PATCH 部分更新语义后端已实现,1MB 按次校验不受高频影响;无契约文字改动 | 无 | +| 3 | 状态映射表未写死 SUBMITTED 触发点,DRAFT→SUBMITTED 合法;无契约改动(触发点调整记录在 r2-workflow 决策#6 注记) | 无 | +| 4 | 无 | 无 | +| 5 | stickers 透传 edits、§8 sketch 不变;无契约改动 | edits 边界(不进 document.json)不变 | +| 6 | §4 地址接口不变,读时机为客户端行为 | 无 | + +**核对中发现并已修正的矛盾**:api-contract §5 引用块原写「贴纸图 src 必须为 COS 持久 URL +(禁止 `wxfile://`/`tmp`)」,与 design-data-contract 约束#1/决策#4(R2 允许暂存本地图、 +R4 派单前持久化回写)直接矛盾,且真机落库数据即为 wxfile://。已按冻结决策修正措辞 +(非字段/语义变更,不升版本)。 + ## 修复顺序与依赖 ``` From eea6c3feefbbce29f2a42777a9ce8aaa9efc6074 Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 19:07:07 +0800 Subject: [PATCH 08/15] =?UTF-8?q?fix(diy):=20=E8=8D=89=E7=A8=BF=E6=8C=81?= =?UTF-8?q?=E4=B9=85=E5=8C=96=20+=20=E8=BF=9B=E5=85=A5=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E5=8D=B3=E8=AE=BE=E8=AE=A1=E4=B8=AD=20+=20=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=A1=B5=E7=A9=BA=E6=80=81=E5=85=9C=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正工作流批次①(问题 2+3+4): - 问题2: 贴纸变化防抖 800ms 落缓存+服务端静默同步, useDidHide/卸载前强制 flush;中途退出不再丢布局 - 问题3: 进入工作台(新建/继续)即 PATCH designing(SUBMITTED), 取代原「确认完成才提交」触发点 - 问题4: 草稿实时写缓存后贴纸编辑页始终能读到 stickers; 另加 notFound 空态(未找到贴纸提示 + 返回工作台), handleEditSticker 跳转前 flushDraft 关闭防抖竞态窗口 Co-Authored-By: Claude --- dist/common.js | 2 +- dist/pages/address/index.js | 2 +- dist/pages/designList/index.js | 2 +- dist/pages/diy/index.js | 2 +- dist/pages/diy/stickerEdit/index.js | 2 +- dist/pages/diy/stickerEdit/index.wxss | 2 +- dist/pages/product/index.js | 2 +- src/pages/diy/index.tsx | 65 +++++++++++++++++++++++++-- src/pages/diy/stickerEdit/index.scss | 27 +++++++++++ src/pages/diy/stickerEdit/index.tsx | 27 +++++++++++ 10 files changed, 123 insertions(+), 10 deletions(-) diff --git a/dist/common.js b/dist/common.js index d00f353..f764140 100644 --- a/dist/common.js +++ b/dist/common.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[76],{9513:function(n,t,e){e.d(t,{A:function(){return i}});var r=e(118),o=e(4848);function i(n){var t=n.children,e=n.className,i=n.style;return(0,o.jsx)(r.Ss,{className:"bottom-action-bar ".concat(e||""),style:i,children:t})}},7723:function(n,t,e){e.d(t,{A:function(){return d}});var r=e(5544),o=e(758),i=e.n(o),c=e(6540),u=e(118),a=e(6764),s=e(9703),l=e(8199),f=e(4848);function d(n){var t=(0,c.useState)("checking"),e=(0,r.A)(t,2),o=e[0],d=e[1],g=(0,c.useCallback)(function(){var n=!1;return(0,a.d)().then(function(t){n||d(t?"ok":"denied")}).catch(function(){n||d("denied")}),function(){n=!0}},[]);return(0,c.useEffect)(function(){var n=g(),t=function(){g()},e=function(){g()};return i().eventCenter.on("tabBarChange",t),i().eventCenter.on(s.Wo,e),i().eventCenter.on("authStateChanged",t),function(){n(),i().eventCenter.off("tabBarChange",t),i().eventCenter.off(s.Wo,e),i().eventCenter.off("authStateChanged",t)}},[g]),"checking"===o?(0,f.jsx)(u.Ss,{className:"login-guard",children:(0,f.jsxs)(u.Ss,{className:"login-guard-inner",children:[(0,f.jsx)(u._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u8bbe\u7f6e.png"),mode:"aspectFit"}),(0,f.jsx)(u.EY,{className:"login-guard-title",children:"\u6821\u9a8c\u767b\u5f55\u72b6\u6001"})]})}):"denied"===o?(0,f.jsx)(u.Ss,{className:"login-guard",children:(0,f.jsxs)(u.Ss,{className:"login-guard-inner",children:[(0,f.jsx)(u._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"}),(0,f.jsx)(u.EY,{className:"login-guard-title",children:"\u8bf7\u5148\u767b\u5f55"}),(0,f.jsx)(u.EY,{className:"login-guard-desc",children:"\u767b\u5f55\u540e\u67e5\u770b\u60a8\u7684\u4e13\u5c5e\u5185\u5bb9"}),(0,f.jsx)(u.Ss,{className:"btn-primary login-guard-btn",onTap:function(){return i().switchTab({url:"/pages/profile/index"})},children:(0,f.jsx)(u.EY,{children:"\u53bb\u767b\u5f55"})})]})}):n.children}},3053:function(n,t,e){e.d(t,{A:function(){return d}});var r=e(5544),o=e(118),i=e(758),c=e.n(i),u=e(6540),a=e(9201);function s(n){var t=n.viewportBottom,e=n.scrollTop,r=n.statusBarHeight,o=Number.isFinite(t)?t:0,i=Number.isFinite(e)?e:0,c=Number.isFinite(r)?r:0;return Math.max(0,o+i-c-8)}function l(n){var t=n.scrollTop,e=n.startY,r=n.rangeY,o=Number.isFinite(t)?t:0,i=Math.max(0,Number.isFinite(e)?e:0),c=Math.max(1,Number.isFinite(r)?r:1);return o<=i?0:Math.min(1,(o-i)/c)}var f=e(4848);function d(n){var t=n.title,e=n.targetSelector,i=void 0===e?".page-header":e,d=n.showBack,g=void 0!==d&&d,h=(0,a.c)(),p=(0,u.useState)(0),m=(0,r.A)(p,2),v=m[0],y=m[1],S=(0,u.useMemo)(function(){return{startY:Math.max(0,h.headerPaddingTop-h.statusBarHeight),rangeY:Math.max(48,.45*h.headerPaddingTop)}},[h.headerPaddingTop,h.statusBarHeight]),k=(0,u.useRef)(S),b=(0,u.useRef)(null),A=(0,u.useRef)(0),w=(0,u.useCallback)(function(n){A.current=n,null===b.current&&(b.current=setTimeout(function(){b.current=null;var n=k.current,t=n.startY,e=n.rangeY;y(l({scrollTop:A.current,startY:t,rangeY:e}))},16))},[]);return(0,u.useEffect)(function(){var n=!1,t=null;k.current=S;var e=function(){n||c().createSelectorQuery().select(i).boundingClientRect(function(t){if(!n){if(!t||Array.isArray(t)||"number"!==typeof t.bottom||"number"!==typeof t.height)return k.current=S,void w(A.current);var e=s({viewportBottom:t.bottom,scrollTop:A.current,statusBarHeight:h.statusBarHeight}),r=Math.max(32,.7*t.height);k.current={startY:e,rangeY:r},w(A.current)}}).exec()};return c().nextTick(function(){n||(t=setTimeout(e,80))}),function(){n=!0,null!==t&&clearTimeout(t),null!==b.current&&clearTimeout(b.current),b.current=null}},[w,S,i]),c().usePageScroll(function(n){w(n.scrollTop)}),(0,f.jsxs)(o.Ss,{className:"scroll-top-mask",style:{height:"".concat(Math.max(h.menuButtonTop+h.menuButtonHeight+18,h.statusBarHeight+52)+24,"px"),opacity:v},children:[(0,f.jsx)(o.Ss,{className:"scroll-top-blur scroll-top-blur-mid"}),(0,f.jsx)(o.Ss,{className:"scroll-top-blur scroll-top-blur-soft"}),(0,f.jsx)(o.Ss,{className:"scroll-top-gradient"}),g&&(0,f.jsx)(o.Ss,{className:"scroll-top-back",style:{top:"".concat(h.menuButtonTop,"px")},onTap:function(){return c().navigateBack()},children:(0,f.jsx)(o.EY,{className:"scroll-top-back-arrow",children:"\u2190"})}),(0,f.jsx)(o.EY,{className:"scroll-top-title",style:{top:"calc(".concat(h.menuButtonTop,"px + 40rpx)"),transform:"translateY(-50%)",opacity:Math.max(0,Math.min(1,(v-.5)/.5))},children:t})]})}},9674:function(n,t,e){e.d(t,{A:function(){return c}});var r=e(118),o=e(9703),i=e(4848);function c(n){var t=n.darkTop,e=void 0!==t&&t,c=(0,o.wR)(),u=c.resolvedTheme,a="dark"===u||e,s=a?"#191919":"#faf7f2",l=a?"#ffffff":"#000000";return(0,i.jsx)(r.tf,{backgroundColor:s,backgroundColorTop:s,backgroundColorBottom:s,backgroundTextStyle:a?"light":"dark",rootBackgroundColor:s,children:(0,i.jsx)(r.yk,{frontColor:l,backgroundColor:s})})}},9703:function(n,t,e){e.d(t,{NP:function(){return g},Wo:function(){return d},wR:function(){return h}});var r=e(5544),o=e(6540),i=e(758),c=e.n(i),u=e(118),a=e(1457),s=e(6606),l=e(4848),f=(0,o.createContext)({theme:"auto",resolvedTheme:"light",toggleTheme:function(){},setTheme:function(){}}),d="themeChange";function g(n){var t=n.children,e=(0,o.useState)((0,a.O4)()),g=(0,r.A)(e,2),h=g[0],p=g[1],m=(0,o.useState)((0,a.eW)((0,a.O4)())),v=(0,r.A)(m,2),y=v[0],S=v[1],k=(0,o.useRef)(null),b=(0,o.useCallback)(function(n){S((0,a.eW)(n))},[]),A=(0,o.useCallback)(function(n){(0,a.Rq)(n),k.current=n,"auto"===(0,a.O4)()&&S(n)},[]),w=(0,o.useCallback)(function(){try{var n=c().getAppBaseInfo();A("dark"===n.theme?"dark":"light")}catch(n){}try{c().createSelectorQuery().select(".system-theme-detector").fields({computedStyle:["opacity"]}).exec(function(n){var t=n&&n[0]&&n[0].computedStyle&&n[0].computedStyle.opacity;A("1"===t?"dark":"light")})}catch(n){}},[A]),T=(0,o.useCallback)(function(n){(0,a.F0)(n),p(n),"auto"===n?w():b(n)},[w,b]),C=(0,o.useCallback)(function(){var n="light"===y?"dark":"light";T(n)},[y,T]);return(0,o.useEffect)(function(){w()},[w]),(0,o.useEffect)(function(){var n,t=function(n){!n||"dark"!==n.theme&&"light"!==n.theme||A(n.theme)},e=c();return null===(n=e.onThemeChange)||void 0===n||n.call(e,t),function(){var n;null===(n=e.offThemeChange)||void 0===n||n.call(e,t)}},[A]),(0,o.useEffect)(function(){if("auto"===h){var n=setInterval(function(){try{var n=c().getAppBaseInfo(),t="dark"===n.theme?"dark":"light";t!==k.current&&A(t)}catch(n){}},2e3);return function(){return clearInterval(n)}}},[h,A]),(0,o.useEffect)(function(){c().eventCenter.trigger(d,y)},[y]),(0,o.useEffect)(function(){(0,s.G)(y)},[y]),(0,i.useDidShow)(function(){"auto"===h&&w()}),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(u.Ss,{className:"system-theme-detector"}),(0,l.jsx)(f.Provider,{value:{theme:h,resolvedTheme:y,toggleTheme:C,setTheme:T},children:t})]})}function h(){return(0,o.useContext)(f)}},9201:function(n,t,e){e.d(t,{c:function(){return a}});var r=e(5544),o=e(6540),i=e(758),c=e.n(i),u=null;function a(){var n=(0,o.useState)(null!==u&&void 0!==u?u:{statusBarHeight:20,menuButtonTop:26,menuButtonHeight:32,capsuleRight:368,safeInsetTop:20,safeInsetBottom:0,headerPaddingTop:66,backBtnPaddingTop:20}),t=(0,r.A)(n,2),e=t[0],i=t[1];return(0,o.useEffect)(function(){if(u)i(u);else try{var n,t,e,r,o,a,s,l,f=c().getSystemInfoSync(),d=c().getMenuButtonBoundingClientRect(),g=f.statusBarHeight||20,h=null!==(n=d.top)&&void 0!==n?n:g+4,p=null!==(t=d.height)&&void 0!==t?t:32,m=null!==(e=d.right)&&void 0!==e?e:f.windowWidth-7,v=null!==(r=null===(o=f.safeArea)||void 0===o?void 0:o.top)&&void 0!==r?r:g,y=null!==(a=f.safeAreaInsetBottom)&&void 0!==a?a:f.screenHeight-(null!==(s=null===(l=f.safeArea)||void 0===l?void 0:l.bottom)&&void 0!==s?s:f.screenHeight),S=Math.max(h+p+6,g+44),k=Math.max(g,h-4),b={statusBarHeight:g,menuButtonTop:h,menuButtonHeight:p,capsuleRight:m,safeInsetTop:v,safeInsetBottom:y,headerPaddingTop:S,backBtnPaddingTop:k};u=b,i(b)}catch(n){}},[]),e}},5414:function(n,t,e){e.d(t,{l:function(){return u}});var r=e(6540),o=e(758),i=e.n(o),c=e(6606);function u(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.mode,u=void 0===e?"auto":e,a=(0,r.useCallback)(function(){var t="dark"===u||"auto"===u&&"light"===n,e=t?"#000000":"#ffffff",r=t?"#faf7f2":"#191919";i().setNavigationBarColor({frontColor:e,backgroundColor:r}),(0,c.G)(n,r)},[u,n]);(0,r.useEffect)(a,[a]),(0,o.useDidShow)(a)}},6845:function(n,t,e){e.d(t,{l8:function(){return w},jp:function(){return f},gf:function(){return i.gf},xZ:function(){return T},iD:function(){return c},ri:function(){return a},x5:function(){return B},W$:function(){return A},r7:function(){return s}});var r=e(1212),o=e(467),i=e(3246);function c(n){return u.apply(this,arguments)}function u(){return u=(0,o.A)((0,r.A)().m(function n(t){var e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,i.Ay.post("/api/auth/login",{code:t},{auth:!1});case 1:return e=n.v,null!==e&&void 0!==e&&e.accessToken&&(0,i.WG)(e.accessToken),n.a(2,e)}},n)})),u.apply(this,arguments)}function a(){(0,i.L)()}function s(n){return l.apply(this,arguments)}function l(){return l=(0,o.A)((0,r.A)().m(function n(t){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,i.Ay.patch("/api/users/me",t))}},n)})),l.apply(this,arguments)}function f(){return d.apply(this,arguments)}function d(){return d=(0,o.A)((0,r.A)().m(function n(){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,i.Ay.get("/api/users/me"))}},n)})),d.apply(this,arguments)}var g=e(4765),h=e(9379),p=e(758),m=e.n(p);function v(n,t,e,r){return y.apply(this,arguments)}function y(){return y=(0,o.A)((0,r.A)().m(function n(t,e,o,c){var u,a;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.n=1,m().uploadFile({url:"".concat(i.C1).concat(t),filePath:e,name:o,formData:c,header:{Authorization:"Bearer ".concat((0,i.gf)())}});case 1:u=n.v,n.p=2,a=JSON.parse(u.data),n.n=4;break;case 3:throw n.p=3,n.v,new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5");case 4:if(!a||"number"!==typeof a.code||0===a.code){n.n=5;break}throw new Error(a.message||"\u8bf7\u6c42\u5931\u8d25");case 5:return n.a(2,a&&"number"===typeof a.code?a.data:a)}},n,null,[[2,3]])})),y.apply(this,arguments)}function S(n){return i.Ay.get("/api/upload/credentials?key=".concat(encodeURIComponent(n)))}function k(n,t){return b.apply(this,arguments)}function b(){return b=(0,o.A)((0,r.A)().m(function n(t,e){var o,i;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(e.presignedUrl){n.n=1;break}throw new Error("\u83b7\u53d6 COS \u76f4\u4f20\u5730\u5740\u5931\u8d25");case 1:return o=m().getFileSystemManager(),i=o.readFileSync(t),n.n=2,m().request({url:e.presignedUrl,method:"PUT",data:i,header:{"Content-Type":"application/octet-stream"}});case 2:return n.a(2,e.presignedUrl.split("?")[0])}},n)})),b.apply(this,arguments)}function A(n){return v("/api/sketch",n,"image")}function w(n,t,e){return v("/api/wordcloud/generate",n,"image",(0,h.A)({names:t},e?{params:JSON.stringify(e)}:{}))}function T(n){return i.Ay.get("/api/wordcloud/jobs/".concat(n))}function C(n){return!!n&&/^(wxfile:|http:\/\/tmp\/|tmp\/)/i.test(n)}function x(n){return _.apply(this,arguments)}function _(){return _=(0,o.A)((0,r.A)().m(function n(t){var e,o;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.p=0,e="uploads/sticker/".concat(Date.now(),"_").concat(Math.floor(1e6*Math.random()),".jpg"),n.n=1,S(e);case 1:return o=n.v,n.n=2,k(t,o);case 2:return n.a(2,n.v);case 3:return n.p=3,n.v,n.a(2,t)}},n,null,[[0,3]])})),_.apply(this,arguments)}function B(n){return j.apply(this,arguments)}function j(){return j=(0,o.A)((0,r.A)().m(function n(t){var e,o,i,c,u,a,s,l,f,d,p,m,v,y,S,k;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:if(t){n.n=1;break}return n.a(2,t);case 1:if(e=(0,h.A)({},t),!t.background||!C(t.background.src)){n.n=3;break}return a=h.A,s=(0,h.A)({},t.background),l={},n.n=2,x(t.background.src);case 2:f=n.v,e.background=a(s,l,{src:f});case 3:if(!t.stickers||!t.stickers.length){n.n=14;break}o=[],i=(0,g.A)(t.stickers),n.p=4,i.s();case 5:if((c=i.n()).done){n.n=10;break}if(u=c.value,d=o,!C(u.src)){n.n=7;break}return m=h.A,v=(0,h.A)({},u),y={},n.n=6,x(u.src);case 6:S=n.v,p=m(v,y,{src:S}),n.n=8;break;case 7:p=u;case 8:d.push.call(d,p);case 9:n.n=5;break;case 10:n.n=12;break;case 11:n.p=11,k=n.v,i.e(k);case 12:return n.p=12,i.f(),n.f(12);case 13:e.stickers=o;case 14:return n.a(2,e)}},n,null,[[4,11,12,13]])})),j.apply(this,arguments)}},8199:function(n,t,e){e.d(t,{uq:function(){return o}});var r="";function o(n){if(!n)return"";if(/^(https?:|wxfile:|data:)/i.test(n))return n;if(!r)return n;var t=r.replace(/\/+$/,"");if(!n.startsWith("/img/"))return n;var e=n.startsWith("/")?n:"/".concat(n);return"".concat(t).concat(e)}},6764:function(n,t,e){e.d(t,{d:function(){return y},m:function(){return h}});var r=e(1212),o=e(467),i=e(2284),c=e(758),u=e.n(c),a=e(6845),s=e(1457),l="smart_auth_verified",f=18e5,d=null,g=null;function h(){d=null,g=null;try{u().removeStorageSync(l)}catch(n){}}function p(n){var t=d||function(){try{var n=u().getStorageSync(l);return n&&"object"===(0,i.A)(n)?n:null}catch(n){return null}}();return t&&t.openid===n?Date.now()-t.at>f?null:(d=t,t.ok):null}function m(n,t){var e={openid:n,ok:t,at:Date.now()};d=e;try{u().setStorageSync(l,e)}catch(n){}}function v(){var n=(0,s.Q4)();return!(null===n||void 0===n||!n.openid)&&!(0,s.Ic)(n.openid)&&!!n.accessToken&&!!(0,a.gf)()}function y(){return S.apply(this,arguments)}function S(){return S=(0,o.A)((0,r.A)().m(function n(){var t,e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(t=(0,s.Q4)(),null!==t&&void 0!==t&&t.openid){n.n=1;break}return console.log("[AuthGuard] \u65e0\u672c\u5730\u7528\u6237\uff0c\u5224\u5b9a\u672a\u767b\u5f55"),n.a(2,!1);case 1:if(console.log("[AuthGuard] \u672c\u5730\u7528\u6237 openid=",t.openid),!(0,s.Ic)(t.openid)){n.n=2;break}return(0,s.Hf)(),(0,a.ri)(),h(),n.a(2,!1);case 2:if(e=p(t.openid),null===e){n.n=3;break}return console.log("[AuthGuard] \u547d\u4e2d\u672c\u5730\u7f13\u5b58 ok=",e),n.a(2,e);case 3:return g||(g=(0,a.jp)().then(function(n){console.log("[AuthGuard] getMe \u8fd4\u56de:",JSON.stringify(n));var e=!!n&&!!n.id&&n.openid===t.openid;return console.log("[AuthGuard] \u4e00\u81f4\u6027=",e),e?(m(t.openid,!0),!0):((0,s.Hf)(),(0,a.ri)(),h(),!1)}).catch(function(n){return console.error("[AuthGuard] getMe \u5931\u8d25\uff0c\u8d70\u672c\u5730\u4f1a\u8bdd\u515c\u5e95:",n),v()}).finally(function(){g=null})),n.a(2,g)}},n)})),S.apply(this,arguments)}},5234:function(n,t,e){e.d(t,{QE:function(){return l},R6:function(){return u},rj:function(){return s},y9:function(){return a},zv:function(){return c}});var r=e(9379),o=e(8199),i=[{id:"notebook-small",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5c0f\uff09",desc:"\u4fbf\u643a\u968f\u884c\uff0c\u8bb0\u5f55\u70b9\u6ef4",icon:"/icon/\u4e66\u672c.png",iconImg:"/icon/\u4e66\u672c.png",price:12,originalPrice:18,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u4f18\u8d28\u7eb8\u5f20\uff0c\u5c01\u9762\u91c7\u7528\u9ad8\u6863PU\u6750\u8d28\uff0c\u624b\u611f\u7ec6\u817b\u3002\u5185\u9875\u53ef\u5b9a\u5236\u6a2a\u7ebf\u3001\u65b9\u683c\u6216\u7a7a\u767d\u4e09\u79cd\u7248\u5f0f\u3002\u6fc0\u5149\u5fae\u96d5\u5de5\u827a\u5c06\u540d\u5b57\u6216\u56fe\u6848\u7cbe\u51c6\u523b\u5370\u5728\u5c01\u9762\uff0c\u6c38\u4e0d\u892a\u8272\u3002\u5c0f\u5de7\u8f7b\u4fbf\uff0c\u9002\u5408\u968f\u8eab\u643a\u5e26\uff0c\u65e0\u8bba\u662f\u8bfe\u5802\u7b14\u8bb0\u8fd8\u662f\u65e5\u5e38\u5907\u5fd8\uff0c\u90fd\u662f\u4f60\u7684\u4e13\u5c5e\u4f34\u4fa3\u3002",subtitle:"\u638c\u5fc3\u95f4\u7684\u4e13\u5c5e\u5370\u8bb0 \xb7 \u6fc0\u5149\u5fae\u96d5 \xb7 \u4e09\u8272\u5185\u9875\u53ef\u9009",tone:[28,22,18],story:"\u7075\u611f\u6e90\u81ea\u624b\u8d26\u6587\u5316\u4e2d\u5bf9\u4e66\u5199\u4eea\u5f0f\u611f\u7684\u8ffd\u6c42\u3002\u6211\u4eec\u76f8\u4fe1\uff0c\u5728\u6570\u5b57\u6d2a\u6d41\u7684\u65f6\u4ee3\uff0c\u7eb8\u7b14\u7684\u6e29\u5ea6\u4f9d\u7136\u4e0d\u53ef\u66ff\u4ee3\u3002\u5f53\u6fc0\u5149\u5fae\u96d5\u5728PU\u5c01\u9762\u4e0a\u7559\u4e0b\u4e13\u5c5e\u5370\u8bb0\uff0c\u6bcf\u4e00\u7b14\u4e66\u5199\u90fd\u5728\u4e0e\u8fc7\u53bb\u5bf9\u8bdd\u3002\u7b14\u8bb0\u672c\u5c0f\u5de7\u5230\u8db3\u4ee5\u653e\u5165\u4efb\u4f55\u53e3\u888b\uff0c\u5374\u627f\u8f7d\u7740\u72ec\u4e00\u65e0\u4e8c\u7684\u8bb0\u5fc6\u3002",scene:"\u8bfe\u5802\u7b14\u8bb0\u3001\u65e5\u5e38\u5907\u5fd8\u3001\u65c5\u884c\u624b\u8d26\u3001\u5fc3\u60c5\u65e5\u8bb0\u3002\u9002\u5408\u9001\u7ed9\u540c\u5b66\u3001\u4f34\u4fa3\u6216\u4f5c\u4e3a\u6d3b\u52a8\u4f34\u624b\u793c\u2014\u2014\u8ba9\u6bcf\u4e00\u4e2a\u4eba\u90fd\u62e5\u6709\u523b\u7740\u81ea\u5df1\u540d\u5b57\u7684\u4e13\u5c5e\u7b14\u8bb0\u672c\u3002",tags:["\u4f34\u624b\u793c","\u5b66\u751f","\u624b\u8d26","\u4fbf\u643a","\u6fc0\u5149\u5fae\u96d5"],specs:[["\u5c3a\u5bf8","105 \xd7 148mm\uff08A6\uff09"],["\u9875\u6570","120\u5f20/240\u9875"],["\u5185\u9875\u7248\u5f0f","\u6a2a\u7ebf / \u65b9\u683c / \u7a7a\u767d \u53ef\u9009"],["\u5c01\u9762\u6750\u8d28","\u9ad8\u6863PU\u76ae\u9769"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u6c38\u4e0d\u892a\u8272\uff09"],["\u9002\u7528\u573a\u666f","\u8bfe\u5802\u3001\u65c5\u884c\u3001\u65e5\u5e38\u5907\u5fd8"]],images:["/img/book_small/The1.jpg"],mask:{shape:"rect",width:300,height:420,borderRadius:8}},{id:"notebook-large",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5927\uff09",desc:"\u5927\u5f00\u672c\uff0c\u66f4\u591a\u521b\u4f5c\u7a7a\u95f4",icon:"/icon/\u4e66\u672c_\u5927.png",iconImg:"/icon/\u4e66\u672c_\u5927.png",price:45,originalPrice:58,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"A4\u5c3a\u5bf8\u5927\u5f00\u672c\uff0c180\xb0\u5e73\u644a\u8bbe\u8ba1\uff0c\u4e66\u5199\u66f4\u81ea\u7531\u3002\u5c01\u9762\u53ef\u9009\u771f\u76ae\u3001\u4eff\u5e03\u7eb9\u6216\u78e8\u7802\u6750\u8d28\uff0c\u6fc0\u5149\u5fae\u96d5\u533a\u57df\u66f4\u5927\uff0c\u9002\u5408\u5448\u73b0\u5168\u73ed\u540d\u5b57\u3001\u56e2\u961f\u53e3\u53f7\u6216\u516c\u53f8Logo\u7b49\u5927\u7bc7\u5e45\u5185\u5bb9\u3002\u662f\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u4f01\u4e1a\u5e74\u4f1a\u793c\u54c1\u7684\u9996\u9009\u3002",subtitle:"\u5927\u7bc7\u5e45\u5b9a\u5236\u9996\u9009 \xb7 180\xb0\u5e73\u644a \xb7 \u6bd5\u4e1a/\u56e2\u5efa\u5fc5\u5907",tone:[35,28,22],story:"\u6bcf\u4e00\u6b21\u544a\u522b\u90fd\u503c\u5f97\u88ab\u90d1\u91cd\u4e66\u5199\u3002\u6bd5\u4e1a\u5b63\u7684\u6559\u5ba4\u91cc\uff0c\u7b14\u8bb0\u672c\u644a\u5f00\u5728\u8bfe\u684c\u4e0a\uff0c\u5168\u73ed\u7684\u540d\u5b57\u88ab\u6fc0\u5149\u523b\u5370\u5728\u5c01\u9762\u4e2d\u592e\uff0c\u6210\u4e3a\u6c38\u6052\u7684\u540c\u5b66\u5f55\u3002180\xb0\u5e73\u644a\u8bbe\u8ba1\u8ba9\u4e66\u5199\u4e0d\u518d\u88ab\u8ba2\u88c5\u675f\u7f1a\uff0cA4\u5927\u5c3a\u5bf8\u7ed9\u4f60\u5c3d\u60c5\u6325\u6d12\u7684\u5929\u5730\u3002\u8fd9\u662f\u9001\u7ed9\u4e00\u7fa4\u4eba\u6700\u597d\u7684\u544a\u522b\u793c\u7269\u3002",scene:"\u6bd5\u4e1a\u7eaa\u5ff5\u518c\u3001\u516c\u53f8\u5e74\u4f1a\u793c\u54c1\u3001\u56e2\u961f\u5efa\u8bbe\u4f34\u624b\u793c\u3001\u5ba2\u6237\u7b54\u8c22\u3002\u7279\u522b\u9002\u5408\u9700\u8981\u5728\u5c01\u9762\u5448\u73b0\u5927\u91cf\u6587\u5b57\u6216\u56fe\u6848\u7684\u5b9a\u5236\u9700\u6c42\u2014\u2014\u73ed\u7ea7\u540d\u5355\u3001\u516c\u53f8\u613f\u666f\u3001\u56e2\u961f\u53e3\u53f7\u4e00\u7f51\u6253\u5c3d\u3002",tags:["\u6bd5\u4e1a\u793c","\u56e2\u5efa","\u4f01\u4e1a\u5b9a\u5236","\u5927\u7bc7\u5e45","\u5e73\u644a\u8bbe\u8ba1"],specs:[["\u5c3a\u5bf8","210 \xd7 297mm\uff08A4\uff09"],["\u9875\u6570","100\u5f20/200\u9875"],["\u5c01\u9762\u6750\u8d28","\u771f\u76ae / \u4eff\u5e03\u7eb9 / \u78e8\u7802 \u53ef\u9009"],["\u5f00\u5408\u9002\u7528","180\xb0\u5e73\u644a\u8bbe\u8ba1"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u9ad8\u6e05\u6670\u5ea6\uff09"],["\u5b9a\u5236\u9762\u79ef","\u5c01\u9762\u6574\u9762\u53ef\u96d5"]],images:["/img/book_big/The1.jpg","/img/book_big/The2.jpg"],mask:{shape:"rect",width:340,height:480,borderRadius:8}},{id:"coaster",name:"\u94dc\u8d28\u676f\u57ab",desc:"\u91d1\u5c5e\u8d28\u611f\uff0c\u684c\u9762\u827a\u672f",icon:"/icon/\u676f\u5b50.png",iconImg:"/icon/\u676f\u5b50.png",price:25,originalPrice:35,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u91c7\u7528\u4f18\u8d28\u9ec4\u94dc\u6750\u8d28\uff0c\u8868\u9762\u7ecf\u62c9\u4e1d\u5de5\u827a\u5904\u7406\uff0c\u5448\u73b0\u54d1\u5149\u91d1\u5c5e\u8d28\u611f\u3002\u80cc\u9762\u914d\u6709\u9632\u6ed1\u8f6f\u6728\u57ab\uff0c\u4fdd\u62a4\u684c\u9762\u540c\u65f6\u9632\u6b62\u6ed1\u52a8\u3002\u6fc0\u5149\u5fae\u96d5\u53ef\u5728\u8868\u9762\u523b\u5370\u540d\u5b57\u3001\u65e5\u671f\u6216\u795d\u798f\u8bed\uff0c\u662f\u4e54\u8fc1\u65b0\u5c45\u3001\u65b0\u5a5a\u8d3a\u793c\u7684\u7cbe\u81f4\u4e4b\u9009\u3002",subtitle:"\u9ec4\u94dc\u8d28\u611f \xb7 \u62c9\u4e1d\u54d1\u5149 \xb7 \u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851",tone:[42,30,18],story:"\u8bbe\u8ba1\u7075\u611f\u6765\u81ea\u65e5\u5f0f\u4f98\u5bc2\u7f8e\u5b66\u3002\u5c81\u6708\u4f1a\u5728\u9ec4\u94dc\u8868\u9762\u7559\u4e0b\u6e29\u67d4\u7684\u6c27\u5316\u75d5\u8ff9\uff0c\u5c31\u5982\u540c\u4e00\u676f\u8336\u4ece\u70ed\u5230\u51c9\u7684\u8fc7\u7a0b\u3002\u62c9\u4e1d\u5904\u7406\u540e\u7684\u54d1\u5149\u8868\u9762\u5728\u706f\u5149\u4e0b\u5448\u73b0\u7ec6\u817b\u7684\u91d1\u5c5e\u7eb9\u7406\uff0c\u6fc0\u5149\u5fae\u96d5\u7684\u540d\u5b57\u6210\u4e3a\u8fd9\u4ef6\u5668\u7269\u4e0a\u6700\u51b7\u9759\u7684\u6ce8\u811a\u3002\u5b83\u4e0d\u53ea\u662f\u676f\u57ab\uff0c\u66f4\u662f\u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851\u3002",scene:"\u4e54\u8fc1\u9001\u793c\u3001\u65b0\u5a5a\u8d3a\u793c\u3001\u5496\u5561\u89d2\u5e03\u7f6e\u3001\u529e\u516c\u684c\u7f8e\u5b66\u3002\u9002\u5408\u9001\u7ed9\u559c\u6b22\u624b\u51b2\u5496\u5561\u7684\u670b\u53cb\uff0c\u6216\u4f5c\u4e3a\u5a5a\u793c\u5bbe\u5ba2\u7684\u56de\u793c\u2014\u2014\u6bcf\u4e00\u53ea\u676f\u57ab\u4e0a\u90fd\u523b\u7740\u5bbe\u5ba2\u7684\u540d\u5b57\uff0c\u8ba9\u793c\u7269\u672c\u8eab\u6210\u4e3a\u5ea7\u4f4d\u5361\u3002",tags:["\u4e54\u8fc1\u793c","\u65b0\u5a5a\u8d3a\u793c","\u684c\u9762\u7f8e\u5b66","\u9ec4\u94dc","\u624b\u51b2\u5496\u5561"],specs:[["\u6750\u8d28","\u9ec4\u94dc + \u80cc\u9762\u8f6f\u6728\u9632\u6ed1\u57ab"],["\u8868\u9762\u5904\u7406","\u62c9\u4e1d\u54d1\u5149"],["\u76f4\u5f84","100mm"],["\u539a\u5ea6","3mm"],["\u96d5\u523b\u5de5\u827a","\u5149\u7ea4\u6fc0\u5149\u7cbe\u7ec6\u5fae\u96d5"],["\u8010\u6e29","\u2264120\xb0C"]],images:["/img/cup/The1.jpg"],mask:{shape:"circle",width:280,height:280}},{id:"penbox",name:"\u7af9\u5236\u7b14\u76d2",desc:"\u81ea\u7136\u7af9\u7eb9\uff0c\u6587\u623f\u96c5\u5668",icon:"/icon/\u7b14\u76d2.png",iconImg:"/icon/\u7b14\u76d2.png",price:75,originalPrice:98,leadTime:"7-10\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u5929\u7136\u6960\u7af9\uff0c\u7ecf\u591a\u9053\u5de5\u5e8f\u6253\u78e8\u629b\u5149\uff0c\u4fdd\u7559\u5929\u7136\u7af9\u7eb9\u808c\u7406\u3002\u76d2\u76d6\u91c7\u7528\u78c1\u5438\u5f00\u5408\uff0c\u5185\u90e8\u8bbe\u6709\u5206\u5c42\u9694\u677f\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u7af9\u9762\u4e0a\u5448\u73b0\u6df1\u6d45\u4e0d\u4e00\u7684\u96d5\u523b\u6548\u679c\uff0c\u878d\u5165\u58a8\u9999\u6c14\u8d28\u3002\u9002\u5408\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u7684\u6587\u623f\u4f34\u4fa3\u3002",subtitle:"\u5929\u7136\u6960\u7af9 \xb7 \u78c1\u5438\u5f00\u5408 \xb7 \u6587\u623f\u96c5\u5668\u4e4b\u9009",tone:[30,24,16],story:"\u6bcf\u4e00\u53ea\u7b14\u76d2\u90fd\u6765\u81ea\u540c\u4e00\u7247\u7af9\u6797\u7684\u4e0d\u540c\u90e8\u4f4d\uff0c\u56e0\u6b64\u7eb9\u8def\u7edd\u4e0d\u91cd\u590d\u2014\u2014\u6b63\u5982\u6ca1\u6709\u4e24\u4e2a\u4eba\u7684\u4e66\u6cd5\u98ce\u683c\u5b8c\u5168\u76f8\u540c\u3002\u6211\u4eec\u4fdd\u7559\u4e86\u6960\u7af9\u5929\u7136\u7684\u6e29\u6da6\u89e6\u611f\uff0c\u53ea\u5728\u8868\u9762\u4ee5\u6fc0\u5149\u523b\u4e0b\u540d\u5b57\u6216\u4e00\u53e5\u7bb4\u8a00\u3002\u6253\u5f00\u78c1\u5438\u76d2\u76d6\u65f6\u7684\u6e05\u8106\u58f0\u54cd\uff0c\u662f\u6587\u623f\u4e2d\u7684\u5c0f\u5c0f\u4eea\u5f0f\u3002",scene:"\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u88c5\u5907\u3001\u6559\u5e08\u8282\u793c\u7269\u3001\u4e66\u623f\u6696\u623f\u793c\u3002\u9002\u5408\u9001\u7ed9\u5199\u5b57\u597d\u770b\u7684\u4eba\u2014\u2014\u56e0\u4e3a\u61c2\u4e66\u5199\u7684\u4eba\uff0c\u624d\u61c2\u4e00\u53ea\u597d\u7b14\u76d2\u7684\u5206\u91cf\u3002",tags:["\u6587\u623f","\u4e66\u6cd5","\u6559\u5e08\u8282","\u4e66\u623f","\u5929\u7136\u6750\u8d28"],specs:[["\u6750\u8d28","\u5929\u7136\u6960\u7af9"],["\u5f00\u5408\u65b9\u5f0f","\u78c1\u5438\u5f0f\u76d2\u76d6"],["\u5185\u90e8\u7ed3\u6784","\u5206\u5c42\u9694\u677f\uff08\u53ef\u8c03\u8282\uff09"],["\u5c3a\u5bf8","200 \xd7 65 \xd7 30mm"],["\u8868\u9762\u5904\u7406","\u624b\u5de5\u6253\u78e8\u629b\u5149\uff0c\u65e0\u6f06"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u70e7\u8680\uff08\u6df1\u6d45\u53ef\u8c03\uff09"]],images:["/img/penbox/The1.jpg","/img/penbox/The2.jpg","/img/penbox/The3.jpg"],mask:{shape:"rect",width:320,height:160,borderRadius:12}},{id:"booklamp",name:"\u4e66\u672c\u578b\u706f",desc:"\u6e29\u6696\u5149\u5f71\uff0c\u70b9\u4eae\u5fc3\u610f",icon:"/icon/\u4e66\u706f.png",iconImg:"/icon/\u4e66\u706f.png",price:45,originalPrice:68,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u5f00\u5408\u5f0f\u8bbe\u8ba1\uff0c\u6253\u5f00\u5373\u4eae\uff0c\u5408\u62e2\u5373\u706d\uff0c\u5982\u9b54\u6cd5\u4e66\u822c\u5145\u6ee1\u60ca\u559c\u3002\u91c7\u7528LED\u6696\u5149\u706f\u6e90\uff0c\u5149\u7ebf\u67d4\u548c\u4e0d\u523a\u773c\uff0c\u53ef\u6301\u7eed\u70b9\u4eae6-8\u5c0f\u65f6\u3002\u5c01\u9762\u6fc0\u5149\u5fae\u96d5\u53ef\u5b9a\u5236\u6587\u5b57\u3001\u56fe\u6848\u6216\u7167\u7247\uff0c\u8ba9\u6e29\u6696\u7684\u706f\u5149\u627f\u8f7d\u4e13\u5c5e\u8bb0\u5fc6\u3002\u662f\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u793c\u7269\u7684\u521b\u610f\u4e4b\u9009\u3002",subtitle:"\u5f00\u5408\u5373\u4eae \xb7 LED\u6696\u5149 \xb7 \u9b54\u6cd5\u4e66\u822c\u7684\u60ca\u559c",tone:[25,20,15],story:"\u7075\u611f\u6765\u81ea\u300a\u54c8\u5229\xb7\u6ce2\u7279\u300b\u4e2d\u7684\u9b54\u6cd5\u8bfe\u672c\u2014\u2014\u6253\u5f00\u4e00\u672c\u4e66\uff0c\u5149\u8292\u503e\u6cfb\u800c\u51fa\u3002\u6211\u4eec\u91c7\u7528\u675c\u90a6\u7eb8\u4e0e\u5b9e\u6728\u5c01\u9762\u7ed3\u5408\uff0c\u8ba9\u706f\u4f53\u65e2\u8f7b\u8584\u53c8\u575a\u56fa\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u5c01\u9762\u7559\u4e0b\u4f60\u7684\u540d\u5b57\u6216\u4e00\u5e45\u5c0f\u753b\uff0c\u5f53\u706f\u5728\u6df1\u591c\u4eae\u8d77\uff0c\u90a3\u662f\u4e13\u5c5e\u4e8e\u4f60\u7684\u6e29\u6696\u89d2\u843d\u3002",scene:"\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u5e8a\u5934\u591c\u706f\u3001\u9732\u8425\u6c1b\u56f4\u706f\u3001\u513f\u7ae5\u623f\u3002\u7279\u522b\u9002\u5408\u5728\u5c01\u9762\u523b\u4e0a\u4e24\u4e2a\u4eba\u7684\u540d\u5b57\u548c\u4e00\u53e5\u60c5\u8bdd\uff0c\u5728\u60c5\u4eba\u8282\u6216\u7eaa\u5ff5\u65e5\u9001\u51fa\u2014\u2014\u6253\u5f00\u4e66\u706f\uff0c\u5c31\u50cf\u6253\u5f00\u4e00\u5c01\u4f1a\u53d1\u5149\u7684\u60c5\u4e66\u3002",tags:["\u60c5\u4fa3\u793c","\u6bd5\u4e1a\u7eaa\u5ff5","\u591c\u706f","\u6c1b\u56f4\u706f","\u521b\u610f\u793c\u7269"],specs:[["\u5149\u6e90","LED \u6696\u767d\u5149\uff083000K\uff09"],["\u7eed\u822a","6-8\u5c0f\u65f6\uff08\u5185\u7f6e\u53ef\u5145\u7535\u9502\u7535\u6c60\uff09"],["\u5145\u7535","USB Type-C \u63a5\u53e3"],["\u5c01\u9762\u6750\u8d28","\u675c\u90a6\u7eb8 + \u5b9e\u6728\u5c01\u9762"],["\u5c55\u5f00\u5c3a\u5bf8","210 \xd7 150mm"],["\u96d5\u523b\u5de5\u827a","\u6fc0\u5149\u5fae\u96d5\uff08\u652f\u6301\u6587\u5b57+\u7b80\u5355\u56fe\u6848\uff09"]],images:["/img/booklight/The1.jpg","/img/booklight/The2.jpg"],mask:{shape:"rect",width:320,height:240,borderRadius:4}}],c=i.map(function(n){return(0,r.A)((0,r.A)({},n),{},{images:(n.images||[]).map(function(n){return(0,o.uq)(n)}),iconImg:(0,o.uq)(n.iconImg)})}),u=c,a=function(n){return c.find(function(t){return t.id===n})},s={"notebook-small":(0,o.uq)("/icon/\u4e66\u672c.png"),"notebook-large":(0,o.uq)("/icon/\u4e66\u672c_\u5927.png"),coaster:(0,o.uq)("/icon/\u676f\u5b50.png"),penbox:(0,o.uq)("/icon/\u7b14\u76d2.png"),booklamp:(0,o.uq)("/icon/\u4e66\u706f.png")};function l(n){return null!==n&&void 0!==n&&n.iconImg?(0,o.uq)(n.iconImg):null!==n&&void 0!==n&&n.id?(0,o.uq)(s[n.id]||"/icon/\u56db\u89d2\u661f.svg"):(0,o.uq)("/icon/\u56db\u89d2\u661f.svg")}},3246:function(n,t,e){e.d(t,{C1:function(){return a},L:function(){return g},Sy:function(){return l},WG:function(){return d},gf:function(){return f},q:function(){return m}});var r=e(1212),o=e(9379),i=e(467),c=e(758),u=e.n(c),a="https://wxbackend.tokenleaping.com",s="smart_access_token";function l(){try{u().hideLoading()}catch(n){}}function f(){try{return u().getStorageSync(s)||""}catch(n){return""}}function d(n){u().setStorageSync(s,n)}function g(){try{u().removeStorageSync(s)}catch(n){}}var h=null;var p=null;function m(n){p=n}function v(n,t,e,r){return y.apply(this,arguments)}function y(){return y=(0,i.A)((0,r.A)().m(function n(t,e,o,i){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,u().request({url:"".concat(a).concat(t),method:e,data:o,header:i}))}},n)})),y.apply(this,arguments)}function S(n){return k.apply(this,arguments)}function k(){return k=(0,i.A)((0,r.A)().m(function n(t){var e,i,c,u,a,s,l,d,m,y,S,k,b,A,w,T,C,x,_=arguments;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return e=_.length>1&&void 0!==_[1]?_[1]:{},i=e.method,c=void 0===i?"GET":i,u=e.data,a=e.headers,s=void 0===a?{}:a,l=e.auth,d=void 0===l||l,m=e.skipAuthRefresh,y=void 0!==m&&m,S=function(){var n=f();return(0,o.A)((0,o.A)({"Content-Type":"application/json"},d&&n?{Authorization:"Bearer ".concat(n)}:{}),s)},n.p=1,n.n=2,v(t,c,u,S());case 2:k=n.v,n.n=4;break;case 3:throw n.p=3,n.v,b=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),b.statusCode=-1,b;case 4:if(401!==k.statusCode||y||!p){n.n=9;break}return n.n=5,p();case 5:if(A=n.v,!A){n.n=9;break}return n.p=6,n.n=7,v(t,c,u,S());case 7:k=n.v,n.n=9;break;case 8:throw n.p=8,n.v,w=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),w.statusCode=-1,w;case 9:if(401!==k.statusCode){n.n=10;break}throw g(),null===(T=h)||void 0===T||T(),C=new Error("\u767b\u5f55\u5df2\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55"),C.statusCode=401,C;case 10:if(x=k.data,!x||"number"!==typeof x.code||0===x.code){n.n=11;break}throw new Error(x.message||"\u8bf7\u6c42\u5931\u8d25");case 11:return n.a(2,x&&"number"===typeof x.code?x.data:x)}},n,null,[[6,8],[1,3]])})),k.apply(this,arguments)}var b={get:function(n,t){return S(n,(0,o.A)((0,o.A)({},t),{},{method:"GET"}))},post:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"POST",data:t}))},put:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"PUT",data:t}))},patch:function(n,t,e){return S(n,(0,o.A)((0,o.A)({},e),{},{method:"PATCH",data:t}))},del:function(n,t){return S(n,(0,o.A)((0,o.A)({},t),{},{method:"DELETE"}))}};t.Ay=b},1457:function(n,t,e){e.d(t,{E1:function(){return O},cY:function(){return S},Hf:function(){return P},kg:function(){return H},ab:function(){return Q},hG:function(){return F},IU:function(){return C},Re:function(){return U},EB:function(){return z},p_:function(){return v},n7:function(){return w},O4:function(){return V},ug:function(){return q},Q4:function(){return I},Ic:function(){return u},Q1:function(){return M},kh:function(){return b},eW:function(){return X},Fu:function(){return y},Rq:function(){return K},F0:function(){return Z},iA:function(){return R},iZ:function(){return Y},yU:function(){return L},i5:function(){return k},uF:function(){return G}});var r=e(758),o=e.n(r),i="smart_user_info",c="smart_active_openid";function u(n){return!!n&&(n.startsWith("mock_")||n.startsWith("mock-"))}function a(){var n,t=null;try{t=o().getStorageSync(i)}catch(n){t=null}var e=(null===(n=t)||void 0===n?void 0:n.openid)||o().getStorageSync(c)||"_guest_";return o().setStorageSync(c,e),e}function s(n){var t=a();return"".concat(n,"_").concat(t)}function l(n,t){return"".concat(n,"_").concat(t)}var f=e(6764),d=e(9379),g=e(436),h=e(8199),p=e(5234);function m(n){try{return o().getStorageSync(l("design_list",n))||[]}catch(n){return[]}}function v(){try{return o().getStorageSync(s("design_list"))||[]}catch(n){return[]}}function y(n){o().setStorageSync(s("design_list"),n)}function S(n,t){var e=v(),r=(0,h.uq)((null===n||void 0===n?void 0:n.iconImg)||p.rj[null===n||void 0===n?void 0:n.id]||"/icon/\u56db\u89d2\u661f.svg"),o={id:"DSG"+Date.now(),productId:n.id,productName:n.name,productIcon:r,unitPrice:n.price,count:t,status:"undesigned",createdAt:(new Date).toISOString().slice(0,10)};return y([].concat((0,g.A)(e),[o])),o}function k(n,t){var e=v(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(e[r]=(0,d.A)((0,d.A)({},e[r]),t),y(e))}function b(n){var t=v().filter(function(t){return!n.includes(t.id)});y(t)}function A(n){try{return o().getStorageSync(l("order_list",n))||[]}catch(n){return[]}}function w(){try{return o().getStorageSync(s("order_list"))||[]}catch(n){return[]}}function T(n){o().setStorageSync(s("order_list"),n)}function C(n){var t,e=v(),r=w(),o=e.find(function(t){return t.id===n});if(!o)return null;var i=null!==(t=o.productIcon)&&void 0!==t&&t.startsWith("/icon/")||/^https?:/i.test(o.productIcon||"")?o.productIcon:p.rj[o.productId]||"/icon/\u56db\u89d2\u661f.svg",c=(0,h.uq)(i),u={id:"ORD"+Date.now().toString().slice(-9),productName:o.productName,productIcon:c,statusCode:"pending",date:(new Date).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).replace(/\//g,"-"),price:"\xa5"+(o.unitPrice*o.count).toFixed(2),count:o.count,sku:"".concat(o.productName," \xd7 ").concat(o.count)},a=e.findIndex(function(t){return t.id===n});return-1!==a&&(e[a].status="ordered",e[a].orderId=u.id),y(e),T([u].concat((0,g.A)(r))),u}var x="smart_user_registry",_="zhihui2024";function B(){try{return o().getStorageSync(x)||[]}catch(n){return[]}}function j(n){var t=B();t.includes(n)||(t.push(n),o().setStorageSync(x,t))}function N(n){var t=B().filter(function(t){return t!==n});o().setStorageSync(x,t)}function I(){try{return o().getStorageSync(i)}catch(n){return null}}function E(n){var t;o().setStorageSync(i,n),null!==n&&void 0!==n&&n.openid&&(o().setStorageSync(c,n.openid),o().setStorageSync("user_info_".concat(n.openid),n),j(n.openid)),(0,f.m)(),null===(t=o().eventCenter)||void 0===t||t.trigger("authStateChanged",{openid:(null===n||void 0===n?void 0:n.openid)||""})}function D(n){try{var t=o().getStorageSync("user_info_".concat(n));if(t)return t}catch(n){}var e=I();return(null===e||void 0===e?void 0:e.openid)===n?e:null}function P(){var n;o().removeStorageSync(i),o().removeStorageSync(c),(0,f.m)(),null===(n=o().eventCenter)||void 0===n||n.trigger("authStateChanged",{openid:""})}function R(n){E(n)}function q(){return I()}function M(){var n=B();return n.map(function(n){var t=D(n),e=m(n),r=A(n);return{openid:n,nickName:(null===t||void 0===t?void 0:t.nickName)||"\u672a\u77e5\u7528\u6237",avatarUrl:(null===t||void 0===t?void 0:t.avatarUrl)||"",loginAt:(null===t||void 0===t?void 0:t.loginAt)||0,designCount:e.length,orderCount:r.length}})}function H(n,t){var e="mock_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,6),r={openid:e,nickName:n||"\u5fae\u4fe1\u7528\u6237",avatarUrl:t||"",loginAt:Date.now()};return E(r),r}function Y(n){var t=D(n);return!!t&&(o().setStorageSync(i,t),o().setStorageSync(c,n),!0)}function F(n){o().removeStorageSync("user_info_".concat(n)),o().removeStorageSync("design_list_".concat(n)),o().removeStorageSync("order_list_".concat(n)),o().removeStorageSync("address_list_".concat(n)),N(n);var t=I();(null===t||void 0===t?void 0:t.openid)===n&&P()}function G(n){return n===_}function U(){try{return o().getStorageSync(s("address_list"))||[]}catch(n){return[]}}function W(n){o().setStorageSync(s("address_list"),n)}function O(n){var t=U(),e=(0,d.A)((0,d.A)({},n),{},{id:"ADR"+Date.now()});return e.isDefault&&t.forEach(function(n){n.isDefault=!1}),W([e].concat((0,g.A)(t))),e}function L(n,t){var e=U(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(t.isDefault&&e.forEach(function(n){n.isDefault=!1}),e[r]=(0,d.A)((0,d.A)({},e[r]),t),W(e))}function Q(n){var t=U().filter(function(t){return t.id!==n});W(t)}function z(){return U().find(function(n){return n.isDefault})}var J="smart_theme";function V(){try{return o().getStorageSync(J)||"auto"}catch(n){return"auto"}}function Z(n){o().setStorageSync(J,n)}var $=null;function K(n){$=n}function X(n){if("auto"===n){if($)return $;try{var t=o().getAppBaseInfo();if("dark"===t.theme||"light"===t.theme)return t.theme}catch(n){}return"light"}return n}},6606:function(n,t,e){e.d(t,{G:function(){return c}});var r=e(758),o=e.n(r);function i(n){return"dark"===n?"#191919":"#faf7f2"}function c(n,t){var e=null!==t&&void 0!==t?t:i(n);o().setBackgroundColor({backgroundColor:e,backgroundColorTop:e,backgroundColorBottom:e}),o().setBackgroundTextStyle({textStyle:"dark"===n?"light":"dark"})}}}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[76],{9513:function(n,t,e){e.d(t,{A:function(){return o}});var r=e(118),i=e(4848);function o(n){var t=n.children,e=n.className,o=n.style;return(0,i.jsx)(r.Ss,{className:"bottom-action-bar ".concat(e||""),style:o,children:t})}},7723:function(n,t,e){e.d(t,{A:function(){return f}});var r=e(5544),i=e(758),o=e.n(i),u=e(6540),c=e(118),a=e(6764),s=e(9703),l=e(8199),d=e(4848);function f(n){var t=(0,u.useState)("checking"),e=(0,r.A)(t,2),i=e[0],f=e[1],p=(0,u.useCallback)(function(){var n=!1;return(0,a.d)().then(function(t){n||f(t?"ok":"denied")}).catch(function(){n||f("denied")}),function(){n=!0}},[]);return(0,u.useEffect)(function(){var n=p(),t=function(){p()},e=function(){p()};return o().eventCenter.on("tabBarChange",t),o().eventCenter.on(s.Wo,e),o().eventCenter.on("authStateChanged",t),function(){n(),o().eventCenter.off("tabBarChange",t),o().eventCenter.off(s.Wo,e),o().eventCenter.off("authStateChanged",t)}},[p]),"checking"===i?(0,d.jsx)(c.Ss,{className:"login-guard",children:(0,d.jsxs)(c.Ss,{className:"login-guard-inner",children:[(0,d.jsx)(c._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u8bbe\u7f6e.png"),mode:"aspectFit"}),(0,d.jsx)(c.EY,{className:"login-guard-title",children:"\u6821\u9a8c\u767b\u5f55\u72b6\u6001"})]})}):"denied"===i?(0,d.jsx)(c.Ss,{className:"login-guard",children:(0,d.jsxs)(c.Ss,{className:"login-guard-inner",children:[(0,d.jsx)(c._V,{className:"login-guard-icon",src:(0,l.uq)("/icon/\u4e2a\u4eba.png"),mode:"aspectFit"}),(0,d.jsx)(c.EY,{className:"login-guard-title",children:"\u8bf7\u5148\u767b\u5f55"}),(0,d.jsx)(c.EY,{className:"login-guard-desc",children:"\u767b\u5f55\u540e\u67e5\u770b\u60a8\u7684\u4e13\u5c5e\u5185\u5bb9"}),(0,d.jsx)(c.Ss,{className:"btn-primary login-guard-btn",onTap:function(){return o().switchTab({url:"/pages/profile/index"})},children:(0,d.jsx)(c.EY,{children:"\u53bb\u767b\u5f55"})})]})}):n.children}},3053:function(n,t,e){e.d(t,{A:function(){return f}});var r=e(5544),i=e(118),o=e(758),u=e.n(o),c=e(6540),a=e(9201);function s(n){var t=n.viewportBottom,e=n.scrollTop,r=n.statusBarHeight,i=Number.isFinite(t)?t:0,o=Number.isFinite(e)?e:0,u=Number.isFinite(r)?r:0;return Math.max(0,i+o-u-8)}function l(n){var t=n.scrollTop,e=n.startY,r=n.rangeY,i=Number.isFinite(t)?t:0,o=Math.max(0,Number.isFinite(e)?e:0),u=Math.max(1,Number.isFinite(r)?r:1);return i<=o?0:Math.min(1,(i-o)/u)}var d=e(4848);function f(n){var t=n.title,e=n.targetSelector,o=void 0===e?".page-header":e,f=n.showBack,p=void 0!==f&&f,g=(0,a.c)(),h=(0,c.useState)(0),m=(0,r.A)(h,2),v=m[0],y=m[1],A=(0,c.useMemo)(function(){return{startY:Math.max(0,g.headerPaddingTop-g.statusBarHeight),rangeY:Math.max(48,.45*g.headerPaddingTop)}},[g.headerPaddingTop,g.statusBarHeight]),S=(0,c.useRef)(A),k=(0,c.useRef)(null),b=(0,c.useRef)(0),w=(0,c.useCallback)(function(n){b.current=n,null===k.current&&(k.current=setTimeout(function(){k.current=null;var n=S.current,t=n.startY,e=n.rangeY;y(l({scrollTop:b.current,startY:t,rangeY:e}))},16))},[]);return(0,c.useEffect)(function(){var n=!1,t=null;S.current=A;var e=function(){n||u().createSelectorQuery().select(o).boundingClientRect(function(t){if(!n){if(!t||Array.isArray(t)||"number"!==typeof t.bottom||"number"!==typeof t.height)return S.current=A,void w(b.current);var e=s({viewportBottom:t.bottom,scrollTop:b.current,statusBarHeight:g.statusBarHeight}),r=Math.max(32,.7*t.height);S.current={startY:e,rangeY:r},w(b.current)}}).exec()};return u().nextTick(function(){n||(t=setTimeout(e,80))}),function(){n=!0,null!==t&&clearTimeout(t),null!==k.current&&clearTimeout(k.current),k.current=null}},[w,A,o]),u().usePageScroll(function(n){w(n.scrollTop)}),(0,d.jsxs)(i.Ss,{className:"scroll-top-mask",style:{height:"".concat(Math.max(g.menuButtonTop+g.menuButtonHeight+18,g.statusBarHeight+52)+24,"px"),opacity:v},children:[(0,d.jsx)(i.Ss,{className:"scroll-top-blur scroll-top-blur-mid"}),(0,d.jsx)(i.Ss,{className:"scroll-top-blur scroll-top-blur-soft"}),(0,d.jsx)(i.Ss,{className:"scroll-top-gradient"}),p&&(0,d.jsx)(i.Ss,{className:"scroll-top-back",style:{top:"".concat(g.menuButtonTop,"px")},onTap:function(){return u().navigateBack()},children:(0,d.jsx)(i.EY,{className:"scroll-top-back-arrow",children:"\u2190"})}),(0,d.jsx)(i.EY,{className:"scroll-top-title",style:{top:"calc(".concat(g.menuButtonTop,"px + 40rpx)"),transform:"translateY(-50%)",opacity:Math.max(0,Math.min(1,(v-.5)/.5))},children:t})]})}},9674:function(n,t,e){e.d(t,{A:function(){return u}});var r=e(118),i=e(9703),o=e(4848);function u(n){var t=n.darkTop,e=void 0!==t&&t,u=(0,i.wR)(),c=u.resolvedTheme,a="dark"===c||e,s=a?"#191919":"#faf7f2",l=a?"#ffffff":"#000000";return(0,o.jsx)(r.tf,{backgroundColor:s,backgroundColorTop:s,backgroundColorBottom:s,backgroundTextStyle:a?"light":"dark",rootBackgroundColor:s,children:(0,o.jsx)(r.yk,{frontColor:l,backgroundColor:s})})}},9703:function(n,t,e){e.d(t,{NP:function(){return p},Wo:function(){return f},wR:function(){return g}});var r=e(5544),i=e(6540),o=e(758),u=e.n(o),c=e(118),a=e(1457),s=e(6606),l=e(4848),d=(0,i.createContext)({theme:"auto",resolvedTheme:"light",toggleTheme:function(){},setTheme:function(){}}),f="themeChange";function p(n){var t=n.children,e=(0,i.useState)((0,a.O4)()),p=(0,r.A)(e,2),g=p[0],h=p[1],m=(0,i.useState)((0,a.eW)((0,a.O4)())),v=(0,r.A)(m,2),y=v[0],A=v[1],S=(0,i.useRef)(null),k=(0,i.useCallback)(function(n){A((0,a.eW)(n))},[]),b=(0,i.useCallback)(function(n){(0,a.Rq)(n),S.current=n,"auto"===(0,a.O4)()&&A(n)},[]),w=(0,i.useCallback)(function(){try{var n=u().getAppBaseInfo();b("dark"===n.theme?"dark":"light")}catch(n){}try{u().createSelectorQuery().select(".system-theme-detector").fields({computedStyle:["opacity"]}).exec(function(n){var t=n&&n[0]&&n[0].computedStyle&&n[0].computedStyle.opacity;b("1"===t?"dark":"light")})}catch(n){}},[b]),T=(0,i.useCallback)(function(n){(0,a.F0)(n),h(n),"auto"===n?w():k(n)},[w,k]),C=(0,i.useCallback)(function(){var n="light"===y?"dark":"light";T(n)},[y,T]);return(0,i.useEffect)(function(){w()},[w]),(0,i.useEffect)(function(){var n,t=function(n){!n||"dark"!==n.theme&&"light"!==n.theme||b(n.theme)},e=u();return null===(n=e.onThemeChange)||void 0===n||n.call(e,t),function(){var n;null===(n=e.offThemeChange)||void 0===n||n.call(e,t)}},[b]),(0,i.useEffect)(function(){if("auto"===g){var n=setInterval(function(){try{var n=u().getAppBaseInfo(),t="dark"===n.theme?"dark":"light";t!==S.current&&b(t)}catch(n){}},2e3);return function(){return clearInterval(n)}}},[g,b]),(0,i.useEffect)(function(){u().eventCenter.trigger(f,y)},[y]),(0,i.useEffect)(function(){(0,s.G)(y)},[y]),(0,o.useDidShow)(function(){"auto"===g&&w()}),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.Ss,{className:"system-theme-detector"}),(0,l.jsx)(d.Provider,{value:{theme:g,resolvedTheme:y,toggleTheme:C,setTheme:T},children:t})]})}function g(){return(0,i.useContext)(d)}},9201:function(n,t,e){e.d(t,{c:function(){return a}});var r=e(5544),i=e(6540),o=e(758),u=e.n(o),c=null;function a(){var n=(0,i.useState)(null!==c&&void 0!==c?c:{statusBarHeight:20,menuButtonTop:26,menuButtonHeight:32,capsuleRight:368,safeInsetTop:20,safeInsetBottom:0,headerPaddingTop:66,backBtnPaddingTop:20}),t=(0,r.A)(n,2),e=t[0],o=t[1];return(0,i.useEffect)(function(){if(c)o(c);else try{var n,t,e,r,i,a,s,l,d=u().getSystemInfoSync(),f=u().getMenuButtonBoundingClientRect(),p=d.statusBarHeight||20,g=null!==(n=f.top)&&void 0!==n?n:p+4,h=null!==(t=f.height)&&void 0!==t?t:32,m=null!==(e=f.right)&&void 0!==e?e:d.windowWidth-7,v=null!==(r=null===(i=d.safeArea)||void 0===i?void 0:i.top)&&void 0!==r?r:p,y=null!==(a=d.safeAreaInsetBottom)&&void 0!==a?a:d.screenHeight-(null!==(s=null===(l=d.safeArea)||void 0===l?void 0:l.bottom)&&void 0!==s?s:d.screenHeight),A=Math.max(g+h+6,p+44),S=Math.max(p,g-4),k={statusBarHeight:p,menuButtonTop:g,menuButtonHeight:h,capsuleRight:m,safeInsetTop:v,safeInsetBottom:y,headerPaddingTop:A,backBtnPaddingTop:S};c=k,o(k)}catch(n){}},[]),e}},5414:function(n,t,e){e.d(t,{l:function(){return c}});var r=e(6540),i=e(758),o=e.n(i),u=e(6606);function c(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.mode,c=void 0===e?"auto":e,a=(0,r.useCallback)(function(){var t="dark"===c||"auto"===c&&"light"===n,e=t?"#000000":"#ffffff",r=t?"#faf7f2":"#191919";o().setNavigationBarColor({frontColor:e,backgroundColor:r}),(0,u.G)(n,r)},[c,n]);(0,r.useEffect)(a,[a]),(0,i.useDidShow)(a)}},6845:function(n,t,e){e.d(t,{FR:function(){return y},x9:function(){return I},l8:function(){return W},ab:function(){return b},p8:function(){return E},ls:function(){return m},rP:function(){return N},jp:function(){return d},gf:function(){return o.gf},xZ:function(){return L},iD:function(){return u},ri:function(){return a},x5:function(){return V},W$:function(){return O},yU:function(){return S},i5:function(){return D},r7:function(){return s}});var r=e(1212),i=e(467),o=e(3246);function u(n){return c.apply(this,arguments)}function c(){return c=(0,i.A)((0,r.A)().m(function n(t){var e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.post("/api/auth/login",{code:t},{auth:!1});case 1:return e=n.v,null!==e&&void 0!==e&&e.accessToken&&(0,o.WG)(e.accessToken),n.a(2,e)}},n)})),c.apply(this,arguments)}function a(){(0,o.L)()}function s(n){return l.apply(this,arguments)}function l(){return l=(0,i.A)((0,r.A)().m(function n(t){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,o.Ay.patch("/api/users/me",t))}},n)})),l.apply(this,arguments)}function d(){return f.apply(this,arguments)}function f(){return f=(0,i.A)((0,r.A)().m(function n(){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,o.Ay.get("/api/users/me"))}},n)})),f.apply(this,arguments)}var p=e(5544);function g(n){return{id:n.id,name:n.name,phone:n.phone,region:[n.province,n.city,n.district],detail:n.detail,isDefault:n.isDefault,createdAt:n.createdAt}}function h(n){var t={};if(void 0!==n.name&&(t.name=n.name),void 0!==n.phone&&(t.phone=n.phone),void 0!==n.region){var e=(0,p.A)(n.region,3),r=e[0],i=void 0===r?"":r,o=e[1],u=void 0===o?"":o,c=e[2],a=void 0===c?"":c;t.province=i,t.city=u,t.district=a}return void 0!==n.detail&&(t.detail=n.detail),void 0!==n.isDefault&&(t.isDefault=n.isDefault),t}function m(){return v.apply(this,arguments)}function v(){return v=(0,i.A)((0,r.A)().m(function n(){var t;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.get("/api/addresses");case 1:return t=n.v,n.a(2,(t||[]).map(g))}},n)})),v.apply(this,arguments)}function y(n){return A.apply(this,arguments)}function A(){return A=(0,i.A)((0,r.A)().m(function n(t){var e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.post("/api/addresses",h(t));case 1:return e=n.v,n.a(2,g(e))}},n)})),A.apply(this,arguments)}function S(n,t){return k.apply(this,arguments)}function k(){return k=(0,i.A)((0,r.A)().m(function n(t,e){var i;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.patch("/api/addresses/".concat(t),h(e));case 1:return i=n.v,n.a(2,g(i))}},n)})),k.apply(this,arguments)}function b(n){return w.apply(this,arguments)}function w(){return w=(0,i.A)((0,r.A)().m(function n(t){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.del("/api/addresses/".concat(t));case 1:return n.a(2)}},n)})),w.apply(this,arguments)}var T=e(9379),C={DRAFT:"undesigned",SUBMITTED:"designing",PROCESSING:"processing",DONE:"ordered"};function x(n){var t,e,r,i,o=n.items&&n.items[0];return{id:n.id,productId:null!==(t=null===o||void 0===o?void 0:o.productId)&&void 0!==t?t:"",productName:(null===o||void 0===o?void 0:o.productName)||n.title,unitPrice:null!==(e=null===o||void 0===o?void 0:o.unitPrice)&&void 0!==e?e:0,count:null!==(r=null===o||void 0===o?void 0:o.count)&&void 0!==r?r:1,status:null!==(i=C[n.status])&&void 0!==i?i:"undesigned",designData:null===o||void 0===o?void 0:o.designData,createdAt:(n.createdAt||"").slice(0,10)}}function N(){return _.apply(this,arguments)}function _(){return _=(0,i.A)((0,r.A)().m(function n(){var t;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.get("/api/design-list");case 1:return t=n.v,n.a(2,(t||[]).map(x))}},n)})),_.apply(this,arguments)}function I(n){return B.apply(this,arguments)}function B(){return B=(0,i.A)((0,r.A)().m(function n(t){var e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.post("/api/design-list",{title:t.productName,items:[(0,T.A)({productId:t.productId,productName:t.productName,unitPrice:t.unitPrice,count:t.count},void 0!==t.designData?{designData:t.designData}:{})]});case 1:return e=n.v,n.a(2,x(e))}},n)})),B.apply(this,arguments)}function D(n,t){return j.apply(this,arguments)}function j(){return j=(0,i.A)((0,r.A)().m(function n(t,e){var i,u;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return i={},void 0!==e.title&&(i.title=e.title),void 0!==e.status&&(i.status="SUBMITTED"),void 0!==e.item&&(i.items=[(0,T.A)({productId:e.item.productId,productName:e.item.productName,unitPrice:e.item.unitPrice,count:e.item.count},void 0!==e.item.designData?{designData:e.item.designData}:{})]),n.n=1,o.Ay.patch("/api/design-list/".concat(t),i);case 1:return u=n.v,n.a(2,x(u))}},n)})),j.apply(this,arguments)}function E(n){return P.apply(this,arguments)}function P(){return P=(0,i.A)((0,r.A)().m(function n(t){var e,i;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.n=1,o.Ay.post("/api/design-list/batch-delete",{ids:t});case 1:return i=n.v,n.a(2,null!==(e=null===i||void 0===i?void 0:i.deleted)&&void 0!==e?e:0)}},n)})),P.apply(this,arguments)}var R=e(4765),M=e(758),q=e.n(M);function F(n,t,e,r){return H.apply(this,arguments)}function H(){return H=(0,i.A)((0,r.A)().m(function n(t,e,i,u){var c,a;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.n=1,q().uploadFile({url:"".concat(o.C1).concat(t),filePath:e,name:i,formData:u,header:{Authorization:"Bearer ".concat((0,o.gf)())}});case 1:c=n.v,n.p=2,a=JSON.parse(c.data),n.n=4;break;case 3:throw n.p=3,n.v,new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5");case 4:if(!a||"number"!==typeof a.code||0===a.code){n.n=5;break}throw new Error(a.message||"\u8bf7\u6c42\u5931\u8d25");case 5:return n.a(2,a&&"number"===typeof a.code?a.data:a)}},n,null,[[2,3]])})),H.apply(this,arguments)}function U(n){return o.Ay.get("/api/upload/credentials?key=".concat(encodeURIComponent(n)))}function Y(n,t){return G.apply(this,arguments)}function G(){return G=(0,i.A)((0,r.A)().m(function n(t,e){var i,o;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(e.presignedUrl){n.n=1;break}throw new Error("\u83b7\u53d6 COS \u76f4\u4f20\u5730\u5740\u5931\u8d25");case 1:return i=q().getFileSystemManager(),o=i.readFileSync(t),n.n=2,q().request({url:e.presignedUrl,method:"PUT",data:o,header:{"Content-Type":"application/octet-stream"}});case 2:return n.a(2,e.presignedUrl.split("?")[0])}},n)})),G.apply(this,arguments)}function O(n){return F("/api/sketch",n,"image")}function W(n,t,e){return F("/api/wordcloud/generate",n,"image",(0,T.A)({names:t},e?{params:JSON.stringify(e)}:{}))}function L(n){return o.Ay.get("/api/wordcloud/jobs/".concat(n))}function Q(n){return!!n&&/^(wxfile:|http:\/\/tmp\/|tmp\/)/i.test(n)}function z(n){return J.apply(this,arguments)}function J(){return J=(0,i.A)((0,r.A)().m(function n(t){var e,i;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return n.p=0,e="uploads/sticker/".concat(Date.now(),"_").concat(Math.floor(1e6*Math.random()),".jpg"),n.n=1,U(e);case 1:return i=n.v,n.n=2,Y(t,i);case 2:return n.a(2,n.v);case 3:return n.p=3,n.v,n.a(2,t)}},n,null,[[0,3]])})),J.apply(this,arguments)}function V(n){return Z.apply(this,arguments)}function Z(){return Z=(0,i.A)((0,r.A)().m(function n(t){var e,i,o,u,c,a,s,l,d,f,p,g,h,m,v,y;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:if(t){n.n=1;break}return n.a(2,t);case 1:if(e=(0,T.A)({},t),!t.background||!Q(t.background.src)){n.n=3;break}return a=T.A,s=(0,T.A)({},t.background),l={},n.n=2,z(t.background.src);case 2:d=n.v,e.background=a(s,l,{src:d});case 3:if(!t.stickers||!t.stickers.length){n.n=14;break}i=[],o=(0,R.A)(t.stickers),n.p=4,o.s();case 5:if((u=o.n()).done){n.n=10;break}if(c=u.value,f=i,!Q(c.src)){n.n=7;break}return g=T.A,h=(0,T.A)({},c),m={},n.n=6,z(c.src);case 6:v=n.v,p=g(h,m,{src:v}),n.n=8;break;case 7:p=c;case 8:f.push.call(f,p);case 9:n.n=5;break;case 10:n.n=12;break;case 11:n.p=11,y=n.v,o.e(y);case 12:return n.p=12,o.f(),n.f(12);case 13:e.stickers=i;case 14:return n.a(2,e)}},n,null,[[4,11,12,13]])})),Z.apply(this,arguments)}},8199:function(n,t,e){e.d(t,{uq:function(){return i}});var r="https://wordcloudwechat.oss-cn-hangzhou.aliyuncs.com";function i(n){if(!n)return"";if(/^(https?:|wxfile:|data:)/i.test(n))return n;if(!r)return n;var t=r.replace(/\/+$/,"");if(!n.startsWith("/img/"))return n;var e=n.startsWith("/")?n:"/".concat(n);return"".concat(t).concat(e)}},6764:function(n,t,e){e.d(t,{d:function(){return y},m:function(){return g}});var r=e(1212),i=e(467),o=e(2284),u=e(758),c=e.n(u),a=e(6845),s=e(1457),l="smart_auth_verified",d=18e5,f=null,p=null;function g(){f=null,p=null;try{c().removeStorageSync(l)}catch(n){}}function h(n){var t=f||function(){try{var n=c().getStorageSync(l);return n&&"object"===(0,o.A)(n)?n:null}catch(n){return null}}();return t&&t.openid===n?Date.now()-t.at>d?null:(f=t,t.ok):null}function m(n,t){var e={openid:n,ok:t,at:Date.now()};f=e;try{c().setStorageSync(l,e)}catch(n){}}function v(){var n=(0,s.Q4)();return!(null===n||void 0===n||!n.openid)&&!(0,s.Ic)(n.openid)&&!!n.accessToken&&!!(0,a.gf)()}function y(){return A.apply(this,arguments)}function A(){return A=(0,i.A)((0,r.A)().m(function n(){var t,e;return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:if(t=(0,s.Q4)(),null!==t&&void 0!==t&&t.openid){n.n=1;break}return console.log("[AuthGuard] \u65e0\u672c\u5730\u7528\u6237\uff0c\u5224\u5b9a\u672a\u767b\u5f55"),n.a(2,!1);case 1:if(console.log("[AuthGuard] \u672c\u5730\u7528\u6237 openid=",t.openid),!(0,s.Ic)(t.openid)){n.n=2;break}return(0,s.Hf)(),(0,a.ri)(),g(),n.a(2,!1);case 2:if(e=h(t.openid),null===e){n.n=3;break}return console.log("[AuthGuard] \u547d\u4e2d\u672c\u5730\u7f13\u5b58 ok=",e),n.a(2,e);case 3:return p||(p=(0,a.jp)().then(function(n){console.log("[AuthGuard] getMe \u8fd4\u56de:",JSON.stringify(n));var e=!!n&&!!n.id&&n.openid===t.openid;return console.log("[AuthGuard] \u4e00\u81f4\u6027=",e),e?(m(t.openid,!0),!0):((0,s.Hf)(),(0,a.ri)(),g(),!1)}).catch(function(n){return console.error("[AuthGuard] getMe \u5931\u8d25\uff0c\u8d70\u672c\u5730\u4f1a\u8bdd\u515c\u5e95:",n),v()}).finally(function(){p=null})),n.a(2,p)}},n)})),A.apply(this,arguments)}},5234:function(n,t,e){e.d(t,{QE:function(){return l},R6:function(){return c},rj:function(){return s},y9:function(){return a},zv:function(){return u}});var r=e(9379),i=e(8199),o=[{id:"notebook-small",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5c0f\uff09",desc:"\u4fbf\u643a\u968f\u884c\uff0c\u8bb0\u5f55\u70b9\u6ef4",icon:"/icon/\u4e66\u672c.png",iconImg:"/icon/\u4e66\u672c.png",price:12,originalPrice:18,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u4f18\u8d28\u7eb8\u5f20\uff0c\u5c01\u9762\u91c7\u7528\u9ad8\u6863PU\u6750\u8d28\uff0c\u624b\u611f\u7ec6\u817b\u3002\u5185\u9875\u53ef\u5b9a\u5236\u6a2a\u7ebf\u3001\u65b9\u683c\u6216\u7a7a\u767d\u4e09\u79cd\u7248\u5f0f\u3002\u6fc0\u5149\u5fae\u96d5\u5de5\u827a\u5c06\u540d\u5b57\u6216\u56fe\u6848\u7cbe\u51c6\u523b\u5370\u5728\u5c01\u9762\uff0c\u6c38\u4e0d\u892a\u8272\u3002\u5c0f\u5de7\u8f7b\u4fbf\uff0c\u9002\u5408\u968f\u8eab\u643a\u5e26\uff0c\u65e0\u8bba\u662f\u8bfe\u5802\u7b14\u8bb0\u8fd8\u662f\u65e5\u5e38\u5907\u5fd8\uff0c\u90fd\u662f\u4f60\u7684\u4e13\u5c5e\u4f34\u4fa3\u3002",subtitle:"\u638c\u5fc3\u95f4\u7684\u4e13\u5c5e\u5370\u8bb0 \xb7 \u6fc0\u5149\u5fae\u96d5 \xb7 \u4e09\u8272\u5185\u9875\u53ef\u9009",tone:[28,22,18],story:"\u7075\u611f\u6e90\u81ea\u624b\u8d26\u6587\u5316\u4e2d\u5bf9\u4e66\u5199\u4eea\u5f0f\u611f\u7684\u8ffd\u6c42\u3002\u6211\u4eec\u76f8\u4fe1\uff0c\u5728\u6570\u5b57\u6d2a\u6d41\u7684\u65f6\u4ee3\uff0c\u7eb8\u7b14\u7684\u6e29\u5ea6\u4f9d\u7136\u4e0d\u53ef\u66ff\u4ee3\u3002\u5f53\u6fc0\u5149\u5fae\u96d5\u5728PU\u5c01\u9762\u4e0a\u7559\u4e0b\u4e13\u5c5e\u5370\u8bb0\uff0c\u6bcf\u4e00\u7b14\u4e66\u5199\u90fd\u5728\u4e0e\u8fc7\u53bb\u5bf9\u8bdd\u3002\u7b14\u8bb0\u672c\u5c0f\u5de7\u5230\u8db3\u4ee5\u653e\u5165\u4efb\u4f55\u53e3\u888b\uff0c\u5374\u627f\u8f7d\u7740\u72ec\u4e00\u65e0\u4e8c\u7684\u8bb0\u5fc6\u3002",scene:"\u8bfe\u5802\u7b14\u8bb0\u3001\u65e5\u5e38\u5907\u5fd8\u3001\u65c5\u884c\u624b\u8d26\u3001\u5fc3\u60c5\u65e5\u8bb0\u3002\u9002\u5408\u9001\u7ed9\u540c\u5b66\u3001\u4f34\u4fa3\u6216\u4f5c\u4e3a\u6d3b\u52a8\u4f34\u624b\u793c\u2014\u2014\u8ba9\u6bcf\u4e00\u4e2a\u4eba\u90fd\u62e5\u6709\u523b\u7740\u81ea\u5df1\u540d\u5b57\u7684\u4e13\u5c5e\u7b14\u8bb0\u672c\u3002",tags:["\u4f34\u624b\u793c","\u5b66\u751f","\u624b\u8d26","\u4fbf\u643a","\u6fc0\u5149\u5fae\u96d5"],specs:[["\u5c3a\u5bf8","105 \xd7 148mm\uff08A6\uff09"],["\u9875\u6570","120\u5f20/240\u9875"],["\u5185\u9875\u7248\u5f0f","\u6a2a\u7ebf / \u65b9\u683c / \u7a7a\u767d \u53ef\u9009"],["\u5c01\u9762\u6750\u8d28","\u9ad8\u6863PU\u76ae\u9769"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u6c38\u4e0d\u892a\u8272\uff09"],["\u9002\u7528\u573a\u666f","\u8bfe\u5802\u3001\u65c5\u884c\u3001\u65e5\u5e38\u5907\u5fd8"]],images:["/img/book_small/The1.jpg"],mask:{shape:"rect",width:300,height:420,borderRadius:8}},{id:"notebook-large",name:"\u5fae\u96d5\u7b14\u8bb0\u672c\uff08\u5927\uff09",desc:"\u5927\u5f00\u672c\uff0c\u66f4\u591a\u521b\u4f5c\u7a7a\u95f4",icon:"/icon/\u4e66\u672c_\u5927.png",iconImg:"/icon/\u4e66\u672c_\u5927.png",price:45,originalPrice:58,leadTime:"3-5\u4e2a\u5de5\u4f5c\u65e5",description:"A4\u5c3a\u5bf8\u5927\u5f00\u672c\uff0c180\xb0\u5e73\u644a\u8bbe\u8ba1\uff0c\u4e66\u5199\u66f4\u81ea\u7531\u3002\u5c01\u9762\u53ef\u9009\u771f\u76ae\u3001\u4eff\u5e03\u7eb9\u6216\u78e8\u7802\u6750\u8d28\uff0c\u6fc0\u5149\u5fae\u96d5\u533a\u57df\u66f4\u5927\uff0c\u9002\u5408\u5448\u73b0\u5168\u73ed\u540d\u5b57\u3001\u56e2\u961f\u53e3\u53f7\u6216\u516c\u53f8Logo\u7b49\u5927\u7bc7\u5e45\u5185\u5bb9\u3002\u662f\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u4f01\u4e1a\u5e74\u4f1a\u793c\u54c1\u7684\u9996\u9009\u3002",subtitle:"\u5927\u7bc7\u5e45\u5b9a\u5236\u9996\u9009 \xb7 180\xb0\u5e73\u644a \xb7 \u6bd5\u4e1a/\u56e2\u5efa\u5fc5\u5907",tone:[35,28,22],story:"\u6bcf\u4e00\u6b21\u544a\u522b\u90fd\u503c\u5f97\u88ab\u90d1\u91cd\u4e66\u5199\u3002\u6bd5\u4e1a\u5b63\u7684\u6559\u5ba4\u91cc\uff0c\u7b14\u8bb0\u672c\u644a\u5f00\u5728\u8bfe\u684c\u4e0a\uff0c\u5168\u73ed\u7684\u540d\u5b57\u88ab\u6fc0\u5149\u523b\u5370\u5728\u5c01\u9762\u4e2d\u592e\uff0c\u6210\u4e3a\u6c38\u6052\u7684\u540c\u5b66\u5f55\u3002180\xb0\u5e73\u644a\u8bbe\u8ba1\u8ba9\u4e66\u5199\u4e0d\u518d\u88ab\u8ba2\u88c5\u675f\u7f1a\uff0cA4\u5927\u5c3a\u5bf8\u7ed9\u4f60\u5c3d\u60c5\u6325\u6d12\u7684\u5929\u5730\u3002\u8fd9\u662f\u9001\u7ed9\u4e00\u7fa4\u4eba\u6700\u597d\u7684\u544a\u522b\u793c\u7269\u3002",scene:"\u6bd5\u4e1a\u7eaa\u5ff5\u518c\u3001\u516c\u53f8\u5e74\u4f1a\u793c\u54c1\u3001\u56e2\u961f\u5efa\u8bbe\u4f34\u624b\u793c\u3001\u5ba2\u6237\u7b54\u8c22\u3002\u7279\u522b\u9002\u5408\u9700\u8981\u5728\u5c01\u9762\u5448\u73b0\u5927\u91cf\u6587\u5b57\u6216\u56fe\u6848\u7684\u5b9a\u5236\u9700\u6c42\u2014\u2014\u73ed\u7ea7\u540d\u5355\u3001\u516c\u53f8\u613f\u666f\u3001\u56e2\u961f\u53e3\u53f7\u4e00\u7f51\u6253\u5c3d\u3002",tags:["\u6bd5\u4e1a\u793c","\u56e2\u5efa","\u4f01\u4e1a\u5b9a\u5236","\u5927\u7bc7\u5e45","\u5e73\u644a\u8bbe\u8ba1"],specs:[["\u5c3a\u5bf8","210 \xd7 297mm\uff08A4\uff09"],["\u9875\u6570","100\u5f20/200\u9875"],["\u5c01\u9762\u6750\u8d28","\u771f\u76ae / \u4eff\u5e03\u7eb9 / \u78e8\u7802 \u53ef\u9009"],["\u5f00\u5408\u9002\u7528","180\xb0\u5e73\u644a\u8bbe\u8ba1"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u5fae\u96d5\uff08\u9ad8\u6e05\u6670\u5ea6\uff09"],["\u5b9a\u5236\u9762\u79ef","\u5c01\u9762\u6574\u9762\u53ef\u96d5"]],images:["/img/book_big/The1.jpg","/img/book_big/The2.jpg"],mask:{shape:"rect",width:340,height:480,borderRadius:8}},{id:"coaster",name:"\u94dc\u8d28\u676f\u57ab",desc:"\u91d1\u5c5e\u8d28\u611f\uff0c\u684c\u9762\u827a\u672f",icon:"/icon/\u676f\u5b50.png",iconImg:"/icon/\u676f\u5b50.png",price:25,originalPrice:35,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u91c7\u7528\u4f18\u8d28\u9ec4\u94dc\u6750\u8d28\uff0c\u8868\u9762\u7ecf\u62c9\u4e1d\u5de5\u827a\u5904\u7406\uff0c\u5448\u73b0\u54d1\u5149\u91d1\u5c5e\u8d28\u611f\u3002\u80cc\u9762\u914d\u6709\u9632\u6ed1\u8f6f\u6728\u57ab\uff0c\u4fdd\u62a4\u684c\u9762\u540c\u65f6\u9632\u6b62\u6ed1\u52a8\u3002\u6fc0\u5149\u5fae\u96d5\u53ef\u5728\u8868\u9762\u523b\u5370\u540d\u5b57\u3001\u65e5\u671f\u6216\u795d\u798f\u8bed\uff0c\u662f\u4e54\u8fc1\u65b0\u5c45\u3001\u65b0\u5a5a\u8d3a\u793c\u7684\u7cbe\u81f4\u4e4b\u9009\u3002",subtitle:"\u9ec4\u94dc\u8d28\u611f \xb7 \u62c9\u4e1d\u54d1\u5149 \xb7 \u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851",tone:[42,30,18],story:"\u8bbe\u8ba1\u7075\u611f\u6765\u81ea\u65e5\u5f0f\u4f98\u5bc2\u7f8e\u5b66\u3002\u5c81\u6708\u4f1a\u5728\u9ec4\u94dc\u8868\u9762\u7559\u4e0b\u6e29\u67d4\u7684\u6c27\u5316\u75d5\u8ff9\uff0c\u5c31\u5982\u540c\u4e00\u676f\u8336\u4ece\u70ed\u5230\u51c9\u7684\u8fc7\u7a0b\u3002\u62c9\u4e1d\u5904\u7406\u540e\u7684\u54d1\u5149\u8868\u9762\u5728\u706f\u5149\u4e0b\u5448\u73b0\u7ec6\u817b\u7684\u91d1\u5c5e\u7eb9\u7406\uff0c\u6fc0\u5149\u5fae\u96d5\u7684\u540d\u5b57\u6210\u4e3a\u8fd9\u4ef6\u5668\u7269\u4e0a\u6700\u51b7\u9759\u7684\u6ce8\u811a\u3002\u5b83\u4e0d\u53ea\u662f\u676f\u57ab\uff0c\u66f4\u662f\u684c\u9762\u4e0a\u7684\u5fae\u578b\u96d5\u5851\u3002",scene:"\u4e54\u8fc1\u9001\u793c\u3001\u65b0\u5a5a\u8d3a\u793c\u3001\u5496\u5561\u89d2\u5e03\u7f6e\u3001\u529e\u516c\u684c\u7f8e\u5b66\u3002\u9002\u5408\u9001\u7ed9\u559c\u6b22\u624b\u51b2\u5496\u5561\u7684\u670b\u53cb\uff0c\u6216\u4f5c\u4e3a\u5a5a\u793c\u5bbe\u5ba2\u7684\u56de\u793c\u2014\u2014\u6bcf\u4e00\u53ea\u676f\u57ab\u4e0a\u90fd\u523b\u7740\u5bbe\u5ba2\u7684\u540d\u5b57\uff0c\u8ba9\u793c\u7269\u672c\u8eab\u6210\u4e3a\u5ea7\u4f4d\u5361\u3002",tags:["\u4e54\u8fc1\u793c","\u65b0\u5a5a\u8d3a\u793c","\u684c\u9762\u7f8e\u5b66","\u9ec4\u94dc","\u624b\u51b2\u5496\u5561"],specs:[["\u6750\u8d28","\u9ec4\u94dc + \u80cc\u9762\u8f6f\u6728\u9632\u6ed1\u57ab"],["\u8868\u9762\u5904\u7406","\u62c9\u4e1d\u54d1\u5149"],["\u76f4\u5f84","100mm"],["\u539a\u5ea6","3mm"],["\u96d5\u523b\u5de5\u827a","\u5149\u7ea4\u6fc0\u5149\u7cbe\u7ec6\u5fae\u96d5"],["\u8010\u6e29","\u2264120\xb0C"]],images:["/img/cup/The1.jpg"],mask:{shape:"circle",width:280,height:280}},{id:"penbox",name:"\u7af9\u5236\u7b14\u76d2",desc:"\u81ea\u7136\u7af9\u7eb9\uff0c\u6587\u623f\u96c5\u5668",icon:"/icon/\u7b14\u76d2.png",iconImg:"/icon/\u7b14\u76d2.png",price:75,originalPrice:98,leadTime:"7-10\u4e2a\u5de5\u4f5c\u65e5",description:"\u7cbe\u9009\u5929\u7136\u6960\u7af9\uff0c\u7ecf\u591a\u9053\u5de5\u5e8f\u6253\u78e8\u629b\u5149\uff0c\u4fdd\u7559\u5929\u7136\u7af9\u7eb9\u808c\u7406\u3002\u76d2\u76d6\u91c7\u7528\u78c1\u5438\u5f00\u5408\uff0c\u5185\u90e8\u8bbe\u6709\u5206\u5c42\u9694\u677f\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u7af9\u9762\u4e0a\u5448\u73b0\u6df1\u6d45\u4e0d\u4e00\u7684\u96d5\u523b\u6548\u679c\uff0c\u878d\u5165\u58a8\u9999\u6c14\u8d28\u3002\u9002\u5408\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u7684\u6587\u623f\u4f34\u4fa3\u3002",subtitle:"\u5929\u7136\u6960\u7af9 \xb7 \u78c1\u5438\u5f00\u5408 \xb7 \u6587\u623f\u96c5\u5668\u4e4b\u9009",tone:[30,24,16],story:"\u6bcf\u4e00\u53ea\u7b14\u76d2\u90fd\u6765\u81ea\u540c\u4e00\u7247\u7af9\u6797\u7684\u4e0d\u540c\u90e8\u4f4d\uff0c\u56e0\u6b64\u7eb9\u8def\u7edd\u4e0d\u91cd\u590d\u2014\u2014\u6b63\u5982\u6ca1\u6709\u4e24\u4e2a\u4eba\u7684\u4e66\u6cd5\u98ce\u683c\u5b8c\u5168\u76f8\u540c\u3002\u6211\u4eec\u4fdd\u7559\u4e86\u6960\u7af9\u5929\u7136\u7684\u6e29\u6da6\u89e6\u611f\uff0c\u53ea\u5728\u8868\u9762\u4ee5\u6fc0\u5149\u523b\u4e0b\u540d\u5b57\u6216\u4e00\u53e5\u7bb4\u8a00\u3002\u6253\u5f00\u78c1\u5438\u76d2\u76d6\u65f6\u7684\u6e05\u8106\u58f0\u54cd\uff0c\u662f\u6587\u623f\u4e2d\u7684\u5c0f\u5c0f\u4eea\u5f0f\u3002",scene:"\u4e66\u623f\u6848\u5934\u3001\u4e66\u6cd5\u7231\u597d\u8005\u88c5\u5907\u3001\u6559\u5e08\u8282\u793c\u7269\u3001\u4e66\u623f\u6696\u623f\u793c\u3002\u9002\u5408\u9001\u7ed9\u5199\u5b57\u597d\u770b\u7684\u4eba\u2014\u2014\u56e0\u4e3a\u61c2\u4e66\u5199\u7684\u4eba\uff0c\u624d\u61c2\u4e00\u53ea\u597d\u7b14\u76d2\u7684\u5206\u91cf\u3002",tags:["\u6587\u623f","\u4e66\u6cd5","\u6559\u5e08\u8282","\u4e66\u623f","\u5929\u7136\u6750\u8d28"],specs:[["\u6750\u8d28","\u5929\u7136\u6960\u7af9"],["\u5f00\u5408\u65b9\u5f0f","\u78c1\u5438\u5f0f\u76d2\u76d6"],["\u5185\u90e8\u7ed3\u6784","\u5206\u5c42\u9694\u677f\uff08\u53ef\u8c03\u8282\uff09"],["\u5c3a\u5bf8","200 \xd7 65 \xd7 30mm"],["\u8868\u9762\u5904\u7406","\u624b\u5de5\u6253\u78e8\u629b\u5149\uff0c\u65e0\u6f06"],["\u96d5\u523b\u5de5\u827a","CO2 \u6fc0\u5149\u70e7\u8680\uff08\u6df1\u6d45\u53ef\u8c03\uff09"]],images:["/img/penbox/The1.jpg","/img/penbox/The2.jpg","/img/penbox/The3.jpg"],mask:{shape:"rect",width:320,height:160,borderRadius:12}},{id:"booklamp",name:"\u4e66\u672c\u578b\u706f",desc:"\u6e29\u6696\u5149\u5f71\uff0c\u70b9\u4eae\u5fc3\u610f",icon:"/icon/\u4e66\u706f.png",iconImg:"/icon/\u4e66\u706f.png",price:45,originalPrice:68,leadTime:"5-7\u4e2a\u5de5\u4f5c\u65e5",description:"\u5f00\u5408\u5f0f\u8bbe\u8ba1\uff0c\u6253\u5f00\u5373\u4eae\uff0c\u5408\u62e2\u5373\u706d\uff0c\u5982\u9b54\u6cd5\u4e66\u822c\u5145\u6ee1\u60ca\u559c\u3002\u91c7\u7528LED\u6696\u5149\u706f\u6e90\uff0c\u5149\u7ebf\u67d4\u548c\u4e0d\u523a\u773c\uff0c\u53ef\u6301\u7eed\u70b9\u4eae6-8\u5c0f\u65f6\u3002\u5c01\u9762\u6fc0\u5149\u5fae\u96d5\u53ef\u5b9a\u5236\u6587\u5b57\u3001\u56fe\u6848\u6216\u7167\u7247\uff0c\u8ba9\u6e29\u6696\u7684\u706f\u5149\u627f\u8f7d\u4e13\u5c5e\u8bb0\u5fc6\u3002\u662f\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u793c\u7269\u7684\u521b\u610f\u4e4b\u9009\u3002",subtitle:"\u5f00\u5408\u5373\u4eae \xb7 LED\u6696\u5149 \xb7 \u9b54\u6cd5\u4e66\u822c\u7684\u60ca\u559c",tone:[25,20,15],story:"\u7075\u611f\u6765\u81ea\u300a\u54c8\u5229\xb7\u6ce2\u7279\u300b\u4e2d\u7684\u9b54\u6cd5\u8bfe\u672c\u2014\u2014\u6253\u5f00\u4e00\u672c\u4e66\uff0c\u5149\u8292\u503e\u6cfb\u800c\u51fa\u3002\u6211\u4eec\u91c7\u7528\u675c\u90a6\u7eb8\u4e0e\u5b9e\u6728\u5c01\u9762\u7ed3\u5408\uff0c\u8ba9\u706f\u4f53\u65e2\u8f7b\u8584\u53c8\u575a\u56fa\u3002\u6fc0\u5149\u5fae\u96d5\u5728\u5c01\u9762\u7559\u4e0b\u4f60\u7684\u540d\u5b57\u6216\u4e00\u5e45\u5c0f\u753b\uff0c\u5f53\u706f\u5728\u6df1\u591c\u4eae\u8d77\uff0c\u90a3\u662f\u4e13\u5c5e\u4e8e\u4f60\u7684\u6e29\u6696\u89d2\u843d\u3002",scene:"\u60c5\u4fa3\u793c\u7269\u3001\u6bd5\u4e1a\u7eaa\u5ff5\u3001\u5e8a\u5934\u591c\u706f\u3001\u9732\u8425\u6c1b\u56f4\u706f\u3001\u513f\u7ae5\u623f\u3002\u7279\u522b\u9002\u5408\u5728\u5c01\u9762\u523b\u4e0a\u4e24\u4e2a\u4eba\u7684\u540d\u5b57\u548c\u4e00\u53e5\u60c5\u8bdd\uff0c\u5728\u60c5\u4eba\u8282\u6216\u7eaa\u5ff5\u65e5\u9001\u51fa\u2014\u2014\u6253\u5f00\u4e66\u706f\uff0c\u5c31\u50cf\u6253\u5f00\u4e00\u5c01\u4f1a\u53d1\u5149\u7684\u60c5\u4e66\u3002",tags:["\u60c5\u4fa3\u793c","\u6bd5\u4e1a\u7eaa\u5ff5","\u591c\u706f","\u6c1b\u56f4\u706f","\u521b\u610f\u793c\u7269"],specs:[["\u5149\u6e90","LED \u6696\u767d\u5149\uff083000K\uff09"],["\u7eed\u822a","6-8\u5c0f\u65f6\uff08\u5185\u7f6e\u53ef\u5145\u7535\u9502\u7535\u6c60\uff09"],["\u5145\u7535","USB Type-C \u63a5\u53e3"],["\u5c01\u9762\u6750\u8d28","\u675c\u90a6\u7eb8 + \u5b9e\u6728\u5c01\u9762"],["\u5c55\u5f00\u5c3a\u5bf8","210 \xd7 150mm"],["\u96d5\u523b\u5de5\u827a","\u6fc0\u5149\u5fae\u96d5\uff08\u652f\u6301\u6587\u5b57+\u7b80\u5355\u56fe\u6848\uff09"]],images:["/img/booklight/The1.jpg","/img/booklight/The2.jpg"],mask:{shape:"rect",width:320,height:240,borderRadius:4}}],u=o.map(function(n){return(0,r.A)((0,r.A)({},n),{},{images:(n.images||[]).map(function(n){return(0,i.uq)(n)}),iconImg:(0,i.uq)(n.iconImg)})}),c=u,a=function(n){return u.find(function(t){return t.id===n})},s={"notebook-small":(0,i.uq)("/icon/\u4e66\u672c.png"),"notebook-large":(0,i.uq)("/icon/\u4e66\u672c_\u5927.png"),coaster:(0,i.uq)("/icon/\u676f\u5b50.png"),penbox:(0,i.uq)("/icon/\u7b14\u76d2.png"),booklamp:(0,i.uq)("/icon/\u4e66\u706f.png")};function l(n){return null!==n&&void 0!==n&&n.iconImg?(0,i.uq)(n.iconImg):null!==n&&void 0!==n&&n.id?(0,i.uq)(s[n.id]||"/icon/\u56db\u89d2\u661f.svg"):(0,i.uq)("/icon/\u56db\u89d2\u661f.svg")}},3246:function(n,t,e){e.d(t,{C1:function(){return a},L:function(){return p},Sy:function(){return l},WG:function(){return f},gf:function(){return d},q:function(){return m}});var r=e(1212),i=e(9379),o=e(467),u=e(758),c=e.n(u),a="https://wxbackend.tokenleaping.com",s="smart_access_token";function l(){try{c().hideLoading()}catch(n){}}function d(){try{return c().getStorageSync(s)||""}catch(n){return""}}function f(n){c().setStorageSync(s,n)}function p(){try{c().removeStorageSync(s)}catch(n){}}var g=null;var h=null;function m(n){h=n}function v(n,t,e,r){return y.apply(this,arguments)}function y(){return y=(0,o.A)((0,r.A)().m(function n(t,e,i,o){return(0,r.A)().w(function(n){while(1)switch(n.n){case 0:return n.a(2,c().request({url:"".concat(a).concat(t),method:e,data:i,header:o}))}},n)})),y.apply(this,arguments)}function A(n){return S.apply(this,arguments)}function S(){return S=(0,o.A)((0,r.A)().m(function n(t){var e,o,u,c,a,s,l,f,m,y,A,S,k,b,w,T,C,x,N=arguments;return(0,r.A)().w(function(n){while(1)switch(n.p=n.n){case 0:return e=N.length>1&&void 0!==N[1]?N[1]:{},o=e.method,u=void 0===o?"GET":o,c=e.data,a=e.headers,s=void 0===a?{}:a,l=e.auth,f=void 0===l||l,m=e.skipAuthRefresh,y=void 0!==m&&m,A=function(){var n=d();return(0,i.A)((0,i.A)({"Content-Type":"application/json"},f&&n?{Authorization:"Bearer ".concat(n)}:{}),s)},n.p=1,n.n=2,v(t,u,c,A());case 2:S=n.v,n.n=4;break;case 3:throw n.p=3,n.v,k=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),k.statusCode=-1,k;case 4:if(401!==S.statusCode||y||!h){n.n=9;break}return n.n=5,h();case 5:if(b=n.v,!b){n.n=9;break}return n.p=6,n.n=7,v(t,u,c,A());case 7:S=n.v,n.n=9;break;case 8:throw n.p=8,n.v,w=new Error("\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5"),w.statusCode=-1,w;case 9:if(401!==S.statusCode){n.n=10;break}throw p(),null===(T=g)||void 0===T||T(),C=new Error("\u767b\u5f55\u5df2\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55"),C.statusCode=401,C;case 10:if(x=S.data,!x||"number"!==typeof x.code||0===x.code){n.n=11;break}throw new Error(x.message||"\u8bf7\u6c42\u5931\u8d25");case 11:return n.a(2,x&&"number"===typeof x.code?x.data:x)}},n,null,[[6,8],[1,3]])})),S.apply(this,arguments)}var k={get:function(n,t){return A(n,(0,i.A)((0,i.A)({},t),{},{method:"GET"}))},post:function(n,t,e){return A(n,(0,i.A)((0,i.A)({},e),{},{method:"POST",data:t}))},put:function(n,t,e){return A(n,(0,i.A)((0,i.A)({},e),{},{method:"PUT",data:t}))},patch:function(n,t,e){return A(n,(0,i.A)((0,i.A)({},e),{},{method:"PATCH",data:t}))},del:function(n,t){return A(n,(0,i.A)((0,i.A)({},t),{},{method:"DELETE"}))}};t.Ay=k},1457:function(n,t,e){e.d(t,{E1:function(){return W},cY:function(){return A},Hf:function(){return P},kg:function(){return F},ab:function(){return Q},hG:function(){return U},IU:function(){return C},Re:function(){return G},EB:function(){return z},p_:function(){return v},n7:function(){return w},O4:function(){return V},ug:function(){return M},Q4:function(){return D},Ic:function(){return c},Q1:function(){return q},kh:function(){return k},eW:function(){return X},Rc:function(){return O},Fu:function(){return y},Rq:function(){return K},F0:function(){return Z},iA:function(){return R},iZ:function(){return H},yU:function(){return L},i5:function(){return S},uF:function(){return Y}});var r=e(758),i=e.n(r),o="smart_user_info",u="smart_active_openid";function c(n){return!!n&&(n.startsWith("mock_")||n.startsWith("mock-"))}function a(){var n,t=null;try{t=i().getStorageSync(o)}catch(n){t=null}var e=(null===(n=t)||void 0===n?void 0:n.openid)||i().getStorageSync(u)||"_guest_";return i().setStorageSync(u,e),e}function s(n){var t=a();return"".concat(n,"_").concat(t)}function l(n,t){return"".concat(n,"_").concat(t)}var d=e(6764),f=e(9379),p=e(436),g=e(8199),h=e(5234);function m(n){try{return i().getStorageSync(l("design_list",n))||[]}catch(n){return[]}}function v(){try{return i().getStorageSync(s("design_list"))||[]}catch(n){return[]}}function y(n){i().setStorageSync(s("design_list"),n)}function A(n,t){var e=v(),r=(0,g.uq)((null===n||void 0===n?void 0:n.iconImg)||h.rj[null===n||void 0===n?void 0:n.id]||"/icon/\u56db\u89d2\u661f.svg"),i={id:"DSG"+Date.now(),productId:n.id,productName:n.name,productIcon:r,unitPrice:n.price,count:t,status:"undesigned",createdAt:(new Date).toISOString().slice(0,10)};return y([].concat((0,p.A)(e),[i])),i}function S(n,t){var e=v(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(e[r]=(0,f.A)((0,f.A)({},e[r]),t),y(e))}function k(n){var t=v().filter(function(t){return!n.includes(t.id)});y(t)}function b(n){try{return i().getStorageSync(l("order_list",n))||[]}catch(n){return[]}}function w(){try{return i().getStorageSync(s("order_list"))||[]}catch(n){return[]}}function T(n){i().setStorageSync(s("order_list"),n)}function C(n){var t,e=v(),r=w(),i=e.find(function(t){return t.id===n});if(!i)return null;var o=null!==(t=i.productIcon)&&void 0!==t&&t.startsWith("/icon/")||/^https?:/i.test(i.productIcon||"")?i.productIcon:h.rj[i.productId]||"/icon/\u56db\u89d2\u661f.svg",u=(0,g.uq)(o),c={id:"ORD"+Date.now().toString().slice(-9),productName:i.productName,productIcon:u,statusCode:"pending",date:(new Date).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).replace(/\//g,"-"),price:"\xa5"+(i.unitPrice*i.count).toFixed(2),count:i.count,sku:"".concat(i.productName," \xd7 ").concat(i.count)},a=e.findIndex(function(t){return t.id===n});return-1!==a&&(e[a].status="ordered",e[a].orderId=c.id),y(e),T([c].concat((0,p.A)(r))),c}var x="smart_user_registry",N="zhihui2024";function _(){try{return i().getStorageSync(x)||[]}catch(n){return[]}}function I(n){var t=_();t.includes(n)||(t.push(n),i().setStorageSync(x,t))}function B(n){var t=_().filter(function(t){return t!==n});i().setStorageSync(x,t)}function D(){try{return i().getStorageSync(o)}catch(n){return null}}function j(n){var t;i().setStorageSync(o,n),null!==n&&void 0!==n&&n.openid&&(i().setStorageSync(u,n.openid),i().setStorageSync("user_info_".concat(n.openid),n),I(n.openid)),(0,d.m)(),null===(t=i().eventCenter)||void 0===t||t.trigger("authStateChanged",{openid:(null===n||void 0===n?void 0:n.openid)||""})}function E(n){try{var t=i().getStorageSync("user_info_".concat(n));if(t)return t}catch(n){}var e=D();return(null===e||void 0===e?void 0:e.openid)===n?e:null}function P(){var n;i().removeStorageSync(o),i().removeStorageSync(u),(0,d.m)(),null===(n=i().eventCenter)||void 0===n||n.trigger("authStateChanged",{openid:""})}function R(n){j(n)}function M(){return D()}function q(){var n=_();return n.map(function(n){var t=E(n),e=m(n),r=b(n);return{openid:n,nickName:(null===t||void 0===t?void 0:t.nickName)||"\u672a\u77e5\u7528\u6237",avatarUrl:(null===t||void 0===t?void 0:t.avatarUrl)||"",loginAt:(null===t||void 0===t?void 0:t.loginAt)||0,designCount:e.length,orderCount:r.length}})}function F(n,t){var e="mock_"+Date.now().toString(36)+"_"+Math.random().toString(36).slice(2,6),r={openid:e,nickName:n||"\u5fae\u4fe1\u7528\u6237",avatarUrl:t||"",loginAt:Date.now()};return j(r),r}function H(n){var t=E(n);return!!t&&(i().setStorageSync(o,t),i().setStorageSync(u,n),!0)}function U(n){i().removeStorageSync("user_info_".concat(n)),i().removeStorageSync("design_list_".concat(n)),i().removeStorageSync("order_list_".concat(n)),i().removeStorageSync("address_list_".concat(n)),B(n);var t=D();(null===t||void 0===t?void 0:t.openid)===n&&P()}function Y(n){return n===N}function G(){try{return i().getStorageSync(s("address_list"))||[]}catch(n){return[]}}function O(n){i().setStorageSync(s("address_list"),n)}function W(n){var t=G(),e=(0,f.A)((0,f.A)({},n),{},{id:"ADR"+Date.now()});return e.isDefault&&t.forEach(function(n){n.isDefault=!1}),O([e].concat((0,p.A)(t))),e}function L(n,t){var e=G(),r=e.findIndex(function(t){return t.id===n});-1!==r&&(t.isDefault&&e.forEach(function(n){n.isDefault=!1}),e[r]=(0,f.A)((0,f.A)({},e[r]),t),O(e))}function Q(n){var t=G().filter(function(t){return t.id!==n});O(t)}function z(){return G().find(function(n){return n.isDefault})}var J="smart_theme";function V(){try{return i().getStorageSync(J)||"auto"}catch(n){return"auto"}}function Z(n){i().setStorageSync(J,n)}var $=null;function K(n){$=n}function X(n){if("auto"===n){if($)return $;try{var t=i().getAppBaseInfo();if("dark"===t.theme||"light"===t.theme)return t.theme}catch(n){}return"light"}return n}},6606:function(n,t,e){e.d(t,{G:function(){return u}});var r=e(758),i=e.n(r);function o(n){return"dark"===n?"#191919":"#faf7f2"}function u(n,t){var e=null!==t&&void 0!==t?t:o(n);i().setBackgroundColor({backgroundColor:e,backgroundColorTop:e,backgroundColorBottom:e}),i().setBackgroundTextStyle({textStyle:"dark"===n?"light":"dark"})}}}]); \ No newline at end of file diff --git a/dist/pages/address/index.js b/dist/pages/address/index.js index d88919c..4bc7d70 100644 --- a/dist/pages/address/index.js +++ b/dist/pages/address/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[81],{8807:function(e,s,a){var n=a(7842),c=a(5544),t=a(118),r=a(758),l=a.n(r),i=a(6540),o=a(1457),d=a(9703),u=a(9201),m=a(5414),h=a(9674),p=a(3053),x=a(9513),j=a(8199),f=a(4848);function N(){var e=(0,d.wR)(),s=(e.theme,e.resolvedTheme),a=(0,u.c)();(0,m.l)(s);var n=(0,i.useState)([]),r=(0,c.A)(n,2),N=r[0],S=r[1],g=(0,i.useState)(null),v=(0,c.A)(g,2),E=v[0],Y=v[1],b=(0,i.useState)(!1),T=(0,c.A)(b,2),y=T[0],k=T[1],w=(0,i.useState)(""),A=(0,c.A)(w,2),B=A[0],C=A[1],D=(0,i.useState)(""),I=(0,c.A)(D,2),P=I[0],J=I[1],M=(0,i.useState)([]),O=(0,c.A)(M,2),R=O[0],q=O[1],F=(0,i.useState)(""),H=(0,c.A)(F,2),L=H[0],U=H[1],V=(0,i.useState)(!1),_=(0,c.A)(V,2),z=_[0],G=_[1],K=function(){return S((0,o.Re)())};(0,i.useEffect)(function(){K()},[]);var Q=function(){C(""),J(""),q([]),U(""),G(!1),Y(null)},W=function(){Q(),k(!0)},X=function(e){Y(e),C(e.name),J(e.phone),q(e.region),U(e.detail),G(e.isDefault),k(!0)},Z=function(e){l().showModal({title:"\u786e\u8ba4\u5220\u9664",content:"\u5220\u9664\u540e\u5c06\u65e0\u6cd5\u6062\u590d\u8be5\u5730\u5740",success:function(s){s.confirm&&((0,o.ab)(e),K())}})},$=function(e){var s="".concat(e.name," ").concat(e.phone,"\n").concat(e.region.join(" ")," ").concat(e.detail);l().setClipboardData({data:s})},ee=function(){if(B.trim()&&P.trim()&&0!==R.length&&L.trim()){var e={name:B,phone:P,region:R,detail:L,isDefault:z};E?(0,o.yU)(E.id,e):(0,o.E1)(e),l().showToast({title:"\u4fdd\u5b58\u6210\u529f",icon:"success"}),k(!1),Q(),K()}else l().showToast({title:"\u8bf7\u586b\u5199\u5b8c\u6574\u4fe1\u606f",icon:"none"})},se=function(e){q(e.detail.value||[])};return(0,f.jsxs)(t.Ss,{className:"theme-".concat(s),children:[(0,f.jsx)(h.A,{}),(0,f.jsx)(p.A,{title:"\u6536\u8d27\u5730\u5740",targetSelector:".page-header",showBack:!0}),(0,f.jsxs)(t.Ss,{className:"address-page",children:[(0,f.jsx)(t.Ss,{className:"page-header",style:{paddingTop:"".concat(a.statusBarHeight+12,"px")},children:(0,f.jsxs)(t.Ss,{className:"page-header-inner",children:[(0,f.jsx)(t.Ss,{className:"back-btn",onTap:function(){return l().navigateBack()},children:(0,f.jsx)(t.EY,{className:"back-arrow",children:"\u2190"})}),(0,f.jsx)(t.EY,{className:"nav-title",children:"\u6536\u8d27\u5730\u5740"}),(0,f.jsx)(t.Ss,{className:"nav-placeholder"})]})}),(0,f.jsxs)(t.Ss,{className:"address-list",children:[N.map(function(e){return(0,f.jsxs)(t.Ss,{className:"address-card surface-card",children:[(0,f.jsxs)(t.Ss,{className:"address-header",children:[(0,f.jsxs)(t.Ss,{className:"address-user",children:[(0,f.jsx)(t.EY,{className:"address-name",children:e.name}),(0,f.jsx)(t.EY,{className:"address-phone",children:e.phone}),e.isDefault&&(0,f.jsx)(t.Ss,{className:"default-tag",children:(0,f.jsx)(t.EY,{children:"\u9ed8\u8ba4"})})]}),(0,f.jsxs)(t.EY,{className:"address-full",children:[e.region.join(" ")," ",e.detail]})]}),(0,f.jsxs)(t.Ss,{className:"address-actions",children:[(0,f.jsx)(t.EY,{className:"address-act",onTap:function(){return X(e)},children:"\u7f16\u8f91"}),(0,f.jsx)(t.EY,{className:"address-act",onTap:function(){return $(e)},children:"\u590d\u5236"}),(0,f.jsx)(t.EY,{className:"address-act delete",onTap:function(){return Z(e.id)},children:"\u5220\u9664"})]})]},e.id)}),0===N.length&&(0,f.jsxs)(t.Ss,{className:"empty-state",children:[(0,f.jsx)(t._V,{className:"empty-icon-img",src:(0,j.uq)("/icon/\u5730\u5740.png"),mode:"aspectFit"}),(0,f.jsx)(t.EY,{className:"empty-text",children:"\u8fd8\u6ca1\u6709\u6536\u8d27\u5730\u5740"}),(0,f.jsx)(t.EY,{className:"empty-sub",children:"\u70b9\u51fb\u4e0b\u65b9\u6309\u94ae\u6dfb\u52a0\u65b0\u5730\u5740"})]})]}),(0,f.jsx)(t.Ss,{className:"safe-bottom-placeholder"}),(0,f.jsx)(x.A,{children:(0,f.jsx)(t.Ss,{className:"btn-primary",onTap:W,children:(0,f.jsx)(t.EY,{children:"\u65b0\u589e\u6536\u8d27\u5730\u5740"})})}),y&&(0,f.jsx)(t.Ss,{className:"modal-overlay",children:(0,f.jsxs)(t.Ss,{className:"modal-card surface-card address-form",children:[(0,f.jsx)(t.EY,{className:"modal-title",children:E?"\u7f16\u8f91\u5730\u5740":"\u65b0\u589e\u5730\u5740"}),(0,f.jsx)(t.pd,{className:"form-input",placeholder:"\u6536\u8d27\u4eba\u59d3\u540d",value:B,onInput:function(e){return C(e.detail.value)}}),(0,f.jsx)(t.pd,{className:"form-input",placeholder:"\u624b\u673a\u53f7\u7801",type:"number",value:P,onInput:function(e){return J(e.detail.value)}}),(0,f.jsx)(t.LC,{mode:"region",value:R,onChange:se,children:(0,f.jsx)(t.Ss,{className:"form-picker",children:(0,f.jsx)(t.EY,{className:R.length?"form-picker-val":"form-picker-ph",children:R.length?R.join(" / "):"\u9009\u62e9\u7701 / \u5e02 / \u533a"})})}),(0,f.jsx)(t.pd,{className:"form-input",placeholder:"\u8be6\u7ec6\u5730\u5740\uff1a\u8857\u9053\u3001\u95e8\u724c\u53f7",value:L,onInput:function(e){return U(e.detail.value)}}),(0,f.jsxs)(t.Ss,{className:"form-row",onTap:function(){return G(!z)},children:[(0,f.jsx)(t.EY,{className:"form-label",children:"\u8bbe\u4e3a\u9ed8\u8ba4\u5730\u5740"}),(0,f.jsx)(t.Ss,{className:"checkbox ".concat(z?"checked":"")})]}),(0,f.jsxs)(t.Ss,{className:"form-actions",children:[(0,f.jsx)(t.Ss,{className:"btn-secondary",onTap:function(){k(!1),Q()},children:(0,f.jsx)(t.EY,{children:"\u53d6\u6d88"})}),(0,f.jsx)(t.Ss,{className:"btn-primary",onTap:ee,children:(0,f.jsx)(t.EY,{children:"\u4fdd\u5b58"})})]})]})})]})]})}var S={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u6536\u8d27\u5730\u5740"};Page((0,n.createPageConfig)(N,"pages/address/index",{root:{cn:[]}},S||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(8807)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[81],{8807:function(e,s,a){var n=a(7842),c=a(5544),t=a(118),l=a(758),r=a.n(l),i=a(6540),o=a(1457),d=a(6845),u=a(9703),m=a(9201),h=a(5414),f=a(9674),p=a(3053),x=a(9513),j=a(8199),N=a(4848);function S(){var e=(0,u.wR)(),s=(e.theme,e.resolvedTheme),a=(0,m.c)();(0,h.l)(s);var n=(0,i.useState)([]),l=(0,c.A)(n,2),S=l[0],g=l[1],v=(0,i.useState)(null),E=(0,c.A)(v,2),b=E[0],Y=E[1],y=(0,i.useState)(!1),T=(0,c.A)(y,2),w=T[0],k=T[1],A=(0,i.useState)(""),R=(0,c.A)(A,2),B=R[0],C=R[1],D=(0,i.useState)(""),I=(0,c.A)(D,2),P=I[0],F=I[1],J=(0,i.useState)([]),M=(0,c.A)(J,2),O=M[0],U=M[1],q=(0,i.useState)(""),H=(0,c.A)(q,2),L=H[0],V=H[1],_=(0,i.useState)(!1),z=(0,c.A)(_,2),G=z[0],K=z[1],Q=function(){g((0,o.Re)()),(0,d.ls)().then(function(e){g(e),(0,o.Rc)(e)}).catch(function(){return g((0,o.Re)())})};(0,i.useEffect)(function(){Q()},[]);var W=function(){C(""),F(""),U([]),V(""),K(!1),Y(null)},X=function(){W(),k(!0)},Z=function(e){Y(e),C(e.name),F(e.phone),U(e.region),V(e.detail),K(e.isDefault),k(!0)},$=function(e){r().showModal({title:"\u786e\u8ba4\u5220\u9664",content:"\u5220\u9664\u540e\u5c06\u65e0\u6cd5\u6062\u590d\u8be5\u5730\u5740",success:function(s){s.confirm&&(0,d.ab)(e).catch(function(){return(0,o.ab)(e)}).finally(Q)}})},ee=function(e){var s="".concat(e.name," ").concat(e.phone,"\n").concat(e.region.join(" ")," ").concat(e.detail);r().setClipboardData({data:s})},se=function(){if(B.trim()&&P.trim()&&0!==O.length&&L.trim()){var e={name:B,phone:P,region:O,detail:L,isDefault:G},s=b?(0,d.yU)(b.id,e):(0,d.FR)(e);s.then(function(){return r().showToast({title:"\u4fdd\u5b58\u6210\u529f",icon:"success"})}).catch(function(){b?(0,o.yU)(b.id,e):(0,o.E1)(e),r().showToast({title:"\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u5df2\u6682\u5b58\u5230\u672c\u5730",icon:"none"})}).finally(function(){k(!1),W(),Q()})}else r().showToast({title:"\u8bf7\u586b\u5199\u5b8c\u6574\u4fe1\u606f",icon:"none"})},ae=function(e){U(e.detail.value||[])};return(0,N.jsxs)(t.Ss,{className:"theme-".concat(s),children:[(0,N.jsx)(f.A,{}),(0,N.jsx)(p.A,{title:"\u6536\u8d27\u5730\u5740",targetSelector:".page-header",showBack:!0}),(0,N.jsxs)(t.Ss,{className:"address-page",children:[(0,N.jsx)(t.Ss,{className:"page-header",style:{paddingTop:"".concat(a.statusBarHeight+12,"px")},children:(0,N.jsxs)(t.Ss,{className:"page-header-inner",children:[(0,N.jsx)(t.Ss,{className:"back-btn",onTap:function(){return r().navigateBack()},children:(0,N.jsx)(t.EY,{className:"back-arrow",children:"\u2190"})}),(0,N.jsx)(t.EY,{className:"nav-title",children:"\u6536\u8d27\u5730\u5740"}),(0,N.jsx)(t.Ss,{className:"nav-placeholder"})]})}),(0,N.jsxs)(t.Ss,{className:"address-list",children:[S.map(function(e){return(0,N.jsxs)(t.Ss,{className:"address-card surface-card",children:[(0,N.jsxs)(t.Ss,{className:"address-header",children:[(0,N.jsxs)(t.Ss,{className:"address-user",children:[(0,N.jsx)(t.EY,{className:"address-name",children:e.name}),(0,N.jsx)(t.EY,{className:"address-phone",children:e.phone}),e.isDefault&&(0,N.jsx)(t.Ss,{className:"default-tag",children:(0,N.jsx)(t.EY,{children:"\u9ed8\u8ba4"})})]}),(0,N.jsxs)(t.EY,{className:"address-full",children:[e.region.join(" ")," ",e.detail]})]}),(0,N.jsxs)(t.Ss,{className:"address-actions",children:[(0,N.jsx)(t.EY,{className:"address-act",onTap:function(){return Z(e)},children:"\u7f16\u8f91"}),(0,N.jsx)(t.EY,{className:"address-act",onTap:function(){return ee(e)},children:"\u590d\u5236"}),(0,N.jsx)(t.EY,{className:"address-act delete",onTap:function(){return $(e.id)},children:"\u5220\u9664"})]})]},e.id)}),0===S.length&&(0,N.jsxs)(t.Ss,{className:"empty-state",children:[(0,N.jsx)(t._V,{className:"empty-icon-img",src:(0,j.uq)("/icon/\u5730\u5740.png"),mode:"aspectFit"}),(0,N.jsx)(t.EY,{className:"empty-text",children:"\u8fd8\u6ca1\u6709\u6536\u8d27\u5730\u5740"}),(0,N.jsx)(t.EY,{className:"empty-sub",children:"\u70b9\u51fb\u4e0b\u65b9\u6309\u94ae\u6dfb\u52a0\u65b0\u5730\u5740"})]})]}),(0,N.jsx)(t.Ss,{className:"safe-bottom-placeholder"}),(0,N.jsx)(x.A,{children:(0,N.jsx)(t.Ss,{className:"btn-primary",onTap:X,children:(0,N.jsx)(t.EY,{children:"\u65b0\u589e\u6536\u8d27\u5730\u5740"})})}),w&&(0,N.jsx)(t.Ss,{className:"modal-overlay",children:(0,N.jsxs)(t.Ss,{className:"modal-card surface-card address-form",children:[(0,N.jsx)(t.EY,{className:"modal-title",children:b?"\u7f16\u8f91\u5730\u5740":"\u65b0\u589e\u5730\u5740"}),(0,N.jsx)(t.pd,{className:"form-input",placeholder:"\u6536\u8d27\u4eba\u59d3\u540d",value:B,onInput:function(e){return C(e.detail.value)}}),(0,N.jsx)(t.pd,{className:"form-input",placeholder:"\u624b\u673a\u53f7\u7801",type:"number",value:P,onInput:function(e){return F(e.detail.value)}}),(0,N.jsx)(t.LC,{mode:"region",value:O,onChange:ae,children:(0,N.jsx)(t.Ss,{className:"form-picker",children:(0,N.jsx)(t.EY,{className:O.length?"form-picker-val":"form-picker-ph",children:O.length?O.join(" / "):"\u9009\u62e9\u7701 / \u5e02 / \u533a"})})}),(0,N.jsx)(t.pd,{className:"form-input",placeholder:"\u8be6\u7ec6\u5730\u5740\uff1a\u8857\u9053\u3001\u95e8\u724c\u53f7",value:L,onInput:function(e){return V(e.detail.value)}}),(0,N.jsxs)(t.Ss,{className:"form-row",onTap:function(){return K(!G)},children:[(0,N.jsx)(t.EY,{className:"form-label",children:"\u8bbe\u4e3a\u9ed8\u8ba4\u5730\u5740"}),(0,N.jsx)(t.Ss,{className:"checkbox ".concat(G?"checked":"")})]}),(0,N.jsxs)(t.Ss,{className:"form-actions",children:[(0,N.jsx)(t.Ss,{className:"btn-secondary",onTap:function(){k(!1),W()},children:(0,N.jsx)(t.EY,{children:"\u53d6\u6d88"})}),(0,N.jsx)(t.Ss,{className:"btn-primary",onTap:se,children:(0,N.jsx)(t.EY,{children:"\u4fdd\u5b58"})})]})]})})]})]})}var g={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u6536\u8d27\u5730\u5740"};Page((0,n.createPageConfig)(S,"pages/address/index",{root:{cn:[]}},g||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(8807)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/designList/index.js b/dist/pages/designList/index.js index 112d184..261960b 100644 --- a/dist/pages/designList/index.js +++ b/dist/pages/designList/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[319],{3512:function(e,s,n){var a=n(7842),t=n(5544),c=n(118),i=n(758),l=n.n(i),r=n(6540),d=n(1457),o=n(5234),u=n(8199),h=n(9703),g=n(9201),m=n(5414),x=n(7723),p=n(9674),b=n(3053),j=n(4848),f=[{code:"all",label:"\u5168\u90e8"},{code:"toDesign",label:"\u5f85\u8bbe\u8ba1"},{code:"undesigned",label:"\u672a\u8bbe\u8ba1"},{code:"designing",label:"\u8bbe\u8ba1\u4e2d"},{code:"ordered",label:"\u5df2\u4e0b\u5355"}],S=f.filter(function(e){return"undesigned"!==e.code}),N={undesigned:{label:"\u672a\u8bbe\u8ba1",cls:"badge-pink"},designing:{label:"\u8bbe\u8ba1\u4e2d",cls:"badge-blue"},ordered:{label:"\u5df2\u4e0b\u5355",cls:"badge-green"}};function v(){var e=(0,h.wR)(),s=e.resolvedTheme,n=(0,g.c)();(0,m.l)(s);var a=(0,r.useState)("all"),i=(0,t.A)(a,2),v=i[0],w=i[1],y=(0,r.useState)([]),T=(0,t.A)(y,2),E=T[0],Y=T[1],k=(0,r.useState)(!1),A=(0,t.A)(k,2),z=A[0],I=A[1],P=(0,r.useState)(new Set),B=(0,t.A)(P,2),C=B[0],L=B[1],M=(0,r.useCallback)(function(){Y((0,d.p_)())},[]),F=(0,r.useCallback)(function(){var e=l().getStorageSync("designList:filter");e&&f.some(function(s){return s.code===e})&&(w(e),l().removeStorageSync("designList:filter")),M()},[M]);(0,r.useEffect)(function(){var e=l().getCurrentInstance().page;if(e){var s=e.onShow;e.onShow=function(){F(),s&&s.apply(this)}}F()},[F]);var _="all"===v?E:"toDesign"===v?E.filter(function(e){return"undesigned"===e.status||"designing"===e.status}):E.filter(function(e){return e.status===v}),q=function(e){"ordered"!==e.status?l().navigateTo({url:"/pages/diy/index?source=designList&designId=".concat(e.id)}):l().showToast({title:"\u8be5\u5546\u54c1\u5df2\u4e0b\u5355\uff0c\u8bf7\u67e5\u770b\u8ba2\u5355",icon:"none"})},D=function(e){var s=new Set(C);s.has(e)?s.delete(e):s.add(e),L(s)},J=function(){C.size===_.length?L(new Set):L(new Set(_.map(function(e){return e.id})))},O=function(){0!==C.size&&l().showModal({title:"\u786e\u8ba4\u5220\u9664",content:"\u786e\u5b9a\u5220\u9664\u9009\u4e2d\u7684 ".concat(C.size," \u4e2a\u6761\u76ee\u5417\uff1f"),success:function(e){e.confirm&&((0,d.kh)(Array.from(C)),L(new Set),I(!1),M())}})},V=function(){z?(I(!1),L(new Set)):I(!0)};return(0,j.jsxs)(c.Ss,{className:"theme-".concat(s),children:[(0,j.jsx)(p.A,{}),(0,j.jsx)(b.A,{title:"\u6211\u7684\u8bbe\u8ba1\u6e05\u5355",targetSelector:".page-header.design-header"}),(0,j.jsx)(x.A,{children:(0,j.jsxs)(c.Ss,{className:"design-page",children:[(0,j.jsxs)(c.Ss,{className:"page-header design-header",style:{paddingTop:"".concat(n.statusBarHeight+12,"px")},children:[(0,j.jsx)(c.EY,{className:"header-title",children:"\u6211\u7684\u8bbe\u8ba1\u6e05\u5355"}),(0,j.jsx)(c.Ss,{className:"header-manage",onTap:V,children:(0,j.jsx)(c.EY,{children:z?"\u5b8c\u6210":"\u7ba1\u7406"})})]}),(0,j.jsx)(c.Ss,{className:"status-tabs",children:(0,j.jsx)(c.BM,{className:"tabs-scroll",scrollX:!0,children:S.map(function(e){return(0,j.jsx)(c.Ss,{className:"chip ".concat(v===e.code?"active":""),onTap:function(){return w(e.code)},children:(0,j.jsx)(c.EY,{className:"tab-label",children:e.label})},e.code)})})}),z&&(0,j.jsx)(c.Ss,{className:"batch-bar",children:(0,j.jsxs)(c.Ss,{className:"flex-between",style:{width:"100%"},children:[(0,j.jsxs)(c.Ss,{className:"batch-select-all",onTap:J,children:[(0,j.jsx)(c.Ss,{className:"batch-checkbox ".concat(C.size===_.length&&_.length>0?"checked":"")}),(0,j.jsxs)(c.EY,{className:"batch-text",children:["\u5168\u9009 (",C.size,"/",_.length,")"]})]}),(0,j.jsx)(c.Ss,{className:"batch-delete ".concat(C.size>0?"active":""),onTap:O,children:(0,j.jsx)(c.EY,{children:"\u5220\u9664"})})]})}),(0,j.jsxs)(c.BM,{className:"design-list",scrollY:!0,children:[_.map(function(e){var s=N[e.status],n=(e.productIcon||"").startsWith("/icon/")||/^https?:/i.test(e.productIcon||"")?e.productIcon:o.rj[e.productId]||"/icon/\u56db\u89d2\u661f.svg",a=(0,u.uq)(n),t=C.has(e.id);return(0,j.jsxs)(c.Ss,{className:"design-card ".concat(t?"selected":""),onTap:function(){return z?D(e.id):void 0},children:[(0,j.jsxs)(c.Ss,{className:"design-body",children:[z&&(0,j.jsx)(c.Ss,{className:"batch-checkbox ".concat(t?"checked":"")}),(0,j.jsx)(c._V,{className:"design-icon-img",src:a,mode:"aspectFit"}),(0,j.jsxs)(c.Ss,{className:"design-info",children:[(0,j.jsxs)(c.Ss,{className:"design-title-row",children:[(0,j.jsx)(c.EY,{className:"design-name",children:e.productName}),(0,j.jsx)(c.EY,{className:"badge ".concat(s.cls),children:s.label})]}),(0,j.jsxs)(c.EY,{className:"design-meta",children:["\u6570\u91cf: ",e.count," \u4ef6 | \u5355\u4ef7: \xa5",e.unitPrice]}),(0,j.jsxs)(c.EY,{className:"design-total",children:["\u5c0f\u8ba1: \xa5",(e.unitPrice*e.count).toFixed(2)]})]})]}),!z&&(0,j.jsxs)(c.Ss,{className:"design-actions",children:["ordered"!==e.status&&(0,j.jsx)(c.Ss,{className:"btn-primary design-btn",onTap:function(){return q(e)},children:(0,j.jsx)(c.EY,{children:"undesigned"===e.status?"\u5f00\u59cb\u8bbe\u8ba1":"\u7ee7\u7eed\u8bbe\u8ba1"})}),"ordered"===e.status&&(0,j.jsx)(c.Ss,{className:"btn-secondary design-btn",onTap:function(){return l().switchTab({url:"/pages/orders/index"})},children:(0,j.jsx)(c.EY,{children:"\u67e5\u770b\u8ba2\u5355"})})]})]},e.id)}),0===_.length&&(0,j.jsxs)(c.Ss,{className:"empty-state",children:[(0,j.jsx)(c._V,{className:"empty-icon-img",src:(0,u.uq)("/icon/\u8c03\u8272\u76d8.png"),mode:"aspectFit"}),(0,j.jsx)(c.EY,{className:"empty-text",children:"\u8fd8\u6ca1\u6709\u8bbe\u8ba1\u6e05\u5355"}),(0,j.jsx)(c.EY,{className:"empty-sub",children:"\u53bb\u9996\u9875\u901b\u901b\uff0c\u627e\u5230\u559c\u6b22\u7684\u5b9a\u5236\u54c1"}),(0,j.jsx)(c.Ss,{className:"btn-primary",onTap:function(){return l().switchTab({url:"/pages/index/index"})},children:(0,j.jsx)(c.EY,{children:"\u53bb\u901b\u901b"})})]})]})]})})]})}var w={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u8bbe\u8ba1\u6e05\u5355"};Page((0,a.createPageConfig)(v,"pages/designList/index",{root:{cn:[]}},w||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(3512)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[319],{3512:function(e,s,n){var a=n(7842),c=n(5544),t=n(118),i=n(758),l=n.n(i),r=n(6540),d=n(1457),o=n(6845),u=n(5234),h=n(8199),g=n(9703),m=n(9201),x=n(5414),p=n(7723),b=n(9674),f=n(3053),j=n(4848),S=[{code:"all",label:"\u5168\u90e8"},{code:"toDesign",label:"\u5f85\u8bbe\u8ba1"},{code:"undesigned",label:"\u672a\u8bbe\u8ba1"},{code:"designing",label:"\u8bbe\u8ba1\u4e2d"},{code:"processing",label:"\u751f\u4ea7\u4e2d"},{code:"ordered",label:"\u5df2\u4e0b\u5355"}],N=S.filter(function(e){return"undesigned"!==e.code}),v={undesigned:{label:"\u672a\u8bbe\u8ba1",cls:"badge-pink"},designing:{label:"\u8bbe\u8ba1\u4e2d",cls:"badge-blue"},processing:{label:"\u751f\u4ea7\u4e2d",cls:"badge-warning"},ordered:{label:"\u5df2\u4e0b\u5355",cls:"badge-green"}};function w(){var e=(0,g.wR)(),s=e.resolvedTheme,n=(0,m.c)();(0,x.l)(s);var a=(0,r.useState)("all"),i=(0,c.A)(a,2),w=i[0],y=i[1],T=(0,r.useState)([]),E=(0,c.A)(T,2),Y=E[0],k=E[1],A=(0,r.useState)(!1),z=(0,c.A)(A,2),I=z[0],P=z[1],B=(0,r.useState)(new Set),C=(0,c.A)(B,2),F=C[0],L=C[1],M=(0,r.useCallback)(function(){k((0,d.p_)()),(0,o.rP)().then(function(e){k(e),(0,d.Fu)(e)}).catch(function(){return k((0,d.p_)())})},[]),_=(0,r.useCallback)(function(){var e=l().getStorageSync("designList:filter");e&&S.some(function(s){return s.code===e})&&(y(e),l().removeStorageSync("designList:filter")),M()},[M]);(0,r.useEffect)(function(){var e=l().getCurrentInstance().page;if(e){var s=e.onShow;e.onShow=function(){_(),s&&s.apply(this)}}_()},[_]);var q="all"===w?Y:"toDesign"===w?Y.filter(function(e){return"undesigned"===e.status||"designing"===e.status}):Y.filter(function(e){return e.status===w}),D=function(e){"ordered"!==e.status?l().navigateTo({url:"/pages/diy/index?source=designList&designId=".concat(e.id)}):l().showToast({title:"\u8be5\u5546\u54c1\u5df2\u4e0b\u5355\uff0c\u8bf7\u67e5\u770b\u8ba2\u5355",icon:"none"})},J=function(e){var s=new Set(F);s.has(e)?s.delete(e):s.add(e),L(s)},O=function(){F.size===q.length?L(new Set):L(new Set(q.map(function(e){return e.id})))},V=function(){0!==F.size&&l().showModal({title:"\u786e\u8ba4\u5220\u9664",content:"\u786e\u5b9a\u5220\u9664\u9009\u4e2d\u7684 ".concat(F.size," \u4e2a\u6761\u76ee\u5417\uff1f"),success:function(e){if(e.confirm){var s=Array.from(F);L(new Set),P(!1),(0,o.p8)(s).catch(function(){return(0,d.kh)(s)}).finally(M)}}})},H=function(){I?(P(!1),L(new Set)):P(!0)};return(0,j.jsxs)(t.Ss,{className:"theme-".concat(s),children:[(0,j.jsx)(b.A,{}),(0,j.jsx)(f.A,{title:"\u6211\u7684\u8bbe\u8ba1\u6e05\u5355",targetSelector:".page-header.design-header"}),(0,j.jsx)(p.A,{children:(0,j.jsxs)(t.Ss,{className:"design-page",children:[(0,j.jsxs)(t.Ss,{className:"page-header design-header",style:{paddingTop:"".concat(n.statusBarHeight+12,"px")},children:[(0,j.jsx)(t.EY,{className:"header-title",children:"\u6211\u7684\u8bbe\u8ba1\u6e05\u5355"}),(0,j.jsx)(t.Ss,{className:"header-manage",onTap:H,children:(0,j.jsx)(t.EY,{children:I?"\u5b8c\u6210":"\u7ba1\u7406"})})]}),(0,j.jsx)(t.Ss,{className:"status-tabs",children:(0,j.jsx)(t.BM,{className:"tabs-scroll",scrollX:!0,children:N.map(function(e){return(0,j.jsx)(t.Ss,{className:"chip ".concat(w===e.code?"active":""),onTap:function(){return y(e.code)},children:(0,j.jsx)(t.EY,{className:"tab-label",children:e.label})},e.code)})})}),I&&(0,j.jsx)(t.Ss,{className:"batch-bar",children:(0,j.jsxs)(t.Ss,{className:"flex-between",style:{width:"100%"},children:[(0,j.jsxs)(t.Ss,{className:"batch-select-all",onTap:O,children:[(0,j.jsx)(t.Ss,{className:"batch-checkbox ".concat(F.size===q.length&&q.length>0?"checked":"")}),(0,j.jsxs)(t.EY,{className:"batch-text",children:["\u5168\u9009 (",F.size,"/",q.length,")"]})]}),(0,j.jsx)(t.Ss,{className:"batch-delete ".concat(F.size>0?"active":""),onTap:V,children:(0,j.jsx)(t.EY,{children:"\u5220\u9664"})})]})}),(0,j.jsxs)(t.BM,{className:"design-list",scrollY:!0,children:[q.map(function(e){var s=v[e.status]||v.undesigned,n=(e.productIcon||"").startsWith("/icon/")||/^https?:/i.test(e.productIcon||"")?e.productIcon:u.rj[e.productId]||"/icon/\u56db\u89d2\u661f.svg",a=(0,h.uq)(n),c=F.has(e.id);return(0,j.jsxs)(t.Ss,{className:"design-card ".concat(c?"selected":""),onTap:function(){return I?J(e.id):void 0},children:[(0,j.jsxs)(t.Ss,{className:"design-body",children:[I&&(0,j.jsx)(t.Ss,{className:"batch-checkbox ".concat(c?"checked":"")}),(0,j.jsx)(t._V,{className:"design-icon-img",src:a,mode:"aspectFit"}),(0,j.jsxs)(t.Ss,{className:"design-info",children:[(0,j.jsxs)(t.Ss,{className:"design-title-row",children:[(0,j.jsx)(t.EY,{className:"design-name",children:e.productName}),(0,j.jsx)(t.EY,{className:"badge ".concat(s.cls),children:s.label})]}),(0,j.jsxs)(t.EY,{className:"design-meta",children:["\u6570\u91cf: ",e.count," \u4ef6 | \u5355\u4ef7: \xa5",e.unitPrice]}),(0,j.jsxs)(t.EY,{className:"design-total",children:["\u5c0f\u8ba1: \xa5",(e.unitPrice*e.count).toFixed(2)]})]})]}),!I&&(0,j.jsxs)(t.Ss,{className:"design-actions",children:["ordered"!==e.status&&(0,j.jsx)(t.Ss,{className:"btn-primary design-btn",onTap:function(){return D(e)},children:(0,j.jsx)(t.EY,{children:"undesigned"===e.status?"\u5f00\u59cb\u8bbe\u8ba1":"\u7ee7\u7eed\u8bbe\u8ba1"})}),"ordered"===e.status&&(0,j.jsx)(t.Ss,{className:"btn-secondary design-btn",onTap:function(){return l().switchTab({url:"/pages/orders/index"})},children:(0,j.jsx)(t.EY,{children:"\u67e5\u770b\u8ba2\u5355"})})]})]},e.id)}),0===q.length&&(0,j.jsxs)(t.Ss,{className:"empty-state",children:[(0,j.jsx)(t._V,{className:"empty-icon-img",src:(0,h.uq)("/icon/\u8c03\u8272\u76d8.png"),mode:"aspectFit"}),(0,j.jsx)(t.EY,{className:"empty-text",children:"\u8fd8\u6ca1\u6709\u8bbe\u8ba1\u6e05\u5355"}),(0,j.jsx)(t.EY,{className:"empty-sub",children:"\u53bb\u9996\u9875\u901b\u901b\uff0c\u627e\u5230\u559c\u6b22\u7684\u5b9a\u5236\u54c1"}),(0,j.jsx)(t.Ss,{className:"btn-primary",onTap:function(){return l().switchTab({url:"/pages/index/index"})},children:(0,j.jsx)(t.EY,{children:"\u53bb\u901b\u901b"})})]})]})]})})]})}var y={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u8bbe\u8ba1\u6e05\u5355"};Page((0,a.createPageConfig)(w,"pages/designList/index",{root:{cn:[]}},y||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(3512)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/diy/index.js b/dist/pages/diy/index.js index 988b8ed..ce37ea0 100644 --- a/dist/pages/diy/index.js +++ b/dist/pages/diy/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[95],{8955:function(e,a,s){var t=s(7842),c=s(1212),n=s(467),i=s(9379),r=s(436),l=s(5544),o=s(118),d=s(758),u=s.n(d),h=s(6540),m=s(5234),p=s(1457),x=s(6845),g=s(9703),f=s(9201),v=s(5414),j=s(9674),N=s(3053),S=s(9513),y=s(4848);function w(){var e=(0,g.wR)(),a=(e.theme,e.resolvedTheme),s=(0,f.c)();(0,v.l)(a);var t=(0,h.useState)(null),d=(0,l.A)(t,2),w=d[0],b=d[1],k=(0,h.useState)(1),A=(0,l.A)(k,2),E=(A[0],A[1],(0,h.useState)("")),T=(0,l.A)(E,2),Y=T[0],D=T[1],I=(0,h.useState)(1),O=(0,l.A)(I,2),P=(O[0],O[1]),_=(0,h.useState)([]),F=(0,l.A)(_,2),M=F[0],B=F[1],R=(0,h.useState)(null),z=(0,l.A)(R,2),V=z[0],q=z[1],C=(0,h.useState)(!1),G=(0,l.A)(C,2),J=G[0],X=G[1],H=(0,h.useState)({x:0,y:0}),L=(0,l.A)(H,2),K=L[0],Q=L[1],U=(0,h.useState)(!1),W=(0,l.A)(U,2),Z=W[0],$=W[1],ee=(0,h.useState)(!1),ae=(0,l.A)(ee,2),se=ae[0],te=ae[1];(0,h.useEffect)(function(){var e=u().getCurrentInstance().router,a=e?e.params:void 0,s=a?a.source:void 0,t=a&&a.productId||a&&a.category;if("product"===s&&t){var c=(0,m.y9)(t);if(c){b(c),P(Number(a?a.quantity:void 0)||1);var n={id:"DSG"+Date.now(),productId:c.id,productName:c.name,productIcon:c.icon,unitPrice:c.price,count:Number(a?a.quantity:void 0)||1,status:"designing",createdAt:(new Date).toISOString().slice(0,10)},i=(0,p.p_)();(0,p.Fu)([].concat((0,r.A)(i),[n])),D(n.id)}}else if("designList"===s&&a&&a.designId){var l=a.designId,o=(0,p.p_)(),d=o.find(function(e){return e.id===l});if(d){D(l),P(d.count);var h=(0,m.y9)(d.productId);if(h&&b(h),d.designData?d.designData.stickers:void 0)B(d.designData.stickers);else if(d.designData?d.designData.imageSrc:void 0){var x={id:"legacy_"+Date.now(),src:d.designData.imageSrc,x:d.designData.imagePos&&d.designData.imagePos.x||0,y:d.designData.imagePos&&d.designData.imagePos.y||0,scale:d.designData.imagePos&&d.designData.imagePos.scale||1,width:200,height:200,isOverlapping:!1};B([x])}}}else if(t){var g=(0,m.y9)(t);if(g){b(g);var f={id:"DSG"+Date.now(),productId:g.id,productName:g.name,productIcon:g.icon,unitPrice:g.price,count:1,status:"designing",createdAt:(new Date).toISOString().slice(0,10)},v=(0,p.p_)();(0,p.Fu)([].concat((0,r.A)(v),[f])),D(f.id)}}},[]);var ce=function(e){for(var a=e.map(function(e){return(0,i.A)((0,i.A)({},e),{},{isOverlapping:!1})}),s=0;sn.x&&c.yn.y&&(a[s].isOverlapping=!0,a[t].isOverlapping=!0)}var u=a.some(function(e){return e.isOverlapping});return te(u),a},ne=function(){u().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(e){var a=e.tempFilePaths[0];u().getImageInfo({src:a,success:function(e){var s={id:"stk_"+Date.now(),src:a,x:0,y:0,scale:1,width:e.width,height:e.height,isOverlapping:!1},t=[].concat((0,r.A)(M),[s]),c=ce(t);B(c),q(s.id)},fail:function(){var e={id:"stk_"+Date.now(),src:a,x:0,y:0,scale:1,width:200,height:200,isOverlapping:!1},s=[].concat((0,r.A)(M),[e]),t=ce(s);B(t),q(e.id)}})}})},ie=function(e){var a=M.filter(function(a){return a.id!==e}),s=ce(a);B(s),V===e&&q(null)},re=function(e,a){var s=e.touches[0],t=M.find(function(e){return e.id===a});t&&(q(a),X(!0),Q({x:s.clientX-t.x,y:s.clientY-t.y}))},le=function(e){if(J&&V){var a=e.touches[0],s=M.map(function(e){return e.id!==V?e:(0,i.A)((0,i.A)({},e),{},{x:a.clientX-K.x,y:a.clientY-K.y})}),t=ce(s);B(t)}},oe=function(){return X(!1)},de=function(){V&&Y&&u().navigateTo({url:"/pages/diy/stickerEdit/index?designId=".concat(Y,"&stickerId=").concat(V)})},ue=function(e,a){var s=M.map(function(s){return s.id!==e?s:(0,i.A)((0,i.A)({},s),{},{scale:Math.max(.3,Math.min(3,s.scale+a))})}),t=ce(s);B(t)},he=function(){u().navigateBack()},me=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},pe=function(){var e=(0,n.A)((0,c.A)().m(function e(){var a;return(0,c.A)().w(function(e){while(1)switch(e.n){case 0:if(!se){e.n=1;break}return u().showToast({title:"\u8d34\u7eb8\u4e0d\u80fd\u91cd\u53e0",icon:"none"}),e.a(2);case 1:if(!Y){e.n=3;break}return e.n=2,(0,x.x5)({stickers:M,category:w,version:1});case 2:a=e.v,(0,p.i5)(Y,{designData:a});case 3:$(!1),u().navigateTo({url:"/pages/checkout/index?designId=".concat(Y)});case 4:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}(),xe=V?M.find(function(e){return e.id===V}):void 0,ge=xe?xe.scale:1;return w?(0,y.jsxs)(o.Ss,{className:"theme-".concat(a),children:[(0,y.jsx)(j.A,{}),(0,y.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,y.jsxs)(o.Ss,{className:"diy-page",children:[(0,y.jsx)(o.Ss,{className:"page-header surface-card",style:{paddingTop:"".concat(s.statusBarHeight+12,"px")},children:(0,y.jsxs)(o.Ss,{className:"flex-between",style:{width:"100%"},children:[(0,y.jsx)(o.EY,{className:"back-btn",onTap:he,children:"\u2190"}),(0,y.jsx)(o.EY,{className:"page-title",children:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0"}),(0,y.jsx)(o.Ss,{className:"header-spacer"})]})}),(0,y.jsx)(o.Ss,{className:"canvas-wrapper surface-card mt-20",catchMove:!0,children:(0,y.jsxs)(o.Ss,{className:"canvas-area",style:me(),children:[M.map(function(e){return(0,y.jsx)(o._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:J&&V===e.id?.8:1,zIndex:V===e.id?10:5,width:e.width||200,height:e.height||200},onTouchStart:function(a){return re(a,e.id)},onTouchMove:le,onTouchEnd:oe,onTap:function(){return q(e.id)},mode:"aspectFit"},e.id)}),(0,y.jsx)(o.Ss,{className:"mask-border",style:me()})]})}),(0,y.jsxs)(o.Ss,{className:"sticker-panel surface-card mt-20",children:[(0,y.jsx)(o.EY,{className:"section-title",children:"\u8d34\u7eb8"}),(0,y.jsxs)(o.Ss,{className:"sticker-list",children:[M.map(function(e){return(0,y.jsxs)(o.Ss,{className:"sticker-thumb ".concat(e.isOverlapping?"overlap":""," ").concat(V===e.id?"active":""),children:[(0,y.jsx)(o._V,{src:e.src,className:"sticker-thumb-img",mode:"aspectFit",onTap:function(){return q(e.id)}}),(0,y.jsx)(o.Ss,{className:"sticker-del",onTap:function(){return ie(e.id)},children:(0,y.jsx)(o.EY,{className:"del-icon",children:"\xd7"})})]},e.id)}),(0,y.jsxs)(o.Ss,{className:"sticker-add-btn",onTap:ne,children:[(0,y.jsx)(o.EY,{className:"add-icon",children:"+"}),(0,y.jsx)(o.EY,{className:"add-label",children:"\u6dfb\u52a0"})]})]}),se&&(0,y.jsx)(o.EY,{className:"overlap-hint",children:"\u6709\u8d34\u7eb8\u91cd\u53e0\uff0c\u8bf7\u8c03\u6574\u4f4d\u7f6e"})]}),V&&(0,y.jsxs)(o.Ss,{className:"toolbar surface-card mt-20",children:[(0,y.jsxs)(o.Ss,{className:"tool-row",children:[(0,y.jsx)(o.EY,{className:"tool-label",children:"\u7f29\u653e"}),(0,y.jsxs)(o.Ss,{className:"flex-center",style:{gap:"20px"},children:[(0,y.jsx)(o.Ss,{className:"tool-btn",onTap:function(){return ue(V,-.1)},children:"\uff0d"}),(0,y.jsxs)(o.EY,{className:"tool-value",children:[Math.round(100*ge),"%"]}),(0,y.jsx)(o.Ss,{className:"tool-btn",onTap:function(){return ue(V,.1)},children:"\uff0b"})]})]}),(0,y.jsxs)(o.Ss,{className:"tool-row",children:[(0,y.jsx)(o.EY,{className:"tool-label",children:"\u63d0\u793a"}),(0,y.jsx)(o.EY,{className:"tool-hint",children:"\u62d6\u52a8\u8c03\u6574\u4f4d\u7f6e\uff0c\u8d34\u7eb8\u4e0d\u53ef\u91cd\u53e0"})]})]}),(0,y.jsx)(o.Ss,{className:"edit-btn-bar mt-20",children:(0,y.jsx)(o.Ss,{className:"edit-btn ".concat(V?"active":"disabled"),onTap:de,children:(0,y.jsx)(o.EY,{children:"\u7f16\u8f91"})})}),(0,y.jsxs)(S.A,{children:[(0,y.jsx)(o.Ss,{className:"btn-primary",onTap:function(){return $(!0)},children:(0,y.jsx)(o.EY,{children:"\u9884\u89c8\u6548\u679c"})}),(0,y.jsx)(o.Ss,{className:"btn-secondary",onTap:ne,children:(0,y.jsx)(o.EY,{children:"\u6dfb\u52a0\u8d34\u7eb8"})})]}),Z&&(0,y.jsx)(o.Ss,{className:"preview-overlay",children:(0,y.jsxs)(o.Ss,{className:"preview-card surface-card",children:[(0,y.jsx)(o.EY,{className:"preview-title",children:"\u786e\u8ba4\u6548\u679c"}),(0,y.jsx)(o.Ss,{className:"preview-canvas",style:me(),children:M.map(function(e){return(0,y.jsx)(o._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,")"),width:e.width||200,height:e.height||200},mode:"aspectFit"},e.id)})}),(0,y.jsxs)(o.Ss,{className:"product-info",children:[(0,y.jsx)(o.EY,{className:"product-name",children:w.name}),(0,y.jsxs)(o.EY,{className:"product-size",children:["\u753b\u5e03\u5c3a\u5bf8: ",w.mask.width," \xd7 ",w.mask.height," px"]}),se&&(0,y.jsx)(o.EY,{className:"overlap-hint",children:"\u8d34\u7eb8\u6709\u91cd\u53e0\uff0c\u4e0d\u53ef\u63d0\u4ea4"})]}),(0,y.jsxs)(o.Ss,{className:"preview-actions",children:[(0,y.jsx)(o.Ss,{className:"btn-secondary",onTap:function(){return $(!1)},children:(0,y.jsx)(o.EY,{children:"\u8fd4\u56de\u4fee\u6539"})}),(0,y.jsx)(o.Ss,{className:"btn-primary ".concat(se?"disabled":""),onTap:pe,children:(0,y.jsx)(o.EY,{children:"\u786e\u8ba4\u5b8c\u6210"})})]})]})}),(0,y.jsx)(o.Ss,{className:"safe-bottom-placeholder"})]})]}):(0,y.jsxs)(o.Ss,{className:"theme-".concat(a),children:[(0,y.jsx)(j.A,{}),(0,y.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,y.jsx)(o.Ss,{className:"diy-page",children:(0,y.jsx)(o.EY,{className:"page-title",children:"\u52a0\u8f7d\u4e2d..."})})]})}var b={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"DIY\u5de5\u4f5c\u53f0"};Page((0,t.createPageConfig)(w,"pages/diy/index",{root:{cn:[]}},b||{}))}},function(e){var a=function(a){return e(e.s=a)};e.O(0,[907,96,76],function(){return a(8955)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[95],{8955:function(e,s,a){var t=a(7842),n=a(1212),i=a(467),c=a(9379),r=a(436),o=a(5544),d=a(118),l=a(758),u=a.n(l),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)(),s=(e.theme,e.resolvedTheme),a=(0,x.c)();(0,v.l)(s);var t=(0,h.useState)(null),l=(0,o.A)(t,2),w=l[0],k=l[1],A=(0,h.useState)(1),b=(0,o.A)(A,2),D=(b[0],b[1],(0,h.useState)("")),T=(0,o.A)(D,2),E=T[0],Y=T[1],I=(0,h.useState)(1),P=(0,o.A)(I,2),O=P[0],_=P[1],F=(0,h.useState)([]),R=(0,o.A)(F,2),M=R[0],B=R[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],se=(0,h.useState)(!1),ae=(0,o.A)(se,2),te=ae[0],ne=ae[1],ie=function(e,s){(0,g.x9)({productId:e.id,productName:e.name,unitPrice:e.price,count:s}).then(function(e){return(0,p.Fu)([e].concat((0,r.A)((0,p.p_)()))),Y(e.id),(0,g.i5)(e.id,{status:"designing"}).then(function(s){(0,p.Fu)((0,p.p_)().map(function(a){return a.id===e.id?(0,c.A)((0,c.A)({},a),{},{status:s.status}):a}))}).catch(function(){(0,p.Fu)((0,p.p_)().map(function(s){return s.id===e.id?(0,c.A)((0,c.A)({},s),{},{status:"designing"}):s}))})}).catch(function(){var a={id:"DSG"+Date.now(),productId:e.id,productName:e.name,productIcon:e.icon,unitPrice:e.price,count:s,status:"designing",createdAt:(new Date).toISOString().slice(0,10)};(0,p.Fu)([].concat((0,r.A)((0,p.p_)()),[a])),Y(a.id)})};(0,h.useEffect)(function(){var e=u().getCurrentInstance().router,s=e?e.params:void 0,a=s?s.source:void 0,t=s&&s.productId||s&&s.category;if("product"===a&&t){var n=(0,m.y9)(t);if(n){k(n);var i=Number(s?s.quantity:void 0)||1;_(i),ie(n,i)}}else if("designList"===a&&s&&s.designId){var c=s.designId,r=(0,p.p_)(),o=r.find(function(e){return e.id===c});if(o){Y(c),_(o.count);var d=(0,m.y9)(o.productId);if(d&&k(d),o.designData?o.designData.stickers:void 0)B(o.designData.stickers);else if(o.designData?o.designData.imageSrc:void 0){var l={id:"legacy_"+Date.now(),src:o.designData.imageSrc,x:o.designData.imagePos&&o.designData.imagePos.x||0,y:o.designData.imagePos&&o.designData.imagePos.y||0,scale:o.designData.imagePos&&o.designData.imagePos.scale||1,width:200,height:200,isOverlapping:!1};B([l])}"undesigned"===o.status&&((0,p.i5)(c,{status:"designing"}),(0,g.i5)(c,{status:"designing"}).catch(function(){}))}}else if(t){var h=(0,m.y9)(t);h&&(k(h),ie(h,1))}},[]);var ce=(0,h.useRef)(null),re=(0,h.useRef)({designId:"",quantity:1,category:null,stickers:[]});re.current={designId:E,quantity:O,category:w,stickers:M};var oe=function(){var e=re.current,s=e.designId,a=e.quantity,t=e.category,n=e.stickers;if(s&&t){var i=(0,p.p_)().find(function(e){return e.id===s}),r=(0,c.A)((0,c.A)({},i&&i.designData?i.designData:{}),{},{version:1,category:(0,c.A)({id:t.id,mask:t.mask},t.tone?{tone:t.tone}:{}),stickers:n});(0,p.i5)(s,{designData:r}),(0,g.i5)(s,{item:{productId:t.id,productName:t.name,unitPrice:t.price,count:a,designData:r}}).catch(function(){})}},de=function(){ce.current&&(clearTimeout(ce.current),ce.current=null),oe()};u().useDidHide(de),(0,h.useEffect)(function(){return de},[]);var le=(0,h.useRef)(!0);(0,h.useEffect)(function(){le.current?le.current=!1:(ce.current&&clearTimeout(ce.current),ce.current=setTimeout(oe,800))},[M]);var ue=function(e){for(var s=e.map(function(e){return(0,c.A)((0,c.A)({},e),{},{isOverlapping:!1})}),a=0;ai.x&&n.yi.y&&(s[a].isOverlapping=!0,s[t].isOverlapping=!0)}var u=s.some(function(e){return e.isOverlapping});return ne(u),s},he=function(){u().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(e){var s=e.tempFilePaths[0];u().getImageInfo({src:s,success:function(e){var a={id:"stk_"+Date.now(),src:s,x:0,y:0,scale:1,width:e.width,height:e.height,isOverlapping:!1},t=[].concat((0,r.A)(M),[a]),n=ue(t);B(n),C(a.id)},fail:function(){var e={id:"stk_"+Date.now(),src:s,x:0,y:0,scale:1,width:200,height:200,isOverlapping:!1},a=[].concat((0,r.A)(M),[e]),t=ue(a);B(t),C(e.id)}})}})},me=function(e){var s=M.filter(function(s){return s.id!==e}),a=ue(s);B(a),V===e&&C(null)},pe=function(e,s){var a=e.touches[0],t=M.find(function(e){return e.id===s});t&&(C(s),G(!0),U({x:a.clientX-t.x,y:a.clientY-t.y}))},ge=function(e){if(X&&V){var s=e.touches[0],a=M.map(function(e){return e.id!==V?e:(0,c.A)((0,c.A)({},e),{},{x:s.clientX-Q.x,y:s.clientY-Q.y})}),t=ue(a);B(t)}},fe=function(){return G(!1)},xe=function(){V&&E&&(de(),u().navigateTo({url:"/pages/diy/stickerEdit/index?designId=".concat(E,"&stickerId=").concat(V)}))},ve=function(e,s){var a=M.map(function(a){return a.id!==e?a:(0,c.A)((0,c.A)({},a),{},{scale:Math.max(.3,Math.min(3,a.scale+s))})}),t=ue(a);B(t)},je=function(){u().navigateBack()},Ne=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},ye=function(){var e=(0,i.A)((0,n.A)().m(function e(){var s,a,t,i;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!te){e.n=1;break}return u().showToast({title:"\u8d34\u7eb8\u4e0d\u80fd\u91cd\u53e0",icon:"none"}),e.a(2);case 1:if(!E||!w){e.n=6;break}return e.n=2,(0,g.x5)({stickers:M,category:w,version:1});case 2:return s=e.v,a=(0,c.A)({id:w.id,mask:w.mask},w.tone?{tone:w.tone}:{}),t=(0,p.p_)().find(function(e){return e.id===E}),i=(0,c.A)((0,c.A)({},t&&t.designData?t.designData:{}),{},{version:1,category:a,stickers:s.stickers||M}),(0,p.i5)(E,{status:"designing",designData:i}),e.p=3,e.n=4,(0,g.i5)(E,{status:"designing",item:{productId:w.id,productName:w.name,unitPrice:w.price,count:O,designData:i}});case 4:e.n=6;break;case 5:e.p=5,e.v,u().showToast({title:"\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u5df2\u6682\u5b58\u5230\u672c\u5730",icon:"none"});case 6:ee(!1),u().navigateTo({url:"/pages/checkout/index?designId=".concat(E)});case 7:return e.a(2)}},e,null,[[3,5]])}));return function(){return e.apply(this,arguments)}}(),Se=V?M.find(function(e){return e.id===V}):void 0,we=Se?Se.scale:1;return w?(0,S.jsxs)(d.Ss,{className:"theme-".concat(s),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:je,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:Ne(),children:[M.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,width:e.width||200,height:e.height||200},onTouchStart:function(s){return pe(s,e.id)},onTouchMove:ge,onTouchEnd:fe,onTap:function(){return C(e.id)},mode:"aspectFit"},e.id)}),(0,S.jsx)(d.Ss,{className:"mask-border",style:Ne()})]})}),(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:[M.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 me(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:he,children:[(0,S.jsx)(d.EY,{className:"add-icon",children:"+"}),(0,S.jsx)(d.EY,{className:"add-label",children:"\u6dfb\u52a0"})]})]}),te&&(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 ve(V,-.1)},children:"\uff0d"}),(0,S.jsxs)(d.EY,{className:"tool-value",children:[Math.round(100*we),"%"]}),(0,S.jsx)(d.Ss,{className:"tool-btn",onTap:function(){return ve(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:xe,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:he,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:Ne(),children:M.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,")"),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"]}),te&&(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(te?"disabled":""),onTap:ye,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(s),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,t.createPageConfig)(w,"pages/diy/index",{root:{cn:[]}},k||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(8955)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/diy/stickerEdit/index.js b/dist/pages/diy/stickerEdit/index.js index 8c14e0d..c21af39 100644 --- a/dist/pages/diy/stickerEdit/index.js +++ b/dist/pages/diy/stickerEdit/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[339],{9519:function(e,s,t){var a=t(7842),n=t(1212),c=t(467),r=t(9379),i=t(5544),l=t(118),o=t(758),d=t.n(o),u=t(6540),h=t(1457),f=t(6845),m=t(9703),x=t(9201),g=t(5414),v=t(9674),j=t(3053),S=t(9513),w=t(4848),N=function(e,s,t){return Math.min(Math.max(e,s),t)};function p(){var e=(0,m.wR)(),s=e.resolvedTheme,t=(0,x.c)();(0,g.l)(s);var a=(0,u.useState)(""),o=(0,i.A)(a,2),p=o[0],T=o[1],k=(0,u.useState)(""),b=(0,i.A)(k,2),A=b[0],y=b[1],E=(0,u.useState)(null),Y=(0,i.A)(E,2),M=Y[0],C=Y[1],I=(0,u.useState)(0),R=(0,i.A)(I,2),D=R[0],B=R[1],P=(0,u.useState)(0),q=(0,i.A)(P,2),Q=q[0],U=q[1],F=(0,u.useState)(0),X=(0,i.A)(F,2),H=X[0],J=X[1],O=(0,u.useState)(!1),_=(0,i.A)(O,2),z=_[0],W=_[1],$=(0,u.useState)(!1),G=(0,i.A)($,2),K=G[0],L=G[1],V=((0,u.useRef)(null),(0,u.useRef)(null)),Z=(0,u.useRef)(null),ee=(0,u.useRef)({width:0,height:0}),se=(0,u.useCallback)(function(e){K||d().nextTick(function(){var s=d().createSelectorQuery();s.select("#editCanvas").fields({node:!0,size:!0}).exec(function(s){var t=s&&s[0],a=t?t.node:void 0;if(a){var n=a.getContext("2d"),c=s[0]&&s[0].width||300,r=s[0]&&s[0].height||400;c<=0&&(c=300),r<=0&&(r=400);var i=d().getSystemInfoSync().pixelRatio||1;a.width=Math.round(c*i),a.height=Math.round(r*i),n.scale(i,i),Z.current=a,V.current=n,ee.current={width:c,height:r},L(!0),te(n,c,r,e)}else setTimeout(function(){return se(e)},300)})})},[K]);(0,u.useEffect)(function(){var e=d().getCurrentInstance().router,s=e?e.params:void 0,t=s?s.designId:"",a=s?s.stickerId:"";T(t),y(a);var n=(0,h.p_)(),c=n.find(function(e){return e.id===t}),r=c&&c.designData&&c.designData.stickers?c.designData.stickers.find(function(e){return e.id===a}):void 0;r&&(C(r),B(r.edits&&r.edits.brightness||0),U(r.edits&&r.edits.hue||0),J(r.edits&&r.edits.contrast||0),se(r))},[se]);var te=function(e,s,t,a,n){if(e&&Z.current){var c=Z.current;if(s&&t){var r=a.width||200,i=a.height||200,l=c.createImage();l.onload=function(){e.clearRect(0,0,s,t),e.save();var a=.9*Math.min(s/r,t/i,4),c=r*a,o=i*a,d=(s-c)/2,u=(t-o)/2,h=n?n.brightness:D,f=n?n.hue:Q,m=n?n.contrast:H;e.filter=0!==h||0!==f||0!==m?"brightness(".concat(100+h,"%) hue-rotate(").concat(f,"deg) contrast(").concat(100+m,"%)"):"none",e.drawImage(l,d,u,c,o),e.restore()},l.onerror=function(e){console.error("Canvas load image error:",e,a.src),d().showToast({title:"\u56fe\u7247\u52a0\u8f7d\u5931\u8d25",icon:"none"})},a.src&&(l.src=a.src)}}},ae=function(){if(M&&V.current&&Z.current){var e=ee.current,s=e.width,t=e.height;te(V.current,s,t,M,{brightness:D,hue:Q,contrast:H})}};(0,u.useEffect)(function(){ae()},[D,Q,H]);var ne=function(){M&&p&&(W(!0),d().canvasToTempFilePath({canvas:Z.current,quality:.92,success:function(e){var s=e.tempFilePath,t=(0,h.p_)(),a=t.findIndex(function(e){return e.id===p});if(-1!==a){var n=t[a].designData&&t[a].designData.stickers||[],c=n.findIndex(function(e){return e.id===A});-1!==c?(n[c]=(0,r.A)((0,r.A)({},n[c]),{},{src:s,edits:{brightness:D,hue:Q,contrast:H}}),(0,h.i5)(p,{designData:(0,r.A)((0,r.A)({},t[a].designData),{},{stickers:n})}),d().showToast({title:"\u4fdd\u5b58\u6210\u529f",icon:"success"}),d().navigateBack()):W(!1)}else W(!1)},fail:function(){W(!1),d().showToast({title:"\u4fdd\u5b58\u5931\u8d25",icon:"none"})}}))},ce=function(){M&&(d().cropImage?d().cropImage({src:M.src,cropScale:"1:1",success:function(e){var s=(0,r.A)((0,r.A)({},M),{},{src:e.tempFilePath});C(s),setTimeout(function(){return ae()},200)}}):d().showToast({title:"\u5f53\u524d\u5fae\u4fe1\u7248\u672c\u4e0d\u652f\u6301\u88c1\u526a",icon:"none"}))},re=function(){var e=(0,c.A)((0,n.A)().m(function e(){var s,t;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(M){e.n=1;break}return e.a(2);case 1:return W(!0),e.p=2,e.n=3,(0,f.W$)(M.src);case 3:if(s=e.v,null===s||void 0===s||!s.imageUrl){e.n=4;break}t=(0,r.A)((0,r.A)({},M),{},{src:s.imageUrl,edits:(0,r.A)((0,r.A)({},M.edits),{},{sketchSrc:s.imageUrl})}),C(t),W(!1),setTimeout(function(){return ae()},200),d().showToast({title:"\u7ebf\u7a3f\u751f\u6210\u6210\u529f",icon:"success"}),e.n=5;break;case 4:throw new Error("no imageUrl");case 5:e.n=7;break;case 6:e.p=6,e.v,ie();case 7:return e.a(2)}},e,null,[[2,6]])}));return function(){return e.apply(this,arguments)}}(),ie=function(){M&&V.current?(d().showToast({title:"\u4f7f\u7528\u672c\u5730\u7ebf\u7a3f",icon:"none"}),B(20),J(80),U(0),W(!1)):W(!1)},le="".concat((D+100)/200*100,"%"),oe="".concat((Q+180)/360*100,"%"),de="".concat((H+100)/200*100,"%");return(0,w.jsxs)(l.Ss,{className:"theme-".concat(s),children:[(0,w.jsx)(v.A,{}),(0,w.jsx)(j.A,{title:"\u7f16\u8f91\u8d34\u7eb8",targetSelector:".edit-header",showBack:!0}),(0,w.jsxs)(l.Ss,{className:"sticker-edit-page",children:[(0,w.jsxs)(l.Ss,{className:"edit-header",style:{paddingTop:"".concat(t.statusBarHeight+12,"px")},children:[(0,w.jsx)(l.EY,{className:"edit-back",onTap:function(){return d().navigateBack()},children:"\u2190"}),(0,w.jsx)(l.EY,{className:"edit-title",children:"\u7f16\u8f91\u8d34\u7eb8"}),(0,w.jsx)(l.EY,{className:"edit-save",onTap:ne,children:"\u4fdd\u5b58"})]}),(0,w.jsx)(l.Ss,{className:"edit-canvas-wrap",children:(0,w.jsx)(l.Hl,{id:"editCanvas",type:"2d",className:"edit-canvas",style:{width:"100%",height:"480rpx"}})}),(0,w.jsxs)(l.Ss,{className:"edit-tools surface-card mt-20",children:[(0,w.jsxs)(l.Ss,{className:"edit-row",children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u5feb\u901f\u64cd\u4f5c"}),(0,w.jsxs)(l.Ss,{className:"edit-quick-actions",children:[(0,w.jsx)(l.Ss,{className:"quick-btn",onTap:ce,children:(0,w.jsx)(l.EY,{children:"\u88c1\u526a"})}),(0,w.jsx)(l.Ss,{className:"quick-btn",onTap:re,children:(0,w.jsx)(l.EY,{children:"\u8f6c\u7ebf\u7a3f"})})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);B(N(a,-100,100))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u4eae\u5ea6"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:le}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:le}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:D>0?"+".concat(D):D})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((360*t-180)/1);U(N(a,-180,180))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u8272\u76f8"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:oe}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:oe}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:Q>0?"+".concat(Q):Q})]})]}),(0,w.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=d().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);J(N(a,-100,100))}}).exec()},children:[(0,w.jsx)(l.EY,{className:"edit-label",children:"\u5bf9\u6bd4\u5ea6"}),(0,w.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,w.jsxs)(l.Ss,{className:"slider-track",children:[(0,w.jsx)(l.Ss,{className:"slider-fill",style:{width:de}}),(0,w.jsx)(l.Ss,{className:"slider-thumb",style:{left:de}})]}),(0,w.jsx)(l.EY,{className:"slider-value",children:H>0?"+".concat(H):H})]})]})]}),(0,w.jsx)(l.Ss,{style:{flex:1}}),(0,w.jsxs)(S.A,{className:"edit-footer",children:[(0,w.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return d().navigateBack()},children:(0,w.jsx)(l.EY,{children:"\u53d6\u6d88"})}),(0,w.jsx)(l.Ss,{className:"btn-primary",onTap:ne,children:(0,w.jsx)(l.EY,{children:"\u4fdd\u5b58"})})]}),(0,w.jsx)(l.Ss,{className:"safe-bottom-placeholder"}),z&&(0,w.jsx)(l.Ss,{className:"edit-loading",children:(0,w.jsx)(l.EY,{className:"edit-loading-text",children:"\u5904\u7406\u4e2d\u2026"})})]})]})}var T={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u7f16\u8f91\u8d34\u7eb8"};Page((0,a.createPageConfig)(p,"pages/diy/stickerEdit/index",{root:{cn:[]}},T||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(9519)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[339],{9519:function(e,s,t){var a=t(7842),n=t(1212),c=t(467),i=t(9379),r=t(5544),l=t(118),d=t(758),o=t.n(d),u=t(6540),h=t(1457),m=t(6845),f=t(9703),x=t(9201),g=t(5414),j=t(9674),v=t(3053),S=t(9513),p=t(4848),N=function(e,s,t){return Math.min(Math.max(e,s),t)};function w(){var e=(0,f.wR)(),s=e.resolvedTheme,t=(0,x.c)();(0,g.l)(s);var a=(0,u.useState)(""),d=(0,r.A)(a,2),w=d[0],k=d[1],T=(0,u.useState)(""),b=(0,r.A)(T,2),y=b[0],A=b[1],E=(0,u.useState)(null),Y=(0,r.A)(E,2),I=Y[0],M=Y[1],B=(0,u.useState)(!1),C=(0,r.A)(B,2),R=C[0],D=C[1],P=(0,u.useState)(0),q=(0,r.A)(P,2),Q=q[0],U=q[1],F=(0,u.useState)(0),H=(0,r.A)(F,2),X=H[0],J=H[1],O=(0,u.useState)(0),_=(0,r.A)(O,2),z=_[0],W=_[1],$=(0,u.useState)(!1),G=(0,r.A)($,2),K=G[0],L=G[1],V=(0,u.useState)(!1),Z=(0,r.A)(V,2),ee=Z[0],se=Z[1],te=((0,u.useRef)(null),(0,u.useRef)(null)),ae=(0,u.useRef)(null),ne=(0,u.useRef)({width:0,height:0}),ce=(0,u.useCallback)(function(e){ee||o().nextTick(function(){var s=o().createSelectorQuery();s.select("#editCanvas").fields({node:!0,size:!0}).exec(function(s){var t=s&&s[0],a=t?t.node:void 0;if(a){var n=a.getContext("2d"),c=s[0]&&s[0].width||300,i=s[0]&&s[0].height||400;c<=0&&(c=300),i<=0&&(i=400);var r=o().getSystemInfoSync().pixelRatio||1;a.width=Math.round(c*r),a.height=Math.round(i*r),n.scale(r,r),ae.current=a,te.current=n,ne.current={width:c,height:i},se(!0),ie(n,c,i,e)}else setTimeout(function(){return ce(e)},300)})})},[ee]);(0,u.useEffect)(function(){var e=o().getCurrentInstance().router,s=e?e.params:void 0,t=s?s.designId:"",a=s?s.stickerId:"";k(t),A(a);var n=(0,h.p_)(),c=n.find(function(e){return e.id===t}),i=c&&c.designData&&c.designData.stickers?c.designData.stickers.find(function(e){return e.id===a}):void 0;i?(M(i),U(i.edits&&i.edits.brightness||0),J(i.edits&&i.edits.hue||0),W(i.edits&&i.edits.contrast||0),ce(i)):D(!0)},[ce]);var ie=function(e,s,t,a,n){if(e&&ae.current){var c=ae.current;if(s&&t){var i=a.width||200,r=a.height||200,l=c.createImage();l.onload=function(){e.clearRect(0,0,s,t),e.save();var a=.9*Math.min(s/i,t/r,4),c=i*a,d=r*a,o=(s-c)/2,u=(t-d)/2,h=n?n.brightness:Q,m=n?n.hue:X,f=n?n.contrast:z;e.filter=0!==h||0!==m||0!==f?"brightness(".concat(100+h,"%) hue-rotate(").concat(m,"deg) contrast(").concat(100+f,"%)"):"none",e.drawImage(l,o,u,c,d),e.restore()},l.onerror=function(e){console.error("Canvas load image error:",e,a.src),o().showToast({title:"\u56fe\u7247\u52a0\u8f7d\u5931\u8d25",icon:"none"})},a.src&&(l.src=a.src)}}},re=function(){if(I&&te.current&&ae.current){var e=ne.current,s=e.width,t=e.height;ie(te.current,s,t,I,{brightness:Q,hue:X,contrast:z})}};(0,u.useEffect)(function(){re()},[Q,X,z]);var le=function(){I&&w&&(L(!0),o().canvasToTempFilePath({canvas:ae.current,quality:.92,success:function(e){var s=e.tempFilePath,t=(0,h.p_)(),a=t.findIndex(function(e){return e.id===w});if(-1!==a){var n=t[a].designData&&t[a].designData.stickers||[],c=n.findIndex(function(e){return e.id===y});if(-1!==c){n[c]=(0,i.A)((0,i.A)({},n[c]),{},{src:s,edits:{brightness:Q,hue:X,contrast:z}});var r=t[a],l=(0,i.A)((0,i.A)({},r.designData),{},{stickers:n});(0,h.i5)(w,{designData:l}),(0,m.i5)(w,{item:{productId:r.productId,productName:r.productName,unitPrice:r.unitPrice,count:r.count,designData:l}}).catch(function(){return o().showToast({title:"\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u5df2\u6682\u5b58\u5230\u672c\u5730",icon:"none"})}),o().showToast({title:"\u4fdd\u5b58\u6210\u529f",icon:"success"}),o().navigateBack()}else L(!1)}else L(!1)},fail:function(){L(!1),o().showToast({title:"\u4fdd\u5b58\u5931\u8d25",icon:"none"})}}))},de=function(){I&&(o().cropImage?o().cropImage({src:I.src,cropScale:"1:1",success:function(e){var s=(0,i.A)((0,i.A)({},I),{},{src:e.tempFilePath});M(s),setTimeout(function(){return re()},200)}}):o().showToast({title:"\u5f53\u524d\u5fae\u4fe1\u7248\u672c\u4e0d\u652f\u6301\u88c1\u526a",icon:"none"}))},oe=function(){var e=(0,c.A)((0,n.A)().m(function e(){var s,t;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(I){e.n=1;break}return e.a(2);case 1:return L(!0),e.p=2,e.n=3,(0,m.W$)(I.src);case 3:if(s=e.v,null===s||void 0===s||!s.imageUrl){e.n=4;break}t=(0,i.A)((0,i.A)({},I),{},{src:s.imageUrl,edits:(0,i.A)((0,i.A)({},I.edits),{},{sketchSrc:s.imageUrl})}),M(t),L(!1),setTimeout(function(){return re()},200),o().showToast({title:"\u7ebf\u7a3f\u751f\u6210\u6210\u529f",icon:"success"}),e.n=5;break;case 4:throw new Error("no imageUrl");case 5:e.n=7;break;case 6:e.p=6,e.v,ue();case 7:return e.a(2)}},e,null,[[2,6]])}));return function(){return e.apply(this,arguments)}}(),ue=function(){I&&te.current?(o().showToast({title:"\u4f7f\u7528\u672c\u5730\u7ebf\u7a3f",icon:"none"}),U(20),W(80),J(0),L(!1)):L(!1)},he="".concat((Q+100)/200*100,"%"),me="".concat((X+180)/360*100,"%"),fe="".concat((z+100)/200*100,"%");return R?(0,p.jsxs)(l.Ss,{className:"theme-".concat(s),children:[(0,p.jsx)(j.A,{}),(0,p.jsx)(v.A,{title:"\u7f16\u8f91\u8d34\u7eb8",targetSelector:".edit-header",showBack:!0}),(0,p.jsxs)(l.Ss,{className:"sticker-edit-page",children:[(0,p.jsxs)(l.Ss,{className:"edit-header",style:{paddingTop:"".concat(t.statusBarHeight+12,"px")},children:[(0,p.jsx)(l.EY,{className:"edit-back",onTap:function(){return o().navigateBack()},children:"\u2190"}),(0,p.jsx)(l.EY,{className:"edit-title",children:"\u7f16\u8f91\u8d34\u7eb8"}),(0,p.jsx)(l.EY,{className:"edit-save"})]}),(0,p.jsxs)(l.Ss,{className:"edit-empty surface-card mt-20",children:[(0,p.jsx)(l.EY,{className:"edit-empty-title",children:"\u672a\u627e\u5230\u8be5\u8d34\u7eb8"}),(0,p.jsx)(l.EY,{className:"edit-empty-desc",children:"\u8d34\u7eb8\u53ef\u80fd\u5df2\u88ab\u5220\u9664\uff0c\u8bf7\u8fd4\u56de\u5de5\u4f5c\u53f0\u91cd\u65b0\u6dfb\u52a0"}),(0,p.jsx)(l.Ss,{className:"btn-primary",onTap:function(){return o().navigateBack()},children:(0,p.jsx)(l.EY,{children:"\u8fd4\u56de\u5de5\u4f5c\u53f0"})})]})]})]}):(0,p.jsxs)(l.Ss,{className:"theme-".concat(s),children:[(0,p.jsx)(j.A,{}),(0,p.jsx)(v.A,{title:"\u7f16\u8f91\u8d34\u7eb8",targetSelector:".edit-header",showBack:!0}),(0,p.jsxs)(l.Ss,{className:"sticker-edit-page",children:[(0,p.jsxs)(l.Ss,{className:"edit-header",style:{paddingTop:"".concat(t.statusBarHeight+12,"px")},children:[(0,p.jsx)(l.EY,{className:"edit-back",onTap:function(){return o().navigateBack()},children:"\u2190"}),(0,p.jsx)(l.EY,{className:"edit-title",children:"\u7f16\u8f91\u8d34\u7eb8"}),(0,p.jsx)(l.EY,{className:"edit-save",onTap:le,children:"\u4fdd\u5b58"})]}),(0,p.jsx)(l.Ss,{className:"edit-canvas-wrap",children:(0,p.jsx)(l.Hl,{id:"editCanvas",type:"2d",className:"edit-canvas",style:{width:"100%",height:"480rpx"}})}),(0,p.jsxs)(l.Ss,{className:"edit-tools surface-card mt-20",children:[(0,p.jsxs)(l.Ss,{className:"edit-row",children:[(0,p.jsx)(l.EY,{className:"edit-label",children:"\u5feb\u901f\u64cd\u4f5c"}),(0,p.jsxs)(l.Ss,{className:"edit-quick-actions",children:[(0,p.jsx)(l.Ss,{className:"quick-btn",onTap:de,children:(0,p.jsx)(l.EY,{children:"\u88c1\u526a"})}),(0,p.jsx)(l.Ss,{className:"quick-btn",onTap:oe,children:(0,p.jsx)(l.EY,{children:"\u8f6c\u7ebf\u7a3f"})})]})]}),(0,p.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=o().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);U(N(a,-100,100))}}).exec()},children:[(0,p.jsx)(l.EY,{className:"edit-label",children:"\u4eae\u5ea6"}),(0,p.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,p.jsxs)(l.Ss,{className:"slider-track",children:[(0,p.jsx)(l.Ss,{className:"slider-fill",style:{width:he}}),(0,p.jsx)(l.Ss,{className:"slider-thumb",style:{left:he}})]}),(0,p.jsx)(l.EY,{className:"slider-value",children:Q>0?"+".concat(Q):Q})]})]}),(0,p.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=o().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((360*t-180)/1);J(N(a,-180,180))}}).exec()},children:[(0,p.jsx)(l.EY,{className:"edit-label",children:"\u8272\u76f8"}),(0,p.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,p.jsxs)(l.Ss,{className:"slider-track",children:[(0,p.jsx)(l.Ss,{className:"slider-fill",style:{width:me}}),(0,p.jsx)(l.Ss,{className:"slider-thumb",style:{left:me}})]}),(0,p.jsx)(l.EY,{className:"slider-value",children:X>0?"+".concat(X):X})]})]}),(0,p.jsxs)(l.Ss,{className:"edit-row slider-row",onTouchMove:function(e){var s=e.changedTouches[0].clientX,t=o().createSelectorQuery().in(e.currentTarget);t.select(".slider-track").boundingClientRect(function(e){if(e){var t=N((s-e.left)/e.width,0,1),a=1*Math.round((200*t-100)/1);W(N(a,-100,100))}}).exec()},children:[(0,p.jsx)(l.EY,{className:"edit-label",children:"\u5bf9\u6bd4\u5ea6"}),(0,p.jsxs)(l.Ss,{className:"slider-wrap",children:[(0,p.jsxs)(l.Ss,{className:"slider-track",children:[(0,p.jsx)(l.Ss,{className:"slider-fill",style:{width:fe}}),(0,p.jsx)(l.Ss,{className:"slider-thumb",style:{left:fe}})]}),(0,p.jsx)(l.EY,{className:"slider-value",children:z>0?"+".concat(z):z})]})]})]}),(0,p.jsx)(l.Ss,{style:{flex:1}}),(0,p.jsxs)(S.A,{className:"edit-footer",children:[(0,p.jsx)(l.Ss,{className:"btn-secondary",onTap:function(){return o().navigateBack()},children:(0,p.jsx)(l.EY,{children:"\u53d6\u6d88"})}),(0,p.jsx)(l.Ss,{className:"btn-primary",onTap:le,children:(0,p.jsx)(l.EY,{children:"\u4fdd\u5b58"})})]}),(0,p.jsx)(l.Ss,{className:"safe-bottom-placeholder"}),K&&(0,p.jsx)(l.Ss,{className:"edit-loading",children:(0,p.jsx)(l.EY,{className:"edit-loading-text",children:"\u5904\u7406\u4e2d\u2026"})})]})]})}var k={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u7f16\u8f91\u8d34\u7eb8"};Page((0,a.createPageConfig)(w,"pages/diy/stickerEdit/index",{root:{cn:[]}},k||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(9519)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/diy/stickerEdit/index.wxss b/dist/pages/diy/stickerEdit/index.wxss index 3672aa1..c58db31 100644 --- a/dist/pages/diy/stickerEdit/index.wxss +++ b/dist/pages/diy/stickerEdit/index.wxss @@ -1 +1 @@ -.sticker-edit-page{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh;padding:0 32rpx calc(48rpx + env(safe-area-inset-bottom))}.edit-header{-ms-flex-align:center;-ms-flex-pack:justify;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx;-webkit-justify-content:space-between;justify-content:space-between;padding-bottom:24rpx}.edit-back{-ms-flex-align:center;-ms-flex-pack:center;-ms-flex-negative:0;-webkit-align-items:center;align-items:center;background:var(--bg-card);border:1rpx solid var(--border-strong);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;flex-shrink:0;font-size:36rpx;height:80rpx;-webkit-justify-content:center;justify-content:center;line-height:1;width:80rpx}.edit-back:active{-webkit-transform:scale(.96);-ms-transform:scale(.96);transform:scale(.96)}.edit-title{color:var(--text-primary);-webkit-flex:1;-ms-flex:1;flex:1;font-size:34rpx;font-weight:700;letter-spacing:0;min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.edit-save{-ms-flex-align:center;-ms-flex-pack:end;-webkit-align-items:center;align-items:center;color:var(--accent-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:26rpx;font-weight:600;-webkit-justify-content:flex-end;justify-content:flex-end;min-width:80rpx}.edit-save:active{opacity:.85}.edit-canvas-wrap{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-justify-content:center;justify-content:center;min-height:480rpx;padding:8rpx 0 24rpx}.edit-canvas{background:var(--bg-input);border:1rpx solid var(--border-strong);border-radius:24rpx;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);height:480rpx;width:100%}.edit-tools{padding:24rpx}.edit-row{-ms-flex-align:center;-ms-flex-pack:justify;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:24rpx;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:24rpx}.edit-row:last-child{margin-bottom:0}.edit-label{-ms-flex-negative:0;color:var(--text-primary);-webkit-flex-shrink:0;flex-shrink:0;font-size:26rpx;font-weight:600;width:96rpx}.edit-quick-actions{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16rpx}.quick-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-input);border:1rpx solid var(--border);border-radius:999rpx;color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:24rpx;font-weight:500;height:64rpx;-webkit-justify-content:center;justify-content:center;padding:0 28rpx;-webkit-transition:all .2s ease;transition:all .2s ease}.quick-btn:active{opacity:.85;-webkit-transform:scale(.97);-ms-transform:scale(.97);transform:scale(.97)}.quick-btn.active{background:var(--accent-primary-soft);border-color:var(--accent-primary);color:var(--accent-primary)}.slider-wrap{-ms-flex-align:center;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;gap:12rpx;min-width:0}.slider-track{background:var(--bg-input);border:1rpx solid var(--border);border-radius:999rpx;-webkit-flex:1;-ms-flex:1;flex:1;height:8rpx;min-width:0;position:relative}.slider-fill{background:-webkit-gradient(linear,left top,right top,from(var(--accent-primary)),to(var(--accent-primary-soft)));background:-webkit-linear-gradient(left,var(--accent-primary),var(--accent-primary-soft));background:linear-gradient(90deg,var(--accent-primary),var(--accent-primary-soft));border-radius:999rpx;height:100%;left:0;position:absolute;top:0}.slider-thumb{background:var(--bg-card);border:4rpx solid var(--accent-primary);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);height:32rpx;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:32rpx}.slider-thumb.dragging{-webkit-transform:translate(-50%,-50%) scale(1.12);-ms-transform:translate(-50%,-50%) scale(1.12);transform:translate(-50%,-50%) scale(1.12)}.slider-value{color:var(--text-secondary);font-size:22rpx;font-variant-numeric:tabular-nums;min-width:80rpx;text-align:right}.edit-footer .btn-primary,.edit-footer .btn-secondary{-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx;font-weight:600;line-height:1.2;padding:28rpx 0;text-align:center}.edit-loading{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:rgba(0,0,0,.45);bottom:0;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-justify-content:center;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.edit-loading-text{color:#fff;font-size:28rpx;margin-top:20rpx}.mt-20{margin-top:24rpx} \ No newline at end of file +.sticker-edit-page{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh;padding:0 32rpx calc(48rpx + env(safe-area-inset-bottom))}.edit-header{-ms-flex-align:center;-ms-flex-pack:justify;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx;-webkit-justify-content:space-between;justify-content:space-between;padding-bottom:24rpx}.edit-back{-ms-flex-align:center;-ms-flex-pack:center;-ms-flex-negative:0;-webkit-align-items:center;align-items:center;background:var(--bg-card);border:1rpx solid var(--border-strong);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;flex-shrink:0;font-size:36rpx;height:80rpx;-webkit-justify-content:center;justify-content:center;line-height:1;width:80rpx}.edit-back:active{-webkit-transform:scale(.96);-ms-transform:scale(.96);transform:scale(.96)}.edit-title{color:var(--text-primary);-webkit-flex:1;-ms-flex:1;flex:1;font-size:34rpx;font-weight:700;letter-spacing:0;min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.edit-save{-ms-flex-align:center;-ms-flex-pack:end;-webkit-align-items:center;align-items:center;color:var(--accent-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:26rpx;font-weight:600;-webkit-justify-content:flex-end;justify-content:flex-end;min-width:80rpx}.edit-save:active{opacity:.85}.edit-canvas-wrap{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-justify-content:center;justify-content:center;min-height:480rpx;padding:8rpx 0 24rpx}.edit-canvas{background:var(--bg-input);border:1rpx solid var(--border-strong);border-radius:24rpx;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);height:480rpx;width:100%}.edit-tools{padding:24rpx}.edit-row{-ms-flex-align:center;-ms-flex-pack:justify;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:24rpx;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:24rpx}.edit-row:last-child{margin-bottom:0}.edit-label{-ms-flex-negative:0;color:var(--text-primary);-webkit-flex-shrink:0;flex-shrink:0;font-size:26rpx;font-weight:600;width:96rpx}.edit-quick-actions{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16rpx}.quick-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-input);border:1rpx solid var(--border);border-radius:999rpx;color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:24rpx;font-weight:500;height:64rpx;-webkit-justify-content:center;justify-content:center;padding:0 28rpx;-webkit-transition:all .2s ease;transition:all .2s ease}.quick-btn:active{opacity:.85;-webkit-transform:scale(.97);-ms-transform:scale(.97);transform:scale(.97)}.quick-btn.active{background:var(--accent-primary-soft);border-color:var(--accent-primary);color:var(--accent-primary)}.slider-wrap{-ms-flex-align:center;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;gap:12rpx;min-width:0}.slider-track{background:var(--bg-input);border:1rpx solid var(--border);border-radius:999rpx;-webkit-flex:1;-ms-flex:1;flex:1;height:8rpx;min-width:0;position:relative}.slider-fill{background:-webkit-gradient(linear,left top,right top,from(var(--accent-primary)),to(var(--accent-primary-soft)));background:-webkit-linear-gradient(left,var(--accent-primary),var(--accent-primary-soft));background:linear-gradient(90deg,var(--accent-primary),var(--accent-primary-soft));border-radius:999rpx;height:100%;left:0;position:absolute;top:0}.slider-thumb{background:var(--bg-card);border:4rpx solid var(--accent-primary);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);height:32rpx;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:32rpx}.slider-thumb.dragging{-webkit-transform:translate(-50%,-50%) scale(1.12);-ms-transform:translate(-50%,-50%) scale(1.12);transform:translate(-50%,-50%) scale(1.12)}.slider-value{color:var(--text-secondary);font-size:22rpx;font-variant-numeric:tabular-nums;min-width:80rpx;text-align:right}.edit-footer .btn-primary,.edit-footer .btn-secondary{-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx;font-weight:600;line-height:1.2;padding:28rpx 0;text-align:center}.edit-loading{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:rgba(0,0,0,.45);bottom:0;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-justify-content:center;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.edit-loading-text{color:#fff;font-size:28rpx;margin-top:20rpx}.mt-20{margin-top:24rpx}.edit-empty{-ms-flex-align:center;-webkit-align-items:center;align-items:center;border-radius:24rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24rpx;margin:24rpx 24rpx 0;padding:60rpx 40rpx}.edit-empty-title{font-size:32rpx;font-weight:600}.edit-empty-desc{font-size:26rpx;opacity:.65;text-align:center}.edit-empty .btn-primary{border-radius:44rpx;padding:16rpx 60rpx} \ No newline at end of file diff --git a/dist/pages/product/index.js b/dist/pages/product/index.js index 69f3288..620d7f0 100644 --- a/dist/pages/product/index.js +++ b/dist/pages/product/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[612],{4120:function(s,e,a){var c=a(7842),l=a(5544),r=a(118),n=a(758),i=a.n(n),t=a(6540),d=a(5234),o=a(1457),m=a(9703),h=a(9201),x=a(5414),p=a(9674),j=a(3053),u=a(9513),N=a(4848);function S(){var s=(0,m.wR)(),e=(s.theme,s.resolvedTheme),a=(0,h.c)();(0,x.l)(e);var c=(0,t.useState)(!1),n=(0,l.A)(c,2),S=n[0],g=n[1],f=(0,t.useState)(1),E=(0,l.A)(f,2),Y=E[0],v=E[1],y=i().getCurrentInstance().router,b=y?y.params:void 0,k=b&&b.id?b.id:"",w=(0,d.y9)(k);if(!w)return(0,N.jsxs)(r.Ss,{className:"theme-".concat(e),children:[(0,N.jsx)(p.A,{}),(0,N.jsx)(j.A,{title:"\u5546\u54c1\u8be6\u60c5",targetSelector:".page-header",showBack:!0}),(0,N.jsx)(r.Ss,{className:"product-page",children:(0,N.jsx)(r.Ss,{className:"page-header",style:{marginTop:"".concat(a.statusBarHeight+12,"px")},children:(0,N.jsxs)(r.Ss,{className:"page-header-inner",children:[(0,N.jsx)(r.Ss,{className:"back-btn",style:{position:"fixed",left:"30rpx",top:"".concat(a.menuButtonTop,"px"),zIndex:41},onTap:function(){return i().navigateBack()},children:(0,N.jsx)(r.EY,{className:"back-arrow",children:"\u2190"})}),(0,N.jsx)(r.Ss,{className:"nav-placeholder"}),(0,N.jsx)(r.EY,{className:"nav-title",children:"\u5546\u54c1\u672a\u627e\u5230"}),(0,N.jsx)(r.Ss,{className:"nav-placeholder"})]})})})]});var T=w.specs&&w.specs.length>0?w.specs.find(function(s){return s[0].indexOf("\u5de5\u827a")>=0}):void 0,B=T?T[1]:"\u6fc0\u5149\u5fae\u96d5",A=function(){v(1),g(!0)},q=function(){(0,o.cY)(w,Y),g(!1),i().showToast({title:"\u5df2\u52a0\u5165\u8bbe\u8ba1\u6e05\u5355 x".concat(Y),icon:"success"}),setTimeout(function(){return i().navigateBack()},1200)},P=function(){i().navigateTo({url:"/pages/diy/index?source=product&productId=".concat(w.id,"&quantity=1")})},C=function(s){v(function(e){return Math.max(1,Math.min(99,e+s))})};return(0,N.jsxs)(r.Ss,{className:"theme-".concat(e),children:[(0,N.jsx)(p.A,{}),(0,N.jsx)(j.A,{title:"\u5546\u54c1\u8be6\u60c5",targetSelector:".page-header",showBack:!0}),(0,N.jsxs)(r.Ss,{className:"product-page",children:[(0,N.jsx)(r.Ss,{className:"page-header",style:{marginTop:"".concat(a.statusBarHeight+12,"px")},children:(0,N.jsxs)(r.Ss,{className:"page-header-inner",children:[(0,N.jsx)(r.Ss,{className:"back-btn",style:{position:"fixed",left:"30rpx",top:"".concat(a.menuButtonTop,"px"),zIndex:41},onTap:function(){return i().navigateBack()},children:(0,N.jsx)(r.EY,{className:"back-arrow",children:"\u2190"})}),(0,N.jsx)(r.Ss,{className:"nav-placeholder"}),(0,N.jsx)(r.EY,{className:"nav-title",children:"\u5546\u54c1\u8be6\u60c5"}),(0,N.jsx)(r.Ss,{className:"nav-placeholder"})]})}),(0,N.jsx)(r.Ss,{className:"hero-section",children:(0,N.jsx)(r.RC,{className:"hero-swiper",circular:!0,autoplay:!0,interval:3e3,duration:500,indicatorDots:!0,indicatorColor:"var(--border-strong)",indicatorActiveColor:"var(--accent-primary)",children:w.images&&w.images.length>0?w.images.map(function(s,e){return(0,N.jsx)(r.wu,{children:(0,N.jsx)(r.Ss,{className:"hero-block",children:(0,N.jsx)(r._V,{className:"hero-image",src:s,mode:"aspectFill"})})},e)}):(0,N.jsx)(r.wu,{children:(0,N.jsx)(r.Ss,{className:"hero-block hero-block-fallback",children:(0,N.jsx)(r._V,{className:"hero-fallback-icon",src:(0,d.QE)(w),mode:"aspectFit"})})})})}),(0,N.jsx)(r.Ss,{className:"detail-card surface-card",children:(0,N.jsxs)(r.Ss,{className:"price-line",children:[(0,N.jsxs)(r.Ss,{className:"price-left",children:[(0,N.jsx)(r.EY,{className:"detail-title",children:w.name}),(0,N.jsx)(r.EY,{className:"detail-desc",children:w.desc})]}),(0,N.jsxs)(r.Ss,{className:"price-right",children:[(0,N.jsxs)(r.EY,{className:"price",children:["\xa5",w.price]}),w.originalPrice&&w.originalPrice>w.price&&(0,N.jsxs)(r.EY,{className:"price-old",children:["\xa5",w.originalPrice]})]})]})}),(0,N.jsxs)(r.Ss,{className:"detail-card surface-card",children:[(0,N.jsxs)(r.Ss,{className:"spec-row",children:[(0,N.jsx)(r.EY,{className:"spec-key",children:"\u5355\u4ef7"}),(0,N.jsxs)(r.EY,{className:"spec-value",children:["\xa5",w.price]})]}),(0,N.jsxs)(r.Ss,{className:"spec-row",children:[(0,N.jsx)(r.EY,{className:"spec-key",children:"\u5de5\u671f"}),(0,N.jsx)(r.EY,{className:"spec-value",children:w.leadTime})]}),(0,N.jsxs)(r.Ss,{className:"spec-row",children:[(0,N.jsx)(r.EY,{className:"spec-key",children:"\u5c3a\u5bf8"}),(0,N.jsxs)(r.EY,{className:"spec-value",children:[w.mask.width," \xd7 ",w.mask.height," px"]})]}),(0,N.jsxs)(r.Ss,{className:"spec-row",children:[(0,N.jsx)(r.EY,{className:"spec-key",children:"\u5b9a\u5236\u5de5\u827a"}),(0,N.jsx)(r.EY,{className:"spec-value",children:B})]})]}),(0,N.jsxs)(r.Ss,{className:"detail-card surface-card",children:[(0,N.jsx)(r.EY,{className:"section-title",children:"\u5546\u54c1\u4ecb\u7ecd"}),(0,N.jsx)(r.EY,{className:"detail-text",children:w.description})]}),(0,N.jsxs)(u.A,{children:[(0,N.jsxs)(r.Ss,{className:"price-summary",children:[(0,N.jsx)(r.EY,{className:"summary-label",children:"\u8d77\u4ef7"}),(0,N.jsxs)(r.EY,{className:"summary-price",children:["\xa5",w.price]})]}),(0,N.jsx)(r.Ss,{className:"btn-secondary",onTap:A,children:(0,N.jsx)(r.EY,{children:"\u52a0\u5165\u8bbe\u8ba1\u6e05\u5355"})}),(0,N.jsx)(r.Ss,{className:"btn-primary",onTap:P,children:(0,N.jsx)(r.EY,{children:"\u7acb\u5373\u4e0b\u5355"})})]}),S&&(0,N.jsx)(r.Ss,{className:"modal-overlay",children:(0,N.jsxs)(r.Ss,{className:"modal-card surface-card",children:[(0,N.jsx)(r.EY,{className:"modal-title",children:"\u52a0\u5165\u8bbe\u8ba1\u6e05\u5355"}),(0,N.jsxs)(r.Ss,{className:"modal-product",children:[(0,N.jsx)(r._V,{className:"modal-icon-img",src:(0,d.QE)(w),mode:"aspectFit"}),(0,N.jsx)(r.EY,{className:"modal-name",children:w.name})]}),(0,N.jsxs)(r.Ss,{className:"quantity-row",children:[(0,N.jsx)(r.EY,{className:"qty-label",children:"\u6570\u91cf"}),(0,N.jsxs)(r.Ss,{className:"qty-control",children:[(0,N.jsx)(r.Ss,{className:"qty-btn",onTap:function(){return C(-1)},children:"\uff0d"}),(0,N.jsx)(r.EY,{className:"qty-num",children:Y}),(0,N.jsx)(r.Ss,{className:"qty-btn",onTap:function(){return C(1)},children:"\uff0b"})]})]}),(0,N.jsxs)(r.Ss,{className:"modal-total",children:[(0,N.jsx)(r.EY,{className:"total-label",children:"\u5c0f\u8ba1"}),(0,N.jsxs)(r.EY,{className:"total-price",children:["\xa5",(w.price*Y).toFixed(2)]})]}),(0,N.jsxs)(r.Ss,{className:"modal-actions",children:[(0,N.jsx)(r.Ss,{className:"btn-secondary",onTap:function(){return g(!1)},children:(0,N.jsx)(r.EY,{children:"\u53d6\u6d88"})}),(0,N.jsx)(r.Ss,{className:"btn-primary",onTap:q,children:(0,N.jsx)(r.EY,{children:"\u786e\u5b9a"})})]})]})})]})]})}var g={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u5546\u54c1\u8be6\u60c5"};Page((0,c.createPageConfig)(S,"pages/product/index",{root:{cn:[]}},g||{}))}},function(s){var e=function(e){return s(s.s=e)};s.O(0,[907,96,76],function(){return e(4120)});s.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[612],{4120:function(s,e,a){var c=a(7842),n=a(436),l=a(5544),r=a(118),i=a(758),t=a.n(i),o=a(6540),d=a(5234),m=a(1457),h=a(6845),x=a(9703),p=a(9201),j=a(5414),u=a(9674),N=a(3053),S=a(9513),g=a(4848);function f(){var s=(0,x.wR)(),e=(s.theme,s.resolvedTheme),a=(0,p.c)();(0,j.l)(e);var c=(0,o.useState)(!1),i=(0,l.A)(c,2),f=i[0],E=i[1],Y=(0,o.useState)(1),v=(0,l.A)(Y,2),y=v[0],b=v[1],k=t().getCurrentInstance().router,w=k?k.params:void 0,T=w&&w.id?w.id:"",B=(0,d.y9)(T);if(!B)return(0,g.jsxs)(r.Ss,{className:"theme-".concat(e),children:[(0,g.jsx)(u.A,{}),(0,g.jsx)(N.A,{title:"\u5546\u54c1\u8be6\u60c5",targetSelector:".page-header",showBack:!0}),(0,g.jsx)(r.Ss,{className:"product-page",children:(0,g.jsx)(r.Ss,{className:"page-header",style:{marginTop:"".concat(a.statusBarHeight+12,"px")},children:(0,g.jsxs)(r.Ss,{className:"page-header-inner",children:[(0,g.jsx)(r.Ss,{className:"back-btn",style:{position:"fixed",left:"30rpx",top:"".concat(a.menuButtonTop,"px"),zIndex:41},onTap:function(){return t().navigateBack()},children:(0,g.jsx)(r.EY,{className:"back-arrow",children:"\u2190"})}),(0,g.jsx)(r.Ss,{className:"nav-placeholder"}),(0,g.jsx)(r.EY,{className:"nav-title",children:"\u5546\u54c1\u672a\u627e\u5230"}),(0,g.jsx)(r.Ss,{className:"nav-placeholder"})]})})})]});var A=B.specs&&B.specs.length>0?B.specs.find(function(s){return s[0].indexOf("\u5de5\u827a")>=0}):void 0,q=A?A[1]:"\u6fc0\u5149\u5fae\u96d5",P=function(){b(1),E(!0)},C=function(){(0,h.x9)({productId:B.id,productName:B.name,unitPrice:B.price,count:y}).then(function(s){(0,m.Fu)([s].concat((0,n.A)((0,m.p_)()))),t().showToast({title:"\u5df2\u52a0\u5165\u8bbe\u8ba1\u6e05\u5355 x".concat(y),icon:"success"})}).catch(function(){(0,m.cY)(B,y),t().showToast({title:"\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u5df2\u52a0\u5165\u672c\u5730\u6e05\u5355 x".concat(y),icon:"none"})}).finally(function(){E(!1),setTimeout(function(){return t().navigateBack()},1200)})},F=function(){t().navigateTo({url:"/pages/diy/index?source=product&productId=".concat(B.id,"&quantity=1")})},I=function(s){b(function(e){return Math.max(1,Math.min(99,e+s))})};return(0,g.jsxs)(r.Ss,{className:"theme-".concat(e),children:[(0,g.jsx)(u.A,{}),(0,g.jsx)(N.A,{title:"\u5546\u54c1\u8be6\u60c5",targetSelector:".page-header",showBack:!0}),(0,g.jsxs)(r.Ss,{className:"product-page",children:[(0,g.jsx)(r.Ss,{className:"page-header",style:{marginTop:"".concat(a.statusBarHeight+12,"px")},children:(0,g.jsxs)(r.Ss,{className:"page-header-inner",children:[(0,g.jsx)(r.Ss,{className:"back-btn",style:{position:"fixed",left:"30rpx",top:"".concat(a.menuButtonTop,"px"),zIndex:41},onTap:function(){return t().navigateBack()},children:(0,g.jsx)(r.EY,{className:"back-arrow",children:"\u2190"})}),(0,g.jsx)(r.Ss,{className:"nav-placeholder"}),(0,g.jsx)(r.EY,{className:"nav-title",children:"\u5546\u54c1\u8be6\u60c5"}),(0,g.jsx)(r.Ss,{className:"nav-placeholder"})]})}),(0,g.jsx)(r.Ss,{className:"hero-section",children:(0,g.jsx)(r.RC,{className:"hero-swiper",circular:!0,autoplay:!0,interval:3e3,duration:500,indicatorDots:!0,indicatorColor:"var(--border-strong)",indicatorActiveColor:"var(--accent-primary)",children:B.images&&B.images.length>0?B.images.map(function(s,e){return(0,g.jsx)(r.wu,{children:(0,g.jsx)(r.Ss,{className:"hero-block",children:(0,g.jsx)(r._V,{className:"hero-image",src:s,mode:"aspectFill"})})},e)}):(0,g.jsx)(r.wu,{children:(0,g.jsx)(r.Ss,{className:"hero-block hero-block-fallback",children:(0,g.jsx)(r._V,{className:"hero-fallback-icon",src:(0,d.QE)(B),mode:"aspectFit"})})})})}),(0,g.jsx)(r.Ss,{className:"detail-card surface-card",children:(0,g.jsxs)(r.Ss,{className:"price-line",children:[(0,g.jsxs)(r.Ss,{className:"price-left",children:[(0,g.jsx)(r.EY,{className:"detail-title",children:B.name}),(0,g.jsx)(r.EY,{className:"detail-desc",children:B.desc})]}),(0,g.jsxs)(r.Ss,{className:"price-right",children:[(0,g.jsxs)(r.EY,{className:"price",children:["\xa5",B.price]}),B.originalPrice&&B.originalPrice>B.price&&(0,g.jsxs)(r.EY,{className:"price-old",children:["\xa5",B.originalPrice]})]})]})}),(0,g.jsxs)(r.Ss,{className:"detail-card surface-card",children:[(0,g.jsxs)(r.Ss,{className:"spec-row",children:[(0,g.jsx)(r.EY,{className:"spec-key",children:"\u5355\u4ef7"}),(0,g.jsxs)(r.EY,{className:"spec-value",children:["\xa5",B.price]})]}),(0,g.jsxs)(r.Ss,{className:"spec-row",children:[(0,g.jsx)(r.EY,{className:"spec-key",children:"\u5de5\u671f"}),(0,g.jsx)(r.EY,{className:"spec-value",children:B.leadTime})]}),(0,g.jsxs)(r.Ss,{className:"spec-row",children:[(0,g.jsx)(r.EY,{className:"spec-key",children:"\u5c3a\u5bf8"}),(0,g.jsxs)(r.EY,{className:"spec-value",children:[B.mask.width," \xd7 ",B.mask.height," px"]})]}),(0,g.jsxs)(r.Ss,{className:"spec-row",children:[(0,g.jsx)(r.EY,{className:"spec-key",children:"\u5b9a\u5236\u5de5\u827a"}),(0,g.jsx)(r.EY,{className:"spec-value",children:q})]})]}),(0,g.jsxs)(r.Ss,{className:"detail-card surface-card",children:[(0,g.jsx)(r.EY,{className:"section-title",children:"\u5546\u54c1\u4ecb\u7ecd"}),(0,g.jsx)(r.EY,{className:"detail-text",children:B.description})]}),(0,g.jsxs)(S.A,{children:[(0,g.jsxs)(r.Ss,{className:"price-summary",children:[(0,g.jsx)(r.EY,{className:"summary-label",children:"\u8d77\u4ef7"}),(0,g.jsxs)(r.EY,{className:"summary-price",children:["\xa5",B.price]})]}),(0,g.jsx)(r.Ss,{className:"btn-secondary",onTap:P,children:(0,g.jsx)(r.EY,{children:"\u52a0\u5165\u8bbe\u8ba1\u6e05\u5355"})}),(0,g.jsx)(r.Ss,{className:"btn-primary",onTap:F,children:(0,g.jsx)(r.EY,{children:"\u7acb\u5373\u4e0b\u5355"})})]}),f&&(0,g.jsx)(r.Ss,{className:"modal-overlay",children:(0,g.jsxs)(r.Ss,{className:"modal-card surface-card",children:[(0,g.jsx)(r.EY,{className:"modal-title",children:"\u52a0\u5165\u8bbe\u8ba1\u6e05\u5355"}),(0,g.jsxs)(r.Ss,{className:"modal-product",children:[(0,g.jsx)(r._V,{className:"modal-icon-img",src:(0,d.QE)(B),mode:"aspectFit"}),(0,g.jsx)(r.EY,{className:"modal-name",children:B.name})]}),(0,g.jsxs)(r.Ss,{className:"quantity-row",children:[(0,g.jsx)(r.EY,{className:"qty-label",children:"\u6570\u91cf"}),(0,g.jsxs)(r.Ss,{className:"qty-control",children:[(0,g.jsx)(r.Ss,{className:"qty-btn",onTap:function(){return I(-1)},children:"\uff0d"}),(0,g.jsx)(r.EY,{className:"qty-num",children:y}),(0,g.jsx)(r.Ss,{className:"qty-btn",onTap:function(){return I(1)},children:"\uff0b"})]})]}),(0,g.jsxs)(r.Ss,{className:"modal-total",children:[(0,g.jsx)(r.EY,{className:"total-label",children:"\u5c0f\u8ba1"}),(0,g.jsxs)(r.EY,{className:"total-price",children:["\xa5",(B.price*y).toFixed(2)]})]}),(0,g.jsxs)(r.Ss,{className:"modal-actions",children:[(0,g.jsx)(r.Ss,{className:"btn-secondary",onTap:function(){return E(!1)},children:(0,g.jsx)(r.EY,{children:"\u53d6\u6d88"})}),(0,g.jsx)(r.Ss,{className:"btn-primary",onTap:C,children:(0,g.jsx)(r.EY,{children:"\u786e\u5b9a"})})]})]})})]})]})}var E={navigationStyle:"custom",enablePageMeta:!0,navigationBarTitleText:"\u5546\u54c1\u8be6\u60c5"};Page((0,c.createPageConfig)(f,"pages/product/index",{root:{cn:[]}},E||{}))}},function(s){var e=function(e){return s(s.s=e)};s.O(0,[907,96,76],function(){return e(4120)});s.O()}]); \ No newline at end of file diff --git a/src/pages/diy/index.tsx b/src/pages/diy/index.tsx index eea61c4..27328b0 100644 --- a/src/pages/diy/index.tsx +++ b/src/pages/diy/index.tsx @@ -1,6 +1,6 @@ import { View, Text, Image } from '@tarojs/components' import Taro from '@tarojs/taro' -import { useState, useEffect } from 'react' +import { useState, useEffect, useRef } from 'react' import './index.scss' import { getProductById } from '../../utils/productConfig' import { getDesignList, setDesignList, updateDesign, type DesignItem, type StickerItem } from '../../utils/store' @@ -27,7 +27,7 @@ export default function DIYPage() { const [previewMode, setPreviewMode] = useState(false) const [hasOverlap, setHasOverlap] = useState(false) - /** 进入 DIY 即创建清单条目:服务端创建(DRAFT,阶段0 决策#6),失败降级本地 */ + /** 进入 DIY 即创建清单条目,并推进到「设计中」(问题3 修正:进入工作台即 SUBMITTED),失败降级本地 */ const createDesignEntry = (product: { id: string; name: string; price: number; icon: string }, count: number) => { createDesign({ productId: product.id, @@ -38,6 +38,13 @@ export default function DIYPage() { .then(item => { setDesignList([item, ...getDesignList()]) // 回写缓存,checkout 等页面仍读缓存 setDesignId(item.id) + return updateDesignApi(item.id, { status: 'designing' }) + .then(updated => { + setDesignList(getDesignList().map(d => d.id === item.id ? { ...d, status: updated.status } : d)) + }) + .catch(() => { + setDesignList(getDesignList().map(d => d.id === item.id ? { ...d, status: 'designing' as const } : d)) + }) }) .catch(() => { const newDesign: DesignItem = { @@ -47,7 +54,7 @@ export default function DIYPage() { productIcon: product.icon, unitPrice: product.price, count, - status: 'undesigned', + status: 'designing', createdAt: new Date().toISOString().slice(0, 10) } setDesignList([...getDesignList(), newDesign]) @@ -97,6 +104,12 @@ export default function DIYPage() { } setStickers([s]) } + + // 问题3 修正:继续设计同样进入「设计中」状态(单向状态机,undesigned → designing) + if (design.status === 'undesigned') { + updateDesign(dId, { status: 'designing' }) + updateDesignApi(dId, { status: 'designing' }).catch(() => {}) + } } return } @@ -111,6 +124,51 @@ export default function DIYPage() { } }, []) + // ---------- 草稿持久化(修正工作流 问题2)---------- + // 贴纸变化防抖 800ms:本地缓存即时同步 + 服务端静默同步;不推状态(SUBMITTED 只由显式动作触发) + const draftTimerRef = useRef | null>(null) + const latestRef = useRef({ designId: '', quantity: 1, category: null as any, stickers: [] as StickerItem[] }) + latestRef.current = { designId, quantity, category, stickers } + + const saveDraft = () => { + const { designId: dId, quantity: qty, category: cat, stickers: st } = latestRef.current + if (!dId || !cat) return + // WCD 红线:基于缓存中服务端最新 designData 合并(保留 wordcloud 分组),只覆盖本页编辑字段 + const cached = getDesignList().find(d => d.id === dId) + const designData = { + ...(cached && cached.designData ? cached.designData : {}), + version: 1 as const, + category: { id: cat.id, mask: cat.mask, ...(cat.tone ? { tone: cat.tone } : {}) }, + stickers: st + } + updateDesign(dId, { designData }) // 本地缓存即时同步(问题4:贴纸编辑页从这里读取) + updateDesignApi(dId, { + item: { productId: cat.id, productName: cat.name, unitPrice: cat.price, count: qty, designData } + }).catch(() => {}) // 草稿静默降级:失败仅落缓存 + } + + const flushDraft = () => { + if (draftTimerRef.current) { + clearTimeout(draftTimerRef.current) + draftTimerRef.current = null + } + saveDraft() + } + + // 隐藏页面(切后台/跳转)时强制落盘,防止防抖窗口内的改动丢失 + Taro.useDidHide(flushDraft) + // 卸载时同样落盘 + useEffect(() => flushDraft, []) + // eslint-disable-next-line react-hooks/exhaustive-deps + + const skipDraftRef = useRef(true) + useEffect(() => { + if (skipDraftRef.current) { skipDraftRef.current = false; return } + if (draftTimerRef.current) clearTimeout(draftTimerRef.current) + draftTimerRef.current = setTimeout(saveDraft, 800) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [stickers]) + // 矩形碰撞检测 const checkOverlap = (list: StickerItem[]) => { const newList = list.map(s => ({ ...s, isOverlapping: false })) @@ -217,6 +275,7 @@ export default function DIYPage() { const handleEditSticker = () => { if (!activeStickerId || !designId) return + flushDraft() // 问题4:跳编辑页前清掉防抖窗口,缓存里保证有最新贴纸 Taro.navigateTo({ url: `/pages/diy/stickerEdit/index?designId=${designId}&stickerId=${activeStickerId}` }) diff --git a/src/pages/diy/stickerEdit/index.scss b/src/pages/diy/stickerEdit/index.scss index 4425383..8e10d9f 100644 --- a/src/pages/diy/stickerEdit/index.scss +++ b/src/pages/diy/stickerEdit/index.scss @@ -226,3 +226,30 @@ .mt-20 { margin-top: 24rpx; } + +/* 空态(贴纸未找到) */ +.edit-empty { + margin: 24rpx 24rpx 0; + padding: 60rpx 40rpx; + border-radius: 24rpx; + display: flex; + flex-direction: column; + align-items: center; + gap: 24rpx; +} + +.edit-empty-title { + font-size: 32rpx; + font-weight: 600; +} + +.edit-empty-desc { + font-size: 26rpx; + opacity: 0.65; + text-align: center; +} + +.edit-empty .btn-primary { + padding: 16rpx 60rpx; + border-radius: 44rpx; +} diff --git a/src/pages/diy/stickerEdit/index.tsx b/src/pages/diy/stickerEdit/index.tsx index aecd3b7..03c9507 100644 --- a/src/pages/diy/stickerEdit/index.tsx +++ b/src/pages/diy/stickerEdit/index.tsx @@ -90,6 +90,7 @@ export default function StickerEditPage() { const [designId, setDesignId] = useState('') const [stickerId, setStickerId] = useState('') const [sticker, setSticker] = useState(null) + const [notFound, setNotFound] = useState(false) // 编辑参数 const [brightness, setBrightness] = useState(0) @@ -152,6 +153,9 @@ export default function StickerEditPage() { setHue((st.edits && st.edits.hue) || 0) setContrast((st.edits && st.edits.contrast) || 0) initCanvas(st) + } else { + // 问题4 留意点:找不到贴纸时给出空态,而不是停在空白 Canvas + setNotFound(true) } }, [initCanvas]) @@ -312,6 +316,29 @@ export default function StickerEditPage() { const hPct = `${((hue + 180) / 360) * 100}%` const cPct = `${((contrast + 100) / 200) * 100}%` + if (notFound) { + return ( + + + + + + Taro.navigateBack()}>← + 编辑贴纸 + + + + 未找到该贴纸 + 贴纸可能已被删除,请返回工作台重新添加 + Taro.navigateBack()}> + 返回工作台 + + + + + ) + } + return ( From 3b224cf41bf82f12eef5683aaa9dde601edcd5ec Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 19:10:37 +0800 Subject: [PATCH 09/15] =?UTF-8?q?fix(diy):=20=E8=B4=B4=E7=BA=B8=E5=B0=BA?= =?UTF-8?q?=E5=AF=B8=E5=BD=92=E4=B8=80=E5=8C=96=E7=94=BB=E5=B8=83=E7=A9=BA?= =?UTF-8?q?=E9=97=B4=20+=20=E5=9D=90=E6=A0=87=E9=92=B3=E5=88=B6=20+=20?= =?UTF-8?q?=E6=97=A7=E6=95=B0=E6=8D=AE=E8=AF=BB=E7=AB=AF=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正工作流批次②(问题1 重叠误报): - addSticker 按 mask 短边 60% 归一化 width/height(契约实现注记: width/height 语义 = 画布显示像素),渲染/碰撞/WCD 三方自洽 - 拖动与缩放后坐标钳制在 [0, mask尺寸-显示尺寸],杜绝负坐标/拖出画布 - 读取端兼容:旧数据 width > mask 尺寸时按 mask 等比归一化(不做存量迁移) - canvas-image/preview-image 补 transform-origin: top left, 缩放原点与碰撞盒(左上角)语义一致 Co-Authored-By: Claude --- dist/pages/diy/index.js | 2 +- dist/pages/diy/index.wxss | 2 +- src/pages/diy/index.scss | 3 ++ src/pages/diy/index.tsx | 63 ++++++++++++++++++++++++++++++--------- 4 files changed, 54 insertions(+), 16 deletions(-) diff --git a/dist/pages/diy/index.js b/dist/pages/diy/index.js index ce37ea0..78ea860 100644 --- a/dist/pages/diy/index.js +++ b/dist/pages/diy/index.js @@ -1 +1 @@ -"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[95],{8955:function(e,s,a){var t=a(7842),n=a(1212),i=a(467),c=a(9379),r=a(436),o=a(5544),d=a(118),l=a(758),u=a.n(l),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)(),s=(e.theme,e.resolvedTheme),a=(0,x.c)();(0,v.l)(s);var t=(0,h.useState)(null),l=(0,o.A)(t,2),w=l[0],k=l[1],A=(0,h.useState)(1),b=(0,o.A)(A,2),D=(b[0],b[1],(0,h.useState)("")),T=(0,o.A)(D,2),E=T[0],Y=T[1],I=(0,h.useState)(1),P=(0,o.A)(I,2),O=P[0],_=P[1],F=(0,h.useState)([]),R=(0,o.A)(F,2),M=R[0],B=R[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],se=(0,h.useState)(!1),ae=(0,o.A)(se,2),te=ae[0],ne=ae[1],ie=function(e,s){(0,g.x9)({productId:e.id,productName:e.name,unitPrice:e.price,count:s}).then(function(e){return(0,p.Fu)([e].concat((0,r.A)((0,p.p_)()))),Y(e.id),(0,g.i5)(e.id,{status:"designing"}).then(function(s){(0,p.Fu)((0,p.p_)().map(function(a){return a.id===e.id?(0,c.A)((0,c.A)({},a),{},{status:s.status}):a}))}).catch(function(){(0,p.Fu)((0,p.p_)().map(function(s){return s.id===e.id?(0,c.A)((0,c.A)({},s),{},{status:"designing"}):s}))})}).catch(function(){var a={id:"DSG"+Date.now(),productId:e.id,productName:e.name,productIcon:e.icon,unitPrice:e.price,count:s,status:"designing",createdAt:(new Date).toISOString().slice(0,10)};(0,p.Fu)([].concat((0,r.A)((0,p.p_)()),[a])),Y(a.id)})};(0,h.useEffect)(function(){var e=u().getCurrentInstance().router,s=e?e.params:void 0,a=s?s.source:void 0,t=s&&s.productId||s&&s.category;if("product"===a&&t){var n=(0,m.y9)(t);if(n){k(n);var i=Number(s?s.quantity:void 0)||1;_(i),ie(n,i)}}else if("designList"===a&&s&&s.designId){var c=s.designId,r=(0,p.p_)(),o=r.find(function(e){return e.id===c});if(o){Y(c),_(o.count);var d=(0,m.y9)(o.productId);if(d&&k(d),o.designData?o.designData.stickers:void 0)B(o.designData.stickers);else if(o.designData?o.designData.imageSrc:void 0){var l={id:"legacy_"+Date.now(),src:o.designData.imageSrc,x:o.designData.imagePos&&o.designData.imagePos.x||0,y:o.designData.imagePos&&o.designData.imagePos.y||0,scale:o.designData.imagePos&&o.designData.imagePos.scale||1,width:200,height:200,isOverlapping:!1};B([l])}"undesigned"===o.status&&((0,p.i5)(c,{status:"designing"}),(0,g.i5)(c,{status:"designing"}).catch(function(){}))}}else if(t){var h=(0,m.y9)(t);h&&(k(h),ie(h,1))}},[]);var ce=(0,h.useRef)(null),re=(0,h.useRef)({designId:"",quantity:1,category:null,stickers:[]});re.current={designId:E,quantity:O,category:w,stickers:M};var oe=function(){var e=re.current,s=e.designId,a=e.quantity,t=e.category,n=e.stickers;if(s&&t){var i=(0,p.p_)().find(function(e){return e.id===s}),r=(0,c.A)((0,c.A)({},i&&i.designData?i.designData:{}),{},{version:1,category:(0,c.A)({id:t.id,mask:t.mask},t.tone?{tone:t.tone}:{}),stickers:n});(0,p.i5)(s,{designData:r}),(0,g.i5)(s,{item:{productId:t.id,productName:t.name,unitPrice:t.price,count:a,designData:r}}).catch(function(){})}},de=function(){ce.current&&(clearTimeout(ce.current),ce.current=null),oe()};u().useDidHide(de),(0,h.useEffect)(function(){return de},[]);var le=(0,h.useRef)(!0);(0,h.useEffect)(function(){le.current?le.current=!1:(ce.current&&clearTimeout(ce.current),ce.current=setTimeout(oe,800))},[M]);var ue=function(e){for(var s=e.map(function(e){return(0,c.A)((0,c.A)({},e),{},{isOverlapping:!1})}),a=0;ai.x&&n.yi.y&&(s[a].isOverlapping=!0,s[t].isOverlapping=!0)}var u=s.some(function(e){return e.isOverlapping});return ne(u),s},he=function(){u().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(e){var s=e.tempFilePaths[0];u().getImageInfo({src:s,success:function(e){var a={id:"stk_"+Date.now(),src:s,x:0,y:0,scale:1,width:e.width,height:e.height,isOverlapping:!1},t=[].concat((0,r.A)(M),[a]),n=ue(t);B(n),C(a.id)},fail:function(){var e={id:"stk_"+Date.now(),src:s,x:0,y:0,scale:1,width:200,height:200,isOverlapping:!1},a=[].concat((0,r.A)(M),[e]),t=ue(a);B(t),C(e.id)}})}})},me=function(e){var s=M.filter(function(s){return s.id!==e}),a=ue(s);B(a),V===e&&C(null)},pe=function(e,s){var a=e.touches[0],t=M.find(function(e){return e.id===s});t&&(C(s),G(!0),U({x:a.clientX-t.x,y:a.clientY-t.y}))},ge=function(e){if(X&&V){var s=e.touches[0],a=M.map(function(e){return e.id!==V?e:(0,c.A)((0,c.A)({},e),{},{x:s.clientX-Q.x,y:s.clientY-Q.y})}),t=ue(a);B(t)}},fe=function(){return G(!1)},xe=function(){V&&E&&(de(),u().navigateTo({url:"/pages/diy/stickerEdit/index?designId=".concat(E,"&stickerId=").concat(V)}))},ve=function(e,s){var a=M.map(function(a){return a.id!==e?a:(0,c.A)((0,c.A)({},a),{},{scale:Math.max(.3,Math.min(3,a.scale+s))})}),t=ue(a);B(t)},je=function(){u().navigateBack()},Ne=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},ye=function(){var e=(0,i.A)((0,n.A)().m(function e(){var s,a,t,i;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!te){e.n=1;break}return u().showToast({title:"\u8d34\u7eb8\u4e0d\u80fd\u91cd\u53e0",icon:"none"}),e.a(2);case 1:if(!E||!w){e.n=6;break}return e.n=2,(0,g.x5)({stickers:M,category:w,version:1});case 2:return s=e.v,a=(0,c.A)({id:w.id,mask:w.mask},w.tone?{tone:w.tone}:{}),t=(0,p.p_)().find(function(e){return e.id===E}),i=(0,c.A)((0,c.A)({},t&&t.designData?t.designData:{}),{},{version:1,category:a,stickers:s.stickers||M}),(0,p.i5)(E,{status:"designing",designData:i}),e.p=3,e.n=4,(0,g.i5)(E,{status:"designing",item:{productId:w.id,productName:w.name,unitPrice:w.price,count:O,designData:i}});case 4:e.n=6;break;case 5:e.p=5,e.v,u().showToast({title:"\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u5df2\u6682\u5b58\u5230\u672c\u5730",icon:"none"});case 6:ee(!1),u().navigateTo({url:"/pages/checkout/index?designId=".concat(E)});case 7:return e.a(2)}},e,null,[[3,5]])}));return function(){return e.apply(this,arguments)}}(),Se=V?M.find(function(e){return e.id===V}):void 0,we=Se?Se.scale:1;return w?(0,S.jsxs)(d.Ss,{className:"theme-".concat(s),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:je,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:Ne(),children:[M.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,width:e.width||200,height:e.height||200},onTouchStart:function(s){return pe(s,e.id)},onTouchMove:ge,onTouchEnd:fe,onTap:function(){return C(e.id)},mode:"aspectFit"},e.id)}),(0,S.jsx)(d.Ss,{className:"mask-border",style:Ne()})]})}),(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:[M.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 me(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:he,children:[(0,S.jsx)(d.EY,{className:"add-icon",children:"+"}),(0,S.jsx)(d.EY,{className:"add-label",children:"\u6dfb\u52a0"})]})]}),te&&(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 ve(V,-.1)},children:"\uff0d"}),(0,S.jsxs)(d.EY,{className:"tool-value",children:[Math.round(100*we),"%"]}),(0,S.jsx)(d.Ss,{className:"tool-btn",onTap:function(){return ve(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:xe,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:he,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:Ne(),children:M.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,")"),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"]}),te&&(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(te?"disabled":""),onTap:ye,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(s),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,t.createPageConfig)(w,"pages/diy/index",{root:{cn:[]}},k||{}))}},function(e){var s=function(s){return e(e.s=s)};e.O(0,[907,96,76],function(){return s(8955)});e.O()}]); \ No newline at end of file +"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[95],{8955:function(e,a,t){var s=t(7842),n=t(1212),i=t(467),c=t(9379),r=t(436),o=t(5544),d=t(118),l=t(758),u=t.n(l),h=t(6540),m=t(5234),p=t(1457),g=t(6845),x=t(9703),f=t(9201),v=t(5414),j=t(9674),N=t(3053),y=t(9513),w=t(4848);function S(){var e=(0,x.wR)(),a=(e.theme,e.resolvedTheme),t=(0,f.c)();(0,v.l)(a);var s=(0,h.useState)(null),l=(0,o.A)(s,2),S=l[0],k=l[1],A=(0,h.useState)(1),b=(0,o.A)(A,2),M=(b[0],b[1],(0,h.useState)("")),T=(0,o.A)(M,2),E=T[0],Y=T[1],I=(0,h.useState)(1),D=(0,o.A)(I,2),P=D[0],O=D[1],_=(0,h.useState)([]),F=(0,o.A)(_,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],ae=(0,h.useState)(!1),te=(0,o.A)(ae,2),se=te[0],ne=te[1],ie=function(e,a){(0,g.x9)({productId:e.id,productName:e.name,unitPrice:e.price,count:a}).then(function(e){return(0,p.Fu)([e].concat((0,r.A)((0,p.p_)()))),Y(e.id),(0,g.i5)(e.id,{status:"designing"}).then(function(a){(0,p.Fu)((0,p.p_)().map(function(t){return t.id===e.id?(0,c.A)((0,c.A)({},t),{},{status:a.status}):t}))}).catch(function(){(0,p.Fu)((0,p.p_)().map(function(a){return a.id===e.id?(0,c.A)((0,c.A)({},a),{},{status:"designing"}):a}))})}).catch(function(){var t={id:"DSG"+Date.now(),productId:e.id,productName:e.name,productIcon:e.icon,unitPrice:e.price,count:a,status:"designing",createdAt:(new Date).toISOString().slice(0,10)};(0,p.Fu)([].concat((0,r.A)((0,p.p_)()),[t])),Y(t.id)})};(0,h.useEffect)(function(){var e=u().getCurrentInstance().router,a=e?e.params:void 0,t=a?a.source:void 0,s=a&&a.productId||a&&a.category;if("product"===t&&s){var n=(0,m.y9)(s);if(n){k(n);var i=Number(a?a.quantity:void 0)||1;O(i),ie(n,i)}}else if("designList"===t&&a&&a.designId){var r=a.designId,o=(0,p.p_)(),d=o.find(function(e){return e.id===r});if(d){Y(r),O(d.count);var l=(0,m.y9)(d.productId);l&&k(l);var h=d.designData,x=h?h.stickers:void 0;if(x){var f=h&&h.category&&h.category.mask||(l?l.mask:void 0),v=f?x.map(function(e){if(e.width>f.width||e.height>f.height){var a=.6*Math.min(f.width,f.height)/Math.max(e.width,e.height);return(0,c.A)((0,c.A)({},e),{},{width:Math.round(e.width*a),height:Math.round(e.height*a)})}return e}):x;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:E,quantity:P,category:S,stickers:R};var oe=function(){var e=re.current,a=e.designId,t=e.quantity,s=e.category,n=e.stickers;if(a&&s){var i=(0,p.p_)().find(function(e){return e.id===a}),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)(a,{designData:r}),(0,g.i5)(a,{item:{productId:s.id,productName:s.name,unitPrice:s.price,count:t,designData:r}}).catch(function(){})}},de=function(){ce.current&&(clearTimeout(ce.current),ce.current=null),oe()};u().useDidHide(de),(0,h.useEffect)(function(){return de},[]);var le=(0,h.useRef)(!0);(0,h.useEffect)(function(){le.current?le.current=!1:(ce.current&&clearTimeout(ce.current),ce.current=setTimeout(oe,800))},[R]);var ue=function(e){for(var a=e.map(function(e){return(0,c.A)((0,c.A)({},e),{},{isOverlapping:!1})}),t=0;ti.x&&n.yi.y&&(a[t].isOverlapping=!0,a[s].isOverlapping=!0)}var u=a.some(function(e){return e.isOverlapping});return ne(u),a},he=function(){u().chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:function(e){var a=e.tempFilePaths[0];u().getImageInfo({src:a,success:function(e){var t=Math.min(S.mask.width,S.mask.height),s=.6*t/Math.max(e.width,e.height),n={id:"stk_"+Date.now(),src:a,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=ue(i);B(c),C(n.id)},fail:function(){var e=Math.min(S.mask.width,S.mask.height),t=.6*e/200,s={id:"stk_"+Date.now(),src:a,x:0,y:0,scale:1,width:Math.round(200*t),height:Math.round(200*t),isOverlapping:!1},n=[].concat((0,r.A)(R),[s]),i=ue(n);B(i),C(s.id)}})}})},me=function(e){var a=R.filter(function(a){return a.id!==e}),t=ue(a);B(t),V===e&&C(null)},pe=function(e,a){var t=e.touches[0],s=R.find(function(e){return e.id===a});s&&(C(a),G(!0),U({x:t.clientX-s.x,y:t.clientY-s.y}))},ge=function(e){if(X&&V){var a=e.touches[0],t=R.map(function(e){if(e.id!==V)return e;var t=Math.max(0,S.mask.width-e.width*e.scale),s=Math.max(0,S.mask.height-e.height*e.scale);return(0,c.A)((0,c.A)({},e),{},{x:Math.min(Math.max(a.clientX-Q.x,0),t),y:Math.min(Math.max(a.clientY-Q.y,0),s)})}),s=ue(t);B(s)}},xe=function(){return G(!1)},fe=function(){V&&E&&(de(),u().navigateTo({url:"/pages/diy/stickerEdit/index?designId=".concat(E,"&stickerId=").concat(V)}))},ve=function(e,a){var t=R.map(function(t){if(t.id!==e)return t;var s=Math.max(.3,Math.min(3,t.scale+a)),n=Math.max(0,S.mask.width-t.width*s),i=Math.max(0,S.mask.height-t.height*s);return(0,c.A)((0,c.A)({},t),{},{scale:s,x:Math.min(Math.max(t.x,0),n),y:Math.min(Math.max(t.y,0),i)})}),s=ue(t);B(s)},je=function(){u().navigateBack()},Ne=function(){if(!S)return{width:300,height:420};var e={width:S.mask.width,height:S.mask.height};return"rect"===S.mask.shape&&(e.borderRadius=S.mask.borderRadius||0),"circle"===S.mask.shape&&(e.borderRadius="50%"),e},ye=function(){var e=(0,i.A)((0,n.A)().m(function e(){var a,t,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 u().showToast({title:"\u8d34\u7eb8\u4e0d\u80fd\u91cd\u53e0",icon:"none"}),e.a(2);case 1:if(!E||!S){e.n=6;break}return e.n=2,(0,g.x5)({stickers:R,category:S,version:1});case 2:return a=e.v,t=(0,c.A)({id:S.id,mask:S.mask},S.tone?{tone:S.tone}:{}),s=(0,p.p_)().find(function(e){return e.id===E}),i=(0,c.A)((0,c.A)({},s&&s.designData?s.designData:{}),{},{version:1,category:t,stickers:a.stickers||R}),(0,p.i5)(E,{status:"designing",designData:i}),e.p=3,e.n=4,(0,g.i5)(E,{status:"designing",item:{productId:S.id,productName:S.name,unitPrice:S.price,count:P,designData:i}});case 4:e.n=6;break;case 5:e.p=5,e.v,u().showToast({title:"\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u5df2\u6682\u5b58\u5230\u672c\u5730",icon:"none"});case 6:ee(!1),u().navigateTo({url:"/pages/checkout/index?designId=".concat(E)});case 7:return e.a(2)}},e,null,[[3,5]])}));return function(){return e.apply(this,arguments)}}(),we=V?R.find(function(e){return e.id===V}):void 0,Se=we?we.scale:1;return S?(0,w.jsxs)(d.Ss,{className:"theme-".concat(a),children:[(0,w.jsx)(j.A,{}),(0,w.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,w.jsxs)(d.Ss,{className:"diy-page",children:[(0,w.jsx)(d.Ss,{className:"page-header surface-card",style:{paddingTop:"".concat(t.statusBarHeight+12,"px")},children:(0,w.jsxs)(d.Ss,{className:"flex-between",style:{width:"100%"},children:[(0,w.jsx)(d.EY,{className:"back-btn",onTap:je,children:"\u2190"}),(0,w.jsx)(d.EY,{className:"page-title",children:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0"}),(0,w.jsx)(d.Ss,{className:"header-spacer"})]})}),(0,w.jsx)(d.Ss,{className:"canvas-wrapper surface-card mt-20",catchMove:!0,children:(0,w.jsxs)(d.Ss,{className:"canvas-area",style:Ne(),children:[R.map(function(e){return(0,w.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,width:e.width||200,height:e.height||200},onTouchStart:function(a){return pe(a,e.id)},onTouchMove:ge,onTouchEnd:xe,onTap:function(){return C(e.id)},mode:"aspectFit"},e.id)}),(0,w.jsx)(d.Ss,{className:"mask-border",style:Ne()})]})}),(0,w.jsxs)(d.Ss,{className:"sticker-panel surface-card mt-20",children:[(0,w.jsx)(d.EY,{className:"section-title",children:"\u8d34\u7eb8"}),(0,w.jsxs)(d.Ss,{className:"sticker-list",children:[R.map(function(e){return(0,w.jsxs)(d.Ss,{className:"sticker-thumb ".concat(e.isOverlapping?"overlap":""," ").concat(V===e.id?"active":""),children:[(0,w.jsx)(d._V,{src:e.src,className:"sticker-thumb-img",mode:"aspectFit",onTap:function(){return C(e.id)}}),(0,w.jsx)(d.Ss,{className:"sticker-del",onTap:function(){return me(e.id)},children:(0,w.jsx)(d.EY,{className:"del-icon",children:"\xd7"})})]},e.id)}),(0,w.jsxs)(d.Ss,{className:"sticker-add-btn",onTap:he,children:[(0,w.jsx)(d.EY,{className:"add-icon",children:"+"}),(0,w.jsx)(d.EY,{className:"add-label",children:"\u6dfb\u52a0"})]})]}),se&&(0,w.jsx)(d.EY,{className:"overlap-hint",children:"\u6709\u8d34\u7eb8\u91cd\u53e0\uff0c\u8bf7\u8c03\u6574\u4f4d\u7f6e"})]}),V&&(0,w.jsxs)(d.Ss,{className:"toolbar surface-card mt-20",children:[(0,w.jsxs)(d.Ss,{className:"tool-row",children:[(0,w.jsx)(d.EY,{className:"tool-label",children:"\u7f29\u653e"}),(0,w.jsxs)(d.Ss,{className:"flex-center",style:{gap:"20px"},children:[(0,w.jsx)(d.Ss,{className:"tool-btn",onTap:function(){return ve(V,-.1)},children:"\uff0d"}),(0,w.jsxs)(d.EY,{className:"tool-value",children:[Math.round(100*Se),"%"]}),(0,w.jsx)(d.Ss,{className:"tool-btn",onTap:function(){return ve(V,.1)},children:"\uff0b"})]})]}),(0,w.jsxs)(d.Ss,{className:"tool-row",children:[(0,w.jsx)(d.EY,{className:"tool-label",children:"\u63d0\u793a"}),(0,w.jsx)(d.EY,{className:"tool-hint",children:"\u62d6\u52a8\u8c03\u6574\u4f4d\u7f6e\uff0c\u8d34\u7eb8\u4e0d\u53ef\u91cd\u53e0"})]})]}),(0,w.jsx)(d.Ss,{className:"edit-btn-bar mt-20",children:(0,w.jsx)(d.Ss,{className:"edit-btn ".concat(V?"active":"disabled"),onTap:fe,children:(0,w.jsx)(d.EY,{children:"\u7f16\u8f91"})})}),(0,w.jsxs)(y.A,{children:[(0,w.jsx)(d.Ss,{className:"btn-primary",onTap:function(){return ee(!0)},children:(0,w.jsx)(d.EY,{children:"\u9884\u89c8\u6548\u679c"})}),(0,w.jsx)(d.Ss,{className:"btn-secondary",onTap:he,children:(0,w.jsx)(d.EY,{children:"\u6dfb\u52a0\u8d34\u7eb8"})})]}),$&&(0,w.jsx)(d.Ss,{className:"preview-overlay",children:(0,w.jsxs)(d.Ss,{className:"preview-card surface-card",children:[(0,w.jsx)(d.EY,{className:"preview-title",children:"\u786e\u8ba4\u6548\u679c"}),(0,w.jsx)(d.Ss,{className:"preview-canvas",style:Ne(),children:R.map(function(e){return(0,w.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,")"),width:e.width||200,height:e.height||200},mode:"aspectFit"},e.id)})}),(0,w.jsxs)(d.Ss,{className:"product-info",children:[(0,w.jsx)(d.EY,{className:"product-name",children:S.name}),(0,w.jsxs)(d.EY,{className:"product-size",children:["\u753b\u5e03\u5c3a\u5bf8: ",S.mask.width," \xd7 ",S.mask.height," px"]}),se&&(0,w.jsx)(d.EY,{className:"overlap-hint",children:"\u8d34\u7eb8\u6709\u91cd\u53e0\uff0c\u4e0d\u53ef\u63d0\u4ea4"})]}),(0,w.jsxs)(d.Ss,{className:"preview-actions",children:[(0,w.jsx)(d.Ss,{className:"btn-secondary",onTap:function(){return ee(!1)},children:(0,w.jsx)(d.EY,{children:"\u8fd4\u56de\u4fee\u6539"})}),(0,w.jsx)(d.Ss,{className:"btn-primary ".concat(se?"disabled":""),onTap:ye,children:(0,w.jsx)(d.EY,{children:"\u786e\u8ba4\u5b8c\u6210"})})]})]})}),(0,w.jsx)(d.Ss,{className:"safe-bottom-placeholder"})]})]}):(0,w.jsxs)(d.Ss,{className:"theme-".concat(a),children:[(0,w.jsx)(j.A,{}),(0,w.jsx)(N.A,{title:"\u8bbe\u8ba1\u5de5\u4f5c\u53f0",targetSelector:".page-header.surface-card",showBack:!0}),(0,w.jsx)(d.Ss,{className:"diy-page",children:(0,w.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)(S,"pages/diy/index",{root:{cn:[]}},k||{}))}},function(e){var a=function(a){return e(e.s=a)};e.O(0,[907,96,76],function(){return a(8955)});e.O()}]); \ No newline at end of file diff --git a/dist/pages/diy/index.wxss b/dist/pages/diy/index.wxss index dbc88ba..a73cf6d 100644 --- a/dist/pages/diy/index.wxss +++ b/dist/pages/diy/index.wxss @@ -1 +1 @@ -.diy-page{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:100vh;padding:0 32rpx calc(48rpx + env(safe-area-inset-bottom))}.diy-page .page-header{-ms-flex-align:center;-webkit-align-items:center;align-items:center;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 0 24rpx;padding-bottom:16rpx;padding-top:0}.diy-page .page-header.surface-card{background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none}.diy-page .page-header .flex-between{min-height:88rpx}.back-btn{-ms-flex-align:center;-ms-flex-pack:center;-ms-flex-negative:0;-webkit-align-items:center;align-items:center;background:var(--bg-card);border:1rpx solid var(--border-strong);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;flex-shrink:0;font-size:36rpx;height:80rpx;-webkit-justify-content:center;justify-content:center;line-height:1;width:80rpx}.back-btn:active{-webkit-transform:scale(.96);-ms-transform:scale(.96);transform:scale(.96)}.diy-page .page-title{color:var(--text-primary);-webkit-flex:1;-ms-flex:1;flex:1;font-size:34rpx;font-weight:700;letter-spacing:0;line-height:1.2;min-width:0;overflow:hidden;padding:0 16rpx;text-align:center;text-overflow:ellipsis;white-space:nowrap}.header-spacer{-ms-flex-negative:0;-webkit-flex-shrink:0;flex-shrink:0;height:80rpx;width:80rpx}.canvas-wrapper{-ms-flex-pack:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;border-radius:24rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;justify-content:center;padding:24rpx}.canvas-area{background:var(--bg-input);border-radius:24rpx;-webkit-box-shadow:inset 0 0 0 1rpx var(--border-strong);box-shadow:inset 0 0 0 1rpx var(--border-strong);-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;min-height:400rpx;min-width:300rpx;overflow:hidden;position:relative}.mask-border{border:1rpx solid var(--border-strong);bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:2}.canvas-image{border:2rpx solid transparent;border-radius:8rpx;max-height:100%;max-width:100%;position:absolute;z-index:5}.canvas-image.active{border-color:var(--accent-primary);-webkit-box-shadow:0 0 0 8rpx var(--accent-primary-soft);box-shadow:0 0 0 8rpx var(--accent-primary-soft)}.canvas-image.overlap{border-color:var(--danger);-webkit-box-shadow:0 0 0 8rpx var(--danger-soft);box-shadow:0 0 0 8rpx var(--danger-soft)}.sticker-panel{padding:24rpx}.sticker-panel .section-title{color:var(--text-primary);display:block;font-size:32rpx;font-weight:700;letter-spacing:0;margin-bottom:20rpx}.sticker-list{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16rpx}.sticker-thumb{background:var(--bg-input);border:1rpx solid var(--border);border-radius:20rpx;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);height:164rpx;overflow:hidden;position:relative;width:164rpx}.sticker-thumb.active{border-color:var(--accent-primary);-webkit-box-shadow:0 0 0 6rpx var(--accent-primary-soft);box-shadow:0 0 0 6rpx var(--accent-primary-soft)}.sticker-thumb.overlap{border-color:var(--danger);-webkit-box-shadow:0 0 0 6rpx var(--danger-soft);box-shadow:0 0 0 6rpx var(--danger-soft)}.sticker-thumb-img{height:100%;width:100%}.sticker-del{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--danger);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);display:-webkit-flex;display:-ms-flexbox;display:flex;height:44rpx;-webkit-justify-content:center;justify-content:center;position:absolute;right:8rpx;top:8rpx;width:44rpx;z-index:10}.del-icon{color:#fff;font-size:28rpx;font-weight:700;line-height:1}.sticker-add-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-muted);border:1rpx solid var(--border-strong);border-radius:20rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:164rpx;-webkit-justify-content:center;justify-content:center;width:164rpx}.sticker-add-btn:active{-webkit-transform:scale(.97);-ms-transform:scale(.97);transform:scale(.97)}.add-icon{color:var(--accent-primary);font-size:44rpx;font-weight:600;line-height:1}.add-label{color:var(--text-secondary);font-size:22rpx;margin-top:8rpx}.overlap-hint{color:var(--danger);display:block;font-size:24rpx;font-weight:600;margin-top:16rpx;text-align:center}.toolbar{padding:24rpx}.tool-row{-ms-flex-align:center;-ms-flex-pack:justify;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx;-webkit-justify-content:space-between;justify-content:space-between;padding:8rpx 0}.tool-row + .tool-row{border-top:1rpx solid var(--border);margin-top:8rpx;padding-top:16rpx}.tool-label{color:var(--text-primary);font-size:26rpx;font-weight:600}.tool-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-input);border:1rpx solid var(--border);border-radius:16rpx;color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:32rpx;font-weight:600;height:64rpx;-webkit-justify-content:center;justify-content:center;width:64rpx}.tool-btn:active{background:var(--bg-muted);-webkit-transform:scale(.96);-ms-transform:scale(.96);transform:scale(.96)}.tool-value{color:var(--accent-primary);font-size:26rpx;font-variant-numeric:tabular-nums;font-weight:600;min-width:88rpx;text-align:center}.tool-hint{color:var(--text-secondary);font-size:24rpx}.edit-btn-bar{-ms-flex-pack:end;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:flex-end;justify-content:flex-end;margin-top:24rpx}.edit-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-input);border:1rpx solid var(--border-strong);border-radius:999rpx;color:var(--text-secondary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:28rpx;font-weight:600;height:88rpx;-webkit-justify-content:center;justify-content:center;min-width:176rpx;padding:0 40rpx;text-align:center;-webkit-transition:all .2s ease;transition:all .2s ease}.edit-btn.active{background:var(--accent-primary-soft);border-color:var(--accent-primary);color:var(--accent-primary)}.edit-btn.disabled{opacity:.45;pointer-events:none}.bottom-action-bar .btn-primary,.bottom-action-bar .btn-secondary{-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx;font-weight:600;line-height:1.2;padding:28rpx 0;text-align:center}.preview-overlay{-ms-flex-align:end;-ms-flex-pack:center;-webkit-align-items:flex-end;align-items:flex-end;background:rgba(0,0,0,.45);bottom:0;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.preview-card{background:var(--bg-card);border:1rpx solid var(--border);border-radius:32rpx 32rpx 0 0;-webkit-box-shadow:var(--shadow-elevated);box-shadow:var(--shadow-elevated);-webkit-box-sizing:border-box;box-sizing:border-box;max-height:88vh;overflow-y:auto;padding:40rpx 32rpx calc(32rpx + env(safe-area-inset-bottom));width:100%}.preview-card::before{background:var(--bg-muted);border-radius:999rpx;content:"";display:block;height:8rpx;margin:0 auto 32rpx;width:64rpx}.preview-title{color:var(--text-primary);display:block;font-size:34rpx;font-weight:700;letter-spacing:0;margin-bottom:24rpx;text-align:center}.preview-canvas{background:var(--bg-input);border:1rpx solid var(--border-strong);border-radius:24rpx;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 auto 24rpx;max-width:100%;min-height:400rpx;min-width:300rpx;overflow:hidden;position:relative}.preview-image{max-height:100%;max-width:100%;position:absolute;z-index:5}.preview-image.overlap{border:2rpx solid var(--danger);border-radius:8rpx}.product-info{margin-bottom:28rpx;text-align:center}.product-name{color:var(--text-primary);display:block;font-size:32rpx;font-weight:700;letter-spacing:0;margin-bottom:8rpx}.product-size{color:var(--text-secondary);font-size:24rpx}.preview-actions{display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx}.preview-actions .btn-primary,.preview-actions .btn-secondary{-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx;font-weight:600;line-height:1.2;padding:28rpx 0;text-align:center}.preview-actions .btn-primary.disabled{opacity:.5;pointer-events:none}.mt-20{margin-top:24rpx} \ No newline at end of file +.diy-page{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:100vh;padding:0 32rpx calc(48rpx + env(safe-area-inset-bottom))}.diy-page .page-header{-ms-flex-align:center;-webkit-align-items:center;align-items:center;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 0 24rpx;padding-bottom:16rpx;padding-top:0}.diy-page .page-header.surface-card{background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none}.diy-page .page-header .flex-between{min-height:88rpx}.back-btn{-ms-flex-align:center;-ms-flex-pack:center;-ms-flex-negative:0;-webkit-align-items:center;align-items:center;background:var(--bg-card);border:1rpx solid var(--border-strong);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;flex-shrink:0;font-size:36rpx;height:80rpx;-webkit-justify-content:center;justify-content:center;line-height:1;width:80rpx}.back-btn:active{-webkit-transform:scale(.96);-ms-transform:scale(.96);transform:scale(.96)}.diy-page .page-title{color:var(--text-primary);-webkit-flex:1;-ms-flex:1;flex:1;font-size:34rpx;font-weight:700;letter-spacing:0;line-height:1.2;min-width:0;overflow:hidden;padding:0 16rpx;text-align:center;text-overflow:ellipsis;white-space:nowrap}.header-spacer{-ms-flex-negative:0;-webkit-flex-shrink:0;flex-shrink:0;height:80rpx;width:80rpx}.canvas-wrapper{-ms-flex-pack:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;border-radius:24rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;justify-content:center;padding:24rpx}.canvas-area{background:var(--bg-input);border-radius:24rpx;-webkit-box-shadow:inset 0 0 0 1rpx var(--border-strong);box-shadow:inset 0 0 0 1rpx var(--border-strong);-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;min-height:400rpx;min-width:300rpx;overflow:hidden;position:relative}.mask-border{border:1rpx solid var(--border-strong);bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:2}.canvas-image{border:2rpx solid transparent;border-radius:8rpx;max-height:100%;max-width:100%;position:absolute;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;z-index:5}.canvas-image.active{border-color:var(--accent-primary);-webkit-box-shadow:0 0 0 8rpx var(--accent-primary-soft);box-shadow:0 0 0 8rpx var(--accent-primary-soft)}.canvas-image.overlap{border-color:var(--danger);-webkit-box-shadow:0 0 0 8rpx var(--danger-soft);box-shadow:0 0 0 8rpx var(--danger-soft)}.sticker-panel{padding:24rpx}.sticker-panel .section-title{color:var(--text-primary);display:block;font-size:32rpx;font-weight:700;letter-spacing:0;margin-bottom:20rpx}.sticker-list{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16rpx}.sticker-thumb{background:var(--bg-input);border:1rpx solid var(--border);border-radius:20rpx;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);height:164rpx;overflow:hidden;position:relative;width:164rpx}.sticker-thumb.active{border-color:var(--accent-primary);-webkit-box-shadow:0 0 0 6rpx var(--accent-primary-soft);box-shadow:0 0 0 6rpx var(--accent-primary-soft)}.sticker-thumb.overlap{border-color:var(--danger);-webkit-box-shadow:0 0 0 6rpx var(--danger-soft);box-shadow:0 0 0 6rpx var(--danger-soft)}.sticker-thumb-img{height:100%;width:100%}.sticker-del{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--danger);border-radius:50%;-webkit-box-shadow:var(--shadow-card);box-shadow:var(--shadow-card);display:-webkit-flex;display:-ms-flexbox;display:flex;height:44rpx;-webkit-justify-content:center;justify-content:center;position:absolute;right:8rpx;top:8rpx;width:44rpx;z-index:10}.del-icon{color:#fff;font-size:28rpx;font-weight:700;line-height:1}.sticker-add-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-muted);border:1rpx solid var(--border-strong);border-radius:20rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:164rpx;-webkit-justify-content:center;justify-content:center;width:164rpx}.sticker-add-btn:active{-webkit-transform:scale(.97);-ms-transform:scale(.97);transform:scale(.97)}.add-icon{color:var(--accent-primary);font-size:44rpx;font-weight:600;line-height:1}.add-label{color:var(--text-secondary);font-size:22rpx;margin-top:8rpx}.overlap-hint{color:var(--danger);display:block;font-size:24rpx;font-weight:600;margin-top:16rpx;text-align:center}.toolbar{padding:24rpx}.tool-row{-ms-flex-align:center;-ms-flex-pack:justify;-webkit-align-items:center;align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx;-webkit-justify-content:space-between;justify-content:space-between;padding:8rpx 0}.tool-row + .tool-row{border-top:1rpx solid var(--border);margin-top:8rpx;padding-top:16rpx}.tool-label{color:var(--text-primary);font-size:26rpx;font-weight:600}.tool-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-input);border:1rpx solid var(--border);border-radius:16rpx;color:var(--text-primary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:32rpx;font-weight:600;height:64rpx;-webkit-justify-content:center;justify-content:center;width:64rpx}.tool-btn:active{background:var(--bg-muted);-webkit-transform:scale(.96);-ms-transform:scale(.96);transform:scale(.96)}.tool-value{color:var(--accent-primary);font-size:26rpx;font-variant-numeric:tabular-nums;font-weight:600;min-width:88rpx;text-align:center}.tool-hint{color:var(--text-secondary);font-size:24rpx}.edit-btn-bar{-ms-flex-pack:end;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:flex-end;justify-content:flex-end;margin-top:24rpx}.edit-btn{-ms-flex-align:center;-ms-flex-pack:center;-webkit-align-items:center;align-items:center;background:var(--bg-input);border:1rpx solid var(--border-strong);border-radius:999rpx;color:var(--text-secondary);display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:28rpx;font-weight:600;height:88rpx;-webkit-justify-content:center;justify-content:center;min-width:176rpx;padding:0 40rpx;text-align:center;-webkit-transition:all .2s ease;transition:all .2s ease}.edit-btn.active{background:var(--accent-primary-soft);border-color:var(--accent-primary);color:var(--accent-primary)}.edit-btn.disabled{opacity:.45;pointer-events:none}.bottom-action-bar .btn-primary,.bottom-action-bar .btn-secondary{-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx;font-weight:600;line-height:1.2;padding:28rpx 0;text-align:center}.preview-overlay{-ms-flex-align:end;-ms-flex-pack:center;-webkit-align-items:flex-end;align-items:flex-end;background:rgba(0,0,0,.45);bottom:0;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.preview-card{background:var(--bg-card);border:1rpx solid var(--border);border-radius:32rpx 32rpx 0 0;-webkit-box-shadow:var(--shadow-elevated);box-shadow:var(--shadow-elevated);-webkit-box-sizing:border-box;box-sizing:border-box;max-height:88vh;overflow-y:auto;padding:40rpx 32rpx calc(32rpx + env(safe-area-inset-bottom));width:100%}.preview-card::before{background:var(--bg-muted);border-radius:999rpx;content:"";display:block;height:8rpx;margin:0 auto 32rpx;width:64rpx}.preview-title{color:var(--text-primary);display:block;font-size:34rpx;font-weight:700;letter-spacing:0;margin-bottom:24rpx;text-align:center}.preview-canvas{background:var(--bg-input);border:1rpx solid var(--border-strong);border-radius:24rpx;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 auto 24rpx;max-width:100%;min-height:400rpx;min-width:300rpx;overflow:hidden;position:relative}.preview-image{max-height:100%;max-width:100%;position:absolute;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;z-index:5}.preview-image.overlap{border:2rpx solid var(--danger);border-radius:8rpx}.product-info{margin-bottom:28rpx;text-align:center}.product-name{color:var(--text-primary);display:block;font-size:32rpx;font-weight:700;letter-spacing:0;margin-bottom:8rpx}.product-size{color:var(--text-secondary);font-size:24rpx}.preview-actions{display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx}.preview-actions .btn-primary,.preview-actions .btn-secondary{-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx;font-weight:600;line-height:1.2;padding:28rpx 0;text-align:center}.preview-actions .btn-primary.disabled{opacity:.5;pointer-events:none}.mt-20{margin-top:24rpx} \ No newline at end of file diff --git a/src/pages/diy/index.scss b/src/pages/diy/index.scss index 5c25296..19e23f9 100644 --- a/src/pages/diy/index.scss +++ b/src/pages/diy/index.scss @@ -103,6 +103,8 @@ position: absolute; max-width: 100%; max-height: 100%; + /* 问题1 修正:碰撞盒按左上角计算,缩放原点统一为左上角,渲染与碰撞语义自洽 */ + transform-origin: top left; z-index: 5; border: 2rpx solid transparent; border-radius: 8rpx; @@ -391,6 +393,7 @@ position: absolute; max-width: 100%; max-height: 100%; + transform-origin: top left; z-index: 5; } diff --git a/src/pages/diy/index.tsx b/src/pages/diy/index.tsx index 27328b0..207f765 100644 --- a/src/pages/diy/index.tsx +++ b/src/pages/diy/index.tsx @@ -88,16 +88,30 @@ export default function DIYPage() { setQuantity(design.count) const product = getProductById(design.productId) if (product) setCategory(product) - if (design.designData ? design.designData.stickers : undefined) { - setStickers(design.designData.stickers) - } else if (design.designData ? design.designData.imageSrc : undefined) { + const dd = design.designData + const rawStickers = dd ? dd.stickers : undefined + if (rawStickers) { + // 问题1 留意点:旧数据 width/height 为图片原始像素语义,读取端按 mask 等比归一化 + //(契约实现注记,不做存量迁移);新语义数据(≤mask 短边 60%)原样通过 + const mask = (dd && dd.category && dd.category.mask) || (product ? product.mask : undefined) + const normalized: StickerItem[] = mask + ? rawStickers.map(s => { + if (s.width > mask.width || s.height > mask.height) { + const k = (Math.min(mask.width, mask.height) * 0.6) / Math.max(s.width, s.height) + return { ...s, width: Math.round(s.width * k), height: Math.round(s.height * k) } + } + return s + }) + : rawStickers + setStickers(normalized) + } else if (dd ? dd.imageSrc : undefined) { // 兼容旧版数据 const s: StickerItem = { id: 'legacy_' + Date.now(), - src: design.designData.imageSrc, - x: design.designData.imagePos ? design.designData.imagePos.x || 0 : 0, - y: design.designData.imagePos ? design.designData.imagePos.y || 0 : 0, - scale: design.designData.imagePos ? design.designData.imagePos.scale || 1 : 1, + src: dd.imageSrc, + x: dd.imagePos ? dd.imagePos.x || 0 : 0, + y: dd.imagePos ? dd.imagePos.y || 0 : 0, + scale: dd.imagePos ? dd.imagePos.scale || 1 : 1, width: 200, height: 200, isOverlapping: false @@ -207,14 +221,17 @@ export default function DIYPage() { Taro.getImageInfo({ src, success: (info) => { + // 问题1 修正:归一化到画布坐标空间(width/height = 画布显示像素,契约实现注记) + const maskMin = Math.min(category.mask.width, category.mask.height) + const k = (maskMin * 0.6) / Math.max(info.width, info.height) const newSticker: StickerItem = { id: 'stk_' + Date.now(), src, x: 0, y: 0, scale: 1, - width: info.width, - height: info.height, + width: Math.round(info.width * k), + height: Math.round(info.height * k), isOverlapping: false } const next = [...stickers, newSticker] @@ -223,15 +240,17 @@ export default function DIYPage() { setActiveStickerId(newSticker.id) }, fail: () => { - // fallback 尺寸 + // fallback 尺寸(同样按画布空间归一化) + const maskMin = Math.min(category.mask.width, category.mask.height) + const k = (maskMin * 0.6) / 200 const newSticker: StickerItem = { id: 'stk_' + Date.now(), src, x: 0, y: 0, scale: 1, - width: 200, - height: 200, + width: Math.round(200 * k), + height: Math.round(200 * k), isOverlapping: false } const next = [...stickers, newSticker] @@ -265,7 +284,14 @@ export default function DIYPage() { const touch = e.touches[0] const next = stickers.map(s => { if (s.id !== activeStickerId) return s - return { ...s, x: touch.clientX - startPos.x, y: touch.clientY - startPos.y } + // 问题1 修正:坐标钳制在画布内,杜绝负坐标与拖出画布(碰撞盒 = x/y + 显示宽高) + const maxX = Math.max(0, category.mask.width - s.width * s.scale) + const maxY = Math.max(0, category.mask.height - s.height * s.scale) + return { + ...s, + x: Math.min(Math.max(touch.clientX - startPos.x, 0), maxX), + y: Math.min(Math.max(touch.clientY - startPos.y, 0), maxY) + } }) const checked = checkOverlap(next) setStickers(checked) @@ -284,7 +310,16 @@ export default function DIYPage() { const handleScale = (id: string, delta: number) => { const next = stickers.map(s => { if (s.id !== id) return s - return { ...s, scale: Math.max(0.3, Math.min(3, s.scale + delta)) } + const scale = Math.max(0.3, Math.min(3, s.scale + delta)) + // 问题1 修正:缩放后把位置钳回画布内 + const maxX = Math.max(0, category.mask.width - s.width * scale) + const maxY = Math.max(0, category.mask.height - s.height * scale) + return { + ...s, + scale, + x: Math.min(Math.max(s.x, 0), maxX), + y: Math.min(Math.max(s.y, 0), maxY) + } }) const checked = checkOverlap(next) setStickers(checked) From 98da907df8c719c9c88c403d387c89a6b4f80e22 Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 19:12:17 +0800 Subject: [PATCH 10/15] =?UTF-8?q?docs(diy):=20=E4=BF=AE=E6=AD=A3=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E8=BF=9B=E5=BA=A6=E6=9B=B4=E6=96=B0=E2=80=94?= =?UTF-8?q?=E2=80=94=E6=89=B9=E6=AC=A1=E2=91=A0=E2=91=A1=E5=B7=B2=E5=AE=9E?= =?UTF-8?q?=E6=96=BD=EF=BC=8C=E6=89=B9=E6=AC=A1=E2=91=A2=E6=9A=82=E7=BC=93?= =?UTF-8?q?=EF=BC=88=E5=BE=85=20R3=20=E5=AF=B9=E9=BD=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude --- docs/diy-fix-workflow.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/diy-fix-workflow.md b/docs/diy-fix-workflow.md index 992fa85..f46a418 100644 --- a/docs/diy-fix-workflow.md +++ b/docs/diy-fix-workflow.md @@ -218,8 +218,11 @@ R4 派单前持久化回写)直接矛盾,且真机落库数据即为 wxfile: 问题6 —— 不修(R3 待办,已记录) ``` -**建议批次**:① 问题 2+3+4(同一文件、一次回归)→ ② 问题 1(含兼容验证)→ -③ 问题 5(改动面最大,单独一批)。 +**建议批次**:① 问题 2+3+4(同一文件、一次回归)✅ 已实施(2026-09-12,commit eea6c3f, +`build:weapp` 通过,tsc 无新增错误)→ ② 问题 1(含兼容验证)✅ 已实施(2026-09-12, +commit 3b224cf:归一化 + 坐标钳制 + 读端兼容 + transform-origin)→ +③ 问题 5(改动面最大,单独一批)⏸ **暂缓**(2026-09-12 需求方决定:与 R3 链路 +edits 消费点相关,待 R3 对齐后实施)。 **统一验证清单**:加贴纸不重叠不误报 / 拖不出去 / 中途退出重进布局还在 / 进入工作台清单变「设计中」/ 编辑页任何时候有图 / 滑块可拖 / 编辑保存后 DIY 效果保持 / From 2e3676a4702032d52d922b8cc46be3ac6f24d9fa Mon Sep 17 00:00:00 2001 From: lhmin0604 Date: Sat, 12 Sep 2026 19:29:03 +0800 Subject: [PATCH 11/15] =?UTF-8?q?fix(diy):=20=E8=B4=B4=E7=BA=B8=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=A1=B5=E6=BB=91=E5=9D=97=E7=BB=84=E4=BB=B6=E5=8C=96?= =?UTF-8?q?=20+=20CSS=20filter=20=E9=A2=84=E8=A7=88=20+=20edits=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=8C=96=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正工作流批次③(问题5): - 三个滑块统一改用 TouchSlider 组件(id 选择器定位 + touchstart 缓存 rect),删除原 .in(e.currentTarget) 坏实现与死代码 - 预览弃用 Canvas ctx.filter(开发者工具不支持),改 Image + CSS filter 所见即所得;Canvas 导出链路整体移除 - 保存改为 edits 参数化持久化(src 不变;裁剪/线稿的 src 替换经 pendingSrc 一并落库),不再依赖 canvasToTempFilePath - DIY 工作台画布与预览弹层渲染端消费 edits(同一 CSS filter 逻辑), checkout 预览消费 edits 记入 R3 待办(routes/R2/README.md #6) Co-Authored-By: Claude --- dist/base.wxml | 8 - dist/pages/diy/index.js | 2 +- dist/pages/diy/stickerEdit/index.js | 2 +- dist/pages/diy/stickerEdit/index.wxss | 2 +- dist/taro.js | 2 +- src/pages/diy/index.tsx | 14 + src/pages/diy/stickerEdit/index.scss | 10 + src/pages/diy/stickerEdit/index.tsx | 370 ++++++++------------------ 8 files changed, 143 insertions(+), 267 deletions(-) diff --git a/dist/base.wxml b/dist/base.wxml index 19dcfc8..77b9e93 100644 --- a/dist/base.wxml +++ b/dist/base.wxml @@ -133,14 +133,6 @@ -