Files
zsglpt/static/admin/assets/index-BNslg8wp.js

3 lines
13 KiB
JavaScript

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