mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-11-05 09:20:40 +00:00
2 lines
4.1 KiB
JavaScript
2 lines
4.1 KiB
JavaScript
import{_ as a,A as t,C as e,r as s,G as n,aG as i,aH as o,b as l,c,w as r,g as u,aI as d,d as g,F as f,p as v,h as m,n as p,t as w,j as h,l as b,a0 as _,Z as x,a$ as k,am as y,aP as D,i as I,bn as F,bo as z,bp as C,ax as S}from"./index-zpxrlmYx.js";import{_ as T}from"./zb-code.COW-GB7O.js";const P=a({__name:"giftModal",props:{giftData:{type:Object},aleartStatus:{type:Boolean,default:!1}},emits:["close","shareH5"],setup(a,{emit:P}){const $=a,j=P,A=t(),{uid:M}=e(A),R=S();const q=s({}),G=y+"/statics/images/canvas-bag.png",H=y+"/statics/images/gift-border.png",L=y+"/statics/images/gift-bag.png",U=s(!1),B=s(""),O=s(""),W=s(!1),Z=s("");function E(a){x.isWeixin(),O.value=a}function J(){W.value=!1,j("close",!1)}function K(a){if(!a)return"";if(/^https?:\/\//i.test(a))try{const t=new URL(a,window.location.origin);if(t.origin===window.location.origin)return t.href;const e=new URL(y).origin;if(t.origin===e)return t.pathname+t.search}catch(t){return a}return a}async function N(){const a=await function(a=3e3){return new Promise(t=>{if(O.value)return void t(O.value);const e=Date.now(),s=setInterval(()=>{(O.value||Date.now()-e>=a)&&(clearInterval(s),t(O.value||""))},50)})}(),t=[K(G),K(H),K($.giftData.image||""),K($.giftData.avatar||""),K(a)];(function(a,t,e){const s=F("posterCanvas",R);return new Promise((n,i)=>{z({src:a[0],fail:a=>i(a),success:()=>{try{const o=375,l=579;s.drawImage(a[0],0,0,o,l),s.save();const c=22,r=t||"",u=I.t("赠送给好友一份礼物"),d=14,g=14,f=10,v=a[3],m=!!v;s.setFontSize(d);const p=s.measureText(u).width,w=r?s.measureText(r).width:0,h=(o-((m?c+f:0)+(r?w+f:0)+p))/2,b=77;let _=h;if(m){const a=h+c/2,t=b+c/2;s.save(),s.beginPath(),s.arc(a,t,c/2,0,2*Math.PI),s.clip(),s.drawImage(v,h,b,c,c),s.restore(),_+=c+f}r&&(s.setFontSize(g),s.setTextAlign("left"),s.fillText(r,_,b+c-5),_+=w+f),s.setFontSize(d),s.setTextAlign("left"),s.fillText(u,_,b+c-5);const x=225,k=(o-x)/2,y=b+c+31;s.drawImage(a[1],k,y,x,x);const D=10,F=k+D,z=y+D+11,S=x-2*D;s.drawImage(a[2],F,z,S,S-10);const T=function(a,t){return a.length>t?a.substring(0,t)+"...":a}(e||"",20);if(s.setFontSize(14),s.setTextAlign("center"),s.fillText(T,o/2,y+x+26),a[4]){const t=100,e=(o-t)/2,n=y+x+63;s.drawImage(a[4],e,n,t,t)}s.draw(!1,()=>{C({canvasId:"posterCanvas",width:o,height:l,success:a=>{n(a.tempFilePath)},fail:a=>{i(a)}},R)})}catch(o){i(o)}}})})})(t,$.giftData.nickname,$.giftData.title).then(a=>{Z.value=a,W.value=!0}).catch(a=>{console.error("海报生成失败:",a),D({title:I.t("海报生成失败"),icon:"none"})})}return n(()=>$.aleartStatus,a=>{a?B.value=window.location.origin+"/pages/goods/receive_gift/index?id="+$.giftData.id+"&spid="+M.value:(q.value={},W.value=!1,Z.value="")}),(t,e)=>{const s=d,n=v,x=m,y=h,D=i(o("zb-code"),T);return a.aleartStatus?(l(),c(x,{key:0,class:"aleart",style:_("background-image: url("+L+");")},{default:r(()=>[u(s,{"canvas-id":"posterCanvas",class:"poster-canvas"}),W.value?b("",!0):(l(),g(f,{key:0},[u(n,{class:"iconfont icon-cha2 close",onClick:J}),u(x,{class:"from"},{default:r(()=>[p(w(t.$t("赠送给好友一份礼物")),1)]),_:1}),u(x,{class:"message"},{default:r(()=>[p(w(a.giftData.message),1)]),_:1}),u(x,{class:"aleart-body"},{default:r(()=>[u(y,{class:"goods-img",src:a.giftData.image,mode:"aspectFill"},null,8,["src"])]),_:1}),u(x,{class:"title line1"},{default:r(()=>[p(w(t.$t(a.giftData.title)),1)]),_:1}),u(x,{class:"qrcode-hidden"},{default:r(()=>[u(D,{ref:"qrcode",show:U.value,cid:"1",val:B.value,size:200,unit:"px",background:"#FFF",foreground:"#000",pdground:"#000",icon:"",iconSize:40,onval:true,loadMake:true,onResult:E},null,8,["show","val"])]),_:1}),u(x,{class:"btn",onClick:e[0]||(e[0]=a=>{k({data:B.value})})},{default:r(()=>[p(w(t.$t("复制礼物链接")),1)]),_:1}),u(x,{class:"btn-clear",onClick:e[1]||(e[1]=a=>N())},{default:r(()=>[p(w(t.$t("保存海报")),1)]),_:1})],64)),W.value?(l(),g(f,{key:1},[u(n,{class:"iconfont icon-cha2 close",onClick:J}),u(y,{class:"poster-img",src:Z.value},null,8,["src"]),u(x,{class:"keep"},{default:r(()=>[p(w(t.$t("长按图片可以保存到手机")),1)]),_:1})],64)):b("",!0)]),_:1},8,["style"])):b("",!0)}}},[["__scopeId","data-v-5c98ded7"]]);export{P as g};
|