2 lines
7.0 KiB
JavaScript
2 lines
7.0 KiB
JavaScript
import{R as e,S as l,T as a,U as t,r as s,p as o,u as n,c as i,d as r,b as f,w as c,t as d,e as u,v,x as p,z as m,M as h,O as _,f as g,V as b,i as x,g as y,A as T,h as P,W as k,j as S}from"./index-DrZc8biM.js";import{q as w,i as A}from"./index.DsJtDI4O.js";import{a as C}from"./datetime.CB5sbvg8.js";import{A as j}from"./AppIcon.M7CZvvJr.js";import{_ as q,n as I}from"./_plugin-vue_export-helper.2L545UbL.js";const N=(a=>(s,o=l())=>{!t&&e(a,s,o)})(a),R=q({__name:"reportView",setup(e){const l=s(!0),a=s(!1),t=s(null),q=s(null),R=s(""),L=`padding-top:${((null==(U=o)?void 0:U().statusBarHeight)||20)+10}px;`;var U;const $=e=>C(e),z=()=>{I("home")},B=e=>new Promise(l=>{const a=new Image;a.crossOrigin="anonymous",a.onload=()=>l(a),a.onerror=()=>l(null),a.src=e}),E=async()=>{var e,l,a;if(!t.value)return;S({title:"正在生成海报...",icon:"none"});const s=t.value,o=q.value,n=o.getContext("2d");o.width=750,o.height=1100,n.fillStyle="#ffffff",n.fillRect(0,0,750,1100);const i=n.createLinearGradient(0,0,750,300);i.addColorStop(0,"#07c160"),i.addColorStop(1,"#10b76f"),n.fillStyle=i,n.fillRect(0,0,750,300);const r=(null==(e=s.store)?void 0:e.name)||"宠伴生活馆",f=(null==(l=s.store)?void 0:l.phone)||"",c=(null==(a=s.store)?void 0:a.address)||"";if(n.fillStyle="#ffffff",n.font="bold 36px sans-serif",n.textAlign="center",n.fillText(r,375,70),n.font="20px sans-serif",n.globalAlpha=.7,n.fillText("宠物服务,让爱更专业",375,105),n.globalAlpha=1,f||c){n.font="18px sans-serif",n.globalAlpha=.85;const e=[f,c].filter(Boolean).join(" | ");n.fillText(e,375,138),n.globalAlpha=1}n.fillStyle="#333333",n.font="bold 36px sans-serif",n.fillText("服务报告",375,220),n.fillStyle="#f8f6f3",n.beginPath(),F(n,40,260,670,220,20),n.fill();const d=[["宠物名字",s.petName||"-"],["服务项目",s.serviceType||"-"],["服务时间",$(s.appointmentTime)||"-"],["服务技师",s.staffName||"-"]];let u=310;n.textAlign="left",d.forEach(([e,l])=>{n.fillStyle="#999999",n.font="22px sans-serif",n.fillText(e,80,u),n.fillStyle="#333333",n.font="bold 24px sans-serif",n.fillText(l,220,u),u+=48}),n.fillStyle="#f8f6f3",n.beginPath(),F(n,40,500,670,360,20),n.fill(),n.fillStyle="#333333",n.font="bold 24px sans-serif",n.textAlign="center",n.fillText("服务前后对比",375,545);const v=575,p=260,m=300;if(n.fillStyle="#e0e0e0",n.beginPath(),F(n,60,v,m,p,16),n.fill(),n.fillStyle="#999999",n.font="20px sans-serif",n.fillText("服务前",210,705),n.fillStyle="#e0e0e0",n.beginPath(),F(n,390,v,m,p,16),n.fill(),n.fillStyle="#999999",n.fillText("服务后",540,705),s.remark){n.fillStyle="#f8f6f3",n.beginPath(),F(n,40,880,670,100,20),n.fill(),n.fillStyle="#666666",n.font="22px sans-serif",n.textAlign="left";const e=s.remark;e.length>30?(n.fillText(e.substring(0,30),70,920),n.fillText(e.substring(30),70,955)):n.fillText(e,70,930)}n.fillStyle="#07c160",n.font="bold 22px sans-serif",n.textAlign="center",n.fillText(`— ${r} —`,375,1050);const h=s.beforePhoto?A(s.beforePhoto):null,_=s.afterPhoto?A(s.afterPhoto):null,[g,b]=await Promise.all([h?B(h):Promise.resolve(null),_?B(_):Promise.resolve(null)]);g&&(n.save(),n.beginPath(),F(n,60,v,m,p,16),n.clip(),n.drawImage(g,60,v,m,p),n.restore()),b&&(n.save(),n.beginPath(),F(n,390,v,m,p,16),n.clip(),n.drawImage(b,390,v,m,p),n.restore());const x=document.createElement("a");x.download=`服务报告_${s.petName||"宠物"}.png`,x.href=o.toDataURL("image/png"),x.click()};function F(e,l,a,t,s,o){e.beginPath(),e.moveTo(l+o,a),e.lineTo(l+t-o,a),e.quadraticCurveTo(l+t,a,l+t,a+o),e.lineTo(l+t,a+s-o),e.quadraticCurveTo(l+t,a+s,l+t-o,a+s),e.lineTo(l+o,a+s),e.quadraticCurveTo(l,a+s,l,a+s-o),e.lineTo(l,a+o),e.quadraticCurveTo(l,a,l+o,a),e.closePath()}return N(e=>{R.value=(null==e?void 0:e.token)||""}),n(()=>(async()=>{let e=R.value;if(e=new URLSearchParams(window.location.search).get("token"),!e)return a.value=!0,void(l.value=!1);h({title:"加载中..."});const s=await w(e);_(),l.value=!1,200===s.code?t.value=s.data:a.value=!0})()),(e,s)=>{var o,n,h;const _=g,S=T,w=b,C=x,I=k;return y(),i("div",{class:"report-view"},[l.value?(y(),i("div",{key:0,class:"loading-wrap"},[r(_,{class:"loading-spinner"}),f("span",null,"加载报告中...")])):a.value?(y(),i("div",{key:1,class:"not-found"},[r(_,{class:"empty"},{default:c(()=>[r(S,null,{default:c(()=>[P("报告不存在或链接已失效")]),_:1})]),_:1})])):t.value?(y(),i("div",{key:2,class:"report-content"},[f("div",{class:"brand-header",style:v(p(L))},[f("div",{class:"header-actions"},[r(_,{class:"header-btn",onClick:z},{default:c(()=>[r(j,{name:"home",size:15,color:"#ffffff"})]),_:1}),r(_,{class:"header-placeholder"})]),f("div",{class:"brand-logo"},d((null==(o=t.value.store)?void 0:o.name)||"宠伴生活馆"),1),f("div",{class:"brand-sub"},"宠物服务,让爱更专业"),f("div",{class:"brand-contact"},[(null==(n=t.value.store)?void 0:n.phone)?(y(),i("span",{key:0},"电话:"+d(t.value.store.phone),1)):u("",!0),(null==(h=t.value.store)?void 0:h.address)?(y(),i("span",{key:1},"地址:"+d(t.value.store.address),1)):u("",!0)])],4),f("div",{class:"report-title-wrap"},[f("div",{class:"report-title"},"服务报告"),f("div",{class:"report-time"},d($(t.value.appointmentTime)),1)]),r(_,{class:"van-cell-group service-info"},{default:c(()=>[r(_,{class:"van-cell"},{default:c(()=>[r(_,{class:"van-cell__title"},{default:c(()=>[P("宠物名字")]),_:1}),r(_,{class:"van-cell__value"},{default:c(()=>[P(d(t.value.petName),1)]),_:1})]),_:1}),r(_,{class:"van-cell"},{default:c(()=>[r(_,{class:"van-cell__title"},{default:c(()=>[P("服务项目")]),_:1}),r(_,{class:"van-cell__value"},{default:c(()=>[P(d(t.value.serviceType),1)]),_:1})]),_:1}),r(_,{class:"van-cell"},{default:c(()=>[r(_,{class:"van-cell__title"},{default:c(()=>[P("服务时间")]),_:1}),r(_,{class:"van-cell__value"},{default:c(()=>[P(d($(t.value.appointmentTime)),1)]),_:1})]),_:1}),r(_,{class:"van-cell"},{default:c(()=>[r(_,{class:"van-cell__title"},{default:c(()=>[P("服务技师")]),_:1}),r(_,{class:"van-cell__value"},{default:c(()=>[P(d(t.value.staffName||"-"),1)]),_:1})]),_:1})]),_:1}),f("div",{class:"photo-section section-card"},[f("div",{class:"section-label"},"服务前后对比"),f("div",{class:"photo-grid"},[t.value.beforePhoto?(y(),m(w,{key:0,src:p(A)(t.value.beforePhoto),class:"photo-image",mode:"aspectFill"},null,8,["src"])):(y(),m(_,{key:1,class:"photo-empty"},{default:c(()=>[P("暂无照片")]),_:1})),t.value.afterPhoto?(y(),m(w,{key:2,src:p(A)(t.value.afterPhoto),class:"photo-image",mode:"aspectFill"},null,8,["src"])):(y(),m(_,{key:3,class:"photo-empty"},{default:c(()=>[P("暂无照片")]),_:1}))])]),f("div",{class:"remark-section section-card"},[f("div",{class:"section-label"},"备注"),f("div",{class:"remark-content"},d(t.value.remark||"暂无备注"),1)]),f("div",{class:"action-section"},[r(C,{class:"van-button van-button--primary van-button--round van-button--block",onClick:E},{default:c(()=>[P("生成图片分享朋友圈")]),_:1})])])):u("",!0),r(I,{ref_key:"posterCanvas",ref:q,style:{position:"fixed",top:"-9999px",left:"-9999px"}},null,512)])}}},[["__scopeId","data-v-3d43fb47"]]);export{R as default};
|