2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
import{d as oe,o as ue,b as x,e as m,m as a,z as o,p as C,U as se,x as ne,s as de,y as g,r as d,C as i,T as ie,g as v,j as r,F as T,h as F,t as U,k as B,V as re,W as me,f as ve,X as ce,J as V,_ as pe}from"./index-eVF4AHSu.js";import{a as fe,f as ge,b as Ve,e as ye,g as _e,h as be}from"./product-B3Fr265h.js";import{r as we}from"./media-BgGGvhcR.js";import{R as he}from"./RichEditor-DD1hYfzj.js";import{M as Ze}from"./MediaSelector-DyRQc9ag.js";import"./pagination-BgSlm-mj.js";import"./upload-C79x1DTb.js";const xe={class:"product-manage"},Ce={class:"page-header"},Ue={class:"filter-bar"},ke={key:1,class:"table-thumb-placeholder"},Pe={class:"pagination-bar"},ze={class:"dialog-row"},Me={class:"dialog-row"},Se={class:"dialog-row"},Ee={class:"dialog-row"},Ie={class:"dialog-row"},Ne={class:"dialog-row"},$e={class:"dialog-row"},Re={class:"dialog-row"},Be=oe({__name:"ProductManage",setup(He){const k=d(!1),H=d([]),b=d([]),L=d(0),P=d(1),z=d(20),M=d(void 0),S=d(void 0),E=d(""),y=d(!1),I=d("新增产品"),w=d(null),N=d(!1),t=d({categoryId:0,nameZh:"",nameEn:"",code:"",mainImage:"",summaryZh:"",summaryEn:"",descriptionZh:"",descriptionEn:"",sizeZh:"",materialZh:"",priceMin:null,priceMax:null,isShowPrice:0,isHot:0,isNew:0,isRecommend:0,status:1,sortOrder:0}),D=ve(()=>{const u=[];for(const e of b.value)if(u.push({id:e.id,nameZh:e.nameZh,prefix:""}),e.children)for(const n of e.children)u.push({id:n.id,nameZh:n.nameZh,prefix:" "});return u});async function c(){k.value=!0;try{const u=await fe({categoryId:M.value,status:S.value,keyword:E.value||void 0,page:P.value,size:z.value});H.value=u.records,L.value=u.total}catch(u){console.warn("fetchProductList failed:",u)}finally{k.value=!1}}async function K(){try{b.value=await ge()}catch{}}ue(()=>{K(),c()});function q(){var u;w.value=null,I.value="新增产品",t.value={categoryId:((u=b.value[0])==null?void 0:u.id)??0,nameZh:"",nameEn:"",code:"",mainImage:"",summaryZh:"",summaryEn:"",status:1,sortOrder:0,isHot:0,isNew:0,isRecommend:0,isShowPrice:0},y.value=!0}function j(u){w.value=u.id,I.value="编辑产品",t.value={...u},y.value=!0}async function A(u){try{await ce.confirm(`确定删除产品「${u.nameZh}」?`,"确认删除",{type:"warning"}),await Ve(u.id),V.success("删除成功"),await c()}catch{}}async function G(u){const e=u.status===1?0:1;try{await ye(u.id,e),u.status=e,V.success(e===1?"已上架":"已下架")}catch{V.error("操作失败")}}async function J(){if(!t.value.nameZh||!t.value.categoryId){V.warning("请填写产品名称和分类");return}N.value=!0;try{w.value?(await _e(w.value,t.value),V.success("更新成功")):(await be(t.value),V.success("创建成功")),y.value=!1,await c()}catch(u){V.error(u instanceof Error?u.message:"操作失败")}finally{N.value=!1}}function W(u){for(const e of b.value){if(e.id===u)return e.nameZh;if(e.children){for(const n of e.children)if(n.id===u)return`${e.nameZh} / ${n.nameZh}`}}return String(u)}function X(u,e){return!u&&!e?"面议":u===e?`¥${u}`:`¥${u??""} - ¥${e??""}`}return(u,e)=>{const n=i("el-button"),h=i("el-option"),$=i("el-select"),p=i("el-input"),Q=i("el-image"),f=i("el-table-column"),Z=i("el-tag"),Y=i("el-table"),ee=i("el-pagination"),s=i("el-form-item"),R=i("el-input-number"),_=i("el-switch"),le=i("el-form"),ae=i("el-dialog"),te=ie("loading");return v(),x("div",xe,[m("div",Ce,[e[26]||(e[26]=m("h2",{class:"page-title"},"产品管理",-1)),a(n,{type:"primary",icon:C(se),onClick:q},{default:o(()=>[...e[25]||(e[25]=[r("新增产品",-1)])]),_:1},8,["icon"])]),m("div",Ue,[a($,{modelValue:M.value,"onUpdate:modelValue":e[0]||(e[0]=l=>M.value=l),placeholder:"选择分类",clearable:"",onChange:c,style:{width:"180px"}},{default:o(()=>[(v(!0),x(T,null,F(D.value,l=>(v(),g(h,{key:l.id,label:l.prefix+l.nameZh,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),a($,{modelValue:S.value,"onUpdate:modelValue":e[1]||(e[1]=l=>S.value=l),placeholder:"状态",clearable:"",onChange:c,style:{width:"120px"}},{default:o(()=>[a(h,{label:"上架",value:1}),a(h,{label:"下架",value:0})]),_:1},8,["modelValue"]),a(p,{modelValue:E.value,"onUpdate:modelValue":e[2]||(e[2]=l=>E.value=l),placeholder:"搜索产品名称/编码",clearable:"",onClear:c,onKeyup:ne(c,["enter"]),style:{width:"220px"}},null,8,["modelValue"]),a(n,{onClick:c},{default:o(()=>[...e[27]||(e[27]=[r("搜索",-1)])]),_:1})]),de((v(),g(Y,{data:H.value,class:"admin-table"},{default:o(()=>[a(f,{label:"主图",width:"90"},{default:o(({row:l})=>[l.mainImage?(v(),g(Q,{key:0,src:C(we)(l.mainImage),fit:"cover",class:"table-thumb"},null,8,["src"])):(v(),x("div",ke,"无图"))]),_:1}),a(f,{prop:"nameZh",label:"产品名称","min-width":"180","show-overflow-tooltip":""}),a(f,{label:"分类",width:"120"},{default:o(({row:l})=>[r(U(W(l.categoryId)),1)]),_:1}),a(f,{prop:"code",label:"编码",width:"100"}),a(f,{label:"价格",width:"120"},{default:o(({row:l})=>[r(U(l.isShowPrice?X(l.priceMin,l.priceMax):"面议"),1)]),_:1}),a(f,{label:"状态",width:"80"},{default:o(({row:l})=>[a(Z,{type:l.status===1?"success":"info",size:"small"},{default:o(()=>[r(U(l.status===1?"上架":"下架"),1)]),_:2},1032,["type"])]),_:1}),a(f,{label:"标记",width:"120"},{default:o(({row:l})=>[l.isHot?(v(),g(Z,{key:0,type:"danger",size:"small"},{default:o(()=>[...e[28]||(e[28]=[r("热门",-1)])]),_:1})):B("",!0),l.isNew?(v(),g(Z,{key:1,type:"success",size:"small"},{default:o(()=>[...e[29]||(e[29]=[r("新品",-1)])]),_:1})):B("",!0),l.isRecommend?(v(),g(Z,{key:2,type:"warning",size:"small"},{default:o(()=>[...e[30]||(e[30]=[r("推荐",-1)])]),_:1})):B("",!0)]),_:1}),a(f,{label:"操作",width:"200",fixed:"right"},{default:o(({row:l})=>[a(n,{size:"small",icon:C(re),onClick:O=>j(l),text:""},{default:o(()=>[...e[31]||(e[31]=[r("编辑",-1)])]),_:1},8,["icon","onClick"]),a(n,{size:"small",onClick:O=>G(l),text:""},{default:o(()=>[r(U(l.status===1?"下架":"上架"),1)]),_:2},1032,["onClick"]),a(n,{size:"small",icon:C(me),type:"danger",onClick:O=>A(l),text:""},{default:o(()=>[...e[32]||(e[32]=[r("删除",-1)])]),_:1},8,["icon","onClick"])]),_:1})]),_:1},8,["data"])),[[te,k.value]]),m("div",Pe,[a(ee,{"current-page":P.value,"onUpdate:currentPage":e[3]||(e[3]=l=>P.value=l),"page-size":z.value,"onUpdate:pageSize":e[4]||(e[4]=l=>z.value=l),total:L.value,layout:"total, prev, pager, next",onCurrentChange:c},null,8,["current-page","page-size","total"])]),a(ae,{modelValue:y.value,"onUpdate:modelValue":e[24]||(e[24]=l=>y.value=l),title:I.value,width:"780px","destroy-on-close":""},{footer:o(()=>[a(n,{onClick:e[23]||(e[23]=l=>y.value=!1)},{default:o(()=>[...e[33]||(e[33]=[r("取消",-1)])]),_:1}),a(n,{type:"primary",loading:N.value,onClick:J},{default:o(()=>[...e[34]||(e[34]=[r("保存",-1)])]),_:1},8,["loading"])]),default:o(()=>[a(le,{"label-width":"120px"},{default:o(()=>[m("div",ze,[a(s,{label:"产品名称(中文)",required:"",class:"dialog-col"},{default:o(()=>[a(p,{modelValue:t.value.nameZh,"onUpdate:modelValue":e[5]||(e[5]=l=>t.value.nameZh=l)},null,8,["modelValue"])]),_:1}),a(s,{label:"产品名称(英文)",class:"dialog-col"},{default:o(()=>[a(p,{modelValue:t.value.nameEn,"onUpdate:modelValue":e[6]||(e[6]=l=>t.value.nameEn=l)},null,8,["modelValue"])]),_:1})]),m("div",Me,[a(s,{label:"产品编码",class:"dialog-col"},{default:o(()=>[a(p,{modelValue:t.value.code,"onUpdate:modelValue":e[7]||(e[7]=l=>t.value.code=l),placeholder:"CG-SF-001"},null,8,["modelValue"])]),_:1}),a(s,{label:"所属分类",required:"",class:"dialog-col"},{default:o(()=>[a($,{modelValue:t.value.categoryId,"onUpdate:modelValue":e[8]||(e[8]=l=>t.value.categoryId=l),style:{width:"100%"}},{default:o(()=>[(v(!0),x(T,null,F(D.value,l=>(v(),g(h,{key:l.id,label:l.prefix+l.nameZh,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),a(s,{label:"主图"},{default:o(()=>[a(Ze,{modelValue:t.value.mainImage,"onUpdate:modelValue":e[9]||(e[9]=l=>t.value.mainImage=l),"used-in":"product"},null,8,["modelValue"])]),_:1}),m("div",Se,[a(s,{label:"简介(中文)",class:"dialog-col"},{default:o(()=>[a(p,{modelValue:t.value.summaryZh,"onUpdate:modelValue":e[10]||(e[10]=l=>t.value.summaryZh=l),type:"textarea",rows:2},null,8,["modelValue"])]),_:1}),a(s,{label:"简介(英文)",class:"dialog-col"},{default:o(()=>[a(p,{modelValue:t.value.summaryEn,"onUpdate:modelValue":e[11]||(e[11]=l=>t.value.summaryEn=l),type:"textarea",rows:2},null,8,["modelValue"])]),_:1})]),a(s,{label:"详细描述(中文)"},{default:o(()=>[a(he,{modelValue:t.value.descriptionZh,"onUpdate:modelValue":e[12]||(e[12]=l=>t.value.descriptionZh=l),height:300},null,8,["modelValue"])]),_:1}),m("div",Ee,[a(s,{label:"尺寸",class:"dialog-col"},{default:o(()=>[a(p,{modelValue:t.value.sizeZh,"onUpdate:modelValue":e[13]||(e[13]=l=>t.value.sizeZh=l),placeholder:"200*90cm"},null,8,["modelValue"])]),_:1}),a(s,{label:"材质",class:"dialog-col"},{default:o(()=>[a(p,{modelValue:t.value.materialZh,"onUpdate:modelValue":e[14]||(e[14]=l=>t.value.materialZh=l),placeholder:"真皮"},null,8,["modelValue"])]),_:1})]),m("div",Ie,[a(s,{label:"最低价",class:"dialog-col"},{default:o(()=>[a(R,{modelValue:t.value.priceMin,"onUpdate:modelValue":e[15]||(e[15]=l=>t.value.priceMin=l),min:0,precision:2,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),a(s,{label:"最高价",class:"dialog-col"},{default:o(()=>[a(R,{modelValue:t.value.priceMax,"onUpdate:modelValue":e[16]||(e[16]=l=>t.value.priceMax=l),min:0,precision:2,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),m("div",Ne,[a(s,{label:"显示价格",class:"dialog-col"},{default:o(()=>[a(_,{modelValue:t.value.isShowPrice,"onUpdate:modelValue":e[17]||(e[17]=l=>t.value.isShowPrice=l),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1}),a(s,{label:"排序",class:"dialog-col"},{default:o(()=>[a(R,{modelValue:t.value.sortOrder,"onUpdate:modelValue":e[18]||(e[18]=l=>t.value.sortOrder=l),min:0},null,8,["modelValue"])]),_:1})]),m("div",$e,[a(s,{label:"热门",class:"dialog-col"},{default:o(()=>[a(_,{modelValue:t.value.isHot,"onUpdate:modelValue":e[19]||(e[19]=l=>t.value.isHot=l),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1}),a(s,{label:"新品",class:"dialog-col"},{default:o(()=>[a(_,{modelValue:t.value.isNew,"onUpdate:modelValue":e[20]||(e[20]=l=>t.value.isNew=l),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),m("div",Re,[a(s,{label:"推荐",class:"dialog-col"},{default:o(()=>[a(_,{modelValue:t.value.isRecommend,"onUpdate:modelValue":e[21]||(e[21]=l=>t.value.isRecommend=l),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1}),a(s,{label:"状态",class:"dialog-col"},{default:o(()=>[a(_,{modelValue:t.value.status,"onUpdate:modelValue":e[22]||(e[22]=l=>t.value.status=l),"active-value":1,"inactive-value":0,"active-text":"上架","inactive-text":"下架"},null,8,["modelValue"])]),_:1})])]),_:1})]),_:1},8,["modelValue","title"])])}}}),je=pe(Be,[["__scopeId","data-v-2ecd5cd2"]]);export{je as default};
|