1. 通用优化: - 统一系统标题为"库房客户端"/"MES产线控制",移除北自所前缀 - 调整内置账号密码为统一123456,优化密码校验逻辑 - 新增数据库自动创建逻辑,简化部署流程 - 修复日志时间格式配置,优化日志输出 - 新增纯数字密码安全提示 2. MES系统优化: - 新增日排产管理功能,支持增删改查与自动算料生成备料单 - 重构BOM模块,改为按产品编码维护而非工单维度 - 新增工艺参数模板配置与手动报工页面 - 新增产品类型自动编码功能 - 优化菜单结构,调整工单管理、扫码报工等页面名称与路由 - 新增删除日排产接口与权限保护 - 修复物料清单查询逻辑,适配新BOM结构 - 新增refreshToken支持,优化登录会话管理 3. WMS系统优化: - 新增基础数据维护页面,支持区域与物料档案管理 - 新增工单列表下拉接口,对接MES获取未完成工单优先展示 - 优化入库管理提示文案,替换英文提示为中文 - 修复精密件入库校验逻辑,优化错误提示 - 优化Excel导入功能,新增备注字段支持 - 优化登录页面与菜单文案,统一备料台账名称 - 新增自动打开浏览器功能,优化客户端启动体验 - 修复备料出库页面查询提示文案 - 新增WMS与MES对接配置,完善内部API调用逻辑 4. 其他优化: - 删除冗余的旧版静态资源文件,更新资源引用路径 - 新增帮助文档,完善基础数据模块说明 - 修复多处文案不统一、英文残留问题
2 lines
9.6 KiB
JavaScript
2 lines
9.6 KiB
JavaScript
import{_ as re,i as ie,c as k,a as l,w as a,p as de,F as N,h as s,r as u,o as i,k as q,G as x,f as c,l as G,d as y,t as $,g as H,E as w,I as j}from"./index-gIYCKXT9.js";import{r as z}from"./request-Dn-Ij3HI.js";import{h as se,P as pe}from"./help-2sGNjKzn.js";const me={style:{width:"100%"}},ce={style:{"margin-bottom":"8px"}},fe={style:{"margin-top":"12px"}},be={style:{"margin-top":"12px"}},ve={__name:"Inbound",setup(ye){const S=s([]),U=s([]);ie(async()=>{const[o,e]=await Promise.all([z.get("/material/list"),z.get("/zone/list")]);S.value=Array.isArray(o)?o:(o==null?void 0:o.list)||[],U.value=Array.isArray(e)?e:(e==null?void 0:e.list)||[]});const A=s(),D=s(!1),E=s(""),n=H({materialCode:"",batchNo:"",quantity:1,zoneCode:"",productionDate:"",supplier:"",remark:""}),J={materialCode:[{required:!0,message:"请选择物料",trigger:"change"}],quantity:[{required:!0,message:"请输入数量",trigger:"blur"}]};async function K(){if(await A.value.validate(),!n.quantity||n.quantity<=0){w.warning("数量必须大于 0");return}D.value=!0;try{const o=await z.post("/inbound/create",{inboundType:"purchase",materialCode:n.materialCode,batchNo:n.batchNo.trim(),quantity:n.quantity,zoneCode:n.zoneCode,productionDate:n.productionDate,supplier:n.supplier.trim(),remark:n.remark.trim(),operator:j()});E.value=(o==null?void 0:o.inboundNo)||"",w.success(`入库成功:入库单号 ${(o==null?void 0:o.inboundNo)||""},数量 ${(o==null?void 0:o.quantity)??n.quantity}`),n.batchNo="",n.quantity=1}finally{D.value=!1}}const C=s(""),F=s(!1),d=s([]),m=H({materialCode:"",zoneCode:"",remark:""}),O=/[,,.。;;、\s]+/;function Q(){const o=String(C.value).split(O);for(let e of o){const p=e.trim();p&&(d.value.includes(p)||d.value.push(p))}C.value=""}function W(o){d.value.splice(o,1)}async function X(){if(!m.materialCode){w.warning("请选择物料");return}if(!d.value.length){w.warning("请先扫码录入 SN(输入后回车追加)");return}F.value=!0;try{const o=await z.post("/inbound/create",{inboundType:"purchase",materialCode:m.materialCode,zoneCode:m.zoneCode,snList:[...d.value],remark:m.remark.trim(),operator:j()});w.success(`入库成功:入库单号 ${(o==null?void 0:o.inboundNo)||""},SN 共 ${d.value.length} 条`),d.value=[],C.value=""}finally{F.value=!1}}const h=s(),I=s([]),R=s(!1),_=s(null);function Z(o,e){I.value=e.slice(-1)}function ee(o){h.value.clearFiles();const e=o[0];e&&h.value.handleStart(e)}async function le(){var g,r,b;const o=I.value[0]||((r=(g=h.value)==null?void 0:g.uploadFiles)==null?void 0:r[0]),e=o==null?void 0:o.raw;if(!e){w.warning("请先选择 .xlsx 文件");return}const p=new FormData;p.append("file",e),R.value=!0;try{const f=await z.post("/inbound/batch-excel",p);_.value=f||{},w.success(`导入完成:共 ${(f==null?void 0:f.total)??0} 行,成功 ${(f==null?void 0:f.success)??0} 行`),(b=h.value)==null||b.clearFiles(),I.value=[]}finally{R.value=!1}}return(o,e)=>{const p=u("el-option"),g=u("el-select"),r=u("el-form-item"),b=u("el-input"),f=u("el-input-number"),te=u("el-date-picker"),V=u("el-button"),L=u("el-form"),M=u("el-alert"),B=u("el-tab-pane"),v=u("el-table-column"),P=u("el-table"),ae=u("el-upload"),oe=u("el-divider"),Y=u("el-tag"),ne=u("el-tabs"),ue=u("el-card");return i(),k(N,null,[l(ue,{shadow:"never"},{default:a(()=>[l(ne,null,{default:a(()=>[l(B,{label:"结构件入库"},{default:a(()=>[l(L,{ref_key:"batchRef",ref:A,model:n,rules:J,"label-width":"110px",style:{"max-width":"560px"}},{default:a(()=>[l(r,{label:"物料",prop:"materialCode"},{default:a(()=>[l(g,{modelValue:n.materialCode,"onUpdate:modelValue":e[0]||(e[0]=t=>n.materialCode=t),filterable:"",placeholder:"选择物料编码",style:{width:"100%"}},{default:a(()=>[(i(!0),k(N,null,q(S.value,t=>(i(),x(p,{key:t.id,value:t.code,label:`${t.code} ${t.name||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"批次号"},{default:a(()=>[l(b,{modelValue:n.batchNo,"onUpdate:modelValue":e[1]||(e[1]=t=>n.batchNo=t),placeholder:"留空则自动生成",clearable:""},null,8,["modelValue"])]),_:1}),l(r,{label:"数量",prop:"quantity"},{default:a(()=>[l(f,{modelValue:n.quantity,"onUpdate:modelValue":e[2]||(e[2]=t=>n.quantity=t),min:1,step:1,"step-strictly":"",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),l(r,{label:"区域"},{default:a(()=>[l(g,{modelValue:n.zoneCode,"onUpdate:modelValue":e[3]||(e[3]=t=>n.zoneCode=t),placeholder:"选择库区",clearable:"",style:{width:"100%"}},{default:a(()=>[(i(!0),k(N,null,q(U.value,t=>(i(),x(p,{key:t.id,value:t.zoneCode,label:`${t.zoneCode} ${t.zoneName||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"生产日期"},{default:a(()=>[l(te,{modelValue:n.productionDate,"onUpdate:modelValue":e[4]||(e[4]=t=>n.productionDate=t),type:"date","value-format":"YYYY-MM-DD",placeholder:"选择生产日期",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),l(r,{label:"供应商"},{default:a(()=>[l(b,{modelValue:n.supplier,"onUpdate:modelValue":e[5]||(e[5]=t=>n.supplier=t),placeholder:"供应商名称",clearable:""},null,8,["modelValue"])]),_:1}),l(r,{label:"备注"},{default:a(()=>[l(b,{modelValue:n.remark,"onUpdate:modelValue":e[6]||(e[6]=t=>n.remark=t),placeholder:"备注(可空)",clearable:""},null,8,["modelValue"])]),_:1}),l(r,null,{default:a(()=>[l(V,{type:"primary",loading:D.value,onClick:K},{default:a(()=>[...e[12]||(e[12]=[c("提交入库",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),E.value?(i(),x(M,{key:0,type:"success",closable:!1,title:`最近入库单号:${E.value}`,style:{"max-width":"560px"}},null,8,["title"])):G("",!0)]),_:1}),l(B,{label:`精密件 SN 入库${d.value.length?`(已扫 ${d.value.length})`:""}`},{default:a(()=>[l(L,{"label-width":"110px",style:{"max-width":"680px"}},{default:a(()=>[l(r,{label:"物料"},{default:a(()=>[l(g,{modelValue:m.materialCode,"onUpdate:modelValue":e[7]||(e[7]=t=>m.materialCode=t),filterable:"",placeholder:"选择物料编码",style:{width:"100%"}},{default:a(()=>[(i(!0),k(N,null,q(S.value,t=>(i(),x(p,{key:t.id,value:t.code,label:`${t.code} ${t.name||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"区域"},{default:a(()=>[l(g,{modelValue:m.zoneCode,"onUpdate:modelValue":e[8]||(e[8]=t=>m.zoneCode=t),placeholder:"选择库区(可空)",clearable:"",style:{width:"100%"}},{default:a(()=>[(i(!0),k(N,null,q(U.value,t=>(i(),x(p,{key:t.id,value:t.zoneCode,label:`${t.zoneCode} ${t.zoneName||""}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"扫码录入"},{default:a(()=>[y("div",me,[l(b,{modelValue:C.value,"onUpdate:modelValue":e[9]||(e[9]=t=>C.value=t),type:"textarea",rows:4,placeholder:"扫入或粘贴 SN,可用 逗号/分号/顿号/空格/回车 分隔,一次可录入多条"},null,8,["modelValue"]),l(V,{type:"primary",plain:"",style:{"margin-top":"6px"},disabled:!C.value.trim(),onClick:Q},{default:a(()=>[...e[13]||(e[13]=[c("录入到列表",-1)])]),_:1},8,["disabled"]),e[14]||(e[14]=y("span",{style:{"margin-left":"8px",color:"#909399","font-size":"12px"}},"点【录入到列表】加入下方清单,回车只是换行",-1))])]),_:1}),l(r,{label:"备注"},{default:a(()=>[l(b,{modelValue:m.remark,"onUpdate:modelValue":e[10]||(e[10]=t=>m.remark=t),type:"textarea",rows:2,placeholder:"本批 SN 的统一备注(可空)"},null,8,["modelValue"])]),_:1})]),_:1}),y("div",ce,[e[15]||(e[15]=c(" 已录入 ",-1)),y("b",null,$(d.value.length),1),e[16]||(e[16]=c(" 条 SN ",-1))]),l(P,{data:d.value.map((t,T)=>({i:T,v:t})),size:"small",border:"","max-height":"320","empty-text":"暂无 SN"},{default:a(()=>[l(v,{type:"index",label:"#",width:"56",align:"center"}),l(v,{prop:"v",label:"SN 序列号","min-width":"220"}),l(v,{label:"操作",width:"80",align:"center"},{default:a(({row:t})=>[l(V,{link:"",type:"danger",size:"small",onClick:T=>W(t.i)},{default:a(()=>[...e[17]||(e[17]=[c("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),y("div",fe,[l(V,{type:"primary",loading:F.value,onClick:X},{default:a(()=>[...e[18]||(e[18]=[c("提交入库",-1)])]),_:1},8,["loading"]),l(V,{onClick:e[11]||(e[11]=t=>d.value=[])},{default:a(()=>[...e[19]||(e[19]=[c("清空列表",-1)])]),_:1})])]),_:1},8,["label"]),l(B,{label:"Excel 导入"},{default:a(()=>[l(M,{type:"info",closable:!1,title:"列头顺序(首行忽略):物料编码 | 批次号(可空自动生成) | 数量 | 生产日期 | 供应商 | 区域 | 备注",style:{"max-width":"760px","margin-bottom":"14px"}}),l(ae,{ref_key:"uploadRef",ref:h,drag:"",accept:".xlsx",limit:1,"auto-upload":!1,"on-change":Z,"on-exceed":ee},{default:a(()=>[...e[20]||(e[20]=[y("div",{class:"dropzone"},"将 .xlsx 文件拖到此处,或点击选择文件",-1)])]),_:1},512),y("div",be,[l(V,{type:"primary",loading:R.value,onClick:le},{default:a(()=>[...e[21]||(e[21]=[c("开始导入",-1)])]),_:1},8,["loading"])]),_.value?(i(),k(N,{key:0},[l(oe),y("h4",null,"导入结果:共 "+$(_.value.total)+" 行,成功 "+$(_.value.success)+" 行,失败 "+$(_.value.total-_.value.success)+" 行",1),l(P,{data:_.value.rows||[],size:"small",border:"","max-height":"360"},{default:a(()=>[l(v,{prop:"row",label:"行号",width:"70",align:"center"}),l(v,{prop:"materialCode",label:"物料编码","min-width":"140"}),l(v,{prop:"batchNo",label:"批次号","min-width":"160"}),l(v,{prop:"quantity",label:"数量",width:"90",align:"center"}),l(v,{label:"结果","min-width":"200"},{default:a(({row:t})=>[t.error?(i(),x(Y,{key:1,type:"danger",size:"small"},{default:a(()=>[c($(t.error),1)]),_:2},1024)):(i(),x(Y,{key:0,type:"success",size:"small"},{default:a(()=>[...e[22]||(e[22]=[c("成功",-1)])]),_:1}))]),_:1})]),_:1},8,["data"])],64)):G("",!0)]),_:1})]),_:1})]),_:1}),l(pe,{data:de(se)},null,8,["data"])],64)}}},we=re(ve,[["__scopeId","data-v-527961dc"]]);export{we as default};
|