index.BpMXdIFt.js 14 KB

123
  1. import{a as re,r as C,aj as w,at as de,c as B,o as I,S as n,a8 as ve,K as m,b as k,P as S,M as G,L as pe,a7 as j,u as fe,Q as T,R as H,a9 as me,J as K,t as ge}from"./vue.D1BjjNmv.js";import{G as E,S as _e,a as ye,C as he,b as J}from"./api.tgn18fM3.js";import{s as be,E as r}from"./index.C4PGEXun.js";import{_ as we}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ke={class:"form-row"},Ce={key:0,class:"pending-list",style:{"margin-top":"15px","margin-bottom":"15px"}},Ve={class:"pending-header"},xe={class:"pending-title"},Se={class:"pending-actions"},De={class:"pending-tags"},Re={class:"dialog-footer"},$e=re({__name:"index",emits:["completed"],setup(Ie,{expose:Q,emit:W}){const M=W,P=C(!1),$=C(""),g=C(""),D=C([]),y=C(null),R=C(!1),V=C(null),p=C([]),L=C(!1),N=C(!1),d=C({rfidLength:24,rfidPrefix:"E280",separator:" ",customSeparator:"",autoSplitSticky:!0,allowDuplicate:!0}),X=async(l,e)=>{if(console.log("checkNo::::::",l,"id::::::",e),g.value=l,e!=null)y.value=e;else try{const o=await E();if((o==null?void 0:o.code)===2e3){const u=q(l,o.data);y.value=(u==null?void 0:u.id)??null,console.log("通过 check_no 查询到的 id::",y.value)}}catch(o){console.error("查询盘点记录失败:",o),y.value=null}},F=async()=>{await ge(),setTimeout(()=>{if(!V.value||R.value)return;let l=null;if(typeof V.value.focus=="function"){V.value.focus();return}V.value.input?l=V.value.input:V.value.$el?l=V.value.$el.querySelector("input"):V.value instanceof HTMLElement&&(l=V.value.querySelector("input")),l&&(l.focus(),setTimeout(()=>{l==null||l.select()},10))},100)},Y=()=>{d.value={rfidLength:24,rfidPrefix:"E280",separator:" ",customSeparator:"",autoSplitSticky:!0,allowDuplicate:!0},r.success("已重置为默认规则")},Z=()=>{if(d.value.rfidLength<1){r.warning("RFID标签长度必须大于0");return}if(d.value.separator==="custom"&&!d.value.customSeparator){r.warning("请设置自定义分隔符");return}N.value=!1,r.success("读取规则已保存")},ee=()=>{$.value="",D.value=[],y.value=null,p.value=[],L.value=!1},le=()=>{F()},q=(l,e)=>(console.log("lists::::",e),Array.isArray(e)?e.find(o=>o.check_no===l):null),O=l=>{l.forEach(e=>{const o=D.value.findIndex(u=>u.device_code===e.device_code&&u.check_no===e.check_no);o!==-1?D.value[o]={...e,scanned_quantity:e.scanned_quantity||1}:D.value.push({...e,scanned_quantity:e.scanned_quantity||1})})},A=l=>{if(!l)return[];const{rfidLength:e,rfidPrefix:o,autoSplitSticky:u}=d.value;if(!u)return[l];if(o&&o.trim()){const c=o.length,_=e-c;if(_>0)try{const b=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),x=new RegExp(`${b}[0-9A-F]{${_}}`,"gi"),f=l.match(x);if(f&&f.length>1)return f}catch(b){console.warn("RFID前缀正则表达式构建失败:",b)}}if(l.length>e&&l.length%e===0){const c=[];for(let _=0;_<l.length;_+=e){const b=l.substring(_,_+e);b.trim()&&c.push(b)}if(c.length>1)return c}return[l]},te=l=>{const e=l.trim();if(!e)return[];const{separator:o,customSeparator:u}=d.value,c=o==="custom"?u:o;if(console.log("splitRFIDCodes - 输入:",e,"分隔符配置:",o,"实际分隔符:",c,"分隔符类型:",typeof c,"长度:",c==null?void 0:c.length),/[\r\n]/.test(e)){const f=e.split(/[\r\n]+/).filter(t=>t.trim());if(console.log("检测到换行符,分割结果:",f),f.length>1){const t=[];for(const s of f){const a=s.trim();if(a){const i=A(a);t.push(...i)}}return console.log("换行符分割最终结果:",t),t.length>0?t:[e]}}if(c&&c.trim()!==""&&c!==`
  2. `&&c!==`\r
  3. `&&c!=="\r"){let f=[],t=!1;if(c===" ")t=e.includes(" "),t&&(f=e.split(/\t+/).filter(s=>s.trim()));else if(t=e.includes(c),t)try{const s=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),a=new RegExp(s+"+","g");f=e.split(a).filter(i=>i.trim())}catch(s){console.warn("分隔符正则表达式构建失败,使用字符串分割:",s),f=e.split(c).filter(a=>a.trim())}if(t&&f.length>0){const s=[];for(const a of f){const i=a.trim();if(i){const h=A(i);s.push(...h)}}return console.log("配置分隔符分割最终结果:",s),s.length>0?s:[e]}}if(/\s/.test(e)){const f=e.split(/\s+/).filter(t=>t.trim());if(console.log("检测到空格,分割结果:",f),f.length>1){const t=[];for(const s of f){const a=s.trim();if(a){const i=A(a);t.push(...i)}}return console.log("空格分割最终结果:",t),t.length>0?t:[e]}}const x=A(e);return console.log("粘连处理结果:",x),x},U=()=>{if(!$.value||!g.value){r.warning("请输入设备编号");return}const l=$.value.trim();if(!l){r.warning("设备编号不能为空");return}const e=te(l);if(console.log("分割结果:",e,"输入:",l,"配置:",d.value),e.length===0){r.warning("未识别到有效的设备编号");return}let o=e;if(!d.value.allowDuplicate&&(o=e.filter(u=>!p.value.includes(u)),o.length<e.length)){const u=e.length-o.length;r.warning(`已过滤 ${u} 个重复的设备编号(与待提交列表中的编码重复)`)}if(o.length===0){r.warning("没有可添加的设备编号(可能全部重复)");return}p.value.push(...o),e.length>1?r.success(`已自动分割并添加 ${o.length} 个设备编号`):r.success("已添加到待提交列表"),$.value="",F()},ae=l=>{p.value.splice(l,1)},oe=()=>{p.value=[]},ne=async()=>{var o,u,c,_,b,x;if(p.value.length===0||!g.value){r.warning("没有待提交的设备编号");return}R.value=!0;const l=[],e=[];try{const f={check_no:g.value,device_codes:[...p.value]};try{const t=await _e(f);if((t==null?void 0:t.code)===2e3){const s=await E();if((s==null?void 0:s.code)===2e3){const a=q(g.value,s.data);y.value=(a==null?void 0:a.id)??null,t.data&&Array.isArray(t.data)?t.data.forEach(i=>{l.push({device_code:i.device_code||i.deviceCode,check_no:g.value,productName:i.productName||"未知商品",id:(a==null?void 0:a.id)||0,status_display:(a==null?void 0:a.status_display)||"",device_name:i.device_name||i.deviceName||"未知设备",device_category:i.device_category||i.deviceCategory||"未知分类",scanned_quantity:i.scanned_quantity||0})}):(o=t.data)!=null&&o.success_codes&&Array.isArray(t.data.success_codes)?(t.data.success_codes.forEach(i=>{l.push({device_code:i,check_no:g.value,productName:"未知商品",id:(a==null?void 0:a.id)||0,status_display:(a==null?void 0:a.status_display)||"",device_name:"未知设备",device_category:"未知分类",scanned_quantity:1})}),(u=t.data)!=null&&u.fail_codes&&Array.isArray(t.data.fail_codes)&&e.push(...t.data.fail_codes)):p.value.forEach(i=>{l.push({device_code:i,check_no:g.value,productName:"未知商品",id:(a==null?void 0:a.id)||0,status_display:(a==null?void 0:a.status_display)||"",device_name:"未知设备",device_category:"未知分类",scanned_quantity:1})}),O(l),l.length>0&&e.length===0?(p.value=[],r.success("提交成功")):l.length>0&&e.length>0?(p.value=e,r.warning(`成功提交 ${l.length} 个,失败 ${e.length} 个`)):(p.value=e,r.error(`提交失败,共 ${e.length} 个设备编号`));return}}else console.warn("批量提交失败,尝试逐个提交:",t)}catch(t){console.warn("批量提交接口不可用,使用逐个提交方式:",t)}for(const t of p.value)try{const s={device_code:t,check_no:g.value},a=await ye(s);if((a==null?void 0:a.code)===2e3){const i=await E();if((i==null?void 0:i.code)===2e3){const h=q(g.value,i.data);l.push({...s,productName:((c=a.data)==null?void 0:c.productName)||"未知商品",id:(h==null?void 0:h.id)||0,status_display:(h==null?void 0:h.status_display)||"",device_name:((_=a.data)==null?void 0:_.device_name)||"未知设备",device_category:((b=a.data)==null?void 0:b.device_category)||"未知分类",scanned_quantity:((x=a.data)==null?void 0:x.scanned_quantity)||1}),y.value=(h==null?void 0:h.id)??null}}else e.push(t)}catch(s){console.error(`提交设备编号 ${t} 失败:`,s),e.push(t)}O(l),l.length>0&&e.length===0?(p.value=[],r.success(`成功提交 ${l.length} 个设备编号`)):l.length>0&&e.length>0?(p.value=e,r.warning(`成功提交 ${l.length} 个,失败 ${e.length} 个`)):(p.value=e,r.error(`提交失败,共 ${e.length} 个设备编号`))}finally{R.value=!1,F()}},se=async()=>{if(!g.value)return;const l=await he({check_no:g.value});(l==null?void 0:l.code)===2e3&&(r.success("完成盘点!"),L.value=!0,P.value=!1,M("completed"))},ie=async()=>{if(!y.value)return;const l=await J(y.value);(l==null?void 0:l.code)===2e3&&(r.success("取消盘点成功!"),L.value=!0,P.value=!1,M("completed"))};Q({visible:P,setCheckNo:X});const ue=async()=>{if(L.value){L.value=!1,g.value="",p.value=[],D.value=[],y.value=null;return}console.log("currentRecordId.value::",y.value,"check_no.value::",g.value);let l=y.value;if(!l&&g.value)try{const e=await E();if((e==null?void 0:e.code)===2e3){const o=q(g.value,e.data);l=(o==null?void 0:o.id)??null,console.log("通过 check_no 查询到的 id::",l)}}catch(e){console.error("查询盘点记录失败:",e)}if(l)try{const e=await J(l);(e==null?void 0:e.code)===2e3?r.success("取消盘点成功!"):r.warning((e==null?void 0:e.msg)||"取消盘点失败")}catch(e){console.error("取消盘点失败:",e),r.error("取消盘点失败")}g.value="",p.value=[],D.value=[],y.value=null};return(l,e)=>{const o=w("el-input"),u=w("el-button"),c=w("el-tag"),_=w("el-table-column"),b=w("el-table"),x=w("el-dialog"),f=w("el-input-number"),t=w("el-form-item"),s=w("el-option"),a=w("el-select"),i=w("el-switch"),h=w("el-form"),ce=de("loading");return I(),B(H,null,[n(x,{modelValue:P.value,"onUpdate:modelValue":e[3]||(e[3]=v=>P.value=v),title:"开始盘点",width:"800px",onOpen:ee,onOpened:le,onClose:ue},ve({default:m(()=>[k("div",null,[k("div",ke,[n(o,{ref_key:"deviceCodeInputRef",ref:V,modelValue:$.value,"onUpdate:modelValue":e[0]||(e[0]=v=>$.value=v),placeholder:"设备编号(支持扫码枪/RFID批量录入,回车添加)",onKeyup:j(U,["enter"]),disabled:R.value},null,8,["modelValue","disabled"]),n(o,{modelValue:g.value,"onUpdate:modelValue":e[1]||(e[1]=v=>g.value=v),placeholder:"盘点编号",onKeyup:j(U,["enter"]),disabled:!0},null,8,["modelValue"]),n(u,{type:"success",onClick:U,disabled:R.value},{default:m(()=>e[11]||(e[11]=[S("添加到待提交列表")])),_:1},8,["disabled"]),n(u,{type:"info",icon:fe(be),onClick:e[2]||(e[2]=v=>N.value=!0),disabled:R.value},{default:m(()=>e[12]||(e[12]=[S("读取规则")])),_:1},8,["icon","disabled"])]),p.value.length>0?(I(),B("div",Ce,[k("div",Ve,[k("div",xe,"待提交设备编号 ("+T(p.value.length)+"个):",1),k("div",Se,[n(u,{type:"primary",onClick:ne,loading:R.value,size:"small"},{default:m(()=>[S("批量提交("+T(p.value.length)+")",1)]),_:1},8,["loading"]),n(u,{type:"text",size:"small",onClick:oe},{default:m(()=>e[13]||(e[13]=[S("清空")])),_:1})])]),k("div",De,[(I(!0),B(H,null,me(p.value,(v,z)=>(I(),K(c,{key:z,closable:"",onClose:Pe=>ae(z),style:{"margin-right":"8px","margin-bottom":"8px"}},{default:m(()=>[S(T(v),1)]),_:2},1032,["onClose"]))),128))])])):G("",!0),pe((I(),K(b,{data:D.value,style:{"margin-top":"20px"}},{default:m(()=>[n(_,{type:"index",label:"序号",width:"60"}),n(_,{prop:"device_code",label:"设备编号"}),n(_,{prop:"device_name",label:"设备名称"}),n(_,{prop:"device_category",label:"设备分类"}),n(_,{prop:"check_no",label:"盘点编号"}),n(_,{prop:"scanned_quantity",label:"盘点数量"}),n(_,{prop:"status_display",label:"状态"})]),_:1},8,["data"])),[[ce,R.value]])])]),_:2},[D.value.length>0?{name:"footer",fn:m(()=>[k("div",Re,[n(u,{onClick:ie,disabled:!y.value},{default:m(()=>e[14]||(e[14]=[S("取消盘点")])),_:1},8,["disabled"]),n(u,{type:"primary",onClick:se,disabled:!g.value},{default:m(()=>e[15]||(e[15]=[S("完成盘点")])),_:1},8,["disabled"])])]),key:"0"}:void 0]),1032,["modelValue"]),n(x,{modelValue:N.value,"onUpdate:modelValue":e[10]||(e[10]=v=>N.value=v),title:"设置读取规则",width:"600px"},{footer:m(()=>[n(u,{onClick:Y},{default:m(()=>e[21]||(e[21]=[S("重置默认")])),_:1}),n(u,{type:"primary",onClick:Z},{default:m(()=>e[22]||(e[22]=[S("保存")])),_:1})]),default:m(()=>[n(h,{model:d.value,"label-width":"140px"},{default:m(()=>[n(t,{label:"RFID标签长度"},{default:m(()=>[n(f,{modelValue:d.value.rfidLength,"onUpdate:modelValue":e[4]||(e[4]=v=>d.value.rfidLength=v),min:1,max:100,style:{width:"100%"}},null,8,["modelValue"]),e[16]||(e[16]=k("div",{class:"form-tip"},"RFID标签的固定长度(字符数)",-1))]),_:1}),n(t,{label:"RFID标签前缀"},{default:m(()=>[n(o,{modelValue:d.value.rfidPrefix,"onUpdate:modelValue":e[5]||(e[5]=v=>d.value.rfidPrefix=v),placeholder:"例如:E280",style:{width:"100%"}},null,8,["modelValue"]),e[17]||(e[17]=k("div",{class:"form-tip"},"RFID标签的前缀(可选,留空则不限制前缀)",-1))]),_:1}),n(t,{label:"分隔符"},{default:m(()=>[n(a,{modelValue:d.value.separator,"onUpdate:modelValue":e[6]||(e[6]=v=>d.value.separator=v),placeholder:"选择分隔符",style:{width:"100%"}},{default:m(()=>[n(s,{label:"空格",value:" "}),n(s,{label:"逗号",value:","}),n(s,{label:"分号",value:";"}),n(s,{label:"制表符",value:"\\t"}),n(s,{label:"回车换行",value:"\\n"}),n(s,{label:"自定义",value:"custom"})]),_:1},8,["modelValue"]),d.value.separator==="custom"?(I(),K(o,{key:0,modelValue:d.value.customSeparator,"onUpdate:modelValue":e[7]||(e[7]=v=>d.value.customSeparator=v),placeholder:"请输入自定义分隔符",style:{width:"100%","margin-top":"10px"}},null,8,["modelValue"])):G("",!0),e[18]||(e[18]=k("div",{class:"form-tip"},"用于分割多个设备编号的分隔符",-1))]),_:1}),n(t,{label:"自动分割粘连"},{default:m(()=>[n(i,{modelValue:d.value.autoSplitSticky,"onUpdate:modelValue":e[8]||(e[8]=v=>d.value.autoSplitSticky=v)},null,8,["modelValue"]),e[19]||(e[19]=k("div",{class:"form-tip"},"是否自动分割粘连在一起的RFID标签",-1))]),_:1}),n(t,{label:"允许重复添加"},{default:m(()=>[n(i,{modelValue:d.value.allowDuplicate,"onUpdate:modelValue":e[9]||(e[9]=v=>d.value.allowDuplicate=v)},null,8,["modelValue"]),e[20]||(e[20]=k("div",{class:"form-tip"},"是否允许添加重复的设备编号",-1))]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])],64)}}}),Ee=we($e,[["__scopeId","data-v-1a233e00"]]);export{Ee as default};