import{g as W,j as X,z as P,C as Z,c as a,a as e,d as m,l as r,q as F,v as tt,m as L,s as V,F as N,r as U,A as T,y,o as l,t as i,n as z}from"./6O01ZZML.js";import{u as et}from"./BgasD__e.js";import{u as st}from"./xsgK-Nup.js";const nt={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},at={key:0,class:"flex gap-2"},lt=["disabled"],ot={key:0,class:"loading loading-spinner loading-xs"},it=["disabled"],dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4 mb-4"},rt={class:"flex flex-wrap items-end gap-3"},ut={class:"form-control"},ct={key:0,class:"form-control"},bt=["value"],mt={key:1,class:"form-control"},xt=["value"],pt={class:"form-control"},ht={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-4"},gt={class:"text-xs text-slate-500"},ft={class:"bg-white rounded-xl shadow-sm border border-slate-100"},vt={class:"overflow-x-auto"},_t={class:"table table-zebra text-sm"},yt={key:0},wt={key:0},kt=["colspan"],Ct={key:1},St=["colspan"],Ft={class:"font-mono"},Nt={class:"text-right"},Ut={class:"text-right font-medium"},At={class:"text-right text-slate-500"},Mt={class:"text-right text-emerald-600 font-medium"},Lt={class:"text-right text-slate-500"},Vt={class:"text-right text-indigo-600 font-medium"},Tt={class:"text-right text-slate-500"},jt={key:0,class:"text-[11px] text-slate-400 mt-0.5"},Dt={key:0},$t={class:"flex flex-wrap gap-1"},Bt=["onClick"],Rt=["onClick"],Et=["onClick"],qt=W({__name:"settlements",setup(Pt){const{webApi:p}=et(),{success:j,error:w}=st(),k=X(),h=T(()=>k.isAdmin),x=y([]),g=y([]),f=y([]),A=y(!1),C=y(!1),u=P({base:0,brandNet:0,channel:0,platform:0}),o=P({month:q(),brandid:0,channelid:"",status:-1}),O=T(()=>o.brandid?f.value.filter(s=>s.brandid===o.brandid):f.value),I=T(()=>[{label:"结算基数(订单实付)",value:u.base,cls:"text-slate-800"},{label:"品牌商实得",value:u.brandNet,cls:"text-emerald-600"},{label:"渠道商分成",value:u.channel,cls:"text-indigo-600"},{label:"平台留存",value:u.platform,cls:"text-slate-600"}]);function q(){const s=new Date;return s.setDate(1),s.setMonth(s.getMonth()-1),s.getFullYear()+"-"+String(s.getMonth()+1).padStart(2,"0")}function D(s){const t=(s||"").split("-");return t.length!==2?0:parseInt(t[0])*100+parseInt(t[1])}function $(s){return s?Math.floor(s/100)+"-"+String(s%100).padStart(2,"0"):"-"}function v(s){return"¥"+((Number(s)||0)/100).toFixed(2)}function S(s){return((Number(s)||0)/100).toFixed(2)+"%"}function B(s){if(!s)return"未归属品牌商";const t=g.value.find(n=>n.id===s);return t?t.brand:"品牌商#"+Number(s).toString(16).toUpperCase()}function R(s){if(!s)return"未分配渠道";const t=f.value.find(n=>n.id===s);return t?t.name+" ("+t.id+")":s}const Y={0:"草稿",1:"已确认",2:"已支付"},G={0:"badge-ghost",1:"badge-warning",2:"badge-success"};function E(s){return Y[s]??String(s)}function H(s){return G[s]??"badge-ghost"}async function J(){try{const[s,t]=await Promise.all([p("getbrands",{}),p("getchannels",{status:-1})]);g.value=s?.brands??[],f.value=t?.channels??[]}catch{g.value=[],f.value=[]}}async function c(){A.value=!0;try{g.value.length||await J();const s=await p("getsettlements",{period:D(o.month),brandid:Number(o.brandid)||0,channelid:o.channelid,status:Number(o.status)});x.value=s?.items??[],u.base=s?.total_base??0,u.brandNet=s?.total_brand_net??0,u.channel=s?.total_channel??0,u.platform=s?.total_platform??0}catch(s){w(s?.message??"获取结算数据失败"),x.value=[]}finally{A.value=!1}}async function K(){const s=D(o.month);if(!s){w("请选择结算月");return}if(window.confirm(`确定生成/重算 ${o.month} 的结算单吗?已确认的行会被跳过。`)){C.value=!0;try{const t=await p("gensettlement",{period:s});j(`已生成 ${t?.rows??0} 行,跳过(已确认)${t?.skipped??0} 行`),c()}catch(t){w(t?.message??"生成失败")}finally{C.value=!1}}}async function M(s,t){const n={0:"退回草稿",1:"确认",2:"标记已支付"};if(window.confirm(`确定${n[t]}这一行结算吗?`))try{await p("confirmsettlement",{period:s.period,brandid:s.brandid,channelid:s.channelid,status:t,remark:s.remark||""}),j(n[t]+"成功"),c()}catch(_){w(_?.message??"操作失败")}}function Q(){const s=["结算月","品牌商","渠道商","订单数","结算基数(元)","品牌比例","品牌总提成(元)","渠道比例","渠道分成(元)","品牌实得(元)","平台留存(元)","状态"],t=x.value.map(d=>[$(d.period),B(d.brandid),R(d.channelid),d.order_count,(d.base_amount/100).toFixed(2),S(d.brand_rate),(d.brand_gross/100).toFixed(2),S(d.channel_rate),(d.channel_amount/100).toFixed(2),(d.brand_net/100).toFixed(2),(d.platform_amount/100).toFixed(2),E(d.status)]),n=[s.join(",")].concat(t.map(d=>d.join(","))).join(` `),_=new Blob(["\uFEFF"+n],{type:"text/csv;charset=utf-8;"}),b=document.createElement("a");b.href=URL.createObjectURL(_),b.download="月结算_"+o.month+".csv",b.click(),URL.revokeObjectURL(b.href)}return Z(c),(s,t)=>(l(),a("div",null,[e("div",nt,[t[5]||(t[5]=e("h2",{class:"text-lg font-semibold text-slate-800"},[m(" 月结算"),e("span",{class:"text-xs text-slate-400 font-normal ml-2"},"按订单实付金额分成,渠道商从品牌商那份里再切")],-1)),h.value?(l(),a("div",at,[e("button",{class:"btn btn-primary btn-sm text-white",disabled:C.value,onClick:K},[C.value?(l(),a("span",ot)):r("",!0),t[4]||(t[4]=m("生成 / 重算本月账 ",-1))],8,lt),e("button",{class:"btn btn-ghost btn-sm",disabled:!x.value.length,onClick:Q},"导出 CSV",8,it)])):r("",!0)]),e("div",dt,[e("div",rt,[e("div",ut,[t[6]||(t[6]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"结算月")],-1)),F(e("input",{"onUpdate:modelValue":t[0]||(t[0]=n=>o.month=n),type:"month",class:"input input-bordered input-sm w-44",onChange:c},null,544),[[tt,o.month]])]),!L(k).isBrandAccount&&!L(k).isDealer?(l(),a("div",ct,[t[8]||(t[8]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"品牌商")],-1)),F(e("select",{"onUpdate:modelValue":t[1]||(t[1]=n=>o.brandid=n),class:"select select-bordered select-sm w-48",onChange:c},[t[7]||(t[7]=e("option",{value:0},"全部品牌商",-1)),(l(!0),a(N,null,U(g.value,n=>(l(),a("option",{key:n.id,value:n.id},i(n.brand),9,bt))),128))],544),[[V,o.brandid,void 0,{number:!0}]])])):r("",!0),L(k).isDealer?r("",!0):(l(),a("div",mt,[t[10]||(t[10]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"渠道商")],-1)),F(e("select",{"onUpdate:modelValue":t[2]||(t[2]=n=>o.channelid=n),class:"select select-bordered select-sm w-52",onChange:c},[t[9]||(t[9]=e("option",{value:""},"全部渠道商",-1)),(l(!0),a(N,null,U(O.value,n=>(l(),a("option",{key:n.id,value:n.id},i(n.name)+" ("+i(n.id)+")",9,xt))),128))],544),[[V,o.channelid]])])),e("div",pt,[t[12]||(t[12]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs text-slate-500"},"状态")],-1)),F(e("select",{"onUpdate:modelValue":t[3]||(t[3]=n=>o.status=n),class:"select select-bordered select-sm w-32",onChange:c},[...t[11]||(t[11]=[e("option",{value:-1},"全部状态",-1),e("option",{value:0},"草稿",-1),e("option",{value:1},"已确认",-1),e("option",{value:2},"已支付",-1)])],544),[[V,o.status,void 0,{number:!0}]])]),e("button",{class:"btn btn-sm btn-primary text-white",onClick:c},"查询")])]),e("div",ht,[(l(!0),a(N,null,U(I.value,n=>(l(),a("div",{key:n.label,class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4"},[e("div",gt,i(n.label),1),e("div",{class:z(["text-xl font-semibold mt-1",n.cls])},i(v(n.value)),3)]))),128))]),e("div",ft,[e("div",vt,[e("table",_t,[e("thead",null,[e("tr",null,[t[13]||(t[13]=e("th",null,"结算月",-1)),t[14]||(t[14]=e("th",null,"品牌商",-1)),t[15]||(t[15]=e("th",null,"渠道商",-1)),t[16]||(t[16]=e("th",{class:"text-right"},"订单数",-1)),t[17]||(t[17]=e("th",{class:"text-right"},"结算基数",-1)),t[18]||(t[18]=e("th",{class:"text-right"},"品牌比例",-1)),t[19]||(t[19]=e("th",{class:"text-right"},"品牌实得",-1)),t[20]||(t[20]=e("th",{class:"text-right"},"渠道比例",-1)),t[21]||(t[21]=e("th",{class:"text-right"},"渠道分成",-1)),t[22]||(t[22]=e("th",{class:"text-right"},"平台留存",-1)),t[23]||(t[23]=e("th",null,"状态",-1)),h.value?(l(),a("th",yt,"操作")):r("",!0)])]),e("tbody",null,[A.value?(l(),a("tr",wt,[e("td",{colspan:h.value?12:11,class:"text-center py-8"},[...t[24]||(t[24]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])],8,kt)])):x.value.length?(l(!0),a(N,{key:2},U(x.value,(n,_)=>(l(),a("tr",{key:_},[e("td",Ft,i($(n.period)),1),e("td",null,i(B(n.brandid)),1),e("td",null,i(R(n.channelid)),1),e("td",Nt,i(n.order_count),1),e("td",Ut,i(v(n.base_amount)),1),e("td",At,i(S(n.brand_rate)),1),e("td",Mt,i(v(n.brand_net)),1),e("td",Lt,i(S(n.channel_rate)),1),e("td",Vt,i(v(n.channel_amount)),1),e("td",Tt,i(v(n.platform_amount)),1),e("td",null,[e("span",{class:z(["badge badge-sm",H(n.status)])},i(E(n.status)),3),n.confirm_account?(l(),a("div",jt,i(n.confirm_account),1)):r("",!0)]),h.value?(l(),a("td",Dt,[e("div",$t,[n.status===0?(l(),a("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:b=>M(n,1)},"确认",8,Bt)):r("",!0),n.status===1?(l(),a("button",{key:1,class:"btn btn-ghost btn-xs text-indigo-600",onClick:b=>M(n,2)},"标记已付",8,Rt)):r("",!0),n.status>0?(l(),a("button",{key:2,class:"btn btn-ghost btn-xs text-amber-600",onClick:b=>M(n,0)},"退回草稿",8,Et)):r("",!0)])])):r("",!0)]))),128)):(l(),a("tr",Ct,[e("td",{colspan:h.value?12:11,class:"text-center text-slate-400 py-8"},"该月暂无结算数据",8,St)]))])])])]),t[25]||(t[25]=e("p",{class:"text-xs text-slate-400 mt-3 leading-relaxed"},[m(" 结算基数 = 该月"),e("b",null,"已支付"),m("订单实付金额合计,订单按下单时冻结的「来源设备」归属到品牌商与渠道商。"),e("br"),m(" 品牌商总提成 = 基数 × 品牌比例;渠道分成 = 品牌总提成 × 渠道比例;品牌实得 = 品牌总提成 − 渠道分成;平台留存 = 基数 − 品牌总提成。"),e("br"),m(" 比例在生成结算单时快照冻结,之后调整比例不影响已生成的月份;"),e("b",null,"已确认"),m("的行重算时会跳过,需先退回草稿才能重算。 ")],-1))]))}});export{qt as default};