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
12 KiB
1 lines
12 KiB
import{g as J,j as Q,B as R,c as a,p as u,H as M,a as t,G as x,l as i,F as f,r as D,q as B,O as W,v as y,d as F,t as r,m as X,z as Z,x as g,y as L,o,n as tt}from"./AL6uUoB7.js";import{u as et}from"./BgfmgSoF.js";import{u as st}from"./D_urMdl7.js";import"./mydnAiU4.js";const nt={class:"flex items-center justify-between mb-5"},lt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-4"},at={class:"flex flex-wrap items-end gap-3"},ot={key:0,class:"form-control"},it=["value"],dt={class:"form-control"},rt={class:"form-control"},ut={class:"bg-white rounded-xl shadow-sm border border-slate-100"},bt={class:"overflow-x-auto"},mt={class:"table table-zebra"},ct={key:0},pt={key:1},vt={class:"font-mono text-sm font-semibold"},xt={class:"font-medium"},ft={class:"badge badge-ghost badge-sm"},yt={class:"text-sm"},gt={class:"text-sm text-slate-500"},kt={key:0},wt={key:1,class:"text-xs text-slate-400"},_t={key:2,class:"text-slate-300"},Ct={key:0,class:"text-xs text-slate-400 mt-1"},ht={class:"text-sm text-slate-500"},$t={class:"flex flex-wrap gap-1"},St=["onClick"],At=["onClick"],Nt=["onClick"],Ut=["onClick"],Vt=["onClick"],Dt={class:"text-xs text-slate-400 mt-3"},Bt={class:"flex items-center gap-3 mb-5"},Tt={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"},Ft={key:0,class:"form-control mb-4"},Lt=["value"],qt={class:"form-control mb-4"},zt={key:1,class:"form-control mb-4"},Et=["disabled"],It=["value"],jt={key:0,class:"label-text-alt text-slate-400 mt-1"},Ht={class:"form-control mb-4"},Kt=["disabled"],Gt={class:"form-control mb-4"},Ot={class:"form-control mb-4"},Pt={class:"form-control mb-6"},Yt={class:"flex gap-3"},Jt=["disabled"],Qt={key:2,class:"text-xs text-amber-600 mt-3"},ee=J({__name:"dealers",setup(Rt){const{webApi:k}=et(),{success:S,error:w}=st(),p=Q(),_=Z(()=>p.isAdmin),C=g("list"),h=g([]),v=g([]),A=g(!1),N=g(!1),b=g(!1),d=L({brandid:0,status:-1,keyword:""}),l=L({id:"",name:"",brandid:0,sharepct:0,contact:"",contactmails:"",remark:""}),q={0:"待审核",1:"启用",2:"停用",3:"驳回"},z={0:"badge-warning",1:"badge-success",2:"badge-ghost",3:"badge-error"};function E(n){return q[n]??String(n)}function I(n){return z[n]??"badge-ghost"}function j(n){return((Number(n)||0)/100).toFixed(2)+"%"}function H(n){const e=v.value.find(s=>s.id===n);return e?e.brand:n?"品牌商#"+Number(n).toString(16).toUpperCase():"-"}function K(n){if(!n)return"-";const e=new Date(n*1e3),s=c=>("0"+c).slice(-2);return`${e.getFullYear()}-${s(e.getMonth()+1)}-${s(e.getDate())} ${s(e.getHours())}:${s(e.getMinutes())}`}async function G(){try{const n=await k("getbrands",{});v.value=n?.brands??[]}catch{v.value=[]}}async function m(){A.value=!0;try{v.value.length||await G();const n=await k("getchannels",{brandid:Number(d.brandid)||0,status:Number(d.status),keyword:d.keyword.trim()});h.value=n?.channels??[]}catch(n){w(n?.message??"获取渠道商列表失败"),h.value=[]}finally{A.value=!1}}function O(){d.brandid=0,d.status=-1,d.keyword="",m()}function U(){C.value="list",m()}function T(n){n?(b.value=!0,l.id=n.id,l.name=n.name||"",l.brandid=n.brandid||0,l.sharepct=(Number(n.sharerate)||0)/100,l.contact=n.contact||"",l.contactmails=n.contactmails||"",l.remark=n.remark||""):(b.value=!1,l.id="",l.name="",l.brandid=Number(d.brandid)||0,l.sharepct=0,l.contact="",l.contactmails="",l.remark=""),C.value="form"}async function P(){if(!l.brandid&&!p.isBrandAccount){w("请选择所属品牌商");return}N.value=!0;try{const n={name:l.name.trim(),brandid:Number(l.brandid)||0,sharerate:Math.round((Number(l.sharepct)||0)*100),contact:l.contact,contactmails:l.contactmails,remark:l.remark};b.value&&(n.id=l.id),await k(b.value?"updatechannel":"addchannel",{channel:n}),S(b.value?"保存成功":_.value?"新增成功":"已提交,等待审核"),U()}catch(n){w(n?.message??"保存失败")}finally{N.value=!1}}async function V(n,e){const s={1:n.status===0?"通过":"启用",2:"停用",3:"驳回"};let c="";if(e===3){const $=window.prompt(`驳回渠道商 "${n.name}" 的原因:`,"");if($===null)return;c=$}else if(!window.confirm(`确定${s[e]}渠道商 "${n.name}" 吗?`))return;try{await k("auditchannel",{id:n.id,status:e,auditremark:c}),S(s[e]+"成功"),m()}catch($){w($?.message??"操作失败")}}function Y(n){window.confirm(`确定删除渠道商 "${n.name}" 吗?已有生产批次的渠道商不能删除。`)&&k("delchannel",{id:n.id}).then(()=>{S("删除成功"),m()}).catch(e=>w(e?.message??"删除失败"))}return R(m),(n,e)=>(o(),a("div",null,[u(t("div",null,[t("div",nt,[e[12]||(e[12]=t("h2",{class:"text-lg font-semibold text-slate-800"},"渠道商列表",-1)),x(p).isDealer?i("",!0):(o(),a("button",{key:0,class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=s=>T())},"+ 新增渠道商"))]),t("div",lt,[t("div",at,[!x(p).isBrandAccount&&!x(p).isDealer?(o(),a("div",ot,[e[14]||(e[14]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"品牌商")],-1)),u(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>d.brandid=s),class:"select select-bordered select-sm w-48",onChange:m},[e[13]||(e[13]=t("option",{value:0},"全部品牌商",-1)),(o(!0),a(f,null,D(v.value,s=>(o(),a("option",{key:s.id,value:s.id},r(s.brand),9,it))),128))],544),[[B,d.brandid,void 0,{number:!0}]])])):i("",!0),t("div",dt,[e[16]||(e[16]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"状态")],-1)),u(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>d.status=s),class:"select select-bordered select-sm w-36",onChange:m},[...e[15]||(e[15]=[t("option",{value:-1},"全部状态",-1),t("option",{value:0},"待审核",-1),t("option",{value:1},"启用",-1),t("option",{value:2},"停用",-1),t("option",{value:3},"驳回",-1)])],544),[[B,d.status,void 0,{number:!0}]])]),t("div",rt,[e[17]||(e[17]=t("label",{class:"label py-1"},[t("span",{class:"label-text text-xs text-slate-500"},"搜索")],-1)),u(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>d.keyword=s),type:"text",class:"input input-bordered input-sm w-52",placeholder:"名称 / 渠道商ID",onKeydown:W(m,["enter"])},null,544),[[y,d.keyword]])]),t("button",{class:"btn btn-sm btn-primary text-white",onClick:m},"查询"),t("button",{class:"btn btn-sm btn-ghost",onClick:O},"重置")])]),t("div",ut,[t("div",bt,[t("table",mt,[e[20]||(e[20]=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,"创建时间"),t("th",null,"操作")])],-1)),t("tbody",null,[A.value?(o(),a("tr",ct,[...e[18]||(e[18]=[t("td",{colspan:"8",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):h.value.length?i("",!0):(o(),a("tr",pt,[...e[19]||(e[19]=[t("td",{colspan:"8",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(o(!0),a(f,null,D(h.value,s=>(o(),a("tr",{key:s.id},[t("td",vt,r(s.id),1),t("td",xt,r(s.name),1),t("td",null,[t("span",ft,r(H(s.brandid)),1)]),t("td",yt,r(j(s.sharerate)),1),t("td",gt,[s.contact?(o(),a("div",kt,r(s.contact),1)):i("",!0),s.contactmails?(o(),a("div",wt,r(s.contactmails),1)):i("",!0),!s.contact&&!s.contactmails?(o(),a("span",_t,"-")):i("",!0)]),t("td",null,[t("span",{class:tt(["badge badge-sm",I(s.status)])},r(E(s.status)),3),s.status===3&&s.auditremark?(o(),a("div",Ct,r(s.auditremark),1)):i("",!0)]),t("td",ht,r(K(s.createtime)),1),t("td",null,[t("div",$t,[t("button",{class:"btn btn-ghost btn-xs",onClick:c=>T(s)},"编辑",8,St),_.value?(o(),a(f,{key:0},[s.status!==1?(o(),a("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:c=>V(s,1)},r(s.status===0?"通过":"启用"),9,At)):i("",!0),s.status===1?(o(),a("button",{key:1,class:"btn btn-ghost btn-xs text-amber-600",onClick:c=>V(s,2)},"停用",8,Nt)):i("",!0),s.status===0?(o(),a("button",{key:2,class:"btn btn-ghost btn-xs text-red-500",onClick:c=>V(s,3)},"驳回",8,Ut)):i("",!0)],64)):i("",!0),x(p).isDealer?i("",!0):(o(),a("button",{key:1,class:"btn btn-ghost btn-xs text-red-500",onClick:c=>Y(s)},"删除",8,Vt))])])]))),128))])])])]),t("p",Dt,[x(p).isBrandAccount?(o(),a(f,{key:0},[F(" 这里只显示贵品牌商名下的渠道商。新增后为「待审核」,需平台审核通过(状态=启用)才能用于生产授权码;分成比例由平台设置。 ")],64)):(o(),a(f,{key:1},[F(" 渠道商新增后需超管/管理员审核通过(状态=启用)才能用于生产授权码;已有生产批次的渠道商不能删除,只能停用。 ")],64))])],512),[[M,C.value==="list"]]),u(t("div",null,[t("div",Bt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[4]||(e[4]=s=>U())},"← 返回列表"),t("h2",Tt,r(b.value?"编辑渠道商":"新增渠道商"),1)]),t("div",Mt,[t("form",{onSubmit:X(P,["prevent"])},[b.value?(o(),a("div",Ft,[e[21]||(e[21]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"渠道商ID")],-1)),t("input",{value:l.id,type:"text",class:"input input-bordered w-full font-mono",disabled:""},null,8,Lt),e[22]||(e[22]=t("span",{class:"label-text-alt text-slate-400 mt-1"},"短码由系统生成,创建后不可修改",-1))])):i("",!0),t("div",qt,[e[23]||(e[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"渠道商名称 *")],-1)),u(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>l.name=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[y,l.name]])]),x(p).isBrandAccount?i("",!0):(o(),a("div",zt,[e[25]||(e[25]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"所属品牌商 *")],-1)),u(t("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>l.brandid=s),class:"select select-bordered w-full",disabled:b.value,required:""},[e[24]||(e[24]=t("option",{value:0},"请选择品牌商",-1)),(o(!0),a(f,null,D(v.value,s=>(o(),a("option",{key:s.id,value:s.id},r(s.brand),9,It))),128))],8,Et),[[B,l.brandid,void 0,{number:!0}]]),b.value?(o(),a("span",jt,"归属品牌商创建后不可修改")):i("",!0)])),t("div",Ht,[e[26]||(e[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"分成比例(%)")],-1)),u(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>l.sharepct=s),type:"number",step:"0.01",min:"0",max:"100",class:"input input-bordered w-full",disabled:!_.value},null,8,Kt),[[y,l.sharepct,void 0,{number:!0}]]),e[27]||(e[27]=t("span",{class:"label-text-alt text-slate-400 mt-1"}," 从所属品牌商的分成里再切;仅超管/管理员可设置。 ",-1))]),t("div",Gt,[e[28]||(e[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系人 / 电话")],-1)),u(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>l.contact=s),type:"text",class:"input input-bordered w-full"},null,512),[[y,l.contact]])]),t("div",Ot,[e[29]||(e[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),u(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>l.contactmails=s),type:"text",class:"input input-bordered w-full",placeholder:"多个邮箱用逗号分隔"},null,512),[[y,l.contactmails]])]),t("div",Pt,[e[30]||(e[30]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"备注")],-1)),u(t("textarea",{"onUpdate:modelValue":e[10]||(e[10]=s=>l.remark=s),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[y,l.remark]])]),t("div",Yt,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[11]||(e[11]=s=>U())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:N.value},"保存",8,Jt)]),!b.value&&!_.value?(o(),a("p",Qt," 提交后为「待审核」状态,须超管/管理员通过后才能用于生产。 ")):i("",!0)],32)])],512),[[M,C.value==="form"]])]))}});export{ee as default};
|
|
|