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.1 KiB

import{g as H,B as q,c as l,m as b,H as D,a as t,l as E,F as k,r as C,t as r,p as N,q as S,K as z,x as d,y as A,o as a,d as I}from"./T3_facgV.js";import{u as P}from"./YYZWHM5Z.js";import{u as Y}from"./D7TmXHpa.js";import"./BaPL5gDJ.js";const G={class:"flex items-center justify-between mb-5"},J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},O={class:"overflow-x-auto"},Q={class:"table table-zebra"},R={key:0},W={key:1},X={class:"font-mono text-sm"},Z={class:"font-medium"},tt={class:"text-sm text-slate-500"},et={class:"text-sm"},st={key:1,class:"text-slate-300"},nt={class:"text-sm text-slate-500"},ot={class:"flex gap-1"},lt=["onClick"],at=["onClick"],it={class:"flex items-center gap-3 mb-5"},rt={class:"text-lg font-semibold text-slate-800"},dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},ut={class:"form-control mb-4"},ct={class:"form-control mb-4"},mt={class:"form-control mb-6"},bt={class:"space-y-2"},vt={key:0,class:"text-xs text-slate-400"},pt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},ft=["onClick"],xt={class:"flex gap-2 mt-2"},gt=["onKeydown"],ht={class:"flex gap-3"},_t=["disabled"],Mt=H({__name:"provider",setup(yt){const{webApi:f}=P(),{success:M,error:x,warn:F}=Y(),v=d("list"),p=d([]),g=d(!1),h=d(!1),c=d(!1),i=d([]),m=d(""),o=A({id:0,name:"",description:""});function K(s){return s?Number(s).toString(16).toUpperCase():""}function _(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function L(s){if(!s)return"-";const e=new Date(s*1e3);return e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0")+"-"+String(e.getDate()).padStart(2,"0")+" "+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")}async function y(){g.value=!0;try{const s=await f("getsolutionproviders",{});p.value=s?.providers??[]}catch(s){x(s?.message??"获取方案商列表失败"),p.value=[]}finally{g.value=!1}}function w(){v.value="list",y()}function V(s){s?(c.value=!0,o.id=s.id,o.name=s.name||"",o.description=s.description||"",i.value=_(s.contactmails)):(c.value=!1,o.id=0,o.name="",o.description="",i.value=[]),m.value="",v.value="form"}function $(){const s=m.value.trim();if(s){if(i.value.includes(s)){F("邮箱已存在");return}i.value.push(s),m.value=""}}function T(s){i.value.splice(s,1)}async function U(){h.value=!0;try{const s={provider:{name:o.name,description:o.description,contactmails:i.value.join(",")}};c.value&&(s.provider.id=Number(o.id)),await f(c.value?"updatesolutionprovider":"addsolutionprovider",s),M("保存成功"),w()}catch(s){x(s?.message??"保存失败")}finally{h.value=!1}}function j(s){window.confirm(`确定删除方案商 "${s.name}" 吗?`)&&f("delsolutionprovider",{id:s.id}).then(()=>{M("删除成功"),y()}).catch(e=>x(e?.message??"删除失败"))}return q(y),(s,e)=>(a(),l("div",null,[b(t("div",null,[t("div",G,[e[6]||(e[6]=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=>V())},"+ 新增方案商")]),t("div",J,[t("div",O,[t("table",Q,[e[9]||(e[9]=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,[g.value?(a(),l("tr",R,[...e[7]||(e[7]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):p.value.length?E("",!0):(a(),l("tr",W,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),l(k,null,C(p.value,n=>(a(),l("tr",{key:n.id},[t("td",X,r(K(n.id)),1),t("td",Z,r(n.name),1),t("td",tt,r(n.description||""),1),t("td",et,[_(n.contactmails).length?(a(!0),l(k,{key:0},C(_(n.contactmails),(u,B)=>(a(),l("span",{key:B,class:"badge badge-ghost badge-sm mr-1"},r(u),1))),128)):(a(),l("span",st,"-"))]),t("td",nt,r(L(n.createtime)),1),t("td",null,[t("div",ot,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>V(n)},"编辑",8,lt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>j(n)},"删除",8,at)])])]))),128))])])])])],512),[[D,v.value==="list"]]),b(t("div",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>w())},"← 返回列表"),t("h2",rt,r(c.value?"编辑方案商":"新增方案商"),1)]),t("div",dt,[t("form",{onSubmit:N(U,["prevent"])},[t("div",ut,[e[10]||(e[10]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"方案商名称 *")],-1)),b(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>o.name=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[S,o.name]])]),t("div",ct,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),b(t("textarea",{"onUpdate:modelValue":e[3]||(e[3]=n=>o.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[S,o.description]])]),t("div",mt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",bt,[i.value.length?E("",!0):(a(),l("p",vt,"暂无邮箱")),(a(!0),l(k,null,C(i.value,(n,u)=>(a(),l("div",{key:u,class:"flex items-center gap-2"},[t("span",pt,[e[12]||(e[12]=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)),I(" "+r(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:B=>T(u)},"×",8,ft)]))),128))]),t("div",xt,[b(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>m.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:z(N($,["prevent"]),["enter"])},null,40,gt),[[S,m.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:$},"添加")])]),t("div",ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[5]||(e[5]=n=>w())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:h.value},"保存",8,_t)])],32)])],512),[[D,v.value==="form"]])]))}});export{Mt as default};