Files
2024-02-22 18:37:23 +08:00

2 lines
5.8 KiB
JavaScript

import{b8 as e,T as a,a as t,b9 as s,G as l,H as o,o as n,j as i,w as r,h as c,Q as u,I as f,z as h,ac as d,ba as v,a2 as p,aX as m,aT as x,ae as y,bb as _,p as g,B as w,bc as k,f as b,e as T,F as S,k as C,l as j,A as I,N as P}from"./index-d4baa715.js";import{s as F}from"./index.ae120a7a.js";import{_ as R}from"./uv-overlay.28e9addc.js";import{u as D}from"./useImage.bf0418c3.js";import{u as G}from"./useShare.a1157a10.js";import{_ as $}from"./_plugin-vue_export-helper.1b428a4d.js";import{P as A}from"./Popup.965f3d92.js";import{a4 as E,a5 as N}from"./images.f0a6f614.js";import{l as q}from"./lodash.77ffa483.js";const z=e("globalRequestStore",{state:()=>({}),getters:{},actions:{async doShareToAddIntegral(){try{return await F(),!0}catch(e){return!1}}}}),W=$({__name:"Goods",setup(e,{expose:b}){const T=a(),{getImageInfo:S,base64ToUrl:C,saveImageToPhotosAlbum:j}=D(),{shareInfo:I,goodsDetailShare:P}=G(),F=t(!1),$=t(void 0),A=t("");function E(){$.value=N.value=void 0,F.value=!1}b({open:async function(e){$.value=e,F.value=!0,d({title:"获取数据中..."}),P(e),A.value=await v({path:"pages/share/index",name:I.value.query}),await p((()=>{!function(){d({title:"海报生成中"});x().in(q).select("#goods-canvas").boundingClientRect().exec((async e=>{try{const{width:a,height:t}=e[0];!function(e={}){W.save();e={x:0,y:0,width:0,height:0,round:0,stroke:!1,strokeStyle:"#ffffff",fillStyle:"#ffffff",...e};const{x:a,y:t,width:s,height:l,round:o,stroke:n,strokeStyle:i,fillStyle:r}=e;W.beginPath(),W.moveTo(a+o,t),W.arcTo(a+s,t,a+s,t+o,o),W.lineTo(a+s,t+l-o),W.arcTo(a+s,t+l,a+s-o,t+l,o),W.lineTo(a+o,t+l),W.arcTo(a,t+l,a,t+l-o,o),W.lineTo(a,t+o),W.arcTo(a,t,a+o,t,o),W.closePath(),W.fillStyle=r,W.strokeStyle=i,W.fill(),n&&W.stroke(),W.restore()}({width:a,height:t,round:10}),await async function(){await B({x:15,y:15,width:32,height:32,src:T.user.avatar}),W.save(),W.font="normal 16px sans-serif",W.fillStyle="#000000",W.translate(68,32),W.fillText(T.user.nickname,0,8),W.restore()}(),await async function(e){const a=e-48,t=$.value.image;await B({x:24,y:72,width:a,height:a,src:t});const s=$.value.storeName,l=$.value.price,o=$.value.otPrice,n=W.measureText(s)>=e/1.5?s:s.slice(0,17)+"...";W.save(),W.translate(24,e+58),W.font="normal bold 16px sans-serif",W.fillStyle="#000000",W.fillText(n,0,0),W.restore(),W.save(),W.translate(24,e+58+36),W.font="normal bold 24px sans-serif",W.fillStyle="#EE6D46",W.fillText(`${l}`,0,0);const i=W.measureText(`${l}`);W.font="normal normal 16px sans-serif",W.fillStyle="#999999",W.fillText(`${o}`,i.width+10,0);const r=W.measureText(`${o}`);W.fillRect(i.width+10,-8,r.width+5,1.5),W.restore(),W.save(),W.beginPath(),W.strokeStyle="#F0F0F0",W.translate(24,e+58+36+15),W.moveTo(0,0),W.lineWidth=1,W.lineTo(a,0),W.stroke(),W.closePath(),W.restore()}(a),await async function(e){W.save(),W.translate(24,e+58+36+15+25);const a="长按识别图中二维码",t="来自「Yshop商城」小程序";W.font="normal bold 16px sans-serif",W.fillStyle="#000000",W.fillText(a,0,0),W.font="normal normal 14px sans-serif",W.fillStyle="#8C8C8C",W.fillText(t,0,25);const s=await C(A.value);await B({x:e-48-50,y:-18,width:50,height:50,src:s}),W.restore()}(a),W.draw(!1,(()=>{!async function(){console.log("开始生成画布"),_({canvasId:"goods-canvas",success:async e=>{N.value=await C(e.tempFilePath),y()},fail:e=>{console.log(e),y()}})}()}))}catch(a){throw y(),console.dir(a),new Error(a)}}))}()}))},close:E});const N=t(null),q=m(),z=t(),W=s("goods-canvas",q);async function B(e={}){e={x:0,y:0,width:0,height:0,src:"",...e};const{path:a}=await S(e.src);W.drawImage(a,e.x,e.y,e.width,e.height)}async function H(){d({title:"保存中"});try{await j(N.value,$.value.storeName),E()}finally{y()}}return(e,a)=>{const t=g,s=w,d=k,v=l(o("uv-overlay"),R);return n(),i(v,{onTouchmove:a[1]||(a[1]=e=>{e.preventDefault()}),show:F.value,onClick:E},{default:r((()=>[$.value&&N.value?(n(),i(s,{key:0,class:"poster"},{default:r((()=>[c(s,{class:"poster-image",onClick:a[0]||(a[0]=u((()=>{}),["stop"]))},{default:r((()=>[c(t,{src:N.value},null,8,["src"])])),_:1}),c(s,{class:"button-group"},{default:r((()=>[c(s,{class:"button line-button",onClick:u(E,["stop"])},{default:r((()=>[f(" 取消 ")])),_:1},8,["onClick"]),c(s,{class:"button animation-button",onClick:u(H,["stop"])},{default:r((()=>[f(" 保存 ")])),_:1},8,["onClick"])])),_:1})])),_:1})):h("",!0),c(d,{"canvas-id":"goods-canvas",ref_key:"canvasRef",ref:z,style:{width:"654rpx",height:"1032rpx",margin:"20rpx auto",position:"absolute","z-index":"999",top:"-999px"},id:"goods-canvas"},null,512)])),_:1},8,["show"])}}},[["__scopeId","data-v-98d6c740"]]),B=$({__name:"Goods",emits:["share"],setup(e,{expose:a,emit:s}){const l=t(null),o=t("分享"),u=t(void 0);function h(){u.value=void 0,l.value.close()}function d(e){s("share",e,q.cloneDeep(u.value)),h()}a({open:function(e,a){a&&(e&&(o.value=e),u.value=a,l.value.show())}});const v=[{label:"微信好友",value:"wechat",icon:E},{label:"生成海报",value:"photo",icon:N}];return(e,a)=>{const t=g,s=I,u=P,p=w;return n(),i(A,{ref_key:"popupRef",ref:l,title:o.value},{rightOption:r((()=>[b("span")])),default:r((()=>[c(p,{class:"share-box flex flex-ai__center flex-jc__sa"},{default:r((()=>[(n(),T(S,null,C(v,(e=>(n(),T(S,{key:e.value},["wechat"===e.value?(n(),i(u,{key:0,"open-type":"share",onClick:a=>d(e),class:"item flex flex-column flex-jc__center flex-ai__center"},{default:r((()=>[c(t,{src:e.icon},null,8,["src"]),c(s,null,{default:r((()=>[f(j(e.label),1)])),_:2},1024)])),_:2},1032,["onClick"])):(n(),i(p,{key:1,onClick:a=>d(e),class:"item flex flex-column flex-jc__center flex-ai__center"},{default:r((()=>[c(t,{src:e.icon},null,8,["src"]),c(s,null,{default:r((()=>[f(j(e.label),1)])),_:2},1024)])),_:2},1032,["onClick"]))],64)))),64))])),_:1}),c(p,{class:"cancel",onClick:h},{default:r((()=>[f(" 取消 ")])),_:1})])),_:1},8,["title"])}}},[["__scopeId","data-v-7f00a598"]]);export{B as G,W as a,z as u};