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
11 KiB
1 line
11 KiB
|
4 weeks 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 ee,Xt as te,Y as s,at as c,b as l,d as ne,ht as u,m as d,ot as re,q as f,rt as p,tn as m,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as g,c as _,l as v,s as y}from"./index-BKGTVidA.js";import{n as ie,t as b}from"./usePageLoad-D9c6HmVf.js";import{i as x,t as S}from"./RichTextEditor--JhJgtyr.js";import{a as C,i as w,n as T,o as E,r as D,t as O}from"./news-DsaeuNoa.js";import{s as k}from"./admin-list-DjncsyJC.js";import{a as A}from"./dict-yXQAO4jv.js";var ae={class:`list-page`},oe={class:`page-header`},se={class:`list-filter-bar`},ce=[`href`],le={key:1,class:`text-mute`},ue={key:1,class:`text-mute`},de={class:`table-row-actions`},fe={class:`list-pager`},pe={class:`upload-row`},me={key:0,class:`thumb-preview`},he=[`src`],ge={class:`dialog-footer-inner`},j=y(n({__name:`index`,setup(n){let y=g(),j=u(null),M=u(!1),N=u(!1),P=u(!1),F=u([]),I=u([]),L=u({current_page:1,per_page:20,total:0}),R=u(1),z=u(``),B=u(``),V=u(``),H=u(``),U=u([]),W=u(!1),G=u(null),K=u({title:``,category_dict_item_id:void 0,source:``,cover_url:``,published_at:``,content_html:``});function _e(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}.${n(t.getMonth()+1)}.${n(t.getDate())}`}async function q(){try{U.value=(await A(`news_category`)).items??[]}catch{v.warning(`资讯分类字典加载失败,请执行 NewsDictionarySeeder 或在字典中维护 news_category`)}}async function J(){M.value=!0;try{let e={page:R.value,page_size:L.value.per_page};z.value&&(e.keyword=z.value),B.value!==``&&(e.category_dict_item_id=B.value),j.value&&(e.crawl_job_id=j.value),V.value!==``&&(e.status=V.value),H.value!==``&&(e.has_cover=H.value);let t=await C(e);I.value=t.items??[],L.value=t.meta??{current_page:1,per_page:20,total:0}}finally{M.value=!1}}function Y(){R.value=1,J()}function ve(){z.value=``,B.value=``,V.value=``,H.value=``,R.value=1,J()}function ye(){G.value=null,K.value={title:``,category_dict_item_id:U.value[0]?.id,source:``,cover_url:``,published_at:new Date().toISOString().slice(0,10),content_html:``},W.value=!0}async function be(e){G.value=e;let t=await w(e.id);K.value={title:t.title,category_dict_item_id:t.category_dict_item_id??void 0,source:t.source||``,cover_url:t.cover_url||``,published_at:t.published_at?t.published_at.slice(0,10):``,content_html:t.content_html||``},W.value=!0}function X(){return K.value.title?.trim()?K.value.category_dict_item_id?K.value.published_at?K.value.content_html?.replace(/<[^>]+>/g,``).trim()?!0:(v.warning(`请填写资讯正文`),!1):(v.warning(`请填写发布时间`),!1):(v.warning(`请选择资讯分类`),!1):(v.warning(`请填写资讯标题`),!1)}async function Z(e){if(!X())return;let t={title:K.value.title.trim(),category_dict_item_id:K.value.category_dict_item_id,source:K.value.source||null,cover_url:K.value.cover_url||null,published_at:K.value.published_at,content_html:K.value.content_html||null,status:e};N.value=!0;try{G.value?await E(G.value.id,t):await T(t),v.success(e===1?`已保存资讯`:`已暂存草稿`),W.value=!1,await J()}finally{N.value=!1}}async function xe(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await x(n);K.value.cover_url=t.url,v.success(`封面上传成功`),e.onSuccess?.({})}catch{v.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}function Q(){K.value.cover_url=``}async function Se(e){await _.confirm(`确定删除资讯「${e.title}」?`,`提示`,{type:`warning`}),await D(e.id),v.success(`已删除`),await J()}function Ce(e){F.value=e}async function we(){let e=F.value.filter(e=>e.status===0);if(e.length===0){v.warning(`请勾选未发布的资讯`);return}await _.confirm(`确定发布已勾选的 ${e.length} 条资讯?`,`批量发布`,{type:`info`}),P.value=!0;try{let t=await O(e.map(e=>e.id)),n=t.skipped>0?`,跳过 ${t.skipped} 条`:``;v.success(`已发布 ${t.published} 条${n}`),F.value=[],await J()}finally{P.value=!1}}function Te(){j.value=null,R.value=1,J()
|