import{o as e,t}from"./request-xrnk7ZJV.js";import{Pr as n,t as r}from"./jsx-runtime-OfKoVykY.js";import{t as i}from"./typography-C81dpVAv.js";import{t as a}from"./table-DgVv7_C-.js";import{t as o}from"./button-DsOd0cni.js";import{n as s}from"./LockOutlined-CM922FLC.js";import{u as c}from"./XinForm-lkQQPJzP.js";import{t as l}from"./descriptions-BQmc4RoR.js";import{t as u}from"./form-CDfHsmlW.js";import{t as d}from"./input-BOiVaS7w.js";import{t as f}from"./tag-CY8tAhzO.js";import{Pt as p,Tt as m,at as h,l as g,wt as _}from"./index-DLqXr84t.js";import{t as v}from"./XinTable-1TzMt4Ci.js";import{t as y}from"./AuthButton-CIGfKIUu.js";import{t as b}from"./download-Cf6J4R3J.js";import{t as x}from"./store-BNgJbT1w.js";import{n as S}from"./iStoreOrder-CyyYoLoV.js";import{t as C}from"./iPurchaseOrder-Dn-laOqY.js";var w=e(n(),1),T=e(s(),1);async function E(e){return t({url:`/recon/bill/${e}`,method:`get`})}async function D(e,n){return t({url:`/recon/bill/${e}/pay`,method:`put`,data:n})}async function O(e){return b(`/recon/bill/${e}/export`,{},`门店账单.xlsx`)}async function k(e){return b(`/recon/bill/batch-export`,{ids:e},`门店账单_批量导出.xlsx`)}var A=r(),{Title:j,Text:M}=i,N=()=>{let e=(0,w.useRef)(null),[t,n]=(0,w.useState)([]),[r,i]=(0,w.useState)(!1),[s,b]=(0,w.useState)(null),[N,P]=(0,w.useState)(!1),[F,I]=(0,w.useState)(null),[L,R]=(0,w.useState)(!1),[z]=u.useForm(),[B,V]=(0,w.useState)(null),[H,U]=(0,w.useState)([]),[W,G]=(0,w.useState)(!1);(0,w.useEffect)(()=>{x().then(e=>n(e.data.data??[]))},[]);let K=async e=>{i(!0),P(!0);try{let t=await E(e);b(t.data.data??null)}finally{P(!1)}},q=e=>{I(e),z.setFieldsValue({paid_at:(0,T.default)(),pay_remark:``})},J=async t=>{if(F?.id){R(!0);try{await D(F.id,{paid_at:t.paid_at.format(`YYYY-MM-DD HH:mm:ss`),pay_remark:t.pay_remark??``}),m.success(`收款已登记,账单已置为已支付`),I(null),await e.current?.reload()}finally{R(!1)}}},Y=async e=>{if(e.id){V(e.id);try{await O(e.id)}finally{V(null)}}},X=async()=>{if(H.length===0)m.warning(`请先勾选要导出的账单`);else{G(!0);try{await k(H)}finally{G(!1)}}},Z=[{title:`品名`,dataIndex:`product_name`,width:160,align:`center`},{title:`包规`,dataIndex:`product_spec`,width:100,align:`center`,render:e=>e||`-`},{title:`单位`,dataIndex:`unit`,width:80,align:`center`,render:e=>e||`-`},{title:`单价`,dataIndex:`price`,width:100,align:`center`,render:e=>`¥${Number(e).toFixed(2)}`},{title:`数量`,dataIndex:`quantity`,width:90,align:`center`,render:e=>(0,A.jsx)(M,{strong:!0,children:e})},{title:`重量`,dataIndex:`weight`,width:100,align:`center`,render:e=>`${e}斤`},{title:`金额`,dataIndex:`amount`,width:110,align:`center`,render:e=>(0,A.jsxs)(M,{strong:!0,children:[`¥`,Number(e).toFixed(2)]})}],Q=()=>{let e=s?.items??[],t=e.reduce((e,t)=>e+Number(t.quantity),0),n=e.reduce((e,t)=>e+Number(t.weight),0),r=e.reduce((e,t)=>e+Number(t.amount),0);return(0,A.jsxs)(a.Summary.Row,{children:[(0,A.jsx)(a.Summary.Cell,{index:0,colSpan:4,align:`center`,children:(0,A.jsx)(M,{strong:!0,children:`合计`})}),(0,A.jsx)(a.Summary.Cell,{index:4,align:`center`,children:(0,A.jsx)(M,{strong:!0,children:t})}),(0,A.jsx)(a.Summary.Cell,{index:5,align:`center`,children:(0,A.jsxs)(M,{strong:!0,children:[n.toFixed(3),`斤`]})}),(0,A.jsx)(a.Summary.Cell,{index:6,align:`center`,children:(0,A.jsxs)(M,{strong:!0,type:`danger`,children:[`¥`,r.toFixed(2)]})})]})},$=e=>{let t=e.reduce((e,t)=>({product_amount:e.product_amount+Number(t.product_amount??0),delivery_fee:e.delivery_fee+Number(t.delivery_fee??0),added_amount:e.added_amount+Number(t.added_amount??0),after_sale:e.after_sale+Number(t.after_sale??0),total_amount:e.total_amount+Number(t.total_amount??0)}),{product_amount:0,delivery_fee:0,added_amount:0,after_sale:0,total_amount:0});return(0,A.jsxs)(a.Summary.Row,{children:[(0,A.jsx)(a.Summary.Cell,{index:0,colSpan:5,align:`center`,children:(0,A.jsx)(M,{strong:!0,children:`本页合计`})}),(0,A.jsx)(a.Summary.Cell,{index:5,align:`center`,children:(0,A.jsxs)(M,{strong:!0,children:[`¥`,t.product_amount.toFixed(2)]})}),(0,A.jsx)(a.Summary.Cell,{index:6,align:`center`,children:(0,A.jsxs)(M,{strong:!0,children:[`¥`,t.delivery_fee.toFixed(2)]})}),(0,A.jsx)(a.Summary.Cell,{index:7,align:`center`,children:(0,A.jsxs)(M,{strong:!0,children:[`¥`,t.added_amount.toFixed(2)]})}),(0,A.jsx)(a.Summary.Cell,{index:8,align:`center`,children:(0,A.jsxs)(M,{strong:!0,type:t.after_sale<0?`success`:void 0,children:[`¥`,t.after_sale.toFixed(2)]})}),(0,A.jsx)(a.Summary.Cell,{index:9,align:`center`,children:(0,A.jsxs)(M,{strong:!0,type:`danger`,children:[`¥`,t.total_amount.toFixed(2)]})}),(0,A.jsx)(a.Summary.Cell,{index:10,colSpan:4})]})},ee=[{title:`订单号`,dataIndex:`order_no`,align:`center`,render:e=>(0,A.jsx)(M,{copyable:{text:e},children:e})},{title:`订货日期`,dataIndex:`order_date`,align:`center`},{title:`订货数量`,dataIndex:`total_quantity`,align:`center`},{title:`总重量`,dataIndex:`total_weight`,align:`center`,render:e=>`${e}斤`},{title:`订单金额`,dataIndex:`total_amount`,align:`center`,render:e=>(0,A.jsxs)(M,{strong:!0,children:[`¥`,e]})},{title:`状态`,dataIndex:`status`,align:`center`,render:e=>{let t=S[Number(e??0)];return(0,A.jsx)(f,{color:t?.color,children:t?.text})}}],te=[{title:`账单号`,dataIndex:`bill_no`,valueType:`text`,hideInForm:!0,width:210,render:(e,t)=>(0,A.jsx)(M,{copyable:{text:t.bill_no},children:t.bill_no})},{title:`门店`,dataIndex:`store_id`,valueType:`select`,hideInForm:!0,fieldProps:{options:t.map(e=>({label:e.name,value:e.id})),showSearch:!0,optionFilterProp:`label`},render:(e,t)=>t.store?.name??`门店#${t.store_id}`},{title:`采购单号`,dataIndex:`purchase_no`,valueType:`text`,hideInForm:!0,render:(e,t)=>t.purchase?.purchase_no??`-`},{title:`账单日期`,dataIndex:`bill_date`,valueType:`dateRange`,hideInForm:!0,align:`center`,render:(e,t)=>t.bill_date},{title:`商品金额`,dataIndex:`product_amount`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>`¥${t.product_amount}`},{title:`配送费`,dataIndex:`delivery_fee`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>`¥${t.delivery_fee}`},{title:`附加金额`,dataIndex:`added_amount`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>(0,A.jsxs)(`span`,{title:`周转筐 ${t.box_num} 个 / 周转托盘 ${t.tray_num} 个`,children:[`¥`,t.added_amount]})},{title:`售后金额`,dataIndex:`after_sale`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>(0,A.jsxs)(M,{type:Number(t.after_sale??0)<0?`success`:void 0,children:[`¥`,t.after_sale??`0.00`]})},{title:`账单总金额`,dataIndex:`total_amount`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>(0,A.jsxs)(M,{strong:!0,type:`danger`,children:[`¥`,t.total_amount]})},{title:`支付状态`,dataIndex:`status`,valueType:`select`,hideInForm:!0,align:`center`,fieldProps:{options:Object.entries(C).map(([e,t])=>({value:Number(e),label:t.text}))},render:(e,t)=>{let n=C[t.status??0];return(0,A.jsx)(f,{color:n?.color,children:n?.text})}},{title:`关联订单`,dataIndex:`orders_count`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>`${t.orders_count??0} 笔`},{title:`生成时间`,dataIndex:`created_at`,hideInForm:!0,hideInSearch:!0,align:`center`}];return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`mb-5`,children:[(0,A.jsx)(j,{level:3,children:`门店账单`}),(0,A.jsx)(M,{type:`secondary`,children:`采购单完成后在「采购单」页生成,每个门店单独一张;账单总金额 = 商品金额 + 配送费 + 附加金额(周转筐/托盘)+ 售后金额(可正负); 每行可单独导出为一个 Excel(账单内明细按商品合并);也可勾选多张账单批量导出, 同一门店合并在一张工作表,不同门店自动拆分为多个工作表。`})]}),(0,A.jsx)(v,{api:`/recon/bill`,columns:te,rowKey:`id`,accessName:`recon.bill`,tableRef:e,operateRender:e=>[(0,A.jsx)(o,{size:`small`,type:`primary`,icon:(0,A.jsx)(g,{}),onClick:()=>K(e.id)},`detail`),(0,A.jsx)(y,{auth:`recon.bill.export`,children:(0,A.jsx)(o,{size:`small`,color:`orange`,variant:`solid`,icon:(0,A.jsx)(h,{}),loading:B===e.id,onClick:()=>Y(e)})},`export`),e.status===0?(0,A.jsx)(y,{auth:`recon.bill.pay`,children:(0,A.jsx)(o,{size:`small`,variant:`solid`,color:`green`,onClick:()=>q(e),children:`确认收款`})},`pay`):null],formProps:!1,summary:$,actionBarRender:e=>[e.search,(0,A.jsx)(y,{auth:`recon.bill.export`,children:(0,A.jsxs)(o,{type:`primary`,icon:(0,A.jsx)(h,{}),disabled:H.length===0,loading:W,onClick:X,children:[`批量导出`,H.length>0?` (${H.length})`:``]})},`batchExport`),e.keywordSearch],rowSelection:{selectedRowKeys:H,onChange:e=>U(e.map(Number))},toolBarRender:e=>[e.columnSetting,e.hideBorder,e.reload,e.columnHeight]}),(0,A.jsx)(p,{title:s?`账单 ${s.bill.bill_no}`:`账单详情`,open:r,onClose:()=>i(!1),size:1e3,loading:N,children:s?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(l,{column:3,size:`small`,bordered:!0,children:[(0,A.jsx)(l.Item,{label:`门店`,children:s.bill.store?.name??`门店#${s.bill.store_id}`}),(0,A.jsx)(l.Item,{label:`采购单号`,children:s.bill.purchase?.purchase_no??`-`}),(0,A.jsx)(l.Item,{label:`账单日期`,children:s.bill.bill_date}),(0,A.jsxs)(l.Item,{label:`商品金额`,children:[`¥`,s.bill.product_amount]}),(0,A.jsxs)(l.Item,{label:`配送费`,children:[`¥`,s.bill.delivery_fee]}),(0,A.jsxs)(l.Item,{label:`附加金额`,children:[`¥`,s.bill.added_amount,(0,A.jsxs)(M,{type:`secondary`,className:`ml-2!`,children:[`(筐 `,s.bill.box_num,`×¥`,s.bill.box_price,`,托盘 `,s.bill.tray_num,`×¥`,s.bill.tray_price,`)`]})]}),(0,A.jsxs)(l.Item,{label:`售后金额`,children:[(0,A.jsxs)(M,{type:Number(s.bill.after_sale??0)<0?`success`:void 0,children:[`¥`,s.bill.after_sale??`0.00`]}),(0,A.jsx)(M,{type:`secondary`,className:`ml-2!`,children:`(可正负,计入总金额)`})]}),(0,A.jsx)(l.Item,{label:`账单总金额`,children:(0,A.jsxs)(M,{strong:!0,type:`danger`,children:[`¥`,s.bill.total_amount]})}),(0,A.jsx)(l.Item,{label:`支付状态`,children:(0,A.jsx)(f,{color:C[s.bill.status??0]?.color,children:C[s.bill.status??0]?.text})}),(0,A.jsx)(l.Item,{label:`付款时间`,children:s.bill.paid_at??`-`}),(0,A.jsx)(l.Item,{label:`收款人`,children:s.bill.paid_operator?.nickname??`-`}),(0,A.jsx)(l.Item,{label:`生成人`,children:s.bill.operator?.nickname??`-`}),(0,A.jsx)(l.Item,{label:`生成时间`,children:s.bill.created_at}),s.bill.pay_remark?(0,A.jsx)(l.Item,{label:`付款备注`,span:3,children:s.bill.pay_remark}):null,s.bill.remark?(0,A.jsx)(l.Item,{label:`备注`,span:3,children:s.bill.remark}):null]}),(0,A.jsx)(j,{level:5,className:`mt-6! mb-3!`,children:`商品明细(按商品合并)`}),(0,A.jsx)(a,{rowKey:`product_id`,size:`small`,bordered:!0,columns:Z,dataSource:s.items,pagination:!1,scroll:{x:`max-content`},summary:Q}),(0,A.jsxs)(j,{level:5,className:`mt-6! mb-3!`,children:[`关联订单(`,s.orders.length,` 笔)`]}),(0,A.jsx)(a,{rowKey:`id`,size:`small`,bordered:!0,columns:ee,dataSource:s.orders,pagination:!1,scroll:{x:`max-content`}})]}):null}),(0,A.jsxs)(_,{title:F?`确认收款 · ${F.bill_no}`:`确认收款`,open:F!==null,onCancel:()=>I(null),onOk:()=>z.submit(),confirmLoading:L,okText:`确认收款`,destroyOnHidden:!0,children:[(0,A.jsxs)(`div`,{className:`py-2 text-gray-500`,children:[`应收金额 `,(0,A.jsxs)(M,{strong:!0,type:`danger`,children:[`¥`,F?.total_amount??`0.00`]}),`(商品 ¥`,F?.product_amount??`0.00`,` + 配送费 ¥`,F?.delivery_fee??`0.00`,` + 附加 ¥`,F?.added_amount??`0.00`,` + 售后 ¥`,F?.after_sale??`0.00`,`); 线下收款完成后登记付款信息,账单支付状态将置为「已支付」。`]}),(0,A.jsxs)(u,{form:z,layout:`vertical`,onFinish:J,children:[(0,A.jsx)(u.Item,{label:`付款时间`,name:`paid_at`,rules:[{required:!0,message:`请选择付款时间`}],children:(0,A.jsx)(c,{className:`w-full`,showTime:!0,allowClear:!1})}),(0,A.jsx)(u.Item,{label:`付款备注`,name:`pay_remark`,rules:[{max:255}],children:(0,A.jsx)(d.TextArea,{rows:2,maxLength:255,placeholder:`如:现金/转账单号等线下收款信息(选填)`})})]})]})]})};export{N as default};