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
11 KiB
1 lines
11 KiB
import{_ as J}from"./DPKLCcBs.js";import{g as Q,j as W,C as X,c as a,q as r,H as R,a as t,l as v,F as y,r as _,t as i,p as S,v as m,s as Y,O as Z,m as tt,x as et,b as st,y as u,z as lt,A as j,o,d as nt}from"./6O01ZZML.js";import{u as at}from"./BgasD__e.js";import{u as ot}from"./xsgK-Nup.js";const rt={class:"flex items-center justify-between mb-5"},it={class:"bg-white rounded-xl shadow-sm border border-slate-100"},dt={class:"overflow-x-auto"},ut={class:"table table-zebra"},ct={key:0},mt={key:1},pt={class:"font-mono text-sm"},bt={class:"font-medium"},vt={class:"badge badge-ghost badge-sm"},ft={class:"text-sm"},xt={class:"text-sm"},ht={key:1,class:"text-slate-300"},gt={class:"text-sm text-slate-500"},wt={class:"flex gap-1"},yt=["onClick"],_t=["onClick"],kt={class:"flex items-center gap-3 mb-5"},Ct={class:"text-lg font-semibold text-slate-800"},Nt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},At={class:"form-control mb-4"},Ut={class:"form-control mb-4"},Vt=["value"],Mt={class:"form-control mb-4"},$t={class:"form-control mb-4"},Bt={class:"form-control mb-6"},Pt={class:"space-y-2"},Lt={key:0,class:"text-xs text-slate-400"},Et={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},Rt=["onClick"],St={class:"flex gap-2 mt-2"},jt=["onKeydown"],Dt={key:0,class:"form-control mb-6 border-t border-slate-100 pt-4"},Ft=["placeholder"],Tt={class:"label-text-alt text-slate-400 mt-1"},qt={key:1,class:"form-control mb-6 border-t border-slate-100 pt-4"},zt={class:"flex items-center gap-2 cursor-pointer"},It={key:0,class:"grid grid-cols-2 gap-3 mt-3"},Kt={class:"col-span-2"},Ot={key:0,class:"col-span-2 text-xs text-amber-600"},Ht={class:"flex gap-3"},Gt=["disabled"],Jt="358030594@qq.com",te=Q({__name:"factory",setup(Qt){const{webApi:x}=at(),{success:k,error:C,warn:D}=ot(),F=W(),h=u("list"),g=u([]),w=u([]),N=u(!1),A=u(!1),c=u(!1),d=u([]),f=u(""),s=lt({id:0,brand:"",providerid:0,description:"",sharepct:0,officialChannelName:"",createAccount:!1,accountUsername:"",accountPassword:"",accountRemark:""}),B=j(()=>(s.brand.trim()||"品牌")+"官方渠道"),T=j(()=>d.value.filter(l=>l.toLowerCase()!==Jt)),U=u(null);function q(l){return((Number(l)||0)/100).toFixed(2)+"%"}function z(l){return l?Number(l).toString(16).toUpperCase():""}function V(l){return(l||"").split(",").map(e=>e.trim()).filter(Boolean)}function I(l){if(!l)return"-";const e=w.value.find(p=>p.id===l);return e?e.name:"方案商#"+l}async function K(){try{const l=await x("getsolutionproviders",{});w.value=l?.providers??[]}catch{w.value=[]}}async function M(){N.value=!0;try{await K();const l=await x("getbrands",{});g.value=l?.brands??[]}catch(l){C(l?.message??"获取品牌商列表失败"),g.value=[]}finally{N.value=!1}}function $(){h.value="list",M()}function P(l){l?(c.value=!0,s.id=l.id,s.brand=l.brand||"",s.providerid=l.providerid||0,s.description=l.description||"",s.sharepct=(Number(l.sharerate)||0)/100,d.value=V(l.contactmails)):(c.value=!1,s.id=0,s.brand="",s.providerid=0,s.description="",s.sharepct=0,d.value=[]),s.officialChannelName="",s.createAccount=!1,s.accountUsername="",s.accountPassword="",s.accountRemark="",f.value="",h.value="form"}function L(){const l=f.value.trim();if(l){if(d.value.includes(l)){D("邮箱已存在");return}d.value.push(l),f.value=""}}function O(l){d.value.splice(l,1)}async function H(){A.value=!0;try{const l={brand:{brand:s.brand,providerid:Number(s.providerid)||0,description:s.description,sharerate:Math.round((Number(s.sharepct)||0)*100),contactmails:d.value.join(",")}};c.value?l.brand.id=Number(s.id):(l.official_channel_name=s.officialChannelName.trim(),l.create_account=s.createAccount,s.createAccount&&(l.account_username=s.accountUsername.trim(),l.account_password=s.accountPassword,l.account_remark=s.accountRemark.trim()));const e=await x(c.value?"updatebrand":"addbrand",l);if(c.value)k("保存成功");else{const p=["品牌商已创建"];e?.channel?.id&&p.push(`官方渠道「${e.channel.name}」(${e.channel.id})`),k(p.join(",")),e?.account&&(U.value={title:`品牌账号「${e.account}」已创建`,username:e.account,password:e.account_password??"",mailTo:e.mail_to??"",mailError:e.mail_error??""})}$()}catch(l){C(l?.message??"保存失败")}finally{A.value=!1}}function G(l){window.confirm(`确定删除品牌商 "${l.brand}" 吗?`)&&x("delbrand",{id:l.id}).then(()=>{k("删除成功"),M()}).catch(e=>C(e?.message??"删除失败"))}return X(M),(l,e)=>{const p=J;return o(),a("div",null,[r(t("div",null,[t("div",rt,[e[14]||(e[14]=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=>P())},"+ 新增品牌商")]),t("div",it,[t("div",dt,[t("table",ut,[e[17]||(e[17]=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,"产品"),t("th",null,"操作")])],-1)),t("tbody",null,[N.value?(o(),a("tr",ct,[...e[15]||(e[15]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):g.value.length?v("",!0):(o(),a("tr",mt,[...e[16]||(e[16]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(o(!0),a(y,null,_(g.value,n=>(o(),a("tr",{key:n.id},[t("td",pt,i(z(n.id)),1),t("td",bt,i(n.brand),1),t("td",null,[t("span",vt,i(I(n.providerid)),1)]),t("td",ft,i(q(n.sharerate)),1),t("td",xt,[V(n.contactmails).length?(o(!0),a(y,{key:0},_(V(n.contactmails),(b,E)=>(o(),a("span",{key:E,class:"badge badge-ghost badge-sm mr-1"},i(b),1))),128)):(o(),a("span",ht,"-"))]),t("td",gt,i(n.productlists||""),1),t("td",null,[t("div",wt,[t("button",{class:"btn btn-ghost btn-xs",onClick:b=>P(n)},"编辑",8,yt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:b=>G(n)},"删除",8,_t)])])]))),128))])])])])],512),[[R,h.value==="list"]]),r(t("div",null,[t("div",kt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>$())},"← 返回列表"),t("h2",Ct,i(c.value?"编辑品牌商":"新增品牌商"),1)]),t("div",Nt,[t("form",{onSubmit:S(H,["prevent"])},[t("div",At,[e[18]||(e[18]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌名称 *")],-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>s.brand=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[m,s.brand]])]),t("div",Ut,[e[20]||(e[20]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"归属方案商")],-1)),r(t("select",{"onUpdate:modelValue":e[3]||(e[3]=n=>s.providerid=n),class:"select select-bordered w-full"},[e[19]||(e[19]=t("option",{value:0},"请选择方案商",-1)),(o(!0),a(y,null,_(w.value,n=>(o(),a("option",{key:n.id,value:n.id},i(n.name),9,Vt))),128))],512),[[Y,s.providerid,void 0,{number:!0}]])]),t("div",Mt,[e[21]||(e[21]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"分成比例(%)")],-1)),r(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>s.sharepct=n),type:"number",step:"0.01",min:"0",max:"100",class:"input input-bordered w-full"},null,512),[[m,s.sharepct,void 0,{number:!0}]]),e[22]||(e[22]=t("span",{class:"label-text-alt text-slate-400 mt-1"},"平台从订单实付里分给该品牌商的总提成;其名下渠道商再从这份里切自己的比例。",-1))]),t("div",$t,[e[23]||(e[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),r(t("textarea",{"onUpdate:modelValue":e[5]||(e[5]=n=>s.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[m,s.description]])]),t("div",Bt,[e[25]||(e[25]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",Pt,[d.value.length?v("",!0):(o(),a("p",Lt,"暂无邮箱")),(o(!0),a(y,null,_(d.value,(n,b)=>(o(),a("div",{key:b,class:"flex items-center gap-2"},[t("span",Et,[e[24]||(e[24]=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)),nt(" "+i(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:E=>O(b)},"×",8,Rt)]))),128))]),t("div",St,[r(t("input",{"onUpdate:modelValue":e[6]||(e[6]=n=>f.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:Z(S(L,["prevent"]),["enter"])},null,40,jt),[[m,f.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:L},"添加")])]),c.value?v("",!0):(o(),a("div",Dt,[e[26]||(e[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌官方渠道")],-1)),r(t("input",{"onUpdate:modelValue":e[7]||(e[7]=n=>s.officialChannelName=n),type:"text",class:"input input-bordered w-full",placeholder:B.value},null,8,Ft),[[m,s.officialChannelName]]),t("span",Tt," 新建品牌商时自动创建一条该品牌自己的渠道(直接启用、分成 0%、不创建渠道账号),用于品牌直销的授权码归属;留空则叫「"+i(B.value)+"」。 ",1)])),!c.value&&tt(F).isAdmin?(o(),a("div",qt,[t("label",zt,[r(t("input",{"onUpdate:modelValue":e[8]||(e[8]=n=>s.createAccount=n),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[et,s.createAccount]]),e[27]||(e[27]=t("span",{class:"label-text font-medium"},"同时创建品牌账号",-1))]),e[31]||(e[31]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 建一个绑定本品牌商的「品牌商」角色登录账号,可见本品牌及名下全部渠道商的数据。 用户名/密码留空则自动生成,创建后凭据会邮件发给上面填的品牌商联系邮箱。 ",-1)),s.createAccount?(o(),a("div",It,[t("div",null,[e[28]||(e[28]=t("label",{class:"text-xs text-slate-500"},"登录用户名",-1)),r(t("input",{"onUpdate:modelValue":e[9]||(e[9]=n=>s.accountUsername=n),type:"text",class:"input input-bordered input-sm w-full",placeholder:"留空自动生成,如 Brand-A001",autocomplete:"off"},null,512),[[m,s.accountUsername]])]),t("div",null,[e[29]||(e[29]=t("label",{class:"text-xs text-slate-500"},"登录密码",-1)),r(t("input",{"onUpdate:modelValue":e[10]||(e[10]=n=>s.accountPassword=n),type:"text",class:"input input-bordered input-sm w-full font-mono",placeholder:"留空自动生成 12 位随机密码",autocomplete:"off"},null,512),[[m,s.accountPassword]])]),t("div",Kt,[e[30]||(e[30]=t("label",{class:"text-xs text-slate-500"},"备注",-1)),r(t("input",{"onUpdate:modelValue":e[11]||(e[11]=n=>s.accountRemark=n),type:"text",class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[m,s.accountRemark]])]),T.value.length?v("",!0):(o(),a("p",Ot," 当前没有填品牌商自己的联系邮箱(平台默认邮箱不算),凭据将无法邮件送达,只会在创建后弹窗显示一次。 "))])):v("",!0)])):v("",!0),t("div",Ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[12]||(e[12]=n=>$())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:A.value},"保存",8,Gt)])],32)])],512),[[R,h.value==="form"]]),st(p,{info:U.value,onClose:e[13]||(e[13]=n=>U.value=null)},null,8,["info"])])}}});export{te as default};
|
|
|