1 line
33 KiB
JavaScript
1 line
33 KiB
JavaScript
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"./PlusOutlined-B8K2rG8r.js";import{t as o}from"./table-BXi9q3AE.js";import{t as s}from"./space-Cu4QVMgQ.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 re}from"./XinForm-BPDYdeax.js";import{t as ie}from"./radio-CxFl70_7.js";import{n as ae}from"./card-DU2T2-YW.js";import{t as d}from"./spin-CfJYIffX.js";import{t as f}from"./modal-g8Q5gNCx.js";import{t as p}from"./descriptions-BLF6MKiu.js";import{t as m}from"./form-B3R3kIqp.js";import{t as oe}from"./image-CTRBNpBE.js";import{t as h}from"./input-CHcsaDtX.js";import{r as g}from"./CopyOutlined-pYq9KfGb.js";import{r as _}from"./PictureOutlined-CB8Pr7jP.js";import{t as se}from"./popconfirm-DyseZgpU.js";import{t as v}from"./tag-DBV1bHre.js";import{t as ce}from"./DeleteOutlined-DwOvobSM.js";import{t as y}from"./DownloadOutlined-DJY9Mu8c.js";import{t as le}from"./XinTable-BS9orhKm.js";import{t as b}from"./AuthButton-DvrpreK4.js";import{n as ue}from"./iStoreOrder-CyyYoLoV.js";import{a as de,c as fe,d as pe,f as me,i as he,l as ge,m as _e,n as ve,p as ye,r as be,s as xe,t as Se,u as Ce}from"./order-DuGMZhv9.js";import{n as x,t as we}from"./iPurchaseOrder-Dn-laOqY.js";import{a as Te,s as Ee}from"./goods-D5BPswzh.js";var S=e(t(),1),C=n(),{Title:De,Text:w}=r,Oe=(e,t)=>{let n=parseFloat(t);return Number.isFinite(n)&&n>0?e/n:e},T=()=>{let e=(0,S.useRef)(null),[t,n]=(0,S.useState)(!1),[T,ke]=(0,S.useState)(null),[Ae,je]=(0,S.useState)(!1),[Me,Ne]=(0,S.useState)(!1),[E,D]=(0,S.useState)(null),[Pe,Fe]=(0,S.useState)(!1),[O]=m.useForm(),[Ie,Le]=(0,S.useState)([]),[k,Re]=(0,S.useState)(!1),[ze,Be]=(0,S.useState)(!1),[A,Ve]=(0,S.useState)(null),[j,He]=(0,S.useState)(null),[Ue,M]=(0,S.useState)(!1),[N,P]=(0,S.useState)(null),[We,Ge]=(0,S.useState)(!1),[F]=m.useForm(),[I,Ke]=(0,S.useState)(`items`),[L,qe]=(0,S.useState)(0),[R,Je]=(0,S.useState)(null),[Ye,Xe]=(0,S.useState)(!1),[Ze,z]=(0,S.useState)(!1),[Qe,$e]=(0,S.useState)(!1),[B]=m.useForm(),[et,tt]=(0,S.useState)([]),[V,H]=(0,S.useState)(null),[nt,rt]=(0,S.useState)(!1),[U]=m.useForm(),[W,G]=(0,S.useState)(0),[it,K]=(0,S.useState)(!1),[q,at]=(0,S.useState)(0),[ot,st]=(0,S.useState)(!1),[ct,lt]=(0,S.useState)(`current`),[ut,dt]=(0,S.useState)(!1),[ft,pt]=(0,S.useState)(`current`),J=(0,S.useMemo)(()=>{let e=new Map;return(T?.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}))},[T?.items]),Y=(0,S.useMemo)(()=>!T||W<=0?[]:T.items.filter(e=>e.supplier_id===W).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)})),[T,W]),[mt,ht]=(0,S.useState)(!1),[X,Z]=(0,S.useState)(null),[gt,_t]=(0,S.useState)(!1),[vt,yt]=(0,S.useState)(!1),[Q]=m.useForm(),bt=m.useWatch(`stores`,Q)??[],xt=(X?.stores??[]).map((e,t)=>{let n=bt[t]??{},r=Number(n.delivery_fee??0),i=Number(n.box_num??0)*Number(e.box_price)+Number(n.tray_num??0)*Number(e.tray_price);return{added:i,total:Number(e.product_amount)+r+i}}),St=(X?.stores??[]).length>0&&X.stores.every(e=>e.bill!==null);(0,S.useEffect)(()=>{Ee().then(e=>Le(e.data.data??[]))},[]),(0,S.useEffect)(()=>{k&&j&&Mt()},[k,j]),(0,S.useEffect)(()=>{T&&T.stores.length>0&&qe(e=>T.stores.some(t=>t.id===e)?e:T.stores[0].id)},[T]),(0,S.useEffect)(()=>{J.length>0?G(e=>J.some(t=>t.id===e)?e:J[0].id):G(0)},[J]),(0,S.useEffect)(()=>{t&&I===`stores`&&T&&L>0&&wt()},[t,I,L,T?.purchase.id]);let $=async e=>{je(!0);try{let t=await ge(e);ke(t.data.data??null)}finally{je(!1)}},Ct=async e=>{Ke(`items`),Je(null),n(!0),await $(e)},wt=async()=>{if(!(!T||L<=0)){Xe(!0);try{let e=await Ce(T.purchase.id,L);Je(e.data.data??null)}finally{Xe(!1)}}},Tt=async()=>{await wt(),T&&await $(T.purchase.id),await e.current?.reload()},Et=()=>{B.resetFields(),z(!0),et.length===0&&Te().then(e=>tt(e.data.data??[]))},Dt=async e=>{if(!(!T||L<=0)){$e(!0);try{await Se(T.purchase.id,L,e),_.success(`已添加单品,订货单与采购单汇总已重算`),z(!1),await Tt()}finally{$e(!1)}}},Ot=e=>{H(e),U.setFieldsValue({quantity:e.quantity,price:Number(e.price??0),weight:Number(e.weight??0)})},kt=async e=>{if(!(!T||!V||L<=0)){rt(!0);try{await _e(T.purchase.id,L,V.product_id,e),_.success(`单品已更新,订货单与采购单汇总已重算`),H(null),await Tt()}finally{rt(!1)}}},At=async e=>{!T||L<=0||(await pe(T.purchase.id,L,e.product_id),_.success(`已移除单品,订货单与采购单汇总已重算`),await Tt())},jt=(e,t)=>{He({productId:e.product_id,storeId:t.id}),Ve(null),Re(!0)},Mt=async()=>{if(!(!T||!j)){Be(!0);try{let e=await fe(T.purchase.id,j.productId,j.storeId);Ve(e.data.data??null)}finally{Be(!1)}}},Nt=async()=>{await Mt(),T&&await $(T.purchase.id),await e.current?.reload()},Pt=e=>{P(e),F.setFieldsValue({quantity:e.quantity,price:Number(e.price??0),weight:Number(e.weight??0)}),M(!0)},Ft=async e=>{if(N?.id){Ge(!0);try{await me(N.id,e),_.success(`明细已更新,订货单与采购单汇总已重算`),M(!1),P(null),await Nt()}finally{Ge(!1)}}},It=e=>{D(e),O.setFieldsValue({product_name:e.product_name,supplier_id:e.supplier_id>0?e.supplier_id:void 0,product_spec:e.product_spec,unit:e.unit,cost_price:Number(e.cost_price)})},Lt=async t=>{if(!(!T||!E)){Fe(!0);try{let n=await ye(T.purchase.id,E.product_id,{...t,supplier_id:t.supplier_id??0});_.success(`已更新 ${n.data.data?.count??0} 条订货明细`),D(null),await $(T.purchase.id),await e.current?.reload()}finally{Fe(!1)}}},Rt=async e=>{ht(!0),_t(!0),Z(null);try{let t=(await xe(e)).data.data??null;Z(t),Q.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}))})}finally{_t(!1)}},zt=async t=>{if(X){yt(!0);try{let n=await de(X.purchase.id,t.stores);_.success(`已生成 ${n.data.data?.count??0} 张门店账单,采购单订单已关联`),ht(!1),Z(null),await e.current?.reload(),T&&T.purchase.id===X.purchase.id&&await $(T.purchase.id)}finally{yt(!1)}}},Bt=async t=>{Ne(!0);try{await re(`/purchase/order/${t}/finish`,{status:3}),_.success(`采购单已标记完成`),await e.current?.reload()}finally{Ne(!1)}},Vt=()=>{let e=[{title:`品名`,dataIndex:`product_name`,width:120,align:`center`},{title:`供应商`,dataIndex:`supplier`,width:110,align:`center`,render:(e,t)=>t.supplier?.name??`-`},{title:`市场`,dataIndex:`market`,width:90,align:`center`,render:e=>e||`-`},{title:`参考零售价`,key:`retail_price`,width:100,align:`center`,render:(e,t)=>{let n=Number(t.quantity??0);return n<=0?(0,C.jsx)(w,{type:`secondary`,children:`-`}):`¥${Oe(Number(t.amount??0)/n,t.product_spec??``).toFixed(2)}`}},{title:`包规`,dataIndex:`product_spec`,align:`center`,width:90,render:e=>e||`-`},{title:`单位`,dataIndex:`unit`,width:70,align:`center`,render:e=>e||`-`},{title:`成本`,dataIndex:`cost_price`,width:90,align:`center`,render:e=>`¥${Number(e).toFixed(2)}`}],t=(T?.stores??[]).map(e=>({title:(0,C.jsx)(`span`,{className:`text-[red]`,children:e.name}),key:`store-${e.id}`,width:100,align:`center`,render:(t,n)=>{let i=n.cells[e.id];return i===void 0?(0,C.jsx)(w,{type:`secondary`,children:`-`}):(0,C.jsx)(r.Link,{onClick:()=>jt(n,e),children:i})}})),n=[{title:`合计数量`,key:`total_quantity`,width:90,align:`center`,render:(e,t)=>(0,C.jsx)(w,{strong:!0,children:t.quantity})},{title:`操作`,key:`action`,width:90,fixed:`right`,align:`center`,render:(e,t)=>(0,C.jsx)(C.Fragment,{children:T?.purchase.status===0?(0,C.jsx)(b,{auth:`purchase.order.update`,children:(0,C.jsx)(c,{size:`small`,type:`link`,icon:(0,C.jsx)(g,{}),onClick:()=>It(t),children:`修改`})}):`-`})}];return[...e,...t,...n]},Ht=()=>{let e=T?.stores??[],t=T?.items??[],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,C.jsxs)(o.Summary.Row,{children:[(0,C.jsx)(o.Summary.Cell,{index:0,colSpan:7,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:`成本统计(按门店)`})}),n.map((t,n)=>(0,C.jsx)(o.Summary.Cell,{index:7+n,align:`center`,children:(0,C.jsxs)(w,{strong:!0,children:[`¥`,t.toFixed(2)]})},e[n].id)),(0,C.jsx)(o.Summary.Cell,{index:7+e.length,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:r})}),(0,C.jsx)(o.Summary.Cell,{index:8+e.length,align:`center`,children:(0,C.jsxs)(w,{strong:!0,children:[`¥`,i.toFixed(2)]})})]})},Ut=[{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)=>`¥${Oe(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,C.jsx)(w,{strong:!0,children:e})},{title:`重量`,dataIndex:`weight`,width:90,align:`center`,render:e=>`${e||`-`}斤`},{title:`预计金额`,dataIndex:`amount`,width:110,align:`center`,render:e=>(0,C.jsxs)(w,{strong:!0,children:[`¥`,Number(e).toFixed(2)]})},{title:`操作`,key:`action`,width:130,align:`center`,render:(e,t)=>T?.purchase.status===0?(0,C.jsxs)(s,{size:0,children:[(0,C.jsx)(b,{auth:`purchase.order.update`,children:(0,C.jsx)(c,{type:`link`,size:`small`,icon:(0,C.jsx)(g,{}),onClick:()=>Ot(t),children:`编辑`})}),(0,C.jsx)(b,{auth:`purchase.order.update`,children:(0,C.jsx)(se,{title:`移除该单品?`,description:`将从「${R?.store?.name??`该门店`}」采购明细中移除「${t.product_name}」`,onConfirm:()=>At(t),children:(0,C.jsx)(c,{type:`link`,size:`small`,danger:!0,icon:(0,C.jsx)(ce,{}),children:`移除`})})})]}):(0,C.jsx)(w,{type:`secondary`,children:`-`})}],Wt=()=>{let e=R?.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,C.jsxs)(o.Summary.Row,{children:[(0,C.jsx)(o.Summary.Cell,{index:0,colSpan:6,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:`合计`})}),(0,C.jsx)(o.Summary.Cell,{index:6,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:t})}),(0,C.jsx)(o.Summary.Cell,{index:7,align:`center`,children:(0,C.jsxs)(w,{strong:!0,children:[r.toFixed(3),`斤`]})}),(0,C.jsx)(o.Summary.Cell,{index:8,align:`center`,children:(0,C.jsxs)(w,{strong:!0,type:`danger`,children:[`¥`,n.toFixed(2)]})}),(0,C.jsx)(o.Summary.Cell,{index:9,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:`-`})})]})},Gt=[{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,C.jsx)(w,{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,C.jsxs)(w,{strong:!0,children:[`¥`,Number(e).toFixed(2)]})}],Kt=()=>{let e=Y.reduce((e,t)=>e+Number(t.quantity),0),t=Y.reduce((e,t)=>e+Number(t.weight),0),n=Y.reduce((e,t)=>e+Number(t.amount),0);return(0,C.jsxs)(o.Summary.Row,{children:[(0,C.jsx)(o.Summary.Cell,{index:0,colSpan:5,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:`合计`})}),(0,C.jsx)(o.Summary.Cell,{index:5,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:e})}),(0,C.jsx)(o.Summary.Cell,{index:6,align:`center`,children:(0,C.jsxs)(w,{strong:!0,children:[t.toFixed(3),`斤`]})}),(0,C.jsx)(o.Summary.Cell,{index:7,align:`center`,children:(0,C.jsxs)(w,{strong:!0,type:`danger`,children:[`¥`,n.toFixed(2)]})})]})},qt=[{title:`门店`,dataIndex:`store_name`,width:140,align:`center`},{title:`账单号`,dataIndex:`bill_no`,width:180,align:`center`,render:e=>(0,C.jsx)(w,{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,C.jsxs)(w,{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,C.jsx)(v,{color:t?.color,children:t?.text})}}],Jt=()=>{let e=T?.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,C.jsxs)(o.Summary.Row,{children:[(0,C.jsx)(o.Summary.Cell,{index:0,colSpan:3,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:`合计`})}),(0,C.jsx)(o.Summary.Cell,{index:3,align:`center`,children:(0,C.jsxs)(w,{strong:!0,children:[`¥`,t.toFixed(2)]})}),(0,C.jsx)(o.Summary.Cell,{index:4,align:`center`,children:(0,C.jsxs)(w,{strong:!0,children:[`¥`,n.toFixed(2)]})}),(0,C.jsx)(o.Summary.Cell,{index:5,colSpan:2,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:`-`})}),(0,C.jsx)(o.Summary.Cell,{index:7,align:`center`,children:(0,C.jsxs)(w,{strong:!0,children:[`¥`,r.toFixed(2)]})}),(0,C.jsx)(o.Summary.Cell,{index:8,align:`center`,children:(0,C.jsxs)(w,{strong:!0,type:`danger`,children:[`¥`,i.toFixed(2)]})}),(0,C.jsx)(o.Summary.Cell,{index:9,align:`center`,children:(0,C.jsx)(w,{strong:!0,children:`-`})})]})},Yt=[{title:`采购单号`,dataIndex:`purchase_no`,valueType:`text`,hideInForm:!0,align:`center`,width:260,render:(e,t)=>(0,C.jsx)(w,{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,C.jsxs)(w,{strong:!0,children:[`¥`,t.actual_amount]}):(0,C.jsx)(w,{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(x).map(([e,t])=>({value:Number(e),label:t.text}))},render:(e,t)=>{let n=x[t.status??0];return(0,C.jsx)(v,{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,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`mb-5`,children:[(0,C.jsx)(De,{level:3,children:`采购单`}),(0,C.jsx)(w,{type:`secondary`,children:`在「门店订单」页勾选已接单订单合并生成采购单;采购单支持修改订单信息。`})]}),(0,C.jsx)(le,{api:`/purchase/order`,columns:Yt,rowKey:`id`,accessName:`purchase.order`,tableRef:e,operateRender:(e,t)=>[e.status===0?t.edit:null,(0,C.jsx)(c,{size:`small`,icon:(0,C.jsx)(ee,{}),type:`primary`,onClick:()=>Ct(e.id)},`detail`),e.status===0?(0,C.jsx)(b,{auth:`purchase.order.update`,children:(0,C.jsx)(se,{title:`确认该采购单已完成?`,description:`已完成采购单将锁定,不能再修改订单信息`,onConfirm:()=>Bt(e.id),children:(0,C.jsx)(c,{type:`primary`,size:`small`,variant:`solid`,color:`green`,loading:Me,children:`完成采购`})})}):(0,C.jsx)(b,{auth:`purchase.order.bill`,children:(0,C.jsx)(c,{type:`primary`,size:`small`,variant:`solid`,color:`orange`,icon:(0,C.jsx)(te,{}),onClick:()=>Rt(e.id),children:`生成账单`})})],operateProps:{width:300},formProps:!1}),(0,C.jsx)(i,{title:T?`采购单 ${T.purchase.purchase_no}`:`采购单详情`,open:t,onClose:()=>n(!1),size:1200,loading:Ae,children:T&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(De,{level:5,className:`mb-3!`,children:`采购单信息`}),(0,C.jsxs)(p,{column:3,size:`small`,bordered:!0,children:[(0,C.jsx)(p.Item,{label:`采购日期`,children:T.purchase.purchase_date}),(0,C.jsx)(p.Item,{label:`状态`,children:(0,C.jsx)(v,{color:x[T.purchase.status??0]?.color,children:x[T.purchase.status??0]?.text})}),(0,C.jsx)(p.Item,{label:`制单人`,children:T.purchase.operator?.nickname??`-`}),(0,C.jsxs)(p.Item,{label:`预估成本`,children:[`¥`,T.purchase.estimate_amount]}),(0,C.jsxs)(p.Item,{label:`实际成本`,children:[`¥`,T.purchase.actual_amount]}),(0,C.jsx)(p.Item,{label:`总件数`,children:T.purchase.total_quantity}),(0,C.jsx)(p.Item,{label:`总重量`,children:T.purchase.total_weight}),(0,C.jsx)(p.Item,{label:`创建时间`,span:2,children:T.purchase.created_at}),(0,C.jsx)(p.Item,{label:`备注`,span:3,children:T.purchase.remark})]}),(0,C.jsx)(ae,{activeKey:I,onChange:Ke,className:`mt-3!`,items:[{key:`items`,label:`商品明细`},{key:`stores`,label:`门店购买详情`},{key:`suppliers`,label:`供应商采购明细`},{key:`bills`,label:`门店账单`}]}),I===`stores`?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(w,{children:`选择门店:`}),(0,C.jsx)(l,{value:L||void 0,onChange:e=>qe(e),placeholder:`选择门店`,className:`w-60!`,showSearch:!0,optionFilterProp:`label`,options:T.stores.map(e=>({value:e.id,label:e.name}))})]}),(0,C.jsxs)(s,{children:[T.purchase.status===0&&(0,C.jsx)(b,{auth:`purchase.order.update`,children:(0,C.jsx)(c,{icon:(0,C.jsx)(ne,{}),onClick:Et,children:`新增单品`})}),(0,C.jsx)(b,{auth:`purchase.order.export`,children:(0,C.jsx)(c,{type:`primary`,ghost:!0,icon:(0,C.jsx)(y,{}),onClick:()=>{lt(`current`),st(!0)},children:`导出`})})]})]}),(0,C.jsx)(d,{spinning:Ye,children:R&&R.items.length>0?(0,C.jsx)(o,{rowKey:`product_id`,size:`small`,bordered:!0,columns:Ut,dataSource:R.items,pagination:!1,scroll:{x:`max-content`},summary:Wt}):!Ye&&(0,C.jsx)(u,{image:u.PRESENTED_IMAGE_SIMPLE,description:`该门店在此采购单中无采购商品`,className:`py-8!`})})]}):I===`suppliers`?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(w,{children:`选择供应商:`}),(0,C.jsx)(l,{value:W||void 0,onChange:e=>G(e),placeholder:`选择供应商`,className:`w-60!`,showSearch:!0,optionFilterProp:`label`,options:J.map(e=>({value:e.id,label:e.name}))})]}),(0,C.jsx)(b,{auth:`purchase.order.export`,children:(0,C.jsx)(c,{type:`primary`,ghost:!0,icon:(0,C.jsx)(y,{}),onClick:()=>{pt(`current`),dt(!0)},children:`导出`})})]}),Y.length>0?(0,C.jsx)(o,{rowKey:`product_id`,size:`small`,bordered:!0,columns:Gt,dataSource:Y,pagination:!1,scroll:{x:`max-content`},summary:Kt}):(0,C.jsx)(u,{image:u.PRESENTED_IMAGE_SIMPLE,description:`该供应商在此采购单中无采购明细`,className:`py-8!`})]}):I===`bills`?T.bills.length>0?(0,C.jsx)(o,{rowKey:`id`,size:`small`,bordered:!0,columns:qt,dataSource:T.bills,pagination:!1,scroll:{x:`max-content`},summary:Jt}):(0,C.jsx)(u,{image:u.PRESENTED_IMAGE_SIMPLE,description:T.purchase.status===0?`采购单完成后可在列表操作列生成账单`:`该采购单暂未生成账单`,className:`py-8!`}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(s,{style:{marginBottom:20},children:(0,C.jsx)(b,{auth:`purchase.order.export`,children:(0,C.jsx)(c,{type:`primary`,ghost:!0,icon:(0,C.jsx)(y,{}),onClick:()=>{at(0),K(!0)},children:`导出`})},`export`)}),(0,C.jsx)(o,{rowKey:`product_id`,size:`small`,bordered:!0,columns:Vt(),dataSource:T.items,pagination:!1,scroll:{x:`max-content`},summary:Ht})]})]})}),(0,C.jsxs)(f,{title:E?`修改「${E.product_name}」`:`修改明细行`,open:E!==null,onCancel:()=>D(null),destroyOnHidden:!0,footer:[(0,C.jsx)(c,{onClick:()=>D(null),children:`取消`},`cancel`),(0,C.jsx)(c,{type:`primary`,loading:Pe,onClick:()=>O.submit(),children:`保存`},`purchase`)],children:[(0,C.jsx)(`div`,{className:`py-2 text-gray-500`,children:`保存将同步修改本采购单中该商品的所有订单项,并同步保存到商品档案(商品列表);修改成本时,各门店单价按等级上浮比例自动重算。`}),(0,C.jsxs)(m,{form:O,layout:`vertical`,onFinish:Lt,children:[(0,C.jsx)(m.Item,{label:`品名`,name:`product_name`,rules:[{required:!0,message:`请输入品名`},{max:100}],children:(0,C.jsx)(h,{maxLength:100})}),(0,C.jsx)(m.Item,{label:`供应商`,name:`supplier_id`,rules:[{required:!0,message:`请选择供应商`}],children:(0,C.jsx)(l,{allowClear:!0,showSearch:{optionFilterProp:`label`},placeholder:`选择供应商`,options:Ie.map(e=>({value:e.id,label:e.name}))})}),(0,C.jsx)(m.Item,{label:`包规`,name:`product_spec`,rules:[{required:!0,message:`请输入包规`},{max:100}],children:(0,C.jsx)(h,{maxLength:100,placeholder:`如:10斤/箱`})}),(0,C.jsx)(m.Item,{label:`单位`,name:`unit`,rules:[{required:!0,message:`请输入单位`},{max:20}],children:(0,C.jsx)(h,{maxLength:20,placeholder:`如:斤`})}),(0,C.jsx)(m.Item,{label:`成本`,name:`cost_price`,rules:[{required:!0,message:`请输入成本`}],children:(0,C.jsx)(a,{min:0,precision:2,prefix:`¥`,className:`w-full`})})]})]}),(0,C.jsx)(f,{title:A?`${A.store?.name??``} · ${A.product?.name??``}`:`门店商品明细`,open:k,onCancel:()=>Re(!1),footer:null,width:1e3,destroyOnHidden:!0,styles:{body:{paddingTop:16}},children:(0,C.jsx)(d,{spinning:ze,children:A&&(0,C.jsxs)(C.Fragment,{children:[A.items.length===0?(0,C.jsx)(u,{image:u.PRESENTED_IMAGE_SIMPLE,description:`该门店无此商品明细`,className:`py-8!`}):(0,C.jsxs)(`div`,{className:`overflow-hidden rounded border border-gray-200`,children:[(0,C.jsxs)(`div`,{className:`flex bg-gray-50 px-4 py-2 text-sm text-gray-500`,children:[(0,C.jsx)(`div`,{className:`flex-1`,children:`商品信息`}),(0,C.jsx)(`div`,{className:`w-30 shrink-0 text-center`,children:`单价`}),(0,C.jsx)(`div`,{className:`w-26 shrink-0 text-center`,children:`订货量`}),(0,C.jsx)(`div`,{className:`w-33 shrink-0 text-center`,children:`订货金额`}),(0,C.jsx)(`div`,{className:`w-33 shrink-0 text-center`,children:`重量`}),(0,C.jsx)(`div`,{className:`w-40 shrink-0 text-center`,children:`操作`})]}),A.items.map(e=>(0,C.jsxs)(`div`,{className:`flex items-center border-t border-gray-100 px-4 py-3`,children:[(0,C.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center`,children:[(0,C.jsx)(oe.PreviewGroup,{children:e.image?(0,C.jsx)(oe,{src:e.image,width:48,height:48,style:{objectFit:`cover`,borderRadius:4}}):(0,C.jsx)(`div`,{className:`flex h-12 w-12 shrink-0 items-center justify-center rounded bg-gray-100 text-xs text-gray-400`,children:`暂无图片`})}),(0,C.jsxs)(`div`,{className:`ml-3 min-w-0`,children:[(0,C.jsxs)(`div`,{className:`text-sm font-medium`,children:[e.product_name,(0,C.jsx)(v,{className:`ml-2!`,color:ue[e.order_status]?.color,children:ue[e.order_status]?.text})]}),(0,C.jsxs)(`div`,{className:`mt-0.5 text-xs text-gray-500`,children:[`订单:`,e.order_no]}),e.remark?(0,C.jsxs)(`div`,{className:`mt-0.5 truncate text-xs text-gray-500`,children:[`备注:`,e.remark]}):null]})]}),(0,C.jsxs)(`div`,{className:`w-30 shrink-0 text-center`,children:[`¥`,e.price]}),(0,C.jsx)(`div`,{className:`w-26 shrink-0 text-center`,children:e.quantity}),(0,C.jsx)(`div`,{className:`w-33 shrink-0 text-center`,children:(0,C.jsxs)(w,{strong:!0,children:[`¥`,e.amount]})}),(0,C.jsxs)(`div`,{className:`w-33 shrink-0 text-center`,children:[e.weight??`-`,` 斤`]}),(0,C.jsx)(`div`,{className:`w-40 shrink-0 text-center`,children:T?.purchase.status===0?(0,C.jsx)(s,{size:0,children:(0,C.jsx)(b,{auth:`purchase.order.update`,children:(0,C.jsx)(c,{type:`link`,size:`small`,icon:(0,C.jsx)(g,{}),onClick:()=>Pt(e),children:`编辑`})})}):(0,C.jsx)(w,{type:`secondary`,children:`-`})})]},e.id))]}),A.items.length>0&&(0,C.jsxs)(`div`,{className:`mt-3! flex justify-end gap-6 text-sm`,children:[(0,C.jsxs)(w,{type:`secondary`,children:[`合计数量:`,(0,C.jsx)(w,{strong:!0,children:A.items.reduce((e,t)=>e+t.quantity,0)})]}),(0,C.jsxs)(w,{type:`secondary`,children:[`合计订货金额:`,(0,C.jsxs)(w,{strong:!0,type:`danger`,children:[`¥`,A.items.reduce((e,t)=>e+Number(t.amount),0).toFixed(2)]})]})]})]})})}),(0,C.jsxs)(f,{title:N?`编辑「${N.product_name}」`:`编辑明细`,open:Ue,onCancel:()=>{M(!1),P(null)},onOk:()=>F.submit(),confirmLoading:We,okText:`保存`,destroyOnHidden:!0,children:[(0,C.jsxs)(`div`,{className:`py-2 text-gray-500`,children:[`订单 `,N?.order_no,`;修改保存后,系统将自动重算明细金额、订货单与采购单汇总。`]}),(0,C.jsxs)(m,{form:F,layout:`vertical`,onFinish:Ft,children:[(0,C.jsx)(m.Item,{label:`单价(元)`,name:`price`,rules:[{required:!0,message:`请输入单价`}],children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:2,placeholder:`请输入单价`})}),(0,C.jsx)(m.Item,{label:`订货量`,name:`quantity`,rules:[{required:!0,message:`请输入订货量`}],children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:0,placeholder:`请输入订货量`})}),(0,C.jsx)(m.Item,{label:`称重`,name:`weight`,rules:[{required:!0,message:`请输入称重`}],children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:3,placeholder:`请输入称重`})})]})]}),(0,C.jsx)(f,{title:X?`生成账单 · ${X.purchase.purchase_no}`:`生成账单`,open:mt,onCancel:()=>{ht(!1),Z(null)},onOk:()=>Q.submit(),confirmLoading:vt,okText:`确认生成`,okButtonProps:{disabled:St},width:960,destroyOnHidden:!0,children:(0,C.jsx)(d,{spinning:gt,children:X&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`py-2 text-gray-500`,children:[`每个门店单独生成一张账单;商品金额由订单汇总不可修改,请填写各门店的配送费与周转筐/托盘数量(正数=压筐附加金额,负数=回筐抵扣金额)。`,St?`该采购单已全部生成账单,仅可查看。`:`生成后采购单中的全部订单将关联到对应门店账单。`]}),(0,C.jsx)(m,{form:Q,layout:`vertical`,onFinish:zt,children:(0,C.jsx)(m.List,{name:`stores`,children:e=>(0,C.jsxs)(`div`,{className:`overflow-hidden rounded border border-gray-200`,children:[(0,C.jsxs)(`div`,{className:`flex bg-gray-50 px-4 py-2 text-sm text-gray-500`,children:[(0,C.jsx)(`div`,{className:`w-40 shrink-0`,children:`门店`}),(0,C.jsx)(`div`,{className:`w-28 shrink-0 text-center`,children:`商品金额`}),(0,C.jsx)(`div`,{className:`w-32 shrink-0 text-center`,children:`配送费(元)`}),(0,C.jsxs)(`div`,{className:`w-32 shrink-0 text-center`,children:[`周转筐(¥`,X.stores[0]?.box_price??`0.00`,`/个)`]}),(0,C.jsxs)(`div`,{className:`w-32 shrink-0 text-center`,children:[`周转托盘(¥`,X.stores[0]?.tray_price??`0.00`,`/个)`]}),(0,C.jsx)(`div`,{className:`w-28 shrink-0 text-center`,children:`附加金额`}),(0,C.jsx)(`div`,{className:`flex-1 text-center`,children:`账单总金额`})]}),e.map(e=>{let t=X.stores[e.name],n=t?.bill!=null;return(0,C.jsxs)(`div`,{className:`flex items-center border-t border-gray-100 px-4 py-2`,children:[(0,C.jsxs)(`div`,{className:`w-40 shrink-0 pr-2 text-sm`,children:[(0,C.jsx)(`div`,{children:t?.store_name??`-`}),(0,C.jsxs)(`div`,{className:`text-xs text-gray-400`,children:[t?.order_count??0,` 笔订单`,n&&(0,C.jsx)(v,{className:`ml-1!`,color:`success`,children:`已生成`})]})]}),(0,C.jsx)(`div`,{className:`w-28 shrink-0 text-center`,children:(0,C.jsxs)(w,{strong:!0,children:[`¥`,t?.product_amount??`0.00`]})}),(0,C.jsx)(m.Item,{name:[e.name,`store_id`],hidden:!0,children:(0,C.jsx)(h,{})}),(0,C.jsx)(m.Item,{className:`m-0! w-32 shrink-0 px-1!`,name:[e.name,`delivery_fee`],rules:[{required:!0,message:`请输入配送费`}],children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:2,disabled:n,placeholder:`配送费`})}),(0,C.jsx)(m.Item,{className:`m-0! w-32 shrink-0 px-1!`,name:[e.name,`box_num`],rules:[{required:!0,message:`请输入周转筐数量`}],children:(0,C.jsx)(a,{className:`w-full`,precision:0,disabled:n,placeholder:`正压负回`})}),(0,C.jsx)(m.Item,{className:`m-0! w-32 shrink-0 px-1!`,name:[e.name,`tray_num`],rules:[{required:!0,message:`请输入周转托盘数量`}],children:(0,C.jsx)(a,{className:`w-full`,precision:0,disabled:n,placeholder:`正压负回`})}),(0,C.jsxs)(`div`,{className:`w-28 shrink-0 text-center`,children:[`¥`,(n?Number(t.bill.added_amount):xt[e.name]?.added??0).toFixed(2)]}),(0,C.jsxs)(`div`,{className:`flex-1 text-center`,children:[(0,C.jsxs)(w,{strong:!0,type:`danger`,children:[`¥`,(n?Number(t.bill.total_amount):xt[e.name]?.total??0).toFixed(2)]}),n&&(0,C.jsx)(`div`,{className:`text-xs text-gray-400`,children:t.bill.bill_no})]})]},e.key)})]})})})]})})}),(0,C.jsxs)(f,{title:`新增单品 · ${R?.store?.name??``}`,open:Ze,onCancel:()=>z(!1),onOk:()=>B.submit(),confirmLoading:Qe,okText:`添加`,destroyOnHidden:!0,children:[(0,C.jsx)(`div`,{className:`py-2 text-gray-500`,children:`单品将挂靠到该门店在此采购单中的最新一笔订单;单价按门店等级上浮比例自动换算。`}),(0,C.jsxs)(m,{form:B,layout:`vertical`,onFinish:Dt,children:[(0,C.jsx)(m.Item,{label:`商品`,name:`product_id`,rules:[{required:!0,message:`请选择商品`}],children:(0,C.jsx)(l,{showSearch:{optionFilterProp:`label`},placeholder:`搜索并选择商品`,options:et.map(e=>({value:e.id,label:`${e.name}${e.spec?`(${e.spec})`:``}`}))})}),(0,C.jsx)(m.Item,{label:`采购数量`,name:`quantity`,rules:[{required:!0,message:`请输入采购数量`}],children:(0,C.jsx)(a,{className:`w-full`,min:1,precision:0,placeholder:`请输入采购数量(包数)`})}),(0,C.jsx)(m.Item,{label:`称重(斤,可选)`,name:`weight`,children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:3,placeholder:`请输入称重`})})]})]}),(0,C.jsxs)(f,{title:V?`编辑「${V.product_name}」`:`编辑单品`,open:V!==null,onCancel:()=>H(null),onOk:()=>U.submit(),confirmLoading:nt,okText:`保存`,destroyOnHidden:!0,children:[(0,C.jsx)(`div`,{className:`py-2 text-gray-500`,children:`修改保存后,系统将自动重算明细金额、订货单与采购单汇总。`}),(0,C.jsxs)(m,{form:U,layout:`vertical`,onFinish:kt,children:[(0,C.jsx)(m.Item,{label:`单价(元)`,name:`price`,rules:[{required:!0,message:`请输入单价`}],children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:2,placeholder:`请输入单价`})}),(0,C.jsx)(m.Item,{label:`采购数量`,name:`quantity`,rules:[{required:!0,message:`请输入采购数量`}],children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:0,placeholder:`请输入采购数量`})}),(0,C.jsx)(m.Item,{label:`称重(斤)`,name:`weight`,rules:[{required:!0,message:`请输入称重`}],children:(0,C.jsx)(a,{className:`w-full`,min:0,precision:3,placeholder:`请输入称重`})})]})]}),(0,C.jsxs)(f,{title:`导出商品明细`,open:it,onCancel:()=>K(!1),onOk:()=>{T&&ve(T.purchase.id,q>0?q:void 0),K(!1)},okText:`导出`,destroyOnHidden:!0,children:[(0,C.jsx)(`div`,{className:`py-2 text-gray-500`,children:`导出系统全部商品行(无订货的商品数量为 0),门店列附数量合计与突出颜色。`}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2 py-2`,children:[(0,C.jsx)(w,{children:`供应商:`}),(0,C.jsx)(l,{value:q,onChange:at,className:`flex-1`,options:[{value:0,label:`全部供应商`},...J.map(e=>({value:e.id,label:e.name}))]})]})]}),(0,C.jsx)(f,{title:`导出门店购买详情`,open:ot,onCancel:()=>st(!1),onOk:()=>{T&&be(T.purchase.id,ct===`current`&&L>0?L:void 0),st(!1)},okText:`导出`,destroyOnHidden:!0,children:(0,C.jsx)(ie.Group,{className:`py-2`,value:ct,onChange:e=>lt(e.target.value),options:[{value:`current`,label:`当前门店(${T?.stores.find(e=>e.id===L)?.name??`-`})`},{value:`all`,label:`全部门店(合并为一个 XLSX,每门店一个工作表)`}]})}),(0,C.jsx)(f,{title:`导出供应商采购明细`,open:ut,onCancel:()=>dt(!1),onOk:()=>{T&&he(T.purchase.id,ft===`current`&&W>0?W:void 0),dt(!1)},okText:`导出`,destroyOnHidden:!0,children:(0,C.jsx)(ie.Group,{className:`py-2`,value:ft,onChange:e=>pt(e.target.value),options:[{value:`current`,label:`当前供应商(${J.find(e=>e.id===W)?.name??`-`})`},{value:`all`,label:`全部供应商(合并为一个 XLSX,每供应商一个工作表)`}]})})]})};export{T as default}; |