3 lines
14 KiB
JavaScript
3 lines
14 KiB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Home-DT-PH-q8.js","assets/vue-vendor-GS00DpJy.js","assets/element-plus-CzySQqEG.js","assets/utils-UCiI1fAk.js","assets/Home-BMjlTmaN.css","assets/CategoryRanking-DIe2ycrP.js","assets/EmptyState.vue_vue_type_style_index_0_scoped_fb24dc77_lang-CriKEGZ4.js","assets/EmptyState-Jnpb5Nib.css","assets/CategoryRanking-bX_fZfRq.css","assets/ErrorBoundary-BCyBEylh.css","assets/ProductDetail-CaZqCM6o.js","assets/charts-DH_olTd-.js","assets/ProductDetail-C10M7TAt.css","assets/ProductComparison-DaPfOM8r.js","assets/ProductComparison-CvEmX5Xt.css","assets/NotFound-CFjyJVuE.js","assets/NotFound-cRfaHAhy.css"])))=>i.map(i=>d[i]);
|
|
import{ag as e,ah as t,ai as a,r as o,aj as s,c as n,d as r,a8 as l,m as i,q as c,t as u,H as d,B as m,u as p,A as f,D as g,F as v,G as h,X as _,L as y,T as k,S as b,E as w,ae as L,ak as x}from"./vue-vendor-GS00DpJy.js";import{M as E,O as P,P as C,Q as j,R as $,S as T,o as I,T as A,U as D,V as O}from"./element-plus-CzySQqEG.js";import{w as V}from"./utils-UCiI1fAk.js";!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const a of e)if("childList"===a.type)for(const e of a.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();const S={},B=function(e,t,a){let o=Promise.resolve();if(t&&t.length>0){document.getElementsByTagName("link");const e=document.querySelector("meta[property=csp-nonce]"),a=(null==e?void 0:e.nonce)||(null==e?void 0:e.getAttribute("nonce"));o=Promise.allSettled(t.map(e=>{if((e=function(e){return"/"+e}(e))in S)return;S[e]=!0;const t=e.endsWith(".css"),o=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${o}`))return;const s=document.createElement("link");return s.rel=t?"stylesheet":"modulepreload",t||(s.as="script"),s.crossOrigin="",s.href=e,a&&s.setAttribute("nonce",a),document.head.appendChild(s),t?new Promise((t,a)=>{s.addEventListener("load",t),s.addEventListener("error",()=>a(new Error(`Unable to preload CSS for ${e}`)))}):void 0}))}function s(e){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(const e of t||[])"rejected"===e.status&&s(e.reason);return e().catch(s)})},R=[{path:"/",name:"Home",component:()=>B(()=>import("./Home-DT-PH-q8.js"),__vite__mapDeps([0,1,2,3,4])),meta:{title:"硬件性能排行榜 - 首页"}},{path:"/category/:id",name:"CategoryRanking",component:()=>B(()=>import("./CategoryRanking-DIe2ycrP.js"),__vite__mapDeps([5,1,2,3,6,7,8,9])),props:!0,meta:{title:"硬件性能排行榜 - 类别排名"}},{path:"/product/:id",name:"ProductDetail",component:()=>B(()=>import("./ProductDetail-CaZqCM6o.js"),__vite__mapDeps([10,1,2,3,6,7,11,12])),props:!0,meta:{title:"硬件性能排行榜 - 产品详情"}},{path:"/compare",name:"ProductComparison",component:()=>B(()=>import("./ProductComparison-DaPfOM8r.js"),__vite__mapDeps([13,6,1,2,3,7,11,14,9])),meta:{title:"硬件性能排行榜 - 产品对比"}},{path:"/:pathMatch(.*)*",name:"NotFound",component:()=>B(()=>import("./NotFound-CFjyJVuE.js"),__vite__mapDeps([15,1,2,3,16])),meta:{title:"硬件性能排行榜 - 页面未找到"}}],z=e({history:t(),routes:R,scrollBehavior:(e,t,a)=>a||{top:0,behavior:"smooth"}});z.beforeEach((e,t,a)=>{e.meta.title&&(document.title=e.meta.title),a()});const q=a("loading",()=>{const e=o(!1),t=o("加载中..."),a=o(0);return{isLoading:e,loadingText:t,showLoading:(o="加载中...")=>{a.value++,t.value=o,e.value=!0},hideLoading:()=>{a.value--,a.value<=0&&(a.value=0,e.value=!1)},resetLoading:()=>{a.value=0,e.value=!1}}}),N=V.create({baseURL:"/api",timeout:1e4,headers:{"Content-Type":"application/json"}});function F(e){if(e.response){const{status:t,data:a}=e.response;switch(t){case 400:E.error(`请求参数错误: ${a.message||"请检查输入参数"}`);break;case 401:E.error(`未授权访问: ${a.message||"请先登录"}`);break;case 403:E.error(`禁止访问: ${a.message||"权限不足"}`);break;case 404:E.error(`资源未找到: ${a.message||"请求的资源不存在"}`);break;case 422:if(a.errors&&"object"==typeof a.errors){const e=Object.values(a.errors).flat();E.error(`验证失败: ${e.join(", ")}`)}else E.error(`验证失败: ${a.message||"输入数据不符合要求"}`);break;case 429:E.error(`请求过于频繁: ${a.message||"请稍后再试"}`);break;case 500:P({title:"服务器错误",message:a.message||"服务器出现问题,请稍后再试",type:"error",duration:5e3});break;case 502:case 503:case 504:P({title:"服务不可用",message:"服务器暂时无法响应,请稍后再试",type:"warning",duration:5e3});break;default:E.error(`未知错误: ${a.message||"发生未知错误,请联系管理员"}`)}}else e.request?P({title:"网络错误",message:"无法连接到服务器,请检查网络连接",type:"error",duration:5e3}):E.error(`请求配置错误: ${e.message}`)}N.interceptors.request.use(e=>{if("get"===e.method&&(e.params={...e.params,_t:Date.now()}),e.metadata={startTime:new Date},!e.silent){q().showLoading(e.loadingText||"加载中...")}return e},e=>(E.error("请求配置错误,请稍后重试"),Promise.reject(e))),N.interceptors.response.use(e=>{if(!e.config.silent){q().hideLoading()}return e.data},async e=>{var t;if(!(null==(t=e.config)?void 0:t.silent)){q().hideLoading()}const a=e.config;return!a._retry||a._retry>=2?(F(e),Promise.reject(e)):!e.response||e.response.status>=500?(a._retry=(a._retry||0)+1,1===a._retry&&E.info("网络不稳定,正在重试..."),await new Promise(e=>setTimeout(e,1e3)),N(a)):(F(e),Promise.reject(e))});const H={getAll:()=>N.get("/categories"),getById:e=>N.get(`/categories/${e}`)},U=a("category",{state:()=>({categories:[],loading:!1,error:null}),actions:{async fetchCategories(){this.loading=!0,this.error=null;try{const e=await H.getAll();this.categories=e}catch(e){this.error=e.message}finally{this.loading=!1}},async getCategoryById(e){try{return await H.getById(e)}catch(t){return this.error=t.message,null}}}}),M=(e,t)=>{const a=e.__vccOpts||e;for(const[o,s]of t)a[o]=s;return a},G={class:"app-header"},W={class:"header-container"},K={class:"logo-section"},Q={class:"logo"},X={class:"nav-menu"},Y={class:"header-actions"},J={class:"mobile-menu-container"},Z={class:"mobile-menu-header"},ee=M({__name:"Header",setup(e){const t=s(),a=U(),y=o(!1),k=n(()=>a.categories),b=n(()=>"/"===t.path?"home":t.path.startsWith("/category/")?t.params.categoryId:"/comparison"===t.path?"comparison":""),w=()=>{y.value=!y.value};return r(async()=>{0===k.value.length&&await a.fetchCategories()}),(e,t)=>{const a=l("el-icon"),o=l("router-link"),s=l("el-menu-item"),n=l("el-sub-menu"),r=l("el-menu"),L=l("el-button");return c(),i("header",G,[u("div",W,[u("div",K,[d(o,{to:"/",class:"logo-link"},{default:m(()=>[u("div",Q,[d(a,{size:"32",color:"#409eff"},{default:m(()=>[d(p(C))]),_:1})]),t[0]||(t[0]=u("h1",{class:"app-title"},"硬件性能排行榜",-1))]),_:1})]),u("nav",X,[d(r,{mode:"horizontal",ellipsis:!1,class:"category-menu","default-active":b.value},{default:m(()=>[d(s,{index:"home"},{default:m(()=>[d(o,{to:"/"},{default:m(()=>[...t[1]||(t[1]=[v("首页",-1)])]),_:1})]),_:1}),k.value.length>0?(c(),f(n,{key:0,index:"categories"},{title:m(()=>[...t[2]||(t[2]=[v("产品类别",-1)])]),default:m(()=>[(c(!0),i(h,null,_(k.value,e=>(c(),f(s,{key:e.id,index:e.id},{default:m(()=>[d(o,{to:`/category/${e.id}`},{default:m(()=>[v(j(e.name),1)]),_:2},1032,["to"])]),_:2},1032,["index"]))),128))]),_:1})):g("",!0),d(s,{index:"comparison"},{default:m(()=>[d(o,{to:"/comparison"},{default:m(()=>[...t[3]||(t[3]=[v("产品对比",-1)])]),_:1})]),_:1})]),_:1},8,["default-active"])]),u("div",Y,[d(L,{type:"text",onClick:w,class:"mobile-menu-button"},{default:m(()=>[d(a,{size:24},{default:m(()=>[d(p($))]),_:1})]),_:1})])]),u("div",{class:I(["mobile-menu",{"mobile-menu-open":y.value}])},[u("div",J,[u("div",Z,[t[4]||(t[4]=u("h2",null,"菜单",-1)),d(L,{type:"text",onClick:w,class:"close-button"},{default:m(()=>[d(a,{size:24},{default:m(()=>[d(p(T))]),_:1})]),_:1})]),d(r,{mode:"vertical","default-active":b.value},{default:m(()=>[d(s,{index:"home"},{default:m(()=>[d(o,{to:"/",onClick:w},{default:m(()=>[...t[5]||(t[5]=[v("首页",-1)])]),_:1})]),_:1}),k.value.length>0?(c(),f(n,{key:0,index:"categories"},{title:m(()=>[...t[6]||(t[6]=[v("产品类别",-1)])]),default:m(()=>[(c(!0),i(h,null,_(k.value,e=>(c(),f(s,{key:e.id,index:e.id},{default:m(()=>[d(o,{to:`/category/${e.id}`,onClick:w},{default:m(()=>[v(j(e.name),1)]),_:2},1032,["to"])]),_:2},1032,["index"]))),128))]),_:1})):g("",!0),d(s,{index:"comparison"},{default:m(()=>[d(o,{to:"/comparison",onClick:w},{default:m(()=>[...t[7]||(t[7]=[v("产品对比",-1)])]),_:1})]),_:1})]),_:1},8,["default-active"])])],2)])}}},[["__scopeId","data-v-4bf44a9f"]]),te={class:"app-footer"},ae={class:"footer-container"},oe={class:"footer-content"},se={class:"footer-section"},ne={class:"data-sources"},re={class:"footer-section"},le={class:"quick-links"},ie={class:"footer-bottom"},ce={class:"copyright"},ue={class:"update-info"},de={class:"dialog-footer"},me={class:"dialog-footer"},pe=M({__name:"Footer",setup(e){const t=o((new Date).getFullYear()),a=o(""),s=o(!1),n=o(!1),p=o([{name:"GeekBench",url:"https://www.geekbench.com/"},{name:"3DMark",url:"https://www.3dmark.com/"},{name:"AnTuTu",url:"https://www.antutu.com/"}]),f=()=>{s.value=!0},g=()=>{n.value=!0};return r(()=>{a.value="2024-01-01 00:00:00"}),(e,o)=>{const r=l("el-link"),k=l("router-link"),b=l("el-button"),w=l("el-dialog");return c(),i("footer",te,[u("div",ae,[u("div",oe,[o[10]||(o[10]=u("div",{class:"footer-section"},[u("h3",{class:"section-title"},"关于我们"),u("p",{class:"section-text"}," 硬件性能排行榜提供全面的硬件产品性能数据和对比分析,帮助用户做出明智的硬件选择决策。 ")],-1)),u("div",se,[o[4]||(o[4]=u("h3",{class:"section-title"},"数据来源",-1)),u("ul",ne,[(c(!0),i(h,null,_(p.value,e=>(c(),i("li",{key:e.name},[d(r,{href:e.url,target:"_blank",type:"primary"},{default:m(()=>[v(j(e.name),1)]),_:2},1032,["href"])]))),128))])]),u("div",re,[o[9]||(o[9]=u("h3",{class:"section-title"},"快速链接",-1)),u("ul",le,[u("li",null,[d(k,{to:"/"},{default:m(()=>[...o[5]||(o[5]=[v("首页",-1)])]),_:1})]),u("li",null,[d(k,{to:"/comparison"},{default:m(()=>[...o[6]||(o[6]=[v("产品对比",-1)])]),_:1})]),u("li",null,[d(r,{href:"#",onClick:y(f,["prevent"])},{default:m(()=>[...o[7]||(o[7]=[v("关于我们",-1)])]),_:1})]),u("li",null,[d(r,{href:"#",onClick:y(g,["prevent"])},{default:m(()=>[...o[8]||(o[8]=[v("隐私政策",-1)])]),_:1})])])])]),u("div",ie,[u("div",ce,[u("p",null,"© "+j(t.value)+" 硬件性能排行榜. 保留所有权利.",1)]),u("div",ue,[u("p",null,"最后更新时间: "+j(a.value),1)])])]),d(w,{modelValue:s.value,"onUpdate:modelValue":o[1]||(o[1]=e=>s.value=e),title:"关于我们",width:"500px",center:""},{footer:m(()=>[u("span",de,[d(b,{onClick:o[0]||(o[0]=e=>s.value=!1)},{default:m(()=>[...o[11]||(o[11]=[v("关闭",-1)])]),_:1})])]),default:m(()=>[o[12]||(o[12]=u("div",{class:"dialog-content"},[u("h4",null,"硬件性能排行榜"),u("p",null," 我们致力于为用户提供最准确、最全面的硬件产品性能数据。通过整合多个权威测试平台的数据, 我们帮助用户更好地了解和比较各种硬件产品的性能表现。 "),u("p",{class:"mt-4"}," 我们的数据来源于公开的基准测试结果,并定期更新以确保信息的时效性和准确性。 ")],-1))]),_:1},8,["modelValue"]),d(w,{modelValue:n.value,"onUpdate:modelValue":o[3]||(o[3]=e=>n.value=e),title:"隐私政策",width:"500px",center:""},{footer:m(()=>[u("span",me,[d(b,{onClick:o[2]||(o[2]=e=>n.value=!1)},{default:m(()=>[...o[13]||(o[13]=[v("关闭",-1)])]),_:1})])]),default:m(()=>[o[14]||(o[14]=u("div",{class:"dialog-content"},[u("h4",null,"数据收集与使用"),u("p",null," 我们尊重您的隐私权,承诺保护您的个人信息安全。本隐私政策说明了我们如何收集、使用和保护您的信息。 "),u("h4",{class:"mt-4"},"信息收集"),u("p",null," 我们仅收集用于改善网站体验的信息,如访问统计数据和用户偏好设置。我们不收集任何个人身份信息。 "),u("h4",{class:"mt-4"},"信息使用"),u("p",null," 收集的信息仅用于改进我们的服务和用户体验。我们不会将您的信息出售、租赁或以其他方式提供给第三方。 ")],-1))]),_:1},8,["modelValue"])])}}},[["__scopeId","data-v-557fc840"]]),fe={class:"app-layout"},ge={class:"main-content"},ve={class:"content-container"},he=M({__name:"Layout",setup:e=>(e,t)=>{const a=l("router-view");return c(),i("div",fe,[d(ee),u("main",ge,[u("div",ve,[d(a)])]),d(pe)])}},[["__scopeId","data-v-e3aaa93b"]]),_e={name:"GlobalLoading",components:{Loading:A},props:{show:{type:Boolean,default:!1},text:{type:String,default:"加载中..."},size:{type:Number,default:40},fullScreen:{type:Boolean,default:!0}}},ye={class:"loading-content"},ke={class:"loading-spinner"},be={key:0,class:"loading-text"};const we=M(_e,[["render",function(e,t,a,o,s,n){const r=l("Loading"),p=l("el-icon");return c(),f(b,{to:"body"},[d(k,{name:"fade"},{default:m(()=>[a.show?(c(),i("div",{key:0,class:I(["global-loading-overlay",{"full-screen":a.fullScreen}])},[u("div",ye,[u("div",ke,[d(p,{size:a.size,class:"is-loading"},{default:m(()=>[d(r)]),_:1},8,["size"])]),a.text?(c(),i("div",be,j(a.text),1)):g("",!0)])],2)):g("",!0)]),_:1})])}],["__scopeId","data-v-5c73fa52"]]),Le={id:"app"},xe=L({__name:"App",setup(e){const t=q();return(e,a)=>{const o=l("router-view");return c(),i("div",Le,[d(he,null,{default:m(()=>[d(o,null,{default:m(({Component:e})=>[d(k,{name:"fade",mode:"out-in"},{default:m(()=>[(c(),f(w(e)))]),_:2},1024)]),_:1})]),_:1}),d(we,{show:p(t).isLoading,text:p(t).loadingText},null,8,["show","text"])])}}}),Ee=x();for(const[Pe,Ce]of Object.entries(D))xe.component(Pe,Ce);xe.config.errorHandler=(e,t,a)=>{P({title:"应用错误",message:`应用发生错误: ${e.message||"未知错误"}`,type:"error",duration:5e3})},window.addEventListener("unhandledrejection",e=>{var t;P({title:"未处理的错误",message:`应用发生未处理的错误: ${(null==(t=e.reason)?void 0:t.message)||"未知错误"}`,type:"error",duration:5e3}),e.preventDefault()}),xe.use(Ee),xe.use(z),xe.use(O),xe.mount("#app");export{M as _,N as a,U as u};
|