Files
ijmuv-blog-release/frontend/assets/PostEdit-CK7a-nB2.js
2026-05-08 13:39:01 +08:00

1 line
4.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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};