generated from liutk/owl-admin-base
main
commit
85c7a0755a
|
|
@ -40,7 +40,7 @@ class Kernel extends HttpKernel
|
|||
|
||||
'api' => [
|
||||
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
|
||||
// \App\Http\Middleware\CustomThrottle::class.':api',
|
||||
\App\Http\Middleware\CustomThrottle::class.':api',
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"date": "2026-03-08T08:50:46.080Z",
|
||||
"preset": "node-server",
|
||||
"framework": {
|
||||
"name": "nuxt",
|
||||
"version": "4.3.1"
|
||||
},
|
||||
"versions": {
|
||||
"nitro": "2.13.1"
|
||||
},
|
||||
"commands": {
|
||||
"preview": "node server/index.mjs"
|
||||
},
|
||||
"config": {}
|
||||
}
|
||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
|||
import{d as s,c as o,b as n,t as c,o as a}from"./BVoAI2xn.js";const p={class:"text-center"},i={class:"custom-title inline-block text-[18px] sm:text-[24px] md:text-[28px] lg:text-[32px] xl:text-[42px] text-[#333333] bg-[url('/images/首页/标题背景色块.png')] bg-no-repeat bg-[length:100%_0.22em] [background-position:50%_80%]"},_=s({__name:"CustomTitle",props:{title:{}},setup(t){const e=t;return(l,r)=>(a(),o("div",p,[n("span",i,c(e.title),1)]))}}),m=Object.assign(_,{__name:"CustomTitle"});export{m as _};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{_ as B}from"./BsChYa3B.js";import{_ as D}from"./vMQG2-nS.js";import{u as R}from"./CbPrn0tb.js";import{d as S,E,w as f,S as H,c as o,a as v,I,f as c,b as t,t as d,F as h,v as y,r as q,o as r,H as L,h as w}from"./BVoAI2xn.js";import{u as b}from"./RFvW8Sgv.js";import"./C584n0hD.js";const N={class:"w-full"},V={class:"w-full pb-[20px] sm:pb-[24px] md:pb-[30px] lg:pb-[38px] xl:pb-[45px]"},$={class:"w-full layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px]"},j={class:"flex flex-col items-center w-full"},z={class:"mt-[18px] sm:mt-[18px] md:mt-[20px] lg:mt-[22px] xl:mt-[24px] max-w-[800px] text-center text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[20px] text-[#333333] leading-relaxed"},M={class:"w-full mt-[28px] sm:mt-[32px] md:mt-[36px] lg:mt-[40px] xl:mt-[44px] flex flex-col items-center gap-[40px] sm:gap-[36px] md:gap-[40px] lg:gap-[44px] xl:gap-[48px]"},U={class:"w-full md:w-1/2"},W=["src","alt"],G={class:"flex items-start w-full md:w-1/2"},J={class:"px-[18px] sm:px-[20px] md:px-[24px] lg:px-[28px] xl:px-[32px] py-[18px] sm:py-[20px] md:py-[22px] lg:py-[24px] xl:py-[26px]"},K={class:"text-left text-[#333333] font-bold text-[18px] sm:text-[18px] md:text-[20px] lg:text-[22px] xl:text-[24px]"},O={class:"mt-[10px] flex flex-wrap gap-[8px] sm:gap-[6px] md:gap-[8px] lg:gap-[10px] xl:gap-[12px] text-[12px] sm:text-[12px] md:text-[13px] lg:text-[14px] xl:text-[14px] text-[#2D75B5]"},P={class:"mt-[12px] text-[#333333] text-[12px] sm:text-[13px] md:text-[14px] lg:text-[15px] xl:text-[16px] leading-relaxed"},Q={class:"mt-[14px]"},X=["onClick"],pt=S({__name:"index",async setup(Y){let p,n;const A=E(),u=R(),a=q(""),{data:F}=([p,n]=f(async()=>b("case-study-tags",async()=>await u.get("/api/case_study_tags"))),p=await p,n(),p),i=w(()=>{const e=F.value;return!e||e.code!==200||!Array.isArray(e.data)?[]:e.data.map(x=>({id:String(x.id),name:x.name}))});H(()=>{if(!a.value&&i.value.length>0){const e=i.value[0];e&&(a.value=e.id)}});const{data:k}=([p,n]=f(async()=>b(()=>`case-studies-${a.value||"empty"}`,async()=>a.value?await u.get("/api/case_studies",{params:{t_ids:a.value}}):null,{watch:[a]})),p=await p,n(),p),_=w(()=>{const e="我们深耕行业,已累计承接各类环境服务项目35+,与众多行业标杆客户建立起长期信赖的合作关系。以下是我们按业务领域分类的部分实践成果。",x=k.value,m=x?.code===200&&Array.isArray(x.data)?x.data:[];return{title:e,list:m.map(l=>({id:String(l.id),title:l.title,keyWords:Array.isArray(l.tags)?l.tags.map(s=>s.name):[],desc:l.description,url:l.cover}))}}),T=e=>{A.push(`/service/${e.id}`)};return(e,x)=>{const m=B,l=D;return r(),o("div",N,[v(m,{title:"服务案例",img:"/images/服务案例/服务案例.png"}),v(l,{tabs:c(i),activeTab:c(a),"onUpdate:activeTab":x[0]||(x[0]=s=>I(a)?a.value=s:null),title:"服务案例"},null,8,["tabs","activeTab"]),t("div",V,[t("div",$,[t("div",j,[t("p",z,d(c(_).title),1)]),t("div",M,[(r(!0),o(h,null,y(c(_).list,(s,C)=>(r(),o("div",{key:s.id,class:"w-full bg-[#FFFFFF] overflow-hidden transition-all duration-300 ease-out hover:-translate-y-1 hover:shadow-[0_12px_24px_rgba(0,0,0,0.12)]"},[t("div",{class:L(["flex flex-col md:flex-row",{"md:flex-row-reverse":C%2===1}])},[t("div",U,[t("img",{class:"w-full h-[220px] sm:h-[240px] md:h-[100%] object-cover",src:s.url,alt:s.title},null,8,W)]),t("div",G,[t("div",J,[t("h2",K,d(s.title),1),t("div",O,[(r(!0),o(h,null,y(s.keyWords,g=>(r(),o("span",{key:g}," #"+d(g),1))),128))]),t("p",P,d(s.desc),1),t("div",Q,[t("button",{onClick:()=>T(s),class:"px-[18px] sm:px-[18px] md:px-[20px] lg:px-[22px] xl:px-[24px] py-[6px] sm:py-[6px] md:py-[8px] lg:py-[8px] xl:py-[10px] border border-[#1364AF] rounded-full text-[12px] sm:text-[12px] md:text-[13px] lg:text-[14px] xl:text-[14px] text-[#2D75B5] bg-white hover:bg-[#1364AF] hover:text-white transition-colors duration-300"}," 了解更多 >> ",8,X)])])])],2)]))),128))])])])])}}});export{pt as default};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{_ as b}from"./BsChYa3B.js";import{_ as v}from"./C584n0hD.js";import{u as w}from"./CbPrn0tb.js";import{d as y,u as k,w as D,o as l,c as a,a as F,b as s,e as A,t as n,f as e,F as N,g as x,h as d}from"./BVoAI2xn.js";import{u as S}from"./RFvW8Sgv.js";import{u as V}from"./P_oyKTOd.js";const j={class:"w-full"},B={class:"hidden sm:flex sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] flex-row items-center justify-center bg-[#F2F2F2]"},C={class:"flex flex-row justify-end items-center w-full h-full layout"},H={class:"h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex flex-row items-center gap-[8px]"},M={class:"w-full bg-white"},R={class:"layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px] pb-[40px] sm:pb-[48px] md:pb-[56px] lg:pb-[64px] xl:pb-[72px]"},T={class:"text-[20px] sm:text-[22px] md:text-[24px] lg:text-[26px] xl:text-[28px] text-[#333333] font-bold"},q={class:"mt-[12px] sm:mt-[14px] md:mt-[16px] text-[12px] sm:text-[13px] md:text-[14px] text-[#999999]"},I=["src","alt"],L=["innerHTML"],$={key:1,class:"text-[#666666]"},Q=y({__name:"[id]",async setup(z){let p,i;const m=k(),u=w(),r=d(()=>String(m.params.id??"")),{data:_,pending:f}=([p,i]=D(async()=>S(()=>`news-detail-${r.value}`,async()=>r.value?await u.get(`/api/news/${r.value}`):null,{watch:[r]})),p=await p,i(),p),t=d(()=>{const o=_.value;return o?.code===200?o.data:null});function h(o){return o?o.split(" ")[0]??o:""}return V({title:()=>t.value?.title??"企业资讯",description:()=>t.value?.description??"",ogTitle:()=>t.value?.title??"",ogDescription:()=>t.value?.description??"",ogImage:()=>t.value?.cover??void 0}),(o,c)=>{const g=b;return l(),a("div",j,[F(g,{title:"企业资讯",img:"/images/企业资讯/企业资讯.png"}),s("div",B,[s("div",C,[s("div",H,[c[0]||(c[0]=A('<img class="w-[14px] h-[14px]" src="'+v+'" alt=""><a href="/home" class="hover:text-[#0A357D] transition-colors">首页</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><a href="/news" class="hover:text-[#0A357D] transition-colors">企业资讯</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span>',5)),s("span",null,n(e(t)?.title??""),1)])])]),s("div",M,[s("div",R,[e(t)?(l(),a(N,{key:0},[s("h1",T,n(e(t).title),1),s("div",q," 发布时间:"+n(h(e(t).published_at)),1),e(t).cover?(l(),a("img",{key:0,src:e(t).cover,alt:e(t).title,class:"w-full mt-[20px] sm:mt-[24px] md:mt-[28px] h-[220px] sm:h-[260px] md:h-[300px] lg:h-[340px] xl:h-[380px] object-cover rounded-[4px]"},null,8,I)):x("",!0),e(t).content?(l(),a("div",{key:1,class:"mt-[24px] sm:mt-[28px] md:mt-[32px] w-full text-left text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] text-[#333333] leading-relaxed [&_img]:max-w-full [&_img]:h-auto [&_img]:block [&_img]:my-[12px] [&_p]:mb-[12px]",innerHTML:e(t).content},null,8,L)):x("",!0)],64)):e(f)?x("",!0):(l(),a("p",$,"暂无内容"))])])])}}});export{Q as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{d as s,c as a,b as t,t as l,o as n}from"./BVoAI2xn.js";const o={class:"w-full relative"},c={class:"w-full min-w-full"},i=["src"],_={class:"absolute inset-0 flex items-center"},m={class:"layout w-full"},d={class:"animate__animated animate__backInRight block text-[24px] sm:text-[32px] md:text-[40px] lg:text-[48px] xl:text-[60px] text-[#0A357D]"},r=s({__name:"HeaderImage",props:{title:{type:String,default:""},img:{type:String,default:""}},setup(e){return(x,p)=>(n(),a("div",o,[t("div",c,[t("img",{class:"w-full h-auto block",src:e.img,alt:""},null,8,i)]),t("div",_,[t("div",m,[t("span",d,l(e.title),1)])])]))}}),f=Object.assign(r,{__name:"HeaderImage"});export{f as _};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{y as s}from"./BVoAI2xn.js";const i=s("/images/关于我们/首页ico.png");export{i as _};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{K as t}from"./BVoAI2xn.js";function p(){return t().$request}export{p as u};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{_ as w}from"./BsChYa3B.js";import{_ as A}from"./2HdClNfd.js";import{_ as I}from"./C584n0hD.js";import{u as T}from"./CbPrn0tb.js";import{d as k,u as D,w as C,c as d,a as u,f as o,b as t,t as m,g as L,o as _,h as p}from"./BVoAI2xn.js";import{u as E}from"./RFvW8Sgv.js";import{u as F}from"./P_oyKTOd.js";const N={class:"w-full"},P={class:"hidden sm:flex sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] flex-row items-center justify-center bg-[#F2F2F2]"},S={class:"flex flex-row justify-end items-center w-full h-full layout"},q={class:"h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex flex-row items-center gap-[8px]"},B=["href"],H={class:"w-full bg-white"},M={class:"layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px] pb-[40px] sm:pb-[48px] md:pb-[56px] lg:pb-[64px] xl:pb-[72px]"},R={class:"flex flex-col items-center w-full"},V={class:"mt-[24px] sm:mt-[28px] md:mt-[32px] lg:mt-[36px] xl:mt-[40px] flex flex-col items-center gap-[24px] sm:gap-[28px] md:gap-[32px] lg:gap-[36px] xl:gap-[40px]"},$=["innerHTML"],W=k({__name:"[id]",async setup(j){let a,x;const c=D(),f=T(),r=p(()=>String(c.params.id||"")),n=p(()=>(String(c.query.type||"")==="case_study","case_study")),g={case_study:s=>`/api/case_studies/${s}`},v={case_study:{headerTitle:"服务案例",headerImg:"/images/服务案例/服务案例.png",listLabel:"服务案例",listPath:"/service"}},i=p(()=>v[n.value]),{data:b}=([a,x]=C(async()=>E(()=>`detail-${n.value}-${r.value}`,async()=>{if(!r.value)return null;const s=g[n.value](r.value);return await f.get(s)},{watch:[r,n]})),a=await a,x(),a),e=p(()=>{const s=b.value;return s?.code===200?s.data:null});return F({title:()=>e.value?.title||"详情",description:()=>e.value?.description||"",ogTitle:()=>e.value?.title||"",ogDescription:()=>e.value?.description||"",ogImage:()=>e.value?.cover||void 0}),(s,l)=>{const h=w,y=A;return _(),d("div",N,[u(h,{title:o(i).headerTitle,img:o(i).headerImg},null,8,["title","img"]),t("div",P,[t("div",S,[t("div",q,[l[0]||(l[0]=t("img",{class:"w-[14px] h-[14px]",src:I,alt:""},null,-1)),l[1]||(l[1]=t("a",{href:"/home",class:"hover:text-[#0A357D] transition-colors"},"首页",-1)),l[2]||(l[2]=t("span",{class:"inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"},null,-1)),t("a",{href:o(i).listPath,class:"hover:text-[#0A357D] transition-colors"},m(o(i).listLabel),9,B),l[3]||(l[3]=t("span",{class:"inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"},null,-1)),t("span",null,m(o(e)?.title||""),1)])])]),t("div",H,[t("div",M,[t("div",R,[u(y,{title:o(e)?.title||""},null,8,["title"])]),t("div",V,[o(e)?.content?(_(),d("div",{key:0,class:"w-full text-left text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#333333] leading-relaxed [&_img]:max-w-full [&_img]:h-auto [&_img]:block [&_img]:my-[12px] [&_p]:mb-[12px]",innerHTML:o(e).content},null,8,$)):L("",!0)])])])])}}});export{W as default};
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
import{_ as j}from"./BsChYa3B.js";import{_ as E}from"./vMQG2-nS.js";import{_ as L,a as P}from"./BnW1nGTP.js";import{_ as R}from"./2HdClNfd.js";import{d as T,o as m,c as d,b as t,t as f,e as S,y as q,n as V,w as F,a as c,I as N,f as p,F as A,v as k,r as o,x as U,_ as O}from"./BVoAI2xn.js";import{u as Q}from"./CbPrn0tb.js";import"./C584n0hD.js";const G={class:"flex flex-col items-start shrink-0 w-[189px] sm:w-[220px] md:w-[270px] lg:w-[320px] xl:w-[339px]"},J={class:"flex"},K={class:"flex flex-col items-center ml-[6px] sm:ml-[8px] md:ml-[10px] lg:ml-[10px] xl:ml-[10px]"},M={class:"text-[18px] sm:text-[22px] md:text-[28px] lg:text-[34px] xl:text-[38px] font-bold text-[#336DF6] leading-none"},W={class:"bg-[#F8FBFF] rounded-[5px] sm:rounded-[10px] text-[#666666] w-[170px] h-[67px] p-[16px] sm:w-[220px] sm:h-[87px] sm:p-[20px] md:w-[270px] md:h-[107px] md:p-[24px] lg:w-[320px] lg:h-[126px] lg:p-[32px] xl:w-[339px] xl:h-[134px] xl:p-[40px] -mt-[24px] sm:-mt-[36px] md:-mt-[44px] lg:-mt-[54px] xl:-mt-[60px]"},X={class:"ml-[20px] sm:ml-[24px] md:ml-[26px] lg:ml-[28px] xl:ml-[30px] text-[10px] sm:text-[12px] md:text-[14px] lg:text-[15px] xl:text-[16px] whitespace-pre-line leading-relaxed"},Y=T({__name:"TimeItem",props:{year:{},content:{}},setup(g){return(i,s)=>(m(),d("div",G,[t("div",J,[t("div",K,[t("div",M,f(g.year),1),s[0]||(s[0]=S('<div class="mt-[6px] sm:mt-[8px] w-[15px] h-[15px] sm:w-[18px] sm:h-[18px] md:w-[22px] md:h-[22px] lg:w-[28px] lg:h-[28px] xl:w-[38px] xl:h-[38px] shrink-0 rounded-full bg-[#336DF6] border-[4px] sm:border-[4px] md:border-4 xl:border-[8px] border-[#DDEAFF] relative z-10"></div><div class="-ml-[1px] z-[1]"><div class="w-[1px] xl:w-[2px] shrink-0 h-[40px] sm:h-[48px] md:h-[60px] lg:h-[68px] xl:h-[76px] bg-[#336DF6]"></div></div><div class="-ml-[1px] z-[1]"><div class="w-[8px] h-[8px] sm:w-[8px] sm:h-[8px] md:w-[9px] md:h-[9px] lg:w-[10px] lg:h-[10px] xl:w-[12px] xl:h-[12px] rounded-full border-[1px] border-[#336DF6] bg-white shrink-0"></div></div>',3))])]),t("div",W,[t("div",X,f(g.content),1)])]))}}),Z=Object.assign(Y,{__name:"TimeItem"}),tt=q("/images/关于我们/culbg1.png"),et={class:"w-full"},xt={class:"w-full pb-[40px] xl:pb-[30px]"},lt={id:"companyProfile",class:"scroll-mt-20 xl:scroll-mt-[220px] w-full mt-[39px]"},st={id:"corporateCulture",class:"sm:scroll-mt-20 xl:scroll-mt-[220px] w-full relative overflow-auto pt-[24px] pb-[147px] sm:pt-[27px] sm:pb-[40px] md:pb-[60px] lg:pb-[80px] xl:pt-[69px] xl:pb-[8px] lg:flex lg:flex-col lg:items-center xl:flex xl:flex-row xl:justify-center bg-[url('/images/关于我们/企业文化背景.png')] bg-no-repeat bg-center bg-cover"},pt={class:"flex flex-col z-[2] layout w-full"},ot={class:"flex flex-col xl:flex-row xl:flex-wrap gap-[24px] sm:gap-[26px] lg:gap-[28px] xl:gap-[18px] mt-[34px] sm:mt-[27px] lg:mt-[32px] xl:mt-[69px] w-full"},at={class:"text-[14px] sm:text-[16px] md:text-[18px] lg:text-[20px] xl:text-[24px] text-[#FFFFFF] font-bold tracking-wide"},nt={class:"mt-[8px] sm:mt-[10px] md:mt-[12px] lg:mt-[14px] xl:mt-[15px] text-[12px] sm:text-[13px] md:text-[14px] lg:text-[15px] xl:text-[16px] text-[#FFFFFF] tracking-wide leading-relaxed"},mt={id:"qualificationsAndHonors",class:"w-full scroll-mt-20 xl:scroll-mt-[220px]"},it={id:"developmentHistory",class:"w-full scroll-mt-20 xl:scroll-mt-[220px]"},rt={class:"flex flex-col items-center w-full"},ct={class:"development-timeline-scroll relative w-full overflow-x-auto overflow-y-visible mt-[20px] sm:mt-[24px] md:mt-[28px] lg:mt-[32px] xl:mt-[40px] pt-[12px] pb-[24px] sm:pt-[14px] sm:pb-[24px] md:pt-[16px] md:pb-[28px] lg:pt-[18px] lg:pb-[28px] xl:pt-[20px] xl:pb-[32px]"},dt={class:"inline-flex relative justify-center w-auto min-w-full pl-[20px] sm:pl-[0]"},_t={class:"flex flex-row items-stretch justify-start sm:justify-center gap-[20px] sm:gap-[20px] md:gap-[24px] lg:gap-[32px] xl:gap-[40px]"},ut=T({__name:"index",async setup(g){let i,s;const v=o([]),_=o("companyProfile"),B=o(`广西富琳清洁服务有限公司成立于 2016 年 6 月 28 日,注册资金 500 万元,是一家具有独立法人资格的综合性专业服务公司。公司核心业务集清洁服务、园林绿化养护、城乡市政道路清扫、消杀 “除四害” 服务、城市园林绿化工程、城市公园清洁等于一体,并延伸提供地毯清洗、地面打蜡、晶面处理、大理石翻新等专项服务,以及城市生活垃圾经营性收集、运输、处理的全链条解决方案。
|
||||
公司实力与专业资质备受认可,拥有中华人民共和国园林绿化养护服务企业资质 “国家一级” 和环卫清洁服务行业登记资质 “国家一级”,并获评企业信用评价 AAA 级信用企业。公司管理制度完善,作业经验丰富,专业技术全面,督察管理严格,服务质量过硬。目前拥有员工 1000 余人,其中本科、大专学历管理人员 6 人,持有物业管理、园艺师、安全工程师等专业资质的管理人员 8 人,具备 8 年以上绿化、清洁专业管理经验的人员 30 人。截至 2025 年,公司合约管理面积已突破 950 万平方米,全年营业收入达 2600 万元。
|
||||
历经多年发展,公司服务网络已遍及广西、湖南、广东、重庆等多个省市,主要服务于住宅小区、商务写字楼、市政道路及企业工厂等各类公共场所,现已成为广西区域同行业中具有规范化、专业化水平的知名清洁、绿化、消杀服务商。我们始终秉持 “专业铸就品质,细节决定成败” 的服务理念,凭借完善的作业制度和严格的质量督查体系,通过规范化管理与高效团队协作,致力于成为值得客户长期信赖的环境服务合作伙伴。`),y=o([]),u=o([]);v.value=[{name:"企业简介",id:"companyProfile"},{name:"企业文化",id:"corporateCulture"},{name:"资质荣誉",id:"qualificationsAndHonors"},{name:"团队实力",id:"teamStrength"},{name:"发展历程",id:"developmentHistory"}];function H(x){const e=document.getElementById(x);e&&e.scrollIntoView({behavior:"smooth",block:"start"})}V(_,x=>{H(x)},{immediate:!1});const w=o([]),h=o({}),b=Q();async function I(){try{const x=await b.get("/api/honor_cates");if(x?.code!==200||!Array.isArray(x.data)||x.data.length===0)return;w.value=x.data;const e={};for(const a of x.data)try{const r=await b.get("/api/honors",{params:{category:a.id}});r?.code===200&&Array.isArray(r.data)?e[a.id]=r.data.map(n=>({name:n.title,url:n.cover,year:n.awarded_date?String(n.awarded_date).slice(0,4):""})):e[a.id]=[]}catch{e[a.id]=[]}h.value=e}catch{w.value=[],h.value={}}}async function z(){try{const x=await b.get("/api/timelines");if(x?.code!==200||!Array.isArray(x.data)){u.value=[];return}u.value=x.data.map(e=>({year:e.title||(e.awarded_date?String(e.awarded_date).slice(0,4):""),content:e.description||""}))}catch{u.value=[]}}return[i,s]=F(()=>I()),await i,s(),[i,s]=F(()=>z()),await i,s(),y.value=[{name:"企业愿景",text:"成为西南地区领先、面向全国的综合环境服务标杆企业。"},{name:"企业使命",text:"以专业服务守护绿水青山,用绿色理念赋能美丽城乡。"},{name:"核心价值观",text:"专业专注、诚信尽责、精益求精、协作共赢、绿色发展。"},{name:"企业精神",text:"敬业、务实、诚信、创新。"},{name:"服务理念",text:"专业铸就品质,细节决定成败。"},{name:"管理理念",text:"制度为纲,人才为本。"}],(x,e)=>{const a=j,r=E,n=L,C=P,D=R,$=Z;return m(),d("div",et,[c(a,{title:"关于我们",img:"/images/关于我们/图层-2.png"}),c(r,{tabs:p(v),activeTab:p(_),"onUpdate:activeTab":e[0]||(e[0]=l=>N(_)?_.value=l:null),title:"关于我们"},null,8,["tabs","activeTab"]),t("div",xt,[t("section",lt,[c(n,{text:p(B),"is-show-more":!1,"body-size-class":"text-[12px] sm:text-[14px] md:text-[15px] lg:text-[16px] xl:text-[16px]"},null,8,["text"])]),t("section",st,[t("div",pt,[e[1]||(e[1]=t("span",{class:"text-[21px] sm:text-[26px] md:text-[32px] lg:text-[38px] xl:text-[42px] text-[#FFFFFF] font-bold tracking-wide sm:tracking-wider"}," 企业文化 ",-1)),t("div",ot,[(m(!0),d(A,null,k(p(y),l=>(m(),d("div",{class:"w-full xl:flex-1 xl:min-w-0 pt-[10px] pb-[10px] pl-[12px] pr-[12px] sm:pt-[14px] sm:pb-[14px] sm:px-[16px] md:pt-[16px] md:pb-[16px] md:px-[18px] lg:pt-[18px] lg:pb-[20px] lg:px-[20px] xl:pt-[15px] xl:pb-[18px] xl:px-[20px] border-t border-[#3784B0] flex flex-col min-h-[65px] sm:min-h-[100px] md:min-h-[140px] lg:min-h-[200px] xl:min-h-[520px] bg-[#3784B0] bg-opacity-[0.2] transition-all duration-300 ease-in-out hover:shadow-lg",key:l.name},[t("span",at,f(l.name),1),t("span",nt,f(l.text),1)]))),128))])]),e[2]||(e[2]=t("div",{class:"absolute bottom-0 left-0 w-full overflow-hidden z-[3] pointer-events-none"},[t("img",{class:"w-[200%] max-w-none -translate-x-[25%] sm:w-full sm:translate-x-0 object-cover object-bottom",src:tt,alt:""})],-1))]),t("section",mt,[c(C,{"is-timeline":!0,"tab-list":p(w),"honors-by-category":p(h),"full-width":!0},null,8,["tab-list","honors-by-category"])]),t("section",it,[t("div",rt,[c(D,{title:"发展历程"}),t("div",ct,[t("div",dt,[e[3]||(e[3]=t("div",{class:"absolute top-[32px] sm:top-[40px] md:top-[46px] lg:top-[56px] xl:top-[66px] left-0 right-0 w-full h-[1px] bg-[#EEF5FF] z-[5] z-[0]"},null,-1)),t("div",_t,[(m(!0),d(A,null,k(p(u),l=>(m(),U($,{key:l.year+l.content,year:l.year,content:l.content},null,8,["year","content"]))),128))])])])])])])])}}}),Ft=O(ut,[["__scopeId","data-v-2145db32"]]);export{Ft as default};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{_ as w}from"./BsChYa3B.js";import{_ as A}from"./2HdClNfd.js";import{_ as I}from"./C584n0hD.js";import{u as T}from"./CbPrn0tb.js";import{d as k,u as D,w as C,c as d,a as u,f as o,b as t,t as m,g as L,o as _,h as p}from"./BVoAI2xn.js";import{u as E}from"./RFvW8Sgv.js";import{u as F}from"./P_oyKTOd.js";const N={class:"w-full"},P={class:"hidden sm:flex sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] flex-row items-center justify-center bg-[#F2F2F2]"},S={class:"flex flex-row justify-end items-center w-full h-full layout"},q={class:"h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex flex-row items-center gap-[8px]"},B=["href"],H={class:"w-full bg-white"},M={class:"layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px] pb-[40px] sm:pb-[48px] md:pb-[56px] lg:pb-[64px] xl:pb-[72px]"},R={class:"flex flex-col items-center w-full"},V={class:"mt-[24px] sm:mt-[28px] md:mt-[32px] lg:mt-[36px] xl:mt-[40px] flex flex-col items-center gap-[24px] sm:gap-[28px] md:gap-[32px] lg:gap-[36px] xl:gap-[40px]"},$=["innerHTML"],W=k({__name:"[id]",async setup(j){let a,x;const c=D(),f=T(),r=p(()=>String(c.params.id||"")),n=p(()=>(String(c.query.type||"")==="case_study","case_study")),g={case_study:s=>`/api/case_studies/${s}`},v={case_study:{headerTitle:"服务案例",headerImg:"/images/服务案例/服务案例.png",listLabel:"服务案例",listPath:"/service"}},i=p(()=>v[n.value]),{data:b}=([a,x]=C(async()=>E(()=>`detail-${n.value}-${r.value}`,async()=>{if(!r.value)return null;const s=g[n.value](r.value);return await f.get(s)},{watch:[r,n]})),a=await a,x(),a),e=p(()=>{const s=b.value;return s?.code===200?s.data:null});return F({title:()=>e.value?.title||"详情",description:()=>e.value?.description||"",ogTitle:()=>e.value?.title||"",ogDescription:()=>e.value?.description||"",ogImage:()=>e.value?.cover||void 0}),(s,l)=>{const h=w,y=A;return _(),d("div",N,[u(h,{title:o(i).headerTitle,img:o(i).headerImg},null,8,["title","img"]),t("div",P,[t("div",S,[t("div",q,[l[0]||(l[0]=t("img",{class:"w-[14px] h-[14px]",src:I,alt:""},null,-1)),l[1]||(l[1]=t("a",{href:"/home",class:"hover:text-[#0A357D] transition-colors"},"首页",-1)),l[2]||(l[2]=t("span",{class:"inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"},null,-1)),t("a",{href:o(i).listPath,class:"hover:text-[#0A357D] transition-colors"},m(o(i).listLabel),9,B),l[3]||(l[3]=t("span",{class:"inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"},null,-1)),t("span",null,m(o(e)?.title||""),1)])])]),t("div",H,[t("div",M,[t("div",R,[u(y,{title:o(e)?.title||""},null,8,["title"])]),t("div",V,[o(e)?.content?(_(),d("div",{key:0,class:"w-full text-left text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#333333] leading-relaxed [&_img]:max-w-full [&_img]:h-auto [&_img]:block [&_img]:my-[12px] [&_p]:mb-[12px]",innerHTML:o(e).content},null,8,$)):L("",!0)])])])])}}});export{W as default};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{J as a,K as s,L as r,M as u,N as o}from"./BVoAI2xn.js";function h(n){const e=n||s();return e.ssrContext?.head||e.runWithContext(()=>{if(r()){const t=u(o);if(!t)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return t}})}function c(n,e={}){const t=e.head||h(e.nuxt);return a(n,{head:t,...e})}export{c as u};
|
||||
|
|
@ -1 +0,0 @@
|
|||
.data-item-first-col .data-divider[data-v-38961b7c]{display:none}@media(min-width:1280px){.data-item-first-col .data-divider[data-v-38961b7c]{display:block}}[data-v-8acf2dc5] .honor-card-img,[data-v-8acf2dc5] img{-webkit-user-drag:none;user-drag:none;pointer-events:auto}.timeline-scroll[data-v-8acf2dc5]{touch-action:pan-x;-webkit-overflow-scrolling:touch}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
{"id":"8510bf93-ce6e-4e1c-8084-e3abf9fb1ff3","timestamp":1772959839682}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"id":"8510bf93-ce6e-4e1c-8084-e3abf9fb1ff3","timestamp":1772959839682,"prerendered":[]}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{u as c}from"./CbPrn0tb.js";import{u as i}from"./RFvW8Sgv.js";import{d as u,w as r,c as d,h as p,D as _,o as m}from"./BVoAI2xn.js";const b=u({__name:"index",async setup(f){let t,e;const n=c(),{data:o}=([t,e]=r(async()=>i("business-tabs-first",async()=>await n.get("/api/project_cates"))),t=await t,e(),t),s=p(()=>{const a=o.value;return!a||a.code!==200||!Array.isArray(a.data)||a.data.length===0?"":String(a.data[0]?.id??"")});return s.value&&([t,e]=r(()=>_(`/business/${s.value}`,{})),await t,e()),(a,l)=>(m(),d("div"))}});export{b as default};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
.development-timeline-scroll[data-v-2145db32]{touch-action:pan-x;-webkit-overflow-scrolling:touch}
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{_ as q}from"./BsChYa3B.js";import{d as A,E as D,u as N,w as R,c as p,a as $,b as s,F as u,v as b,f as a,G as g,H as _,g as E,o as n,t as c,h as d,D as M}from"./BVoAI2xn.js";import{u as V}from"./CbPrn0tb.js";import{u as H}from"./RFvW8Sgv.js";const z={class:"w-full"},G={class:"w-full pb-[24px] sm:pb-[32px] md:pb-[40px] lg:pb-[48px] xl:pb-[56px]"},L={class:"layout !px-0 sm:mt-[28px] sm:mb-[29px] mt-[36px] mb-[60px]"},P={class:"flex flex-col w-full"},S=["onClick"],T={class:"flex flex-row px-[16px] sm:px-[20px] md:px-[24px] lg:px-[40px] xl:px-[52px] py-[16px] sm:py-[20px] md:py-[22px] lg:py-[26px] xl:py-[30px]"},J={class:"w-[126px] h-[104px] sm:w-[160px] sm:h-[120px] md:w-[220px] md:h-[150px] lg:w-[340px] lg:h-[214px] xl:w-[370px] xl:h-[228px] flex-shrink-0"},K=["src","alt"],O={class:"flex flex-col flex-1 items-start justify-between sm:justify-start gap-y-[0px] sm:gap-y-[15px] ml-[10px] sm:ml-[10px] md:ml-[20px] lg:ml-[30px] xl:ml-[60px]"},Q={class:"line-clamp-2 break-words text-[15px] sm:text-[18px] md:text-[20px] lg:text-[22px] xl:text-[24px] text-[#333333] group-hover:text-[#2E75B5] font-bold leading-snug"},U={class:"text-[10px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#666666]"},W={class:"line-clamp-2 text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#666666]"},X={key:0,class:"hidden sm:flex mt-[16px] items-center justify-center space-x-[6px] md:space-x-[8px]","aria-label":"分页"},Y={key:0,class:"flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] text-gray-500 text-[10px] md:text-[12px]"},Z=["onClick"],oe=A({__name:"index",async setup(I){let x,h;const w=D(),f=N(),k=V(),i=d({get:()=>Number(f.query.page)||1,set:e=>M({query:{...f.query,page:e===1?void 0:e}})}),{data:y}=([x,h]=R(async()=>H(()=>`news-page-${i.value}`,async()=>await k.get("/api/news",{params:{page:i.value}}),{watch:[i]})),x=await x,h(),x),C=d(()=>{const e=y.value;return e?.code===200&&Array.isArray(e.data)?e.data:[]}),o=d(()=>y.value?.meta??{current_page:1,last_page:1,per_page:20,total:0}),F=d(()=>{const e=o.value.current_page,t=o.value.last_page;if(t<=7)return Array.from({length:t},(r,v)=>v+1);const l=[];return e<=3?l.push(1,2,3,4,-1,t):e>=t-2?l.push(1,-1,t-3,t-2,t-1,t):l.push(1,-1,e-1,e,e+1,-1,t),l});function j(e){return e?e.split(" ")[0]||e:""}function m(e){e<1||e>o.value.last_page||(i.value=e)}const B=e=>{w.push("/news/"+e.id)};return(e,t)=>{const l=q;return n(),p("div",z,[$(l,{title:"企业资讯",img:"/images/企业资讯/企业资讯.png"}),s("div",G,[s("div",L,[s("div",P,[(n(!0),p(u,null,b(a(C),r=>(n(),p("div",{key:r.id,class:"w-full cursor-pointer group bg-[#FFFFFF] hover:bg-[#F5F5F5] transition-colors duration-300",onClick:()=>B(r)},[s("div",T,[s("div",J,[s("img",{class:"object-cover w-full h-full",src:r.cover,alt:r.title},null,8,K)]),s("div",O,[s("span",Q,c(r.title),1),s("span",U,c(j(r.published_at)),1),s("p",W,c(r.description),1)]),t[2]||(t[2]=s("div",{class:"items-center hidden sm:ml-[15px] md:flex"},[s("div",{class:"w-[56px] h-[56px] group-hover:bg-[url('/images/企业资讯/选中.png')] bg-[url('/images/企业资讯/未选中.png')] bg-no-repeat bg-center bg-cover"})],-1))])],8,S))),128)),a(o).last_page>1?(n(),p("nav",X,[s("a",{href:"#",class:_(["flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] border border-gray-300 text-gray-500 hover:bg-gray-100 transition-colors text-[10px] md:text-[12px] disabled:opacity-50 disabled:pointer-events-none",{"opacity-50 pointer-events-none":a(o).current_page<=1}]),onClick:t[0]||(t[0]=g(r=>m(a(o).current_page-1),["prevent"]))},[...t[3]||(t[3]=[s("span",{class:"sr-only"},"上一页",-1),s("svg",{class:"w-3 h-3 md:w-4 md:h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])],2),(n(!0),p(u,null,b(a(F),r=>(n(),p(u,{key:r},[r===-1?(n(),p("span",Y," … ")):(n(),p("a",{key:1,href:"#",class:_(["flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] border transition-colors text-[10px] md:text-[12px]",r===a(o).current_page?"border-blue-600 bg-blue-600 text-white font-medium":"border-gray-300 text-gray-600 hover:bg-gray-100"]),onClick:g(v=>m(r),["prevent"])},c(r),11,Z))],64))),128)),s("a",{href:"#",class:_(["flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] border border-gray-300 text-gray-500 hover:bg-gray-100 transition-colors text-[10px] md:text-[12px]",{"opacity-50 pointer-events-none":a(o).current_page>=a(o).last_page}]),onClick:t[1]||(t[1]=g(r=>m(a(o).current_page+1),["prevent"]))},[...t[4]||(t[4]=[s("span",{class:"sr-only"},"下一页",-1),s("svg",{class:"w-3 h-3 md:w-4 md:h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])],2)])):E("",!0)])])])])}}});export{oe as default};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{d,c as l,b as e,F as f,v as m,t as i,o as a,H as b,G as u}from"./BVoAI2xn.js";import{_ as h}from"./C584n0hD.js";const v={class:"sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] sm:h-[60px] md:h-[64px] lg:h-[68px] xl:h-[68px] flex flex-row items-center justify-center bg-[#F2F2F2]"},w={class:"flex flex-row justify-between items-center w-full h-full layout"},_={class:"flex flex-row items-center gap-[18px] overflow-x-auto sm:overflow-visible h-full"},g=["onClick"],T={class:"hidden sm:flex h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex-row items-center gap-[8px]"},k=d({__name:"TabsHeader",props:{tabs:{},activeTab:{},title:{}},emits:["update:activeTab"],setup(r,{emit:n}){const x=r,p=n,c=o=>{o!==x.activeTab&&p("update:activeTab",o)};return(o,t)=>(a(),l("div",v,[e("div",w,[e("div",_,[(a(!0),l(f,null,m(r.tabs,s=>(a(),l("a",{key:s.id,href:"#",onClick:u(F=>c(s.id),["prevent"]),class:b(["relative border-b-[2px] text-[14px] sm:text-[14px] md:text-[15px] lg:text-[16px] xl:text-[16px] whitespace-nowrap hover:text-[#2E75B5] transition-colors duration-300 after:absolute after:bottom-[-1px] after:left-0 after:w-0 after:h-[1px] after:bg-[#0A357D] after:transition-all after:duration-300 h-full flex items-center",{"text-[#333333] hover:after:w-full border-b-[#F2F2F2]":r.activeTab!==s.id,"text-[#2E75B5] border-b-[#2E75B5]":r.activeTab===s.id}])},i(s.name),11,g))),128))]),e("div",T,[t[0]||(t[0]=e("img",{class:"w-[14px] h-[14px]",src:h,alt:""},null,-1)),t[1]||(t[1]=e("a",{href:"/home",class:"hover:text-[#0A357D] transition-colors"},"首页",-1)),t[2]||(t[2]=e("span",{class:"inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"},null,-1)),e("span",null,i(r.title),1)])])]))}}),C=Object.assign(k,{__name:"TabsHeader"});export{C as _};
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,2 +0,0 @@
|
|||
User-Agent: *
|
||||
Disallow:
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
import { escapeHtml } from '@vue/shared';
|
||||
|
||||
const _messages = {
|
||||
"appName": "Nuxt",
|
||||
"status": 500,
|
||||
"statusText": "Internal server error",
|
||||
"description": "This page is temporarily unavailable.",
|
||||
"refresh": "Refresh this page"
|
||||
};
|
||||
const template = (messages) => {
|
||||
messages = {
|
||||
..._messages,
|
||||
...messages
|
||||
};
|
||||
return "<!DOCTYPE html><html lang=\"en\"><head><title>" + escapeHtml(messages.status) + " - " + escapeHtml(messages.statusText) + " | " + escapeHtml(messages.appName) + "</title><meta charset=\"utf-8\"><meta content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0\" name=\"viewport\"><script>!function(){const e=document.createElement(\"link\").relList;if(!(e&&e.supports&&e.supports(\"modulepreload\"))){for(const e of document.querySelectorAll('link[rel=\"modulepreload\"]'))r(e);new MutationObserver(e=>{for(const o of e)if(\"childList\"===o.type)for(const e of o.addedNodes)\"LINK\"===e.tagName&&\"modulepreload\"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),\"use-credentials\"===e.crossOrigin?r.credentials=\"include\":\"anonymous\"===e.crossOrigin?r.credentials=\"omit\":r.credentials=\"same-origin\",r}(e);fetch(e.href,r)}}();<\/script><style>*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:\"\"}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.grid{display:grid}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.max-w-520px{max-width:520px}.min-h-screen{min-height:100vh}.place-content-center{place-content:center}.overflow-hidden{overflow:hidden}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.text-center{text-align:center}.text-\\[80px\\]{font-size:80px}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\\[\\#020420\\]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\\[\\#64748B\\]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\\:bg-\\[\\#020420\\]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\\:text-white{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\\:text-\\[110px\\]{font-size:110px}.sm\\:text-3xl{font-size:1.875rem;line-height:2.25rem}}</style></head><body class=\"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide\"><div class=\"max-w-520px text-center\"><h1 class=\"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]\">" + escapeHtml(messages.status) + "</h1><h2 class=\"font-semibold mb-2 sm:text-3xl text-2xl\">" + escapeHtml(messages.statusText) + "</h2><p class=\"mb-4 px-2 text-[#64748B] text-md\">" + escapeHtml(messages.description) + "</p></div></body></html>";
|
||||
};
|
||||
|
||||
export { template };
|
||||
//# sourceMappingURL=error-500.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"error-500.mjs","sources":["../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/templates/error-500.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const AppHeader_vue_vue_type_style_index_0_scoped_0bd92392_lang = '.menu-icon-wrap[data-v-0bd92392]{display:inline-flex;transform:rotate(0)}.menu-icon-wrap.menu-icon-open[data-v-0bd92392]{transform:rotate(90deg)}.menu-trigger:active .menu-icon-wrap[data-v-0bd92392]{transform:scale(.88)}.menu-trigger:active .menu-icon-wrap.menu-icon-open[data-v-0bd92392]{transform:rotate(90deg) scale(.88)}.menu-enter-active[data-v-0bd92392],.menu-leave-active[data-v-0bd92392]{transition:opacity .28s ease,transform .28s ease}.menu-enter-from[data-v-0bd92392],.menu-leave-to[data-v-0bd92392]{opacity:0;transform:translateY(-16px)}.menu-enter-to[data-v-0bd92392],.menu-leave-from[data-v-0bd92392]{opacity:1;transform:translateY(0)}.menu-enter-active .menu-nav .menu-item[data-v-0bd92392]{animation:menu-item-in-0bd92392 .32s ease forwards;animation-delay:calc(.04s*var(--i, 0));opacity:0}@keyframes menu-item-in-0bd92392{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}.nav-item[data-v-0bd92392]{align-items:center;display:flex;height:100%;padding:0 8px;position:relative}.nav-item[data-v-0bd92392]:after{background-color:#2e75b5;bottom:0;content:"";height:3px;left:50%;opacity:0;position:absolute;transform:translate(-50%) scaleX(0);transform-origin:center;transition:transform .25s ease,opacity .25s ease;width:60%}.nav-item.is-active[data-v-0bd92392]:after,.nav-item[data-v-0bd92392]:hover:after{opacity:1;transform:translate(-50%) scaleX(1)}';
|
||||
|
||||
const AppHeaderStyles_xuwUbhFs = [
|
||||
AppHeader_vue_vue_type_style_index_0_scoped_0bd92392_lang
|
||||
];
|
||||
|
||||
export { AppHeaderStyles_xuwUbhFs as default };
|
||||
//# sourceMappingURL=AppHeader-styles.xuwUbhFs.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"AppHeader-styles.xuwUbhFs.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/AppHeader-styles-1.mjs-GHHh4FQQ.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/AppHeader-styles.xuwUbhFs.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const BannerSwiper_vue_vue_type_style_index_0_scoped_fbea4d53_lang = "[data-v-fbea4d53] .swiper-slide-active .banner-btn,[data-v-fbea4d53] .swiper-slide-active .banner-desc,[data-v-fbea4d53] .swiper-slide-active .banner-title{opacity:0}[data-v-fbea4d53] .swiper-slide-active .banner-title{animation:banner-fade-up-fbea4d53 .55s ease-out forwards}[data-v-fbea4d53] .swiper-slide-active .banner-desc{animation:banner-fade-up-fbea4d53 .5s ease-out .15s forwards}[data-v-fbea4d53] .swiper-slide-active .banner-btn{animation:banner-fade-up-fbea4d53 .45s ease-out .3s forwards}@keyframes banner-fade-up-fbea4d53{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-v-fbea4d53] .swiper-pagination-bullet{background:#ffffff80;height:12px;opacity:1;width:12px}[data-v-fbea4d53] .swiper-pagination-bullet-active{background:#fff}[data-v-fbea4d53] .swiper-button-next,[data-v-fbea4d53] .swiper-button-prev{background:#0000004d;border-radius:50%;color:#fff;height:40px;width:40px}[data-v-fbea4d53] .swiper-button-next:after,[data-v-fbea4d53] .swiper-button-prev:after{font-size:16px}";
|
||||
|
||||
const BannerSwiperStyles_FspT2_eP = [
|
||||
BannerSwiper_vue_vue_type_style_index_0_scoped_fbea4d53_lang
|
||||
];
|
||||
|
||||
export { BannerSwiperStyles_FspT2_eP as default };
|
||||
//# sourceMappingURL=BannerSwiper-styles.FspT2_eP.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"BannerSwiper-styles.FspT2_eP.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/BannerSwiper-styles-1.mjs-NvmWXVkd.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/BannerSwiper-styles.FspT2_eP.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const CompanyProfile_vue_vue_type_style_index_0_scoped_38961b7c_lang = ".data-item-first-col .data-divider[data-v-38961b7c]{display:none}@media(min-width:1280px){.data-item-first-col .data-divider[data-v-38961b7c]{display:block}}";
|
||||
|
||||
const CompanyProfileStyles_Cg7JhGfC = [
|
||||
CompanyProfile_vue_vue_type_style_index_0_scoped_38961b7c_lang
|
||||
];
|
||||
|
||||
export { CompanyProfileStyles_Cg7JhGfC as default };
|
||||
//# sourceMappingURL=CompanyProfile-styles.Cg7JhGfC.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"CompanyProfile-styles.Cg7JhGfC.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/CompanyProfile-styles-1.mjs-DGqshtob.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/CompanyProfile-styles.Cg7JhGfC.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
import { defineComponent, mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "CustomTitle",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
title: {}
|
||||
},
|
||||
setup(__props) {
|
||||
const props = __props;
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "text-center" }, _attrs))}><span class="custom-title inline-block text-[18px] sm:text-[24px] md:text-[28px] lg:text-[32px] xl:text-[42px] text-[#333333] bg-[url('/images/首页/标题背景色块.png')] bg-no-repeat bg-[length:100%_0.22em] [background-position:50%_80%]">${ssrInterpolate(props.title)}</span></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/CustomTitle.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_1 = Object.assign(_sfc_main, { __name: "CustomTitle" });
|
||||
|
||||
export { __nuxt_component_1 as _ };
|
||||
//# sourceMappingURL=CustomTitle-2eWUrzRV.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"CustomTitle-2eWUrzRV.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/CustomTitle-2eWUrzRV.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
import { defineComponent, mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "HeaderImage",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
img: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
},
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full relative" }, _attrs))}><div class="w-full min-w-full"><img class="w-full h-auto block"${ssrRenderAttr("src", __props.img)} alt=""></div><div class="absolute inset-0 flex items-center"><div class="layout w-full"><span class="animate__animated animate__backInRight block text-[24px] sm:text-[32px] md:text-[40px] lg:text-[48px] xl:text-[60px] text-[#0A357D]">${ssrInterpolate(__props.title)}</span></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/HeaderImage.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_0 = Object.assign(_sfc_main, { __name: "HeaderImage" });
|
||||
|
||||
export { __nuxt_component_0 as _ };
|
||||
//# sourceMappingURL=HeaderImage-92nFA80c.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"HeaderImage-92nFA80c.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/HeaderImage-92nFA80c.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const PartnerScroll_vue_vue_type_style_index_0_scoped_e4eb4a4e_lang = ".partner-scroll-container[data-v-e4eb4a4e]{cursor:pointer;display:flex;flex-direction:column;gap:var(--v02b74dfc);position:relative}.partner-scroll-container[data-v-e4eb4a4e],.partner-scroll-row[data-v-e4eb4a4e]{overflow:hidden;width:100%}.partner-scroll-track[data-v-e4eb4a4e]{animation:scroll-left-e4eb4a4e linear infinite;backface-visibility:hidden;display:flex;white-space:nowrap;width:-moz-max-content;width:max-content;will-change:transform}.partner-scroll-row.reverse .partner-scroll-track[data-v-e4eb4a4e]{animation:scroll-right-e4eb4a4e linear infinite}@keyframes scroll-left-e4eb4a4e{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}@keyframes scroll-right-e4eb4a4e{0%{transform:translate3d(-50%,0,0)}to{transform:translateZ(0)}}.partner-items[data-v-e4eb4a4e]{display:flex}.partner-item[data-v-e4eb4a4e]{align-items:center;background:#fff;border-radius:8px;display:flex;flex:0 0 var(--v6a738313);height:var(--v6ba4350c);justify-content:center}.partner-logo[data-v-e4eb4a4e]{filter:grayscale(.2);height:100%;-o-object-fit:fill;object-fit:fill;transition:all .3s ease;width:100%}.partner-logo[data-v-e4eb4a4e]:hover{filter:grayscale(0);transform:scale(1.05)}.partner-scroll-row:hover .partner-scroll-track[data-v-e4eb4a4e]{animation-play-state:paused}";
|
||||
|
||||
const PartnerScrollStyles_DzoCYoji = [
|
||||
PartnerScroll_vue_vue_type_style_index_0_scoped_e4eb4a4e_lang
|
||||
];
|
||||
|
||||
export { PartnerScrollStyles_DzoCYoji as default };
|
||||
//# sourceMappingURL=PartnerScroll-styles.DzoCYoji.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"PartnerScroll-styles.DzoCYoji.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/PartnerScroll-styles-1.mjs-Cijp-Zhd.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/PartnerScroll-styles.DzoCYoji.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|
||||
|
|
@ -1,161 +0,0 @@
|
|||
import { _ as __nuxt_component_1 } from './CustomTitle-2eWUrzRV.mjs';
|
||||
import { defineComponent, ref, mergeProps, unref, computed, watch, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderClass, ssrInterpolate, ssrRenderAttr, ssrRenderList } from 'vue/server-renderer';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { _ as _export_sfc, u as useRoute } from './server.mjs';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CompanyProfile",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: "公司简介"
|
||||
},
|
||||
text: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
isShowMore: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
/** 正文响应式字号 class,不传则用默认(12/15/18/22/24px)。例:关于我们页传 xl:text-[16px] 等 */
|
||||
bodySizeClass: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
},
|
||||
emits: ["onClickMore"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
useRouter();
|
||||
useRoute();
|
||||
const props = __props;
|
||||
const dataList = ref([]);
|
||||
dataList.value = [
|
||||
{
|
||||
name: "注册资本",
|
||||
value: "500",
|
||||
unit: "万"
|
||||
},
|
||||
{
|
||||
name: "专业团队规模",
|
||||
value: "1000+",
|
||||
unit: "人"
|
||||
},
|
||||
{
|
||||
name: "承接项目",
|
||||
value: "35+",
|
||||
unit: "个"
|
||||
},
|
||||
{
|
||||
name: "管理面积",
|
||||
value: "950W㎡+",
|
||||
unit: ""
|
||||
},
|
||||
{
|
||||
name: "年营收(元)",
|
||||
value: "2600",
|
||||
unit: "万"
|
||||
},
|
||||
{
|
||||
name: "服务网络覆盖",
|
||||
value: "4+",
|
||||
unit: "省市"
|
||||
}
|
||||
];
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_CustomTitle = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))} data-v-38961b7c><section class="company-intro py-[28px] sm:py-[36px] md:py-[48px] lg:py-[56px] xl:min-h-[50vh] xl:flex xl:flex-col xl:justify-center xl:pb-[113px] 2xl:min-h-[55vh] 2xl:pb-[113px] lg:pt-[0px]" data-v-38961b7c><div class="flex flex-col items-center layout" data-v-38961b7c>`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, { title: __props.title }, null, _parent));
|
||||
_push(`<div class="mt-[24px] sm:mt-[32px] md:mt-[44px] lg:mt-[58px] xl:mt-[83px] w-full flex flex-col lg:grid lg:grid-cols-[3fr_2fr] lg:items-center lg:gap-[40px] xl:gap-[48px] 2xl:gap-[56px]" data-v-38961b7c><div class="flex flex-col w-full lg:min-w-0" data-v-38961b7c><p class="${ssrRenderClass([props.bodySizeClass || "text-[12px] sm:text-[15px] md:text-[18px] lg:text-[22px] xl:text-[24px]", "whitespace-pre-line text-left text-[#333] leading-[1.6] sm:leading-[1.65] indent-[2em]"])}" data-v-38961b7c>${ssrInterpolate(__props.text)}</p>`);
|
||||
if (__props.isShowMore) {
|
||||
_push(`<button type="button" class="hidden lg:inline-flex mt-[20px] lg:mt-[24px] xl:mt-[28px] self-start items-center justify-center h-[36px] lg:h-[40px] xl:h-[44px] px-[20px] lg:px-[24px] xl:px-[28px] border border-[#1364AF] text-[15px] lg:text-[16px] xl:text-[17px] font-medium text-[#2D75B5] hover:bg-[#2D75B5] hover:text-white transition-colors duration-300" data-v-38961b7c> 了解更多 >> </button>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><img${ssrRenderAttr("src", "/images/首页/logo-拷贝-2.png")} alt="企业简介" class="mt-[32px] sm:mt-[36px] md:mt-[40px] lg:mt-0 w-full max-w-[260px] sm:max-w-[300px] md:max-w-[320px] lg:max-w-full object-contain mx-auto lg:mx-0" data-v-38961b7c></div></div></section><section class="w-full bg-[url('/images/首页/矩形-17-拷贝.png')] bg-no-repeat bg-[length:100%_100%] bg-center pt-[36px] sm:pt-[44px] md:pt-[50px] lg:pt-[56px] xl:pt-[48px] 2xl:pt-[48px] pb-[36px] sm:pb-[44px] md:pb-[50px] lg:pb-[56px] xl:pb-[64px] 2xl:pb-[72px]" data-v-38961b7c><div class="layout" data-v-38961b7c><div class="data-grid grid grid-cols-[1.35fr_1fr_1fr] grid-rows-2 gap-y-[20px] sm:gap-y-[24px] md:gap-y-[26px] lg:gap-y-[28px] xl:gap-y-[32px] xl:flex xl:justify-between" data-v-38961b7c><!--[-->`);
|
||||
ssrRenderList(unref(dataList), (data, index) => {
|
||||
_push(`<div class="${ssrRenderClass([{ "data-item-first-col": index % 3 === 0 }, "flex flex-row items-center data-item"])}" data-v-38961b7c><div class="data-divider w-[1px] h-[36px] sm:h-[40px] md:h-[44px] lg:h-[50px] xl:h-[56px] bg-[#FFFFFF] bg-opacity-[0.3] shrink-0" data-v-38961b7c></div><div class="ml-[14px] sm:ml-[16px] md:ml-[18px] lg:ml-[20px] xl:ml-[24px] min-w-0" data-v-38961b7c><div data-v-38961b7c><span class="text-[24px] sm:text-[26px] md:text-[34px] lg:text-[42px] xl:text-[50px] text-[#FFFFFF] font-bold" data-v-38961b7c>${ssrInterpolate(data.value)}</span><span class="text-[11px] sm:text-[14px] md:text-[18px] lg:text-[24px] xl:text-[30px] text-[#FFFFFF]" data-v-38961b7c>${ssrInterpolate(data.unit)}</span></div><div class="text-[10px] sm:text-[12px] md:text-[13px] lg:text-[15px] xl:text-[16px] text-[#FFFFFF] mt-[2px] sm:mt-[3px] md:mt-[4px] lg:mt-[5px]" data-v-38961b7c>${ssrInterpolate(data.name)}</div></div></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div></section></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$1 = _sfc_main$1.setup;
|
||||
_sfc_main$1.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/CompanyProfile.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$1, [["__scopeId", "data-v-38961b7c"]]), { __name: "CompanyProfile" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "QualificationHonor",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
isTimeline: { type: Boolean, default: false },
|
||||
tabList: { default: () => [] },
|
||||
honorsByCategory: { default: () => ({}) },
|
||||
fullWidth: { type: Boolean, default: false }
|
||||
},
|
||||
setup(__props) {
|
||||
const props = __props;
|
||||
const activeTabId = ref(0);
|
||||
const tabList = computed(() => props.tabList ?? []);
|
||||
const certificateList = computed(() => {
|
||||
const id = activeTabId.value;
|
||||
const first = tabList.value[0];
|
||||
if (!id && first) return props.honorsByCategory?.[first.id] ?? [];
|
||||
return props.honorsByCategory?.[id] ?? [];
|
||||
});
|
||||
watch(
|
||||
() => props.tabList,
|
||||
(list) => {
|
||||
const first = list?.[0];
|
||||
if (first && activeTabId.value === 0) {
|
||||
activeTabId.value = first.id;
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_CustomTitle = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))} data-v-8acf2dc5><div class="pt-[40px] sm:pt-[44px] md:pt-[48px] lg:pt-[54px] xl:pt-[60px] pb-[40px] sm:pb-[44px] md:pb-[48px] lg:pb-[54px] xl:pb-[60px] flex flex-col items-center bg-white xl:min-h-full xl:justify-center" data-v-8acf2dc5>`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, { title: "资质荣誉" }, null, _parent));
|
||||
_push(`<div class="${ssrRenderClass([__props.fullWidth ? "px-0" : "layout", "mt-[24px] sm:mt-[28px] md:mt-[36px] lg:mt-[48px] xl:mt-[64px] w-full flex justify-center"])}" data-v-8acf2dc5><div class="flex flex-row items-center justify-center gap-[12px] sm:gap-[14px] md:gap-[14px] lg:gap-[12px] xl:gap-[12px] cursor-pointer flex-wrap" data-v-8acf2dc5><!--[-->`);
|
||||
ssrRenderList(tabList.value, (tab, index) => {
|
||||
_push(`<div class="${ssrRenderClass([{
|
||||
"bg-[#F0F2F5] text-[#333333]": tab.id === activeTabId.value,
|
||||
"border-[1px] border-[#F0F2F5] text-[#888888]": tab.id !== activeTabId.value
|
||||
}, "px-[12px] py-[6px] sm:px-[14px] sm:py-[6px] md:px-[15px] md:py-[6px] lg:px-[15px] lg:py-[6px] xl:px-[15px] xl:py-[6px] rounded-full text-[12px] sm:text-[14px] md:text-[15px] lg:text-[16px] xl:text-[16px] text-center transition-all duration-300 ease-out hover:scale-105 hover:-translate-y-0.5 active:scale-[0.98]"])}" data-v-8acf2dc5>${ssrInterpolate(tab.name)}</div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div>`);
|
||||
if (!__props.isTimeline) {
|
||||
_push(`<div class="${ssrRenderClass([__props.fullWidth ? "px-0" : "layout", "w-full flex flex-col items-center mt-[20px] sm:mt-[24px] md:mt-[28px] lg:mt-[36px] xl:mt-[43px] pt-[8px] pb-[8px] sm:pt-[10px] sm:pb-[10px] md:pt-[12px] md:pb-[12px] lg:pt-[14px] lg:pb-[14px] xl:pt-[16px] xl:pb-[16px]"])}" data-v-8acf2dc5><div class="w-full grid grid-cols-2 sm:grid-cols-3 gap-x-[12px] sm:gap-x-[16px] md:gap-x-[18px] lg:gap-x-[18px] xl:gap-x-[18px] gap-y-[16px] sm:gap-y-[20px] md:gap-y-[24px] lg:gap-y-[32px] xl:gap-y-[43px]" data-v-8acf2dc5><!--[-->`);
|
||||
ssrRenderList(certificateList.value, (certificate, index) => {
|
||||
_push(`<div class="${ssrRenderClass([{
|
||||
"xl:ml-[50%]": certificateList.value.length % 2 !== 0 && index === certificateList.value.length - 2 || index === certificateList.value.length - 1
|
||||
}, "flex flex-col items-center w-full"])}" data-v-8acf2dc5><div class="w-full aspect-[173/123] overflow-hidden group p-[10px] sm:p-[10px] md:p-[12px] lg:p-[10px] xl:p-[8px] shadow-[0px_5px_8px_0px_rgba(1,137,232,0.17)] transition-all duration-300 ease-out hover:scale-[1.03] hover:-translate-y-1 hover:shadow-[0px_8px_16px_0px_rgba(1,137,232,0.25)]" data-v-8acf2dc5><img draggable="false" class="object-cover w-full h-full shadow-xl transition-all duration-300 ease-in-out group-hover:scale-110 group-hover:opacity-90 honor-card-img"${ssrRenderAttr("src", certificate.url)}${ssrRenderAttr("alt", certificate.name)} data-v-8acf2dc5></div><span class="mt-[10px] sm:mt-[10px] md:mt-[11px] lg:mt-[10px] xl:mt-[9px] text-[12px] sm:text-[14px] md:text-[18px] lg:text-[21px] xl:text-[24px] text-[#333333]" data-v-8acf2dc5>${ssrInterpolate(certificate.name)}</span></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div>`);
|
||||
} else {
|
||||
_push(`<div class="${ssrRenderClass([__props.fullWidth ? "px-0" : "xl:w-auto layout", "relative flex flex-col items-center w-full mt-[20px] sm:mt-[24px] md:mt-[28px] lg:mt-[32px] xl:mt-[40px] overflow-visible"])}" data-v-8acf2dc5><div class="absolute top-[44px] sm:top-[53px] md:top-[63px] lg:top-[74px] xl:top-[85px] left-0 right-0 z-[5] h-[1px] bg-[#EEF5FF]" data-v-8acf2dc5></div><div class="timeline-scroll w-full flex flex-row items-stretch justify-start sm:justify-center gap-[20px] sm:gap-[20px] md:gap-[24px] lg:gap-[32px] xl:gap-[40px] overflow-x-auto overflow-y-visible pt-[12px] pb-[24px] sm:pt-[14px] sm:pb-[24px] md:pt-[16px] md:pb-[28px] lg:pt-[18px] lg:pb-[28px] xl:pt-[20px] xl:pb-[32px] pl-[32px] pr-[32px] sm:pl-0 sm:pr-0" data-v-8acf2dc5><!--[-->`);
|
||||
ssrRenderList(certificateList.value, (certificate, idx) => {
|
||||
_push(`<div class="flex shrink-0 flex-col items-center w-[189px] sm:w-[220px] md:w-[270px] lg:w-[320px] xl:w-[378px]" data-v-8acf2dc5><div class="text-[18px] sm:text-[22px] md:text-[28px] lg:text-[34px] xl:text-[38px] font-bold text-[#336DF6] leading-none text-center w-full" data-v-8acf2dc5>${ssrInterpolate(certificate.year)}</div><div class="mt-[6px] sm:mt-[8px] w-[15px] h-[15px] sm:w-[18px] sm:h-[18px] md:w-[22px] md:h-[22px] lg:w-[28px] lg:h-[28px] xl:w-[38px] xl:h-[38px] shrink-0 rounded-full bg-[#336DF6] border-[4px] sm:border-[4px] md:border-4 xl:border-[8px] border-[#DDEAFF] relative z-10" data-v-8acf2dc5></div><div class="flex justify-center w-full z-[0]" data-v-8acf2dc5><div class="w-[1px] z-[0] xl:w-[2px] shrink-0 h-[40px] sm:h-[48px] md:h-[60px] lg:h-[68px] xl:h-[76px] bg-[#336DF6]" data-v-8acf2dc5></div></div><div class="relative z-[2] w-full max-w-[189px] sm:max-w-[220px] md:max-w-[270px] lg:max-w-[320px] xl:max-w-[378px] h-[134px] sm:h-[156px] md:h-[192px] lg:h-[227px] xl:h-[268px] flex items-center justify-center rounded-none group overflow-hidden px-[8px] py-[6px] sm:px-[12px] sm:py-[8px] md:px-[16px] md:py-[10px] lg:px-[20px] lg:py-[14px] xl:px-[25px] xl:py-[18px] shadow-[0px_6px_12px_0px_rgba(1,137,232,0.15)] md:shadow-[0px_8px_14px_0px_rgba(1,137,232,0.16)] xl:shadow-[0px_12px_20px_1px_rgba(1,137,232,0.17)] transition-all duration-300 ease-out hover:scale-[1.03] hover:-translate-y-1 hover:shadow-[0px_16px_28px_2px_rgba(1,137,232,0.22)]" data-v-8acf2dc5><img draggable="false" class="object-cover w-full h-full rounded-none transition-all duration-300 ease-in-out honor-card-img group-hover:scale-105 group-hover:opacity-90"${ssrRenderAttr("src", certificate.url)}${ssrRenderAttr("alt", certificate.name)} data-v-8acf2dc5></div></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div>`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/QualificationHonor.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_3 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main, [["__scopeId", "data-v-8acf2dc5"]]), { __name: "QualificationHonor" });
|
||||
|
||||
export { __nuxt_component_2 as _, __nuxt_component_3 as a };
|
||||
//# sourceMappingURL=QualificationHonor-WKOjdncI.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"QualificationHonor-WKOjdncI.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/QualificationHonor-WKOjdncI.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const QualificationHonor_vue_vue_type_style_index_0_scoped_8acf2dc5_lang = "[data-v-8acf2dc5] .honor-card-img,[data-v-8acf2dc5] img{-webkit-user-drag:none;user-drag:none;pointer-events:auto}.timeline-scroll[data-v-8acf2dc5]{touch-action:pan-x;-webkit-overflow-scrolling:touch}";
|
||||
|
||||
const QualificationHonorStyles_amEgj2qp = [
|
||||
QualificationHonor_vue_vue_type_style_index_0_scoped_8acf2dc5_lang
|
||||
];
|
||||
|
||||
export { QualificationHonorStyles_amEgj2qp as default };
|
||||
//# sourceMappingURL=QualificationHonor-styles.amEgj2qp.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"QualificationHonor-styles.amEgj2qp.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/QualificationHonor-styles-1.mjs-CnX2ToVW.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/QualificationHonor-styles.amEgj2qp.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
import { defineComponent, mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderList, ssrRenderClass, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './virtual_public-Ch4_18y6.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "TabsHeader",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
tabs: {},
|
||||
activeTab: {},
|
||||
title: {}
|
||||
},
|
||||
emits: ["update:activeTab"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] sm:h-[60px] md:h-[64px] lg:h-[68px] xl:h-[68px] flex flex-row items-center justify-center bg-[#F2F2F2]" }, _attrs))}><div class="flex flex-row justify-between items-center w-full h-full layout"><div class="flex flex-row items-center gap-[18px] overflow-x-auto sm:overflow-visible h-full"><!--[-->`);
|
||||
ssrRenderList(__props.tabs, (tab) => {
|
||||
_push(`<a href="#" class="${ssrRenderClass([{
|
||||
"text-[#333333] hover:after:w-full border-b-[#F2F2F2]": __props.activeTab !== tab.id,
|
||||
"text-[#2E75B5] border-b-[#2E75B5]": __props.activeTab === tab.id
|
||||
}, "relative border-b-[2px] text-[14px] sm:text-[14px] md:text-[15px] lg:text-[16px] xl:text-[16px] whitespace-nowrap hover:text-[#2E75B5] transition-colors duration-300 after:absolute after:bottom-[-1px] after:left-0 after:w-0 after:h-[1px] after:bg-[#0A357D] after:transition-all after:duration-300 h-full flex items-center"])}">${ssrInterpolate(tab.name)}</a>`);
|
||||
});
|
||||
_push(`<!--]--></div><div class="hidden sm:flex h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex-row items-center gap-[8px]"><img class="w-[14px] h-[14px]"${ssrRenderAttr("src", _imports_0)} alt=""><a href="/home" class="hover:text-[#0A357D] transition-colors">首页</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><span>${ssrInterpolate(__props.title)}</span></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/TabsHeader.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_1 = Object.assign(_sfc_main, { __name: "TabsHeader" });
|
||||
|
||||
export { __nuxt_component_1 as _ };
|
||||
//# sourceMappingURL=TabsHeader-C0yMA2hS.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"TabsHeader-C0yMA2hS.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/TabsHeader-C0yMA2hS.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { defineComponent, computed, withAsyncContext, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './virtual_public-Ch4_18y6.mjs';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { u as useRoute } from './server.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import { u as useSeoMeta } from './composables-2BFBRDmB.mjs';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "[id]",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const route = useRoute();
|
||||
const request = useRequest();
|
||||
const id = computed(() => String(route.params.id ?? ""));
|
||||
const { data: detailRes, pending } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
() => `news-detail-${id.value}`,
|
||||
async () => {
|
||||
if (!id.value) return null;
|
||||
return await request.get(`/api/news/${id.value}`);
|
||||
},
|
||||
{ watch: [id] }
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const detail = computed(() => {
|
||||
const res = detailRes.value;
|
||||
return res?.code === 200 ? res.data : null;
|
||||
});
|
||||
function formatDate(str) {
|
||||
if (!str) return "";
|
||||
return str.split(" ")[0] ?? str;
|
||||
}
|
||||
useSeoMeta({
|
||||
title: () => detail.value?.title ?? "企业资讯",
|
||||
description: () => detail.value?.description ?? "",
|
||||
ogTitle: () => detail.value?.title ?? "",
|
||||
ogDescription: () => detail.value?.description ?? "",
|
||||
ogImage: () => detail.value?.cover ?? void 0
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: "企业资讯",
|
||||
img: "/images/企业资讯/企业资讯.png"
|
||||
}, null, _parent));
|
||||
_push(`<div class="hidden sm:flex sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] flex-row items-center justify-center bg-[#F2F2F2]"><div class="flex flex-row justify-end items-center w-full h-full layout"><div class="h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex flex-row items-center gap-[8px]"><img class="w-[14px] h-[14px]"${ssrRenderAttr("src", _imports_0)} alt=""><a href="/home" class="hover:text-[#0A357D] transition-colors">首页</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><a href="/news" class="hover:text-[#0A357D] transition-colors">企业资讯</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><span>${ssrInterpolate(unref(detail)?.title ?? "")}</span></div></div></div><div class="w-full bg-white"><div class="layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px] pb-[40px] sm:pb-[48px] md:pb-[56px] lg:pb-[64px] xl:pb-[72px]">`);
|
||||
if (unref(detail)) {
|
||||
_push(`<!--[--><h1 class="text-[20px] sm:text-[22px] md:text-[24px] lg:text-[26px] xl:text-[28px] text-[#333333] font-bold">${ssrInterpolate(unref(detail).title)}</h1><div class="mt-[12px] sm:mt-[14px] md:mt-[16px] text-[12px] sm:text-[13px] md:text-[14px] text-[#999999]"> 发布时间:${ssrInterpolate(formatDate(unref(detail).published_at))}</div>`);
|
||||
if (unref(detail).cover) {
|
||||
_push(`<img${ssrRenderAttr("src", unref(detail).cover)}${ssrRenderAttr("alt", unref(detail).title)} class="w-full mt-[20px] sm:mt-[24px] md:mt-[28px] h-[220px] sm:h-[260px] md:h-[300px] lg:h-[340px] xl:h-[380px] object-cover rounded-[4px]">`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (unref(detail).content) {
|
||||
_push(`<div class="mt-[24px] sm:mt-[28px] md:mt-[32px] w-full text-left text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] text-[#333333] leading-relaxed [&_img]:max-w-full [&_img]:h-auto [&_img]:block [&_img]:my-[12px] [&_p]:mb-[12px]">${unref(detail).content ?? ""}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else if (!unref(pending)) {
|
||||
_push(`<p class="text-[#666666]">暂无内容</p>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/news/[id].vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=_id_-0mLHz3QR.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"_id_-0mLHz3QR.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_id_-0mLHz3QR.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { _ as __nuxt_component_1 } from './CustomTitle-2eWUrzRV.mjs';
|
||||
import { defineComponent, computed, withAsyncContext, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './virtual_public-Ch4_18y6.mjs';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { u as useRoute } from './server.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import { u as useSeoMeta } from './composables-2BFBRDmB.mjs';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "[id]",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const route = useRoute();
|
||||
const request = useRequest();
|
||||
const id = computed(() => String(route.params.id || ""));
|
||||
const type = computed(() => {
|
||||
const t = String(route.query.type || "");
|
||||
if (t === "case_study") return "case_study";
|
||||
return "case_study";
|
||||
});
|
||||
const DETAIL_API = {
|
||||
case_study: (caseStudyId) => `/api/case_studies/${caseStudyId}`
|
||||
};
|
||||
const DETAIL_PAGE_CONFIG = {
|
||||
case_study: {
|
||||
headerTitle: "服务案例",
|
||||
headerImg: "/images/服务案例/服务案例.png",
|
||||
listLabel: "服务案例",
|
||||
listPath: "/service"
|
||||
}
|
||||
};
|
||||
const pageConfig = computed(() => DETAIL_PAGE_CONFIG[type.value]);
|
||||
const { data: detailRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
() => `detail-${type.value}-${id.value}`,
|
||||
async () => {
|
||||
if (!id.value) return null;
|
||||
const url = DETAIL_API[type.value](id.value);
|
||||
return await request.get(url);
|
||||
},
|
||||
{ watch: [id, type] }
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const detail = computed(() => {
|
||||
const res = detailRes.value;
|
||||
return res?.code === 200 ? res.data : null;
|
||||
});
|
||||
useSeoMeta({
|
||||
title: () => detail.value?.title || "详情",
|
||||
description: () => detail.value?.description || "",
|
||||
ogTitle: () => detail.value?.title || "",
|
||||
ogDescription: () => detail.value?.description || "",
|
||||
ogImage: () => detail.value?.cover || void 0
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
const _component_CustomTitle = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: unref(pageConfig).headerTitle,
|
||||
img: unref(pageConfig).headerImg
|
||||
}, null, _parent));
|
||||
_push(`<div class="hidden sm:flex sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] flex-row items-center justify-center bg-[#F2F2F2]"><div class="flex flex-row justify-end items-center w-full h-full layout"><div class="h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex flex-row items-center gap-[8px]"><img class="w-[14px] h-[14px]"${ssrRenderAttr("src", _imports_0)} alt=""><a href="/home" class="hover:text-[#0A357D] transition-colors">首页</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><a${ssrRenderAttr("href", unref(pageConfig).listPath)} class="hover:text-[#0A357D] transition-colors">${ssrInterpolate(unref(pageConfig).listLabel)}</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><span>${ssrInterpolate(unref(detail)?.title || "")}</span></div></div></div><div class="w-full bg-white"><div class="layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px] pb-[40px] sm:pb-[48px] md:pb-[56px] lg:pb-[64px] xl:pb-[72px]"><div class="flex flex-col items-center w-full">`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, {
|
||||
title: unref(detail)?.title || ""
|
||||
}, null, _parent));
|
||||
_push(`</div><div class="mt-[24px] sm:mt-[28px] md:mt-[32px] lg:mt-[36px] xl:mt-[40px] flex flex-col items-center gap-[24px] sm:gap-[28px] md:gap-[32px] lg:gap-[36px] xl:gap-[40px]">`);
|
||||
if (unref(detail)?.content) {
|
||||
_push(`<div class="w-full text-left text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#333333] leading-relaxed [&_img]:max-w-full [&_img]:h-auto [&_img]:block [&_img]:my-[12px] [&_p]:mb-[12px]">${unref(detail).content ?? ""}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/service/[id].vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=_id_-DRsxvGrY.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"_id_-DRsxvGrY.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_id_-DRsxvGrY.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { _ as __nuxt_component_1 } from './CustomTitle-2eWUrzRV.mjs';
|
||||
import { defineComponent, computed, withAsyncContext, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './virtual_public-Ch4_18y6.mjs';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { u as useRoute } from './server.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import { u as useSeoMeta } from './composables-2BFBRDmB.mjs';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "[id]",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const route = useRoute();
|
||||
const request = useRequest();
|
||||
const id = computed(() => String(route.params.id || ""));
|
||||
const type = computed(() => {
|
||||
const t = String(route.query.type || "");
|
||||
if (t === "case_study") return "case_study";
|
||||
return "case_study";
|
||||
});
|
||||
const DETAIL_API = {
|
||||
case_study: (caseStudyId) => `/api/case_studies/${caseStudyId}`
|
||||
};
|
||||
const DETAIL_PAGE_CONFIG = {
|
||||
case_study: {
|
||||
headerTitle: "服务案例",
|
||||
headerImg: "/images/服务案例/服务案例.png",
|
||||
listLabel: "服务案例",
|
||||
listPath: "/service"
|
||||
}
|
||||
};
|
||||
const pageConfig = computed(() => DETAIL_PAGE_CONFIG[type.value]);
|
||||
const { data: detailRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
() => `detail-${type.value}-${id.value}`,
|
||||
async () => {
|
||||
if (!id.value) return null;
|
||||
const url = DETAIL_API[type.value](id.value);
|
||||
return await request.get(url);
|
||||
},
|
||||
{ watch: [id, type] }
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const detail = computed(() => {
|
||||
const res = detailRes.value;
|
||||
return res?.code === 200 ? res.data : null;
|
||||
});
|
||||
useSeoMeta({
|
||||
title: () => detail.value?.title || "详情",
|
||||
description: () => detail.value?.description || "",
|
||||
ogTitle: () => detail.value?.title || "",
|
||||
ogDescription: () => detail.value?.description || "",
|
||||
ogImage: () => detail.value?.cover || void 0
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
const _component_CustomTitle = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: unref(pageConfig).headerTitle,
|
||||
img: unref(pageConfig).headerImg
|
||||
}, null, _parent));
|
||||
_push(`<div class="hidden sm:flex sticky top-[56px] sm:top-[64px] md:top-[80px] lg:top-[100px] xl:top-[135px] z-[999] w-full h-[56px] flex-row items-center justify-center bg-[#F2F2F2]"><div class="flex flex-row justify-end items-center w-full h-full layout"><div class="h-full text-[12px] pl-[12px] text-[#999999] border-l-[1px] flex flex-row items-center gap-[8px]"><img class="w-[14px] h-[14px]"${ssrRenderAttr("src", _imports_0)} alt=""><a href="/home" class="hover:text-[#0A357D] transition-colors">首页</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><a${ssrRenderAttr("href", unref(pageConfig).listPath)} class="hover:text-[#0A357D] transition-colors">${ssrInterpolate(unref(pageConfig).listLabel)}</a><span class="inline-block border-solid border-transparent border-l-[2px] border-y-[2px] border-l-current text-[#999999]"></span><span>${ssrInterpolate(unref(detail)?.title || "")}</span></div></div></div><div class="w-full bg-white"><div class="layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px] pb-[40px] sm:pb-[48px] md:pb-[56px] lg:pb-[64px] xl:pb-[72px]"><div class="flex flex-col items-center w-full">`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, {
|
||||
title: unref(detail)?.title || ""
|
||||
}, null, _parent));
|
||||
_push(`</div><div class="mt-[24px] sm:mt-[28px] md:mt-[32px] lg:mt-[36px] xl:mt-[40px] flex flex-col items-center gap-[24px] sm:gap-[28px] md:gap-[32px] lg:gap-[36px] xl:gap-[40px]">`);
|
||||
if (unref(detail)?.content) {
|
||||
_push(`<div class="w-full text-left text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#333333] leading-relaxed [&_img]:max-w-full [&_img]:h-auto [&_img]:block [&_img]:my-[12px] [&_p]:mb-[12px]">${unref(detail).content ?? ""}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/detail/[id].vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=_id_-DhQKfcTt.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"_id_-DhQKfcTt.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_id_-DhQKfcTt.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,168 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { _ as __nuxt_component_1 } from './TabsHeader-C0yMA2hS.mjs';
|
||||
import { _ as __nuxt_component_1$1 } from './CustomTitle-2eWUrzRV.mjs';
|
||||
import { defineComponent, computed, withAsyncContext, mergeProps, isRef, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { u as useRoute, n as navigateTo } from './server.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import { u as useSeoMeta } from './composables-2BFBRDmB.mjs';
|
||||
import './virtual_public-Ch4_18y6.mjs';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "[id]",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const route = useRoute();
|
||||
const request = useRequest();
|
||||
const cateId = computed(() => String(route.params.id || ""));
|
||||
const { data: tabsRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
"business-tabs",
|
||||
async () => await request.get("/api/project_cates")
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const tabList = computed(() => {
|
||||
const res = tabsRes.value;
|
||||
if (!res || res.code !== 200 || !Array.isArray(res.data)) return [];
|
||||
return res.data.map((item) => ({ id: String(item.id), name: item.title }));
|
||||
});
|
||||
const activeTabModel = computed({
|
||||
get: () => cateId.value,
|
||||
set: (val) => {
|
||||
const next = String(val || "");
|
||||
if (!next || next === cateId.value) return;
|
||||
navigateTo(`/business/${next}`);
|
||||
}
|
||||
});
|
||||
const { data: detailRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
() => `business-detail-${cateId.value}`,
|
||||
async () => await request.get(
|
||||
`/api/project_cates/${cateId.value}`
|
||||
),
|
||||
{ watch: [cateId] }
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const currentTabInfoData = computed(() => {
|
||||
const res = detailRes.value;
|
||||
if (!res || res.code !== 200 || !res.data) return null;
|
||||
const d = res.data;
|
||||
return {
|
||||
name: d.title,
|
||||
description: d.description,
|
||||
dataList: (d.children || []).map((c) => ({
|
||||
title: c.title,
|
||||
content: c.description || "",
|
||||
url: c.cover
|
||||
})),
|
||||
serviceProcess: d.flows?.cover || "",
|
||||
professionalEquipments: (d.photos || []).map((p) => p.cover),
|
||||
coreAdvantages: (d.advances || []).map((a) => ({
|
||||
title: a.title,
|
||||
content: a.description || "",
|
||||
url: a.cover
|
||||
}))
|
||||
};
|
||||
});
|
||||
useSeoMeta({
|
||||
title: () => currentTabInfoData.value?.name ? `${currentTabInfoData.value.name} - 业务范围` : "业务范围",
|
||||
description: () => {
|
||||
const first = currentTabInfoData.value?.dataList?.[0]?.content;
|
||||
return first ? first : "业务范围";
|
||||
},
|
||||
ogTitle: () => currentTabInfoData.value?.name ? `${currentTabInfoData.value.name} - 业务范围` : "业务范围",
|
||||
ogDescription: () => {
|
||||
const first = currentTabInfoData.value?.dataList?.[0]?.content;
|
||||
return first ? first : "业务范围";
|
||||
},
|
||||
ogImage: () => {
|
||||
const first = currentTabInfoData.value?.professionalEquipments?.[0] || currentTabInfoData.value?.serviceProcess || "";
|
||||
return first || void 0;
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
const _component_TabsHeader = __nuxt_component_1;
|
||||
const _component_CustomTitle = __nuxt_component_1$1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: "业务范围",
|
||||
img: "/images/业务范围/业务范围.png"
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(_component_TabsHeader, {
|
||||
tabs: unref(tabList),
|
||||
activeTab: unref(activeTabModel),
|
||||
"onUpdate:activeTab": ($event) => isRef(activeTabModel) ? activeTabModel.value = $event : null,
|
||||
title: "业务范围"
|
||||
}, null, _parent));
|
||||
_push(`<div class="space-y-[28px] sm:space-y-[32px] md:space-y-[36px] lg:space-y-[40px] xl:space-y-[48px] pt-[28px] sm:pt-[32px] md:pt-[36px] lg:pt-[40px] xl:pt-[48px]">`);
|
||||
if ((unref(currentTabInfoData)?.dataList || []).length > 0) {
|
||||
_push(`<div class="w-full px-[18px] sm:px-[15px]"><div class="w-full"><div class="flex flex-col items-center w-full">`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, {
|
||||
title: unref(currentTabInfoData)?.name || ""
|
||||
}, null, _parent));
|
||||
if (unref(currentTabInfoData)?.description) {
|
||||
_push(`<p class="mt-[18px] sm:mt-[18px] md:mt-[20px] lg:mt-[22px] xl:mt-[24px] mb-[20px] lg:mb-[60px] text-center text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[20px] text-[#333333] leading-relaxed">${ssrInterpolate(unref(currentTabInfoData)?.description || "")}</p>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div class="w-full overflow-x-auto overflow-y-visible flex flex-row items-stretch justify-start sm:justify-center gap-[18px] sm:gap-[12px] md:gap-[18px] lg:gap-[24px] xl:gap-[30px] pb-[15px]"><!--[-->`);
|
||||
ssrRenderList(unref(currentTabInfoData)?.dataList || [], (data) => {
|
||||
_push(`<div class="group flex-shrink-0 w-[140px] h-[183px] sm:w-[170px] sm:h-[200px] md:w-[210px] md:h-[260px] lg:w-[240px] lg:h-[310px] xl:w-[280px] xl:h-[365px] relative overflow-hidden shadow-[0_4px_12px_rgba(0,0,0,0.12)] transition-all duration-300 ease-out hover:-translate-y-1 hover:shadow-[0_12px_24px_rgba(0,0,0,0.18)]"><img class="object-cover w-full h-full transition-transform duration-300 ease-out transform group-hover:scale-105"${ssrRenderAttr("src", data.url)}${ssrRenderAttr("alt", data.title)} draggable="false"><div class="absolute inset-0 cursor-pointer flex flex-col items-center justify-center bg-[#3A7DB9] bg-opacity-[0.7] group-hover:bg-opacity-[0.15] transition-all duration-300 ease-out"><span class="text-[12px] sm:text-[14px] md:text-[18px] lg:text-[20px] xl:text-[22px] text-[#FFFFFF] font-bold transform transition-transform duration-300 ease-out group-hover:-translate-y-[4px]">${ssrInterpolate(data.title)}</span><div class="w-[30px] h-[2px] sm:w-[26px] sm:h-[1px] bg-[#FEFEFE] my-[12px] sm:my-[8px] opacity-90 group-hover:opacity-100 transition-opacity duration-300"></div><p class="px-[18px] sm:px-[12px] text-center text-[12px] sm:text-[10px] md:text-[12px] lg:text-[13px] xl:text-[14px] text-[#FFFFFF] leading-relaxed transform transition-transform duration-300 ease-out group-hover:-translate-y-[2px]">${ssrInterpolate(data.content)}</p></div></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (unref(currentTabInfoData)?.serviceProcess) {
|
||||
_push(`<div class="w-full"><div class="flex flex-col items-center"><h1 class="text-[17px] sm:text-[20px] md:text-[24px] lg:text-[28px] xl:text-[34px] text-[#333333]"> 服务流程 </h1><div class="mt-[20px] sm:mt-[24px] md:mt-[28px] lg:mt-[34px] xl:mt-[40px] w-full px-[18px] sm:px-[20px] md:px-[24px] lg:px-[28px] xl:px-[30px] max-w-full sm:max-w-[400px] md:max-w-[560px] lg:max-w-[720px] xl:max-w-[920px] xl:mx-auto"><img class="w-full h-auto"${ssrRenderAttr("src", unref(currentTabInfoData)?.serviceProcess)} alt="" draggable="false"></div></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if ((unref(currentTabInfoData)?.professionalEquipments || []).length > 0) {
|
||||
_push(`<div class="w-full"><div class="flex flex-col items-center"><h1 class="text-[17px] sm:text-[20px] md:text-[24px] lg:text-[28px] xl:text-[34px] text-[#333333]"> 专业设备 </h1><div class="mt-[20px] sm:mt-[24px] md:mt-[28px] lg:mt-[34px] xl:mt-[40px] max-w-full overflow-x-auto overflow-y-hidden"><div class="inline-grid grid-rows-2 grid-flow-col mx-auto"><!--[-->`);
|
||||
ssrRenderList(unref(currentTabInfoData)?.professionalEquipments, (cur) => {
|
||||
_push(`<div class="overflow-hidden shadow-md group w-[190px] h-[115px] sm:w-[240px] sm:h-[145px] md:w-[320px] md:h-[193px] lg:w-[400px] lg:h-[242px] xl:w-[480px] xl:h-[290px] flex-shrink-0"><img class="object-cover w-full h-full transition-all duration-300 ease-in-out group-hover:scale-110 group-hover:-translate-y-2"${ssrRenderAttr("src", cur)} alt="" draggable="false"></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if ((unref(currentTabInfoData)?.coreAdvantages || []).length > 0) {
|
||||
_push(`<div class="!mt-0"><div class="w-full bg-[url('/images/业务范围/核心优势背景.png')] bg-cover bg-center bg-no-repeat py-[20px] sm:py-[24px] md:py-[28px] lg:py-[34px] xl:py-[40px] pt-[28px] sm:pt-[32px] md:pt-[36px] lg:pt-[40px] xl:pt-[48px]"><div class="flex flex-col items-center"><h1 class="text-[17px] sm:text-[20px] md:text-[24px] lg:text-[28px] xl:text-[34px] text-[#333333]"> 核心优势 </h1><div class="mt-[56px] sm:mt-[72px] md:mt-[96px] lg:mt-[120px] xl:mt-[144px] grid grid-cols-2 sm:grid-cols-4 gap-x-[12px] gap-y-[16px] sm:gap-x-[16px] sm:gap-y-[20px] lg:gap-x-[20px] lg:gap-y-[24px]"><!--[-->`);
|
||||
ssrRenderList(unref(currentTabInfoData)?.coreAdvantages || [], (coreAdvantage) => {
|
||||
_push(`<div class="bg-[#FFFFFF] flex flex-col items-center justify-start transition-all duration-300 ease-in-out hover:shadow-lg w-[175px] h-[211px] sm:w-[200px] sm:h-[240px] md:w-[260px] md:h-[300px] lg:w-[310px] lg:h-[340px] xl:w-[350px] xl:h-[369px]"><div class="-translate-y-[44px] sm:-translate-y-[52px] md:-translate-y-[64px] lg:-translate-y-[76px] xl:-translate-y-[88px]"><img class="w-[88px] h-[88px] sm:w-[104px] sm:h-[104px] md:w-[128px] md:h-[128px] lg:w-[152px] lg:h-[152px] xl:w-[176px] xl:h-[176px] mx-auto"${ssrRenderAttr("src", coreAdvantage.url)} alt="" draggable="false"><h1 class="text-[#333333] text-[14px] sm:text-[16px] md:text-[20px] lg:text-[24px] xl:text-[28px] text-center">${ssrInterpolate(coreAdvantage.title)}</h1><p class="mt-[8px] px-[12px] sm:px-[14px] md:px-[16px] lg:px-[18px] xl:px-[20px] text-center text-[#999999] text-[12px] sm:text-[13px] md:text-[15px] lg:text-[16px] xl:text-[18px]">${ssrInterpolate(coreAdvantage.content)}</p></div></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/business/[id].vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=_id_-Drbm_L59.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"_id_-Drbm_L59.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_id_-Drbm_L59.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,325 +0,0 @@
|
|||
import { computed, toValue, getCurrentInstance, onServerPrefetch, ref, shallowRef, nextTick, unref, toRef, defineComponent, createElementBlock, provide, cloneVNode, h } from 'vue';
|
||||
import { debounce } from 'perfect-debounce';
|
||||
import { c as useNuxtApp, d as asyncDataDefaults, e as createError } from './server.mjs';
|
||||
|
||||
defineComponent({
|
||||
name: "ServerPlaceholder",
|
||||
render() {
|
||||
return createElementBlock("div");
|
||||
}
|
||||
});
|
||||
const clientOnlySymbol = /* @__PURE__ */ Symbol.for("nuxt:client-only");
|
||||
defineComponent({
|
||||
name: "ClientOnly",
|
||||
inheritAttrs: false,
|
||||
props: ["fallback", "placeholder", "placeholderTag", "fallbackTag"],
|
||||
...false,
|
||||
setup(props, { slots, attrs }) {
|
||||
const mounted = shallowRef(false);
|
||||
const vm = getCurrentInstance();
|
||||
if (vm) {
|
||||
vm._nuxtClientOnly = true;
|
||||
}
|
||||
provide(clientOnlySymbol, true);
|
||||
return () => {
|
||||
if (mounted.value) {
|
||||
const vnodes = slots.default?.();
|
||||
if (vnodes && vnodes.length === 1) {
|
||||
return [cloneVNode(vnodes[0], attrs)];
|
||||
}
|
||||
return vnodes;
|
||||
}
|
||||
const slot = slots.fallback || slots.placeholder;
|
||||
if (slot) {
|
||||
return h(slot);
|
||||
}
|
||||
const fallbackStr = props.fallback || props.placeholder || "";
|
||||
const fallbackTag = props.fallbackTag || props.placeholderTag || "span";
|
||||
return createElementBlock(fallbackTag, attrs, fallbackStr);
|
||||
};
|
||||
}
|
||||
});
|
||||
function useAsyncData(...args) {
|
||||
const autoKey = typeof args[args.length - 1] === "string" ? args.pop() : void 0;
|
||||
if (_isAutoKeyNeeded(args[0], args[1])) {
|
||||
args.unshift(autoKey);
|
||||
}
|
||||
let [_key, _handler, options = {}] = args;
|
||||
const key = computed(() => toValue(_key));
|
||||
if (typeof key.value !== "string") {
|
||||
throw new TypeError("[nuxt] [useAsyncData] key must be a string.");
|
||||
}
|
||||
if (typeof _handler !== "function") {
|
||||
throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");
|
||||
}
|
||||
const nuxtApp = useNuxtApp();
|
||||
options.server ??= true;
|
||||
options.default ??= getDefault;
|
||||
options.getCachedData ??= getDefaultCachedData;
|
||||
options.lazy ??= false;
|
||||
options.immediate ??= true;
|
||||
options.deep ??= asyncDataDefaults.deep;
|
||||
options.dedupe ??= "cancel";
|
||||
options._functionName || "useAsyncData";
|
||||
nuxtApp._asyncData[key.value];
|
||||
function createInitialFetch() {
|
||||
const initialFetchOptions = { cause: "initial", dedupe: options.dedupe };
|
||||
if (!nuxtApp._asyncData[key.value]?._init) {
|
||||
initialFetchOptions.cachedData = options.getCachedData(key.value, nuxtApp, { cause: "initial" });
|
||||
nuxtApp._asyncData[key.value] = createAsyncData(nuxtApp, key.value, _handler, options, initialFetchOptions.cachedData);
|
||||
}
|
||||
return () => nuxtApp._asyncData[key.value].execute(initialFetchOptions);
|
||||
}
|
||||
const initialFetch = createInitialFetch();
|
||||
const asyncData = nuxtApp._asyncData[key.value];
|
||||
asyncData._deps++;
|
||||
const fetchOnServer = options.server !== false && nuxtApp.payload.serverRendered;
|
||||
if (fetchOnServer && options.immediate) {
|
||||
const promise = initialFetch();
|
||||
if (getCurrentInstance()) {
|
||||
onServerPrefetch(() => promise);
|
||||
} else {
|
||||
nuxtApp.hook("app:created", async () => {
|
||||
await promise;
|
||||
});
|
||||
}
|
||||
}
|
||||
const asyncReturn = {
|
||||
data: writableComputedRef(() => nuxtApp._asyncData[key.value]?.data),
|
||||
pending: writableComputedRef(() => nuxtApp._asyncData[key.value]?.pending),
|
||||
status: writableComputedRef(() => nuxtApp._asyncData[key.value]?.status),
|
||||
error: writableComputedRef(() => nuxtApp._asyncData[key.value]?.error),
|
||||
refresh: (...args2) => {
|
||||
if (!nuxtApp._asyncData[key.value]?._init) {
|
||||
const initialFetch2 = createInitialFetch();
|
||||
return initialFetch2();
|
||||
}
|
||||
return nuxtApp._asyncData[key.value].execute(...args2);
|
||||
},
|
||||
execute: (...args2) => asyncReturn.refresh(...args2),
|
||||
clear: () => {
|
||||
const entry = nuxtApp._asyncData[key.value];
|
||||
if (entry?._abortController) {
|
||||
try {
|
||||
entry._abortController.abort(new DOMException("AsyncData aborted by user.", "AbortError"));
|
||||
} finally {
|
||||
entry._abortController = void 0;
|
||||
}
|
||||
}
|
||||
clearNuxtDataByKey(nuxtApp, key.value);
|
||||
}
|
||||
};
|
||||
const asyncDataPromise = Promise.resolve(nuxtApp._asyncDataPromises[key.value]).then(() => asyncReturn);
|
||||
Object.assign(asyncDataPromise, asyncReturn);
|
||||
return asyncDataPromise;
|
||||
}
|
||||
function writableComputedRef(getter) {
|
||||
return computed({
|
||||
get() {
|
||||
return getter()?.value;
|
||||
},
|
||||
set(value) {
|
||||
const ref2 = getter();
|
||||
if (ref2) {
|
||||
ref2.value = value;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function _isAutoKeyNeeded(keyOrFetcher, fetcher) {
|
||||
if (typeof keyOrFetcher === "string") {
|
||||
return false;
|
||||
}
|
||||
if (typeof keyOrFetcher === "object" && keyOrFetcher !== null) {
|
||||
return false;
|
||||
}
|
||||
if (typeof keyOrFetcher === "function" && typeof fetcher === "function") {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function clearNuxtDataByKey(nuxtApp, key) {
|
||||
if (key in nuxtApp.payload.data) {
|
||||
nuxtApp.payload.data[key] = void 0;
|
||||
}
|
||||
if (key in nuxtApp.payload._errors) {
|
||||
nuxtApp.payload._errors[key] = void 0;
|
||||
}
|
||||
if (nuxtApp._asyncData[key]) {
|
||||
nuxtApp._asyncData[key].data.value = unref(nuxtApp._asyncData[key]._default());
|
||||
nuxtApp._asyncData[key].error.value = void 0;
|
||||
nuxtApp._asyncData[key].status.value = "idle";
|
||||
}
|
||||
if (key in nuxtApp._asyncDataPromises) {
|
||||
nuxtApp._asyncDataPromises[key] = void 0;
|
||||
}
|
||||
}
|
||||
function pick(obj, keys) {
|
||||
const newObj = {};
|
||||
for (const key of keys) {
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
return newObj;
|
||||
}
|
||||
function createAsyncData(nuxtApp, key, _handler, options, initialCachedData) {
|
||||
nuxtApp.payload._errors[key] ??= void 0;
|
||||
const hasCustomGetCachedData = options.getCachedData !== getDefaultCachedData;
|
||||
const handler = _handler ;
|
||||
const _ref = options.deep ? ref : shallowRef;
|
||||
const hasCachedData = initialCachedData !== void 0;
|
||||
const unsubRefreshAsyncData = nuxtApp.hook("app:data:refresh", async (keys) => {
|
||||
if (!keys || keys.includes(key)) {
|
||||
await asyncData.execute({ cause: "refresh:hook" });
|
||||
}
|
||||
});
|
||||
const asyncData = {
|
||||
data: _ref(hasCachedData ? initialCachedData : options.default()),
|
||||
pending: computed(() => asyncData.status.value === "pending"),
|
||||
error: toRef(nuxtApp.payload._errors, key),
|
||||
status: shallowRef("idle"),
|
||||
execute: (...args) => {
|
||||
const [_opts, newValue = void 0] = args;
|
||||
const opts = _opts && newValue === void 0 && typeof _opts === "object" ? _opts : {};
|
||||
if (nuxtApp._asyncDataPromises[key]) {
|
||||
if ((opts.dedupe ?? options.dedupe) === "defer") {
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
}
|
||||
{
|
||||
const cachedData = "cachedData" in opts ? opts.cachedData : options.getCachedData(key, nuxtApp, { cause: opts.cause ?? "refresh:manual" });
|
||||
if (cachedData !== void 0) {
|
||||
nuxtApp.payload.data[key] = asyncData.data.value = cachedData;
|
||||
asyncData.error.value = void 0;
|
||||
asyncData.status.value = "success";
|
||||
return Promise.resolve(cachedData);
|
||||
}
|
||||
}
|
||||
if (asyncData._abortController) {
|
||||
asyncData._abortController.abort(new DOMException("AsyncData request cancelled by deduplication", "AbortError"));
|
||||
}
|
||||
asyncData._abortController = new AbortController();
|
||||
asyncData.status.value = "pending";
|
||||
const cleanupController = new AbortController();
|
||||
const promise = new Promise(
|
||||
(resolve, reject) => {
|
||||
try {
|
||||
const timeout = opts.timeout ?? options.timeout;
|
||||
const mergedSignal = mergeAbortSignals([asyncData._abortController?.signal, opts?.signal], cleanupController.signal, timeout);
|
||||
if (mergedSignal.aborted) {
|
||||
const reason = mergedSignal.reason;
|
||||
reject(reason instanceof Error ? reason : new DOMException(String(reason ?? "Aborted"), "AbortError"));
|
||||
return;
|
||||
}
|
||||
mergedSignal.addEventListener("abort", () => {
|
||||
const reason = mergedSignal.reason;
|
||||
reject(reason instanceof Error ? reason : new DOMException(String(reason ?? "Aborted"), "AbortError"));
|
||||
}, { once: true, signal: cleanupController.signal });
|
||||
return Promise.resolve(handler(nuxtApp, { signal: mergedSignal })).then(resolve, reject);
|
||||
} catch (err) {
|
||||
reject(err);
|
||||
}
|
||||
}
|
||||
).then(async (_result) => {
|
||||
let result = _result;
|
||||
if (options.transform) {
|
||||
result = await options.transform(_result);
|
||||
}
|
||||
if (options.pick) {
|
||||
result = pick(result, options.pick);
|
||||
}
|
||||
nuxtApp.payload.data[key] = result;
|
||||
asyncData.data.value = result;
|
||||
asyncData.error.value = void 0;
|
||||
asyncData.status.value = "success";
|
||||
}).catch((error) => {
|
||||
if (nuxtApp._asyncDataPromises[key] && nuxtApp._asyncDataPromises[key] !== promise) {
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
if (asyncData._abortController?.signal.aborted) {
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
if (typeof DOMException !== "undefined" && error instanceof DOMException && error.name === "AbortError") {
|
||||
asyncData.status.value = "idle";
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
asyncData.error.value = createError(error);
|
||||
asyncData.data.value = unref(options.default());
|
||||
asyncData.status.value = "error";
|
||||
}).finally(() => {
|
||||
cleanupController.abort();
|
||||
delete nuxtApp._asyncDataPromises[key];
|
||||
});
|
||||
nuxtApp._asyncDataPromises[key] = promise;
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
},
|
||||
_execute: debounce((...args) => asyncData.execute(...args), 0, { leading: true }),
|
||||
_default: options.default,
|
||||
_deps: 0,
|
||||
_init: true,
|
||||
_hash: void 0,
|
||||
_off: () => {
|
||||
unsubRefreshAsyncData();
|
||||
if (nuxtApp._asyncData[key]?._init) {
|
||||
nuxtApp._asyncData[key]._init = false;
|
||||
}
|
||||
if (!hasCustomGetCachedData) {
|
||||
nextTick(() => {
|
||||
if (!nuxtApp._asyncData[key]?._init) {
|
||||
clearNuxtDataByKey(nuxtApp, key);
|
||||
asyncData.execute = () => Promise.resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
return asyncData;
|
||||
}
|
||||
const getDefault = () => void 0;
|
||||
const getDefaultCachedData = (key, nuxtApp, ctx) => {
|
||||
if (nuxtApp.isHydrating) {
|
||||
return nuxtApp.payload.data[key];
|
||||
}
|
||||
if (ctx.cause !== "refresh:manual" && ctx.cause !== "refresh:hook") {
|
||||
return nuxtApp.static.data[key];
|
||||
}
|
||||
};
|
||||
function mergeAbortSignals(signals, cleanupSignal, timeout) {
|
||||
const list = signals.filter((s) => !!s);
|
||||
if (typeof timeout === "number" && timeout >= 0) {
|
||||
const timeoutSignal = AbortSignal.timeout?.(timeout);
|
||||
if (timeoutSignal) {
|
||||
list.push(timeoutSignal);
|
||||
}
|
||||
}
|
||||
if (AbortSignal.any) {
|
||||
return AbortSignal.any(list);
|
||||
}
|
||||
const controller = new AbortController();
|
||||
for (const sig of list) {
|
||||
if (sig.aborted) {
|
||||
const reason = sig.reason ?? new DOMException("Aborted", "AbortError");
|
||||
try {
|
||||
controller.abort(reason);
|
||||
} catch {
|
||||
controller.abort();
|
||||
}
|
||||
return controller.signal;
|
||||
}
|
||||
}
|
||||
const onAbort = () => {
|
||||
const abortedSignal = list.find((s) => s.aborted);
|
||||
const reason = abortedSignal?.reason ?? new DOMException("Aborted", "AbortError");
|
||||
try {
|
||||
controller.abort(reason);
|
||||
} catch {
|
||||
controller.abort();
|
||||
}
|
||||
};
|
||||
for (const sig of list) {
|
||||
sig.addEventListener?.("abort", onAbort, { once: true, signal: cleanupSignal });
|
||||
}
|
||||
return controller.signal;
|
||||
}
|
||||
|
||||
export { useAsyncData as u };
|
||||
//# sourceMappingURL=asyncData-D5wEK86T.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"asyncData-D5wEK86T.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/asyncData-D5wEK86T.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"client.precomputed.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/client.precomputed.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
import { hasInjectionContext, inject } from 'vue';
|
||||
import { c as useNuxtApp } from './server.mjs';
|
||||
import { u as useSeoMeta$1, h as headSymbol } from '../routes/renderer.mjs';
|
||||
|
||||
function injectHead(nuxtApp) {
|
||||
const nuxt = nuxtApp || useNuxtApp();
|
||||
return nuxt.ssrContext?.head || nuxt.runWithContext(() => {
|
||||
if (hasInjectionContext()) {
|
||||
const head = inject(headSymbol);
|
||||
if (!head) {
|
||||
throw new Error("[nuxt] [unhead] Missing Unhead instance.");
|
||||
}
|
||||
return head;
|
||||
}
|
||||
});
|
||||
}
|
||||
function useSeoMeta(input, options = {}) {
|
||||
const head = options.head || injectHead(options.nuxt);
|
||||
return useSeoMeta$1(input, { head, ...options });
|
||||
}
|
||||
|
||||
export { useSeoMeta as u };
|
||||
//# sourceMappingURL=composables-2BFBRDmB.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"composables-2BFBRDmB.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/composables-2BFBRDmB.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { defineComponent, computed, withAsyncContext, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderAttr, ssrInterpolate, ssrRenderClass } from 'vue/server-renderer';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { b as useRouter, u as useRoute, n as navigateTo } from './server.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
useRouter();
|
||||
const route = useRoute();
|
||||
const request = useRequest();
|
||||
const page = computed({
|
||||
get: () => Number(route.query.page) || 1,
|
||||
set: (v) => navigateTo({ query: { ...route.query, page: v === 1 ? void 0 : v } })
|
||||
});
|
||||
const { data: newsRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
() => `news-page-${page.value}`,
|
||||
async () => await request.get("/api/news", {
|
||||
params: { page: page.value }
|
||||
}),
|
||||
{ watch: [page] }
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const news = computed(() => {
|
||||
const res = newsRes.value;
|
||||
return res?.code === 200 && Array.isArray(res.data) ? res.data : [];
|
||||
});
|
||||
const meta = computed(() => {
|
||||
const res = newsRes.value;
|
||||
return res?.meta ?? {
|
||||
current_page: 1,
|
||||
last_page: 1,
|
||||
per_page: 20,
|
||||
total: 0
|
||||
};
|
||||
});
|
||||
const pageNumbers = computed(() => {
|
||||
const cur = meta.value.current_page;
|
||||
const last = meta.value.last_page;
|
||||
if (last <= 7) return Array.from({ length: last }, (_, i) => i + 1);
|
||||
const list = [];
|
||||
if (cur <= 3) {
|
||||
list.push(1, 2, 3, 4, -1, last);
|
||||
} else if (cur >= last - 2) {
|
||||
list.push(1, -1, last - 3, last - 2, last - 1, last);
|
||||
} else {
|
||||
list.push(1, -1, cur - 1, cur, cur + 1, -1, last);
|
||||
}
|
||||
return list;
|
||||
});
|
||||
function formatDate(str) {
|
||||
if (!str) return "";
|
||||
const d = str.split(" ")[0];
|
||||
return d || str;
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: "企业资讯",
|
||||
img: "/images/企业资讯/企业资讯.png"
|
||||
}, null, _parent));
|
||||
_push(`<div class="w-full pb-[24px] sm:pb-[32px] md:pb-[40px] lg:pb-[48px] xl:pb-[56px]"><div class="layout !px-0 sm:mt-[28px] sm:mb-[29px] mt-[36px] mb-[60px]"><div class="flex flex-col w-full"><!--[-->`);
|
||||
ssrRenderList(unref(news), (newInfo) => {
|
||||
_push(`<div class="w-full cursor-pointer group bg-[#FFFFFF] hover:bg-[#F5F5F5] transition-colors duration-300"><div class="flex flex-row px-[16px] sm:px-[20px] md:px-[24px] lg:px-[40px] xl:px-[52px] py-[16px] sm:py-[20px] md:py-[22px] lg:py-[26px] xl:py-[30px]"><div class="w-[126px] h-[104px] sm:w-[160px] sm:h-[120px] md:w-[220px] md:h-[150px] lg:w-[340px] lg:h-[214px] xl:w-[370px] xl:h-[228px] flex-shrink-0"><img class="object-cover w-full h-full"${ssrRenderAttr("src", newInfo.cover)}${ssrRenderAttr("alt", newInfo.title)}></div><div class="flex flex-col flex-1 items-start justify-between sm:justify-start gap-y-[0px] sm:gap-y-[15px] ml-[10px] sm:ml-[10px] md:ml-[20px] lg:ml-[30px] xl:ml-[60px]"><span class="line-clamp-2 break-words text-[15px] sm:text-[18px] md:text-[20px] lg:text-[22px] xl:text-[24px] text-[#333333] group-hover:text-[#2E75B5] font-bold leading-snug">${ssrInterpolate(newInfo.title)}</span><span class="text-[10px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#666666]">${ssrInterpolate(formatDate(newInfo.published_at))}</span><p class="line-clamp-2 text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[18px] text-[#666666]">${ssrInterpolate(newInfo.description)}</p></div><div class="items-center hidden sm:ml-[15px] md:flex"><div class="w-[56px] h-[56px] group-hover:bg-[url('/images/企业资讯/选中.png')] bg-[url('/images/企业资讯/未选中.png')] bg-no-repeat bg-center bg-cover"></div></div></div></div>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (unref(meta).last_page > 1) {
|
||||
_push(`<nav class="hidden sm:flex mt-[16px] items-center justify-center space-x-[6px] md:space-x-[8px]" aria-label="分页"><a href="#" class="${ssrRenderClass([{ "opacity-50 pointer-events-none": unref(meta).current_page <= 1 }, "flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] border border-gray-300 text-gray-500 hover:bg-gray-100 transition-colors text-[10px] md:text-[12px] disabled:opacity-50 disabled:pointer-events-none"])}"><span class="sr-only">上一页</span><svg class="w-3 h-3 md:w-4 md:h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path></svg></a><!--[-->`);
|
||||
ssrRenderList(unref(pageNumbers), (p) => {
|
||||
_push(`<!--[-->`);
|
||||
if (p === -1) {
|
||||
_push(`<span class="flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] text-gray-500 text-[10px] md:text-[12px]"> … </span>`);
|
||||
} else {
|
||||
_push(`<a href="#" class="${ssrRenderClass([
|
||||
p === unref(meta).current_page ? "border-blue-600 bg-blue-600 text-white font-medium" : "border-gray-300 text-gray-600 hover:bg-gray-100",
|
||||
"flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] border transition-colors text-[10px] md:text-[12px]"
|
||||
])}">${ssrInterpolate(p)}</a>`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
});
|
||||
_push(`<!--]--><a href="#" class="${ssrRenderClass([{ "opacity-50 pointer-events-none": unref(meta).current_page >= unref(meta).last_page }, "flex items-center justify-center w-[32px] h-[32px] md:w-[36px] md:h-[36px] border border-gray-300 text-gray-500 hover:bg-gray-100 transition-colors text-[10px] md:text-[12px]"])}"><span class="sr-only">下一页</span><svg class="w-3 h-3 md:w-4 md:h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></a></nav>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/news/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=index-BIJrlrSw.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-BIJrlrSw.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-BIJrlrSw.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,228 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { _ as __nuxt_component_1 } from './TabsHeader-C0yMA2hS.mjs';
|
||||
import { _ as __nuxt_component_2, a as __nuxt_component_3 } from './QualificationHonor-WKOjdncI.mjs';
|
||||
import { _ as __nuxt_component_1$1 } from './CustomTitle-2eWUrzRV.mjs';
|
||||
import { defineComponent, ref, watch, withAsyncContext, mergeProps, isRef, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { p as publicAssetsURL } from '../routes/renderer.mjs';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { _ as _export_sfc } from './server.mjs';
|
||||
import './virtual_public-Ch4_18y6.mjs';
|
||||
import 'vue-router';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'axios';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "TimeItem",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
year: {},
|
||||
content: {}
|
||||
},
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col items-start shrink-0 w-[189px] sm:w-[220px] md:w-[270px] lg:w-[320px] xl:w-[339px]" }, _attrs))}><div class="flex"><div class="flex flex-col items-center ml-[6px] sm:ml-[8px] md:ml-[10px] lg:ml-[10px] xl:ml-[10px]"><div class="text-[18px] sm:text-[22px] md:text-[28px] lg:text-[34px] xl:text-[38px] font-bold text-[#336DF6] leading-none">${ssrInterpolate(__props.year)}</div><div class="mt-[6px] sm:mt-[8px] w-[15px] h-[15px] sm:w-[18px] sm:h-[18px] md:w-[22px] md:h-[22px] lg:w-[28px] lg:h-[28px] xl:w-[38px] xl:h-[38px] shrink-0 rounded-full bg-[#336DF6] border-[4px] sm:border-[4px] md:border-4 xl:border-[8px] border-[#DDEAFF] relative z-10"></div><div class="-ml-[1px] z-[1]"><div class="w-[1px] xl:w-[2px] shrink-0 h-[40px] sm:h-[48px] md:h-[60px] lg:h-[68px] xl:h-[76px] bg-[#336DF6]"></div></div><div class="-ml-[1px] z-[1]"><div class="w-[8px] h-[8px] sm:w-[8px] sm:h-[8px] md:w-[9px] md:h-[9px] lg:w-[10px] lg:h-[10px] xl:w-[12px] xl:h-[12px] rounded-full border-[1px] border-[#336DF6] bg-white shrink-0"></div></div></div></div><div class="bg-[#F8FBFF] rounded-[5px] sm:rounded-[10px] text-[#666666] w-[170px] h-[67px] p-[16px] sm:w-[220px] sm:h-[87px] sm:p-[20px] md:w-[270px] md:h-[107px] md:p-[24px] lg:w-[320px] lg:h-[126px] lg:p-[32px] xl:w-[339px] xl:h-[134px] xl:p-[40px] -mt-[24px] sm:-mt-[36px] md:-mt-[44px] lg:-mt-[54px] xl:-mt-[60px]"><div class="ml-[20px] sm:ml-[24px] md:ml-[26px] lg:ml-[28px] xl:ml-[30px] text-[10px] sm:text-[12px] md:text-[14px] lg:text-[15px] xl:text-[16px] whitespace-pre-line leading-relaxed">${ssrInterpolate(__props.content)}</div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$1 = _sfc_main$1.setup;
|
||||
_sfc_main$1.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/TimeItem.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_5 = Object.assign(_sfc_main$1, { __name: "TimeItem" });
|
||||
const _imports_0 = publicAssetsURL("/images/关于我们/culbg1.png");
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const anchorList = ref([]);
|
||||
const activeAnchor = ref("companyProfile");
|
||||
const companyProfileText = ref(
|
||||
"广西富琳清洁服务有限公司成立于 2016 年 6 月 28 日,注册资金 500 万元,是一家具有独立法人资格的综合性专业服务公司。公司核心业务集清洁服务、园林绿化养护、城乡市政道路清扫、消杀 “除四害” 服务、城市园林绿化工程、城市公园清洁等于一体,并延伸提供地毯清洗、地面打蜡、晶面处理、大理石翻新等专项服务,以及城市生活垃圾经营性收集、运输、处理的全链条解决方案。\n公司实力与专业资质备受认可,拥有中华人民共和国园林绿化养护服务企业资质 “国家一级” 和环卫清洁服务行业登记资质 “国家一级”,并获评企业信用评价 AAA 级信用企业。公司管理制度完善,作业经验丰富,专业技术全面,督察管理严格,服务质量过硬。目前拥有员工 1000 余人,其中本科、大专学历管理人员 6 人,持有物业管理、园艺师、安全工程师等专业资质的管理人员 8 人,具备 8 年以上绿化、清洁专业管理经验的人员 30 人。截至 2025 年,公司合约管理面积已突破 950 万平方米,全年营业收入达 2600 万元。\n历经多年发展,公司服务网络已遍及广西、湖南、广东、重庆等多个省市,主要服务于住宅小区、商务写字楼、市政道路及企业工厂等各类公共场所,现已成为广西区域同行业中具有规范化、专业化水平的知名清洁、绿化、消杀服务商。我们始终秉持 “专业铸就品质,细节决定成败” 的服务理念,凭借完善的作业制度和严格的质量督查体系,通过规范化管理与高效团队协作,致力于成为值得客户长期信赖的环境服务合作伙伴。"
|
||||
);
|
||||
const cultureList = ref([]);
|
||||
const developmentHistory = ref([]);
|
||||
anchorList.value = [
|
||||
{
|
||||
name: "企业简介",
|
||||
id: "companyProfile"
|
||||
},
|
||||
{
|
||||
name: "企业文化",
|
||||
id: "corporateCulture"
|
||||
},
|
||||
{
|
||||
name: "资质荣誉",
|
||||
id: "qualificationsAndHonors"
|
||||
},
|
||||
{
|
||||
name: "团队实力",
|
||||
id: "teamStrength"
|
||||
},
|
||||
{
|
||||
name: "发展历程",
|
||||
id: "developmentHistory"
|
||||
}
|
||||
];
|
||||
function scrollToAnchor(id) {
|
||||
const el = (void 0).getElementById(id);
|
||||
if (el) {
|
||||
el.scrollIntoView({ behavior: "smooth", block: "start" });
|
||||
}
|
||||
}
|
||||
watch(
|
||||
activeAnchor,
|
||||
(val) => {
|
||||
scrollToAnchor(val);
|
||||
},
|
||||
{ immediate: false }
|
||||
);
|
||||
const honorCateList = ref([]);
|
||||
const honorsByCategoryId = ref({});
|
||||
const request = useRequest();
|
||||
async function fetchHonorData() {
|
||||
try {
|
||||
const cateRes = await request.get("/api/honor_cates");
|
||||
if (cateRes?.code !== 200 || !Array.isArray(cateRes.data) || cateRes.data.length === 0) return;
|
||||
honorCateList.value = cateRes.data;
|
||||
const map = {};
|
||||
for (const cate of cateRes.data) {
|
||||
try {
|
||||
const honorRes = await request.get("/api/honors", { params: { category: cate.id } });
|
||||
if (honorRes?.code === 200 && Array.isArray(honorRes.data)) {
|
||||
map[cate.id] = honorRes.data.map((item) => ({
|
||||
name: item.title,
|
||||
url: item.cover,
|
||||
year: item.awarded_date ? String(item.awarded_date).slice(0, 4) : ""
|
||||
}));
|
||||
} else {
|
||||
map[cate.id] = [];
|
||||
}
|
||||
} catch {
|
||||
map[cate.id] = [];
|
||||
}
|
||||
}
|
||||
honorsByCategoryId.value = map;
|
||||
} catch (e) {
|
||||
honorCateList.value = [];
|
||||
honorsByCategoryId.value = {};
|
||||
}
|
||||
}
|
||||
async function fetchTimeline() {
|
||||
try {
|
||||
const res = await request.get("/api/timelines");
|
||||
if (res?.code !== 200 || !Array.isArray(res.data)) {
|
||||
developmentHistory.value = [];
|
||||
return;
|
||||
}
|
||||
developmentHistory.value = res.data.map((item) => ({
|
||||
year: item.title || (item.awarded_date ? String(item.awarded_date).slice(0, 4) : ""),
|
||||
content: item.description || ""
|
||||
}));
|
||||
} catch {
|
||||
developmentHistory.value = [];
|
||||
}
|
||||
}
|
||||
[__temp, __restore] = withAsyncContext(() => fetchHonorData()), await __temp, __restore();
|
||||
[__temp, __restore] = withAsyncContext(() => fetchTimeline()), await __temp, __restore();
|
||||
cultureList.value = [
|
||||
{
|
||||
name: "企业愿景",
|
||||
text: "成为西南地区领先、面向全国的综合环境服务标杆企业。"
|
||||
},
|
||||
{
|
||||
name: "企业使命",
|
||||
text: "以专业服务守护绿水青山,用绿色理念赋能美丽城乡。"
|
||||
},
|
||||
{
|
||||
name: "核心价值观",
|
||||
text: "专业专注、诚信尽责、精益求精、协作共赢、绿色发展。"
|
||||
},
|
||||
{
|
||||
name: "企业精神",
|
||||
text: "敬业、务实、诚信、创新。"
|
||||
},
|
||||
{
|
||||
name: "服务理念",
|
||||
text: "专业铸就品质,细节决定成败。"
|
||||
},
|
||||
{
|
||||
name: "管理理念",
|
||||
text: "制度为纲,人才为本。"
|
||||
}
|
||||
];
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
const _component_TabsHeader = __nuxt_component_1;
|
||||
const _component_CompanyProfile = __nuxt_component_2;
|
||||
const _component_QualificationHonor = __nuxt_component_3;
|
||||
const _component_CustomTitle = __nuxt_component_1$1;
|
||||
const _component_TimeItem = __nuxt_component_5;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))} data-v-2145db32>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: "关于我们",
|
||||
img: "/images/关于我们/图层-2.png"
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(_component_TabsHeader, {
|
||||
tabs: unref(anchorList),
|
||||
activeTab: unref(activeAnchor),
|
||||
"onUpdate:activeTab": ($event) => isRef(activeAnchor) ? activeAnchor.value = $event : null,
|
||||
title: "关于我们"
|
||||
}, null, _parent));
|
||||
_push(`<div class="w-full pb-[40px] xl:pb-[30px]" data-v-2145db32><section id="companyProfile" class="scroll-mt-20 xl:scroll-mt-[220px] w-full mt-[39px]" data-v-2145db32>`);
|
||||
_push(ssrRenderComponent(_component_CompanyProfile, {
|
||||
text: unref(companyProfileText),
|
||||
"is-show-more": false,
|
||||
"body-size-class": "text-[12px] sm:text-[14px] md:text-[15px] lg:text-[16px] xl:text-[16px]"
|
||||
}, null, _parent));
|
||||
_push(`</section><section id="corporateCulture" class="sm:scroll-mt-20 xl:scroll-mt-[220px] w-full relative overflow-auto pt-[24px] pb-[147px] sm:pt-[27px] sm:pb-[40px] md:pb-[60px] lg:pb-[80px] xl:pt-[69px] xl:pb-[8px] lg:flex lg:flex-col lg:items-center xl:flex xl:flex-row xl:justify-center bg-[url('/images/关于我们/企业文化背景.png')] bg-no-repeat bg-center bg-cover" data-v-2145db32><div class="flex flex-col z-[2] layout w-full" data-v-2145db32><span class="text-[21px] sm:text-[26px] md:text-[32px] lg:text-[38px] xl:text-[42px] text-[#FFFFFF] font-bold tracking-wide sm:tracking-wider" data-v-2145db32> 企业文化 </span><div class="flex flex-col xl:flex-row xl:flex-wrap gap-[24px] sm:gap-[26px] lg:gap-[28px] xl:gap-[18px] mt-[34px] sm:mt-[27px] lg:mt-[32px] xl:mt-[69px] w-full" data-v-2145db32><!--[-->`);
|
||||
ssrRenderList(unref(cultureList), (culture) => {
|
||||
_push(`<div class="w-full xl:flex-1 xl:min-w-0 pt-[10px] pb-[10px] pl-[12px] pr-[12px] sm:pt-[14px] sm:pb-[14px] sm:px-[16px] md:pt-[16px] md:pb-[16px] md:px-[18px] lg:pt-[18px] lg:pb-[20px] lg:px-[20px] xl:pt-[15px] xl:pb-[18px] xl:px-[20px] border-t border-[#3784B0] flex flex-col min-h-[65px] sm:min-h-[100px] md:min-h-[140px] lg:min-h-[200px] xl:min-h-[520px] bg-[#3784B0] bg-opacity-[0.2] transition-all duration-300 ease-in-out hover:shadow-lg" data-v-2145db32><span class="text-[14px] sm:text-[16px] md:text-[18px] lg:text-[20px] xl:text-[24px] text-[#FFFFFF] font-bold tracking-wide" data-v-2145db32>${ssrInterpolate(culture.name)}</span><span class="mt-[8px] sm:mt-[10px] md:mt-[12px] lg:mt-[14px] xl:mt-[15px] text-[12px] sm:text-[13px] md:text-[14px] lg:text-[15px] xl:text-[16px] text-[#FFFFFF] tracking-wide leading-relaxed" data-v-2145db32>${ssrInterpolate(culture.text)}</span></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div><div class="absolute bottom-0 left-0 w-full overflow-hidden z-[3] pointer-events-none" data-v-2145db32><img class="w-[200%] max-w-none -translate-x-[25%] sm:w-full sm:translate-x-0 object-cover object-bottom"${ssrRenderAttr("src", _imports_0)} alt="" data-v-2145db32></div></section><section id="qualificationsAndHonors" class="w-full scroll-mt-20 xl:scroll-mt-[220px]" data-v-2145db32>`);
|
||||
_push(ssrRenderComponent(_component_QualificationHonor, {
|
||||
"is-timeline": true,
|
||||
"tab-list": unref(honorCateList),
|
||||
"honors-by-category": unref(honorsByCategoryId),
|
||||
"full-width": true
|
||||
}, null, _parent));
|
||||
_push(`</section><section id="developmentHistory" class="w-full scroll-mt-20 xl:scroll-mt-[220px]" data-v-2145db32><div class="flex flex-col items-center w-full" data-v-2145db32>`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, { title: "发展历程" }, null, _parent));
|
||||
_push(`<div class="development-timeline-scroll relative w-full overflow-x-auto overflow-y-visible mt-[20px] sm:mt-[24px] md:mt-[28px] lg:mt-[32px] xl:mt-[40px] pt-[12px] pb-[24px] sm:pt-[14px] sm:pb-[24px] md:pt-[16px] md:pb-[28px] lg:pt-[18px] lg:pb-[28px] xl:pt-[20px] xl:pb-[32px]" data-v-2145db32><div class="inline-flex relative justify-center w-auto min-w-full pl-[20px] sm:pl-[0]" data-v-2145db32><div class="absolute top-[32px] sm:top-[40px] md:top-[46px] lg:top-[56px] xl:top-[66px] left-0 right-0 w-full h-[1px] bg-[#EEF5FF] z-[5] z-[0]" data-v-2145db32></div><div class="flex flex-row items-stretch justify-start sm:justify-center gap-[20px] sm:gap-[20px] md:gap-[24px] lg:gap-[32px] xl:gap-[40px]" data-v-2145db32><!--[-->`);
|
||||
ssrRenderList(unref(developmentHistory), (history) => {
|
||||
_push(ssrRenderComponent(_component_TimeItem, {
|
||||
key: history.year + history.content,
|
||||
year: history.year,
|
||||
content: history.content
|
||||
}, null, _parent));
|
||||
});
|
||||
_push(`<!--]--></div></div></div></div></section></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/about/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2145db32"]]);
|
||||
|
||||
export { index as default };
|
||||
//# sourceMappingURL=index-CAEscreM.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-CAEscreM.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-CAEscreM.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { _ as __nuxt_component_1 } from './TabsHeader-C0yMA2hS.mjs';
|
||||
import { defineComponent, ref, withAsyncContext, computed, watchEffect, mergeProps, isRef, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrRenderClass, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { b as useRouter } from './server.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import './virtual_public-Ch4_18y6.mjs';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
useRouter();
|
||||
const request = useRequest();
|
||||
const activeTab = ref("");
|
||||
const { data: tagsRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
"case-study-tags",
|
||||
async () => await request.get("/api/case_study_tags")
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const tabList = computed(() => {
|
||||
const res = tagsRes.value;
|
||||
if (!res || res.code !== 200 || !Array.isArray(res.data)) return [];
|
||||
return res.data.map((t) => ({ id: String(t.id), name: t.name }));
|
||||
});
|
||||
watchEffect(() => {
|
||||
if (!activeTab.value && tabList.value.length > 0) {
|
||||
const first = tabList.value[0];
|
||||
if (first) activeTab.value = first.id;
|
||||
}
|
||||
});
|
||||
const { data: caseRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
() => `case-studies-${activeTab.value || "empty"}`,
|
||||
async () => {
|
||||
if (!activeTab.value) return null;
|
||||
return await request.get("/api/case_studies", {
|
||||
params: { t_ids: activeTab.value }
|
||||
});
|
||||
},
|
||||
{ watch: [activeTab] }
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const currentTabInfoData = computed(() => {
|
||||
const headText = "我们深耕行业,已累计承接各类环境服务项目35+,与众多行业标杆客户建立起长期信赖的合作关系。以下是我们按业务领域分类的部分实践成果。";
|
||||
const res = caseRes.value;
|
||||
const list = res?.code === 200 && Array.isArray(res.data) ? res.data : [];
|
||||
return {
|
||||
title: headText,
|
||||
list: list.map((item) => ({
|
||||
id: String(item.id),
|
||||
title: item.title,
|
||||
keyWords: Array.isArray(item.tags) ? item.tags.map((t) => t.name) : [],
|
||||
desc: item.description,
|
||||
url: item.cover
|
||||
}))
|
||||
};
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
const _component_TabsHeader = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: "服务案例",
|
||||
img: "/images/服务案例/服务案例.png"
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(_component_TabsHeader, {
|
||||
tabs: unref(tabList),
|
||||
activeTab: unref(activeTab),
|
||||
"onUpdate:activeTab": ($event) => isRef(activeTab) ? activeTab.value = $event : null,
|
||||
title: "服务案例"
|
||||
}, null, _parent));
|
||||
_push(`<div class="w-full pb-[20px] sm:pb-[24px] md:pb-[30px] lg:pb-[38px] xl:pb-[45px]"><div class="w-full layout pt-[28px] sm:pt-[34px] md:pt-[44px] lg:pt-[54px] xl:pt-[64px]"><div class="flex flex-col items-center w-full"><p class="mt-[18px] sm:mt-[18px] md:mt-[20px] lg:mt-[22px] xl:mt-[24px] max-w-[800px] text-center text-[12px] sm:text-[14px] md:text-[16px] lg:text-[18px] xl:text-[20px] text-[#333333] leading-relaxed">${ssrInterpolate(unref(currentTabInfoData).title)}</p></div><div class="w-full mt-[28px] sm:mt-[32px] md:mt-[36px] lg:mt-[40px] xl:mt-[44px] flex flex-col items-center gap-[40px] sm:gap-[36px] md:gap-[40px] lg:gap-[44px] xl:gap-[48px]"><!--[-->`);
|
||||
ssrRenderList(unref(currentTabInfoData).list, (item, index) => {
|
||||
_push(`<div class="w-full bg-[#FFFFFF] overflow-hidden transition-all duration-300 ease-out hover:-translate-y-1 hover:shadow-[0_12px_24px_rgba(0,0,0,0.12)]"><div class="${ssrRenderClass([{ "md:flex-row-reverse": index % 2 === 1 }, "flex flex-col md:flex-row"])}"><div class="w-full md:w-1/2"><img class="w-full h-[220px] sm:h-[240px] md:h-[100%] object-cover"${ssrRenderAttr("src", item.url)}${ssrRenderAttr("alt", item.title)}></div><div class="flex items-start w-full md:w-1/2"><div class="px-[18px] sm:px-[20px] md:px-[24px] lg:px-[28px] xl:px-[32px] py-[18px] sm:py-[20px] md:py-[22px] lg:py-[24px] xl:py-[26px]"><h2 class="text-left text-[#333333] font-bold text-[18px] sm:text-[18px] md:text-[20px] lg:text-[22px] xl:text-[24px]">${ssrInterpolate(item.title)}</h2><div class="mt-[10px] flex flex-wrap gap-[8px] sm:gap-[6px] md:gap-[8px] lg:gap-[10px] xl:gap-[12px] text-[12px] sm:text-[12px] md:text-[13px] lg:text-[14px] xl:text-[14px] text-[#2D75B5]"><!--[-->`);
|
||||
ssrRenderList(item.keyWords, (keyWord) => {
|
||||
_push(`<span> #${ssrInterpolate(keyWord)}</span>`);
|
||||
});
|
||||
_push(`<!--]--></div><p class="mt-[12px] text-[#333333] text-[12px] sm:text-[13px] md:text-[14px] lg:text-[15px] xl:text-[16px] leading-relaxed">${ssrInterpolate(item.desc)}</p><div class="mt-[14px]"><button class="px-[18px] sm:px-[18px] md:px-[20px] lg:px-[22px] xl:px-[24px] py-[6px] sm:py-[6px] md:py-[8px] lg:py-[8px] xl:py-[10px] border border-[#1364AF] rounded-full text-[12px] sm:text-[12px] md:text-[13px] lg:text-[14px] xl:text-[14px] text-[#2D75B5] bg-white hover:bg-[#1364AF] hover:text-white transition-colors duration-300"> 了解更多 >> </button></div></div></div></div></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/service/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=index-DDtxt1bx.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-DDtxt1bx.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-DDtxt1bx.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,124 +0,0 @@
|
|||
import { _ as __nuxt_component_0 } from './HeaderImage-92nFA80c.mjs';
|
||||
import { _ as __nuxt_component_1 } from './CustomTitle-2eWUrzRV.mjs';
|
||||
import { defineComponent, withAsyncContext, computed, reactive, ref, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderAttr, ssrInterpolate, ssrRenderClass, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual } from 'vue/server-renderer';
|
||||
import { p as publicAssetsURL } from '../routes/renderer.mjs';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import './server.mjs';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _imports_0 = publicAssetsURL("/images/联系我们/map.png");
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const companyInfoList = [
|
||||
{
|
||||
title: "公司全称",
|
||||
content: "广西富琳清洁服务有限公司",
|
||||
url: "/images/联系我们/公司-i.png"
|
||||
},
|
||||
{
|
||||
title: "总部地址",
|
||||
content: "广西壮族自治区防城港市港口区江山大道海港城CBD1栋20楼",
|
||||
url: "/images/联系我们/总部地址-i.png"
|
||||
},
|
||||
{
|
||||
title: "服务热线",
|
||||
content: "13907804431",
|
||||
url: "/images/联系我们/服务热线-i.png"
|
||||
},
|
||||
{
|
||||
title: "E-MAIL",
|
||||
content: "mail@xxxxxxxxxx.com",
|
||||
url: "/images/联系我们/图层-i.png"
|
||||
}
|
||||
];
|
||||
const request = useRequest();
|
||||
const { data: contactTypesRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
"contact-types",
|
||||
async () => await request.get("/api/contact_types")
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const contactTypes = computed(() => {
|
||||
const res = contactTypesRes.value;
|
||||
return res?.code === 200 && Array.isArray(res.data) ? res.data : [];
|
||||
});
|
||||
const form = reactive({
|
||||
name: "",
|
||||
phone: "",
|
||||
company: "",
|
||||
type: "",
|
||||
captcha: "",
|
||||
content: ""
|
||||
});
|
||||
const captcha = reactive({ key: "", img: "" });
|
||||
const captchaLoading = ref(false);
|
||||
const submitting = ref(false);
|
||||
const submitError = ref("");
|
||||
const submitSuccess = ref("");
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_HeaderImage = __nuxt_component_0;
|
||||
const _component_CustomTitle = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full pb-[40px] xl:pb-[38px]" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_HeaderImage, {
|
||||
title: "联系我们",
|
||||
img: "/images/联系我们/联系我们.png"
|
||||
}, null, _parent));
|
||||
_push(`<div class="layout">`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, {
|
||||
class: "xl:hidden mt-[40px] xl:mt-0",
|
||||
title: "联系我们"
|
||||
}, null, _parent));
|
||||
_push(`<div class="mt-[32px] sm:mt-[40px] md:mt-[48px] flex flex-col items-center"><div class="w-full grid grid-cols-2 sm:grid-cols-2 lg:grid-cols-4 gap-[16px] sm:gap-[20px] md:gap-[24px] lg:gap-[28px] xl:gap-[32px]"><!--[-->`);
|
||||
ssrRenderList(companyInfoList, (companyInfo) => {
|
||||
_push(`<div class="grid rounded-[8px]"><div class="flex justify-center translate-y-[50%] z-[1]"><img${ssrRenderAttr("src", companyInfo.url)}${ssrRenderAttr("alt", companyInfo.title)} class="w-[44px] h-[44px] sm:w-[56px] sm:h-[56px] md:w-[64px] md:h-[64px] lg:w-[72px] lg:h-[72px] xl:w-[88px] xl:h-[88px] rounded-[6px] sm:rounded-[8px] object-contain"></div><div class="bg-[#FFFFFF] rounded-[8px] shadow-[0_4px_20px_rgba(0,0,0,0.06)] text-center pt-[28px] pb-[16px] px-[12px] sm:pt-[32px] sm:pb-[20px] sm:px-[16px] md:pt-[36px] md:pb-[22px] md:px-[20px] lg:pt-[40px] lg:pb-[24px] lg:px-[24px] xl:pt-[44px] xl:pb-[28px] xl:px-[28px]"><div class="text-[14px] sm:text-[15px] md:text-[16px] lg:text-[17px] xl:text-[18px] font-bold text-[#2E75B5] mt-[12px] sm:mt-[14px] md:mt-[16px] lg:mt-[18px] xl:mt-[20px]">${ssrInterpolate(companyInfo.title)}</div><div class="text-[11px] sm:text-[12px] md:text-[13px] lg:text-[13px] xl:text-[14px] text-[#8A91AC] mt-[4px] sm:mt-[5px] md:mt-[6px] lg:mt-[6px] xl:mt-[8px] leading-relaxed break-words">${ssrInterpolate(companyInfo.content)}</div></div></div>`);
|
||||
});
|
||||
_push(`<!--]--></div><div class="w-full sm:mt-[34px] mt-[40px] flex flex-col lg:flex-row gap-[24px] sm:gap-[28px] lg:gap-[32px]"><div class="w-full lg:w-1/2 bg-[#FFFFFF] rounded-[8px] shadow-[0_4px_20px_rgba(0,0,0,0.06)] px-[18px] sm:px-[24px] md:px-[30px] lg:px-[34px] xl:px-[38px] py-[20px] sm:py-[24px] md:py-[28px] lg:py-[32px]"><h1 class="text-[20px] sm:text-[22px] md:text-[24px] lg:text-[26px] xl:text-[28px] text-[#031B4E] font-bold"> 在线询价 </h1><p class="mt-[10px] sm:mt-[12px] md:mt-[14px] text-[#031B4E] text-[12px] sm:text-[13px] md:text-[14px] lg:text-[15px]"> 我们会尽快回复您的需求 </p><form class="sm:mt-[18px] mt-[20px] space-y-[12px] sm:space-y-[14px]"><div class="w-full"><input type="text" placeholder="您的姓名"${ssrRenderAttr("value", unref(form).name)} class="w-full text-[12px] sm:text-[13px] md:text-[14px] text-[#333333] px-[12px] sm:px-[14px] md:px-[16px] py-[8px] sm:py-[9px] md:py-[10px] border border-gray-200 rounded-[4px] bg-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500/15 focus:border-blue-500 transition-all"></div><div class="w-full"><input type="tel" placeholder="您的电话"${ssrRenderAttr("value", unref(form).phone)} class="w-full text-[12px] sm:text-[13px] md:text-[14px] text-[#333333] px-[12px] sm:px-[14px] md:px-[16px] py-[8px] sm:py-[9px] md:py-[10px] border border-gray-200 rounded-[4px] bg-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500/15 focus:border-blue-500 transition-all"></div><div><input type="text" placeholder="公司名称"${ssrRenderAttr("value", unref(form).company)} class="w-full text-[12px] sm:text-[13px] md:text-[14px] text-[#333333] px-[12px] sm:px-[14px] md:px-[16px] py-[8px] sm:py-[9px] md:py-[10px] border border-gray-200 rounded-[4px] bg-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500/15 focus:border-blue-500 transition-all"></div><div class="relative"><select class="${ssrRenderClass([unref(form).type ? "text-[#333333]" : "text-gray-400", "w-full text-[12px] sm:text-[13px] md:text-[14px] px-[12px] sm:px-[14px] md:px-[16px] py-[8px] sm:py-[9px] md:py-[10px] border border-gray-200 rounded-[4px] bg-white appearance-none focus:outline-none focus:ring-2 focus:ring-blue-500/15 focus:border-blue-500 transition-all"])}"><option value="" disabled${ssrIncludeBooleanAttr(Array.isArray(unref(form).type) ? ssrLooseContain(unref(form).type, "") : ssrLooseEqual(unref(form).type, "")) ? " selected" : ""}>业务需求</option><!--[-->`);
|
||||
ssrRenderList(unref(contactTypes), (item) => {
|
||||
_push(`<option${ssrRenderAttr("value", String(item.id))}${ssrIncludeBooleanAttr(Array.isArray(unref(form).type) ? ssrLooseContain(unref(form).type, String(item.id)) : ssrLooseEqual(unref(form).type, String(item.id))) ? " selected" : ""}>${ssrInterpolate(item.name)}</option>`);
|
||||
});
|
||||
_push(`<!--]--></select><div class="absolute right-[8px] top-1/2 -translate-y-1/2 pointer-events-none"><svg class="w-3 h-3 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></div></div><div><textarea placeholder="项目概况与备注" rows="5" class="w-full text-[12px] sm:text-[13px] md:text-[14px] text-[#333333] px-[12px] sm:px-[14px] md:px-[16px] py-[8px] sm:py-[9px] md:py-[10px] border border-gray-200 rounded-[4px] bg-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500/15 focus:border-blue-500 transition-all resize-none">${ssrInterpolate(unref(form).content)}</textarea></div><div class="flex items-center gap-[10px] w-full"><input type="text" placeholder="验证码"${ssrRenderAttr("value", unref(form).captcha)} class="flex-1 min-w-0 text-[12px] sm:text-[13px] md:text-[14px] text-[#333333] px-[12px] sm:px-[14px] md:px-[16px] py-[8px] sm:py-[9px] md:py-[10px] border border-gray-200 rounded-[4px] bg-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500/15 focus:border-blue-500 transition-all"><button type="button" class="shrink-0 w-[98px] sm:w-[108px] md:w-[118px] h-[34px] sm:h-[36px] md:h-[38px] rounded-[4px] overflow-hidden border border-gray-200 bg-white disabled:opacity-60"${ssrIncludeBooleanAttr(unref(captchaLoading)) ? " disabled" : ""} aria-label="刷新验证码" title="点击刷新验证码">`);
|
||||
if (!unref(captcha).img) {
|
||||
_push(`<span class="w-full h-full flex items-center justify-center text-[12px] text-[#8A91AC]">${ssrInterpolate(unref(captchaLoading) ? "加载中" : "获取验证码")}</span>`);
|
||||
} else {
|
||||
_push(`<img${ssrRenderAttr("src", unref(captcha).img)} alt="验证码" class="object-cover w-full h-full" draggable="false">`);
|
||||
}
|
||||
_push(`</button></div><div><button type="submit"${ssrIncludeBooleanAttr(unref(submitting)) ? " disabled" : ""} class="w-full py-[10px] sm:py-[11px] md:py-[12px] text-[12px] sm:text-[13px] md:text-[14px] text-[#FFFFFF] bg-[#2E75B5] hover:bg-[#0074c2] font-medium transition-colors disabled:opacity-60 disabled:hover:bg-[#0189E8]">${ssrInterpolate(unref(submitting) ? "提交中..." : "提交")}</button></div>`);
|
||||
if (unref(submitError)) {
|
||||
_push(`<p class="text-[12px] sm:text-[13px] text-[#E55353]">${ssrInterpolate(unref(submitError))}</p>`);
|
||||
} else if (unref(submitSuccess)) {
|
||||
_push(`<p class="text-[12px] sm:text-[13px] text-[#18A058]">${ssrInterpolate(unref(submitSuccess))}</p>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</form></div><div class="overflow-hidden relative flex-none relative h-[500px] sm:flex-none md:flex-none lg:flex-1 lg:h-auto"><div class="absolute inset-0"><img class="object-cover w-full h-full"${ssrRenderAttr("src", _imports_0)} alt=""></div></div></div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/contact/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=index-DGcqjns9.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-DGcqjns9.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-DGcqjns9.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,576 +0,0 @@
|
|||
import { defineComponent, ref, mergeProps, unref, withCtx, createVNode, openBlock, createBlock, createCommentVNode, Fragment, renderList, computed, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderAttr, ssrInterpolate, ssrRenderStyle } from 'vue/server-renderer';
|
||||
import { Swiper, SwiperSlide } from 'swiper/vue';
|
||||
import { Mousewheel, Pagination, Autoplay, Navigation, EffectFade } from 'swiper/modules';
|
||||
import { _ as _export_sfc, a as __nuxt_component_5, n as navigateTo } from './server.mjs';
|
||||
import { _ as __nuxt_component_2$1, a as __nuxt_component_3 } from './QualificationHonor-WKOjdncI.mjs';
|
||||
import { _ as __nuxt_component_1$1 } from './CustomTitle-2eWUrzRV.mjs';
|
||||
import { p as publicAssetsURL } from '../routes/renderer.mjs';
|
||||
import { useRouter } from 'vue-router';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'axios';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
||||
__name: "BannerSwiper",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
banners: {
|
||||
type: Array,
|
||||
required: true,
|
||||
validator: (val) => Array.isArray(val) && val.every(
|
||||
(item) => typeof item === "object" && item !== null && "url" in item
|
||||
)
|
||||
},
|
||||
// 自动播放配置
|
||||
autoplay: {
|
||||
type: Object,
|
||||
default: () => ({
|
||||
delay: 3e3,
|
||||
// 3秒切换一次
|
||||
disableOnInteraction: false
|
||||
// 点击后不停止自动播放
|
||||
})
|
||||
},
|
||||
// 轮播效果:slide(默认)/ fade(渐变)
|
||||
effect: {
|
||||
type: String,
|
||||
default: "slide",
|
||||
validator: (val) => typeof val === "string" && ["slide", "fade"].includes(val)
|
||||
},
|
||||
// 是否显示分页器
|
||||
showPagination: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
// 是否显示左右切换按钮
|
||||
showNavigation: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
emits: ["onClickMore"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const emit = __emit;
|
||||
const props = __props;
|
||||
const modules = [Autoplay, Pagination, Navigation, EffectFade];
|
||||
const swiperRef = ref(null);
|
||||
const autoplayOptions = ref({
|
||||
...props.autoplay
|
||||
});
|
||||
const paginationOptions = ref({
|
||||
clickable: true,
|
||||
enabled: props.showPagination
|
||||
});
|
||||
const navigationOptions = ref({
|
||||
nextEl: ".swiper-button-next",
|
||||
prevEl: ".swiper-button-prev",
|
||||
enabled: props.showNavigation
|
||||
});
|
||||
const onClickMore = (item) => {
|
||||
emit("onClickMore", item);
|
||||
};
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "relative w-full h-full" }, _attrs))} data-v-fbea4d53>`);
|
||||
_push(ssrRenderComponent(unref(Swiper), {
|
||||
ref_key: "swiperRef",
|
||||
ref: swiperRef,
|
||||
modules,
|
||||
"slides-per-view": 1,
|
||||
"space-between": 0,
|
||||
autoplay: autoplayOptions.value,
|
||||
loop: true,
|
||||
lazy: true,
|
||||
"preload-images": true,
|
||||
pagination: paginationOptions.value,
|
||||
navigation: navigationOptions.value,
|
||||
effect: __props.effect,
|
||||
class: "w-full h-full"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<!--[-->`);
|
||||
ssrRenderList(__props.banners, (item, index2) => {
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), {
|
||||
key: index2,
|
||||
class: "w-full h-full"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<img${ssrRenderAttr("src", item.url)}${ssrRenderAttr("alt", item.alt || `Banner ${index2 + 1}`)} class="object-cover w-full h-full" data-v-fbea4d53${_scopeId2}><div class="absolute inset-0 w-full h-full" data-v-fbea4d53${_scopeId2}><div class="flex flex-col justify-center items-start h-full layout" data-v-fbea4d53${_scopeId2}>`);
|
||||
if (item.title) {
|
||||
_push3(`<div class="banner-title text-[24px] sm:text-[28px] md:text-[34px] lg:text-[44px] xl:text-[60px] 2xl:text-[72px] text-white font-bold leading-tight" data-v-fbea4d53${_scopeId2}>${item.title ?? ""}</div>`);
|
||||
} else {
|
||||
_push3(`<!---->`);
|
||||
}
|
||||
if (item.describe) {
|
||||
_push3(`<div class="banner-desc mt-[6px] sm:mt-[10px] md:mt-[12px] lg:mt-[14px] xl:mt-[16px] text-[14px] sm:text-[16px] md:text-[20px] lg:text-[26px] xl:text-[36px] 2xl:text-[42px] text-white font-medium opacity-90 leading-snug" data-v-fbea4d53${_scopeId2}>${item.describe ?? ""}</div>`);
|
||||
} else {
|
||||
_push3(`<!---->`);
|
||||
}
|
||||
if (item?.jump_config?.web_link) {
|
||||
_push3(`<div class="banner-btn mt-[10px] sm:mt-[16px] md:mt-[18px] xl:mt-[24px]" data-v-fbea4d53${_scopeId2}><button type="button" class="bg-white px-[16px] sm:px-[22px] md:px-[24px] xl:px-[28px] h-[32px] sm:h-[38px] md:h-[40px] xl:h-[44px] text-[13px] sm:text-[14px] md:text-[15px] xl:text-[16px] font-medium text-[#2D75B5] cursor-pointer hover:bg-[#2D75B5] hover:text-white transition-colors duration-300 flex items-center justify-center" data-v-fbea4d53${_scopeId2}> 了解更多 >> </button></div>`);
|
||||
} else {
|
||||
_push3(`<!---->`);
|
||||
}
|
||||
_push3(`</div></div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("img", {
|
||||
src: item.url,
|
||||
alt: item.alt || `Banner ${index2 + 1}`,
|
||||
class: "object-cover w-full h-full"
|
||||
}, null, 8, ["src", "alt"]),
|
||||
createVNode("div", { class: "absolute inset-0 w-full h-full" }, [
|
||||
createVNode("div", { class: "flex flex-col justify-center items-start h-full layout" }, [
|
||||
item.title ? (openBlock(), createBlock("div", {
|
||||
key: 0,
|
||||
class: "banner-title text-[24px] sm:text-[28px] md:text-[34px] lg:text-[44px] xl:text-[60px] 2xl:text-[72px] text-white font-bold leading-tight",
|
||||
innerHTML: item.title
|
||||
}, null, 8, ["innerHTML"])) : createCommentVNode("", true),
|
||||
item.describe ? (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: "banner-desc mt-[6px] sm:mt-[10px] md:mt-[12px] lg:mt-[14px] xl:mt-[16px] text-[14px] sm:text-[16px] md:text-[20px] lg:text-[26px] xl:text-[36px] 2xl:text-[42px] text-white font-medium opacity-90 leading-snug",
|
||||
innerHTML: item.describe
|
||||
}, null, 8, ["innerHTML"])) : createCommentVNode("", true),
|
||||
item?.jump_config?.web_link ? (openBlock(), createBlock("div", {
|
||||
key: 2,
|
||||
class: "banner-btn mt-[10px] sm:mt-[16px] md:mt-[18px] xl:mt-[24px]"
|
||||
}, [
|
||||
createVNode("button", {
|
||||
type: "button",
|
||||
onClick: () => onClickMore(item),
|
||||
class: "bg-white px-[16px] sm:px-[22px] md:px-[24px] xl:px-[28px] h-[32px] sm:h-[38px] md:h-[40px] xl:h-[44px] text-[13px] sm:text-[14px] md:text-[15px] xl:text-[16px] font-medium text-[#2D75B5] cursor-pointer hover:bg-[#2D75B5] hover:text-white transition-colors duration-300 flex items-center justify-center"
|
||||
}, " 了解更多 >> ", 8, ["onClick"])
|
||||
])) : createCommentVNode("", true)
|
||||
])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
});
|
||||
_push2(`<!--]-->`);
|
||||
} else {
|
||||
return [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(__props.banners, (item, index2) => {
|
||||
return openBlock(), createBlock(unref(SwiperSlide), {
|
||||
key: index2,
|
||||
class: "w-full h-full"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode("img", {
|
||||
src: item.url,
|
||||
alt: item.alt || `Banner ${index2 + 1}`,
|
||||
class: "object-cover w-full h-full"
|
||||
}, null, 8, ["src", "alt"]),
|
||||
createVNode("div", { class: "absolute inset-0 w-full h-full" }, [
|
||||
createVNode("div", { class: "flex flex-col justify-center items-start h-full layout" }, [
|
||||
item.title ? (openBlock(), createBlock("div", {
|
||||
key: 0,
|
||||
class: "banner-title text-[24px] sm:text-[28px] md:text-[34px] lg:text-[44px] xl:text-[60px] 2xl:text-[72px] text-white font-bold leading-tight",
|
||||
innerHTML: item.title
|
||||
}, null, 8, ["innerHTML"])) : createCommentVNode("", true),
|
||||
item.describe ? (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: "banner-desc mt-[6px] sm:mt-[10px] md:mt-[12px] lg:mt-[14px] xl:mt-[16px] text-[14px] sm:text-[16px] md:text-[20px] lg:text-[26px] xl:text-[36px] 2xl:text-[42px] text-white font-medium opacity-90 leading-snug",
|
||||
innerHTML: item.describe
|
||||
}, null, 8, ["innerHTML"])) : createCommentVNode("", true),
|
||||
item?.jump_config?.web_link ? (openBlock(), createBlock("div", {
|
||||
key: 2,
|
||||
class: "banner-btn mt-[10px] sm:mt-[16px] md:mt-[18px] xl:mt-[24px]"
|
||||
}, [
|
||||
createVNode("button", {
|
||||
type: "button",
|
||||
onClick: () => onClickMore(item),
|
||||
class: "bg-white px-[16px] sm:px-[22px] md:px-[24px] xl:px-[28px] h-[32px] sm:h-[38px] md:h-[40px] xl:h-[44px] text-[13px] sm:text-[14px] md:text-[15px] xl:text-[16px] font-medium text-[#2D75B5] cursor-pointer hover:bg-[#2D75B5] hover:text-white transition-colors duration-300 flex items-center justify-center"
|
||||
}, " 了解更多 >> ", 8, ["onClick"])
|
||||
])) : createCommentVNode("", true)
|
||||
])
|
||||
])
|
||||
]),
|
||||
_: 2
|
||||
}, 1024);
|
||||
}), 128))
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$4 = _sfc_main$4.setup;
|
||||
_sfc_main$4.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/BannerSwiper.vue");
|
||||
return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_0 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$4, [["__scopeId", "data-v-fbea4d53"]]), { __name: "BannerSwiper" });
|
||||
const _imports_0 = publicAssetsURL("/images/首页/了解更多业务.png");
|
||||
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
||||
__name: "MainBusiness",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
list: { default: () => [] }
|
||||
},
|
||||
setup(__props) {
|
||||
useRouter();
|
||||
const props = __props;
|
||||
const dataList = computed(() => props.list);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_CustomTitle = __nuxt_component_1$1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col justify-center w-full h-full" }, _attrs))}><div class="w-full min-h-full pt-[40px] xl:pt-[30px] pb-[40px] xl:pb-[34px] flex flex-col items-center justify-center bg-[url('/images/首页/主营业务背景.png')] bg-no-repeat bg-[length:100%_100%] bg-center"><div class="flex flex-col items-center w-full layout">`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, { title: "主营业务" }, null, _parent));
|
||||
_push(`<div class="w-full mt-[40px] sm:mt-[48px] md:mt-[56px] xl:mt-[65px] grid items-end grid-cols-2 sm:grid-cols-3 gap-[20px] xl:gap-[10px]"><!--[-->`);
|
||||
ssrRenderList(dataList.value, (data) => {
|
||||
_push(`<div class="flex flex-col w-full bg-white"><div class="w-full aspect-[191/113] overflow-hidden shadow-md group"><img class="object-cover w-full h-full transition-all duration-300 ease-in-out group-hover:scale-110 group-hover:-translate-y-2"${ssrRenderAttr("src", data.url)}${ssrRenderAttr("alt", data.name)}></div><div class="pl-[12px] pt-[12px] pr-[16px] pb-[12px]"><p class="text-[14px] sm:text-[18px] xl:text-[20px] text-[#333333] font-bold">${ssrInterpolate(data.name)}</p>`);
|
||||
if (data.desc) {
|
||||
_push(`<p class="truncate text-[12px] sm:text-[15px] xl:text-[16px] text-[#666666]">${ssrInterpolate(data.desc)}</p>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
});
|
||||
_push(`<!--]--><div class="hover:translate-x-1 transition-transform duration-300 flex flex-col items-center justify-center w-full self-stretch min-h-[120px] bg-white cursor-pointer"><div class=""><img class="w-[40px] h-[40px] xl:w-[23px] xl:h-[23px]"${ssrRenderAttr("src", _imports_0)} alt="更多业务图片"></div><span class="mt-[8px] xl:mt-[7px] text-[14px] sm:text-[18px] xl:text-[20px] text-[#2E75B5]">了解更多业务</span></div></div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$3 = _sfc_main$3.setup;
|
||||
_sfc_main$3.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/MainBusiness.vue");
|
||||
return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_2 = Object.assign(_sfc_main$3, { __name: "MainBusiness" });
|
||||
const _sfc_main$2 = {
|
||||
__name: "PartnerScroll",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
// 第一行数据
|
||||
partners1: {
|
||||
type: Array,
|
||||
required: true,
|
||||
default: () => []
|
||||
},
|
||||
// 第二行数据
|
||||
partners2: {
|
||||
type: Array,
|
||||
required: true,
|
||||
default: () => []
|
||||
},
|
||||
// 第一行滚动时长(秒)
|
||||
duration1: {
|
||||
type: Number,
|
||||
default: 25
|
||||
},
|
||||
// 第二行滚动时长(秒)
|
||||
duration2: {
|
||||
type: Number,
|
||||
default: 30
|
||||
},
|
||||
itemWidth: {
|
||||
type: String,
|
||||
default: "220px"
|
||||
},
|
||||
itemHeight: {
|
||||
type: String,
|
||||
default: "90px"
|
||||
},
|
||||
// 行间距
|
||||
rowGap: {
|
||||
type: String,
|
||||
default: "24px"
|
||||
}
|
||||
},
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _cssVars = { style: {
|
||||
":--v02b74dfc": __props.rowGap,
|
||||
":--v6a738313": __props.itemWidth,
|
||||
":--v6ba4350c": __props.itemHeight
|
||||
} };
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "partner-scroll-container" }, _attrs, _cssVars))} data-v-e4eb4a4e><div class="absolute left-0 top-0 bottom-0 w-[160px] bg-gradient-to-r from-white to-transparent z-10 pointer-events-none" data-v-e4eb4a4e></div><div class="absolute right-0 top-0 bottom-0 w-[160px] bg-gradient-to-l from-white to-transparent z-10 pointer-events-none" data-v-e4eb4a4e></div><div class="partner-scroll-row" data-v-e4eb4a4e><div class="partner-scroll-track" style="${ssrRenderStyle({ animationDuration: `${__props.duration1}s` })}" data-v-e4eb4a4e><div class="partner-items" data-v-e4eb4a4e><!--[-->`);
|
||||
ssrRenderList(__props.partners1, (item, index2) => {
|
||||
_push(`<div class="partner-item" data-v-e4eb4a4e><img${ssrRenderAttr("src", item.logo)}${ssrRenderAttr("alt", item.name)} class="partner-logo sm:px-[5px] px-[15px]" loading="lazy" data-v-e4eb4a4e></div>`);
|
||||
});
|
||||
_push(`<!--]--></div><div class="partner-items" data-v-e4eb4a4e><!--[-->`);
|
||||
ssrRenderList(__props.partners1, (item, index2) => {
|
||||
_push(`<div class="partner-item" data-v-e4eb4a4e><img${ssrRenderAttr("src", item.logo)}${ssrRenderAttr("alt", item.name)} class="partner-logo sm:px-[5px] px-[15px]" loading="lazy" data-v-e4eb4a4e></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div></div><div class="partner-scroll-row reverse" data-v-e4eb4a4e><div class="partner-scroll-track" style="${ssrRenderStyle({ animationDuration: `${__props.duration2}s` })}" data-v-e4eb4a4e><div class="partner-items" data-v-e4eb4a4e><!--[-->`);
|
||||
ssrRenderList(__props.partners2, (item, index2) => {
|
||||
_push(`<div class="partner-item" data-v-e4eb4a4e><img${ssrRenderAttr("src", item.logo)}${ssrRenderAttr("alt", item.name)} class="partner-logo sm:px-[5px] px-[15px]" loading="lazy" data-v-e4eb4a4e></div>`);
|
||||
});
|
||||
_push(`<!--]--></div><div class="partner-items" data-v-e4eb4a4e><!--[-->`);
|
||||
ssrRenderList(__props.partners2, (item, index2) => {
|
||||
_push(`<div class="partner-item" data-v-e4eb4a4e><img${ssrRenderAttr("src", item.logo)}${ssrRenderAttr("alt", item.name)} class="partner-logo sm:px-[5px] px-[15px]" loading="lazy" data-v-e4eb4a4e></div>`);
|
||||
});
|
||||
_push(`<!--]--></div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
};
|
||||
const _sfc_setup$2 = _sfc_main$2.setup;
|
||||
_sfc_main$2.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/PartnerScroll.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_1 = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-e4eb4a4e"]]);
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "Partner",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const partnerList = ref([]);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_CustomTitle = __nuxt_component_1$1;
|
||||
const _component_PartnerScroll = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "w-full" }, _attrs))}><div class="layout flex flex-col items-center bg-white py-[40px] xl:py-[100px]">`);
|
||||
_push(ssrRenderComponent(_component_CustomTitle, { title: "合作伙伴" }, null, _parent));
|
||||
_push(ssrRenderComponent(_component_PartnerScroll, {
|
||||
class: "mt-[20px] xl:mt-[20px]",
|
||||
partners1: partnerList.value,
|
||||
partners2: partnerList.value,
|
||||
duration1: 50,
|
||||
duration2: 60,
|
||||
"item-width": "220px",
|
||||
"item-height": "50px",
|
||||
"row-gap": "14px"
|
||||
}, null, _parent));
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$1 = _sfc_main$1.setup;
|
||||
_sfc_main$1.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Partner.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_4 = Object.assign(_sfc_main$1, { __name: "Partner" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const modules = [Mousewheel, Pagination];
|
||||
ref(false);
|
||||
const companyProfileText = ref(
|
||||
'广西富琳清洁服务有限公司,成立于2016年,是一家拥有清洁服务与园林绿化养护"国家双一级资质"的综合性环境服务商。\n我们以专业保洁、园林养护、垃圾清运、水域保洁及专业消杀为主营业务,为政府、企业及各类机构提供一体化环境解决方案。公司拥有超千人员工团队,业务覆盖4+省市,累计服务面积突破950万平方米,以"专业铸就品质,细节决定成败"的理念,致力于成为值得信赖的环境合作伙伴。'
|
||||
);
|
||||
const bannerList = ref([]);
|
||||
const mainBusinessList = ref([]);
|
||||
const onClickBannerMore = (item) => {
|
||||
const link = item.jump_config?.web_link;
|
||||
if (link) {
|
||||
if (link.startsWith("http")) (void 0).open(link, "_blank");
|
||||
else navigateTo(link);
|
||||
}
|
||||
};
|
||||
const honorCateList = ref([]);
|
||||
const honorsByCategoryId = ref({});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_BannerSwiper = __nuxt_component_0;
|
||||
const _component_CompanyProfile = __nuxt_component_2$1;
|
||||
const _component_MainBusiness = __nuxt_component_2;
|
||||
const _component_QualificationHonor = __nuxt_component_3;
|
||||
const _component_Partner = __nuxt_component_4;
|
||||
const _component_AppFooter = __nuxt_component_5;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "bg-white w-full relative z-[1]" }, _attrs))} data-v-1443efa7>`);
|
||||
_push(ssrRenderComponent(unref(Swiper), {
|
||||
modules,
|
||||
direction: "vertical",
|
||||
"slides-per-view": "auto",
|
||||
"space-between": 0,
|
||||
speed: 1e3,
|
||||
mousewheel: { releaseOnEdges: true, sensitivity: 1 },
|
||||
pagination: { clickable: true },
|
||||
class: "home-fullpage-swiper"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), { class: "home-banner-slide h-[250px] sm:h-[380px] lg:h-[500px] xl:h-full" }, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<section class="w-full home-fullpage-section home-banner-section" data-v-1443efa7${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(_component_BannerSwiper, {
|
||||
banners: bannerList.value,
|
||||
effect: "fade",
|
||||
autoplay: { delay: 4e3 },
|
||||
onOnClickMore: onClickBannerMore
|
||||
}, null, _parent3, _scopeId2));
|
||||
_push3(`</section>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("section", { class: "w-full home-fullpage-section home-banner-section" }, [
|
||||
createVNode(_component_BannerSwiper, {
|
||||
banners: bannerList.value,
|
||||
effect: "fade",
|
||||
autoplay: { delay: 4e3 },
|
||||
onOnClickMore: onClickBannerMore
|
||||
}, null, 8, ["banners"])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), null, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<section class="w-full home-fullpage-section" data-v-1443efa7${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(_component_CompanyProfile, { text: companyProfileText.value }, null, _parent3, _scopeId2));
|
||||
_push3(`</section>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("section", { class: "w-full home-fullpage-section" }, [
|
||||
createVNode(_component_CompanyProfile, { text: companyProfileText.value }, null, 8, ["text"])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), null, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<section class="w-full home-fullpage-section" data-v-1443efa7${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(_component_MainBusiness, { list: mainBusinessList.value }, null, _parent3, _scopeId2));
|
||||
_push3(`</section>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("section", { class: "w-full home-fullpage-section" }, [
|
||||
createVNode(_component_MainBusiness, { list: mainBusinessList.value }, null, 8, ["list"])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), null, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<section class="w-full home-fullpage-section" data-v-1443efa7${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(_component_QualificationHonor, {
|
||||
"tab-list": honorCateList.value,
|
||||
"honors-by-category": honorsByCategoryId.value
|
||||
}, null, _parent3, _scopeId2));
|
||||
_push3(`</section>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("section", { class: "w-full home-fullpage-section" }, [
|
||||
createVNode(_component_QualificationHonor, {
|
||||
"tab-list": honorCateList.value,
|
||||
"honors-by-category": honorsByCategoryId.value
|
||||
}, null, 8, ["tab-list", "honors-by-category"])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), { class: "home-last-slide" }, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<section class="w-full home-fullpage-section home-fullpage-section-5" data-v-1443efa7${_scopeId2}><div data-v-1443efa7${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(_component_Partner, null, null, _parent3, _scopeId2));
|
||||
_push3(ssrRenderComponent(_component_AppFooter, null, null, _parent3, _scopeId2));
|
||||
_push3(`</div></section>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("section", { class: "w-full home-fullpage-section home-fullpage-section-5" }, [
|
||||
createVNode("div", null, [
|
||||
createVNode(_component_Partner),
|
||||
createVNode(_component_AppFooter)
|
||||
])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(unref(SwiperSlide), { class: "home-banner-slide h-[250px] sm:h-[380px] lg:h-[500px] xl:h-full" }, {
|
||||
default: withCtx(() => [
|
||||
createVNode("section", { class: "w-full home-fullpage-section home-banner-section" }, [
|
||||
createVNode(_component_BannerSwiper, {
|
||||
banners: bannerList.value,
|
||||
effect: "fade",
|
||||
autoplay: { delay: 4e3 },
|
||||
onOnClickMore: onClickBannerMore
|
||||
}, null, 8, ["banners"])
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
}),
|
||||
createVNode(unref(SwiperSlide), null, {
|
||||
default: withCtx(() => [
|
||||
createVNode("section", { class: "w-full home-fullpage-section" }, [
|
||||
createVNode(_component_CompanyProfile, { text: companyProfileText.value }, null, 8, ["text"])
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
}),
|
||||
createVNode(unref(SwiperSlide), null, {
|
||||
default: withCtx(() => [
|
||||
createVNode("section", { class: "w-full home-fullpage-section" }, [
|
||||
createVNode(_component_MainBusiness, { list: mainBusinessList.value }, null, 8, ["list"])
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
}),
|
||||
createVNode(unref(SwiperSlide), null, {
|
||||
default: withCtx(() => [
|
||||
createVNode("section", { class: "w-full home-fullpage-section" }, [
|
||||
createVNode(_component_QualificationHonor, {
|
||||
"tab-list": honorCateList.value,
|
||||
"honors-by-category": honorsByCategoryId.value
|
||||
}, null, 8, ["tab-list", "honors-by-category"])
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
}),
|
||||
createVNode(unref(SwiperSlide), { class: "home-last-slide" }, {
|
||||
default: withCtx(() => [
|
||||
createVNode("section", { class: "w-full home-fullpage-section home-fullpage-section-5" }, [
|
||||
createVNode("div", null, [
|
||||
createVNode(_component_Partner),
|
||||
createVNode(_component_AppFooter)
|
||||
])
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
})
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/home/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1443efa7"]]);
|
||||
|
||||
export { index as default };
|
||||
//# sourceMappingURL=index-DrkkSDLH.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-DrkkSDLH.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-DrkkSDLH.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
import { defineComponent, withAsyncContext, computed, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs } from 'vue/server-renderer';
|
||||
import { u as useRequest } from './useRequest-pSRZvR3u.mjs';
|
||||
import { u as useAsyncData } from './asyncData-D5wEK86T.mjs';
|
||||
import { n as navigateTo } from './server.mjs';
|
||||
import 'perfect-debounce';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
import 'vue-router';
|
||||
import 'axios';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const request = useRequest();
|
||||
const { data: tabsRes } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData(
|
||||
"business-tabs-first",
|
||||
async () => await request.get("/api/project_cates")
|
||||
)), __temp = await __temp, __restore(), __temp);
|
||||
const firstId = computed(() => {
|
||||
const res = tabsRes.value;
|
||||
if (!res || res.code !== 200 || !Array.isArray(res.data) || res.data.length === 0) return "";
|
||||
return String(res.data[0]?.id ?? "");
|
||||
});
|
||||
if (firstId.value) {
|
||||
[__temp, __restore] = withAsyncContext(() => navigateTo(`/business/${firstId.value}`, { redirectCode: 302 })), await __temp, __restore();
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(_attrs)}></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/business/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=index-LDAB2eRI.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-LDAB2eRI.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-LDAB2eRI.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const index_vue_vue_type_style_index_0_scoped_1443efa7_lang = "@media(min-width:1024px){.home-fullpage-swiper[data-v-1443efa7]{height:calc(100vh - 100px)}}@media(min-width:1280px){.home-fullpage-swiper[data-v-1443efa7]{height:calc(100vh - 135px)}}[data-v-1443efa7] .home-banner-slide.swiper-slide{height:250px}@media(min-width:640px){[data-v-1443efa7] .home-banner-slide.swiper-slide{height:380px}}@media(min-width:1024px){[data-v-1443efa7] .home-banner-slide.swiper-slide{height:500px}}@media(min-width:1280px){[data-v-1443efa7] .home-banner-slide.swiper-slide{height:100%}}.home-banner-section[data-v-1443efa7]{align-items:stretch;display:flex;height:100%}.home-banner-section[data-v-1443efa7] .relative{height:100%;width:100%}@media(min-width:1024px){.home-fullpage-section[data-v-1443efa7]{align-items:center;display:flex;height:100%}.home-fullpage-section>div[data-v-1443efa7]{width:100%}.home-banner-section[data-v-1443efa7]{align-items:stretch}.home-last-slide[data-v-1443efa7]{height:auto!important}.home-fullpage-section-5[data-v-1443efa7]{height:auto;min-height:160px}[data-v-1443efa7] .swiper-wrapper{top:0;transition:transform 2s cubic-bezier(.68,-.4,.27,1.34) .2s}}";
|
||||
|
||||
const indexStyles_BrGJOWui = [
|
||||
index_vue_vue_type_style_index_0_scoped_1443efa7_lang
|
||||
];
|
||||
|
||||
export { indexStyles_BrGJOWui as default };
|
||||
//# sourceMappingURL=index-styles.BrGJOWui.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-styles.BrGJOWui.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-styles-1.mjs-dk1I-LVW.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-styles.BrGJOWui.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const index_vue_vue_type_style_index_0_scoped_2145db32_lang = ".development-timeline-scroll[data-v-2145db32]{touch-action:pan-x;-webkit-overflow-scrolling:touch}";
|
||||
|
||||
const indexStyles_DLF_LGU = [
|
||||
index_vue_vue_type_style_index_0_scoped_2145db32_lang
|
||||
];
|
||||
|
||||
export { indexStyles_DLF_LGU as default };
|
||||
//# sourceMappingURL=index-styles.DLF_LG-U.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index-styles.DLF_LG-U.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-styles-1.mjs-DgDIPrNb.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/index-styles.DLF_LG-U.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"server.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/server.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
const interopDefault = r => r.default || r || [];
|
||||
const styles = {
|
||||
"pages/home/index.vue": () => import('./index-styles.BrGJOWui.mjs').then(interopDefault),
|
||||
"pages/home/index.vue?vue&type=style&index=0&scoped=1443efa7&lang.css": () => import('./index-styles.BrGJOWui.mjs').then(interopDefault),
|
||||
"pages/about/index.vue": () => import('./index-styles.DLF_LG-U.mjs').then(interopDefault),
|
||||
"pages/about/index.vue?vue&type=style&index=0&scoped=2145db32&lang.less": () => import('./index-styles.DLF_LG-U.mjs').then(interopDefault),
|
||||
"components/AppHeader.vue": () => import('./AppHeader-styles.xuwUbhFs.mjs').then(interopDefault),
|
||||
"components/AppHeader.vue?vue&type=style&index=0&scoped=0bd92392&lang.less": () => import('./AppHeader-styles.xuwUbhFs.mjs').then(interopDefault),
|
||||
"components/CompanyProfile.vue": () => import('./CompanyProfile-styles.Cg7JhGfC.mjs').then(interopDefault),
|
||||
"components/QualificationHonor.vue": () => import('./QualificationHonor-styles.amEgj2qp.mjs').then(interopDefault),
|
||||
"components/BannerSwiper.vue": () => import('./BannerSwiper-styles.FspT2_eP.mjs').then(interopDefault),
|
||||
"components/BannerSwiper.vue?vue&type=style&index=0&scoped=fbea4d53&lang.css": () => import('./BannerSwiper-styles.FspT2_eP.mjs').then(interopDefault),
|
||||
"components/PartnerScroll.vue": () => import('./PartnerScroll-styles.DzoCYoji.mjs').then(interopDefault),
|
||||
"components/PartnerScroll.vue?vue&type=style&index=0&scoped=e4eb4a4e&lang.css": () => import('./PartnerScroll-styles.DzoCYoji.mjs').then(interopDefault),
|
||||
"components/CompanyProfile.vue?vue&type=style&index=0&scoped=38961b7c&lang.less": () => import('./CompanyProfile-styles.Cg7JhGfC.mjs').then(interopDefault),
|
||||
"components/QualificationHonor.vue?vue&type=style&index=0&scoped=8acf2dc5&lang.less": () => import('./QualificationHonor-styles.amEgj2qp.mjs').then(interopDefault)
|
||||
};
|
||||
|
||||
export { styles as default };
|
||||
//# sourceMappingURL=styles.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"styles.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/styles.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
import { c as useNuxtApp } from './server.mjs';
|
||||
|
||||
function useRequest() {
|
||||
const nuxtApp = useNuxtApp();
|
||||
return nuxtApp.$request;
|
||||
}
|
||||
|
||||
export { useRequest as u };
|
||||
//# sourceMappingURL=useRequest-pSRZvR3u.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"useRequest-pSRZvR3u.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/useRequest-pSRZvR3u.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
import { p as publicAssetsURL } from '../routes/renderer.mjs';
|
||||
|
||||
const _imports_0 = publicAssetsURL("/images/关于我们/首页ico.png");
|
||||
|
||||
export { _imports_0 as _ };
|
||||
//# sourceMappingURL=virtual_public-Ch4_18y6.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"virtual_public-Ch4_18y6.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/virtual_public-Ch4_18y6.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/.pnpm/destr@2.0.5/node_modules/destr/dist/index.mjs","../../../../node_modules/.pnpm/ufo@1.6.3/node_modules/ufo/dist/index.mjs","../../../../node_modules/.pnpm/radix3@1.1.2/node_modules/radix3/dist/index.mjs","../../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../../../../node_modules/.pnpm/node-mock-http@1.0.4/node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/.pnpm/h3@1.15.5/node_modules/h3/dist/index.mjs","../../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../../node_modules/.pnpm/node-fetch-native@1.6.7/node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs","../../../../node_modules/.pnpm/unstorage@1.17.4_db0@0.3.4_ioredis@5.9.2/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/.pnpm/unstorage@1.17.4_db0@0.3.4_ioredis@5.9.2/node_modules/unstorage/dist/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.4_db0@0.3.4_ioredis@5.9.2/node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.4_db0@0.3.4_ioredis@5.9.2/node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/.pnpm/unstorage@1.17.4_db0@0.3.4_ioredis@5.9.2/node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/utils/config.mjs","../../../../app/app.config.ts","../../../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/utils/error.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["getQuery","createRouter","f","h","i","l","createError","mergeHeaders","s","nodeFetch","Headers","Headers$1","AbortController$1","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","_inlineAppConfig","createRadixRouter","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]}
|
||||
|
|
@ -1,510 +0,0 @@
|
|||
import { createRenderer, getRequestDependencies, getPreloadLinks, getPrefetchLinks } from 'vue-bundle-renderer/runtime';
|
||||
import { j as joinRelativeURL, u as useRuntimeConfig, g as getResponseStatusText, a as getResponseStatus, d as defineRenderHandler, b as getQuery, c as createError, e as destr, f as getRouteRules, h as joinURL, i as useNitroApp } from '../nitro/nitro.mjs';
|
||||
import { renderToString } from 'vue/server-renderer';
|
||||
import { createHead as createHead$1, propsToString, renderSSRHead } from 'unhead/server';
|
||||
import { stringify, uneval } from 'devalue';
|
||||
import { FlatMetaPlugin } from 'unhead/plugins';
|
||||
import { walkResolver } from 'unhead/utils';
|
||||
import { isRef, toValue, hasInjectionContext, inject, ref, watchEffect, getCurrentInstance, onBeforeUnmount, onDeactivated, onActivated } from 'vue';
|
||||
|
||||
const VueResolver = (_, value) => {
|
||||
return isRef(value) ? toValue(value) : value;
|
||||
};
|
||||
|
||||
const headSymbol = "usehead";
|
||||
// @__NO_SIDE_EFFECTS__
|
||||
function vueInstall(head) {
|
||||
const plugin = {
|
||||
install(app) {
|
||||
app.config.globalProperties.$unhead = head;
|
||||
app.config.globalProperties.$head = head;
|
||||
app.provide(headSymbol, head);
|
||||
}
|
||||
};
|
||||
return plugin.install;
|
||||
}
|
||||
|
||||
// @__NO_SIDE_EFFECTS__
|
||||
function injectHead() {
|
||||
if (hasInjectionContext()) {
|
||||
const instance = inject(headSymbol);
|
||||
if (instance) {
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.");
|
||||
}
|
||||
function useHead(input, options = {}) {
|
||||
const head = options.head || /* @__PURE__ */ injectHead();
|
||||
return head.ssr ? head.push(input || {}, options) : clientUseHead(head, input, options);
|
||||
}
|
||||
function clientUseHead(head, input, options = {}) {
|
||||
const deactivated = ref(false);
|
||||
let entry;
|
||||
watchEffect(() => {
|
||||
const i = deactivated.value ? {} : walkResolver(input, VueResolver);
|
||||
if (entry) {
|
||||
entry.patch(i);
|
||||
} else {
|
||||
entry = head.push(i, options);
|
||||
}
|
||||
});
|
||||
const vm = getCurrentInstance();
|
||||
if (vm) {
|
||||
onBeforeUnmount(() => {
|
||||
entry.dispose();
|
||||
});
|
||||
onDeactivated(() => {
|
||||
deactivated.value = true;
|
||||
});
|
||||
onActivated(() => {
|
||||
deactivated.value = false;
|
||||
});
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
function useSeoMeta(input = {}, options = {}) {
|
||||
const head = options.head || /* @__PURE__ */ injectHead();
|
||||
head.use(FlatMetaPlugin);
|
||||
const { title, titleTemplate, ...meta } = input;
|
||||
return useHead({
|
||||
title,
|
||||
titleTemplate,
|
||||
_flatMeta: meta
|
||||
}, options);
|
||||
}
|
||||
|
||||
// @__NO_SIDE_EFFECTS__
|
||||
function createHead(options = {}) {
|
||||
const head = createHead$1({
|
||||
...options,
|
||||
propResolvers: [VueResolver]
|
||||
});
|
||||
head.install = vueInstall(head);
|
||||
return head;
|
||||
}
|
||||
|
||||
const NUXT_RUNTIME_PAYLOAD_EXTRACTION = false;
|
||||
|
||||
const appHead = {"meta":[{"name":"viewport","content":"width=device-width, initial-scale=1"},{"charset":"utf-8"}],"link":[],"style":[],"script":[],"noscript":[]};
|
||||
|
||||
const appRootTag = "div";
|
||||
|
||||
const appRootAttrs = {"id":"__nuxt"};
|
||||
|
||||
const appTeleportTag = "div";
|
||||
|
||||
const appTeleportAttrs = {"id":"teleports"};
|
||||
|
||||
const appSpaLoaderTag = "div";
|
||||
|
||||
const appSpaLoaderAttrs = {"id":"__nuxt-loader"};
|
||||
|
||||
const appId = "nuxt-app";
|
||||
|
||||
function baseURL() {
|
||||
// TODO: support passing event to `useRuntimeConfig`
|
||||
return useRuntimeConfig().app.baseURL;
|
||||
}
|
||||
function buildAssetsDir() {
|
||||
// TODO: support passing event to `useRuntimeConfig`
|
||||
return useRuntimeConfig().app.buildAssetsDir;
|
||||
}
|
||||
function buildAssetsURL(...path) {
|
||||
return joinRelativeURL(publicAssetsURL(), buildAssetsDir(), ...path);
|
||||
}
|
||||
function publicAssetsURL(...path) {
|
||||
// TODO: support passing event to `useRuntimeConfig`
|
||||
const app = useRuntimeConfig().app;
|
||||
const publicBase = app.cdnURL || app.baseURL;
|
||||
return path.length ? joinRelativeURL(publicBase, ...path) : publicBase;
|
||||
}
|
||||
|
||||
const APP_ROOT_OPEN_TAG = `<${appRootTag}${propsToString(appRootAttrs)}>`;
|
||||
const APP_ROOT_CLOSE_TAG = `</${appRootTag}>`;
|
||||
// @ts-expect-error file will be produced after app build
|
||||
const getServerEntry = () => import('../build/server.mjs').then((r) => r.default || r);
|
||||
// @ts-expect-error file will be produced after app build
|
||||
const getPrecomputedDependencies = () => import('../build/client.precomputed.mjs').then((r) => r.default || r).then((r) => typeof r === "function" ? r() : r);
|
||||
// -- SSR Renderer --
|
||||
const getSSRRenderer = lazyCachedFunction(async () => {
|
||||
// Load server bundle
|
||||
const createSSRApp = await getServerEntry();
|
||||
if (!createSSRApp) {
|
||||
throw new Error("Server bundle is not available");
|
||||
}
|
||||
// Load precomputed dependencies
|
||||
const precomputed = await getPrecomputedDependencies();
|
||||
// Create renderer
|
||||
const renderer = createRenderer(createSSRApp, {
|
||||
precomputed,
|
||||
manifest: undefined,
|
||||
renderToString: renderToString$1,
|
||||
buildAssetsURL
|
||||
});
|
||||
async function renderToString$1(input, context) {
|
||||
const html = await renderToString(input, context);
|
||||
return APP_ROOT_OPEN_TAG + html + APP_ROOT_CLOSE_TAG;
|
||||
}
|
||||
return renderer;
|
||||
});
|
||||
// -- SPA Renderer --
|
||||
const getSPARenderer = lazyCachedFunction(async () => {
|
||||
const precomputed = await getPrecomputedDependencies();
|
||||
// @ts-expect-error virtual file
|
||||
const spaTemplate = await import('../virtual/_virtual_spa-template.mjs').then((r) => r.template).catch(() => "").then((r) => {
|
||||
{
|
||||
const APP_SPA_LOADER_OPEN_TAG = `<${appSpaLoaderTag}${propsToString(appSpaLoaderAttrs)}>`;
|
||||
const APP_SPA_LOADER_CLOSE_TAG = `</${appSpaLoaderTag}>`;
|
||||
const appTemplate = APP_ROOT_OPEN_TAG + APP_ROOT_CLOSE_TAG;
|
||||
const loaderTemplate = r ? APP_SPA_LOADER_OPEN_TAG + r + APP_SPA_LOADER_CLOSE_TAG : "";
|
||||
return appTemplate + loaderTemplate;
|
||||
}
|
||||
});
|
||||
// Create SPA renderer and cache the result for all requests
|
||||
const renderer = createRenderer(() => () => {}, {
|
||||
precomputed,
|
||||
manifest: undefined,
|
||||
renderToString: () => spaTemplate,
|
||||
buildAssetsURL
|
||||
});
|
||||
const result = await renderer.renderToString({});
|
||||
const renderToString = (ssrContext) => {
|
||||
const config = useRuntimeConfig(ssrContext.event);
|
||||
ssrContext.modules ||= new Set();
|
||||
ssrContext.payload.serverRendered = false;
|
||||
ssrContext.config = {
|
||||
public: config.public,
|
||||
app: config.app
|
||||
};
|
||||
return Promise.resolve(result);
|
||||
};
|
||||
return {
|
||||
rendererContext: renderer.rendererContext,
|
||||
renderToString
|
||||
};
|
||||
});
|
||||
function lazyCachedFunction(fn) {
|
||||
let res = null;
|
||||
return () => {
|
||||
if (res === null) {
|
||||
res = fn().catch((err) => {
|
||||
res = null;
|
||||
throw err;
|
||||
});
|
||||
}
|
||||
return res;
|
||||
};
|
||||
}
|
||||
function getRenderer(ssrContext) {
|
||||
return ssrContext.noSSR ? getSPARenderer() : getSSRRenderer();
|
||||
}
|
||||
// @ts-expect-error file will be produced after app build
|
||||
const getSSRStyles = lazyCachedFunction(() => import('../build/styles.mjs').then((r) => r.default || r));
|
||||
|
||||
function renderPayloadResponse(ssrContext) {
|
||||
return {
|
||||
body: stringify(splitPayload(ssrContext).payload, ssrContext["~payloadReducers"]) ,
|
||||
statusCode: getResponseStatus(ssrContext.event),
|
||||
statusMessage: getResponseStatusText(ssrContext.event),
|
||||
headers: {
|
||||
"content-type": "application/json;charset=utf-8" ,
|
||||
"x-powered-by": "Nuxt"
|
||||
}
|
||||
};
|
||||
}
|
||||
function renderPayloadJsonScript(opts) {
|
||||
const contents = opts.data ? stringify(opts.data, opts.ssrContext["~payloadReducers"]) : "";
|
||||
const payload = {
|
||||
"type": "application/json",
|
||||
"innerHTML": contents,
|
||||
"data-nuxt-data": appId,
|
||||
"data-ssr": !(opts.ssrContext.noSSR)
|
||||
};
|
||||
{
|
||||
payload.id = "__NUXT_DATA__";
|
||||
}
|
||||
if (opts.src) {
|
||||
payload["data-src"] = opts.src;
|
||||
}
|
||||
const config = uneval(opts.ssrContext.config);
|
||||
return [payload, { innerHTML: `window.__NUXT__={};window.__NUXT__.config=${config}` }];
|
||||
}
|
||||
function splitPayload(ssrContext) {
|
||||
const { data, prerenderedAt, ...initial } = ssrContext.payload;
|
||||
return {
|
||||
initial: {
|
||||
...initial,
|
||||
prerenderedAt
|
||||
},
|
||||
payload: {
|
||||
data,
|
||||
prerenderedAt
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const unheadOptions = {
|
||||
disableDefaults: true,
|
||||
};
|
||||
|
||||
function createSSRContext(event) {
|
||||
const ssrContext = {
|
||||
url: event.path,
|
||||
event,
|
||||
runtimeConfig: useRuntimeConfig(event),
|
||||
noSSR: event.context.nuxt?.noSSR || (false),
|
||||
head: createHead(unheadOptions),
|
||||
error: false,
|
||||
nuxt: undefined,
|
||||
payload: {},
|
||||
["~payloadReducers"]: Object.create(null),
|
||||
modules: new Set()
|
||||
};
|
||||
return ssrContext;
|
||||
}
|
||||
function setSSRError(ssrContext, error) {
|
||||
ssrContext.error = true;
|
||||
ssrContext.payload = { error };
|
||||
ssrContext.url = error.url;
|
||||
}
|
||||
|
||||
async function renderInlineStyles(usedModules) {
|
||||
const styleMap = await getSSRStyles();
|
||||
const inlinedStyles = new Set();
|
||||
for (const mod of usedModules) {
|
||||
if (mod in styleMap && styleMap[mod]) {
|
||||
for (const style of await styleMap[mod]()) {
|
||||
inlinedStyles.add(style);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Array.from(inlinedStyles).map((style) => ({ innerHTML: style }));
|
||||
}
|
||||
|
||||
const renderSSRHeadOptions = {"omitLineBreaks":true};
|
||||
|
||||
const entryIds = [];
|
||||
|
||||
// @ts-expect-error private property consumed by vite-generated url helpers
|
||||
globalThis.__buildAssetsURL = buildAssetsURL;
|
||||
// @ts-expect-error private property consumed by vite-generated url helpers
|
||||
globalThis.__publicAssetsURL = publicAssetsURL;
|
||||
const HAS_APP_TELEPORTS = !!(appTeleportAttrs.id);
|
||||
const APP_TELEPORT_OPEN_TAG = HAS_APP_TELEPORTS ? `<${appTeleportTag}${propsToString(appTeleportAttrs)}>` : "";
|
||||
const APP_TELEPORT_CLOSE_TAG = HAS_APP_TELEPORTS ? `</${appTeleportTag}>` : "";
|
||||
const PAYLOAD_URL_RE = /^[^?]*\/_payload.json(?:\?.*)?$/ ;
|
||||
const PAYLOAD_FILENAME = "_payload.json" ;
|
||||
const renderer = defineRenderHandler(async (event) => {
|
||||
const nitroApp = useNitroApp();
|
||||
// Whether we're rendering an error page
|
||||
const ssrError = event.path.startsWith("/__nuxt_error") ? getQuery(event) : null;
|
||||
if (ssrError && !("__unenv__" in event.node.req)) {
|
||||
throw createError({
|
||||
status: 404,
|
||||
statusText: "Page Not Found: /__nuxt_error",
|
||||
message: "Page Not Found: /__nuxt_error"
|
||||
});
|
||||
}
|
||||
// Initialize ssr context
|
||||
const ssrContext = createSSRContext(event);
|
||||
// needed for hash hydration plugin to work
|
||||
const headEntryOptions = { mode: "server" };
|
||||
ssrContext.head.push(appHead, headEntryOptions);
|
||||
if (ssrError) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
||||
const status = ssrError.status || ssrError.statusCode;
|
||||
if (status) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
||||
ssrError.status = ssrError.statusCode = Number.parseInt(status);
|
||||
}
|
||||
if (typeof ssrError.data === "string") {
|
||||
try {
|
||||
ssrError.data = destr(ssrError.data);
|
||||
} catch {}
|
||||
}
|
||||
setSSRError(ssrContext, ssrError);
|
||||
}
|
||||
// Get route options (for `ssr: false`, `isr`, `cache` and `noScripts`)
|
||||
const routeOptions = getRouteRules(event);
|
||||
// Whether we are prerendering route or using ISR/SWR caching
|
||||
const _PAYLOAD_EXTRACTION = !ssrContext.noSSR && (NUXT_RUNTIME_PAYLOAD_EXTRACTION);
|
||||
const isRenderingPayload = (_PAYLOAD_EXTRACTION || false) && PAYLOAD_URL_RE.test(ssrContext.url);
|
||||
if (isRenderingPayload) {
|
||||
const url = ssrContext.url.substring(0, ssrContext.url.lastIndexOf("/")) || "/";
|
||||
ssrContext.url = url;
|
||||
event._path = event.node.req.url = url;
|
||||
}
|
||||
if (routeOptions.ssr === false) {
|
||||
ssrContext.noSSR = true;
|
||||
}
|
||||
const payloadURL = _PAYLOAD_EXTRACTION ? joinURL(ssrContext.runtimeConfig.app.cdnURL || ssrContext.runtimeConfig.app.baseURL, ssrContext.url.replace(/\?.*$/, ""), PAYLOAD_FILENAME) + "?" + ssrContext.runtimeConfig.app.buildId : undefined;
|
||||
// Render app
|
||||
const renderer = await getRenderer(ssrContext);
|
||||
{
|
||||
for (const id of entryIds) {
|
||||
ssrContext.modules.add(id);
|
||||
}
|
||||
}
|
||||
const _rendered = await renderer.renderToString(ssrContext).catch(async (error) => {
|
||||
// We use error to bypass full render if we have an early response we can make
|
||||
// TODO: remove _renderResponse in nuxt v5
|
||||
if ((ssrContext["~renderResponse"] || ssrContext._renderResponse) && error.message === "skipping render") {
|
||||
return {};
|
||||
}
|
||||
// Use explicitly thrown error in preference to subsequent rendering errors
|
||||
const _err = !ssrError && ssrContext.payload?.error || error;
|
||||
await ssrContext.nuxt?.hooks.callHook("app:error", _err);
|
||||
throw _err;
|
||||
});
|
||||
// Render inline styles
|
||||
// TODO: remove _renderResponse in nuxt v5
|
||||
const inlinedStyles = !ssrContext["~renderResponse"] && !ssrContext._renderResponse && !isRenderingPayload ? await renderInlineStyles(ssrContext.modules ?? []) : [];
|
||||
await ssrContext.nuxt?.hooks.callHook("app:rendered", {
|
||||
ssrContext,
|
||||
renderResult: _rendered
|
||||
});
|
||||
if (ssrContext["~renderResponse"] || ssrContext._renderResponse) {
|
||||
// TODO: remove _renderResponse in nuxt v5
|
||||
return ssrContext["~renderResponse"] || ssrContext._renderResponse;
|
||||
}
|
||||
// Handle errors
|
||||
if (ssrContext.payload?.error && !ssrError) {
|
||||
throw ssrContext.payload.error;
|
||||
}
|
||||
// Directly render payload routes
|
||||
if (isRenderingPayload) {
|
||||
const response = renderPayloadResponse(ssrContext);
|
||||
return response;
|
||||
}
|
||||
const NO_SCRIPTS = routeOptions.noScripts;
|
||||
// Setup head
|
||||
const { styles, scripts } = getRequestDependencies(ssrContext, renderer.rendererContext);
|
||||
// 1. Preload payloads and app manifest
|
||||
if (_PAYLOAD_EXTRACTION && !NO_SCRIPTS) {
|
||||
ssrContext.head.push({ link: [{
|
||||
rel: "preload",
|
||||
as: "fetch",
|
||||
crossorigin: "anonymous",
|
||||
href: payloadURL
|
||||
} ] }, headEntryOptions);
|
||||
}
|
||||
if (ssrContext["~preloadManifest"] && !NO_SCRIPTS) {
|
||||
ssrContext.head.push({ link: [{
|
||||
rel: "preload",
|
||||
as: "fetch",
|
||||
fetchpriority: "low",
|
||||
crossorigin: "anonymous",
|
||||
href: buildAssetsURL(`builds/meta/${ssrContext.runtimeConfig.app.buildId}.json`)
|
||||
}] }, {
|
||||
...headEntryOptions,
|
||||
tagPriority: "low"
|
||||
});
|
||||
}
|
||||
// 2. Styles
|
||||
if (inlinedStyles.length) {
|
||||
ssrContext.head.push({ style: inlinedStyles });
|
||||
}
|
||||
const link = [];
|
||||
for (const resource of Object.values(styles)) {
|
||||
// Add CSS links in <head> for CSS files
|
||||
// - in production
|
||||
// - in dev mode when not rendering an island
|
||||
link.push({
|
||||
rel: "stylesheet",
|
||||
href: renderer.rendererContext.buildAssetsURL(resource.file),
|
||||
crossorigin: ""
|
||||
});
|
||||
}
|
||||
if (link.length) {
|
||||
ssrContext.head.push({ link }, headEntryOptions);
|
||||
}
|
||||
if (!NO_SCRIPTS) {
|
||||
// 4. Resource Hints
|
||||
// Remove lazy hydrated modules from ssrContext.modules so they don't get preloaded
|
||||
// (CSS links are already added above, this only affects JS preloads)
|
||||
if (ssrContext["~lazyHydratedModules"]) {
|
||||
for (const id of ssrContext["~lazyHydratedModules"]) {
|
||||
ssrContext.modules?.delete(id);
|
||||
}
|
||||
}
|
||||
ssrContext.head.push({ link: getPreloadLinks(ssrContext, renderer.rendererContext) }, headEntryOptions);
|
||||
ssrContext.head.push({ link: getPrefetchLinks(ssrContext, renderer.rendererContext) }, headEntryOptions);
|
||||
// 5. Payloads
|
||||
ssrContext.head.push({ script: _PAYLOAD_EXTRACTION ? renderPayloadJsonScript({
|
||||
ssrContext,
|
||||
data: splitPayload(ssrContext).initial,
|
||||
src: payloadURL
|
||||
}) : renderPayloadJsonScript({
|
||||
ssrContext,
|
||||
data: ssrContext.payload
|
||||
}) }, {
|
||||
...headEntryOptions,
|
||||
tagPosition: "bodyClose",
|
||||
tagPriority: "high"
|
||||
});
|
||||
}
|
||||
// 6. Scripts
|
||||
if (!routeOptions.noScripts) {
|
||||
const tagPosition = "head";
|
||||
ssrContext.head.push({ script: Object.values(scripts).map((resource) => ({
|
||||
type: resource.module ? "module" : null,
|
||||
src: renderer.rendererContext.buildAssetsURL(resource.file),
|
||||
defer: resource.module ? null : true,
|
||||
tagPosition,
|
||||
crossorigin: ""
|
||||
})) }, headEntryOptions);
|
||||
}
|
||||
const { headTags, bodyTags, bodyTagsOpen, htmlAttrs, bodyAttrs } = await renderSSRHead(ssrContext.head, renderSSRHeadOptions);
|
||||
// Create render context
|
||||
const htmlContext = {
|
||||
htmlAttrs: htmlAttrs ? [htmlAttrs] : [],
|
||||
head: normalizeChunks([headTags]),
|
||||
bodyAttrs: bodyAttrs ? [bodyAttrs] : [],
|
||||
bodyPrepend: normalizeChunks([bodyTagsOpen, ssrContext.teleports?.body]),
|
||||
body: [_rendered.html, APP_TELEPORT_OPEN_TAG + (HAS_APP_TELEPORTS ? joinTags([ssrContext.teleports?.[`#${appTeleportAttrs.id}`]]) : "") + APP_TELEPORT_CLOSE_TAG],
|
||||
bodyAppend: [bodyTags]
|
||||
};
|
||||
// Allow hooking into the rendered result
|
||||
await nitroApp.hooks.callHook("render:html", htmlContext, { event });
|
||||
// Construct HTML response
|
||||
return {
|
||||
body: renderHTMLDocument(htmlContext),
|
||||
statusCode: getResponseStatus(event),
|
||||
statusMessage: getResponseStatusText(event),
|
||||
headers: {
|
||||
"content-type": "text/html;charset=utf-8",
|
||||
"x-powered-by": "Nuxt"
|
||||
}
|
||||
};
|
||||
});
|
||||
function normalizeChunks(chunks) {
|
||||
const result = [];
|
||||
for (const _chunk of chunks) {
|
||||
const chunk = _chunk?.trim();
|
||||
if (chunk) {
|
||||
result.push(chunk);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function joinTags(tags) {
|
||||
return tags.join("");
|
||||
}
|
||||
function joinAttrs(chunks) {
|
||||
if (chunks.length === 0) {
|
||||
return "";
|
||||
}
|
||||
return " " + chunks.join(" ");
|
||||
}
|
||||
function renderHTMLDocument(html) {
|
||||
return "<!DOCTYPE html>" + `<html${joinAttrs(html.htmlAttrs)}>` + `<head>${joinTags(html.head)}</head>` + `<body${joinAttrs(html.bodyAttrs)}>${joinTags(html.bodyPrepend)}${joinTags(html.body)}${joinTags(html.bodyAppend)}</body>` + "</html>";
|
||||
}
|
||||
|
||||
const renderer$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
||||
__proto__: null,
|
||||
default: renderer
|
||||
}, Symbol.toStringTag, { value: 'Module' }));
|
||||
|
||||
export { baseURL as b, headSymbol as h, publicAssetsURL as p, renderer$1 as r, useSeoMeta as u };
|
||||
//# sourceMappingURL=renderer.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"renderer.mjs","sources":["../../../../node_modules/.pnpm/@unhead+vue@2.1.4_vue@3.5.28/node_modules/@unhead/vue/dist/shared/vue.N9zWjxoK.mjs","../../../../node_modules/.pnpm/@unhead+vue@2.1.4_vue@3.5.28/node_modules/@unhead/vue/dist/shared/vue.Cr7xSEtD.mjs","../../../../node_modules/.pnpm/@unhead+vue@2.1.4_vue@3.5.28/node_modules/@unhead/vue/dist/server.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/build-files.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/payload.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/app.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/utils/renderer/inline-styles.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.3.1_db0@0.3.4_ioredis@5.9.2_magicast@0.5.2_nuxt@4.3.1_@parcel+watcher@2._4elbvdmkvsizz37dfir7rj42ne/node_modules/@nuxt/nitro-server/dist/runtime/handlers/renderer.mjs"],"names":["renderToString","_renderToString"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
const template = "";
|
||||
|
||||
export { template };
|
||||
//# sourceMappingURL=_virtual_spa-template.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"_virtual_spa-template.mjs","sources":[],"names":[],"mappings":";;;;"}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
import process from 'node:process';globalThis._importMeta_={url:import.meta.url,env:process.env};import 'node:http';
|
||||
import 'node:https';
|
||||
export { z as default } from './chunks/nitro/nitro.mjs';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
//# sourceMappingURL=index.mjs.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index.mjs","sources":[],"names":[],"mappings":";;;;;;;;"}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,50 +0,0 @@
|
|||
{
|
||||
"name": "@babel/parser",
|
||||
"version": "7.29.0",
|
||||
"description": "A JavaScript parser",
|
||||
"author": "The Babel Team (https://babel.dev/team)",
|
||||
"homepage": "https://babel.dev/docs/en/next/babel-parser",
|
||||
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen",
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"keywords": [
|
||||
"babel",
|
||||
"javascript",
|
||||
"parser",
|
||||
"tc39",
|
||||
"ecmascript",
|
||||
"@babel/parser"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/babel/babel.git",
|
||||
"directory": "packages/babel-parser"
|
||||
},
|
||||
"main": "./lib/index.js",
|
||||
"types": "./typings/babel-parser.d.ts",
|
||||
"files": [
|
||||
"bin",
|
||||
"lib",
|
||||
"typings/babel-parser.d.ts",
|
||||
"index.cjs"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
},
|
||||
"# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.29.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/code-frame": "^7.29.0",
|
||||
"@babel/helper-check-duplicate-nodes": "^7.28.6",
|
||||
"@babel/helper-fixtures": "^7.28.6",
|
||||
"@babel/helper-string-parser": "^7.27.1",
|
||||
"@babel/helper-validator-identifier": "^7.28.5",
|
||||
"charcodes": "^0.2.0"
|
||||
},
|
||||
"bin": "./bin/babel-parser.js",
|
||||
"type": "commonjs"
|
||||
}
|
||||
6763
public/output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js
generated
vendored
6763
public/output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js
generated
vendored
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue