1 line
4.9 KiB
JavaScript
1 line
4.9 KiB
JavaScript
import{$t as e,Et as t,Ft as n,Gt as r,K as i,Nt as a,Q as o,St as s,Ut as c,X as l,Z as u,at as d,et as f,hn as p,it as m,rt as h,t as g,wt as _,yt as v}from"./editor-DJ72UhpY.js";import{a as y,i as b}from"./vendor-BqxQPPIo.js";import{l as x}from"./index-BsmF42t4.js";import{t as S}from"./_plugin-vue_export-helper-BzmG9fMN.js";import{t as C}from"./post-C2MqO86O.js";import{t as w}from"./category-BqOiLN1V.js";import{t as T}from"./tag-DZxWPK-P.js";var E={class:`space-y-4`},D={class:`flex justify-between items-center`},O={class:`text-2xl font-bold`},k={class:`flex gap-2`},A=S(d({__name:`PostEdit`,setup(d){let S=b(),A=y(),j=C(),M=w(),N=T(),P=r(null),F=r(!1),I=l(()=>!!S.params.id),L=l(()=>Number(S.params.id)),R=c({title:``,slug:``,content:``,summary:``,category_id:null,tag_ids:[]}),z={title:[{required:!0,message:`请输入标题`,trigger:`blur`}],slug:[{required:!0,message:`请输入Slug`,trigger:`blur`},{pattern:/^[a-z0-9-]+$/,message:`Slug只能包含小写字母、数字和连字符`,trigger:`blur`}],content:[{required:!0,message:`请输入内容`,trigger:`blur`}]},B=l(()=>(M.categories||[]).map(e=>({label:e.name,value:e.id}))),V=l(()=>(N.tags||[]).map(e=>({label:e.name,value:e.id}))),H=[`bold`,`underline`,`italic`,`strikeThrough`,`sub`,`sup`,`quote`,`unorderedList`,`orderedList`,`codeRow`,`code`,`link`,`image`,`table`,`preview`,`previewOnly`,`fullscreen`,`catalog`];function U(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).replace(/\s+/g,`-`).substring(0,100)}a(()=>R.title,e=>{!I.value&&e&&!R.slug&&(R.slug=U(e))});async function W(e){try{await P.value?.validate(),F.value=!0;let t={title:R.title,slug:R.slug,content:R.content,summary:R.summary||void 0,status:e};R.category_id&&(t.category_id=R.category_id),R.tag_ids.length>0&&(t.tag_ids=R.tag_ids),I.value?(await j.updatePost(L.value,t),x.success(e===`published`?`文章已发布`:`草稿已保存`)):(await j.createPost(t),x.success(e===`published`?`文章已发布`:`草稿已保存`)),A.push(`/admin/posts`)}catch(e){console.error(`保存文章失败:`,e),e.message?x.error(e.message):x.error(`保存失败,请检查网络连接`)}finally{F.value=!1}}async function G(e,t){x.info(`图片上传功能需要后端支持,请先使用图床`),t([])}async function K(){if(I.value)try{let e=await j.fetchAdminPost(L.value);R.title=e.title,R.slug=e.slug,R.content=e.content,R.summary=e.summary||``,R.category_id=e.category_id||null,R.tag_ids=e.tags?.map(e=>e.id)||[]}catch(e){x.error(e.message||`加载文章失败`),A.push(`/admin/posts`)}}return v(()=>{K(),M.fetchCategories(),N.fetchTags()}),(r,a)=>{let c=t(`el-button`),l=t(`el-input`),d=t(`el-form-item`),v=t(`el-option`),y=t(`el-select`),b=t(`el-form`),x=t(`el-card`);return s(),f(`div`,E,[u(`div`,D,[u(`h1`,O,p(I.value?`编辑文章`:`新建文章`),1),u(`div`,k,[m(c,{onClick:a[0]||=t=>e(A).back()},{default:n(()=>[...a[9]||=[h(`取消`,-1)]]),_:1}),m(c,{type:`primary`,loading:F.value,onClick:a[1]||=e=>W(`draft`)},{default:n(()=>[...a[10]||=[h(` 保存草稿 `,-1)]]),_:1},8,[`loading`]),m(c,{type:`success`,loading:F.value,onClick:a[2]||=e=>W(`published`)},{default:n(()=>[...a[11]||=[h(` 发布文章 `,-1)]]),_:1},8,[`loading`])])]),m(x,null,{default:n(()=>[m(b,{ref_key:`formRef`,ref:P,model:R,rules:z,"label-position":`left`,"label-width":`80`},{default:n(()=>[m(d,{label:`标题`,prop:`title`},{default:n(()=>[m(l,{modelValue:R.title,"onUpdate:modelValue":a[3]||=e=>R.title=e,placeholder:`请输入文章标题`,size:`large`},null,8,[`modelValue`])]),_:1}),m(d,{label:`Slug`,prop:`slug`},{default:n(()=>[m(l,{modelValue:R.slug,"onUpdate:modelValue":a[4]||=e=>R.slug=e,placeholder:`文章URL别名,如:my-first-post`},null,8,[`modelValue`])]),_:1}),m(d,{label:`分类`,prop:`category_id`},{default:n(()=>[m(y,{modelValue:R.category_id,"onUpdate:modelValue":a[5]||=e=>R.category_id=e,placeholder:`选择分类`,clearable:``,style:{width:`100%`}},{default:n(()=>[(s(!0),f(i,null,_(B.value,e=>(s(),o(v,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),m(d,{label:`标签`,prop:`tag_ids`},{default:n(()=>[m(y,{modelValue:R.tag_ids,"onUpdate:modelValue":a[6]||=e=>R.tag_ids=e,placeholder:`选择标签`,multiple:``,clearable:``,style:{width:`100%`}},{default:n(()=>[(s(!0),f(i,null,_(V.value,e=>(s(),o(v,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),m(d,{label:`摘要`,prop:`summary`},{default:n(()=>[m(l,{modelValue:R.summary,"onUpdate:modelValue":a[7]||=e=>R.summary=e,type:`textarea`,placeholder:`文章摘要,留空将自动从内容提取`,rows:3},null,8,[`modelValue`])]),_:1}),m(d,{label:`内容`,prop:`content`,class:`content-editor`},{default:n(()=>[m(e(g),{modelValue:R.content,"onUpdate:modelValue":a[8]||=e=>R.content=e,language:`zh-CN`,toolbars:H,footers:[],style:{height:`600px`},onOnUploadImg:G},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1})])}}}),[[`__scopeId`,`data-v-b73d13fa`]]);export{A as default}; |