1. 移除工单、工件、日排产中的冗余工位组合/接驳台字段 2. 新增工位接驳台编码字段与唯一约束,关联WMS接驳台主数据 3. 重构日排产为工位产量分配模式,替代原接驳台列表 4. 新增备料单工位级字段与分批出库支持 5. 移除定时同步可生产数量,改为WMS实时拉取接口 6. 过滤操作日志,排除登录/退出相关日志 7. 调整仪表盘工序展示逻辑为今日派工路线 8. 新增接驳台维护菜单与基础数据
2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{r as s,o as u,n as g,w as n,c as b,F as C,m as h,y as re,f as y,t as U,x as H,_ as ue,j as se,h as V,a as t,k as R,i as P,l as G,p as M,d as ie,v as L,E as Q}from"./index-CeNpw27z.js";import{c as T}from"./perm-DCTK2KrM.js";import{a as pe,P as me}from"./help-92MqPoF4.js";const ce={__name:"DetailDrawer",props:{visible:{type:Boolean,default:!1},title:{type:String,default:"详情"},fields:{type:Array,default:()=>[]},data:{type:Object,default:null},size:{type:String,default:"480px"},column:{type:Number,default:1}},emits:["update:visible"],setup(_,{emit:O}){const F=_,E=O,I=H({get:()=>F.visible,set:d=>E("update:visible",d)});function l(d){if(d==null||d==="")return"-";let c=typeof d=="string"?Number(d):d;if(isNaN(c))return d;if(c>1e12&&(c=Math.floor(c/1e3)),c<=0)return"-";const p=new Date(c*1e3),r=k=>String(k).padStart(2,"0");return`${p.getFullYear()}-${r(p.getMonth()+1)}-${r(p.getDate())} ${r(p.getHours())}:${r(p.getMinutes())}:${r(p.getSeconds())}`}function Y(d,c){if(!c)return"-";const p=c[d.key];if(d.format&&typeof d.format=="function"){const k=d.format(p,c);return k==null||k===""?"-":k}let r=p;return d.type==="time"?r=l(p):d.type==="bool"?r=p?"是":"否":d.type==="enum"&&d.map&&(r=d.map[p]??p),r==null||r===""?"-":r}return(d,c)=>{const p=s("el-descriptions-item"),r=s("el-descriptions"),k=s("el-empty"),x=s("el-drawer");return u(),g(x,{modelValue:I.value,"onUpdate:modelValue":c[0]||(c[0]=N=>I.value=N),title:_.title,size:_.size,"destroy-on-close":"","append-to-body":""},{default:n(()=>[_.data?(u(),g(r,{key:0,column:_.column,border:"",size:"small"},{default:n(()=>[(u(!0),b(C,null,h(_.fields,N=>(u(),g(p,{key:N.key,label:N.label},{default:n(()=>[N.slot?re(d.$slots,N.slot,{row:_.data},void 0,void 0,0):(u(),b(C,{key:1},[y(U(Y(N,_.data)),1)],64))]),_:2},1032,["label"]))),128))]),_:3},8,["column"])):(u(),g(k,{key:1,description:"暂无数据"}))]),_:3},8,["modelValue","title","size"])}}},ye={key:0,class:"dock-empty"},fe={__name:"DailyPlan",setup(_){const O=G({orderNo:"",planDate:""}),F=P([]),E=P([]),I=P([]),l=G({show:!1,id:0,orderNo:"",planDate:"",planRange:[],mode:"AVG",planQty:1,dockCodes:[],productType:"",productCode:"",productName:"",woQty:""}),Y=H(()=>{const o=l.planRange;if(!o||o.length!==2||!o[0]||!o[1])return[];const e=f=>String(f).padStart(2,"0"),i=new Date(o[0]+"T00:00:00"),$=new Date(o[1]+"T00:00:00");if(Number.isNaN(i.getTime())||Number.isNaN($.getTime())||$<i)return[];const m=[];for(let f=new Date(i);f<=$;f.setDate(f.getDate()+1))m.push(`${f.getFullYear()}-${e(f.getMonth()+1)}-${e(f.getDate())}`);return m});[...Array.from({length:20},(o,e)=>`DOCK${String(e+1).padStart(2,"0")}`)];const d=[{v:"PENDING",l:"未启用"},{v:"CONFIRMED",l:"已启用"},{v:"PROCESSING",l:"执行中"},{v:"DONE",l:"已完成"},{v:"CANCELLED",l:"已取消"}],c=o=>(d.find(e=>e.v===o)||{}).l||o,p=o=>o==="DONE"?"success":o==="PROCESSING"?"warning":o==="CONFIRMED"?"primary":"info";async function r(){F.value=await V.get("/daily-plans",{params:O})||[]}async function k(){if(l.orderNo)try{const o=await V.get("/daily-plans/suggest-docks",{params:{orderNo:l.orderNo}});l.dockCodes=(o==null?void 0:o.dockCodes)||[]}catch{l.dockCodes=[]}}function x(){const o=E.value.find(i=>i.workOrderNo===l.orderNo);if(!o){l.productType="",l.productCode="",l.productName="",l.woQty="";return}l.productCode=o.productCode||"",l.productName=o.productName||"",l.woQty=o.quantity||0;const e=I.value.find(i=>i.id===o.productTypeId);l.productType=e?e.name+(e.code?" / "+e.code:""):""}function N(){k(),x()}function X(){const o=new Date().toISOString().slice(0,10);Object.assign(l,{show:!0,id:0,orderNo:"",planDate:"",planRange:[o,o],mode:"AVG",planQty:1,dockCodes:[],productType:"",productCode:"",productName:"",woQty:""})}function W(o){Object.assign(l,{show:!0,id:o.id,orderNo:o.orderNo,planDate:o.planDate,planRange:[],mode:"AVG",planQty:o.planQty,dockCodes:o.dockCodes||[],productType:"",productCode:"",productName:"",woQty:""}),x()}async function J(){if(!l.orderNo)return Q.warning("请选择工单号");if(!l.dockCodes.length)return Q.warning("请确认送达接驳台(AGV 配送目标)");if(l.id){if(!l.planDate)return Q.warning("请选择排产日期");await V.put(`/daily-plans/${l.id}`,{id:l.id,orderNo:l.orderNo,planDate:l.planDate,planQty:l.planQty,dockCodes:l.dockCodes})}else{if(!l.planRange||l.planRange.length!==2||!l.planRange[0]||!l.planRange[1])return Q.warning("请选择排产日期范围");if(!l.planQty||l.planQty<1)return Q.warning("请填写数量");await V.post("/daily-plans",{orderNo:l.orderNo,planRange:l.planRange,mode:l.mode,planQty:l.planQty,dockCodes:l.dockCodes})}Q.success("保存成功"),l.show=!1,r()}const D=G({show:!1,title:"排产详情",fields:[],row:null});function Z(o){D.fields=[{key:"orderNo",label:"工单号"},{key:"planDate",label:"排产日期"},{key:"planQty",label:"计划数量"},{key:"completedQty",label:"已完成"},{key:"dockCodes",label:"送达接驳台",format:e=>e&&e.length?e.join("、"):"未指定"},{key:"status",label:"执行状态",type:"enum",map:d.reduce((e,i)=>(e[i.v]=i.l,e),{})},{key:"operator",label:"操作人"}],D.row=o,D.show=!0}async function ee(o){await L.confirm("确认删除该排产?","提示",{type:"warning"}),await V.delete(`/daily-plans/${o.id}`),r()}async function le(o){const e=o.status==="CONFIRMED"?"PENDING":"CONFIRMED",i=e==="CONFIRMED"?"启用":"停用";await L.confirm(`确认${i}该排产(${o.orderNo} ${o.planDate})?`,"提示",{type:"warning"}),await V.put(`/daily-plans/${o.id}`,{orderNo:o.orderNo,planDate:o.planDate,planQty:o.planQty,dockCodes:o.dockCodes||[],status:e}),Q.success(`已${i}`),r()}return se(async()=>{E.value=await V.get("/work-orders")||[],I.value=await V.get("/product-types")||[],r()}),(o,e)=>{const i=s("el-option"),$=s("el-select"),m=s("el-form-item"),f=s("el-date-picker"),w=s("el-button"),A=s("el-form"),v=s("el-table-column"),K=s("el-tag"),te=s("el-table"),z=s("el-input"),j=s("el-radio"),ae=s("el-radio-group"),B=s("el-input-number"),oe=s("el-alert"),q=s("el-option-group"),ne=s("el-dialog"),de=s("el-card");return u(),b(C,null,[t(de,null,{default:n(()=>[t(A,{inline:""},{default:n(()=>[t(m,{label:"工单号"},{default:n(()=>[t($,{modelValue:O.orderNo,"onUpdate:modelValue":e[0]||(e[0]=a=>O.orderNo=a),filterable:"","allow-create":"",clearable:"",placeholder:"请选择/输入工单号",style:{width:"220px"},onChange:r},{default:n(()=>[(u(!0),b(C,null,h(E.value,a=>(u(),g(i,{key:a.workOrderNo,label:a.workOrderNo,value:a.workOrderNo},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"排产日期"},{default:n(()=>[t(f,{modelValue:O.planDate,"onUpdate:modelValue":e[1]||(e[1]=a=>O.planDate=a),type:"date","value-format":"YYYY-MM-DD",placeholder:"请选择日期",onChange:r},null,8,["modelValue"])]),_:1}),t(m,null,{default:n(()=>[t(w,{type:"primary",onClick:r},{default:n(()=>[...e[12]||(e[12]=[y("查询",-1)])]),_:1}),R(T)("produce.workorder:dailyplan")?(u(),g(w,{key:0,type:"success",onClick:X},{default:n(()=>[...e[13]||(e[13]=[y("新建排产",-1)])]),_:1})):M("",!0)]),_:1})]),_:1}),t(te,{data:F.value,border:"",size:"small"},{default:n(()=>[t(v,{prop:"orderNo",label:"工单号","min-width":"180"}),t(v,{prop:"planDate",label:"排产日期",width:"120"}),t(v,{prop:"planQty",label:"计划数量",width:"100"}),t(v,{prop:"completedQty",label:"已完成",width:"90"}),t(v,{label:"送达接驳台","min-width":"150"},{default:n(({row:a})=>[(u(!0),b(C,null,h(a.dockCodes||[],S=>(u(),g(K,{key:S,size:"small",class:"dock-tag"},{default:n(()=>[y(U(S),1)]),_:2},1024))),128)),(a.dockCodes||[]).length?M("",!0):(u(),b("span",ye,"未指定"))]),_:1}),t(v,{label:"执行状态",width:"110"},{default:n(({row:a})=>[t(K,{type:p(a.status),size:"small"},{default:n(()=>[y(U(c(a.status)),1)]),_:2},1032,["type"])]),_:1}),t(v,{prop:"operator",label:"操作人","min-width":"90"}),t(v,{label:"操作",width:"330"},{default:n(({row:a})=>[t(w,{size:"small",type:"primary",link:"",onClick:S=>Z(a)},{default:n(()=>[...e[14]||(e[14]=[y("详情",-1)])]),_:1},8,["onClick"]),R(T)("produce.workorder:dailyplan")&&(a.status==="PENDING"||a.status==="CONFIRMED")?(u(),g(w,{key:0,size:"small",type:a.status==="CONFIRMED"?"warning":"success",onClick:S=>le(a)},{default:n(()=>[y(U(a.status==="CONFIRMED"?"停用":"启用"),1)]),_:2},1032,["type","onClick"])):M("",!0),R(T)("produce.workorder:dailyplan")?(u(),g(w,{key:1,size:"small",onClick:S=>W(a)},{default:n(()=>[...e[15]||(e[15]=[y("编辑",-1)])]),_:1},8,["onClick"])):M("",!0),R(T)("produce.workorder:dailyplan")?(u(),g(w,{key:2,size:"small",type:"danger",onClick:S=>ee(a)},{default:n(()=>[...e[16]||(e[16]=[y("删除",-1)])]),_:1},8,["onClick"])):M("",!0)]),_:1})]),_:1},8,["data"]),t(ne,{modelValue:l.show,"onUpdate:modelValue":e[10]||(e[10]=a=>l.show=a),title:l.id?"编辑排产":"新建排产",width:"560px"},{footer:n(()=>[t(w,{onClick:e[9]||(e[9]=a=>l.show=!1)},{default:n(()=>[...e[20]||(e[20]=[y("取消",-1)])]),_:1}),R(T)("produce.workorder:dailyplan")?(u(),g(w,{key:0,type:"primary",onClick:J},{default:n(()=>[...e[21]||(e[21]=[y("保存",-1)])]),_:1})):M("",!0)]),default:n(()=>[t(A,{model:l,"label-width":"92px"},{default:n(()=>[t(m,{label:"工单号"},{default:n(()=>[t($,{modelValue:l.orderNo,"onUpdate:modelValue":e[2]||(e[2]=a=>l.orderNo=a),filterable:"","allow-create":"",placeholder:"请选择/输入工单号",style:{width:"100%"},onChange:N},{default:n(()=>[(u(!0),b(C,null,h(E.value,a=>(u(),g(i,{key:a.workOrderNo,label:a.workOrderNo,value:a.workOrderNo},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"产品型号"},{default:n(()=>[t(z,{"model-value":l.productType,disabled:"",placeholder:"随工单号自动带出"},null,8,["model-value"])]),_:1}),t(m,{label:"产品编号"},{default:n(()=>[t(z,{"model-value":l.productCode,disabled:"",placeholder:"随工单号自动带出"},null,8,["model-value"])]),_:1}),t(m,{label:"产品名称"},{default:n(()=>[t(z,{"model-value":l.productName,disabled:"",placeholder:"随工单号自动带出"},null,8,["model-value"])]),_:1}),t(m,{label:"工单数量"},{default:n(()=>[t(z,{"model-value":l.woQty,disabled:"",placeholder:"随工单号自动带出"},null,8,["model-value"])]),_:1}),l.id?(u(),b(C,{key:1},[t(m,{label:"排产日期"},{default:n(()=>[t(f,{modelValue:l.planDate,"onUpdate:modelValue":e[6]||(e[6]=a=>l.planDate=a),type:"date","value-format":"YYYY-MM-DD",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),t(m,{label:"计划数量"},{default:n(()=>[t(B,{modelValue:l.planQty,"onUpdate:modelValue":e[7]||(e[7]=a=>l.planQty=a),min:1,style:{width:"100%"}},null,8,["modelValue"])]),_:1})],64)):(u(),b(C,{key:0},[t(m,{label:"排产日期范围"},{default:n(()=>[t(f,{modelValue:l.planRange,"onUpdate:modelValue":e[3]||(e[3]=a=>l.planRange=a),type:"daterange","value-format":"YYYY-MM-DD","start-placeholder":"开始日期","end-placeholder":"结束日期",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),t(m,{label:"排产模式"},{default:n(()=>[t(ae,{modelValue:l.mode,"onUpdate:modelValue":e[4]||(e[4]=a=>l.mode=a)},{default:n(()=>[t(j,{value:"AVG"},{default:n(()=>[...e[17]||(e[17]=[y("平均分摊",-1)])]),_:1}),t(j,{value:"FIXED"},{default:n(()=>[...e[18]||(e[18]=[y("固定日产",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(m,{label:l.mode==="FIXED"?"每日产量":"总数量"},{default:n(()=>[t(B,{modelValue:l.planQty,"onUpdate:modelValue":e[5]||(e[5]=a=>l.planQty=a),min:1,style:{width:"100%"}},null,8,["modelValue"])]),_:1},8,["label"]),t(oe,{type:"info",closable:!1,style:{"margin-bottom":"12px"},title:`共 ${Y.value.length} 天:${Y.value.join("、")||"-"}`},null,8,["title"])],64)),t(m,{label:"送达接驳台",prop:"dockCodes"},{default:n(()=>[t($,{modelValue:l.dockCodes,"onUpdate:modelValue":e[8]||(e[8]=a=>l.dockCodes=a),multiple:"",filterable:"",clearable:"",placeholder:"该工单物料送达哪些接驳台(可多选)",style:{width:"100%"}},{default:n(()=>[t(q,{label:"产线接驳台(DOCK n↔工位n)"},{default:n(()=>[(u(),b(C,null,h(20,a=>t(i,{key:a,label:`DOCK${String(a).padStart(2,"0")} · 工位${a}`,value:`DOCK${String(a).padStart(2,"0")}`},null,8,["label","value"])),64))]),_:1}),t(q,{label:"库房"},{default:n(()=>[t(i,{label:"DOCK21 · 库房收货",value:"DOCK21"})]),_:1})]),_:1},8,["modelValue"]),e[19]||(e[19]=ie("div",{class:"dock-tip"},"选需送达的接驳台;建议为当前工单上次使用的接驳台",-1))]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(ce,{visible:D.show,"onUpdate:visible":e[11]||(e[11]=a=>D.show=a),title:D.title,fields:D.fields,data:D.row},null,8,["visible","title","fields","data"])]),_:1}),t(me,{data:R(pe),page:"DailyPlan"},null,8,["data"])],64)}}},_e=ue(fe,[["__scopeId","data-v-934a1463"]]);export{_e as default};
|