You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
10 KiB

1 month ago
import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as ee,Y as c,at as l,b as u,d as te,ht as d,m as f,ot as p,q as m,tn as ne,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,r as v,s as y}from"./index-BAoVGmph.js";import{n as b,t as x}from"./RichTextEditor-BhhlqZ44.js";import{t as S}from"./usePageLoad-DFTLo_Lv.js";import{s as C}from"./activities-BEwTcnzX.js";import{l as w}from"./courses-lcM-6peD.js";import{r as re}from"./admin-list-CBoToEFo.js";async function T(e){let{data:t}=await v.get(`/admin/v1/banners`,{params:e});return t.data}async function E(e){let{data:t}=await v.get(`/admin/v1/banners/${e}`);return t.data}async function D(e){let{data:t}=await v.post(`/admin/v1/banners`,e);return t.data}async function O(e,t){let{data:n}=await v.put(`/admin/v1/banners/${e}`,t);return n.data}async function k(e){let{data:t}=await v.delete(`/admin/v1/banners/${e}`);return t}var A={class:`list-page`},j={class:`page-header`},M={class:`list-filter-bar`},N={key:1,class:`text-mute`},ie={class:`table-row-actions`},ae={class:`list-pager`},oe={class:`upload-row`},se={key:0,class:`thumb-preview`},ce=[`src`],P=y(n({__name:`index`,setup(n){let v=[{value:`course`,label:`课程`},{value:`activity`,label:`活动`},{value:`custom`,label:`自定义`}],y=d(!1),P=d(!1),F=d([]),I=d({current_page:1,per_page:20,total:0}),L=d(1),R=d(``),z=d(``),B=d(``),V=d(!1),H=d(null),U=d({type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1}),W=d([]),G=d([]),K=d(!1),q=d(!1);async function J(){y.value=!0;try{let e={page:L.value,page_size:I.value.per_page};R.value&&(e.keyword=R.value),z.value&&(e.type=z.value),B.value!==``&&(e.status=B.value);let t=await T(e);F.value=t.items,I.value=t.meta}finally{y.value=!1}}function Y(){L.value=1,J()}function le(){R.value=``,z.value=``,B.value=``,L.value=1,J()}async function X(e=``){K.value=!0;try{W.value=(await w({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{K.value=!1}}async function Z(e=``){q.value=!0;try{G.value=(await C({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{q.value=!1}}function ue(e){U.value.course_id=void 0,U.value.activity_id=void 0,U.value.title=``,U.value.cover_url=``,U.value.content_html=``,e===`course`&&X(),e===`activity`&&Z()}function de(){H.value=null,U.value={type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1},W.value=[],G.value=[],V.value=!0,X()}async function fe(e){H.value=e;let t=await E(e.id);U.value={type:t.type,course_id:t.course_id??void 0,activity_id:t.activity_id??void 0,title:t.title||``,cover_url:t.cover_url||``,content_html:t.content_html||``,sort:t.sort,status:t.status},t.type===`course`&&t.course_id&&(W.value=[{id:t.course_id,title:t.course_title||`#${t.course_id}`}]),t.type===`activity`&&t.activity_id&&(G.value=[{id:t.activity_id,title:t.activity_title||`#${t.activity_id}`}]),V.value=!0,t.type===`course`&&X(),t.type===`activity`&&Z()}function Q(){if(U.value.type===`course`&&!U.value.course_id)return _.warning(`请选择课程`),!1;if(U.value.type===`activity`&&!U.value.activity_id)return _.warning(`请选择活动`),!1;if(U.value.type===`custom`){if(!U.value.title.trim())return _.warning(`请填写标题`),!1;if(!U.value.cover_url)return _.warning(`请上传封面图`),!1}return!0}async function pe(){if(!Q())return;let e={type:U.value.type,sort:U.value.sort,status:U.value.status,course_id:U.value.type===`course`?U.value.course_id:null,activity_id:U.value.type===`activity`?U.value.activity_id:null,title:U.value.type===`custom`?U.value.title.trim():null,cover_url:U.value.type===`custom`?U.value.cover_url:null,content_html:U.value.type===`custom`&&U.value.content_html?.replace(/<[^>]+>/g,``).trim()?U.value.content_html:null};P.value=!0;try{H.value?await O(H.value.id,e):await D(e),_.success(`已保存`),V.value=!1,await J()}finally{P.value=!1}}async function $(e){await g.confirm(`确定删除 Banner「${e.summary||e.id}」?`,`提示`,{type:`warning`}),await k(e.id),_.success(`已删除`)