bug修复

This commit is contained in:
nojava
2026-05-18 18:10:44 +08:00
parent aeb18e2bc8
commit 26c013b8c0
26 changed files with 36 additions and 24 deletions
@@ -6,6 +6,11 @@ server:
spring:
application:
name: jog-system
mvc:
throw-exception-if-no-handler-found: false
web:
resources:
add-mappings: true
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://81.70.204.4:3306/jog?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true
@@ -1 +1 @@
import{_ as D,a3 as k,S as A,U as t,af as o,g as M,ac as S,a6 as e,E as B,P as a,v as U,w as q,q as I,p as L,b as N,T as i,u as V}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";import{u as $}from"./user-Ct5x882U.js";import"./request-D458e9ik.js";const T={class:"admin-layout"},H={__name:"AdminLayout",setup(P){const _=$(),m=S();async function p(){await _.logout(),m.push("/login")}return(u,n)=>{const c=e("DataAnalysis"),l=I,s=q,f=e("User"),v=e("Document"),x=e("ChatDotSquare"),E=e("Menu"),g=U,C=B,r=N,b=L,w=e("router-view"),y=V,d=M;return k(),A("div",T,[t(d,null,{default:o(()=>[t(C,{width:"220px"},{default:o(()=>[n[6]||(n[6]=a("div",{class:"admin-logo"},"管理后台",-1)),t(g,{"default-active":u.$route.path,router:"","background-color":"#304156","text-color":"#bfcbd9","active-text-color":"#409eff"},{default:o(()=>[t(s,{index:"/admin"},{default:o(()=>[t(l,null,{default:o(()=>[t(c)]),_:1}),n[1]||(n[1]=a("span",null,"仪表盘",-1))]),_:1}),t(s,{index:"/admin/users"},{default:o(()=>[t(l,null,{default:o(()=>[t(f)]),_:1}),n[2]||(n[2]=a("span",null,"用户管理",-1))]),_:1}),t(s,{index:"/admin/articles"},{default:o(()=>[t(l,null,{default:o(()=>[t(v)]),_:1}),n[3]||(n[3]=a("span",null,"文章管理",-1))]),_:1}),t(s,{index:"/admin/comments"},{default:o(()=>[t(l,null,{default:o(()=>[t(x)]),_:1}),n[4]||(n[4]=a("span",null,"评论管理",-1))]),_:1}),t(s,{index:"/admin/categories"},{default:o(()=>[t(l,null,{default:o(()=>[t(E)]),_:1}),n[5]||(n[5]=a("span",null,"分类管理",-1))]),_:1})]),_:1},8,["default-active"])]),_:1}),t(d,null,{default:o(()=>[t(b,{class:"admin-header"},{default:o(()=>[t(r,{onClick:n[0]||(n[0]=R=>u.$router.push("/"))},{default:o(()=>[...n[7]||(n[7]=[i("返回前台",-1)])]),_:1}),t(r,{onClick:p},{default:o(()=>[...n[8]||(n[8]=[i("退出",-1)])]),_:1})]),_:1}),t(y,null,{default:o(()=>[t(w)]),_:1})]),_:1})]),_:1})])}}},X=D(H,[["__scopeId","data-v-32b7a9c5"]]);export{X as default};
import{_ as D,a3 as k,S as A,U as t,af as o,g as M,ac as S,a6 as e,E as B,P as a,v as U,w as q,q as I,p as L,b as N,T as i,u as V}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";import{u as $}from"./user-CyFJlq7v.js";import"./request-BdgcZPJd.js";const T={class:"admin-layout"},H={__name:"AdminLayout",setup(P){const _=$(),m=S();async function p(){await _.logout(),m.push("/login")}return(u,n)=>{const c=e("DataAnalysis"),l=I,s=q,f=e("User"),v=e("Document"),x=e("ChatDotSquare"),E=e("Menu"),g=U,C=B,r=N,b=L,w=e("router-view"),y=V,d=M;return k(),A("div",T,[t(d,null,{default:o(()=>[t(C,{width:"220px"},{default:o(()=>[n[6]||(n[6]=a("div",{class:"admin-logo"},"管理后台",-1)),t(g,{"default-active":u.$route.path,router:"","background-color":"#304156","text-color":"#bfcbd9","active-text-color":"#409eff"},{default:o(()=>[t(s,{index:"/admin"},{default:o(()=>[t(l,null,{default:o(()=>[t(c)]),_:1}),n[1]||(n[1]=a("span",null,"仪表盘",-1))]),_:1}),t(s,{index:"/admin/users"},{default:o(()=>[t(l,null,{default:o(()=>[t(f)]),_:1}),n[2]||(n[2]=a("span",null,"用户管理",-1))]),_:1}),t(s,{index:"/admin/articles"},{default:o(()=>[t(l,null,{default:o(()=>[t(v)]),_:1}),n[3]||(n[3]=a("span",null,"文章管理",-1))]),_:1}),t(s,{index:"/admin/comments"},{default:o(()=>[t(l,null,{default:o(()=>[t(x)]),_:1}),n[4]||(n[4]=a("span",null,"评论管理",-1))]),_:1}),t(s,{index:"/admin/categories"},{default:o(()=>[t(l,null,{default:o(()=>[t(E)]),_:1}),n[5]||(n[5]=a("span",null,"分类管理",-1))]),_:1})]),_:1},8,["default-active"])]),_:1}),t(d,null,{default:o(()=>[t(b,{class:"admin-header"},{default:o(()=>[t(r,{onClick:n[0]||(n[0]=R=>u.$router.push("/"))},{default:o(()=>[...n[7]||(n[7]=[i("返回前台",-1)])]),_:1}),t(r,{onClick:p},{default:o(()=>[...n[8]||(n[8]=[i("退出",-1)])]),_:1})]),_:1}),t(y,null,{default:o(()=>[t(w)]),_:1})]),_:1})]),_:1})])}}},X=D(H,[["__scopeId","data-v-32b7a9c5"]]);export{X as default};
@@ -1 +1 @@
import{_ as E,a3 as v,S as x,U as t,af as e,g as w,a6 as o,E as y,v as A,w as D,q as B,P as s,u as C}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";const I={},M={class:"app-layout"};function P(_,n){const p=o("DataAnalysis"),a=B,l=D,u=o("Document"),i=o("EditPen"),c=A,d=y,r=o("router-view"),m=C,f=w;return v(),x("div",M,[t(f,null,{default:e(()=>[t(d,{width:"200px"},{default:e(()=>[t(c,{"default-active":_.$route.path,router:""},{default:e(()=>[t(l,{index:"/app/dashboard"},{default:e(()=>[t(a,null,{default:e(()=>[t(p)]),_:1}),n[0]||(n[0]=s("span",null,"控制台",-1))]),_:1}),t(l,{index:"/app/articles"},{default:e(()=>[t(a,null,{default:e(()=>[t(u)]),_:1}),n[1]||(n[1]=s("span",null,"我的文章",-1))]),_:1}),t(l,{index:"/app/editor"},{default:e(()=>[t(a,null,{default:e(()=>[t(i)]),_:1}),n[2]||(n[2]=s("span",null,"写文章",-1))]),_:1})]),_:1},8,["default-active"])]),_:1}),t(m,null,{default:e(()=>[t(r)]),_:1})]),_:1})])}const L=E(I,[["render",P],["__scopeId","data-v-105f3892"]]);export{L as default};
import{_ as E,a3 as v,S as x,U as t,af as e,g as w,a6 as o,E as y,v as A,w as D,q as B,P as s,u as C}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";const I={},M={class:"app-layout"};function P(_,n){const p=o("DataAnalysis"),a=B,l=D,u=o("Document"),i=o("EditPen"),c=A,d=y,r=o("router-view"),m=C,f=w;return v(),x("div",M,[t(f,null,{default:e(()=>[t(d,{width:"200px"},{default:e(()=>[t(c,{"default-active":_.$route.path,router:""},{default:e(()=>[t(l,{index:"/app/dashboard"},{default:e(()=>[t(a,null,{default:e(()=>[t(p)]),_:1}),n[0]||(n[0]=s("span",null,"控制台",-1))]),_:1}),t(l,{index:"/app/articles"},{default:e(()=>[t(a,null,{default:e(()=>[t(u)]),_:1}),n[1]||(n[1]=s("span",null,"我的文章",-1))]),_:1}),t(l,{index:"/app/editor"},{default:e(()=>[t(a,null,{default:e(()=>[t(i)]),_:1}),n[2]||(n[2]=s("span",null,"写文章",-1))]),_:1})]),_:1},8,["default-active"])]),_:1}),t(m,null,{default:e(()=>[t(r)]),_:1})]),_:1})])}const L=E(I,[["render",P],["__scopeId","data-v-105f3892"]]);export{L as default};
@@ -1 +1 @@
import{_ as G,a2 as J,ag as K,ad as O,a3 as i,S as c,N as g,P as a,a9 as n,U as e,af as o,T as u,Q as E,R as y,a5 as N,aa as S,a4 as v,q as W,M as X,b as Y,s as Z,a6 as p,ab as ee,i as te,a as ae,x as z}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{f as ne,t as se}from"./article-9VCq7wnf.js";import{d as le,t as oe,c as ie}from"./comment-DHhatGB5.js";import{u as ue}from"./user-Ct5x882U.js";import"./request-D458e9ik.js";const ce={class:"article-detail"},re={class:"meta"},de={class:"tags"},_e=["innerHTML"],me={class:"actions"},ve={class:"comments-section"},pe={key:0,class:"comment-form"},fe={key:1,class:"login-tip"},ke={class:"comment-list"},ge={class:"comment-header"},ye={class:"nickname"},he={class:"time"},Ce={class:"comment-body"},we={class:"comment-actions"},Ne={key:0,class:"replies"},Te={class:"nickname"},xe={key:0,class:"reply-to"},Ae={class:"time"},De={__name:"ArticleDetail",setup(Le){const T=ee(),x=ue(),t=v(null),A=v([]),h=v(!0),m=v(""),C=v(!1),f=v(null);async function U(){h.value=!0;const s=await ne(T.params.id);t.value=s.data,h.value=!1}async function D(){const s=await le(T.params.id);A.value=s.data}async function B(){if(!x.isLoggedIn){z.warning("请先登录");return}const s=await se(t.value.id);t.value.liked=s.data,t.value.likeCount+=s.data?1:-1}function M(s){f.value=s,m.value=`@${s.nickname} `}async function q(){if(m.value.trim()){C.value=!0;try{const s={articleId:t.value.id,content:m.value};f.value&&(s.parentId=f.value.id,s.replyToUserId=f.value.userId),await ie(s),z.success("评论成功"),m.value="",f.value=null,D()}finally{C.value=!1}}}function w(s){return s?new Date(s).toLocaleString("zh-CN"):""}return J(()=>{U(),D()}),(s,r)=>{const R=p("User"),_=W,$=p("View"),L=p("ChatDotSquare"),H=p("Timer"),b=X,I=te,V=p("Star"),k=Y,F=Z,P=p("router-link"),Q=ae,j=O;return K((i(),c("div",ce,[t.value?(i(),c(g,{key:0},[a("h1",null,n(t.value.title),1),a("div",re,[a("span",null,[e(_,null,{default:o(()=>[e(R)]),_:1}),u(" "+n(t.value.authorNickname),1)]),a("span",null,[e(_,null,{default:o(()=>[e($)]),_:1}),u(" "+n(t.value.viewCount),1)]),a("span",null,[e(_,null,{default:o(()=>[e(L)]),_:1}),u(" "+n(t.value.commentCount),1)]),a("span",null,[e(_,null,{default:o(()=>[e(H)]),_:1}),u(" "+n(w(t.value.publishedAt)),1)]),t.value.categoryName?(i(),E(b,{key:0,size:"small"},{default:o(()=>[u(n(t.value.categoryName),1)]),_:1})):y("",!0)]),a("div",de,[(i(!0),c(g,null,N(t.value.tags,l=>(i(),E(b,{key:l.id,type:"info",size:"small"},{default:o(()=>[u(n(l.name),1)]),_:2},1024))),128))]),e(I),a("div",{class:"content",innerHTML:t.value.content},null,8,_e),e(I),a("div",me,[e(k,{type:t.value.liked?"danger":"default",onClick:B},{default:o(()=>[e(_,null,{default:o(()=>[e(V)]),_:1}),u(" "+n(t.value.liked?"已点赞":"点赞")+" ("+n(t.value.likeCount)+") ",1)]),_:1},8,["type"])]),a("div",ve,[a("h3",null,"评论 ("+n(t.value.commentCount)+")",1),S(x).isLoggedIn?(i(),c("div",pe,[e(F,{modelValue:m.value,"onUpdate:modelValue":r[0]||(r[0]=l=>m.value=l),type:"textarea",rows:3,placeholder:"写下你的评论..."},null,8,["modelValue"]),e(k,{type:"primary",onClick:q,loading:C.value,style:{"margin-top":"8px"}},{default:o(()=>[...r[1]||(r[1]=[u("发表评论",-1)])]),_:1},8,["loading"])])):(i(),c("div",fe,[e(P,{to:"/login"},{default:o(()=>[...r[2]||(r[2]=[u("登录",-1)])]),_:1}),r[3]||(r[3]=u(" 后可以评论 ",-1))])),a("div",ke,[(i(!0),c(g,null,N(A.value,l=>(i(),c("div",{key:l.id,class:"comment-item"},[a("div",ge,[e(Q,{size:32,src:l.avatar},null,8,["src"]),a("span",ye,n(l.nickname),1),a("span",he,n(w(l.createdAt)),1)]),a("div",Ce,n(l.content),1),a("div",we,[e(k,{text:"",size:"small",onClick:d=>M(l)},{default:o(()=>[e(_,null,{default:o(()=>[e(L)]),_:1}),r[4]||(r[4]=u(" 回复 ",-1))]),_:1},8,["onClick"]),e(k,{text:"",size:"small",onClick:d=>S(oe)(l)},{default:o(()=>[e(_,null,{default:o(()=>[e(V)]),_:1}),u(" "+n(l.likeCount),1)]),_:2},1032,["onClick"])]),l.children&&l.children.length?(i(),c("div",Ne,[(i(!0),c(g,null,N(l.children,d=>(i(),c("div",{key:d.id,class:"reply-item"},[a("span",Te,n(d.nickname),1),d.replyToNickname?(i(),c("span",xe,"回复 "+n(d.replyToNickname),1)):y("",!0),u(" "+n(d.content)+" ",1),a("span",Ae,n(w(d.createdAt)),1)]))),128))])):y("",!0)]))),128))])])],64)):y("",!0)])),[[j,h.value]])}}},$e=G(De,[["__scopeId","data-v-1b96cb74"]]);export{$e as default};
import{_ as G,a2 as J,ag as K,ad as O,a3 as i,S as c,N as g,P as a,a9 as n,U as e,af as o,T as u,Q as E,R as y,a5 as N,aa as S,a4 as v,q as W,M as X,b as Y,s as Z,a6 as p,ab as ee,i as te,a as ae,x as z}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{f as ne,t as se}from"./article-yQluyDRw.js";import{d as le,t as oe,c as ie}from"./comment-Z5L_VCb7.js";import{u as ue}from"./user-CyFJlq7v.js";import"./request-BdgcZPJd.js";const ce={class:"article-detail"},re={class:"meta"},de={class:"tags"},_e=["innerHTML"],me={class:"actions"},ve={class:"comments-section"},pe={key:0,class:"comment-form"},fe={key:1,class:"login-tip"},ke={class:"comment-list"},ge={class:"comment-header"},ye={class:"nickname"},he={class:"time"},Ce={class:"comment-body"},we={class:"comment-actions"},Ne={key:0,class:"replies"},Te={class:"nickname"},xe={key:0,class:"reply-to"},Ae={class:"time"},De={__name:"ArticleDetail",setup(Le){const T=ee(),x=ue(),t=v(null),A=v([]),h=v(!0),m=v(""),C=v(!1),f=v(null);async function U(){h.value=!0;const s=await ne(T.params.id);t.value=s.data,h.value=!1}async function D(){const s=await le(T.params.id);A.value=s.data}async function B(){if(!x.isLoggedIn){z.warning("请先登录");return}const s=await se(t.value.id);t.value.liked=s.data,t.value.likeCount+=s.data?1:-1}function M(s){f.value=s,m.value=`@${s.nickname} `}async function q(){if(m.value.trim()){C.value=!0;try{const s={articleId:t.value.id,content:m.value};f.value&&(s.parentId=f.value.id,s.replyToUserId=f.value.userId),await ie(s),z.success("评论成功"),m.value="",f.value=null,D()}finally{C.value=!1}}}function w(s){return s?new Date(s).toLocaleString("zh-CN"):""}return J(()=>{U(),D()}),(s,r)=>{const R=p("User"),_=W,$=p("View"),L=p("ChatDotSquare"),H=p("Timer"),b=X,I=te,V=p("Star"),k=Y,F=Z,P=p("router-link"),Q=ae,j=O;return K((i(),c("div",ce,[t.value?(i(),c(g,{key:0},[a("h1",null,n(t.value.title),1),a("div",re,[a("span",null,[e(_,null,{default:o(()=>[e(R)]),_:1}),u(" "+n(t.value.authorNickname),1)]),a("span",null,[e(_,null,{default:o(()=>[e($)]),_:1}),u(" "+n(t.value.viewCount),1)]),a("span",null,[e(_,null,{default:o(()=>[e(L)]),_:1}),u(" "+n(t.value.commentCount),1)]),a("span",null,[e(_,null,{default:o(()=>[e(H)]),_:1}),u(" "+n(w(t.value.publishedAt)),1)]),t.value.categoryName?(i(),E(b,{key:0,size:"small"},{default:o(()=>[u(n(t.value.categoryName),1)]),_:1})):y("",!0)]),a("div",de,[(i(!0),c(g,null,N(t.value.tags,l=>(i(),E(b,{key:l.id,type:"info",size:"small"},{default:o(()=>[u(n(l.name),1)]),_:2},1024))),128))]),e(I),a("div",{class:"content",innerHTML:t.value.content},null,8,_e),e(I),a("div",me,[e(k,{type:t.value.liked?"danger":"default",onClick:B},{default:o(()=>[e(_,null,{default:o(()=>[e(V)]),_:1}),u(" "+n(t.value.liked?"已点赞":"点赞")+" ("+n(t.value.likeCount)+") ",1)]),_:1},8,["type"])]),a("div",ve,[a("h3",null,"评论 ("+n(t.value.commentCount)+")",1),S(x).isLoggedIn?(i(),c("div",pe,[e(F,{modelValue:m.value,"onUpdate:modelValue":r[0]||(r[0]=l=>m.value=l),type:"textarea",rows:3,placeholder:"写下你的评论..."},null,8,["modelValue"]),e(k,{type:"primary",onClick:q,loading:C.value,style:{"margin-top":"8px"}},{default:o(()=>[...r[1]||(r[1]=[u("发表评论",-1)])]),_:1},8,["loading"])])):(i(),c("div",fe,[e(P,{to:"/login"},{default:o(()=>[...r[2]||(r[2]=[u("登录",-1)])]),_:1}),r[3]||(r[3]=u(" 后可以评论 ",-1))])),a("div",ke,[(i(!0),c(g,null,N(A.value,l=>(i(),c("div",{key:l.id,class:"comment-item"},[a("div",ge,[e(Q,{size:32,src:l.avatar},null,8,["src"]),a("span",ye,n(l.nickname),1),a("span",he,n(w(l.createdAt)),1)]),a("div",Ce,n(l.content),1),a("div",we,[e(k,{text:"",size:"small",onClick:d=>M(l)},{default:o(()=>[e(_,null,{default:o(()=>[e(L)]),_:1}),r[4]||(r[4]=u(" 回复 ",-1))]),_:1},8,["onClick"]),e(k,{text:"",size:"small",onClick:d=>S(oe)(l)},{default:o(()=>[e(_,null,{default:o(()=>[e(V)]),_:1}),u(" "+n(l.likeCount),1)]),_:2},1032,["onClick"])]),l.children&&l.children.length?(i(),c("div",Ne,[(i(!0),c(g,null,N(l.children,d=>(i(),c("div",{key:d.id,class:"reply-item"},[a("span",Te,n(d.nickname),1),d.replyToNickname?(i(),c("span",xe,"回复 "+n(d.replyToNickname),1)):y("",!0),u(" "+n(d.content)+" ",1),a("span",Ae,n(w(d.createdAt)),1)]))),128))])):y("",!0)]))),128))])])],64)):y("",!0)])),[[j,h.value]])}}},$e=G(De,[["__scopeId","data-v-1b96cb74"]]);export{$e as default};
@@ -1 +1 @@
import{a2 as S,a3 as v,S as D,P as f,U as e,af as o,ah as M,ag as N,ad as U,Q as z,a4 as i,s as I,F as K,J as P,A as j,a6 as q,b as F,q as J,z as L,K as O,M as Q,T as b,a9 as $,y as G,x as H}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{g as R,a as W}from"./article-9VCq7wnf.js";import"./request-D458e9ik.js";const X={style:{"margin-bottom":"16px",display:"flex",gap:"12px"}},ge={__name:"Articles",setup(Y){const m=i([]),r=i(!1),p=i(1),_=i(0),u=i(""),c=i(null);async function s(){r.value=!0;const l=await R({page:p.value,pageSize:15,keyword:u.value,status:c.value});m.value=l.data.records,_.value=l.data.total,r.value=!1}async function y(l){await G.confirm("确定删除该文章?","警告",{type:"warning"}),await W(l),H.success("已删除"),s()}function w(l){return[null,"success","warning","info"][l.status]||""}function x(l){return["草稿","已发布","回收站"][l.status]||"未知"}return S(s),(l,t)=>{const h=q("Search"),E=J,g=F,C=I,d=L,k=K,n=O,V=Q,T=P,A=j,B=U;return v(),D("div",null,[t[4]||(t[4]=f("h2",null,"文章管理",-1)),f("div",X,[e(C,{modelValue:u.value,"onUpdate:modelValue":t[0]||(t[0]=a=>u.value=a),placeholder:"搜索文章",clearable:"",style:{width:"300px"},onKeyup:M(s,["enter"])},{append:o(()=>[e(g,{onClick:s},{default:o(()=>[e(E,null,{default:o(()=>[e(h)]),_:1})]),_:1})]),_:1},8,["modelValue"]),e(k,{modelValue:c.value,"onUpdate:modelValue":t[1]||(t[1]=a=>c.value=a),placeholder:"状态",clearable:"",onChange:s},{default:o(()=>[e(d,{label:"草稿",value:0}),e(d,{label:"已发布",value:1}),e(d,{label:"回收站",value:2})]),_:1},8,["modelValue"])]),N((v(),z(T,{data:m.value},{default:o(()=>[e(n,{prop:"id",label:"ID",width:"80"}),e(n,{prop:"title",label:"标题"}),e(n,{prop:"authorNickname",label:"作者",width:"120"}),e(n,{prop:"viewCount",label:"浏览",width:"80"}),e(n,{prop:"likeCount",label:"点赞",width:"80"}),e(n,{label:"状态",width:"100"},{default:o(({row:a})=>[e(V,{type:w(a)},{default:o(()=>[b($(x(a)),1)]),_:2},1032,["type"])]),_:1}),e(n,{label:"操作",width:"120"},{default:o(({row:a})=>[e(g,{text:"",type:"danger",onClick:Z=>y(a.id)},{default:o(()=>[...t[3]||(t[3]=[b("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[B,r.value]]),e(A,{"current-page":p.value,"onUpdate:currentPage":t[2]||(t[2]=a=>p.value=a),"page-size":15,total:_.value,layout:"prev, pager, next",onCurrentChange:s,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{ge as default};
import{a2 as S,a3 as v,S as D,P as f,U as e,af as o,ah as M,ag as N,ad as U,Q as z,a4 as i,s as I,F as K,J as P,A as j,a6 as q,b as F,q as J,z as L,K as O,M as Q,T as b,a9 as $,y as G,x as H}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{g as R,a as W}from"./article-yQluyDRw.js";import"./request-BdgcZPJd.js";const X={style:{"margin-bottom":"16px",display:"flex",gap:"12px"}},ge={__name:"Articles",setup(Y){const m=i([]),r=i(!1),p=i(1),_=i(0),u=i(""),c=i(null);async function s(){r.value=!0;const l=await R({page:p.value,pageSize:15,keyword:u.value,status:c.value});m.value=l.data.records,_.value=l.data.total,r.value=!1}async function y(l){await G.confirm("确定删除该文章?","警告",{type:"warning"}),await W(l),H.success("已删除"),s()}function w(l){return[null,"success","warning","info"][l.status]||""}function x(l){return["草稿","已发布","回收站"][l.status]||"未知"}return S(s),(l,t)=>{const h=q("Search"),E=J,g=F,C=I,d=L,k=K,n=O,V=Q,T=P,A=j,B=U;return v(),D("div",null,[t[4]||(t[4]=f("h2",null,"文章管理",-1)),f("div",X,[e(C,{modelValue:u.value,"onUpdate:modelValue":t[0]||(t[0]=a=>u.value=a),placeholder:"搜索文章",clearable:"",style:{width:"300px"},onKeyup:M(s,["enter"])},{append:o(()=>[e(g,{onClick:s},{default:o(()=>[e(E,null,{default:o(()=>[e(h)]),_:1})]),_:1})]),_:1},8,["modelValue"]),e(k,{modelValue:c.value,"onUpdate:modelValue":t[1]||(t[1]=a=>c.value=a),placeholder:"状态",clearable:"",onChange:s},{default:o(()=>[e(d,{label:"草稿",value:0}),e(d,{label:"已发布",value:1}),e(d,{label:"回收站",value:2})]),_:1},8,["modelValue"])]),N((v(),z(T,{data:m.value},{default:o(()=>[e(n,{prop:"id",label:"ID",width:"80"}),e(n,{prop:"title",label:"标题"}),e(n,{prop:"authorNickname",label:"作者",width:"120"}),e(n,{prop:"viewCount",label:"浏览",width:"80"}),e(n,{prop:"likeCount",label:"点赞",width:"80"}),e(n,{label:"状态",width:"100"},{default:o(({row:a})=>[e(V,{type:w(a)},{default:o(()=>[b($(x(a)),1)]),_:2},1032,["type"])]),_:1}),e(n,{label:"操作",width:"120"},{default:o(({row:a})=>[e(g,{text:"",type:"danger",onClick:Z=>y(a.id)},{default:o(()=>[...t[3]||(t[3]=[b("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[B,r.value]]),e(A,{"current-page":p.value,"onUpdate:currentPage":t[2]||(t[2]=a=>p.value=a),"page-size":15,total:_.value,layout:"prev, pager, next",onCurrentChange:s,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{ge as default};
@@ -1 +1 @@
import{_ as L,a3 as l,S as f,U as e,af as t,p as M,u as S,m as V,ac as b,a6 as v,P as i,T as n,v as j,w as x,aa as u,Q as c,j as z,a as A,a9 as F,l as J,k as R,R as T,N as U,b as H}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";import{u as P}from"./user-Ct5x882U.js";import"./request-D458e9ik.js";const Q={class:"jog-layout"},q={class:"header-content"},G={class:"header-right"},K={class:"user-info"},O={__name:"BlogLayout",setup(W){const r=P(),g=b();async function k(){await r.logout(),g.push("/")}return(a,o)=>{const p=v("router-link"),w=x,E=j,y=A,d=R,C=J,$=z,m=H,B=M,I=v("router-view"),N=S,D=V;return l(),f("div",Q,[e(B,{class:"header"},{default:t(()=>[i("div",q,[e(p,{to:"/",class:"logo"},{default:t(()=>[...o[4]||(o[4]=[n("Jog",-1)])]),_:1}),e(E,{mode:"horizontal",ellipsis:!1,class:"nav-menu"},{default:t(()=>[e(w,{index:"home"},{default:t(()=>[e(p,{to:"/"},{default:t(()=>[...o[5]||(o[5]=[n("首页",-1)])]),_:1})]),_:1})]),_:1}),i("div",G,[u(r).isLoggedIn?(l(),c($,{key:0},{dropdown:t(()=>[e(C,null,{default:t(()=>[e(d,{onClick:o[0]||(o[0]=s=>a.$router.push("/app/dashboard"))},{default:t(()=>[...o[6]||(o[6]=[n("控制台",-1)])]),_:1}),u(r).isAdmin?(l(),c(d,{key:0,onClick:o[1]||(o[1]=s=>a.$router.push("/admin"))},{default:t(()=>[...o[7]||(o[7]=[n("管理后台",-1)])]),_:1})):T("",!0),e(d,{divided:"",onClick:k},{default:t(()=>[...o[8]||(o[8]=[n("退出登录",-1)])]),_:1})]),_:1})]),default:t(()=>{var s,_;return[i("span",K,[e(y,{size:28,src:(s=u(r).userInfo)==null?void 0:s.avatar},null,8,["src"]),n(" "+F(((_=u(r).userInfo)==null?void 0:_.nickname)||"用户"),1)])]}),_:1})):(l(),f(U,{key:1},[e(m,{type:"primary",onClick:o[2]||(o[2]=s=>a.$router.push("/login"))},{default:t(()=>[...o[9]||(o[9]=[n("登录",-1)])]),_:1}),e(m,{onClick:o[3]||(o[3]=s=>a.$router.push("/register"))},{default:t(()=>[...o[10]||(o[10]=[n("注册",-1)])]),_:1})],64))])])]),_:1}),e(N,{class:"main"},{default:t(()=>[e(I)]),_:1}),e(D,{class:"footer"},{default:t(()=>[...o[11]||(o[11]=[n("Jog © 2026",-1)])]),_:1})])}}},lo=L(O,[["__scopeId","data-v-359ee45d"]]);export{lo as default};
import{_ as L,a3 as l,S as f,U as e,af as t,p as M,u as S,m as V,ac as b,a6 as v,P as i,T as n,v as j,w as x,aa as u,Q as c,j as z,a as A,a9 as F,l as J,k as R,R as T,N as U,b as H}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";import{u as P}from"./user-CyFJlq7v.js";import"./request-BdgcZPJd.js";const Q={class:"jog-layout"},q={class:"header-content"},G={class:"header-right"},K={class:"user-info"},O={__name:"BlogLayout",setup(W){const r=P(),g=b();async function k(){await r.logout(),g.push("/")}return(a,o)=>{const p=v("router-link"),w=x,E=j,y=A,d=R,C=J,$=z,m=H,B=M,I=v("router-view"),N=S,D=V;return l(),f("div",Q,[e(B,{class:"header"},{default:t(()=>[i("div",q,[e(p,{to:"/",class:"logo"},{default:t(()=>[...o[4]||(o[4]=[n("Jog",-1)])]),_:1}),e(E,{mode:"horizontal",ellipsis:!1,class:"nav-menu"},{default:t(()=>[e(w,{index:"home"},{default:t(()=>[e(p,{to:"/"},{default:t(()=>[...o[5]||(o[5]=[n("首页",-1)])]),_:1})]),_:1})]),_:1}),i("div",G,[u(r).isLoggedIn?(l(),c($,{key:0},{dropdown:t(()=>[e(C,null,{default:t(()=>[e(d,{onClick:o[0]||(o[0]=s=>a.$router.push("/app/dashboard"))},{default:t(()=>[...o[6]||(o[6]=[n("控制台",-1)])]),_:1}),u(r).isAdmin?(l(),c(d,{key:0,onClick:o[1]||(o[1]=s=>a.$router.push("/admin"))},{default:t(()=>[...o[7]||(o[7]=[n("管理后台",-1)])]),_:1})):T("",!0),e(d,{divided:"",onClick:k},{default:t(()=>[...o[8]||(o[8]=[n("退出登录",-1)])]),_:1})]),_:1})]),default:t(()=>{var s,_;return[i("span",K,[e(y,{size:28,src:(s=u(r).userInfo)==null?void 0:s.avatar},null,8,["src"]),n(" "+F(((_=u(r).userInfo)==null?void 0:_.nickname)||"用户"),1)])]}),_:1})):(l(),f(U,{key:1},[e(m,{type:"primary",onClick:o[2]||(o[2]=s=>a.$router.push("/login"))},{default:t(()=>[...o[9]||(o[9]=[n("登录",-1)])]),_:1}),e(m,{onClick:o[3]||(o[3]=s=>a.$router.push("/register"))},{default:t(()=>[...o[10]||(o[10]=[n("注册",-1)])]),_:1})],64))])])]),_:1}),e(N,{class:"main"},{default:t(()=>[e(I)]),_:1}),e(D,{class:"footer"},{default:t(()=>[...o[11]||(o[11]=[n("Jog © 2026",-1)])]),_:1})])}}},lo=L(O,[["__scopeId","data-v-359ee45d"]]);export{lo as default};
@@ -1 +1 @@
import{a2 as S,a3 as y,S as $,P as V,U as l,af as a,ag as F,ad as A,Q as H,b as J,a4 as u,J as K,h as L,T as d,K as P,M as Q,a9 as j,n as q,o as z,s as G,H as O,t as R,y as W,x as c}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css */import{h as X,e as Y,l as Z,b as h}from"./article-9VCq7wnf.js";import"./request-D458e9ik.js";const ee={style:{"margin-bottom":"16px"}},ce={__name:"Categories",setup(le){const b=u([]),f=u(!1),s=u(!1),m=u(!1),v=u(null),o=u({name:"",description:"",enabled:!0,sort:0});async function _(){f.value=!0;const n=await X();b.value=n.data,f.value=!1}function C(){m.value=!1,v.value=null,o.value={name:"",description:"",enabled:!0,sort:0},s.value=!0}function E(n){m.value=!0,v.value=n.id,o.value={name:n.name,description:n.description,enabled:n.enabled,sort:n.sort},s.value=!0}async function w(){if(!o.value.name){c.warning("请输入分类名称");return}m.value?await Z(v.value,o.value):await h(o.value),c.success("操作成功"),s.value=!1,_()}async function x(n){await W.confirm(`确定删除分类"${n.name}"`,"提示");try{await Y(n.id),c.success("已删除"),_()}catch{}}return S(_),(n,e)=>{const r=J,i=P,k=Q,D=K,g=G,p=z,B=O,U=R,I=q,T=L,M=A;return y(),$("div",null,[e[11]||(e[11]=V("h2",null,"分类管理",-1)),V("div",ee,[l(r,{type:"primary",onClick:C},{default:a(()=>[...e[6]||(e[6]=[d("新增分类",-1)])]),_:1})]),F((y(),H(D,{data:b.value},{default:a(()=>[l(i,{prop:"id",label:"ID",width:"80"}),l(i,{prop:"name",label:"名称"}),l(i,{prop:"description",label:"描述"}),l(i,{prop:"articleCount",label:"文章数",width:"100"}),l(i,{label:"状态",width:"100"},{default:a(({row:t})=>[l(k,{type:t.enabled?"success":"danger"},{default:a(()=>[d(j(t.enabled?"启用":"禁用"),1)]),_:2},1032,["type"])]),_:1}),l(i,{label:"操作",width:"180"},{default:a(({row:t})=>[l(r,{text:"",type:"primary",onClick:N=>E(t)},{default:a(()=>[...e[7]||(e[7]=[d("编辑",-1)])]),_:1},8,["onClick"]),l(r,{text:"",type:"danger",onClick:N=>x(t)},{default:a(()=>[...e[8]||(e[8]=[d("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[M,f.value]]),l(T,{modelValue:s.value,"onUpdate:modelValue":e[5]||(e[5]=t=>s.value=t),title:m.value?"编辑分类":"新增分类",width:"400px"},{footer:a(()=>[l(r,{onClick:e[4]||(e[4]=t=>s.value=!1)},{default:a(()=>[...e[9]||(e[9]=[d("取消",-1)])]),_:1}),l(r,{type:"primary",onClick:w},{default:a(()=>[...e[10]||(e[10]=[d("确定",-1)])]),_:1})]),default:a(()=>[l(I,{model:o.value,"label-width":"80px"},{default:a(()=>[l(p,{label:"名称"},{default:a(()=>[l(g,{modelValue:o.value.name,"onUpdate:modelValue":e[0]||(e[0]=t=>o.value.name=t)},null,8,["modelValue"])]),_:1}),l(p,{label:"描述"},{default:a(()=>[l(g,{modelValue:o.value.description,"onUpdate:modelValue":e[1]||(e[1]=t=>o.value.description=t),type:"textarea",rows:2},null,8,["modelValue"])]),_:1}),l(p,{label:"启用"},{default:a(()=>[l(B,{modelValue:o.value.enabled,"onUpdate:modelValue":e[2]||(e[2]=t=>o.value.enabled=t)},null,8,["modelValue"])]),_:1}),l(p,{label:"排序"},{default:a(()=>[l(U,{modelValue:o.value.sort,"onUpdate:modelValue":e[3]||(e[3]=t=>o.value.sort=t),min:0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}};export{ce as default};
import{a2 as S,a3 as y,S as $,P as V,U as l,af as a,ag as F,ad as A,Q as H,b as J,a4 as u,J as K,h as L,T as d,K as P,M as Q,a9 as j,n as q,o as z,s as G,H as O,t as R,y as W,x as c}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css */import{h as X,e as Y,l as Z,b as h}from"./article-yQluyDRw.js";import"./request-BdgcZPJd.js";const ee={style:{"margin-bottom":"16px"}},ce={__name:"Categories",setup(le){const b=u([]),f=u(!1),s=u(!1),m=u(!1),v=u(null),o=u({name:"",description:"",enabled:!0,sort:0});async function _(){f.value=!0;const n=await X();b.value=n.data,f.value=!1}function C(){m.value=!1,v.value=null,o.value={name:"",description:"",enabled:!0,sort:0},s.value=!0}function E(n){m.value=!0,v.value=n.id,o.value={name:n.name,description:n.description,enabled:n.enabled,sort:n.sort},s.value=!0}async function w(){if(!o.value.name){c.warning("请输入分类名称");return}m.value?await Z(v.value,o.value):await h(o.value),c.success("操作成功"),s.value=!1,_()}async function x(n){await W.confirm(`确定删除分类"${n.name}"`,"提示");try{await Y(n.id),c.success("已删除"),_()}catch{}}return S(_),(n,e)=>{const r=J,i=P,k=Q,D=K,g=G,p=z,B=O,U=R,I=q,T=L,M=A;return y(),$("div",null,[e[11]||(e[11]=V("h2",null,"分类管理",-1)),V("div",ee,[l(r,{type:"primary",onClick:C},{default:a(()=>[...e[6]||(e[6]=[d("新增分类",-1)])]),_:1})]),F((y(),H(D,{data:b.value},{default:a(()=>[l(i,{prop:"id",label:"ID",width:"80"}),l(i,{prop:"name",label:"名称"}),l(i,{prop:"description",label:"描述"}),l(i,{prop:"articleCount",label:"文章数",width:"100"}),l(i,{label:"状态",width:"100"},{default:a(({row:t})=>[l(k,{type:t.enabled?"success":"danger"},{default:a(()=>[d(j(t.enabled?"启用":"禁用"),1)]),_:2},1032,["type"])]),_:1}),l(i,{label:"操作",width:"180"},{default:a(({row:t})=>[l(r,{text:"",type:"primary",onClick:N=>E(t)},{default:a(()=>[...e[7]||(e[7]=[d("编辑",-1)])]),_:1},8,["onClick"]),l(r,{text:"",type:"danger",onClick:N=>x(t)},{default:a(()=>[...e[8]||(e[8]=[d("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[M,f.value]]),l(T,{modelValue:s.value,"onUpdate:modelValue":e[5]||(e[5]=t=>s.value=t),title:m.value?"编辑分类":"新增分类",width:"400px"},{footer:a(()=>[l(r,{onClick:e[4]||(e[4]=t=>s.value=!1)},{default:a(()=>[...e[9]||(e[9]=[d("取消",-1)])]),_:1}),l(r,{type:"primary",onClick:w},{default:a(()=>[...e[10]||(e[10]=[d("确定",-1)])]),_:1})]),default:a(()=>[l(I,{model:o.value,"label-width":"80px"},{default:a(()=>[l(p,{label:"名称"},{default:a(()=>[l(g,{modelValue:o.value.name,"onUpdate:modelValue":e[0]||(e[0]=t=>o.value.name=t)},null,8,["modelValue"])]),_:1}),l(p,{label:"描述"},{default:a(()=>[l(g,{modelValue:o.value.description,"onUpdate:modelValue":e[1]||(e[1]=t=>o.value.description=t),type:"textarea",rows:2},null,8,["modelValue"])]),_:1}),l(p,{label:"启用"},{default:a(()=>[l(B,{modelValue:o.value.enabled,"onUpdate:modelValue":e[2]||(e[2]=t=>o.value.enabled=t)},null,8,["modelValue"])]),_:1}),l(p,{label:"排序"},{default:a(()=>[l(U,{modelValue:o.value.sort,"onUpdate:modelValue":e[3]||(e[3]=t=>o.value.sort=t),min:0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}};export{ce as default};
@@ -1 +1 @@
import{a2 as V,a3 as b,S as T,P as y,U as t,af as l,ag as h,ad as M,Q as S,a4 as i,F as z,J as A,A as I,z as N,K as P,M as U,T as p,a9 as $,b as j,x as C,y as F}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{g as J,b as K,a as L}from"./comment-DHhatGB5.js";import"./request-D458e9ik.js";const O={style:{"margin-bottom":"16px",display:"flex",gap:"12px"}},it={__name:"Comments",setup(Q){const g=i([]),u=i(!1),r=i(1),_=i(0),d=i(null);async function s(){u.value=!0;const o=await J({page:r.value,pageSize:15,status:d.value});g.value=o.data.records,_.value=o.data.total,u.value=!1}async function v(o,e){await K(o,e),C.success("操作成功"),s()}async function x(o){await F.confirm("确定删除该评论?","警告",{type:"warning"}),await L(o),C.success("已删除"),s()}return V(s),(o,e)=>{const m=N,w=z,n=P,k=U,c=j,E=A,B=I,D=M;return b(),T("div",null,[e[5]||(e[5]=y("h2",null,"评论管理",-1)),y("div",O,[t(w,{modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=a=>d.value=a),placeholder:"状态",clearable:"",onChange:s},{default:l(()=>[t(m,{label:"待审核",value:0}),t(m,{label:"已通过",value:1}),t(m,{label:"已屏蔽",value:2})]),_:1},8,["modelValue"])]),h((b(),S(E,{data:g.value},{default:l(()=>[t(n,{prop:"id",label:"ID",width:"80"}),t(n,{prop:"nickname",label:"评论者",width:"120"}),t(n,{prop:"content",label:"内容","show-overflow-tooltip":""}),t(n,{prop:"articleId",label:"文章ID",width:"80"}),t(n,{label:"状态",width:"100"},{default:l(({row:a})=>[t(k,{type:[null,"success","danger"][a.status]||"info"},{default:l(()=>[p($(["待审核","已通过","已屏蔽","已删除"][a.status]),1)]),_:2},1032,["type"])]),_:1}),t(n,{label:"操作",width:"200"},{default:l(({row:a})=>[t(c,{text:"",type:"success",onClick:f=>v(a.id,1)},{default:l(()=>[...e[2]||(e[2]=[p("通过",-1)])]),_:1},8,["onClick"]),t(c,{text:"",type:"warning",onClick:f=>v(a.id,2)},{default:l(()=>[...e[3]||(e[3]=[p("屏蔽",-1)])]),_:1},8,["onClick"]),t(c,{text:"",type:"danger",onClick:f=>x(a.id)},{default:l(()=>[...e[4]||(e[4]=[p("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[D,u.value]]),t(B,{"current-page":r.value,"onUpdate:currentPage":e[1]||(e[1]=a=>r.value=a),"page-size":15,total:_.value,layout:"prev, pager, next",onCurrentChange:s,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{it as default};
import{a2 as V,a3 as b,S as T,P as y,U as t,af as l,ag as h,ad as M,Q as S,a4 as i,F as z,J as A,A as I,z as N,K as P,M as U,T as p,a9 as $,b as j,x as C,y as F}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{g as J,b as K,a as L}from"./comment-Z5L_VCb7.js";import"./request-BdgcZPJd.js";const O={style:{"margin-bottom":"16px",display:"flex",gap:"12px"}},it={__name:"Comments",setup(Q){const g=i([]),u=i(!1),r=i(1),_=i(0),d=i(null);async function s(){u.value=!0;const o=await J({page:r.value,pageSize:15,status:d.value});g.value=o.data.records,_.value=o.data.total,u.value=!1}async function v(o,e){await K(o,e),C.success("操作成功"),s()}async function x(o){await F.confirm("确定删除该评论?","警告",{type:"warning"}),await L(o),C.success("已删除"),s()}return V(s),(o,e)=>{const m=N,w=z,n=P,k=U,c=j,E=A,B=I,D=M;return b(),T("div",null,[e[5]||(e[5]=y("h2",null,"评论管理",-1)),y("div",O,[t(w,{modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=a=>d.value=a),placeholder:"状态",clearable:"",onChange:s},{default:l(()=>[t(m,{label:"待审核",value:0}),t(m,{label:"已通过",value:1}),t(m,{label:"已屏蔽",value:2})]),_:1},8,["modelValue"])]),h((b(),S(E,{data:g.value},{default:l(()=>[t(n,{prop:"id",label:"ID",width:"80"}),t(n,{prop:"nickname",label:"评论者",width:"120"}),t(n,{prop:"content",label:"内容","show-overflow-tooltip":""}),t(n,{prop:"articleId",label:"文章ID",width:"80"}),t(n,{label:"状态",width:"100"},{default:l(({row:a})=>[t(k,{type:[null,"success","danger"][a.status]||"info"},{default:l(()=>[p($(["待审核","已通过","已屏蔽","已删除"][a.status]),1)]),_:2},1032,["type"])]),_:1}),t(n,{label:"操作",width:"200"},{default:l(({row:a})=>[t(c,{text:"",type:"success",onClick:f=>v(a.id,1)},{default:l(()=>[...e[2]||(e[2]=[p("通过",-1)])]),_:1},8,["onClick"]),t(c,{text:"",type:"warning",onClick:f=>v(a.id,2)},{default:l(()=>[...e[3]||(e[3]=[p("屏蔽",-1)])]),_:1},8,["onClick"]),t(c,{text:"",type:"danger",onClick:f=>x(a.id)},{default:l(()=>[...e[4]||(e[4]=[p("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[D,u.value]]),t(B,{"current-page":r.value,"onUpdate:currentPage":e[1]||(e[1]=a=>r.value=a),"page-size":15,total:_.value,layout:"prev, pager, next",onCurrentChange:s,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{it as default};
@@ -1 +1 @@
import{_,a3 as u,S as c,P as r,U as t,af as e,D as d,f,d as i,G as p}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css */const m={};function v(x,o){const l=p,a=i,n=f,s=d;return u(),c("div",null,[o[0]||(o[0]=r("h2",null,"管理后台仪表盘",-1)),t(s,{gutter:20,style:{"margin-top":"20px"}},{default:e(()=>[t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"用户数",value:0})]),_:1})]),_:1}),t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"文章数",value:0})]),_:1})]),_:1}),t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"评论数",value:0})]),_:1})]),_:1}),t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"今日访问",value:0})]),_:1})]),_:1})]),_:1})])}const g=_(m,[["render",v]]);export{g as default};
import{_,a3 as u,S as c,P as r,U as t,af as e,D as d,f,d as i,G as p}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css */const m={};function v(x,o){const l=p,a=i,n=f,s=d;return u(),c("div",null,[o[0]||(o[0]=r("h2",null,"管理后台仪表盘",-1)),t(s,{gutter:20,style:{"margin-top":"20px"}},{default:e(()=>[t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"用户数",value:0})]),_:1})]),_:1}),t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"文章数",value:0})]),_:1})]),_:1}),t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"评论数",value:0})]),_:1})]),_:1}),t(n,{span:6},{default:e(()=>[t(a,null,{default:e(()=>[t(l,{title:"今日访问",value:0})]),_:1})]),_:1})]),_:1})])}const g=_(m,[["render",v]]);export{g as default};
@@ -1 +1 @@
import{a3 as p,S as c,P as r,a9 as i,aa as m,U as t,af as e,D as d,f,d as E,G as S}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css */import{u as v}from"./user-Ct5x882U.js";import"./request-D458e9ik.js";const y={__name:"Dashboard",setup(x){const u=v();return(g,s)=>{var n;const a=S,l=E,o=f,_=d;return p(),c("div",null,[s[0]||(s[0]=r("h2",null,"控制台",-1)),r("p",null,"欢迎,"+i((n=m(u).userInfo)==null?void 0:n.nickname),1),t(_,{gutter:20,style:{"margin-top":"20px"}},{default:e(()=>[t(o,{span:8},{default:e(()=>[t(l,null,{default:e(()=>[t(a,{title:"我的文章",value:0})]),_:1})]),_:1}),t(o,{span:8},{default:e(()=>[t(l,null,{default:e(()=>[t(a,{title:"总浏览量",value:0})]),_:1})]),_:1}),t(o,{span:8},{default:e(()=>[t(l,null,{default:e(()=>[t(a,{title:"获赞数",value:0})]),_:1})]),_:1})]),_:1})])}}};export{y as default};
import{a3 as p,S as c,P as r,a9 as i,aa as m,U as t,af as e,D as d,f,d as E,G as S}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css */import{u as v}from"./user-CyFJlq7v.js";import"./request-BdgcZPJd.js";const y={__name:"Dashboard",setup(x){const u=v();return(g,s)=>{var n;const a=S,l=E,o=f,_=d;return p(),c("div",null,[s[0]||(s[0]=r("h2",null,"控制台",-1)),r("p",null,"欢迎,"+i((n=m(u).userInfo)==null?void 0:n.nickname),1),t(_,{gutter:20,style:{"margin-top":"20px"}},{default:e(()=>[t(o,{span:8},{default:e(()=>[t(l,null,{default:e(()=>[t(a,{title:"我的文章",value:0})]),_:1})]),_:1}),t(o,{span:8},{default:e(()=>[t(l,null,{default:e(()=>[t(a,{title:"总浏览量",value:0})]),_:1})]),_:1}),t(o,{span:8},{default:e(()=>[t(l,null,{default:e(()=>[t(a,{title:"获赞数",value:0})]),_:1})]),_:1})]),_:1})])}}};export{y as default};
@@ -1 +1 @@
import{_ as q,a2 as F,a3 as r,S as m,P as a,U as t,af as n,ah as H,N as y,a5 as C,a4 as d,F as K,s as L,A as R,ac as $,a6 as p,Q as g,z as j,b as M,q as O,a9 as u,T as _,r as Q,R as G,d as J}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{j as W,h as X}from"./article-9VCq7wnf.js";import"./request-D458e9ik.js";const Y={class:"home"},Z={class:"filter-bar"},ee={class:"article-list"},te={class:"article-content"},ae={class:"summary"},oe={class:"meta"},ne={__name:"Home",setup(le){const k=$(),v=d([]),f=d([]),h=d(0),l=d({page:1,pageSize:15,categoryId:null,keyword:""});async function c(){const o=await W(l.value);v.value=o.data.records,h.value=o.data.total}async function w(){const o=await X();f.value=o.data}function V(o){k.push(`/article/${o}`)}function b(o){return o?new Date(o).toLocaleDateString("zh-CN"):""}return F(()=>{c(),w()}),(o,s)=>{const E=j,I=K,S=p("Search"),i=O,x=M,D=L,N=p("User"),z=p("View"),U=p("ChatDotSquare"),B=p("Timer"),A=Q,P=J,T=R;return r(),m("div",Y,[s[3]||(s[3]=a("div",{class:"hero"},[a("h1",null,"欢迎来到博客系统"),a("p",null,"分享知识,记录生活")],-1)),a("div",Z,[t(I,{modelValue:l.value.categoryId,"onUpdate:modelValue":s[0]||(s[0]=e=>l.value.categoryId=e),placeholder:"选择分类",clearable:"",onChange:c},{default:n(()=>[(r(!0),m(y,null,C(f.value,e=>(r(),g(E,{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(D,{modelValue:l.value.keyword,"onUpdate:modelValue":s[1]||(s[1]=e=>l.value.keyword=e),placeholder:"搜索文章",clearable:"",style:{width:"300px"},onKeyup:H(c,["enter"])},{append:n(()=>[t(x,{onClick:c},{default:n(()=>[t(i,null,{default:n(()=>[t(S)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),a("div",ee,[(r(!0),m(y,null,C(v.value,e=>(r(),g(P,{key:e.id,class:"article-card",onClick:se=>V(e.id)},{default:n(()=>[a("div",te,[a("h3",null,u(e.title),1),a("p",ae,u(e.summary),1),a("div",oe,[a("span",null,[t(i,null,{default:n(()=>[t(N)]),_:1}),_(" "+u(e.authorNickname),1)]),a("span",null,[t(i,null,{default:n(()=>[t(z)]),_:1}),_(" "+u(e.viewCount),1)]),a("span",null,[t(i,null,{default:n(()=>[t(U)]),_:1}),_(" "+u(e.commentCount),1)]),a("span",null,[t(i,null,{default:n(()=>[t(B)]),_:1}),_(" "+u(b(e.publishedAt)),1)])])]),e.coverImage?(r(),g(A,{key:0,src:e.coverImage,class:"cover",fit:"cover"},null,8,["src"])):G("",!0)]),_:2},1032,["onClick"]))),128))]),t(T,{"current-page":l.value.page,"onUpdate:currentPage":s[2]||(s[2]=e=>l.value.page=e),"page-size":l.value.pageSize,total:h.value,layout:"prev, pager, next",onCurrentChange:c},null,8,["current-page","page-size","total"])])}}},ye=q(ne,[["__scopeId","data-v-d23a1ade"]]);export{ye as default};
import{_ as q,a2 as F,a3 as r,S as m,P as a,U as t,af as n,ah as H,N as y,a5 as C,a4 as d,F as K,s as L,A as R,ac as $,a6 as p,Q as g,z as j,b as M,q as O,a9 as u,T as _,r as Q,R as G,d as J}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{j as W,h as X}from"./article-yQluyDRw.js";import"./request-BdgcZPJd.js";const Y={class:"home"},Z={class:"filter-bar"},ee={class:"article-list"},te={class:"article-content"},ae={class:"summary"},oe={class:"meta"},ne={__name:"Home",setup(le){const k=$(),v=d([]),f=d([]),h=d(0),l=d({page:1,pageSize:15,categoryId:null,keyword:""});async function c(){const o=await W(l.value);v.value=o.data.records,h.value=o.data.total}async function w(){const o=await X();f.value=o.data}function V(o){k.push(`/article/${o}`)}function b(o){return o?new Date(o).toLocaleDateString("zh-CN"):""}return F(()=>{c(),w()}),(o,s)=>{const E=j,I=K,S=p("Search"),i=O,x=M,D=L,N=p("User"),z=p("View"),U=p("ChatDotSquare"),B=p("Timer"),A=Q,P=J,T=R;return r(),m("div",Y,[s[3]||(s[3]=a("div",{class:"hero"},[a("h1",null,"欢迎来到博客系统"),a("p",null,"分享知识,记录生活")],-1)),a("div",Z,[t(I,{modelValue:l.value.categoryId,"onUpdate:modelValue":s[0]||(s[0]=e=>l.value.categoryId=e),placeholder:"选择分类",clearable:"",onChange:c},{default:n(()=>[(r(!0),m(y,null,C(f.value,e=>(r(),g(E,{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(D,{modelValue:l.value.keyword,"onUpdate:modelValue":s[1]||(s[1]=e=>l.value.keyword=e),placeholder:"搜索文章",clearable:"",style:{width:"300px"},onKeyup:H(c,["enter"])},{append:n(()=>[t(x,{onClick:c},{default:n(()=>[t(i,null,{default:n(()=>[t(S)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),a("div",ee,[(r(!0),m(y,null,C(v.value,e=>(r(),g(P,{key:e.id,class:"article-card",onClick:se=>V(e.id)},{default:n(()=>[a("div",te,[a("h3",null,u(e.title),1),a("p",ae,u(e.summary),1),a("div",oe,[a("span",null,[t(i,null,{default:n(()=>[t(N)]),_:1}),_(" "+u(e.authorNickname),1)]),a("span",null,[t(i,null,{default:n(()=>[t(z)]),_:1}),_(" "+u(e.viewCount),1)]),a("span",null,[t(i,null,{default:n(()=>[t(U)]),_:1}),_(" "+u(e.commentCount),1)]),a("span",null,[t(i,null,{default:n(()=>[t(B)]),_:1}),_(" "+u(b(e.publishedAt)),1)])])]),e.coverImage?(r(),g(A,{key:0,src:e.coverImage,class:"cover",fit:"cover"},null,8,["src"])):G("",!0)]),_:2},1032,["onClick"]))),128))]),t(T,{"current-page":l.value.page,"onUpdate:currentPage":s[2]||(s[2]=e=>l.value.page=e),"page-size":l.value.pageSize,total:h.value,layout:"prev, pager, next",onCurrentChange:c},null,8,["current-page","page-size","total"])])}}},ye=q(ne,[["__scopeId","data-v-d23a1ade"]]);export{ye as default};
@@ -1 +1 @@
import{_ as S,a3 as U,S as T,U as a,af as o,d as N,ac as K,ab as A,a6 as P,P as m,L as Q,I as j,n as z,ai as E,o as D,s as G,Q as H,R as J,b as O,T as i,e as W,a4 as n,x as F}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{u as X,g as Y}from"./user-Ct5x882U.js";import"./request-D458e9ik.js";const Z={class:"login-page"},$={style:{display:"flex",gap:"8px"}},ee=["src"],ae={class:"footer-link"},oe={__name:"Login",setup(le){const c=K(),f=A(),_=X(),v=n("user"),d=n(!1),g=n(!1),y=n(""),t=n({account:"",password:"",captchaKey:"",captchaCode:""}),r=n({email:"",password:"",rememberMe:!1}),b=n(),w=n(),V={account:[{required:!0,message:"请输入账号",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}],captchaCode:[{required:!0,message:"请输入验证码",trigger:"blur"}]};async function h(){const p=await Y();t.value.captchaKey=p.data.captchaKey,y.value=p.data.captchaImage,g.value=!0}async function L(){var p,e;await b.value.validate(),d.value=!0;try{await _.loginAdmin(t.value),F.success("登录成功"),c.push(f.query.redirect||"/admin")}catch(s){((e=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:e.code)===1008&&h()}finally{d.value=!1}}async function R(){await w.value.validate(),d.value=!0;try{await _.loginUser(r.value),F.success("登录成功"),c.push(f.query.redirect||"/app/dashboard")}finally{d.value=!1}}return(p,e)=>{const s=G,u=D,x=O,k=z,C=j,q=W,I=Q,M=P("router-link"),B=N;return U(),T("div",Z,[a(B,{class:"login-card"},{default:o(()=>[e[12]||(e[12]=m("h2",null,"登录",-1)),a(I,{modelValue:v.value,"onUpdate:modelValue":e[6]||(e[6]=l=>v.value=l)},{default:o(()=>[a(C,{label:"管理员登录",name:"admin"},{default:o(()=>[a(k,{model:t.value,rules:V,ref_key:"adminFormRef",ref:b,onSubmit:E(L,["prevent"])},{default:o(()=>[a(u,{prop:"account"},{default:o(()=>[a(s,{modelValue:t.value.account,"onUpdate:modelValue":e[0]||(e[0]=l=>t.value.account=l),placeholder:"用户名或手机号","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),a(u,{prop:"password"},{default:o(()=>[a(s,{modelValue:t.value.password,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value.password=l),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),g.value?(U(),H(u,{key:0,prop:"captchaCode"},{default:o(()=>[m("div",$,[a(s,{modelValue:t.value.captchaCode,"onUpdate:modelValue":e[2]||(e[2]=l=>t.value.captchaCode=l),placeholder:"验证码"},null,8,["modelValue"]),m("img",{src:y.value,onClick:h,style:{cursor:"pointer",height:"40px"}},null,8,ee)])]),_:1})):J("",!0),a(u,null,{default:o(()=>[a(x,{type:"primary","native-type":"submit",loading:d.value,style:{width:"100%"}},{default:o(()=>[...e[7]||(e[7]=[i("登录",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1}),a(C,{label:"用户登录",name:"user"},{default:o(()=>[a(k,{model:r.value,rules:V,ref_key:"userFormRef",ref:w,onSubmit:E(R,["prevent"])},{default:o(()=>[a(u,{prop:"email"},{default:o(()=>[a(s,{modelValue:r.value.email,"onUpdate:modelValue":e[3]||(e[3]=l=>r.value.email=l),placeholder:"邮箱","prefix-icon":"Message"},null,8,["modelValue"])]),_:1}),a(u,{prop:"password"},{default:o(()=>[a(s,{modelValue:r.value.password,"onUpdate:modelValue":e[4]||(e[4]=l=>r.value.password=l),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),a(u,null,{default:o(()=>[a(q,{modelValue:r.value.rememberMe,"onUpdate:modelValue":e[5]||(e[5]=l=>r.value.rememberMe=l)},{default:o(()=>[...e[8]||(e[8]=[i("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),a(u,null,{default:o(()=>[a(x,{type:"primary","native-type":"submit",loading:d.value,style:{width:"100%"}},{default:o(()=>[...e[9]||(e[9]=[i("登录",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1},8,["modelValue"]),m("div",ae,[e[11]||(e[11]=i(" 还没有账号?",-1)),a(M,{to:"/register"},{default:o(()=>[...e[10]||(e[10]=[i("立即注册",-1)])]),_:1})])]),_:1})])}}},ce=S(oe,[["__scopeId","data-v-a0b7679b"]]);export{ce as default};
import{_ as S,a3 as U,S as T,U as a,af as o,d as N,ac as K,ab as A,a6 as P,P as m,L as Q,I as j,n as z,ai as E,o as D,s as G,Q as H,R as J,b as O,T as i,e as W,a4 as n,x as F}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{u as X,g as Y}from"./user-CyFJlq7v.js";import"./request-BdgcZPJd.js";const Z={class:"login-page"},$={style:{display:"flex",gap:"8px"}},ee=["src"],ae={class:"footer-link"},oe={__name:"Login",setup(le){const c=K(),f=A(),_=X(),v=n("user"),d=n(!1),g=n(!1),y=n(""),t=n({account:"",password:"",captchaKey:"",captchaCode:""}),r=n({email:"",password:"",rememberMe:!1}),b=n(),w=n(),V={account:[{required:!0,message:"请输入账号",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}],captchaCode:[{required:!0,message:"请输入验证码",trigger:"blur"}]};async function h(){const p=await Y();t.value.captchaKey=p.data.captchaKey,y.value=p.data.captchaImage,g.value=!0}async function L(){var p,e;await b.value.validate(),d.value=!0;try{await _.loginAdmin(t.value),F.success("登录成功"),c.push(f.query.redirect||"/admin")}catch(s){((e=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:e.code)===1008&&h()}finally{d.value=!1}}async function R(){await w.value.validate(),d.value=!0;try{await _.loginUser(r.value),F.success("登录成功"),c.push(f.query.redirect||"/app/dashboard")}finally{d.value=!1}}return(p,e)=>{const s=G,u=D,x=O,k=z,C=j,q=W,I=Q,M=P("router-link"),B=N;return U(),T("div",Z,[a(B,{class:"login-card"},{default:o(()=>[e[12]||(e[12]=m("h2",null,"登录",-1)),a(I,{modelValue:v.value,"onUpdate:modelValue":e[6]||(e[6]=l=>v.value=l)},{default:o(()=>[a(C,{label:"管理员登录",name:"admin"},{default:o(()=>[a(k,{model:t.value,rules:V,ref_key:"adminFormRef",ref:b,onSubmit:E(L,["prevent"])},{default:o(()=>[a(u,{prop:"account"},{default:o(()=>[a(s,{modelValue:t.value.account,"onUpdate:modelValue":e[0]||(e[0]=l=>t.value.account=l),placeholder:"用户名或手机号","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),a(u,{prop:"password"},{default:o(()=>[a(s,{modelValue:t.value.password,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value.password=l),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),g.value?(U(),H(u,{key:0,prop:"captchaCode"},{default:o(()=>[m("div",$,[a(s,{modelValue:t.value.captchaCode,"onUpdate:modelValue":e[2]||(e[2]=l=>t.value.captchaCode=l),placeholder:"验证码"},null,8,["modelValue"]),m("img",{src:y.value,onClick:h,style:{cursor:"pointer",height:"40px"}},null,8,ee)])]),_:1})):J("",!0),a(u,null,{default:o(()=>[a(x,{type:"primary","native-type":"submit",loading:d.value,style:{width:"100%"}},{default:o(()=>[...e[7]||(e[7]=[i("登录",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1}),a(C,{label:"用户登录",name:"user"},{default:o(()=>[a(k,{model:r.value,rules:V,ref_key:"userFormRef",ref:w,onSubmit:E(R,["prevent"])},{default:o(()=>[a(u,{prop:"email"},{default:o(()=>[a(s,{modelValue:r.value.email,"onUpdate:modelValue":e[3]||(e[3]=l=>r.value.email=l),placeholder:"邮箱","prefix-icon":"Message"},null,8,["modelValue"])]),_:1}),a(u,{prop:"password"},{default:o(()=>[a(s,{modelValue:r.value.password,"onUpdate:modelValue":e[4]||(e[4]=l=>r.value.password=l),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),a(u,null,{default:o(()=>[a(q,{modelValue:r.value.rememberMe,"onUpdate:modelValue":e[5]||(e[5]=l=>r.value.rememberMe=l)},{default:o(()=>[...e[8]||(e[8]=[i("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),a(u,null,{default:o(()=>[a(x,{type:"primary","native-type":"submit",loading:d.value,style:{width:"100%"}},{default:o(()=>[...e[9]||(e[9]=[i("登录",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1},8,["modelValue"]),m("div",ae,[e[11]||(e[11]=i(" 还没有账号?",-1)),a(M,{to:"/register"},{default:o(()=>[...e[10]||(e[10]=[i("立即注册",-1)])]),_:1})])]),_:1})])}}},ce=S(oe,[["__scopeId","data-v-a0b7679b"]]);export{ce as default};
@@ -1 +1 @@
import{a2 as B,a3 as f,S as E,P as y,U as a,af as n,ag as $,ad as D,Q as M,b as N,a4 as p,J as T,A as h,T as i,K as z,a9 as P,y as v,x as b}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{i as S,m as V,d as j}from"./article-9VCq7wnf.js";import"./request-D458e9ik.js";const L={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-bottom":"20px"}},et={__name:"MyArticles",setup(R){const c=p([]),u=p(!1),d=p(1),m=p(0);async function r(){u.value=!0;const e=await S({page:d.value,pageSize:15});c.value=e.data.records,m.value=e.data.total,u.value=!1}async function _(e){await v.confirm("确定移入回收站?","提示"),await V(e),b.success("已移入回收站"),r()}async function w(e){await v.confirm("确定永久删除?此操作不可恢复","警告",{type:"warning"}),await j(e),b.success("已删除"),r()}function C(e){return e?new Date(e).toLocaleString("zh-CN"):"-"}return B(r),(e,t)=>{const s=N,l=z,k=T,x=h,A=D;return f(),E("div",null,[y("div",L,[t[3]||(t[3]=y("h2",null,"我的文章",-1)),a(s,{type:"primary",onClick:t[0]||(t[0]=o=>e.$router.push("/app/editor"))},{default:n(()=>[...t[2]||(t[2]=[i("写文章",-1)])]),_:1})]),$((f(),M(k,{data:c.value},{default:n(()=>[a(l,{prop:"title",label:"标题"}),a(l,{prop:"categoryName",label:"分类",width:"120"}),a(l,{prop:"viewCount",label:"浏览",width:"80"}),a(l,{prop:"likeCount",label:"点赞",width:"80"}),a(l,{prop:"publishedAt",label:"发布时间",width:"180"},{default:n(({row:o})=>[i(P(C(o.publishedAt)),1)]),_:1}),a(l,{label:"操作",width:"200"},{default:n(({row:o})=>[a(s,{text:"",type:"primary",onClick:g=>e.$router.push(`/app/editor/${o.id}`)},{default:n(()=>[...t[4]||(t[4]=[i("编辑",-1)])]),_:1},8,["onClick"]),a(s,{text:"",type:"warning",onClick:g=>_(o.id)},{default:n(()=>[...t[5]||(t[5]=[i("回收站",-1)])]),_:1},8,["onClick"]),a(s,{text:"",type:"danger",onClick:g=>w(o.id)},{default:n(()=>[...t[6]||(t[6]=[i("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[A,u.value]]),a(x,{"current-page":d.value,"onUpdate:currentPage":t[1]||(t[1]=o=>d.value=o),"page-size":15,total:m.value,layout:"prev, pager, next",onCurrentChange:r,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{et as default};
import{a2 as B,a3 as f,S as E,P as y,U as a,af as n,ag as $,ad as D,Q as M,b as N,a4 as p,J as T,A as h,T as i,K as z,a9 as P,y as v,x as b}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{i as S,m as V,d as j}from"./article-yQluyDRw.js";import"./request-BdgcZPJd.js";const L={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-bottom":"20px"}},et={__name:"MyArticles",setup(R){const c=p([]),u=p(!1),d=p(1),m=p(0);async function r(){u.value=!0;const e=await S({page:d.value,pageSize:15});c.value=e.data.records,m.value=e.data.total,u.value=!1}async function _(e){await v.confirm("确定移入回收站?","提示"),await V(e),b.success("已移入回收站"),r()}async function w(e){await v.confirm("确定永久删除?此操作不可恢复","警告",{type:"warning"}),await j(e),b.success("已删除"),r()}function C(e){return e?new Date(e).toLocaleString("zh-CN"):"-"}return B(r),(e,t)=>{const s=N,l=z,k=T,x=h,A=D;return f(),E("div",null,[y("div",L,[t[3]||(t[3]=y("h2",null,"我的文章",-1)),a(s,{type:"primary",onClick:t[0]||(t[0]=o=>e.$router.push("/app/editor"))},{default:n(()=>[...t[2]||(t[2]=[i("写文章",-1)])]),_:1})]),$((f(),M(k,{data:c.value},{default:n(()=>[a(l,{prop:"title",label:"标题"}),a(l,{prop:"categoryName",label:"分类",width:"120"}),a(l,{prop:"viewCount",label:"浏览",width:"80"}),a(l,{prop:"likeCount",label:"点赞",width:"80"}),a(l,{prop:"publishedAt",label:"发布时间",width:"180"},{default:n(({row:o})=>[i(P(C(o.publishedAt)),1)]),_:1}),a(l,{label:"操作",width:"200"},{default:n(({row:o})=>[a(s,{text:"",type:"primary",onClick:g=>e.$router.push(`/app/editor/${o.id}`)},{default:n(()=>[...t[4]||(t[4]=[i("编辑",-1)])]),_:1},8,["onClick"]),a(s,{text:"",type:"warning",onClick:g=>_(o.id)},{default:n(()=>[...t[5]||(t[5]=[i("回收站",-1)])]),_:1},8,["onClick"]),a(s,{text:"",type:"danger",onClick:g=>w(o.id)},{default:n(()=>[...t[6]||(t[6]=[i("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[A,u.value]]),a(x,{"current-page":d.value,"onUpdate:currentPage":t[1]||(t[1]=o=>d.value=o),"page-size":15,total:m.value,layout:"prev, pager, next",onCurrentChange:r,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{et as default};
@@ -1 +0,0 @@
import{_ as x,a3 as b,S as E,U as o,af as s,d as k,ac as P,a6 as R,P as m,n as U,ai as C,o as B,s as S,b as q,T as i,x as I,a4 as u}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{u as M}from"./user-Ct5x882U.js";import"./request-D458e9ik.js";const N={class:"register-page"},F={class:"footer-link"},L={__name:"Register",setup(T){const p=P(),f=M(),n=u(!1),d=u(),r=u({email:"",password:"",confirmPassword:""}),g={email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"邮箱格式不正确",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:8,max:32,message:"密码长度8-32位",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认密码",trigger:"blur"},{validator:(c,e,a)=>{e!==r.value.password?a(new Error("两次密码不一致")):a()},trigger:"blur"}]};async function _(){await d.value.validate(),n.value=!0;try{await f.registerUser(r.value),I.success("注册成功,请查看邮箱完成验证"),p.push("/login")}finally{n.value=!1}}return(c,e)=>{const a=S,l=B,v=q,w=U,V=R("router-link"),y=k;return b(),E("div",N,[o(y,{class:"register-card"},{default:s(()=>[e[6]||(e[6]=m("h2",null,"注册",-1)),o(w,{model:r.value,rules:g,ref_key:"formRef",ref:d,onSubmit:C(_,["prevent"])},{default:s(()=>[o(l,{prop:"email"},{default:s(()=>[o(a,{modelValue:r.value.email,"onUpdate:modelValue":e[0]||(e[0]=t=>r.value.email=t),placeholder:"邮箱","prefix-icon":"Message"},null,8,["modelValue"])]),_:1}),o(l,{prop:"password"},{default:s(()=>[o(a,{modelValue:r.value.password,"onUpdate:modelValue":e[1]||(e[1]=t=>r.value.password=t),type:"password",placeholder:"密码(8-32位,含大小写字母、数字和特殊字符中的至少三类)","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),o(l,{prop:"confirmPassword"},{default:s(()=>[o(a,{modelValue:r.value.confirmPassword,"onUpdate:modelValue":e[2]||(e[2]=t=>r.value.confirmPassword=t),type:"password",placeholder:"确认密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),o(l,null,{default:s(()=>[o(v,{type:"primary","native-type":"submit",loading:n.value,style:{width:"100%"}},{default:s(()=>[...e[3]||(e[3]=[i("注册",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),m("div",F,[e[5]||(e[5]=i(" 已有账号?",-1)),o(V,{to:"/login"},{default:s(()=>[...e[4]||(e[4]=[i("立即登录",-1)])]),_:1})])]),_:1})])}}},O=x(L,[["__scopeId","data-v-c2ac8d09"]]);export{O as default};
@@ -0,0 +1 @@
import{_ as x,a3 as b,S as y,U as r,af as a,d as E,ac as U,a6 as P,P as d,n as R,ai as C,o as q,s as B,b as S,T as i,x as I,a4 as u}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{u as M}from"./user-CyFJlq7v.js";import"./request-BdgcZPJd.js";const N={class:"register-page"},F={class:"footer-link"},L={__name:"Register",setup(T){const p=U(),f=M(),n=u(!1),m=u(),o=u({email:"",nickname:"",password:"",confirmPassword:""}),g={email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"邮箱格式不正确",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"},{min:2,max:20,message:"昵称长度2-20位",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:8,max:32,message:"密码长度8-32位",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认密码",trigger:"blur"},{validator:(_,e,s)=>{e!==o.value.password?s(new Error("两次密码不一致")):s()},trigger:"blur"}]};async function c(){await m.value.validate(),n.value=!0;try{await f.registerUser(o.value),I.success("注册成功,请查看邮箱完成验证"),p.push("/login")}finally{n.value=!1}}return(_,e)=>{const s=B,t=q,v=S,w=R,V=P("router-link"),k=E;return b(),y("div",N,[r(k,{class:"register-card"},{default:a(()=>[e[7]||(e[7]=d("h2",null,"注册",-1)),r(w,{model:o.value,rules:g,ref_key:"formRef",ref:m,onSubmit:C(c,["prevent"])},{default:a(()=>[r(t,{prop:"email"},{default:a(()=>[r(s,{modelValue:o.value.email,"onUpdate:modelValue":e[0]||(e[0]=l=>o.value.email=l),placeholder:"邮箱","prefix-icon":"Message"},null,8,["modelValue"])]),_:1}),r(t,{prop:"nickname"},{default:a(()=>[r(s,{modelValue:o.value.nickname,"onUpdate:modelValue":e[1]||(e[1]=l=>o.value.nickname=l),placeholder:"昵称","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),r(t,{prop:"password"},{default:a(()=>[r(s,{modelValue:o.value.password,"onUpdate:modelValue":e[2]||(e[2]=l=>o.value.password=l),type:"password",placeholder:"密码(8-32位,含大小写字母、数字和特殊字符中的至少三类)","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),r(t,{prop:"confirmPassword"},{default:a(()=>[r(s,{modelValue:o.value.confirmPassword,"onUpdate:modelValue":e[3]||(e[3]=l=>o.value.confirmPassword=l),type:"password",placeholder:"确认密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),r(t,null,{default:a(()=>[r(v,{type:"primary","native-type":"submit",loading:n.value,style:{width:"100%"}},{default:a(()=>[...e[4]||(e[4]=[i("注册",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),d("div",F,[e[6]||(e[6]=i(" 已有账号?",-1)),r(V,{to:"/login"},{default:a(()=>[...e[5]||(e[5]=[i("立即登录",-1)])]),_:1})])]),_:1})])}}},Q=x(L,[["__scopeId","data-v-c7016108"]]);export{Q as default};
@@ -1 +0,0 @@
.register-page[data-v-c2ac8d09]{display:flex;justify-content:center;align-items:center;min-height:100vh;background:#f5f7fa}.register-card[data-v-c2ac8d09]{width:420px;padding:20px}.register-card h2[data-v-c2ac8d09]{text-align:center;margin-bottom:20px}.footer-link[data-v-c2ac8d09]{text-align:center;margin-top:16px;color:#909399}
@@ -0,0 +1 @@
.register-page[data-v-c7016108]{display:flex;justify-content:center;align-items:center;min-height:100vh;background:#f5f7fa}.register-card[data-v-c7016108]{width:420px;padding:20px}.register-card h2[data-v-c7016108]{text-align:center;margin-bottom:20px}.footer-link[data-v-c7016108]{text-align:center;margin-top:16px;color:#909399}
@@ -1 +1 @@
import{a2 as P,a3 as v,S as V,P as y,U as e,af as s,ah as T,ag as M,ad as D,Q as I,a4 as i,s as K,J as N,A as q,a6 as z,b as L,q as j,K as A,T as w,a9 as J,y as x,x as b}from"./index-Ce3OdoWB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{r as g}from"./request-D458e9ik.js";function Q(o){return g.get("/api/admin/user/list",{params:o})}function R(o,l){return g.put(`/api/admin/user/${o}/reset-password`,null,{params:{newPassword:l}})}function F(o,l){return g.put(`/api/admin/user/${o}/status`,null,{params:{status:l}})}const G={style:{"margin-bottom":"16px",display:"flex",gap:"12px"}},it={__name:"Users",setup(o){const l=i([]),c=i(!1),d=i(1),f=i(0),m=i("");async function r(){c.value=!0;const a=await Q({page:d.value,pageSize:15,keyword:m.value});l.value=a.data.records,f.value=a.data.total,c.value=!1}async function k(a){const{value:t}=await x.prompt("请输入新密码","重置密码",{inputPattern:/^.{8,32}$/,inputErrorMessage:"密码长度8-32位"});await R(a,t),b.success("密码已重置")}async function C(a){const t=a.status===0?1:0,u=t===1?"锁定":"解锁";await x.confirm(`确定${u}该用户?`,"提示"),await F(a.id,t),b.success(`${u}`),r()}return P(r),(a,t)=>{const u=z("Search"),E=j,_=L,h=K,p=A,S=N,U=q,$=D;return v(),V("div",null,[t[3]||(t[3]=y("h2",null,"用户管理",-1)),y("div",G,[e(h,{modelValue:m.value,"onUpdate:modelValue":t[0]||(t[0]=n=>m.value=n),placeholder:"搜索用户",clearable:"",style:{width:"300px"},onKeyup:T(r,["enter"])},{append:s(()=>[e(_,{onClick:r},{default:s(()=>[e(E,null,{default:s(()=>[e(u)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),M((v(),I(S,{data:l.value},{default:s(()=>[e(p,{prop:"id",label:"ID",width:"80"}),e(p,{prop:"nickname",label:"昵称",width:"150"}),e(p,{prop:"email",label:"邮箱"}),e(p,{label:"操作",width:"240"},{default:s(({row:n})=>[e(_,{text:"",type:"warning",onClick:B=>k(n.id)},{default:s(()=>[...t[2]||(t[2]=[w("重置密码",-1)])]),_:1},8,["onClick"]),e(_,{text:"",type:n.status===1?"success":"danger",onClick:B=>C(n)},{default:s(()=>[w(J(n.status===1?"解锁":"锁定"),1)]),_:2},1032,["type","onClick"])]),_:1})]),_:1},8,["data"])),[[$,c.value]]),e(U,{"current-page":d.value,"onUpdate:currentPage":t[1]||(t[1]=n=>d.value=n),"page-size":15,total:f.value,layout:"prev, pager, next",onCurrentChange:r,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{it as default};
import{a2 as P,a3 as v,S as V,P as y,U as e,af as s,ah as T,ag as M,ad as D,Q as I,a4 as i,s as K,J as N,A as q,a6 as z,b as L,q as j,K as A,T as w,a9 as J,y as x,x as b}from"./index-CptE6QA-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{r as g}from"./request-BdgcZPJd.js";function Q(o){return g.get("/api/admin/user/list",{params:o})}function R(o,l){return g.put(`/api/admin/user/${o}/reset-password`,null,{params:{newPassword:l}})}function F(o,l){return g.put(`/api/admin/user/${o}/status`,null,{params:{status:l}})}const G={style:{"margin-bottom":"16px",display:"flex",gap:"12px"}},it={__name:"Users",setup(o){const l=i([]),c=i(!1),d=i(1),f=i(0),m=i("");async function r(){c.value=!0;const a=await Q({page:d.value,pageSize:15,keyword:m.value});l.value=a.data.records,f.value=a.data.total,c.value=!1}async function k(a){const{value:t}=await x.prompt("请输入新密码","重置密码",{inputPattern:/^.{8,32}$/,inputErrorMessage:"密码长度8-32位"});await R(a,t),b.success("密码已重置")}async function C(a){const t=a.status===0?1:0,u=t===1?"锁定":"解锁";await x.confirm(`确定${u}该用户?`,"提示"),await F(a.id,t),b.success(`${u}`),r()}return P(r),(a,t)=>{const u=z("Search"),E=j,_=L,h=K,p=A,S=N,U=q,$=D;return v(),V("div",null,[t[3]||(t[3]=y("h2",null,"用户管理",-1)),y("div",G,[e(h,{modelValue:m.value,"onUpdate:modelValue":t[0]||(t[0]=n=>m.value=n),placeholder:"搜索用户",clearable:"",style:{width:"300px"},onKeyup:T(r,["enter"])},{append:s(()=>[e(_,{onClick:r},{default:s(()=>[e(E,null,{default:s(()=>[e(u)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),M((v(),I(S,{data:l.value},{default:s(()=>[e(p,{prop:"id",label:"ID",width:"80"}),e(p,{prop:"nickname",label:"昵称",width:"150"}),e(p,{prop:"email",label:"邮箱"}),e(p,{label:"操作",width:"240"},{default:s(({row:n})=>[e(_,{text:"",type:"warning",onClick:B=>k(n.id)},{default:s(()=>[...t[2]||(t[2]=[w("重置密码",-1)])]),_:1},8,["onClick"]),e(_,{text:"",type:n.status===1?"success":"danger",onClick:B=>C(n)},{default:s(()=>[w(J(n.status===1?"解锁":"锁定"),1)]),_:2},1032,["type","onClick"])]),_:1})]),_:1},8,["data"])),[[$,c.value]]),e(U,{"current-page":d.value,"onUpdate:currentPage":t[1]||(t[1]=n=>d.value=n),"page-size":15,total:f.value,layout:"prev, pager, next",onCurrentChange:r,style:{"margin-top":"20px","justify-content":"center"}},null,8,["current-page","total"])])}}};export{it as default};
@@ -1 +1 @@
import{r as e}from"./request-D458e9ik.js";function r(t){return e.get("/api/public/article/list",{params:t})}function n(t){return e.get(`/api/public/article/${t}`)}function c(t){return e.post("/api/app/article",t)}function u(t,i){return e.put(`/api/app/article/${t}`,i)}function p(t){return e.delete(`/api/app/article/${t}`)}function l(t){return e.get("/api/app/article/mine",{params:t})}function o(t){return e.put(`/api/app/article/${t}/recycle`)}function s(t){return e.post(`/api/app/article/${t}/like`)}function g(){return e.get("/api/public/category/list")}function f(){return e.get("/api/public/tag/list")}function d(t){return e.post("/api/admin/category",t)}function m(t,i){return e.put(`/api/admin/category/${t}`,i)}function y(t){return e.delete(`/api/admin/category/${t}`)}function A(t){return e.get("/api/admin/article/list",{params:t})}function $(t){return e.delete(`/api/admin/article/${t}`)}export{$ as a,d as b,c,p as d,y as e,n as f,A as g,g as h,l as i,r as j,f as k,m as l,o as m,s as t,u};
import{r as e}from"./request-BdgcZPJd.js";function r(t){return e.get("/api/public/article/list",{params:t})}function n(t){return e.get(`/api/public/article/${t}`)}function c(t){return e.post("/api/app/article",t)}function u(t,i){return e.put(`/api/app/article/${t}`,i)}function p(t){return e.delete(`/api/app/article/${t}`)}function l(t){return e.get("/api/app/article/mine",{params:t})}function o(t){return e.put(`/api/app/article/${t}/recycle`)}function s(t){return e.post(`/api/app/article/${t}/like`)}function g(){return e.get("/api/public/category/list")}function f(){return e.get("/api/public/tag/list")}function d(t){return e.post("/api/admin/category",t)}function m(t,i){return e.put(`/api/admin/category/${t}`,i)}function y(t){return e.delete(`/api/admin/category/${t}`)}function A(t){return e.get("/api/admin/article/list",{params:t})}function $(t){return e.delete(`/api/admin/article/${t}`)}export{$ as a,d as b,c,p as d,y as e,n as f,A as g,g as h,l as i,r as j,f as k,m as l,o as m,s as t,u};
@@ -1 +1 @@
import{r as e}from"./request-D458e9ik.js";function a(t){return e.get(`/api/app/comment/article/${t}`)}function i(t){return e.post("/api/app/comment",t)}function o(t){return e.post(`/api/app/comment/${t}/like`)}function r(t){return e.get("/api/admin/comment/list",{params:t})}function p(t,n){return e.put(`/api/admin/comment/${t}/audit`,null,{params:{status:n}})}function u(t){return e.delete(`/api/admin/comment/${t}`)}export{u as a,p as b,i as c,a as d,r as g,o as t};
import{r as e}from"./request-BdgcZPJd.js";function a(t){return e.get(`/api/app/comment/article/${t}`)}function i(t){return e.post("/api/app/comment",t)}function o(t){return e.post(`/api/app/comment/${t}/like`)}function r(t){return e.get("/api/admin/comment/list",{params:t})}function p(t,n){return e.put(`/api/admin/comment/${t}/audit`,null,{params:{status:n}})}function u(t){return e.delete(`/api/admin/comment/${t}`)}export{u as a,p as b,i as c,a as d,r as g,o as t};
@@ -1 +1 @@
import{X as d,a4 as u,O as g}from"./index-Ce3OdoWB.js";import{r as a}from"./request-D458e9ik.js";function y(t){return a.post("/api/public/admin/login",{email:t.email||t.account,password:t.password,rememberMe:t.rememberMe||!1})}function _(t){return a.post("/api/public/user/login",t)}function h(t){return a.post("/api/public/user/register",t)}function A(){return a.get("/api/public/captcha")}function U(){return a.post("/api/app/user/logout")}function w(){return a.get("/api/app/user/me")}const M=d("user",()=>{const t=u(localStorage.getItem("access_token")||""),s=u(localStorage.getItem("refresh_token")||""),r=u(JSON.parse(localStorage.getItem("user_info")||"null")),m=g(()=>!!t.value),c=g(()=>{var e;return((e=r.value)==null?void 0:e.role)==="ADMIN"});async function p(e){const o=(await y(e)).data;return i(o.accessToken,o.refreshToken),r.value=f(o,"ADMIN"),localStorage.setItem("user_info",JSON.stringify(r.value)),o}async function v(e){const o=(await _(e)).data;return i(o.accessToken,o.refreshToken),r.value=f(o,"USER"),localStorage.setItem("user_info",JSON.stringify(r.value)),o}async function I(e){return await h(e)}async function S(){const e=await w(),n=c.value?"ADMIN":"USER";r.value={...e.data,role:n},localStorage.setItem("user_info",JSON.stringify(r.value))}async function k(){try{await U()}catch{}l()}function i(e,n){t.value=e,s.value=n,localStorage.setItem("access_token",e),localStorage.setItem("refresh_token",n)}function l(){t.value="",s.value="",r.value=null,localStorage.removeItem("access_token"),localStorage.removeItem("refresh_token"),localStorage.removeItem("user_info")}function f(e,n){return{id:e.userId,email:e.email,nickname:e.nickname,avatar:e.avatar,type:e.type,role:n}}return{token:t,refreshToken:s,userInfo:r,isLoggedIn:m,isAdmin:c,loginAdmin:p,loginUser:v,registerUser:I,fetchUserInfo:S,logout:k,clearAuth:l}});export{A as g,M as u};
import{X as d,a4 as u,O as g}from"./index-CptE6QA-.js";import{r as a}from"./request-BdgcZPJd.js";function y(t){return a.post("/api/public/admin/login",{email:t.email||t.account,password:t.password,rememberMe:t.rememberMe||!1})}function _(t){return a.post("/api/public/user/login",t)}function h(t){return a.post("/api/public/user/register",t)}function A(){return a.get("/api/public/captcha")}function U(){return a.post("/api/app/user/logout")}function w(){return a.get("/api/app/user/me")}const M=d("user",()=>{const t=u(localStorage.getItem("access_token")||""),s=u(localStorage.getItem("refresh_token")||""),r=u(JSON.parse(localStorage.getItem("user_info")||"null")),m=g(()=>!!t.value),c=g(()=>{var e;return((e=r.value)==null?void 0:e.role)==="ADMIN"});async function p(e){const o=(await y(e)).data;return i(o.accessToken,o.refreshToken),r.value=f(o,"ADMIN"),localStorage.setItem("user_info",JSON.stringify(r.value)),o}async function v(e){const o=(await _(e)).data;return i(o.accessToken,o.refreshToken),r.value=f(o,"USER"),localStorage.setItem("user_info",JSON.stringify(r.value)),o}async function I(e){return await h(e)}async function S(){const e=await w(),n=c.value?"ADMIN":"USER";r.value={...e.data,role:n},localStorage.setItem("user_info",JSON.stringify(r.value))}async function k(){try{await U()}catch{}l()}function i(e,n){t.value=e,s.value=n,localStorage.setItem("access_token",e),localStorage.setItem("refresh_token",n)}function l(){t.value="",s.value="",r.value=null,localStorage.removeItem("access_token"),localStorage.removeItem("refresh_token"),localStorage.removeItem("user_info")}function f(e,n){return{id:e.userId,email:e.email,nickname:e.nickname,avatar:e.avatar,type:e.type,role:n}}return{token:t,refreshToken:s,userInfo:r,isLoggedIn:m,isAdmin:c,loginAdmin:p,loginUser:v,registerUser:I,fetchUserInfo:S,logout:k,clearAuth:l}});export{A as g,M as u};
@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>博客系统</title>
<script type="module" crossorigin src="/assets/index-Ce3OdoWB.js"></script>
<script type="module" crossorigin src="/assets/index-CptE6QA-.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DxOym-B1.css">
</head>
<body>
+8 -1
View File
@@ -6,6 +6,9 @@
<el-form-item prop="email">
<el-input v-model="form.email" placeholder="邮箱" prefix-icon="Message" />
</el-form-item>
<el-form-item prop="nickname">
<el-input v-model="form.nickname" placeholder="昵称" prefix-icon="User" />
</el-form-item>
<el-form-item prop="password">
<el-input v-model="form.password" type="password" placeholder="密码(8-32位,含大小写字母、数字和特殊字符中的至少三类)" prefix-icon="Lock" show-password />
</el-form-item>
@@ -33,7 +36,7 @@ const router = useRouter()
const userStore = useUserStore()
const loading = ref(false)
const formRef = ref()
const form = ref({ email: '', password: '', confirmPassword: '' })
const form = ref({ email: '', nickname: '', password: '', confirmPassword: '' })
const validateConfirm = (rule, value, callback) => {
if (value !== form.value.password) {
@@ -48,6 +51,10 @@ const rules = {
{ required: true, message: '请输入邮箱', trigger: 'blur' },
{ type: 'email', message: '邮箱格式不正确', trigger: 'blur' },
],
nickname: [
{ required: true, message: '请输入昵称', trigger: 'blur' },
{ min: 2, max: 20, message: '昵称长度2-20位', trigger: 'blur' },
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ min: 8, max: 32, message: '密码长度8-32位', trigger: 'blur' },