3 lines
12 KiB
JavaScript
3 lines
12 KiB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ReportPage-CfEp_Gyo.js","./vendor-BczUEOE_.js","./vendor-C68yOrAy.css","./email-DAYJAuoX.js","./tasks-myrNC0AE.js","./system-DL-3JJNY.js","./MetricGrid-BVtiO-YF.js","./MetricGrid-yP_dkP6X.css","./ReportPage-DN5YlEZa.css","./UsersPage-C5VKxxv4.js","./users-D6PiqKCG.js","./UsersPage-Cow_LicY.css","./FeedbacksPage-BNIBDNSN.js","./FeedbacksPage-mrXjCiV2.css","./LogsPage-B869d840.js","./LogsPage-D1bozCEo.css","./AnnouncementsPage-DYL1hMLj.js","./AnnouncementsPage-DOwZaaOu.css","./EmailPage-C4cAH9uz.js","./EmailPage-BmPCDPYC.css","./SecurityPage-CGNDFsTS.js","./SecurityPage-DN76ndc_.css","./SystemPage-CZDqSnbM.js","./SystemPage-DYBocGi2.css","./SettingsPage-i1tUy5L8.js","./SettingsPage-DaB8PeRL.css"])))=>i.map(i=>d[i]);
|
|
import{r as m,c as w,o as _,a as me,E as te,b as ne,u as fe,d as pe,e as O,f as K,g as _e,h as he,w as o,i as W,j as d,k as u,l as C,F as Y,m as z,n as ye,p as ge,q as be,s as ve,t as we,v as Ee,x as ke,y as Pe,z as Re,A as X,B as L,C as J,S as Te,D as V,G as Se,H as Oe,I as Le,J as xe,K as Ae}from"./vendor-BczUEOE_.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const l of s)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&a(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const l={};return s.integrity&&(l.integrity=s.integrity),s.referrerPolicy&&(l.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?l.credentials="include":s.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function a(s){if(s.ep)return;s.ep=!0;const l=n(s);fetch(s.href,l)}})();const ae=(e,t)=>{const n=e.__vccOpts||e;for(const[a,s]of t)n[a]=s;return n},Ne={};function Be(e,t){const n=m("RouterView");return _(),w(n)}const Ce=ae(Ne,[["render",Be]]),De="modulepreload",Ve=function(e,t){return new URL(e,t).href},Q={},E=function(t,n,a){let s=Promise.resolve();if(n&&n.length>0){let T=function(p){return Promise.all(p.map(b=>Promise.resolve(b).then(P=>({status:"fulfilled",value:P}),P=>({status:"rejected",reason:P}))))};const i=document.getElementsByTagName("link"),f=document.querySelector("meta[property=csp-nonce]"),k=f?.nonce||f?.getAttribute("nonce");s=T(n.map(p=>{if(p=Ve(p,a),p in Q)return;Q[p]=!0;const b=p.endsWith(".css"),P=b?'[rel="stylesheet"]':"";if(a)for(let R=i.length-1;R>=0;R--){const v=i[R];if(v.href===p&&(!b||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${p}"]${P}`))return;const h=document.createElement("link");if(h.rel=b?"stylesheet":De,b||(h.as="script"),h.crossOrigin="",h.href=p,k&&h.setAttribute("nonce",k),document.head.appendChild(h),b)return new Promise((R,v)=>{h.addEventListener("load",R),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${p}`)))})}))}function l(i){const f=new Event("vite:preloadError",{cancelable:!0});if(f.payload=i,window.dispatchEvent(f),!f.defaultPrevented)throw i}return s.then(i=>{for(const f of i||[])f.status==="rejected"&&l(f.reason);return t().catch(l)})};let Z="",ee=0;const Ie=new Set([408,425,429,500,502,503,504]),Me=1,$e=300;function x(e,t,n=1500){const a=Date.now();e===Z&&a-ee<n||(Z=e,ee=a,ne.error(t))}function Fe(e){const t=String(e).replace(/([.*+?^${}()|[\]\\])/g,"\\$1"),n=document.cookie.match(new RegExp(`(?:^|; )${t}=([^;]*)`));return n?decodeURIComponent(n[1]):""}function Ue(e){return["GET","HEAD","OPTIONS"].includes(String(e||"GET").toUpperCase())}function qe(e){const t=e?.config;if(!t||t.__no_retry||!Ue(t.method)||Number(t.__retry_count||0)>=Me)return!1;const a=String(e?.code||"");if(a==="ECONNABORTED"||a==="ERR_NETWORK")return!0;const s=Number(e?.response?.status||0);return Ie.has(s)}function je(e){return new Promise(t=>{window.setTimeout(t,Math.max(0,Number(e||0)))})}async function Ge(e,t){const n=e?.config||{},a=Number(n.__retry_count||0);n.__retry_count=a+1;const s=$e*(a+1);return await je(s),t.request(n)}const y=me.create({baseURL:"/yuyx/api",timeout:3e4,withCredentials:!0});let A=null;async function He(){return A||(A=te.prompt("请输入管理员密码进行二次确认","安全确认",{inputType:"password",inputPlaceholder:"管理员密码",confirmButtonText:"确认",cancelButtonText:"取消",inputValidator:e=>!!String(e||"").trim(),inputErrorMessage:"密码不能为空"}).then(async e=>{const t=String(e.value||"").trim();await y.post("/admin/reauth",{password:t}),ne.success("已通过安全确认")}).finally(()=>{A=null}),A)}y.interceptors.request.use(e=>{const t=String(e?.method||"GET").toUpperCase();if(!["GET","HEAD","OPTIONS"].includes(t)){const n=Fe("csrf_token");n&&(e.headers=e.headers||{},e.headers["X-CSRF-Token"]=n)}return e});y.interceptors.response.use(e=>e,async e=>{const t=e?.response?.status,n=e?.response?.data,a=n?.error||n?.message||e?.message||"请求失败";if(n?.code==="reauth_required"&&e?.config&&!e.config.__reauth_retry)try{return e.config.__reauth_retry=!0,await He(),y.request(e.config)}catch{return Promise.reject(e)}return qe(e)?Ge(e,y):(t===401?(x("401",a,3e3),(window.location?.pathname||"").startsWith("/yuyx")||(window.location.href="/yuyx")):t===403?x("403",a,5e3):t?x(`http:${t}:${a}`,a):e?.code==="ECONNABORTED"?x("timeout","请求超时",3e3):x(`net:${a}`,a,3e3),Promise.reject(e))});async function gt(e=""){const{data:t}=await y.get("/feedbacks",{params:e?{status:e}:{}});return t}async function Ke(){const{data:e}=await y.get("/feedbacks",{params:{limit:1,offset:0}});return e?.stats}async function bt(e,t){const{data:n}=await y.post(`/feedbacks/${e}/reply`,{reply:t});return n}async function vt(e){const{data:t}=await y.post(`/feedbacks/${e}/close`);return t}async function wt(e){const{data:t}=await y.delete(`/feedbacks/${e}`);return t}async function We(){const{data:e}=await y.get("/stats");return e}const Ye={class:"menu-label"},ze={key:1,class:"menu-label"},Xe={class:"header-left"},Je={class:"header-right"},Qe={class:"admin-name"},Ze={class:"main-shell"},et={class:"menu-label"},tt={key:1,class:"menu-label"},nt=6e4,at=18e4,st={__name:"AdminLayout",setup(e){const t=fe(),n=pe(),a=O({}),s=K(()=>a.value?.admin_username||"");async function l(){try{a.value=await We()}finally{}}const i=O(!1),f=O(0);let k=null;async function T(g=null){if(g&&typeof g=="object"){Object.prototype.hasOwnProperty.call(g,"pendingFeedbacks")&&(f.value=Number(g.pendingFeedbacks||0));return}if(!i.value){i.value=!0;try{const r=await Ke();f.value=Number(r?.pending||0)}finally{i.value=!1}}}function p(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function b(){return p()?at:nt}function P(){k&&(window.clearTimeout(k),k=null)}function h(){P(),k=window.setTimeout(async()=>{k=null,await T().catch(()=>{}),h()},b())}function R(){h()}V("refreshStats",l),V("adminStats",a),V("refreshNavBadges",T);const v=O(!1),S=O(!1);let N;function D(){v.value=!!N?.matches,v.value||(S.value=!1)}_e(async()=>{N=window.matchMedia("(max-width: 768px)"),N.addEventListener?.("change",D),D(),await l(),await T(),h(),window.addEventListener("visibilitychange",R)}),he(()=>{N?.removeEventListener?.("change",D),P(),window.removeEventListener("visibilitychange",R)});const I=[{path:"/reports",label:"报表",icon:ye},{path:"/users",label:"用户",icon:ge},{path:"/feedbacks",label:"反馈",icon:be,badgeKey:"feedbacks"},{path:"/logs",label:"任务日志",icon:ve},{path:"/announcements",label:"公告",icon:we},{path:"/email",label:"邮件",icon:Ee},{path:"/security",label:"安全防护",icon:ke},{path:"/system",label:"系统配置",icon:Pe},{path:"/settings",label:"设置",icon:Re}],M=K(()=>t.path);function B(g){return g?.badgeKey&&g.badgeKey==="feedbacks"?Number(f.value||0):0}async function se(){try{await te.confirm("确定退出管理员登录吗?","退出登录",{confirmButtonText:"退出",cancelButtonText:"取消",type:"warning"})}catch{return}try{await y.post("/logout")}finally{window.location.href="/yuyx"}}async function $(g){await n.push(g),S.value=!1}return(g,r)=>{const F=m("el-icon"),U=m("el-badge"),q=m("el-menu-item"),j=m("el-menu"),oe=m("el-aside"),G=m("el-button"),re=m("el-header"),ce=m("RouterView"),le=m("el-skeleton"),ie=m("el-card"),ue=m("el-main"),H=m("el-container"),de=m("el-drawer");return _(),w(H,{class:"layout-root"},{default:o(()=>[v.value?W("",!0):(_(),w(oe,{key:0,width:"220px",class:"layout-aside"},{default:o(()=>[r[2]||(r[2]=u("div",{class:"brand"},[u("div",{class:"brand-title"},"后台管理"),u("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),d(j,{"default-active":M.value,class:"aside-menu",router:"",onSelect:$},{default:o(()=>[(_(),C(Y,null,z(I,c=>d(q,{key:c.path,index:c.path},{default:o(()=>[d(F,null,{default:o(()=>[(_(),w(X(c.icon)))]),_:2},1024),B(c)>0?(_(),w(U,{key:0,value:B(c),max:99,class:"menu-badge"},{default:o(()=>[u("span",Ye,L(c.label),1)]),_:2},1032,["value"])):(_(),C("span",ze,L(c.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1})),d(H,null,{default:o(()=>[d(re,{class:"layout-header"},{default:o(()=>[u("div",Xe,[v.value?(_(),w(G,{key:0,text:"",class:"header-menu-btn",onClick:r[0]||(r[0]=c=>S.value=!0)},{default:o(()=>[...r[3]||(r[3]=[J(" 菜单 ",-1)])]),_:1})):W("",!0),r[4]||(r[4]=u("div",{class:"header-title"},"后台管理系统",-1))]),u("div",Je,[u("div",Qe,[r[5]||(r[5]=u("span",{class:"app-muted"},"管理员",-1)),u("strong",null,L(s.value||"-"),1)]),d(G,{type:"primary",plain:"",class:"logout-btn",onClick:se},{default:o(()=>[...r[6]||(r[6]=[J("退出",-1)])]),_:1})])]),_:1}),d(ue,{class:"layout-main"},{default:o(()=>[u("div",Ze,[(_(),w(Te,null,{default:o(()=>[d(ce)]),fallback:o(()=>[d(ie,{shadow:"never","body-style":{padding:"16px"},class:"fallback-card"},{default:o(()=>[d(le,{rows:5,animated:""})]),_:1})]),_:1}))])]),_:1})]),_:1}),d(de,{modelValue:S.value,"onUpdate:modelValue":r[1]||(r[1]=c=>S.value=c),size:"min(82vw, 280px)",direction:"ltr","with-header":!1},{default:o(()=>[r[7]||(r[7]=u("div",{class:"drawer-brand"},[u("div",{class:"brand-title"},"后台管理"),u("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),d(j,{"default-active":M.value,class:"aside-menu",router:"",onSelect:$},{default:o(()=>[(_(),C(Y,null,z(I,c=>d(q,{key:c.path,index:c.path},{default:o(()=>[d(F,null,{default:o(()=>[(_(),w(X(c.icon)))]),_:2},1024),B(c)>0?(_(),w(U,{key:0,value:B(c),max:99,class:"menu-badge"},{default:o(()=>[u("span",et,L(c.label),1)]),_:2},1032,["value"])):(_(),C("span",tt,L(c.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1},8,["modelValue"])]),_:1})}}},ot=ae(st,[["__scopeId","data-v-ce83ce8c"]]),rt=()=>E(()=>import("./ReportPage-CfEp_Gyo.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),ct=()=>E(()=>import("./UsersPage-C5VKxxv4.js"),__vite__mapDeps([9,10,1,2,11]),import.meta.url),lt=()=>E(()=>import("./FeedbacksPage-BNIBDNSN.js"),__vite__mapDeps([12,6,1,2,7,13]),import.meta.url),it=()=>E(()=>import("./LogsPage-B869d840.js"),__vite__mapDeps([14,10,4,1,2,15]),import.meta.url),ut=()=>E(()=>import("./AnnouncementsPage-DYL1hMLj.js"),__vite__mapDeps([16,1,2,17]),import.meta.url),dt=()=>E(()=>import("./EmailPage-C4cAH9uz.js"),__vite__mapDeps([18,3,6,1,2,7,19]),import.meta.url),mt=()=>E(()=>import("./SecurityPage-CGNDFsTS.js"),__vite__mapDeps([20,6,1,2,7,21]),import.meta.url),ft=()=>E(()=>import("./SystemPage-CZDqSnbM.js"),__vite__mapDeps([22,5,1,2,23]),import.meta.url),pt=()=>E(()=>import("./SettingsPage-i1tUy5L8.js"),__vite__mapDeps([24,1,2,25]),import.meta.url),_t=[{path:"/",component:ot,children:[{path:"",redirect:"/reports"},{path:"/pending",redirect:"/reports"},{path:"/stats",redirect:"/reports"},{path:"/reports",name:"reports",component:rt},{path:"/users",name:"users",component:ct},{path:"/feedbacks",name:"feedbacks",component:lt},{path:"/logs",name:"logs",component:it},{path:"/announcements",name:"announcements",component:ut},{path:"/email",name:"email",component:dt},{path:"/security",name:"security",component:mt},{path:"/system",name:"system",component:ft},{path:"/settings",name:"settings",component:pt}]}],ht=Se({history:Oe(),routes:_t});Le(Ce).use(ht).use(xe,{locale:Ae}).mount("#app");export{ae as _,y as a,gt as b,vt as c,wt as d,Ke as f,bt as r};
|