import{g as Oe,j as $e,C as Fe,c as d,a as e,n as G,l as y,q as r,s as P,F as V,r as $,H as Q,d as v,v as f,N as ve,x as Gt,t as n,p as _t,A as g,y as a,z as Ee,o as u}from"./6O01ZZML.js";import{u as ze}from"./BgasD__e.js";import{u as qe}from"./xsgK-Nup.js";const Re={class:"space-y-5"},He={class:"flex items-center justify-between flex-wrap gap-3"},Ge={class:"tabs tabs-boxed bg-slate-100 inline-flex"},Xe={key:0,class:"flex items-end gap-2 flex-wrap"},Ye=["value"],Je=["value"],Ke=["value"],Qe={class:"bg-white rounded-xl shadow-sm border border-slate-100"},We={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},Ze={class:"flex items-end gap-2 flex-wrap"},tl={class:"form-control"},el={class:"form-control"},ll={class:"form-control"},sl={class:"form-control"},ol={class:"form-control"},nl={class:"form-control"},al={class:"form-control"},il={class:"form-control"},dl=["disabled"],ul=["disabled"],rl=["disabled"],cl=["disabled"],vl={class:"overflow-x-auto"},bl={class:"w-8"},pl={key:0},ml={key:1},xl={colspan:"8",class:"text-center text-red-400 py-8"},fl={key:2},gl=["value"],hl={class:"font-mono text-xs"},yl={class:"font-mono text-xs"},wl={class:"font-mono text-xs"},Cl={class:"text-xs"},kl={class:"text-xs text-slate-500"},_l={class:"flex gap-1"},Sl=["onClick"],Ml=["onClick"],Ul=["onClick"],Dl={class:"flex items-center justify-between px-5 py-3 border-t border-slate-100"},Vl={class:"text-xs text-slate-500"},Al={class:"flex items-center gap-2"},Nl=["disabled"],Il={class:"text-xs text-slate-500"},jl=["disabled"],Bl={class:"grid grid-cols-3 gap-4 mb-5"},Tl={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Pl={class:"text-2xl font-bold text-slate-800"},Ll={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Ol={class:"text-2xl font-bold text-indigo-600"},$l={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Fl={class:"text-base font-semibold text-slate-700"},El={class:"bg-white rounded-xl shadow-sm border border-slate-100"},zl={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},ql={class:"flex items-end gap-2 flex-wrap"},Rl={class:"form-control"},Hl={class:"form-control"},Gl={class:"text-xs text-slate-400"},Xl={class:"overflow-x-auto",style:{"max-height":"480px"}},Yl={class:"table table-pin-rows text-sm"},Jl={key:0},Kl={key:1},Ql={colspan:"10",class:"text-center text-red-400 py-8"},Wl={key:2},Zl=["onClick"],ts={class:"text-xs text-slate-500 whitespace-nowrap"},es={class:"text-xs"},ls={class:"text-xs"},ss={class:"text-xs"},os={class:"font-mono text-xs font-medium text-indigo-600"},ns={class:"font-mono text-xs"},as={class:"font-mono text-xs"},is={class:"font-mono text-xs"},ds={class:"text-right font-medium"},us={class:"flex gap-1"},rs=["onClick"],cs=["onClick"],vs={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-8 max-w-3xl"},bs={class:"modal-box max-w-2xl"},ps={class:"grid grid-cols-2 gap-4 mb-4"},ms={class:"form-control"},xs=["value"],fs={class:"form-control"},gs=["disabled"],hs={value:""},ys=["value"],ws={class:"form-control"},Cs=["disabled"],ks={value:0},_s=["value"],Ss={class:"tabs tabs-boxed mb-4 bg-slate-100 inline-flex"},Ms={class:"grid grid-cols-2 gap-4 mb-1"},Us={class:"form-control"},Ds=["required"],Vs={class:"form-control"},As={class:"form-control mb-2"},Ns={class:"form-control mb-1"},Is={key:0,class:"rounded-lg bg-indigo-50 border border-indigo-100 px-4 py-3 text-sm text-slate-700 mt-3 mb-3"},js={class:"flex flex-wrap gap-x-6 gap-y-1"},Bs={key:0},Ts={class:"text-indigo-600"},Ps={key:1},Ls={class:"text-indigo-600"},Os={class:"form-control mb-4"},$s={class:"modal-action"},Fs=["disabled"],Es={key:0,class:"loading loading-spinner loading-xs"},zs={class:"modal-box max-w-lg"},qs={key:0,class:"rounded-lg border border-slate-200 bg-slate-50 px-4 py-3 font-mono text-sm leading-7 mb-4"},Rs={class:"text-indigo-600"},Hs={class:"text-indigo-600"},Gs={key:0},Xs={class:"modal-action"},Ys=["disabled"],Js={key:0,class:"loading loading-spinner loading-xs"},Ks={class:"modal-box w-11/12 max-w-2xl"},Qs={class:"grid grid-cols-2 gap-4 mb-3"},Ws={class:"form-control"},Zs={class:"form-control"},to={class:"form-control mb-3"},eo={class:"form-control mb-3"},lo={class:"form-control mb-4"},so={class:"text-sm text-slate-500"},oo={class:"modal-action"},no=["disabled"],ao={key:0,class:"loading loading-spinner loading-xs"},io={class:"modal-box max-w-md"},uo={class:"text-sm space-y-1 mb-4"},ro={class:"font-medium"},co={class:"font-medium"},vo={class:"font-mono font-medium text-red-600"},bo={class:"font-medium"},po={class:"form-control mb-2"},mo={class:"label"},xo={class:"label-text text-xs"},fo={class:"font-mono text-red-600"},go={class:"text-xs text-red-500 min-h-[1em] mb-2"},ho={class:"modal-action"},yo=["disabled"],wo={key:0,class:"loading loading-spinner loading-xs"},Mo=Oe({__name:"device",setup(Co){const{webApi:C}=ze(),{success:A,error:N,warn:I}=qe(),j=$e(),be=g(()=>j.identity===1),pe=g(()=>j.identity>0&&j.identity<=2),k=a("codes");function St(s){k.value=s}const L=a([]),X=a([]),F=a([]),O=a([]),_=a([]),w=a([]),W=a(0),S=a(0),nt=a(200),M=a(0),B=a(""),m=a(0),at=a(""),it=a(""),Mt=a("-"),Ut=a("-"),Dt=a("-"),Vt=a(""),At=a(!1),dt=a(""),ut=a("0"),Nt=a("createtime"),rt=a(""),It=a(""),jt=a(""),Bt=a(""),Z=a("200"),Tt=a(null),tt=a(""),ct=a(!1),E=a([]),Xt=g(()=>E.value.length),Yt=a(null),Pt=a(null),Lt=a(null),U=a("production"),D=a(0),et=a(""),z=a(0),vt=a(!1),Y=a(null),J=a(""),bt=a(""),pt=a(!1),mt=a(!1),b=a(null),lt=a(null),q=a(""),xt=a(null),ft=a(!1),p=Ee({to:"",cc:"",subject:"",content:""}),Ot=a(null),h=a(null),gt=a(""),ht=a(""),yt=a(!1),$t=g(()=>h.value?h.value.batchno:""),me=g(()=>!!h.value&>.value.trim()===$t.value),Jt=g(()=>Math.max(1,Math.ceil(W.value/nt.value))),xe=g(()=>m.value?"第 "+(S.value+1)+" / "+Jt.value+" 页":"-"),Kt=g(()=>M.value?F.value.filter(s=>s.brandid===M.value):F.value),Qt=g(()=>M.value?X.value.filter(s=>s.brandid===M.value):X.value),Ft=g(()=>D.value?X.value.filter(s=>s.brandid===D.value&&s.status===1):[]),Wt=g(()=>D.value?F.value.filter(s=>s.brandid===D.value):[]),K=g(()=>{const s=O.value.find(l=>l.id===z.value),t=s?.devicecodecount&&s.devicecodecount>0?s.devicecodecount:1;return{isClassicBT:s?.devicetype===1,codeCount:t}}),fe=g(()=>(Number(Y.value)||0)*K.value.codeCount),ge=g(()=>J.value.split(",").map(s=>s.trim()).filter(Boolean).length),he=g(()=>{if(!b.value)return"N/A";const s=L.value.find(t=>t.id===b.value.brandid);return s&&s.providerid!=null?Number(s.providerid).toString(16).padStart(4,"0").toUpperCase():"N/A"});function wt(s){if(!s)return"-";const t=new Date(s*1e3);return t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")+" "+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")}function Zt(s,t){if(!s)return 0;const l=new Date(s+(t?"T23:59:59":"T00:00:00"));return Math.floor(l.getTime()/1e3)}function Et(s){const t=L.value.find(l=>l.id===s);return t?t.brand:String(s||"")}function te(s){if(!s)return"未分配";const t=X.value.find(l=>l.id===s);return t?t.name+" ("+t.id+")":s}function zt(s){const t=O.value.find(l=>l.id===s);return t?t.devicename:String(s||"")}function Ct(s){return s?Number(s).toString(16).toUpperCase():""}function ee(s){const t=s.serialstart!=null&&s.serialstart!==""?String(s.serialstart):"",l=s.serialend!=null&&s.serialend!==""?String(s.serialend):"";return!t&&!l?"-":t+" - "+l}function qt(s){return s.disabled!==0?{label:"已禁用",dot:"bg-red-500",text:"text-red-600"}:s.status===1?{label:"已激活",dot:"bg-emerald-500",text:"text-emerald-600"}:s.status===2?{label:"已过期",dot:"bg-amber-500",text:"text-amber-600"}:{label:"未使用",dot:"bg-slate-300",text:"text-slate-500"}}async function ye(){try{const[t,l,o]=await Promise.all([C("getbrands",{}),C("getproducts",{}),C("getchannels",{status:-1})]);L.value=t?.brands??[],O.value=l?.products??[],X.value=o?.channels??[]}catch(t){N(t?.message??"加载基础数据失败"),L.value=[],O.value=[],X.value=[]}const s=j.products.map(t=>parseInt(t)).filter(t=>!isNaN(t)&&t>0);j.identity!==1&&s.length>0?F.value=O.value.filter(t=>s.indexOf(t.id)>=0):F.value=O.value.slice(),F.value.length>0&&(m.value=F.value[0].id),R()}function we(){m.value&&!Kt.value.find(s=>s.id===m.value)&&(m.value=0),B.value&&!Qt.value.find(s=>s.id===B.value)&&(B.value=""),R()}function Ce(){S.value=0,R()}function ke(){S.value=0,R()}function le(){let s;if(Z.value==="custom"){if(s=Number(Tt.value),!s||s<1)return}else s=parseInt(Z.value);s>2e3&&(s=2e3),nt.value=s,H(!0)}function R(){Rt(),H(!0)}async function Rt(){At.value=!0,dt.value="";const s=!!(at.value||it.value),t={limit:s?500:10};M.value&&(t.brandid=M.value),B.value&&(t.channelid=B.value),m.value&&(t.productid=m.value);const l=Zt(at.value,!1);l&&(t.start=l);const o=Zt(it.value,!0);o&&(t.end=o);try{const i=await C("getproductionbatches",t);_.value=i?.notes??[],Mt.value=i?.total_batch??0,Ut.value=i?.total_devices??0,Dt.value=_.value.length?wt(_.value[0].ts):"-",Vt.value=s?"共 "+_.value.length+" 条":"最近 "+_.value.length+" 条"}catch(i){dt.value=i?.message??"",_.value=[],Mt.value="0",Ut.value="0",Dt.value="-",Vt.value=""}finally{At.value=!1}}function _e(s,t,l,o){h.value={brandid:s,productid:t,batchno:l,devicenum:o},gt.value="",ht.value="",Ot.value?.showModal()}function se(){Ot.value?.close(),h.value=null}async function Se(){if(h.value){yt.value=!0,ht.value="";try{const s=await C("revokeproductionbatch",{productid:h.value.productid,batchno:h.value.batchno});se(),A("已撤销批次,删除 "+(s?.deleted??0)+" 个授权码"),R()}catch(s){ht.value=s?.message??"撤销失败"}finally{yt.value=!1}}}function oe(s,t){m.value=s,rt.value=t,ut.value="0",S.value=0,k.value="codes",H(!0),setTimeout(()=>{Yt.value?.scrollIntoView({behavior:"smooth",block:"start"})},100)}function ne(){const s={productid:m.value,sortby:Nt.value,order:"desc"},t=parseInt(ut.value);isNaN(t)||(s.status=t),M.value&&(s.brandid=M.value),B.value&&(s.channelid=B.value);const l=rt.value.trim();l&&(s.batchno=l);const o=It.value.trim();o&&(s.code=o);const i=jt.value.trim();i&&(s.devicemac=i);const x=Bt.value.trim();return x&&(s.uid=x),s}async function H(s){if(s&&(S.value=0),E.value=[],ct.value=!1,!m.value){w.value=[],W.value=0,tt.value="";return}const t=Object.assign(ne(),{limit:nt.value,offset:S.value*nt.value});try{const l=await C("getauthcodes",t);w.value=l?.devices??[],W.value=l?.total??0,tt.value=""}catch(l){tt.value=l?.message??"",w.value=[],W.value=0}}function ae(s){S.value=Math.max(0,S.value+s),H(!1)}async function Me(s){if(window.confirm("确定重置该设备授权状态?"))try{await C("resetlicensestatus",{licenses:s}),A("重置成功"),H(!1),Rt()}catch(t){N(t?.message??"失败")}}function Ue(){ct.value?E.value=w.value.map(s=>s.code||""):E.value=[]}async function kt(s,t){if(!m.value){I("请先选择产品");return}const l=t??E.value.slice();if(!l.length){I("请先勾选授权码");return}const o=s===-1?"禁用":"恢复";if(window.confirm("确定"+o+" "+l.length+" 个授权码?"+(s===-1?`
禁用后该授权码将无法绑定。`:"")))try{const i=await C("disableauthcodes",{productid:m.value,codes:l,disabled:s});A(o+"成功("+(i?.affected??0)+" 条)"),H(!1)}catch(i){N(i?.message??o+"失败")}}function De(){D.value=0,et.value="",z.value=0,vt.value=!1,Y.value=null,J.value="",bt.value="",U.value="production",b.value=null,Pt.value?.showModal()}function ie(){Pt.value?.close()}function de(){Lt.value?.close()}function Ve(){z.value=0,et.value=""}function Ae(s){const l=s.target.files?.[0];if(!l)return;const o=new FileReader;o.onload=i=>{const x=String(i.target?.result??"").split(`
`),c=[];x.forEach(T=>{const st=T.split(",");st[0]&&st[0].trim()&&c.push(st[0].trim())}),J.value=c.join(", "),A("读取 "+c.length+" 个 MAC 地址")},o.readAsText(l,"UTF-8")}function ue(){const s=Number(D.value),t=Number(z.value),l=et.value.trim();if(!s||!t)return I("请选择品牌商和产品"),null;if(!l)return I("请选择渠道商"),null;const o={brandid:s,channelid:l,productid:t,remark:bt.value.trim()};if(U.value==="production"){if(o.createtype=1,o.number=Number(Y.value),o.isbindmac=vt.value,!o.number||o.number<1)return I("请输入有效数量"),null}else{o.createtype=2;const i=J.value.trim();if(!i)return I("请输入或上传 MAC 地址"),null;o.macaddresses=i}return o}async function Ne(){const s=ue();if(s){mt.value=!0;try{const t=await C("previewauthcodes",s);if(b.value=t??null,!b.value){N("预检失败");return}Lt.value?.showModal()}catch(t){N(t?.message??"预检失败")}finally{mt.value=!1}}}async function Ie(){const s=ue();if(!s)return;const t=s.brandid,l=s.productid;b.value?.batchno&&(s.batchno=b.value.batchno),pt.value=!0;try{const o=await C("createauthcodes",s),x=(o?.devices??[]).map(c=>typeof c=="string"?{code:c,brandid:o?.brandid??t,productid:o?.productid??l}:{...c,brandid:c.brandid??o?.brandid??t,productid:c.productid??o?.productid??l});de(),ie(),x.length>0?(A("成功生成 "+x.length+" 个授权码,批次 "+(o?.batchno||"")),Ht(x),Te(o??{},t,l)):(A("创建成功"),k.value="batches",R())}catch(o){N(o?.message??"创建失败")}finally{pt.value=!1}}function Ht(s){const t=s.some(c=>c.devicemac),l=t?["License","Mac地址"]:["License"],o=s.map(c=>t?[c.code||"",c.devicemac||""]:[c.code||""]),i=[l.join(",")].concat(o.map(c=>c.join(","))).join(`
`);lt.value=new Blob([i],{type:"text/csv;charset=utf-8;"});const x=s[0];q.value="设备生产_"+(x.brandid||"unknown")+"_"+(x.productid||"unknown")+"_"+new Date().toISOString().split("T")[0]+".csv"}async function je(){if(!m.value){I("请先选择产品");return}try{const s=ne(),t=2e3;let l=[],o=0,i=1/0;for(;l.length[wt(i.ts),Et(i.brandid),te(i.channelid),zt(i.productid),i.batchno||"",ee(i),i.startmac||"",i.endmac||"",i.devicenum||0]),l=[s.join(",")].concat(t.map(i=>i.join(","))).join(`
`),o=new Blob([l],{type:"text/csv;charset=utf-8;"});re(o,"生产记录_"+new Date().toISOString().split("T")[0]+".csv"),A("导出成功")}function re(s,t){const l=URL.createObjectURL(s),o=document.createElement("a");o.href=l,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(l)}function Te(s,t,l){const o=L.value.find(ot=>ot.id===t),i=O.value.find(ot=>ot.id===l),x=i?i.devicename:"未知产品(ID:"+l+")",c=o&&o.providerid!=null?Number(o.providerid):null;let T=[];o&&o.contactmails&&(T=o.contactmails.split(",").map(ot=>ot.trim()).filter(Boolean)),p.to=T[0]||"",p.cc=T.length>1?T.slice(1).join(","):"";const st=new Date().toLocaleDateString();p.subject="【生产通知】批次"+(s.batchno||"")+"设备生产通知 - "+st,p.content=`尊敬的合作伙伴:
我公司向贵司发送产品生产通知函。
设备地址区间为:`+(s.startmac||"")+"-"+(s.endmac||"")+`
序号区间:`+(s.serialstart??"")+" - "+(s.serialend??"")+`
生产批次(BatchNo):`+(s.batchno||"")+`
服务ID(CID): 0x`+(c!=null?c.toString(16).padStart(4,"0").toUpperCase():"N/A")+`
品牌ID(BID): 0x`+(t!=null?Number(t).toString(16).padStart(4,"0").toUpperCase():"N/A")+`
产品ID(PID): 0x`+(l!=null?Number(l).toString(16).padStart(4,"0").toUpperCase():"N/A")+`
产品名称: `+x+`
生产数量:`+(s.number||0)+`
请查收附件中的设备详细信息。
此致
敬礼!`,xt.value?.showModal()}function Pe(){if(w.value.length===0)return;Ht(w.value);const s=w.value[0],t=L.value.find(c=>c.id===s.brandid),l=O.value.find(c=>c.id===s.productid),o=l?l.devicename:"";let i=[];t&&t.contactmails&&(i=t.contactmails.split(",").map(c=>c.trim()).filter(Boolean)),p.to=i[0]||"",p.cc=i.length>1?i.slice(1).join(","):"";const x=new Date().toLocaleDateString();p.subject="【授权码清单】"+(o||"设备")+" - "+x,p.content=`尊敬的合作伙伴:
附件为当前查询的授权码清单,共 `+w.value.length+` 条记录。
`+(o?"产品:"+o+`
`:"")+`
请查收。
此致
敬礼!`,xt.value?.showModal()}function ce(){xt.value?.close()}async function Le(){ft.value=!0;const s=new FormData;s.append("to",p.to),s.append("subject",p.subject),s.append("content",p.content);const t=p.cc.trim();if(t&&s.append("cc",t),lt.value&&q.value){const l=new File([lt.value],q.value,{type:"text/csv"});s.append("file",l,q.value)}try{const l={};j.token&&(l.Authorization=j.token),j.currentAppId&&(l["X-App-Id"]=String(j.currentAppId));const i=await(await fetch("/web/api/api_sendsmtpemail",{method:"POST",headers:l,body:s})).json();i.code===0?(A("邮件发送成功"),ce(),k.value="batches",R()):N("发送失败: "+(i.msg||"未知错误"))}catch(l){N("发送失败: "+(l?.message??""))}finally{ft.value=!1}}return Fe(ye),(s,t)=>(u(),d("div",Re,[e("div",He,[e("div",Ge,[e("a",{class:G(["tab",{"tab-active":k.value==="codes"}]),onClick:t[0]||(t[0]=l=>St("codes"))},"授权码查询",2),e("a",{class:G(["tab",{"tab-active":k.value==="batches"}]),onClick:t[1]||(t[1]=l=>St("batches"))},"生产记录",2),pe.value?(u(),d("a",{key:0,class:G(["tab",{"tab-active":k.value==="produce"}]),onClick:t[2]||(t[2]=l=>St("produce"))},"生产授权码",2)):y("",!0)]),k.value!=="produce"?(u(),d("div",Xe,[r(e("select",{"onUpdate:modelValue":t[3]||(t[3]=l=>M.value=l),class:"select select-bordered select-sm",style:{"min-width":"150px"},onChange:we},[t[37]||(t[37]=e("option",{value:0},"全部品牌商",-1)),(u(!0),d(V,null,$(L.value,l=>(u(),d("option",{key:l.id,value:l.id},n(l.brand||""),9,Ye))),128))],544),[[P,M.value,void 0,{number:!0}]]),r(e("select",{"onUpdate:modelValue":t[4]||(t[4]=l=>B.value=l),class:"select select-bordered select-sm",style:{"min-width":"160px"},onChange:Ce},[t[38]||(t[38]=e("option",{value:""},"全部渠道商",-1)),(u(!0),d(V,null,$(Qt.value,l=>(u(),d("option",{key:l.id,value:l.id},n(l.name)+" ("+n(l.id)+")",9,Je))),128))],544),[[P,B.value]]),r(e("select",{"onUpdate:modelValue":t[5]||(t[5]=l=>m.value=l),class:"select select-bordered select-sm",style:{"min-width":"180px"},onChange:ke},[t[39]||(t[39]=e("option",{value:0},"请选择产品",-1)),(u(!0),d(V,null,$(Kt.value,l=>(u(),d("option",{key:l.id,value:l.id},n(l.devicename||""),9,Ke))),128))],544),[[P,m.value,void 0,{number:!0}]])])):y("",!0)]),r(e("div",Qe,[e("div",We,[t[51]||(t[51]=e("h3",{class:"text-sm font-semibold text-slate-700"},[v("授权码记录"),e("span",{class:"text-xs text-slate-400 font-normal ml-2"},"默认按生产时间倒序")],-1)),e("div",Ze,[e("div",tl,[t[41]||(t[41]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"状态")],-1)),r(e("select",{"onUpdate:modelValue":t[6]||(t[6]=l=>ut.value=l),class:"select select-bordered select-xs"},[...t[40]||(t[40]=[e("option",{value:"0"},"全部",-1),e("option",{value:"-1"},"未使用",-1),e("option",{value:"1"},"已激活",-1),e("option",{value:"2"},"已过期",-1)])],512),[[P,ut.value]])]),e("div",el,[t[43]||(t[43]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"排序")],-1)),r(e("select",{"onUpdate:modelValue":t[7]||(t[7]=l=>Nt.value=l),class:"select select-bordered select-xs"},[...t[42]||(t[42]=[e("option",{value:"createtime"},"生产时间",-1),e("option",{value:"usedtime"},"激活时间",-1)])],512),[[P,Nt.value]])]),e("div",ll,[t[44]||(t[44]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"批次")],-1)),r(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>rt.value=l),type:"text",class:"input input-bordered input-xs font-mono",placeholder:"批次号",style:{width:"90px"}},null,512),[[f,rt.value]])]),e("div",sl,[t[45]||(t[45]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"授权码")],-1)),r(e("input",{"onUpdate:modelValue":t[9]||(t[9]=l=>It.value=l),type:"text",class:"input input-bordered input-xs",placeholder:"授权码"},null,512),[[f,It.value]])]),e("div",ol,[t[46]||(t[46]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"MAC")],-1)),r(e("input",{"onUpdate:modelValue":t[10]||(t[10]=l=>jt.value=l),type:"text",class:"input input-bordered input-xs",placeholder:"MAC"},null,512),[[f,jt.value]])]),e("div",nl,[t[47]||(t[47]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"用户UID")],-1)),r(e("input",{"onUpdate:modelValue":t[11]||(t[11]=l=>Bt.value=l),type:"text",class:"input input-bordered input-xs",placeholder:"UID"},null,512),[[f,Bt.value]])]),e("div",al,[t[49]||(t[49]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"每页数量")],-1)),r(e("select",{"onUpdate:modelValue":t[12]||(t[12]=l=>Z.value=l),class:"select select-bordered select-xs",onChange:le},[...t[48]||(t[48]=[ve('',6)])],544),[[P,Z.value]])]),r(e("div",il,[t[50]||(t[50]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"自定义")],-1)),r(e("input",{"onUpdate:modelValue":t[13]||(t[13]=l=>Tt.value=l),type:"number",min:"1",max:"2000",class:"input input-bordered input-xs",placeholder:"1-2000",style:{width:"90px"},onChange:le},null,544),[[f,Tt.value,void 0,{number:!0}]])],512),[[Q,Z.value==="custom"]]),e("button",{class:"btn btn-primary btn-xs text-white",onClick:t[14]||(t[14]=l=>H(!0))},"搜索"),e("button",{class:"btn btn-error btn-xs text-white",disabled:Xt.value===0,onClick:t[15]||(t[15]=l=>kt(-1))},"批量禁用",8,dl),e("button",{class:"btn btn-warning btn-xs text-white",disabled:Xt.value===0,onClick:t[16]||(t[16]=l=>kt(0))},"批量恢复",8,ul),e("button",{class:"btn btn-ghost btn-xs",disabled:!w.value.length,onClick:je},"导出",8,rl),e("button",{class:"btn btn-ghost btn-xs",disabled:!w.value.length,onClick:Pe},"发邮件",8,cl)])]),e("div",vl,[e("table",{ref_key:"devicesTable",ref:Yt,class:"table table-zebra text-sm"},[e("thead",null,[e("tr",null,[e("th",bl,[r(e("input",{"onUpdate:modelValue":t[17]||(t[17]=l=>ct.value=l),type:"checkbox",class:"checkbox checkbox-xs",onChange:Ue},null,544),[[Gt,ct.value]])]),t[52]||(t[52]=e("th",null,"授权码",-1)),t[53]||(t[53]=e("th",null,"批次",-1)),t[54]||(t[54]=e("th",null,"MAC地址",-1)),t[55]||(t[55]=e("th",null,"用户UID",-1)),t[56]||(t[56]=e("th",null,"激活时间",-1)),t[57]||(t[57]=e("th",null,"状态",-1)),t[58]||(t[58]=e("th",null,"操作",-1))])]),e("tbody",null,[m.value?tt.value?(u(),d("tr",ml,[e("td",xl,"查询失败: "+n(tt.value),1)])):w.value.length?(u(!0),d(V,{key:3},$(w.value,(l,o)=>(u(),d("tr",{key:o},[e("td",null,[r(e("input",{"onUpdate:modelValue":t[18]||(t[18]=i=>E.value=i),type:"checkbox",class:"checkbox checkbox-xs",value:l.code||""},null,8,gl),[[Gt,E.value]])]),e("td",hl,n(l.code||""),1),e("td",yl,n(l.batchno||""),1),e("td",wl,n(l.devicemac||"-"),1),e("td",Cl,n(l.uid||"-"),1),e("td",kl,n(l.usedtime?wt(l.usedtime):"-"),1),e("td",null,[e("span",{class:G(["inline-flex items-center gap-1.5 text-xs font-medium whitespace-nowrap",qt(l).text])},[e("span",{class:G(["h-1.5 w-1.5 rounded-full shrink-0",qt(l).dot])},null,2),v(n(qt(l).label),1)],2)]),e("td",null,[e("div",_l,[l.disabled!==0?(u(),d("button",{key:0,class:"btn btn-ghost btn-xs text-warning",onClick:i=>kt(0,[l.code])},"恢复",8,Sl)):(u(),d("button",{key:1,class:"btn btn-ghost btn-xs text-error",onClick:i=>kt(-1,[l.code])},"禁用",8,Ml)),l.status!==0?(u(),d("button",{key:2,class:"btn btn-ghost btn-xs text-orange-500",onClick:i=>Me(l.code)},"重置",8,Ul)):y("",!0)])])]))),128)):(u(),d("tr",fl,[...t[60]||(t[60]=[e("td",{colspan:"8",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])):(u(),d("tr",pl,[...t[59]||(t[59]=[e("td",{colspan:"8",class:"text-center text-slate-400 py-8"},"请先选择产品",-1)])]))])],512)]),e("div",Dl,[e("span",Vl,n(m.value?"共 "+W.value+" 条":"-"),1),e("div",Al,[e("button",{class:"btn btn-ghost btn-xs",disabled:S.value<=0||!m.value,onClick:t[19]||(t[19]=l=>ae(-1))},"上一页",8,Nl),e("span",Il,n(xe.value),1),e("button",{class:"btn btn-ghost btn-xs",disabled:!m.value||S.value+1>=Jt.value,onClick:t[20]||(t[20]=l=>ae(1))},"下一页",8,jl)])])],512),[[Q,k.value==="codes"]]),r(e("div",null,[e("div",Bl,[e("div",Tl,[t[61]||(t[61]=e("div",{class:"text-xs text-slate-400 mb-1"},"命中批次数",-1)),e("div",Pl,n(Mt.value),1)]),e("div",Ll,[t[62]||(t[62]=e("div",{class:"text-xs text-slate-400 mb-1"},"生产授权码总数",-1)),e("div",Ol,n(Ut.value),1)]),e("div",$l,[t[63]||(t[63]=e("div",{class:"text-xs text-slate-400 mb-1"},"最近一次生产时间",-1)),e("div",Fl,n(Dt.value),1)])]),e("div",El,[e("div",zl,[t[66]||(t[66]=e("h3",{class:"text-sm font-semibold text-slate-700"},[v("生产记录(按批次)"),e("span",{class:"text-xs text-slate-400 font-normal ml-2"},"点击记录查看该批次授权码")],-1)),e("div",ql,[e("div",Rl,[t[64]||(t[64]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"起始时间")],-1)),r(e("input",{"onUpdate:modelValue":t[21]||(t[21]=l=>at.value=l),type:"date",class:"input input-bordered input-xs"},null,512),[[f,at.value]])]),e("div",Hl,[t[65]||(t[65]=e("label",{class:"label py-0"},[e("span",{class:"label-text text-xs"},"结束时间")],-1)),r(e("input",{"onUpdate:modelValue":t[22]||(t[22]=l=>it.value=l),type:"date",class:"input input-bordered input-xs"},null,512),[[f,it.value]])]),e("button",{class:"btn btn-primary btn-xs text-white",onClick:Rt},"查询"),e("span",Gl,n(Vt.value),1),e("button",{class:"btn btn-ghost btn-xs",onClick:Be},"导出CSV")])]),e("div",Xl,[e("table",Yl,[t[69]||(t[69]=e("thead",null,[e("tr",null,[e("th",{class:"w-40"},"生产时间"),e("th",null,"品牌商"),e("th",null,"渠道商"),e("th",null,"产品"),e("th",null,"批次号"),e("th",null,"序号区间"),e("th",null,"起始MAC"),e("th",null,"结束MAC"),e("th",{class:"text-right"},"数量"),e("th",null,"操作")])],-1)),e("tbody",null,[At.value?(u(),d("tr",Jl,[...t[67]||(t[67]=[e("td",{colspan:"10",class:"text-center text-slate-400 py-8"},"加载中…",-1)])])):dt.value?(u(),d("tr",Kl,[e("td",Ql,"查询失败: "+n(dt.value),1)])):_.value.length?(u(!0),d(V,{key:3},$(_.value,(l,o)=>(u(),d("tr",{key:o,class:"hover cursor-pointer",onClick:i=>oe(l.productid,String(l.batchno||""))},[e("td",ts,n(wt(l.ts)),1),e("td",es,n(Et(l.brandid)),1),e("td",ls,n(te(l.channelid)),1),e("td",ss,n(zt(l.productid)),1),e("td",os,n(l.batchno||""),1),e("td",ns,n(ee(l)),1),e("td",as,n(l.startmac||""),1),e("td",is,n(l.endmac||""),1),e("td",ds,n(l.devicenum||0),1),e("td",null,[e("div",us,[e("button",{class:"btn btn-ghost btn-xs text-indigo-500",onClick:_t(i=>oe(l.productid,String(l.batchno||"")),["stop"])},"查看授权码",8,rs),be.value?(u(),d("button",{key:0,class:"btn btn-ghost btn-xs text-red-500",onClick:_t(i=>_e(l.brandid,l.productid,String(l.batchno||""),l.devicenum||0),["stop"])},"撤销",8,cs)):y("",!0)])])],8,Zl))),128)):(u(),d("tr",Wl,[...t[68]||(t[68]=[e("td",{colspan:"10",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])]))])])])])],512),[[Q,k.value==="batches"]]),r(e("div",vs,[t[70]||(t[70]=ve('生产授权码
生产流程:填写生产表单 → 系统按产品类型计算最终授权码数量并预分配批次号 → 二次确认生产方案(品牌商 / 产品ID / 批次号 / 数量 / MAC区间)→ 提交服务端生产 → 发送生产通知邮件。