Files
zsglpt/static/admin/assets/AnnouncementsPage-C6-W6_wH.js

2 lines
6.7 KiB
JavaScript

import{e as v,g as Y,r as p,W as Z,l as C,o as f,k as c,j as n,w as t,i as I,c as x,Y as q,Z as G,C as r,B as $,X as J,b as u,_ as D,E as h}from"./vendor-BczUEOE_.js";import{a as w,_ as K}from"./index-UGawl5hI.js";async function O(){const{data:o}=await w.get("/announcements");return o}async function Q(o){const{data:s}=await w.post("/announcements",o);return s}async function ee(o){const s=new FormData;s.append("file",o);const{data:_}=await w.post("/announcements/upload_image",s);return _}async function te(o){const{data:s}=await w.post(`/announcements/${o}/activate`);return s}async function ne(o){const{data:s}=await w.post(`/announcements/${o}/deactivate`);return s}async function ae(o){const{data:s}=await w.delete(`/announcements/${o}`);return s}const le={class:"page-stack"},se={class:"image-upload-row"},oe={key:1,class:"image-url"},ie={key:0,class:"image-preview"},ce=["src"],ue={class:"actions"},re={class:"table-wrap"},de=["title"],me={key:1,class:"app-muted"},fe={class:"actions"},pe={__name:"AnnouncementsPage",setup(o){const s=v(""),_=v(""),m=v(""),g=v(null),B=v(!1),T=v(!1),V=v([]);async function k(){T.value=!0;try{V.value=await O()}catch{V.value=[]}finally{T.value=!1}}function z(){s.value="",_.value="",m.value="",g.value&&(g.value.value="")}function U(){g.value?.click()}function F(){m.value="",g.value&&(g.value.value="")}async function P(l){const e=l.target?.files?.[0];if(e){if(e.type&&!e.type.startsWith("image/")){u.error("请选择图片文件"),l.target.value="";return}B.value=!0;try{const d=await ee(e);if(!d?.success||!d?.url){u.error(d?.error||"上传失败");return}m.value=d.url,u.success("上传成功")}catch{}finally{B.value=!1,l.target.value=""}}}async function E(l){const e=s.value.trim(),d=_.value.trim(),b=m.value.trim();if(!e||!d){u.error("标题和内容不能为空");return}try{const i=await Q({title:e,content:d,image_url:b,is_active:!!l});if(!i?.success){u.error(i?.error||"保存失败");return}u.success("保存成功"),z(),await k()}catch{}}async function R(l){const e=D("div",{class:"announcement-view"},[l.content?D("div",{class:"announcement-view-text"},l.content):null,l.image_url?D("img",{class:"announcement-view-image",src:l.image_url,alt:"公告图片"}):null]);await h.alert(e,l.title||"公告",{confirmButtonText:"关闭",dangerouslyUseHTMLString:!1})}async function S(l){try{await h.confirm("确定启用该公告吗?启用后将自动停用其他公告。","启用公告",{confirmButtonText:"启用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await te(l.id);if(!e?.success){u.error(e?.error||"启用失败");return}u.success("已启用"),await k()}catch{}}async function W(l){try{await h.confirm("确定停用该公告吗?","停用公告",{confirmButtonText:"停用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await ne(l.id);if(!e?.success){u.error(e?.error||"停用失败");return}u.success("已停用"),await k()}catch{}}async function j(l){try{await h.confirm("确定删除该公告吗?删除后无法恢复。","删除公告",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const e=await ae(l.id);if(!e?.success){u.error(e?.error||"删除失败");return}u.success("已删除"),await k()}catch{}}return Y(k),(l,e)=>{const d=p("el-input"),b=p("el-form-item"),i=p("el-button"),H=p("el-form"),M=p("el-card"),y=p("el-table-column"),N=p("el-tag"),L=p("el-table"),X=Z("loading");return f(),C("div",le,[e[17]||(e[17]=c("div",{class:"app-page-title"},[c("h2",null,"公告管理")],-1)),n(M,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[9]||(e[9]=c("h3",{class:"section-title"},"创建公告",-1)),n(H,{"label-width":"90px"},{default:t(()=>[n(b,{label:"公告标题"},{default:t(()=>[n(d,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=a=>s.value=a),placeholder:"请输入公告标题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),n(b,{label:"公告内容"},{default:t(()=>[n(d,{modelValue:_.value,"onUpdate:modelValue":e[1]||(e[1]=a=>_.value=a),type:"textarea",rows:5,placeholder:"请输入公告内容(将以弹窗形式展示)",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1}),n(b,{label:"公告图片"},{default:t(()=>[c("div",se,[n(i,{icon:q(G),loading:B.value,onClick:U},{default:t(()=>[...e[4]||(e[4]=[r("上传图片",-1)])]),_:1},8,["icon","loading"]),m.value?(f(),x(i,{key:0,onClick:F},{default:t(()=>[...e[5]||(e[5]=[r("移除",-1)])]),_:1})):I("",!0),m.value?(f(),C("span",oe,$(m.value),1)):I("",!0),c("input",{ref_key:"imageInputRef",ref:g,class:"image-input",type:"file",accept:"image/*",onChange:P},null,544)])]),_:1})]),_:1}),m.value?(f(),C("div",ie,[c("img",{src:m.value,alt:"公告图片预览"},null,8,ce)])):I("",!0),c("div",ue,[n(i,{type:"primary",onClick:e[2]||(e[2]=a=>E(!0))},{default:t(()=>[...e[6]||(e[6]=[r("发布并启用",-1)])]),_:1}),n(i,{onClick:e[3]||(e[3]=a=>E(!1))},{default:t(()=>[...e[7]||(e[7]=[r("保存但不启用",-1)])]),_:1}),n(i,{onClick:z},{default:t(()=>[...e[8]||(e[8]=[r("清空",-1)])]),_:1})]),e[10]||(e[10]=c("div",{class:"help"}," 说明:启用公告后,用户登录进入系统将弹窗提示;用户可选择“当次关闭”或“永久关闭本次公告”。 ",-1))]),_:1}),n(M,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[16]||(e[16]=c("h3",{class:"section-title"},"公告列表",-1)),c("div",re,[J((f(),x(L,{data:V.value,style:{width:"100%"}},{default:t(()=>[n(y,{prop:"id",label:"ID",width:"80"}),n(y,{label:"标题","min-width":"240"},{default:t(({row:a})=>[c("span",{class:"ellipsis",title:a.title},$(a.title),9,de)]),_:1}),n(y,{label:"状态",width:"120"},{default:t(({row:a})=>[n(N,{type:a.is_active?"success":"info",effect:"light"},{default:t(()=>[r($(a.is_active?"启用":"停用"),1)]),_:2},1032,["type"])]),_:1}),n(y,{label:"图片",width:"100"},{default:t(({row:a})=>[a.image_url?(f(),x(N,{key:0,type:"success",effect:"light"},{default:t(()=>[...e[11]||(e[11]=[r("有图",-1)])]),_:1})):(f(),C("span",me,"-"))]),_:1}),n(y,{prop:"created_at",label:"创建时间",width:"180"}),n(y,{label:"操作",width:"260",fixed:"right"},{default:t(({row:a})=>[c("div",fe,[n(i,{size:"small",onClick:A=>R(a)},{default:t(()=>[...e[12]||(e[12]=[r("查看",-1)])]),_:1},8,["onClick"]),a.is_active?(f(),x(i,{key:0,size:"small",onClick:A=>W(a)},{default:t(()=>[...e[13]||(e[13]=[r("停用",-1)])]),_:1},8,["onClick"])):(f(),x(i,{key:1,type:"success",size:"small",onClick:A=>S(a)},{default:t(()=>[...e[14]||(e[14]=[r("启用",-1)])]),_:1},8,["onClick"])),n(i,{type:"danger",size:"small",onClick:A=>j(a)},{default:t(()=>[...e[15]||(e[15]=[r("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[X,T.value]])])]),_:1})])}}},ge=K(pe,[["__scopeId","data-v-6f55521c"]]);export{ge as default};