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 lines
6.6 KiB
1 lines
6.6 KiB
import{g as A,B as H,c as o,p as c,H as S,a as t,l as U,F as g,r as h,t as d,m as D,v as V,q as I,O,x as r,y as P,o as a,d as G}from"./Dv-LAQo6.js";import{u as J}from"./mz7Huk5H.js";import{u as Q}from"./D7SVvy69.js";import"./D0vUT4uH.js";const R={class:"flex items-center justify-between mb-5"},W={class:"bg-white rounded-xl shadow-sm border border-slate-100"},X={class:"overflow-x-auto"},Y={class:"table table-zebra"},Z={key:0},tt={key:1},et={class:"font-mono text-sm"},st={class:"font-medium"},nt={class:"badge badge-ghost badge-sm"},lt={class:"text-sm"},ot={key:1,class:"text-slate-300"},at={class:"text-sm text-slate-500"},it={class:"flex gap-1"},dt=["onClick"],rt=["onClick"],ut={class:"flex items-center gap-3 mb-5"},ct={class:"text-lg font-semibold text-slate-800"},mt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},vt={class:"form-control mb-4"},bt={class:"form-control mb-4"},pt=["value"],ft={class:"form-control mb-4"},xt={class:"form-control mb-6"},gt={class:"space-y-2"},ht={key:0,class:"text-xs text-slate-400"},yt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},_t=["onClick"],wt={class:"flex gap-2 mt-2"},kt=["onKeydown"],Ct={class:"flex gap-3"},Bt=["disabled"],St=A({__name:"factory",setup(Vt){const{webApi:b}=J(),{success:N,error:y,warn:L}=Q(),p=r("list"),f=r([]),x=r([]),_=r(!1),w=r(!1),m=r(!1),i=r([]),v=r(""),l=P({id:0,brand:"",providerid:0,description:""});function j(s){return s?Number(s).toString(16).toUpperCase():""}function k(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function F(s){if(!s)return"-";const e=x.value.find(n=>n.id===s);return e?e.name:"方案商#"+s}async function K(){try{const s=await b("getsolutionproviders",{});x.value=s?.providers??[]}catch{x.value=[]}}async function C(){_.value=!0;try{await K();const s=await b("getbrands",{});f.value=s?.brands??[]}catch(s){y(s?.message??"获取品牌商列表失败"),f.value=[]}finally{_.value=!1}}function B(){p.value="list",C()}function $(s){s?(m.value=!0,l.id=s.id,l.brand=s.brand||"",l.providerid=s.providerid||0,l.description=s.description||"",i.value=k(s.contactmails)):(m.value=!1,l.id=0,l.brand="",l.providerid=0,l.description="",i.value=[]),v.value="",p.value="form"}function M(){const s=v.value.trim();if(s){if(i.value.includes(s)){L("邮箱已存在");return}i.value.push(s),v.value=""}}function T(s){i.value.splice(s,1)}async function q(){w.value=!0;try{const s={brand:{brand:l.brand,providerid:Number(l.providerid)||0,description:l.description,contactmails:i.value.join(",")}};m.value&&(s.brand.id=Number(l.id)),await b(m.value?"updatebrand":"addbrand",s),N("保存成功"),B()}catch(s){y(s?.message??"保存失败")}finally{w.value=!1}}function z(s){window.confirm(`确定删除品牌商 "${s.brand}" 吗?`)&&b("delbrand",{id:s.id}).then(()=>{N("删除成功"),C()}).catch(e=>y(e?.message??"删除失败"))}return H(C),(s,e)=>(a(),o("div",null,[c(t("div",null,[t("div",R,[e[7]||(e[7]=t("h2",{class:"text-lg font-semibold text-slate-800"},"品牌商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>$())},"+ 新增品牌商")]),t("div",W,[t("div",X,[t("table",Y,[e[10]||(e[10]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"品牌名称"),t("th",null,"归属方案商"),t("th",null,"联系邮箱"),t("th",null,"产品"),t("th",null,"操作")])],-1)),t("tbody",null,[_.value?(a(),o("tr",Z,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):f.value.length?U("",!0):(a(),o("tr",tt,[...e[9]||(e[9]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),o(g,null,h(f.value,n=>(a(),o("tr",{key:n.id},[t("td",et,d(j(n.id)),1),t("td",st,d(n.brand),1),t("td",null,[t("span",nt,d(F(n.providerid)),1)]),t("td",lt,[k(n.contactmails).length?(a(!0),o(g,{key:0},h(k(n.contactmails),(u,E)=>(a(),o("span",{key:E,class:"badge badge-ghost badge-sm mr-1"},d(u),1))),128)):(a(),o("span",ot,"-"))]),t("td",at,d(n.productlists||""),1),t("td",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>$(n)},"编辑",8,dt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>z(n)},"删除",8,rt)])])]))),128))])])])])],512),[[S,p.value==="list"]]),c(t("div",null,[t("div",ut,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>B())},"← 返回列表"),t("h2",ct,d(m.value?"编辑品牌商":"新增品牌商"),1)]),t("div",mt,[t("form",{onSubmit:D(q,["prevent"])},[t("div",vt,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌名称 *")],-1)),c(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>l.brand=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[V,l.brand]])]),t("div",bt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"归属方案商")],-1)),c(t("select",{"onUpdate:modelValue":e[3]||(e[3]=n=>l.providerid=n),class:"select select-bordered w-full"},[e[12]||(e[12]=t("option",{value:0},"请选择方案商",-1)),(a(!0),o(g,null,h(x.value,n=>(a(),o("option",{key:n.id,value:n.id},d(n.name),9,pt))),128))],512),[[I,l.providerid,void 0,{number:!0}]])]),t("div",ft,[e[14]||(e[14]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),c(t("textarea",{"onUpdate:modelValue":e[4]||(e[4]=n=>l.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[V,l.description]])]),t("div",xt,[e[16]||(e[16]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",gt,[i.value.length?U("",!0):(a(),o("p",ht,"暂无邮箱")),(a(!0),o(g,null,h(i.value,(n,u)=>(a(),o("div",{key:u,class:"flex items-center gap-2"},[t("span",yt,[e[15]||(e[15]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),G(" "+d(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:E=>T(u)},"×",8,_t)]))),128))]),t("div",wt,[c(t("input",{"onUpdate:modelValue":e[5]||(e[5]=n=>v.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:O(D(M,["prevent"]),["enter"])},null,40,kt),[[V,v.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:M},"添加")])]),t("div",Ct,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[6]||(e[6]=n=>B())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:w.value},"保存",8,Bt)])],32)])],512),[[S,p.value==="form"]])]))}});export{St as default};
|
|
|