import{i as e}from"./rolldown-runtime-BgaNhQyE.js";import{Dr as t,t as n}from"./jsx-runtime-CRBytmvs.js";import{t as r}from"./typography-DRFhazK9.js";import{L as i,V as a,a as ee,k as te}from"./lodash-DzOfPy0f.js";import{t as ne}from"./tooltip-SaeG1Uv7.js";import{t as re}from"./PlusOutlined-B8K2rG8r.js";import{t as o}from"./table-BXi9q3AE.js";import{t as s}from"./space-Cu4QVMgQ.js";import{h as ie}from"./style-BmYds38x.js";import{t as c}from"./button-BILozH6U.js";import{r as l}from"./DoubleRightOutlined-Blfli1UU.js";import{t as u}from"./empty-_1ZFK8yy.js";import{s as ae}from"./XinForm-BPDYdeax.js";import{t as oe}from"./radio-CxFl70_7.js";import{n as se}from"./card-DU2T2-YW.js";import{t as ce}from"./spin-CfJYIffX.js";import{t as d}from"./modal-g8Q5gNCx.js";import{t as f}from"./descriptions-BLF6MKiu.js";import{t as p}from"./form-B3R3kIqp.js";import{t as m}from"./input-CHcsaDtX.js";import{r as le}from"./CopyOutlined-pYq9KfGb.js";import{r as h}from"./PictureOutlined-CB8Pr7jP.js";import{t as ue}from"./popconfirm-DyseZgpU.js";import{t as g}from"./tag-DBV1bHre.js";import{t as de}from"./DeleteOutlined-DwOvobSM.js";import{t as _}from"./DownloadOutlined-DJY9Mu8c.js";import{t as fe}from"./XinTable-DOLiJ5rL.js";import{t as v}from"./AuthButton-DvrpreK4.js";import{o as pe}from"./goods-DPA1smJU.js";import{a as me,c as y,d as he,f as ge,i as _e,l as ve,n as ye,r as be,s as xe,t as Se,u as Ce}from"./order-DMmnhF6m.js";import{n as b,t as we}from"./iPurchaseOrder-Dn-laOqY.js";import{t as Te}from"./supplier-BstAcwv7.js";import{t as Ee}from"./useAuth-AiNV0bRw.js";var x=e(t(),1),S=n(),{Title:De,Text:C}=r,Oe={product_name:`品名`,supplier_id:`供应商`,product_spec:`包规`,unit:`单位`,cost_price:`成本`},ke=(e,t)=>{let n=parseFloat(t);return Number.isFinite(n)&&n>0?e/n:e},Ae=()=>{let e=(0,x.useRef)(null),{auth:t}=Ee(),[n,r]=(0,x.useState)(!1),[Ae,je]=(0,x.useState)(1200),[w,T]=(0,x.useState)(null),[Me,Ne]=(0,x.useState)(!1),[Pe,Fe]=(0,x.useState)(!1),[Ie,E]=(0,x.useState)(new Set),[Le,Re]=(0,x.useState)([]),[D,ze]=(0,x.useState)(`items`),[O,Be]=(0,x.useState)(0),[k,Ve]=(0,x.useState)(null),[He,Ue]=(0,x.useState)(!1),[We,A]=(0,x.useState)(!1),[Ge,Ke]=(0,x.useState)(!1),[j]=p.useForm(),[qe,Je]=(0,x.useState)([]),[M,N]=(0,x.useState)(null),[Ye,Xe]=(0,x.useState)(!1),[P]=p.useForm(),[F,I]=(0,x.useState)(0),[L,Ze]=(0,x.useState)(``),[R,Qe]=(0,x.useState)({}),[$e,z]=(0,x.useState)(!1),[B,et]=(0,x.useState)(0),[tt,V]=(0,x.useState)(!1),[nt,rt]=(0,x.useState)(`current`),[it,H]=(0,x.useState)(!1),[at,ot]=(0,x.useState)(`current`),U=(0,x.useMemo)(()=>{let e=new Map;return(w?.items??[]).forEach(t=>{t.supplier_id>0&&t.supplier?.name&&e.set(t.supplier_id,t.supplier.name)}),Array.from(e,([e,t])=>({id:e,name:t}))},[w?.items]),st=(0,x.useMemo)(()=>{let e=new Set;return(w?.items??[]).forEach(t=>{t.supplier_id===F&&t.market&&e.add(t.market)}),Array.from(e)},[w?.items,F]),W=(0,x.useMemo)(()=>!w||F<=0?[]:w.items.filter(e=>e.supplier_id===F).filter(e=>L===``||(e.market??``)===L).map(e=>({product_id:e.product_id,product_name:e.product_name,product_spec:e.product_spec,unit:e.unit,market:e.market,cost_price:String(e.cost_price),quantity:e.quantity,weight:String(e.weight),amount:(e.quantity*Number(e.cost_price)).toFixed(2)})),[w,F,L]),ct=(0,x.useMemo)(()=>{let e=new Set;return(w?.items??[]).forEach(t=>{t.market&&e.add(t.market)}),Array.from(e)},[w?.items]),lt=(0,x.useMemo)(()=>{let e=R.supplier,t=R.market;return(w?.items??[]).filter(t=>!e?.length||e.includes(t.supplier_id)).filter(e=>!t?.length||t.includes(e.market??``))},[w?.items,R]),[ut,G]=(0,x.useState)(!1),[K,q]=(0,x.useState)(null),[dt,ft]=(0,x.useState)(!1),[pt,mt]=(0,x.useState)(!1),[J]=p.useForm(),ht=p.useWatch(`stores`,J)??[],gt=(K?.stores??[]).map((e,t)=>{let n=ht[t]??{},r=Number(n.delivery_fee??0),i=Number(n.after_sale??0),a=Number(n.box_num??0)*Number(e.box_price)+Number(n.tray_num??0)*Number(e.tray_price);return{added:a,total:Number(e.product_amount)+r+a+i}}),_t=(K?.stores??[]).length>0&&K.stores.every(e=>e.bill!==null);(0,x.useEffect)(()=>{Te().then(e=>Re(e.data.data??[]))},[]),(0,x.useEffect)(()=>{w&&w.stores.length>0&&Be(e=>w.stores.some(t=>t.id===e)?e:w.stores[0].id)},[w]),(0,x.useEffect)(()=>{U.length>0?I(e=>U.some(t=>t.id===e)?e:U[0].id):I(0)},[U]),(0,x.useEffect)(()=>{n&&D===`stores`&&w&&O>0&&bt()},[n,D,O,w?.purchase.id]),(0,x.useEffect)(()=>{if(!w){E(new Set);return}try{let e=localStorage.getItem(`purchase-checked-items:${w.purchase.id}`);E(new Set(e?JSON.parse(e):[]))}catch{E(new Set)}},[w]);let vt=e=>{w&&E(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),localStorage.setItem(`purchase-checked-items:${w.purchase.id}`,JSON.stringify([...n])),n})},Y=async e=>{Ne(!0);try{let t=await y(e);T(t.data.data??null)}finally{Ne(!1)}},yt=async e=>{ze(`items`),Ve(null),Qe({}),r(!0),await Y(e)},bt=async()=>{if(!(!w||O<=0)){Ue(!0);try{let e=await ve(w.purchase.id,O);Ve(e.data.data??null)}finally{Ue(!1)}}},X=async()=>{await bt(),w&&await Y(w.purchase.id),await e.current?.reload()},xt=()=>{j.resetFields(),A(!0),qe.length===0&&pe().then(e=>Je(e.data.data??[]))},St=async e=>{if(!(!w||O<=0)){Ke(!0);try{await Se(w.purchase.id,O,e),h.success(`已添加单品,订货单与采购单汇总已重算`),A(!1),await X()}finally{Ke(!1)}}},Ct=e=>{N(e),P.setFieldsValue({quantity:e.quantity,price:Number(e.price??0),weight:Number(e.weight??0)})},wt=async e=>{if(!(!w||!M||O<=0)){Xe(!0);try{await ge(w.purchase.id,O,M.product_id,e),h.success(`单品已更新,订货单与采购单汇总已重算`),N(null),await X()}finally{Xe(!1)}}},Tt=async e=>{!w||O<=0||(await Ce(w.purchase.id,O,e.product_id),h.success(`已移除单品,订货单与采购单汇总已重算`),await X())},Z=w?.purchase.status===0&&t(`purchase.order.update`),Q=async(t,n,r)=>{if(!w)return;let i={product_name:t.product_name,supplier_id:t.supplier_id,product_spec:t.product_spec,unit:t.unit,cost_price:Number(t.cost_price)};if(n===`cost_price`){let e=Number(r);if(r===``||!Number.isFinite(e)||e<0){h.warning(`成本无效,已取消修改`);return}if(e===Number(t.cost_price))return;i.cost_price=e}else if(n===`supplier_id`){let e=Number(r);if(e===t.supplier_id)return;i.supplier_id=e}else{let e=String(r).trim();if(!e){h.warning(`${Oe[n]}不能为空,已取消修改`);return}if(e===t[n])return;i[n]=e}if(i.supplier_id<=0){h.warning(`请先通过供应商单元格为该商品设置供应商`);return}let a=await he(w.purchase.id,t.product_id,i);h.success(`已更新 ${a.data.data?.count??0} 条订货明细`);let ee=await y(w.purchase.id);T(ee.data.data??null),await e.current?.reload()},Et=async(t,n,r)=>{if(!w)return;let i=Number(r);if(r.trim()===``||!Number.isInteger(i)||i<0){h.warning(`订货量无效,已取消修改`);return}if(i===t.cells[n])return;await ge(w.purchase.id,n,t.product_id,{quantity:i});let a=await y(w.purchase.id);T(a.data.data??null),h.success(`订货量已更新,订货单与采购单汇总已重算`),await e.current?.reload()},$=(e,t,n)=>Z?t===`supplier_id`?(0,S.jsx)(l,{size:`small`,className:`w-full`,value:e.supplier_id>0?e.supplier_id:void 0,placeholder:`选择供应商`,showSearch:{optionFilterProp:`label`},options:Le.map(e=>({value:e.id,label:e.name})),onChange:n=>void Q(e,t,n)}):t===`cost_price`?(0,S.jsx)(a,{size:`small`,min:0,precision:2,prefix:`¥`,className:`w-full`,defaultValue:Number(e.cost_price),onPressEnter:n=>void Q(e,t,n.target.value),onBlur:n=>void Q(e,t,n.target.value)},`${e.product_id}-cost-${e.cost_price}`):(0,S.jsx)(m,{size:`small`,style:{textAlign:`center`},defaultValue:e[t],maxLength:t===`unit`?20:100,onPressEnter:n=>void Q(e,t,n.target.value),onBlur:n=>void Q(e,t,n.target.value)},`${e.product_id}-${t}-${e[t]}`):n,Dt=async e=>{G(!0),ft(!0),q(null);try{let t=(await xe(e)).data.data??null;q(t),J.setFieldsValue({stores:(t?.stores??[]).map(e=>({store_id:e.store_id,delivery_fee:e.bill?Number(e.bill.delivery_fee):0,box_num:e.bill?e.bill.box_num:0,tray_num:e.bill?e.bill.tray_num:0,after_sale:e.bill?Number(e.bill.after_sale):0,remark:e.bill?.remark??``}))})}finally{ft(!1)}},Ot=async t=>{if(K){mt(!0);try{let n=await me(K.purchase.id,t.stores);h.success(`已生成 ${n.data.data?.count??0} 张门店账单,采购单订单已关联`),G(!1),q(null),await e.current?.reload(),w&&w.purchase.id===K.purchase.id&&await Y(w.purchase.id)}finally{mt(!1)}}},kt=async t=>{Fe(!0);try{await ae(`/purchase/order/${t}/finish`,{status:3}),h.success(`采购单已标记完成`),await e.current?.reload()}finally{Fe(!1)}},At=()=>{let e=[{title:`品名`,dataIndex:`product_name`,width:160,align:`center`,fixed:`left`,ellipsis:!0,render:(e,t)=>$(t,`product_name`,t.product_name)},{title:`供应商`,dataIndex:`supplier`,width:110,align:`center`,fixed:`left`,filters:U.map(e=>({text:e.name,value:e.id})),filteredValue:R.supplier??null,onFilter:(e,t)=>t.supplier_id===Number(e),render:(e,t)=>$(t,`supplier_id`,t.supplier?.name??`-`)},{title:`市场`,fixed:`left`,dataIndex:`market`,width:90,align:`center`,filters:ct.map(e=>({text:e,value:e})),filteredValue:R.market??null,onFilter:(e,t)=>(t.market??``)===e,render:(e,t)=>{let n=Ie.has(t.product_id);return(0,S.jsxs)(s,{size:4,children:[(0,S.jsx)(`span`,{children:e||`-`}),(0,S.jsx)(ne,{title:n?`取消对账标记`:`标记本单品已对账`,children:(0,S.jsx)(c,{size:`small`,shape:`circle`,style:{minWidth:16,height:16,width:16},icon:(0,S.jsx)(ie,{}),color:n?`green`:`default`,variant:n?`solid`:`outlined`,onClick:()=>vt(t.product_id)})})]})}},{title:`单价`,key:`retail_price`,width:90,align:`center`,render:(e,t)=>{let n=Number(t.quantity??0);return n<=0?(0,S.jsx)(C,{type:`secondary`,children:`-`}):`¥${ke(Number(t.amount??0)/n,t.product_spec??``).toFixed(2)}`}},{title:`包规`,dataIndex:`product_spec`,align:`center`,width:90,render:(e,t)=>$(t,`product_spec`,e||`-`)},{title:`单位`,dataIndex:`unit`,width:90,align:`center`,render:(e,t)=>$(t,`unit`,e||`-`)},{title:`成本`,dataIndex:`cost_price`,width:120,align:`center`,render:(e,t)=>$(t,`cost_price`,`¥${Number(e).toFixed(2)}`)},{title:`合计数量`,key:`total_quantity`,width:110,align:`center`,render:(e,t)=>(0,S.jsx)(C,{strong:!0,children:t.quantity})}],t=(w?.stores??[]).map(e=>({title:(0,S.jsx)(`span`,{className:`text-[red]`,children:e.name}),key:`store-${e.id}`,align:`center`,render:(t,n)=>{let r=n.cells[e.id];return r===void 0?(0,S.jsx)(C,{type:`secondary`,children:`-`}):Z?(0,S.jsx)(a,{size:`small`,min:0,styles:{input:{textAlign:`center`},root:{width:80}},precision:0,className:`w-full`,defaultValue:r,onPressEnter:t=>void Et(n,e.id,t.target.value),onBlur:t=>void Et(n,e.id,t.target.value)},`${n.product_id}-${e.id}-${r}`):r}}));return[...e,...t]},jt=()=>{let e=w?.stores??[],t=lt,n=e.map(e=>t.reduce((t,n)=>t+(n.cells[e.id]??0)*Number(n.cost_price),0)),r=t.reduce((e,t)=>e+Number(t.quantity),0),i=n.reduce((e,t)=>e+t,0);return(0,S.jsxs)(o.Summary.Row,{children:[(0,S.jsx)(o.Summary.Cell,{index:0,colSpan:7,align:`center`,children:(0,S.jsxs)(s,{size:16,children:[(0,S.jsx)(C,{strong:!0,children:`成本统计(按门店)`}),(0,S.jsxs)(C,{strong:!0,type:`danger`,children:[`总计 ¥`,i.toFixed(2)]})]})}),(0,S.jsx)(o.Summary.Cell,{index:7,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:r})}),n.map((t,n)=>(0,S.jsx)(o.Summary.Cell,{index:8+n,align:`center`,children:(0,S.jsxs)(C,{strong:!0,children:[`¥`,t.toFixed(2)]})},e[n].id))]})},Mt=[{title:`商品`,dataIndex:`product_name`,width:160,align:`center`},{title:`市场`,dataIndex:`market`,width:90,align:`center`,render:e=>e||`-`},{title:`单价`,key:`retail_price`,width:130,align:`center`,render:(e,t)=>`¥${ke(Number(t.price),t.product_spec).toFixed(2)}`},{title:`包规`,dataIndex:`product_spec`,width:90,align:`center`,render:e=>e||`-`},{title:`单位`,dataIndex:`unit`,width:90,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,S.jsx)(C,{strong:!0,children:e})},{title:`重量`,dataIndex:`weight`,width:90,align:`center`,render:e=>`${e||`-`}斤`},{title:`预计金额`,dataIndex:`amount`,width:110,align:`center`,render:e=>(0,S.jsxs)(C,{strong:!0,children:[`¥`,Number(e).toFixed(2)]})},{title:`操作`,key:`action`,width:130,align:`center`,render:(e,t)=>w?.purchase.status===0?(0,S.jsxs)(s,{size:0,children:[(0,S.jsx)(v,{auth:`purchase.order.update`,children:(0,S.jsx)(c,{type:`link`,size:`small`,icon:(0,S.jsx)(le,{}),onClick:()=>Ct(t),children:`编辑`})}),(0,S.jsx)(v,{auth:`purchase.order.update`,children:(0,S.jsx)(ue,{title:`移除该单品?`,description:`将从「${k?.store?.name??`该门店`}」采购明细中移除「${t.product_name}」`,onConfirm:()=>Tt(t),children:(0,S.jsx)(c,{type:`link`,size:`small`,danger:!0,icon:(0,S.jsx)(de,{}),children:`移除`})})})]}):(0,S.jsx)(C,{type:`secondary`,children:`-`})}],Nt=()=>{let e=k?.items??[],t=e.reduce((e,t)=>e+Number(t.quantity),0),n=e.reduce((e,t)=>e+Number(t.amount),0),r=e.reduce((e,t)=>e+Number(t.weight),0);return(0,S.jsxs)(o.Summary.Row,{children:[(0,S.jsx)(o.Summary.Cell,{index:0,colSpan:6,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:`合计`})}),(0,S.jsx)(o.Summary.Cell,{index:6,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:t})}),(0,S.jsx)(o.Summary.Cell,{index:7,align:`center`,children:(0,S.jsxs)(C,{strong:!0,children:[r.toFixed(3),`斤`]})}),(0,S.jsx)(o.Summary.Cell,{index:8,align:`center`,children:(0,S.jsxs)(C,{strong:!0,type:`danger`,children:[`¥`,n.toFixed(2)]})}),(0,S.jsx)(o.Summary.Cell,{index:9,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:`-`})})]})},Pt=[{title:`品名`,dataIndex:`product_name`,width:180,align:`center`},{title:`市场`,dataIndex:`market`,width:100,align:`center`,render:e=>e||`-`},{title:`包规`,dataIndex:`product_spec`,width:110,align:`center`,render:e=>e||`-`},{title:`单位`,dataIndex:`unit`,width:90,align:`center`,render:e=>e||`-`},{title:`成本价`,dataIndex:`cost_price`,width:110,align:`center`,render:e=>`¥${Number(e).toFixed(2)}`},{title:`数量`,dataIndex:`quantity`,width:100,align:`center`,render:e=>(0,S.jsx)(C,{strong:!0,children:e})},{title:`重量`,dataIndex:`weight`,width:110,align:`center`,render:e=>`${Number(e).toFixed(3)}斤`},{title:`金额`,dataIndex:`amount`,width:120,align:`center`,render:e=>(0,S.jsxs)(C,{strong:!0,children:[`¥`,Number(e).toFixed(2)]})}],Ft=()=>{let e=W.reduce((e,t)=>e+Number(t.quantity),0),t=W.reduce((e,t)=>e+Number(t.weight),0),n=W.reduce((e,t)=>e+Number(t.amount),0);return(0,S.jsxs)(o.Summary.Row,{children:[(0,S.jsx)(o.Summary.Cell,{index:0,colSpan:5,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:`合计`})}),(0,S.jsx)(o.Summary.Cell,{index:5,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:e})}),(0,S.jsx)(o.Summary.Cell,{index:6,align:`center`,children:(0,S.jsxs)(C,{strong:!0,children:[t.toFixed(3),`斤`]})}),(0,S.jsx)(o.Summary.Cell,{index:7,align:`center`,children:(0,S.jsxs)(C,{strong:!0,type:`danger`,children:[`¥`,n.toFixed(2)]})})]})},It=[{title:`门店`,dataIndex:`store_name`,width:140,align:`center`},{title:`账单号`,dataIndex:`bill_no`,width:180,align:`center`,render:e=>(0,S.jsx)(C,{copyable:{text:e},children:e})},{title:`账单日期`,dataIndex:`bill_date`,width:110,align:`center`},{title:`商品金额`,dataIndex:`product_amount`,width:110,align:`center`,render:e=>`¥${Number(e).toFixed(2)}`},{title:`配送费`,dataIndex:`delivery_fee`,width:100,align:`center`,render:e=>`¥${Number(e).toFixed(2)}`},{title:`周转筐`,key:`box`,width:110,align:`center`,render:(e,t)=>`${t.box_num} × ¥${Number(t.box_price).toFixed(2)}`},{title:`周转托盘`,key:`tray`,width:110,align:`center`,render:(e,t)=>`${t.tray_num} × ¥${Number(t.tray_price).toFixed(2)}`},{title:`附加金额`,dataIndex:`added_amount`,width:100,align:`center`,render:e=>`¥${Number(e).toFixed(2)}`},{title:`账单总金额`,dataIndex:`total_amount`,width:120,align:`center`,render:e=>(0,S.jsxs)(C,{strong:!0,type:`danger`,children:[`¥`,Number(e).toFixed(2)]})},{title:`支付状态`,dataIndex:`status`,width:100,align:`center`,render:e=>{let t=we[Number(e??0)];return(0,S.jsx)(g,{color:t?.color,children:t?.text})}}],Lt=()=>{let e=w?.bills??[],t=e.reduce((e,t)=>e+Number(t.product_amount),0),n=e.reduce((e,t)=>e+Number(t.delivery_fee),0),r=e.reduce((e,t)=>e+Number(t.added_amount),0),i=e.reduce((e,t)=>e+Number(t.total_amount),0);return(0,S.jsxs)(o.Summary.Row,{children:[(0,S.jsx)(o.Summary.Cell,{index:0,colSpan:3,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:`合计`})}),(0,S.jsx)(o.Summary.Cell,{index:3,align:`center`,children:(0,S.jsxs)(C,{strong:!0,children:[`¥`,t.toFixed(2)]})}),(0,S.jsx)(o.Summary.Cell,{index:4,align:`center`,children:(0,S.jsxs)(C,{strong:!0,children:[`¥`,n.toFixed(2)]})}),(0,S.jsx)(o.Summary.Cell,{index:5,colSpan:2,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:`-`})}),(0,S.jsx)(o.Summary.Cell,{index:7,align:`center`,children:(0,S.jsxs)(C,{strong:!0,children:[`¥`,r.toFixed(2)]})}),(0,S.jsx)(o.Summary.Cell,{index:8,align:`center`,children:(0,S.jsxs)(C,{strong:!0,type:`danger`,children:[`¥`,i.toFixed(2)]})}),(0,S.jsx)(o.Summary.Cell,{index:9,align:`center`,children:(0,S.jsx)(C,{strong:!0,children:`-`})})]})},Rt=[{title:`采购单号`,dataIndex:`purchase_no`,valueType:`text`,hideInForm:!0,align:`center`,width:260,render:(e,t)=>(0,S.jsx)(C,{copyable:{text:t.purchase_no},children:t.purchase_no})},{title:`采购日期`,dataIndex:`purchase_date`,valueType:`date`,align:`center`,hideInForm:!0,render:(e,t)=>t.purchase_date},{title:`预估成本`,dataIndex:`estimate_amount`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>`¥${t.estimate_amount}`},{title:`实际成本`,dataIndex:`actual_amount`,hideInSearch:!0,valueType:`digit`,fieldProps:{min:0,precision:3,placeholder:`请输入单价`},align:`center`,render:(e,t)=>Number(t.actual_amount)>0?(0,S.jsxs)(C,{strong:!0,children:[`¥`,t.actual_amount]}):(0,S.jsx)(C,{type:`secondary`,children:`未录入`})},{title:`总件数`,dataIndex:`total_quantity`,hideInForm:!0,hideInSearch:!0,align:`center`},{title:`备注`,dataIndex:`remark`,valueType:`textarea`,hideInTable:!0,hideInSearch:!0},{title:`总重量`,dataIndex:`total_weight`,hideInForm:!0,hideInSearch:!0,align:`center`,render:(e,t)=>`${t.total_weight}斤`},{title:`状态`,dataIndex:`status`,valueType:`select`,hideInForm:!0,fieldProps:{options:Object.entries(b).map(([e,t])=>({value:Number(e),label:t.text}))},render:(e,t)=>{let n=b[t.status??0];return(0,S.jsx)(g,{color:n?.color,children:n?.text})},align:`center`},{title:`制单人`,dataIndex:`operator`,hideInForm:!0,hideInSearch:!0,render:(e,t)=>t.operator?.nickname??`-`,align:`center`}];return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`mb-5`,children:[(0,S.jsx)(De,{level:3,children:`采购单`}),(0,S.jsx)(C,{type:`secondary`,children:`在「门店订单」页勾选已接单订单合并生成采购单;采购单支持修改订单信息。`})]}),(0,S.jsx)(fe,{api:`/purchase/order`,columns:Rt,rowKey:`id`,accessName:`purchase.order`,tableRef:e,operateRender:(e,t)=>[e.status===0?t.edit:null,(0,S.jsx)(c,{size:`small`,icon:(0,S.jsx)(ee,{}),type:`primary`,onClick:()=>yt(e.id)},`detail`),e.status===0?(0,S.jsx)(v,{auth:`purchase.order.update`,children:(0,S.jsx)(ue,{title:`确认该采购单已完成?`,description:`已完成采购单将锁定,不能再修改订单信息`,onConfirm:()=>kt(e.id),children:(0,S.jsx)(c,{type:`primary`,size:`small`,variant:`solid`,color:`green`,loading:Pe,children:`完成采购`})})}):(0,S.jsx)(v,{auth:`purchase.order.bill`,children:(0,S.jsx)(c,{type:`primary`,size:`small`,variant:`solid`,color:`orange`,icon:(0,S.jsx)(te,{}),onClick:()=>Dt(e.id),children:`生成账单`})})],operateProps:{width:300},formProps:!1}),(0,S.jsx)(i,{title:w?`采购单 ${w.purchase.purchase_no}`:`采购单详情`,open:n,onClose:()=>r(!1),size:Ae,resizable:{onResize:e=>je(e)},loading:Me,children:w&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(De,{level:5,className:`mb-3!`,children:`采购单信息`}),(0,S.jsxs)(f,{column:3,size:`small`,bordered:!0,children:[(0,S.jsx)(f.Item,{label:`采购日期`,children:w.purchase.purchase_date}),(0,S.jsx)(f.Item,{label:`状态`,children:(0,S.jsx)(g,{color:b[w.purchase.status??0]?.color,children:b[w.purchase.status??0]?.text})}),(0,S.jsx)(f.Item,{label:`制单人`,children:w.purchase.operator?.nickname??`-`}),(0,S.jsxs)(f.Item,{label:`预估成本`,children:[`¥`,w.purchase.estimate_amount]}),(0,S.jsxs)(f.Item,{label:`实际成本`,children:[`¥`,w.purchase.actual_amount]}),(0,S.jsx)(f.Item,{label:`总件数`,children:w.purchase.total_quantity}),(0,S.jsx)(f.Item,{label:`总重量`,children:w.purchase.total_weight}),(0,S.jsx)(f.Item,{label:`创建时间`,span:2,children:w.purchase.created_at}),(0,S.jsx)(f.Item,{label:`备注`,span:3,children:w.purchase.remark})]}),(0,S.jsx)(se,{activeKey:D,onChange:ze,className:`mt-3!`,items:[{key:`items`,label:`商品明细`},{key:`stores`,label:`门店购买详情`},{key:`suppliers`,label:`供应商采购明细`},{key:`bills`,label:`门店账单`}]}),D===`stores`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-2`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(C,{children:`选择门店:`}),(0,S.jsx)(l,{value:O||void 0,onChange:e=>Be(e),placeholder:`选择门店`,className:`w-60!`,showSearch:!0,optionFilterProp:`label`,options:w.stores.map(e=>({value:e.id,label:e.name}))})]}),(0,S.jsxs)(s,{children:[w.purchase.status===0&&(0,S.jsx)(v,{auth:`purchase.order.update`,children:(0,S.jsx)(c,{icon:(0,S.jsx)(re,{}),onClick:xt,children:`新增单品`})}),(0,S.jsx)(v,{auth:`purchase.order.export`,children:(0,S.jsx)(c,{type:`primary`,ghost:!0,icon:(0,S.jsx)(_,{}),onClick:()=>{rt(`current`),V(!0)},children:`导出`})})]})]}),(0,S.jsx)(ce,{spinning:He,children:k&&k.items.length>0?(0,S.jsx)(o,{rowKey:`product_id`,size:`small`,bordered:!0,columns:Mt,dataSource:k.items,pagination:!1,scroll:{x:`max-content`},summary:Nt}):!He&&(0,S.jsx)(u,{image:u.PRESENTED_IMAGE_SIMPLE,description:`该门店在此采购单中无采购商品`,className:`py-8!`})})]}):D===`suppliers`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-2`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(C,{children:`选择供应商:`}),(0,S.jsx)(l,{value:F||void 0,onChange:e=>{I(e),Ze(``)},placeholder:`选择供应商`,className:`w-60!`,showSearch:!0,optionFilterProp:`label`,options:U.map(e=>({value:e.id,label:e.name}))}),(0,S.jsx)(C,{children:`市场:`}),(0,S.jsx)(l,{value:L,onChange:Ze,className:`w-40!`,options:[{value:``,label:`全部市场`},...st.map(e=>({value:e,label:e}))]})]}),(0,S.jsx)(v,{auth:`purchase.order.export`,children:(0,S.jsx)(c,{type:`primary`,ghost:!0,icon:(0,S.jsx)(_,{}),onClick:()=>{ot(`current`),H(!0)},children:`导出`})})]}),W.length>0?(0,S.jsx)(o,{rowKey:`product_id`,size:`small`,bordered:!0,columns:Pt,dataSource:W,pagination:!1,scroll:{x:`max-content`},summary:Ft}):(0,S.jsx)(u,{image:u.PRESENTED_IMAGE_SIMPLE,description:`该供应商在此采购单中无采购明细`,className:`py-8!`})]}):D===`bills`?w.bills.length>0?(0,S.jsx)(o,{rowKey:`id`,size:`small`,bordered:!0,columns:It,dataSource:w.bills,pagination:!1,scroll:{x:`max-content`},summary:Lt}):(0,S.jsx)(u,{image:u.PRESENTED_IMAGE_SIMPLE,description:w.purchase.status===0?`采购单完成后可在列表操作列生成账单`:`该采购单暂未生成账单`,className:`py-8!`}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(s,{style:{marginBottom:20},children:[(0,S.jsx)(v,{auth:`purchase.order.export`,children:(0,S.jsx)(c,{type:`primary`,ghost:!0,icon:(0,S.jsx)(_,{}),onClick:()=>{et(0),z(!0)},children:`导出`})},`export`),Z&&(0,S.jsx)(C,{type:`secondary`,className:`text-xs`,children:`修改保存将同步该商品全部订货明细与商品档案,成本变化时各门店单价按等级上浮自动重算`})]}),(0,S.jsx)(o,{rowKey:`product_id`,size:`small`,bordered:!0,columns:At(),dataSource:w.items,onChange:(e,t)=>Qe(t),pagination:!1,scroll:{x:900+w?.stores.length*100,y:500},summary:jt})]})]})}),(0,S.jsx)(d,{title:K?`生成账单 · ${K.purchase.purchase_no}`:`生成账单`,open:ut,onCancel:()=>{G(!1),q(null)},onOk:()=>J.submit(),confirmLoading:pt,okText:`确认生成`,okButtonProps:{disabled:_t},width:1280,destroyOnHidden:!0,children:(0,S.jsx)(ce,{spinning:dt,children:K&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`py-2 text-gray-500`,children:[`每个门店单独生成一张账单;商品金额由订单汇总不可修改,请填写各门店的配送费、周转筐/托盘数量(正数=压筐附加金额,负数=回筐抵扣金额)、售后金额(可正负,计入总金额:正数=加收,负数=售后减免)与备注(可选,随账单存档)。`,_t?`该采购单已全部生成账单,仅可查看。`:`生成后采购单中的全部订单将关联到对应门店账单。`]}),(0,S.jsx)(p,{form:J,layout:`vertical`,onFinish:Ot,children:(0,S.jsx)(p.List,{name:`stores`,children:e=>(0,S.jsxs)(`div`,{className:`overflow-hidden rounded border border-gray-200`,children:[(0,S.jsxs)(`div`,{className:`flex bg-gray-50 px-4 py-2 text-sm text-gray-500`,children:[(0,S.jsx)(`div`,{className:`w-40 shrink-0`,children:`门店`}),(0,S.jsx)(`div`,{className:`w-28 shrink-0 text-center`,children:`商品金额`}),(0,S.jsx)(`div`,{className:`w-32 shrink-0 text-center`,children:`配送费(元)`}),(0,S.jsxs)(`div`,{className:`w-32 shrink-0 text-center`,children:[`周转筐(¥`,K.stores[0]?.box_price??`0.00`,`/个)`]}),(0,S.jsxs)(`div`,{className:`w-32 shrink-0 text-center`,children:[`周转托盘(¥`,K.stores[0]?.tray_price??`0.00`,`/个)`]}),(0,S.jsx)(`div`,{className:`w-36 shrink-0 text-center`,children:`售后金额(元)`}),(0,S.jsx)(`div`,{className:`w-36 shrink-0 text-center`,children:`备注`}),(0,S.jsx)(`div`,{className:`w-28 shrink-0 text-center`,children:`附加金额`}),(0,S.jsx)(`div`,{className:`flex-1 text-center`,children:`账单总金额`})]}),e.map(e=>{let t=K.stores[e.name],n=t?.bill!=null;return(0,S.jsxs)(`div`,{className:`flex items-center border-t border-gray-100 px-4 py-2`,children:[(0,S.jsxs)(`div`,{className:`w-40 shrink-0 pr-2 text-sm`,children:[(0,S.jsx)(`div`,{children:t?.store_name??`-`}),(0,S.jsxs)(`div`,{className:`text-xs text-gray-400`,children:[t?.order_count??0,` 笔订单`,n&&(0,S.jsx)(g,{className:`ml-1!`,color:`success`,children:`已生成`})]})]}),(0,S.jsx)(`div`,{className:`w-28 shrink-0 text-center`,children:(0,S.jsxs)(C,{strong:!0,children:[`¥`,t?.product_amount??`0.00`]})}),(0,S.jsx)(p.Item,{name:[e.name,`store_id`],hidden:!0,children:(0,S.jsx)(m,{})}),(0,S.jsx)(p.Item,{className:`m-0! w-32 shrink-0 px-1!`,name:[e.name,`delivery_fee`],rules:[{required:!0,message:`请输入配送费`}],children:(0,S.jsx)(a,{className:`w-full`,min:0,precision:2,disabled:n,placeholder:`配送费`})}),(0,S.jsx)(p.Item,{className:`m-0! w-32 shrink-0 px-1!`,name:[e.name,`box_num`],rules:[{required:!0,message:`请输入周转筐数量`}],children:(0,S.jsx)(a,{className:`w-full`,precision:0,disabled:n,placeholder:`正压负回`})}),(0,S.jsx)(p.Item,{className:`m-0! w-32 shrink-0 px-1!`,name:[e.name,`tray_num`],rules:[{required:!0,message:`请输入周转托盘数量`}],children:(0,S.jsx)(a,{className:`w-full`,precision:0,disabled:n,placeholder:`正压负回`})}),(0,S.jsx)(p.Item,{className:`m-0! w-36 shrink-0 px-1!`,name:[e.name,`after_sale`],children:(0,S.jsx)(a,{className:`w-full`,precision:2,disabled:n,placeholder:`可正负,计入总额`})}),(0,S.jsx)(p.Item,{className:`m-0! w-36 shrink-0 px-1!`,name:[e.name,`remark`],children:(0,S.jsx)(m,{maxLength:255,disabled:n,placeholder:`备注(可选)`})}),(0,S.jsxs)(`div`,{className:`w-28 shrink-0 text-center`,children:[`¥`,(n?Number(t.bill.added_amount):gt[e.name]?.added??0).toFixed(2)]}),(0,S.jsxs)(`div`,{className:`flex-1 text-center`,children:[(0,S.jsxs)(C,{strong:!0,type:`danger`,children:[`¥`,(n?Number(t.bill.total_amount):gt[e.name]?.total??0).toFixed(2)]}),n&&(0,S.jsx)(`div`,{className:`text-xs text-gray-400`,children:t.bill.bill_no})]})]},e.key)})]})})})]})})}),(0,S.jsxs)(d,{title:`新增单品 · ${k?.store?.name??``}`,open:We,onCancel:()=>A(!1),onOk:()=>j.submit(),confirmLoading:Ge,okText:`添加`,destroyOnHidden:!0,children:[(0,S.jsx)(`div`,{className:`py-2 text-gray-500`,children:`单品将挂靠到该门店在此采购单中的最新一笔订单;单价按门店等级上浮比例自动换算。`}),(0,S.jsxs)(p,{form:j,layout:`vertical`,onFinish:St,children:[(0,S.jsx)(p.Item,{label:`商品`,name:`product_id`,rules:[{required:!0,message:`请选择商品`}],children:(0,S.jsx)(l,{showSearch:{optionFilterProp:`label`},placeholder:`搜索并选择商品`,options:qe.map(e=>({value:e.id,label:`${e.name}${e.spec?`(${e.spec})`:``}`}))})}),(0,S.jsx)(p.Item,{label:`采购数量`,name:`quantity`,rules:[{required:!0,message:`请输入采购数量`}],children:(0,S.jsx)(a,{className:`w-full`,min:1,precision:0,placeholder:`请输入采购数量(包数)`})}),(0,S.jsx)(p.Item,{label:`称重(斤,可选)`,name:`weight`,children:(0,S.jsx)(a,{className:`w-full`,min:0,precision:3,placeholder:`请输入称重`})})]})]}),(0,S.jsxs)(d,{title:M?`编辑「${M.product_name}」`:`编辑单品`,open:M!==null,onCancel:()=>N(null),onOk:()=>P.submit(),confirmLoading:Ye,okText:`保存`,destroyOnHidden:!0,children:[(0,S.jsx)(`div`,{className:`py-2 text-gray-500`,children:`修改保存后,系统将自动重算明细金额、订货单与采购单汇总。`}),(0,S.jsxs)(p,{form:P,layout:`vertical`,onFinish:wt,children:[(0,S.jsx)(p.Item,{label:`单价(元)`,name:`price`,rules:[{required:!0,message:`请输入单价`}],children:(0,S.jsx)(a,{className:`w-full`,min:0,precision:2,placeholder:`请输入单价`})}),(0,S.jsx)(p.Item,{label:`采购数量`,name:`quantity`,rules:[{required:!0,message:`请输入采购数量`}],children:(0,S.jsx)(a,{className:`w-full`,min:0,precision:0,placeholder:`请输入采购数量`})}),(0,S.jsx)(p.Item,{label:`称重(斤)`,name:`weight`,rules:[{required:!0,message:`请输入称重`}],children:(0,S.jsx)(a,{className:`w-full`,min:0,precision:3,placeholder:`请输入称重`})})]})]}),(0,S.jsxs)(d,{title:`导出商品明细`,open:$e,onCancel:()=>z(!1),onOk:()=>{w&&ye(w.purchase.id,B>0?B:void 0),z(!1)},okText:`导出`,destroyOnHidden:!0,children:[(0,S.jsx)(`div`,{className:`py-2 text-gray-500`,children:`导出系统全部商品行(无订货的商品数量为 0),门店列附数量合计与突出颜色。`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 py-2`,children:[(0,S.jsx)(C,{children:`供应商:`}),(0,S.jsx)(l,{value:B,onChange:et,className:`flex-1`,options:[{value:0,label:`全部供应商`},...U.map(e=>({value:e.id,label:e.name}))]})]})]}),(0,S.jsx)(d,{title:`导出门店购买详情`,open:tt,onCancel:()=>V(!1),onOk:()=>{w&&be(w.purchase.id,nt===`current`&&O>0?O:void 0),V(!1)},okText:`导出`,destroyOnHidden:!0,children:(0,S.jsx)(oe.Group,{className:`py-2`,value:nt,onChange:e=>rt(e.target.value),options:[{value:`current`,label:`当前门店(${w?.stores.find(e=>e.id===O)?.name??`-`})`},{value:`all`,label:`全部门店(合并为一个 XLSX,每门店一个工作表)`}]})}),(0,S.jsxs)(d,{title:`导出供应商采购明细`,open:it,onCancel:()=>H(!1),onOk:()=>{w&&_e(w.purchase.id,at===`current`&&F>0?F:void 0),H(!1)},okText:`导出`,destroyOnHidden:!0,children:[(0,S.jsx)(`div`,{className:`py-2 text-gray-500`,children:`导出 XLSX 按「供应商 × 市场」拆分工作表,列序:品名、汇总、市场、各门店明细,有数据的单元格突出显示。`}),(0,S.jsx)(oe.Group,{className:`py-2`,value:at,onChange:e=>ot(e.target.value),options:[{value:`current`,label:`当前供应商(${U.find(e=>e.id===F)?.name??`-`})`},{value:`all`,label:`全部供应商(合并为一个 XLSX,每供应商×市场一个工作表)`}]})]})]})};export{Ae as default};