| 1 |
- import{_ as te,u as se,r as _,c as B,o as ne,b as d,d as c,e as x,f as l,g as n,h as S,F,p as V,i as o,k as p,m as C,l as U,t as v,j as le,S as oe,n as N}from"./index-29b7bbe1.js";const re={class:"card-debug"},de={key:2,class:"card-uid"},ue={class:"port-grid"},ce=["onClick"],ie={class:"port-label"},pe={class:"port-info"},_e={class:"port-status-text"},ve={class:"port-uid-text"},fe={__name:"LedDebug",setup(me){const j=se();function A(a){return a&&String(a).toUpperCase().replace(/[:\s-]/g,"")||"--"}const b=_(void 0),f=_(1),w=_([]),h=_(""),g=_(!1),D=_(!1),m=_([]),y=_(""),I=_("success"),E=[{title:"端口",key:"antenna",dataIndex:"antenna",width:70},{title:"状态",key:"present",dataIndex:"present",width:90},{title:"卡号",key:"card_str",dataIndex:"card_str"}],$=B(()=>w.value.length>0),O=B(()=>{if(!$.value)return!1;const a=(h.value||"").replace(/[:\s-]/g,"");return a.length===12&&/^[0-9A-Fa-f]{12}$/.test(a)});function q(a){const e=m.value.find(t=>t.antenna===a);return e?e.present?"present":"empty":"unknown"}function G(a){const e=m.value.find(t=>t.antenna===a);return e?e.present?"有卡":"无卡":"未读取"}function H(a){const e=m.value.find(t=>t.antenna===a);return!e||!e.present?"":A(e.card_str)}function i(a,e="success"){y.value=a,I.value=e,setTimeout(()=>{y.value=""},4e3)}async function J(){var e,t;const a=(h.value||"").replace(/[:\s-]/g,"").toUpperCase();if(!/^[0-9A-F]{12}$/.test(a)){i("卡号必须是 12 位十六进制","error");return}g.value=!0,y.value="";try{const u=await S.modbus.setCardMapping({device_address:b.value,port_id:f.value,card_uid:a});u.data.success?i(`端口 P${f.value} 卡号已下发硬件: ${a}`,"success"):i("设置失败: "+(u.data.message||"未知错误"),"error")}catch(u){i("设置错误: "+(((t=(e=u.response)==null?void 0:e.data)==null?void 0:t.message)||u.message),"error")}finally{g.value=!1}}async function K(){var a,e;g.value=!0,y.value="";try{const t=await S.modbus.setCardMapping({device_address:b.value,port_id:f.value,card_uid:null});t.data.success?i(`端口 P${f.value} 卡号已清除(填 0xFF)`,"success"):i("清除失败: "+(t.data.message||"未知错误"),"error")}catch(t){i("清除错误: "+(((e=(a=t.response)==null?void 0:a.data)==null?void 0:e.message)||t.message),"error")}finally{g.value=!1}}async function Q(){try{const a=await S.modbus.getStoredDevices();if(a.data.success&&a.data.devices){const e=Object.entries(a.data.devices);w.value=e.map(([t,u])=>{var r;return{uid:t,uid_readable:((r=t.match(/.{1,2}/g))==null?void 0:r.join(":"))||t,address:u}}),w.value.length&&(b.value=w.value[0].address)}}catch(a){console.error(a)}}async function R(){var a,e;D.value=!0,m.value=[];try{const t=await S.modbus.readAllCards({device_address:b.value});if(t.data.success&&t.data.data&&t.data.data.cards){m.value=t.data.data.cards.map(r=>({key:r.antenna,antenna:r.antenna,present:!!r.present,card_str:r.card_str||"",uid:r.uid||""}));const u=m.value.filter(r=>r.present).length;i(`读取成功,24 路中 ${u} 路有卡`,"success")}else i("读卡失败: "+(t.data.message||"未知错误"),"error")}catch(t){i("读卡错误: "+(((e=(a=t.response)==null?void 0:a.data)==null?void 0:e.message)||t.message),"error")}finally{D.value=!1}}return ne(()=>{Q()}),(a,e)=>{const t=d("a-select-option"),u=d("a-select"),r=d("a-form-item"),W=d("a-input"),P=d("a-button"),X=d("a-space"),Y=d("a-form"),L=d("a-alert"),M=d("a-card"),Z=d("a-tag"),ee=d("a-table"),ae=d("a-empty"),T=d("a-col"),z=d("a-row");return c(),x("div",re,[l(z,{gutter:[24,24]},{default:n(()=>[l(T,{xs:24,lg:10},{default:n(()=>[l(M,{title:"设置卡号(V4 协议 0x0003)"},{default:n(()=>[l(Y,{layout:"vertical"},{default:n(()=>[l(r,{label:"选择终端"},{default:n(()=>[l(u,{value:b.value,"onUpdate:value":e[0]||(e[0]=s=>b.value=s),placeholder:"请选择终端",style:{width:"100%"}},{default:n(()=>[(c(!0),x(F,null,V(w.value,s=>(c(),C(t,{key:s.address,value:s.address},{default:n(()=>[p(" 地址 "+v(s.address)+" ("+v(s.uid_readable||s.uid)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),l(r,{label:"选择端口"},{default:n(()=>[l(u,{value:f.value,"onUpdate:value":e[1]||(e[1]=s=>f.value=s),style:{width:"100%"}},{default:n(()=>[(c(),x(F,null,V(24,s=>l(t,{key:s,value:s},{default:n(()=>[p("端口 P"+v(s),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),l(r,{label:"卡号(12 位十六进制,硬件 6 字节)"},{default:n(()=>[l(W,{value:h.value,"onUpdate:value":e[2]||(e[2]=s=>h.value=s),placeholder:"如 ED9A57F95001",maxlength:12,style:{"font-family":"'Monaco', 'Menlo', monospace","text-transform":"uppercase","letter-spacing":"1px"},"allow-clear":""},null,8,["value"]),e[4]||(e[4]=o("div",{style:{"font-size":"12px",color:"#999","margin-top":"4px"}}," 无分隔符,自动转大写;留空点击「清除」可移除该端口卡号 ",-1))]),_:1}),l(r,{label:"操作"},{default:n(()=>[l(X,{wrap:""},{default:n(()=>[l(P,{type:"primary",disabled:!O.value,loading:g.value,onClick:J},{default:n(()=>[...e[5]||(e[5]=[p(" 设置卡号 ",-1)])]),_:1},8,["disabled","loading"]),l(P,{disabled:!$.value||g.value,loading:g.value,onClick:K},{default:n(()=>[...e[6]||(e[6]=[p(" 清除该端口卡号 ",-1)])]),_:1},8,["disabled","loading"])]),_:1})]),_:1})]),_:1}),y.value?(c(),C(L,{key:0,type:I.value,message:y.value,"show-icon":"",closable:"",style:{"margin-top":"12px"},onClose:e[3]||(e[3]=s=>y.value="")},null,8,["type","message"])):U("",!0)]),_:1}),l(M,{title:"读卡号验证(V4 批量 24 路)",style:{"margin-top":"16px"}},{default:n(()=>[l(P,{type:"primary",onClick:R,loading:D.value,disabled:!$.value},{default:n(()=>[...e[7]||(e[7]=[p(" 读取全部卡号 ",-1)])]),_:1},8,["loading","disabled"]),m.value.length>0?(c(),C(ee,{key:0,"data-source":m.value,columns:E,pagination:!1,size:"small","row-key":"antenna",style:{"margin-top":"12px"}},{bodyCell:n(({column:s,record:k})=>[s.key==="antenna"?(c(),x(F,{key:0},[p(" P"+v(k.antenna),1)],64)):s.key==="present"?(c(),C(Z,{key:1,color:k.present?"green":"default"},{default:n(()=>[p(v(k.present?"有卡":"无卡"),1)]),_:2},1032,["color"])):s.key==="card_str"?(c(),x("span",de,v(k.present?A(k.card_str):"-"),1)):U("",!0)]),_:1},8,["data-source"])):D.value?U("",!0):(c(),C(ae,{key:1,description:"设置卡号后点击「读取全部卡号」验证结果",style:{"margin-top":"16px"}}))]),_:1})]),_:1}),l(T,{xs:24,lg:14},{default:n(()=>[l(M,{title:"24 路端口卡号状态"},{default:n(()=>[le(j).serialConnected?U("",!0):(c(),C(L,{key:0,message:"串口未连接",type:"warning","show-icon":"",style:{"margin-bottom":"16px"}})),o("div",ue,[(c(),x(F,null,V(24,s=>o("div",{key:s,class:N(["port-cell",{active:f.value===s}]),onClick:k=>f.value=s},[o("div",{class:N(["port-dot",q(s)])},[o("span",ie,v(s),1)],2),o("div",pe,[o("div",_e,v(G(s)),1),o("div",ve,v(H(s)),1)])],10,ce)),64))]),e[8]||(e[8]=o("div",{class:"legend"},[o("span",{class:"legend-item"},[o("span",{class:"legend-dot present"}),p(" 有卡 ")]),o("span",{class:"legend-item"},[o("span",{class:"legend-dot empty"}),p(" 无卡 ")]),o("span",{class:"legend-item"},[o("span",{class:"legend-dot unknown"}),p(" 未读取 ")])],-1)),e[9]||(e[9]=o("div",{style:{"margin-top":"16px",color:"#999","font-size":"13px","line-height":"1.8"}},[o("p",null,"使用说明:"),o("ol",null,[o("li",null,"选择终端地址(从已配置设备列表加载)"),o("li",null,"选择要设置卡号的端口(P1 ~ P24)"),o("li",null,"输入 12 位十六进制卡号,点击「设置卡号」"),o("li",null,"点击「读取全部卡号」验证硬件是否写入成功")])],-1))]),_:1})]),_:1})]),_:1}),l(z,{gutter:[24,24],style:{"margin-top":"16px"}},{default:n(()=>[l(T,{span:24},{default:n(()=>[l(oe)]),_:1})]),_:1})])}}},ye=te(fe,[["__scopeId","data-v-7d60b45a"]]);export{ye as default};
|