2 lines
6.0 KiB
JavaScript
2 lines
6.0 KiB
JavaScript
var I=(w,g,c)=>new Promise((x,_)=>{var b=l=>{try{d(c.next(l))}catch(u){_(u)}},y=l=>{try{d(c.throw(l))}catch(u){_(u)}},d=l=>l.done?x(l.value):Promise.resolve(l.value).then(b,y);d((c=c.apply(w,g)).next())});import{c1 as T,an as h,ay as G,c0 as H,bX as Q,aL as Y,bD as Z,c6 as tt,a9 as P,ac as et}from"./bootstrap-DO1fwVR8.js";import{s as st,b as at,c as ot}from"./index-0TR-usjk.js";import{I as A}from"./constants-B5TthjFC.js";import{m as nt,b9 as p,aa as z,v as lt,aW as it,ad as m,b2 as f,j as n,ac as V,bJ as i,u as o,ae as e,bp as r,aT as B,ai as C,cT as U,I as J,bb as $}from"../jse/index-index-WYMMa-75.js";const rt={class:"smart-badge-wrapper"},dt={class:"data-item"},ct={class:"data-icon location"},ut={class:"data-content"},vt={class:"data-value small"},mt={class:"data-item"},ft={class:"data-content"},pt={class:"data-value"},_t={class:"data-item"},yt={class:"data-icon bluetooth"},ht={class:"data-content"},gt={class:"data-value"},bt={class:"data-icon tts"},kt={class:"refresh-section"},It={key:0,class:"update-time"},Tt={key:0,class:"bluetooth-section"},xt={class:"bluetooth-list"},St={class:"bt-mac"},wt={class:"bt-rssi"},Et={key:1,class:"event-section"},Dt={class:"event-list"},Mt={class:"event-time"},Nt={class:"event-key"},Pt=5e3,Vt=nt({__name:"device-realtime-smart-badge",props:{deviceId:{},thingModelList:{}},setup(w){const g=w,c=p(!1),x=p({}),_=p([]),b=p(null),y=p(!1),d=p(""),l=p(!1);let u=null;function k(s,t="-"){var v;const a=x.value[s];return(v=a==null?void 0:a.value)!=null?v:t}const E=z(()=>{const s=Number(k("batteryLevel",0));return s<=20?"#ff4d4f":s<=50?"#faad14":"#52c41a"}),D=z(()=>{const s=k("bluetoothDevices",null);if(!s)return[];try{const t=typeof s=="string"?JSON.parse(s):s;return Array.isArray(t)?t:[]}catch(t){return[]}});function L(s){const t=Math.abs(s);return t<=50?"#52c41a":t<=70?"#1890ff":t<=85?"#faad14":"#ff4d4f"}function j(){return I(this,null,function*(){try{const s=yield at({deviceId:g.deviceId}),t={};s.forEach(a=>{t[a.identifier]=a}),x.value=t,b.value=new Date}catch(s){console.error("获取设备属性失败:",s)}})}function F(){return I(this,null,function*(){try{const s=yield ot({deviceId:g.deviceId,method:A.EVENT_POST.method,identifier:"button_event",pageNo:1,pageSize:5});_.value=s.list||[]}catch(s){console.error("获取按键事件失败:",s)}})}function M(){return I(this,null,function*(){c.value=!0;try{yield Promise.all([j(),F()])}finally{c.value=!1}})}function K(){O(),u=setInterval(()=>{M()},Pt)}function O(){u&&(clearInterval(u),u=null)}function W(){return I(this,null,function*(){if(!d.value.trim()){P.warning("请输入播报内容");return}l.value=!0;try{yield st({deviceId:g.deviceId,method:A.SERVICE_INVOKE.method,params:{identifier:"TTS",params:{tts_text:d.value,tts_flag:9}}}),P.success("语音播报已发送"),y.value=!1,d.value=""}catch(s){P.error("发送失败")}finally{l.value=!1}})}function N(s){try{const t=JSON.parse(s),a=t.params||t,v=a.keyState===1?"短按":"长按",S=a.keyId||"-";return{keyState:v,keyId:S}}catch(t){return{keyState:"-",keyId:"-"}}}function X(s){var t;return(t=s.request)!=null&&t.reportTime?U(s.request.reportTime):"-"}return lt(()=>{M(),K()}),it(()=>{O()}),(s,t)=>(f(),m("div",rt,[n(o(H),{gutter:12},{default:i(()=>[n(o(T),{xs:12,sm:6,md:4},{default:i(()=>[e("div",dt,[e("div",ct,[n(o(h),{icon:"mdi:map-marker"})]),e("div",ut,[t[3]||(t[3]=e("div",{class:"data-label"},"位置",-1)),e("div",vt,r(k("latitude"))+", "+r(k("longitude")),1)])])]),_:1}),n(o(T),{xs:12,sm:6,md:4},{default:i(()=>[e("div",mt,[e("div",{class:"data-icon battery",style:B({background:`${E.value}20`,color:E.value})},[n(o(h),{icon:"mdi:battery"})],4),e("div",ft,[t[4]||(t[4]=e("div",{class:"data-label"},"电量",-1)),e("div",pt,[e("span",{style:B({color:E.value})},r(k("batteryLevel",0))+"%",5)])])])]),_:1}),n(o(T),{xs:12,sm:6,md:4},{default:i(()=>[e("div",_t,[e("div",yt,[n(o(h),{icon:"mdi:bluetooth"})]),e("div",ht,[t[5]||(t[5]=e("div",{class:"data-label"},"蓝牙信标",-1)),e("div",gt,r(D.value.length)+" 个",1)])])]),_:1}),n(o(T),{xs:12,sm:6,md:4},{default:i(()=>[e("div",{class:"data-item action-item",onClick:t[0]||(t[0]=a=>y.value=!0)},[e("div",bt,[n(o(h),{icon:"mdi:volume-high"})]),t[6]||(t[6]=e("div",{class:"data-content"},[e("div",{class:"data-label"},"语音播报"),e("div",{class:"data-value action"},"点击发送")],-1))])]),_:1}),n(o(T),{xs:24,sm:24,md:8},{default:i(()=>[e("div",kt,[b.value?(f(),m("span",It,[n(o(h),{icon:"mdi:clock-outline"}),C(" "+r(o(U)(b.value)),1)])):V("",!0),n(o(G),{size:"small",onClick:M,loading:c.value},{icon:i(()=>[n(o(h),{icon:"mdi:refresh"})]),default:i(()=>[t[7]||(t[7]=C(" 刷新 ",-1))]),_:1},8,["loading"])])]),_:1})]),_:1}),D.value.length>0?(f(),m("div",Tt,[t[8]||(t[8]=e("div",{class:"section-title"},"蓝牙信标",-1)),e("div",xt,[(f(!0),m(J,null,$(D.value,(a,v)=>(f(),m("div",{key:v,class:"bluetooth-item"},[e("span",St,r(a.mac),1),e("div",wt,[n(o(Q),{percent:Math.max(0,100+a.rssi),"stroke-color":L(a.rssi),"show-info":!1,size:"small",style:{width:"50px"}},null,8,["percent","stroke-color"]),e("span",{class:"rssi-val",style:B({color:L(a.rssi)})},r(a.rssi)+"dBm",5)])]))),128))])])):V("",!0),_.value.length>0?(f(),m("div",Et,[t[9]||(t[9]=e("div",{class:"section-title"},"按键事件",-1)),e("div",Dt,[(f(!0),m(J,null,$(_.value,(a,v)=>{var S,R;return f(),m("div",{key:v,class:"event-item"},[e("span",Mt,r(X(a)),1),n(o(Y),{color:N(((S=a.request)==null?void 0:S.params)||"{}").keyState==="短按"?"blue":"orange"},{default:i(()=>{var q;return[C(r(N(((q=a.request)==null?void 0:q.params)||"{}").keyState),1)]}),_:2},1032,["color"]),e("span",Nt,"按键"+r(N(((R=a.request)==null?void 0:R.params)||"{}").keyId),1)])}),128))])])):V("",!0),n(o(tt),{open:y.value,"onUpdate:open":t[2]||(t[2]=a=>y.value=a),title:"语音播报","confirm-loading":l.value,onOk:W,width:"400px"},{default:i(()=>[n(o(Z).TextArea,{value:d.value,"onUpdate:value":t[1]||(t[1]=a=>d.value=a),rows:3,placeholder:"输入播报内容...",maxlength:200,"show-count":""},null,8,["value"])]),_:1},8,["open","confirm-loading"])]))}}),qt=et(Vt,[["__scopeId","data-v-ef8bcc8c"]]);export{qt as default};
|