2 lines
7.4 KiB
JavaScript
2 lines
7.4 KiB
JavaScript
import{L as H,d as D,o as F,b as _,e as l,m as o,z as s,s as R,F as E,h as b,y as c,k as x,r as y,f as $,C as u,T as j,g as n,j as v,t as f,J as g,_ as I}from"./index-eVF4AHSu.js";const C=H();async function W(m){try{const r=await C.get("/admin/page/blocks",m?{pageCode:m}:void 0);return Array.isArray(r)?r:[]}catch(r){return console.warn("[admin/page/blocks] fallback:",r),[{id:1,pageCode:"home",blockCode:"hero_title",blockNameZh:"首屏大标题",type:"text",contentZh:"全屋定制 匠心之作",contentEn:"Whole House Customization",isShow:1,sortOrder:1},{id:2,pageCode:"home",blockCode:"hero_subtitle",blockNameZh:"首屏副标题",type:"text",contentZh:"专注高端家具定制,为品质生活而生",contentEn:"Focused on premium furniture customization",isShow:1,sortOrder:2},{id:3,pageCode:"home",blockCode:"services_title",blockNameZh:"服务板块标题",type:"text",contentZh:"核心业务",contentEn:"Core Business",isShow:1,sortOrder:3},{id:4,pageCode:"home",blockCode:"strength_data",blockNameZh:"品牌实力数据",type:"list",contentZh:'[{"number":"20+","label":"年行业经验"},{"number":"50000+","label":"㎡生产基地"},{"number":"1000+","label":"家服务客户"},{"number":"50+","label":"项国家专利"}]',isShow:1,sortOrder:4},{id:5,pageCode:"about",blockCode:"story_title",blockNameZh:"品牌故事标题",type:"text",contentZh:"关于创高",contentEn:"About Chuanggao",isShow:1,sortOrder:1},{id:6,pageCode:"about",blockCode:"story_content",blockNameZh:"品牌故事内容",type:"rich",contentZh:"<p>创高家具品牌故事占位内容...</p>",isShow:1,sortOrder:2}]}}async function q(m,r){await C.putJson(`/admin/page/block/update/${m}`,r)}async function G(m){await C.putJson("/admin/page/blocks/batch-update",{blocks:m})}const K={class:"page-block-manage"},Q={class:"page-header"},X={class:"page-tabs"},Y={class:"blocks-list"},ee={class:"block-header"},te={class:"block-info"},ae={class:"block-name"},oe={class:"block-actions"},le={class:"block-body"},ne={class:"form-row"},se={class:"form-col"},de={class:"form-col"},ie={key:0,class:"form-row"},re={class:"form-col"},ce={class:"form-row"},ue={class:"form-col"},me={class:"form-col"},pe={class:"link-text-row"},he=D({__name:"PageBlockManage",setup(m){const r=y(!1),V=y([]),U=y("home"),p=y(!1),S=[{label:"首页",value:"home"},{label:"关于页",value:"about"},{label:"产品页",value:"products"},{label:"案例页",value:"cases"},{label:"联系页",value:"contact"}],w=$(()=>V.value.filter(a=>a.pageCode===U.value));async function N(){r.value=!0;try{V.value=await W()}catch(a){console.warn("fetchPageBlocks failed:",a)}finally{r.value=!1}}F(N);function B(a){return{text:"纯文本",rich:"富文本",image:"单图",images:"多图",list:"列表JSON",html:"HTML"}[a]||a}async function T(a){p.value=!0;try{await q(a.id,{contentZh:a.contentZh,contentEn:a.contentEn,image:a.image,imagesJson:a.imagesJson,linkUrl:a.linkUrl,linkTextZh:a.linkTextZh,linkTextEn:a.linkTextEn,isShow:a.isShow}),g.success(`区块「${a.blockNameZh||a.blockCode}」已保存`)}catch(d){g.error(d instanceof Error?d.message:"保存失败")}finally{p.value=!1}}async function L(){p.value=!0;try{await G(w.value),g.success("全部保存成功")}catch(a){g.error(a instanceof Error?a.message:"保存失败")}finally{p.value=!1}}return(a,d)=>{const Z=u("el-button"),O=u("el-radio-button"),z=u("el-radio-group"),k=u("el-tag"),J=u("el-switch"),i=u("el-input"),h=u("el-form-item"),M=u("el-form"),P=u("el-empty"),A=j("loading");return n(),_("div",K,[l("div",Q,[d[2]||(d[2]=l("h2",{class:"page-title"},"页面区块管理",-1)),o(Z,{type:"primary",loading:p.value,onClick:L},{default:s(()=>[...d[1]||(d[1]=[v("保存全部",-1)])]),_:1},8,["loading"])]),l("div",X,[o(z,{modelValue:U.value,"onUpdate:modelValue":d[0]||(d[0]=e=>U.value=e),size:"default"},{default:s(()=>[(n(),_(E,null,b(S,e=>o(O,{key:e.value,value:e.value},{default:s(()=>[v(f(e.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),R((n(),_("div",Y,[(n(!0),_(E,null,b(w.value,e=>(n(),_("div",{key:e.id,class:"block-card surface"},[l("div",ee,[l("div",te,[l("span",ae,f(e.blockNameZh||e.blockCode),1),o(k,{size:"small",type:"info"},{default:s(()=>[v(f(B(e.type)),1)]),_:2},1024),e.blockCode?(n(),c(k,{key:0,size:"small",type:"warning"},{default:s(()=>[v(f(e.blockCode),1)]),_:2},1024)):x("",!0)]),l("div",oe,[o(J,{modelValue:e.isShow,"onUpdate:modelValue":t=>e.isShow=t,"active-value":1,"inactive-value":0,"active-text":"显示","inactive-text":"隐藏",size:"small"},null,8,["modelValue","onUpdate:modelValue"]),o(Z,{size:"small",type:"primary",loading:p.value,onClick:t=>T(e)},{default:s(()=>[...d[3]||(d[3]=[v(" 保存 ",-1)])]),_:1},8,["loading","onClick"])])]),l("div",le,[o(M,{"label-width":"100px","label-position":"top"},{default:s(()=>[l("div",ne,[l("div",se,[o(h,{label:"中文内容"},{default:s(()=>[e.type==="text"?(n(),c(i,{key:0,modelValue:e.contentZh,"onUpdate:modelValue":t=>e.contentZh=t,placeholder:"中文内容"},null,8,["modelValue","onUpdate:modelValue"])):e.type==="rich"?(n(),c(i,{key:1,modelValue:e.contentZh,"onUpdate:modelValue":t=>e.contentZh=t,type:"textarea",rows:6,placeholder:"HTML富文本内容"},null,8,["modelValue","onUpdate:modelValue"])):e.type==="list"?(n(),c(i,{key:2,modelValue:e.contentZh,"onUpdate:modelValue":t=>e.contentZh=t,type:"textarea",rows:6,placeholder:"JSON数组格式"},null,8,["modelValue","onUpdate:modelValue"])):(n(),c(i,{key:3,modelValue:e.contentZh,"onUpdate:modelValue":t=>e.contentZh=t,type:"textarea",rows:3,placeholder:"中文内容"},null,8,["modelValue","onUpdate:modelValue"]))]),_:2},1024)]),l("div",de,[o(h,{label:"英文内容"},{default:s(()=>[e.type==="text"?(n(),c(i,{key:0,modelValue:e.contentEn,"onUpdate:modelValue":t=>e.contentEn=t,placeholder:"English Content"},null,8,["modelValue","onUpdate:modelValue"])):e.type==="rich"?(n(),c(i,{key:1,modelValue:e.contentEn,"onUpdate:modelValue":t=>e.contentEn=t,type:"textarea",rows:6,placeholder:"HTML rich content"},null,8,["modelValue","onUpdate:modelValue"])):e.type==="list"?(n(),c(i,{key:2,modelValue:e.contentEn,"onUpdate:modelValue":t=>e.contentEn=t,type:"textarea",rows:6,placeholder:"JSON array format"},null,8,["modelValue","onUpdate:modelValue"])):(n(),c(i,{key:3,modelValue:e.contentEn,"onUpdate:modelValue":t=>e.contentEn=t,type:"textarea",rows:3,placeholder:"English Content"},null,8,["modelValue","onUpdate:modelValue"]))]),_:2},1024)])]),e.type==="image"||e.type==="images"?(n(),_("div",ie,[l("div",re,[o(h,{label:"图片URL"},{default:s(()=>[o(i,{modelValue:e.image,"onUpdate:modelValue":t=>e.image=t,placeholder:"图片URL"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])):x("",!0),l("div",ce,[l("div",ue,[o(h,{label:"链接地址"},{default:s(()=>[o(i,{modelValue:e.linkUrl,"onUpdate:modelValue":t=>e.linkUrl=t,placeholder:"/products 或完整URL"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),l("div",me,[l("div",pe,[o(h,{label:"链接文字(中文)"},{default:s(()=>[o(i,{modelValue:e.linkTextZh,"onUpdate:modelValue":t=>e.linkTextZh=t,placeholder:"查看更多"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(h,{label:"链接文字(英文)"},{default:s(()=>[o(i,{modelValue:e.linkTextEn,"onUpdate:modelValue":t=>e.linkTextEn=t,placeholder:"Learn More"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])])]),_:2},1024)])]))),128)),!r.value&&w.value.length===0?(n(),c(P,{key:0,description:"该页面暂无区块配置"})):x("",!0)])),[[A,r.value]])])}}}),ve=I(he,[["__scopeId","data-v-73b1bae9"]]);export{ve as default};
|