1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
import{N as e,P as t,d as n,h as r,i,r as a,s as o}from"./index-BoystVy-.js";import{a as ee,n as te,r as ne,t as re}from"./utils-COFIQvWo.js";var s=n(`inventory`,()=>{let n=t(`dashboard`),s=t(!0),c=t(``),l=t(`finished`),u=t(null),d=t(null),f=e({year:new Date().getFullYear(),quarter:``}),p=t([]),m=t([]),h=t([]),g=t([]),_=t([]),v=t([]),y=t([]),b=t([]),x=t([]),S=t([]),C=t([]),w=t(null),T=t([]),E=t([]),D=t(null),O=t(null),k=t([]),A=t([]),j=t([]),M=t([]),N=t([]),P=t(!1),F=t(!1),I=t(``),L=t(null),R=t([]),z=t([]),B=t(!1),V=t([]),H=t([]),U=t(!1),W=t({}),G=null,K=null,q=t(null),J=t(null),ie=t(null),ae=t(null),oe=e({get activeTab(){return n.value},set activeTab(e){n.value=e},get backendDbReady(){return s.value},set backendDbReady(e){s.value=e},get backendDbMessage(){return c.value},set backendDbMessage(e){c.value=e},get productCategory(){return l.value},set productCategory(e){l.value=e},get dashboard(){return u.value},set dashboard(e){u.value=e},get financeSummary(){return d.value},set financeSummary(e){d.value=e},financePeriod:f,get financeTransactions(){return p.value},set financeTransactions(e){p.value=e},get receivables(){return m.value},set receivables(e){m.value=e},get payables(){return h.value},set payables(e){h.value=e},get customerFinanceStatement(){return g.value},set customerFinanceStatement(e){g.value=e},get supplierFinanceStatement(){return _.value},set supplierFinanceStatement(e){_.value=e},get customerProductStatement(){return v.value},set customerProductStatement(e){v.value=e},get supplierProductStatement(){return y.value},set supplierProductStatement(e){y.value=e},get products(){return b.value},set products(e){b.value=e},get materials(){return x.value},set materials(e){x.value=e},get finishedProducts(){return S.value},set finishedProducts(e){S.value=e},get purchaseOrders(){return C.value},set purchaseOrders(e){C.value=e},get purchaseWarehouseId(){return w.value},set purchaseWarehouseId(e){w.value=e},get purchaseReceiveItems(){return T.value},set purchaseReceiveItems(e){T.value=e},get productionOrders(){return E.value},set productionOrders(e){E.value=e},get productionPlan(){return D.value},set productionPlan(e){D.value=e},get productionWarehouseId(){return O.value},set productionWarehouseId(e){O.value=e},get suppliers(){return k.value},set suppliers(e){k.value=e},get customers(){return A.value},set customers(e){A.value=e},get warehouses(){return j.value},set warehouses(e){j.value=e},get inventory(){return M.value},set inventory(e){M.value=e},get movements(){return N.value},set movements(e){N.value=e},get loading(){return P.value},set loading(e){P.value=e},get showModal(){return F.value},set showModal(e){F.value=e},get modalType(){return I.value},set modalType(e){I.value=e},get editingItem(){return L.value},set editingItem(e){L.value=e},get productBomItems(){return R.value},set productBomItems(e){R.value=e},get materialConsumptionItems(){return z.value},set materialConsumptionItems(e){z.value=e},get showMaterialConsumptionModal(){return B.value},set showMaterialConsumptionModal(e){B.value=e},get consumedMaterials(){return V.value},set consumedMaterials(e){V.value=e},get restockItems(){return H.value},set restockItems(e){H.value=e},get showRestockModal(){return U.value},set showRestockModal(e){U.value=e},get form(){return W.value},set form(e){W.value=e}}),Y=e=>{if(!e)return null;let t=String(e).trim().replace(`T`,` `).slice(0,16).match(/^(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]),a=Number(t[4]),o=Number(t[5]);return Number.isFinite(n+r+i+a+o)?new Date(n,r-1,i,a,o,0):null},se=e=>{if(!e)return``;let t=String(e).trim();if(/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}/.test(t))return t.slice(0,16);if(t.includes(`T`))return t.replace(`T`,` `).slice(0,16);let n=new Date(t);if(!Number.isFinite(n.getTime()))return``;let r=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${r(n.getMonth()+1)}-${r(n.getDate())} ${r(n.getHours())}:${r(n.getMinutes())}`},ce=e=>{if(!e)return null;let t=String(e).trim();return t.includes(`T`)?t.split(`T`)[0]:t.includes(` `)?t.split(` `)[0]:t.length===10?t:e instanceof Date?`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`:t},X=e=>{if(!e)return``;let t=String(e).trim();if(t.length===10&&!t.includes(`T`)&&!t.includes(` `))return t;let n=t.replace(` `,`T`);return n.length>=16?n.slice(0,16):n},le=e=>{if(!e)return``;let t=String(e).trim();return t.length===10&&!t.includes(`T`)&&!t.includes(` `)?t:t.replace(`T`,` `).slice(0,16)},Z=()=>{G&&=(G.destroy(),null),K&&=(K.destroy(),null)},ue=()=>{if(Z(),typeof AirDatepicker==`function`){if(I.value===`salesOrder`&&q.value){G=new AirDatepicker(q.value,{timepicker:!1,autoClose:!0,zIndex:2005,dateFormat:`yyyy-MM-dd`,onSelect:({formattedDate:e})=>{W.value.delivery_date=e||``,W.value.delivery_date_native=X(e||``)}});let e=Y(W.value.delivery_date);e&&G.selectDate(e,{silent:!0})}if(I.value===`purchaseOrder`&&J.value){K=new AirDatepicker(J.value,{timepicker:!1,autoClose:!0,zIndex:2005,dateFormat:`yyyy-MM-dd`,onSelect:({formattedDate:e})=>{W.value.expected_date=e||``,W.value.expected_date_native=X(e||``)}});let e=Y(W.value.expected_date);e&&K.selectDate(e,{silent:!0})}}},de=e=>{if(e===`delivery`&&G){G.show();return}if(e===`expected`&&K){K.show();return}let t=e===`delivery`?ie.value:ae.value;if(t){if(typeof t.showPicker==`function`){t.showPicker();return}t.focus(),t.click()}},fe=e=>({in:`其他入库`,out:`其他出库`,adjust:`库存调整`,purchase_in:`采购入库`,return_from_production:`生产退料入库`,outsource_return:`外协回库`,finish_in:`完工入库`,issue_to_production:`生产领料出库`,outsource_send:`外协发料出库`,shipment_out:`销售出库`,scrap_out:`报废出库`})[e]||e,pe=e=>[`purchase_in`,`return_from_production`,`outsource_return`,`finish_in`,`in`].includes(e)?`badge-success`:[`issue_to_production`,`outsource_send`,`shipment_out`,`scrap_out`,`out`].includes(e)?`badge-error`:`badge-warning`,me=e=>({draft:`已下单`,pending:`已下单`,partial_received:`部分收货`,received:`已收货`,paid:`已付款`,cancelled:`已作废`})[e]||e,he=e=>[`received`,`paid`,`cancelled`].includes(e),ge=e=>({manufacturing:`制造中`,delivered:`已交付`,paid:`已收款`,cancelled:`已作废`})[e]||e,_e=e=>({manufacturing:`制造中`,delivered:`已交付`,cancelled:`已作废`})[e]||e,ve=e=>({unpaid:`未收款`,paid:`已收款`})[e]||e,ye=e=>({pending:`已下单`,partial_received:`部分收货`,received:`已收货`,cancelled:`已作废`})[e]||e,be=async()=>{try{let e=await fetch(`/health`,{method:`GET`});if(!e.ok){s.value=!1,c.value=`后端服务异常,暂无法加载业务数据`;return}let t=await e.json().catch(()=>null);if(t&&t.database_connected===!1){s.value=!1,c.value=`数据库未连接,当前仅可浏览界面,业务数据暂不可用`;return}s.value=!0,c.value=``}catch{s.value=!1,c.value=`无法连接后端服务`}},xe=async()=>{P.value=!0;try{u.value=await o(`/api/dashboard`)}catch(e){i(e,`加载仪表盘`)}finally{P.value=!1}},Se=async()=>{P.value=!0;try{S.value=await o(`/api/products?item_type=finished&limit=100`)}catch(e){i(e,`加载成品`)}finally{P.value=!1}},Ce=async()=>{await Se()},we=async()=>{P.value=!0;try{x.value=await o(`/api/products?item_type=material&limit=100`)}catch(e){i(e,`加载物料`)}finally{P.value=!1}},Q=async()=>{P.value=!0;try{j.value=await o(`/api/warehouses`)}catch(e){i(e,`加载仓库`)}finally{P.value=!1}},Te=async()=>{if(x.value.length||await we(),j.value.length||await Q(),!j.value.length)try{await o(`/api/warehouses`,{method:`POST`,body:JSON.stringify({name:`默认仓库`})}),await Q(),a(`已自动创建默认仓库`,`success`)}catch(e){i(e,`自动创建默认仓库`)}},Ee=async()=>{P.value=!0;try{k.value=await o(`/api/suppliers`)}catch(e){i(e,`加载供应商`)}finally{P.value=!1}},De=async()=>{P.value=!0;try{let[e,t]=await Promise.all([o(`/api/sales-orders?limit=100`),o(`/api/warehouses`)]);E.value=e?.items||[],j.value=t||[],O.value||=j.value.find(e=>e.is_default)?.id||j.value[0]?.id||null}catch(e){i(e,`加载按单生产数据`)}finally{P.value=!1}},Oe=async()=>{P.value=!0;try{let[e,t]=await Promise.all([o(`/api/purchase-orders?limit=100`),o(`/api/warehouses`)]);C.value=e?.items||[],j.value=t||[],w.value||=j.value.find(e=>e.is_default)?.id||j.value[0]?.id||null}catch(e){i(e,`加载采购订单`)}finally{P.value=!1}},ke=async()=>{P.value=!0;try{A.value=await o(`/api/customers`)}catch(e){i(e,`加载客户`)}finally{P.value=!1}},Ae=async()=>{P.value=!0;try{M.value=(await o(`/api/inventory`))?.items||[]}catch(e){i(e,`加载库存`)}finally{P.value=!1}},je=async()=>{P.value=!0;try{N.value=(await o(`/api/stock-movements`))?.items||[]}catch(e){i(e,`加载变动记录`)}finally{P.value=!1}},Me=async()=>{P.value=!0;try{let e=Number(f.year)||new Date().getFullYear(),t=f.quarter?Number(f.quarter):null,n=t?`year=${e}&quarter=${t}`:`year=${e}`,[r,i,a,ee,te,ne,re,s]=await Promise.all([o(`/api/finance/summary?${n}`),o(`/api/finance/transactions?status=confirmed&limit=20&${n}`),o(`/api/finance/receivables?limit=20&${n}`),o(`/api/finance/payables?limit=20&${n}`),o(`/api/finance/partner-statement/customer?${n}`),o(`/api/finance/partner-statement/supplier?${n}`),o(`/api/finance/partner-product-statement/customer?${n}`),o(`/api/finance/partner-product-statement/supplier?${n}`)]);d.value=r,p.value=i?.items||[],m.value=a,h.value=ee,g.value=te.items||[],_.value=ne.items||[],v.value=re.items||[],y.value=s.items||[]}catch(e){i(e,`加载财务数据`)}finally{P.value=!1}},Ne=()=>{n.value===`finance`&&Me()},Pe=e=>{n.value=e},Fe=()=>{F.value=!1,I.value=``,L.value=null,R.value=[],T.value=[],W.value={},Z()},Ie=r(()=>(L.value?`编辑`:`新增`)+({product:W.value.item_type===`finished`?`成品`:`物料`,inventoryItem:`物料库存`,salesOrder:`销售订单`,purchaseOrder:`采购订单`,purchaseReceive:`采购到货入库`,supplier:`供应商`,customer:`客户`}[I.value]||``)),$=[{key:`overview`,title:`概览`,items:[{key:`dashboard`,label:`仪表盘`}]},{key:`sales`,title:`销售`,items:[{key:`sales_orders`,label:`销售订单管理`}]},{key:`purchase`,title:`采购`,items:[{key:`purchases`,label:`采购订单管理`}]},{key:`product`,title:`产品`,items:[{key:`products`,label:`成品管理`},{key:`materials`,label:`物料管理`}]},{key:`partner`,title:`往来单位`,items:[{key:`customers`,label:`客户管理`},{key:`suppliers`,label:`供应商管理`}]},{key:`warehouse`,title:`仓库`,items:[{key:`inventory`,label:`库存管理`},{key:`movements`,label:`库存变动记录`}]},{key:`finance`,title:`财务`,items:[{key:`finance`,label:`财务概览`}]}],Le=e(Object.fromEntries($.map(e=>[e.key,!0])));return{activeTab:n,backendDbReady:s,backendDbMessage:c,productCategory:l,dashboard:u,financeSummary:d,financePeriod:f,financeTransactions:p,receivables:m,payables:h,customerFinanceStatement:g,supplierFinanceStatement:_,customerProductStatement:v,supplierProductStatement:y,products:b,materials:x,finishedProducts:S,purchaseOrders:C,purchaseWarehouseId:w,purchaseReceiveItems:T,productionOrders:E,productionPlan:D,productionWarehouseId:O,suppliers:k,customers:A,warehouses:j,inventory:M,movements:N,loading:P,showModal:F,modalType:I,editingItem:L,productBomItems:R,materialConsumptionItems:z,showMaterialConsumptionModal:B,consumedMaterials:V,restockItems:H,showRestockModal:U,form:W,state:oe,deliveryDateInput:q,expectedDateInput:J,deliveryDateNativeInput:ie,expectedDateNativeInput:ae,menuGroups:$,openGroups:Le,activeMenu:r(()=>{for(let e of $){let t=e.items.find(e=>e.key===n.value);if(t)return{group:e,item:t}}return null}),modalTitle:Ie,parseDateTimeLocal:Y,toPickerValue:se,toApiDateTime:ce,toNativeValue:X,fromNativeValue:le,destroyPickers:Z,initPickers:ue,openDateTimePicker:de,getMovementTypeLabel:fe,getMovementBadgeClass:pe,getPurchaseOrderStatusLabel:me,isPurchaseOrderLocked:he,getSalesOrderStatusLabel:ge,getDeliveryStatusLabel:_e,getPaymentStatusLabel:ve,getReceiptStatusLabel:ye,checkBackendHealth:be,loadDashboard:xe,loadFinishedProducts:Se,loadProducts:Ce,loadMaterials:we,loadWarehouses:Q,ensureStockBaseData:Te,loadSuppliers:Ee,loadProductionOrders:De,loadPurchaseOrders:Oe,loadCustomers:ke,loadInventory:Ae,loadMovements:je,loadFinance:Me,refreshFinanceByPeriod:Ne,switchTab:Pe,closeModal:Fe,toggleGroup:e=>{Le[e]=!Le[e]},handleMenuClick:e=>{Pe(e)},switchProductCategory:e=>{l.value=e},formatCurrency:re,formatNumber:ee,formatDateTime:ne,formatDate:te}});export{s as t}; |