From 1b487519443eb6cc9ebc7681b95657ef0f15ecc0 Mon Sep 17 00:00:00 2001 From: liub Date: Mon, 19 Jan 2026 13:10:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=906107=E9=9D=99=E6=80=81?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manifest.json | 2 +- pages.json | 7 + pages/4877/BJQ4877.vue | 2 +- pages/6107/BJQ6107.vue | 770 +++++-- pages/6155/BJQ6155.vue | 2181 ++++++++++++++++++++ pages/6155/ImgCrop.vue | 2 +- static/images/6107/fan.png | Bin 0 -> 1208 bytes static/images/6107/fanJu.png | Bin 0 -> 1003 bytes static/images/6107/ju.png | Bin 0 -> 1003 bytes static/images/6155/DeviceDetail/Hby650.png | Bin 12194 -> 0 bytes static/images/common/playingActive.png | Bin 0 -> 3299 bytes 11 files changed, 2749 insertions(+), 215 deletions(-) create mode 100644 pages/6155/BJQ6155.vue create mode 100644 static/images/6107/fan.png create mode 100644 static/images/6107/fanJu.png create mode 100644 static/images/6107/ju.png delete mode 100644 static/images/6155/DeviceDetail/Hby650.png create mode 100644 static/images/common/playingActive.png diff --git a/manifest.json b/manifest.json index 36aa4e1..5eef456 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "name" : "星汉物联", "appid" : "__UNI__A21EF43", "description" : "设备管控", - "versionName" : "1.0.10", + "versionName" : "1.0.11", "versionCode" : "100", "transformPx" : false, /* 5+App特有相关 */ diff --git a/pages.json b/pages.json index 351be4c..75ce43f 100644 --- a/pages.json +++ b/pages.json @@ -369,6 +369,13 @@ { "navigationBarTitleText" : "BJQ6107" } + }, + { + "path" : "pages/6155/BJQ6155", + "style" : + { + "navigationBarTitleText" : "BJQ6155" + } } diff --git a/pages/4877/BJQ4877.vue b/pages/4877/BJQ4877.vue index 446e797..d0fcd77 100644 --- a/pages/4877/BJQ4877.vue +++ b/pages/4877/BJQ4877.vue @@ -370,7 +370,7 @@ import request, { baseURL } from '@/utils/request.js'; sta_GroupType: -1, //配组 sta_ArrowType: '', //箭头方向 warnTime: 0, - sta_Channel: 80, + sta_Channel: 31, sta_ArrowMode:'', groups: [ diff --git a/pages/6107/BJQ6107.vue b/pages/6107/BJQ6107.vue index 87c5653..609be9a 100644 --- a/pages/6107/BJQ6107.vue +++ b/pages/6107/BJQ6107.vue @@ -44,24 +44,8 @@ - @@ -71,24 +55,53 @@ - - - - + + + + + + + {{item.name}} + + + + + + + + + + 强光 + + + + 工作光 + + + + + + + + + + + - {{item.name}} + 红蓝警示 - - @@ -98,16 +111,15 @@ - + - - + + - 播放语音 + {{formData.isPlay?'正在播放':'播放语音'}} @@ -121,15 +133,15 @@ - - + + - + 音量调节 - + @@ -195,19 +207,47 @@ - + + + + + + + + + + + + 音量 + + + {{formData.volumn}}% + + + + + + + + + + + + @@ -233,7 +273,7 @@ var recei = null; var instrusionTime = null; - + var volumnTimer = null; export default { @@ -243,84 +283,54 @@ curr: 0, total: 0, pageHide: false, - Pop: { - showPop: false, //是否显示弹窗 - popType: 'custom', - bgColor: '#383934bd', - borderColor: '#BBE600', - textColor: '#ffffffde', - buttonBgColor: '#BBE600', - buttonTextColor: '#232323DE', - iconUrl: '', - message: '您确定要这样做吗?', - buttonText: '确定', - clickEvt: '', - visiblePrompt: false, - promptTitle: '设备名称', - modelValue: '', - visibleClose: false, - okCallback: null, - buttonCancelText: '', - showCancel: false, - }, - usrToggle: false, + showVolumPop: false }, formData: { - img: '/static/images/common/HBY102.png', + img: '/static/images/common/BJQ6107.png', sta_PowerPercent: '', xuhang: '', blename: '', deviceId: '', deviceName: '', RSSI: '', - statu: '', - sta_address: '', bleStatu: false, - sta_charge: '', - sta_LedType: '', - sta_RadarType: '', - sta_Online: '', - warnTime: '', - sta_sosadd: "", - sta_sosName: '', - sta_IntrusTime: '' - + SOS: false, //是否正在报警 + sta_LedType: 'fan', //灯光状态 + sta_highSpeed: true, //是否是强光 + isPlay: false, //是否正在播放 + volumn: 0, + company: '', + usrname: '', + job: '', + usrid: '' }, dic: { sta_LightType: [ { - key: 'led_flash', - name: '聚光/泛光', + key: 'ju', + name: '聚光', show: true, - img: '/static/images/6155/light.png', + img: '/static/images/6107/ju.png', activeImg: '/static/images/100/lightActive.png', group: 'sta_LedType' }, { - key: 'led_low_flash', - name: '聚光', + key: 'fan', + name: '泛光', show: true, - img: '/static/images/102/lowFlash.png', + img: '/static/images/6107/fan.png', activeImg: '/static/images/102/lowFlashActive.png', group: 'sta_LedType' }, { - key: 'led_steady', - name: '泛光', + key: 'jufan', + name: '聚光/泛光', show: true, - img: '/static/images/102/liting.png', + img: '/static/images/6107/fanJu.png', activeImg: '/static/images/102/litingActive.png', group: 'sta_LedType' - }, - { - key: 'led_off', - name: '红蓝警示', - show: true, - img: '/static/images/100/light.png', - activeImg: '/static/images/100/lightActive.png', - group: 'sta_LedType' } ], @@ -348,7 +358,8 @@ alarmStatus: null, detailPageUrl: "/pages/650/HBY650", showConfirm: false - } + }, + Msgboxs: [] } }, @@ -409,8 +420,7 @@ ble.LinkBlue(f.deviceId, f.writeServiceId, f.wirteCharactId, f.notifyCharactId).then(res => { these.formData.bleStatu = true; }); - these.formData.sta_IntrusTime = 0; - these.formData.sta_sosadd = ""; + these.setBleFormData(); @@ -429,8 +439,148 @@ }, methods: { + sendUsr() { + this.showMsg("敬请期待", "warn"); + }, + showVolmePop() { + this.Status.showVolumPop = true; + }, + volumechange(e) { + let f = this.getDevice(); + // #ifdef APP-PLUS + if (!f) { + this.showBleUnConnect(); + return; + } + // #endif + // #ifdef H5 + f = { + deviceId: '12345' + } + // #endif + this.formData.volumn = e.detail.value; - LighSetting(item, index) { + // 清除之前的定时器 + if (volumnTimer) { + clearTimeout(volumnTimer); + } + + // 设置新的定时器,控制发送频率 + volumnTimer = setTimeout(() => { + + // let json = { + // ins_volumn: [e.detail.value] + // } + + // ble.sendString(f.deviceId, json, f.writeServiceId, f.wirteCharactId, 30).then(res => { + these.setBleFormData(); + // }).catch(ex => { + // uni.showModal({ + // title: '错误', + // content: ex.msg + // }) + // }); + + + + }, 100); + }, + audioManager() { + + uni.navigateTo({ + url: '/pages/common/audioManager/AudioList', + events: { + audioApply: function(id) { + //应用某个语音时,将数据发送给设备 + console.log("准备发送数据", id); + showLoading(these, { + text: '准备发送数据' + }); + + these.audioData.hexs = uni.getStorageSync(Common.pcmStorageKey + "_" + id); + console.log("hexs.length=", these.audioData.hexs.length) + these.HoldYouHand(); + } + }, + success(res) { + let channel = res.eventChannel; + let f = these.getDevice(); + channel.emit("deviceData", { + ble: f, + device: these.device + }); + } + }); + }, + playVolume() { + + + let f = this.getDevice(); + + // #ifdef APP-PLUS + if (!f) { + this.showBleUnConnect(); + return; + } + // #endif + // #ifdef H5 + f = { + deviceId: '12345' + } + // #endif + + let msg = ""; + let buttonText = ""; + if (!this.formData.isPlay) { + msg = "确定播放设备语音内容?"; + + } + + let exec = (item) => { + + this.formData.isPlay = !this.formData.isPlay; + + this.closePop(item); + } + if (msg) { + this.showPop({ + key: Common.guid(), + message: msg, + iconUrl: "/static/images/common/playingActive.png", + borderColor: "#BBE6004d", + buttonBgColor: "#BBE600", + okCallback: exec, + buttonText: '确定', + buttonCancelText: '取消', + showCancel: true + }); + } else { + exec(); + } + }, + highSpeedSetting(item, index, flag) { //工作光、强光切换 + if (this.formData.sta_LedType !== item.key) { + // this.formData.sta_highSpeed=true; + this.LighSetting(item, index); + return; + } + let f = this.getDevice(); + + // #ifdef APP-PLUS + if (!f) { + this.showBleUnConnect(); + return; + } + // #endif + // #ifdef H5 + f = { + deviceId: '12345' + } + // #endif + this.formData.sta_highSpeed = flag; + }, + LighSetting(item, index) { //灯光模式切换 + let val = item.key; if (item.key === this.formData.sta_LedType) { val = 'led_off'; @@ -450,31 +600,23 @@ deviceId: '12345' } // #endif - + this.formData.sta_LedType = val; let json = { ins_LedType: val } json = JSON.stringify(json); ble.sendString(f.deviceId, json, f.writeServiceId, f.wirteCharactId, 30).then(res => { - this.formData.sta_LedType = val; + these.setBleFormData(); }).catch(ex => { this.showMsg(ex.msg); - }); }, - sosSetting(item, isOk) { + sosSetting() { - if (item.key == 'led_alarm' && this.formData.sta_LedType == 'led_alarm') { - return; - } - - if (item.key == 'led_off' && this.formData.sta_LedType !== 'led_alarm') { - return; - } let f = this.getDevice(); @@ -490,66 +632,44 @@ deviceId: '12345' } // #endif - debugger; - let task = (val) => { - let promise = new Promise((resolve, reject) => { - let json = { - ins_LedType: val - } - json = JSON.stringify(json); - ble.sendString(f.deviceId, json, f.writeServiceId, f.wirteCharactId, 30).then(res => { - this.formData.sta_LedType = val; - these.setBleFormData(); - resolve(); - }).catch(ex => { - this.showMsg(ex.msg); - reject(ex); - }); - }); - return promise; - } - if (item.key == 'led_alarm') { - this.showPop({ - message: '确定开启声光报警?', - iconUrl: "/static/images/6155/DeviceDetail/uploadErr.png", - borderColor: "#e034344d", - buttonBgColor: "#E03434", - okCallback: () => { - task("led_alarm"); - }, - buttonText: "开启", - showCancel: true, - buttonCancelText: '取消' - }); + + + + + let val = !this.formData.SOS; + let msg = ""; + let buttonText = ""; + if (val) { + msg = "确定开启声光报警模式?"; + } else { - if (this.formData.sta_LedType == 'led_alarm') { - this.showPop({ - message: '确定解除声光报警模式?', - iconUrl: "/static/images/6155/DeviceDetail/uploadErr.png", - borderColor: "#e034344d", - buttonBgColor: "#E03434", - okCallback: () => { - task(item.key).then(r => { - - - }).catch(ex => { - - }); - }, - buttonText: "解除", - showCancel: true, - buttonCancelText: '取消' - - }); - } else { - task(item.key); - } + msg = "确定关闭声光报警模式?"; } + let key = Common.guid(); + let sosToggle = (item) => { + //蓝牙/4g发送的指令 + this.formData.SOS = val; + this.closePop(item); + // setTimeout(()=>{ + // this.showMsg("操作成功",'succ'); + // },500) + } + this.showPop({ + key: key, + message: msg, + iconUrl: "/static/images/6155/DeviceDetail/uploadErr.png", + borderColor: "#e034344d", + buttonBgColor: "#E03434", + okCallback: sosToggle, + buttonText: '确定', + buttonCancelText: '取消', + showCancel: true + }); }, deviceRecovry(res) { @@ -711,6 +831,7 @@ showBleUnConnect() { this.showPop({ + key: Common.guid(), message: "蓝牙未连接过该设备,请使用蓝牙重新添加该设备", iconUrl: "/static/images/6155/DeviceDetail/uploadErr.png", borderColor: "#e034344d", @@ -768,28 +889,31 @@ }, + //关闭某个弹窗,并执行关闭的回调函数 + closePop: function(item) { - closePop: function() { - this.Status.Pop.showPop = false; + if (item) { + this.Msgboxs.find((v, i) => { + if (item.key === v.key) { + this.Msgboxs.splice(i, 1); + } + }); + + if (item.cancelCallback) { + item.cancelCallback(); + } + } else { + if (this.Msgboxs.length > 0) { + this.Msgboxs.splice(this.Msgboxs.length - 1, 1); + } - if (this.Status.Pop.cancelCallback) { - this.Status.Pop.cancelCallback(); - } - }, - HidePop: function() { - if (this.Status.Pop.clickEvt == 'SendUsr') { - - } - - - this.Status.Pop.showPop = false; - if (this.Status.Pop.okCallback) { - this.Status.Pop.okCallback(); } + }, + //根据传入的配置,自定义一个弹窗 showPop: function(option) { - // hideLoading(this); let def = { + key: '', showPop: true, //是否显示弹窗 popType: 'custom', bgColor: '#383934bd', @@ -809,49 +933,74 @@ showSlot: false, buttonCancelText: '', showCancel: false, + cancelCallback: null } - + let json = {}; let keys = Object.keys(def); for (let i = 0; i < keys.length; i++) { let key = keys[i]; - if (key in option) { - continue; - } - this.Status.Pop[key] = def[key]; + + json[key] = def[key]; } if (option) { keys = Object.keys(option); for (let i = 0; i < keys.length; i++) { let key = keys[i]; - this.Status.Pop[key] = option[key]; + json[key] = option[key]; } } - if (!option.borderColor) { - option.borderColor = '#BBE600'; - option.buttonBgColor = '#BBE600'; + if (!json.borderColor) { + json.borderColor = '#BBE600'; + json.buttonBgColor = '#BBE600'; } - these.Status.Pop.showPop = true; + json.showPop = true; + if (!('key' in json)) { + json.key = Common.guid(); + } + this.Msgboxs.push(json); }, - showMsg(msg, isSucc) { - let icoUrl = '/static/images/6155/DeviceDetail/uploadErr.png'; - let borderColor = "#e034344d"; - let buttonBgColor = "#E03434"; - if (isSucc) { - icoUrl = '/static/images/common/success.png'; - borderColor = "#BBE600"; - buttonBgColor = "#BBE600"; + showMsg(msg, type) { + + let cfg = { + error: { + icoUrl: '/static/images/6155/DeviceDetail/uploadErr.png', + borderColor: "#e034344d", + buttonBgColor: "#E03434" + }, + succ: { + icoUrl: '/static/images/common/success.png', + borderColor: "#BBE600", + buttonBgColor: "#BBE600" + }, + warn: { + icoUrl: '/static/images/6170/svg.png', + borderColor: "#FFC84E", + buttonBgColor: "#FFC84E", + } } - this.showPop({ + + if (!type) { + type = 'error'; + } + if (!cfg[type]) { + type = 'error'; + } + + + let guid = Common.guid(); + let options = { + key: guid, message: msg, - iconUrl: icoUrl, - borderColor: borderColor, - buttonBgColor: buttonBgColor, + iconUrl: cfg[type].icoUrl, + borderColor: cfg[type].borderColor, + buttonBgColor: cfg[type].buttonBgColor, buttonText: '确定', - okCallback: null - }); + okCallback: this.closePop + }; + this.showPop(options); } } } @@ -1039,25 +1188,41 @@ } - .lampMode .mode { + .lampMode .mode, + .lampMode .lightMode { width: calc(calc(100% - 34rpx) / 2); + height: 160rpx; border-radius: 8px; margin-top: 20rpx; background: rgba(26, 26, 26, 1); display: flex; - flex-direction: row; - flex-wrap: nowrap; - align-content: center; - align-items: center; - justify-content: flex-start; - padding: 30rpx; + padding: 20rpx; box-sizing: border-box; border-width: 1px; border-style: solid; border-color: #00000000; } - .lampMode .mode.active { + .lampMode .mode { + + flex-direction: row; + flex-wrap: nowrap; + align-content: center; + align-items: center; + justify-content: flex-start; + + } + + .lampMode .lightMode { + flex-direction: column; + flex-wrap: nowrap; + align-content: center; + align-items: center; + justify-content: flex-start; + } + + .lampMode .mode.active, + .lampMode .lightMode.active { border-color: #aed600 !important; } @@ -1067,10 +1232,106 @@ color: #aed600 !important; } - .mode.marginLeft { + + .lampMode .mode.rbActive { + + border-color: #E03434 !important; + } + + .lampMode .mode.rbActive .bigTxt { + + color: #E03434 !important; + } + + + .lampMode .lightMode .h50 { + height: 50%; + width: 100%; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-content: center; + align-items: center; + justify-content: flex-start; + } + + .lampMode .lightMode .lightType { + + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-content: center; + align-items: center; + justify-content: flex-start; + } + + .lampMode .lightMode .lightType .imgContent { + width: 24rpx; + height: 28rpx; + margin-right: 10rpx; + } + + .lampMode .lightMode .lightType .imgContent .img { + width: 100%; + height: 100%; + + } + + .lampMode .lightMode .workMode { + width: 100%; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-content: center; + align-items: center; + justify-content: space-around; + } + + .lampMode .lightMode .workMode .item .checkbox { + width: 24rpx; + height: 24rpx; + box-sizing: border-box; + border: 1rpx solid #FFFFFF; + border-radius: 50%; + margin-right: 10rpx; + } + + + .mode.marginLeft, + .lightMode.marginLeft { margin-left: 34rpx !important; } + .lampMode .lightMode .workMode .item { + width: 50%; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-content: center; + justify-content: flex-start; + align-items: center; + + + height: 100%; + font-family: 'PingFang SC'; + + font-size: 26rpx; + font-weight: 400; + + letter-spacing: 0.14rpx; + + } + + .lampMode .lightMode .workMode .item.active { + color: #aed600; + font-size: 26rpx; + } + + .lampMode .lightMode .workMode .item.active .checkbox { + background-color: #aed600; + border-color: #aed600; + } + .mode .leftImg { width: 70rpx; height: 70rpx; @@ -1103,7 +1364,8 @@ padding-left: 20rpx; } - .mode .bigTxt { + .mode .bigTxt, + .lightMode { color: rgba(255, 255, 255, 0.87); font-family: PingFang SC; font-size: 28rpx; @@ -1610,7 +1872,7 @@ } .sliderVal { - color: rgba(174, 214, 0, 1); + color: #aed600; font-family: PingFang SC; font-size: 24rpx; @@ -1619,4 +1881,88 @@ letter-spacing: 0.07px; } + + + .mask { + position: fixed; + z-index: 9997; + width: 100%; + height: 100%; + top: 0rpx; + left: 0rpx; + background-color: #00000000; + } + + .volPop { + position: fixed; + z-index: 9998; + display: flex; + justify-content: center; + align-items: center; + top: 0rpx; + left: 0rpx; + + width: 100%; + height: 100%; + } + + .volPop .volContent { + position: relative; + width: 70%; + /* min-height: 300rpx; */ + height: auto; + border-radius: 24rpx; + padding: 20rpx; + box-shadow: 0 4px 32rpx rgba(0, 0, 0, 0.1); + box-sizing: border-box; + z-index: 10; + margin-top: -100rpx; + backdrop-filter: blur(28rpx); + background: #38393466; + } + + .volPop .header { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-content: center; + align-items: center; + justify-content: flex-end; + + } + + .volPop .txtContent { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-content: center; + align-items: center; + justify-content: space-between; + } + + .volTxt, + .volMath { + font-family: 'PingFang SC'; + font-style: Regular; + font-size: 26rpx; + font-weight: 400; + + letter-spacing: 0.14px; + } + + .txtContent { + width: 100%; + padding: 20rpx 20rpx 0rpx 20rpx; + margin-bottom: 15rpx; + } + + .volTxt { + color: rgba(255, 255, 255, 0.87); + } + + .volMath { + color: rgba(174, 214, 0, 1); + } + + \ No newline at end of file diff --git a/pages/6155/BJQ6155.vue b/pages/6155/BJQ6155.vue new file mode 100644 index 0000000..235d947 --- /dev/null +++ b/pages/6155/BJQ6155.vue @@ -0,0 +1,2181 @@ + + + + + \ No newline at end of file diff --git a/pages/6155/ImgCrop.vue b/pages/6155/ImgCrop.vue index 048727f..c6209ea 100644 --- a/pages/6155/ImgCrop.vue +++ b/pages/6155/ImgCrop.vue @@ -4,7 +4,7 @@ + @crop="handleCrop" :areaScale="0.1" :minScale="0.1" :gpu="true"> diff --git a/static/images/6107/fan.png b/static/images/6107/fan.png new file mode 100644 index 0000000000000000000000000000000000000000..d345e9d72390af5c8435941d95dc74b08f22cfdf GIT binary patch literal 1208 zcmeAS@N?(olHy`uVBq!ia0vp^8bEBo!3HFgt1V_TFtF5nx;TbZFur}jI6=j8l8UEL z_o|t@-CbPL($d00fuI}&zMr85C;=HA9uBf4EzQl%rDgZ*nOx_6(!$G2%gg=GgRJyf z^h5kco$3SL#@P+hjj|8a9`FI7--F|-e>wm2ZIfrNVf%3Ez~hGZlfDQ)`nh2*^B(>W zWe0rsWV~b8=XS~e!}^rph6nf=t!J%S+npo(&&o5;*LcYn#{x9qkHCh* zpLaRiG`#I+vg@kfZ{1KnwS-;2sqeK0 zg?Frt`jO&|f9(#Wf4KiRTcwuwd|QRyw*OK$9_~LbJ1K5*y0eY=ZU4vnCoXCK1k|1M zJM)kEq%Q&Uct6JE*!TW-nl?K?L`N!&&J^7#B z6aYrsuq%BJm^1f3-G5B> zz;3Ty&CgpZ7<1k;%;(!<`+sMh=nogqY8(9{`wx6`XOur$-?x6^7t=in9pa5|w=>%@ z-+0)1`*D}-zf@qz?5=nyps#e>oY9`+&XLdGk59UH^&8)Z<^#!<|K2g!d0cw@bGqU` zQBb_4+SCIhF`FT$UgSd{gk5n_VZh|d8Qz}~z0YGa?fH99wCGD6+1~{8-M*gs`C#8> z2>j>TcAxKu(Z5elj8+FzXPXGA+Q_3^`a5vk>^`JDO|M>oMVU@ou$OiaN z_#(Uq$pAY?U?zhY!2BQ@XaI|+{XvicDZk4bXaCr~lewbUvl^tsYg;~(9ajZ&Lc91` lxewU~u6yii7MK0c;kVfH^l{r)_kbl5gQu&X%Q~loCIHY-YtsM# literal 0 HcmV?d00001 diff --git a/static/images/6107/fanJu.png b/static/images/6107/fanJu.png new file mode 100644 index 0000000000000000000000000000000000000000..d897371c07d3a29573f87797a3e9da842c457194 GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^8bGYT!3HD~)>;8c=1rb1jv*C{ZyzvDQ1P6k;wjX< zYUXZt7niiOw6IVhCXJ`RRKt_j$gKSAlb8~ZP**$wE*Lk0`@bc2~a{u!nD}5II z5Wi8U`hd4_c7t@I>;tt2d_d^;;JE5v&i{Pd7U01fyfu;K9M zUCuTQZ~K|-y6X2^HN zJgBXBSm(sBEuQm-;=kfQh9A@q$R6PP5b=PwK{jp&$dI?Q8{}E?9<}~Xe((_}Cs!c+ z!RvtbXZiPh4`NmCD&CG~+as%gL!LQa`K5n_UCw^l50VG?{u{nyxEFd!mSNLhlei7? z)4z27;m*0w@<*XS_`h8}PtBqw);pMP{)>H}Ht)LZf!W@-9=j&|R(s&x82;@3v)wAS za_2d3*2zCGuJEe{%I<2eSG}FjUL#TG*$B;QwaDf9cMD&bN(5 f%78`6F?%LCOMbTrb&HP!voC|EtDnm{r-UW|Mql_< literal 0 HcmV?d00001 diff --git a/static/images/6107/ju.png b/static/images/6107/ju.png new file mode 100644 index 0000000000000000000000000000000000000000..efa956779432c6a97fc4d0f32cf5379e51076c21 GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^3P5ba!3HE>+gepJFfecOba4!+V0`<4ae|8HBo$Ag z?o~5)ySuogrKN?10zo+ld_O}APy#YKJRD?8TAG`iOUv%rGr7+Dq=lE4mY4gV2U+Q} z=tuabzkvtbKmMuhU9$e6Yx|Gz4Yk4_cJC=zulbTM&ZMKB^>#el9$Ec6^4?Y9K)(3I zx5t_6&v!qIRr$;L-{?s9iErnb`=7dgK0fK*)OyKBt_i>2Ht0W&e-4t@mjUt18)yHx zzSH?q_NPON|5&%(=lfywFW1ihQu)Uw5Wil0M`!(P+XtqqZ$JJ~jN`a1&srn$-!5MH zWp>3s0sV%zvm4}D@*dq!=dbYfthUiV!kzH@bi?+?_Q$S!{F0g{{^%#z#ea_9WWE=3 zN!CXF$mc|ef@}UBzgXr8KiYX?ALozQf5m&cm)JkNDRBPiH))3ZhwA(MCwvjMk$$va z9FCYa{4G1+&S?HI{xRQ!-72-ybN2Ipko@!ght$n~*$M6c<;qWdyZqyQbB=xQe>=R) z|9S<&|82je{5CwWodIaxYrY4~ED68W9?Wh${t0Aytm<9Gc_+W|eRz4`_UHMp!yEml zY++ZJ*ZsDi$*$|a4A}c-Ag{b_IL}a4@$lP@r1tuo&pm(X0e!>@@^bS5Uz_@RotLq> z?-}elY^FVb541zYcHZ;W3dNlLvL8}y>OrP3N~^_eY?#Vf9&&j z(@Fc-4t#TGls^h)w>{_o=yapb`oZanfA1LXP1W8fS)p_OJ~-O!k8p#$rvLcI7p7Do2w?qB(=XXuhlKBtd4*FMX=XlBg132O2v)4%ex0|o;u<5b~TIl)UzbK X5sE)^VDV~TCT8$-^>bP0l+XkKVV@rO literal 0 HcmV?d00001 diff --git a/static/images/6155/DeviceDetail/Hby650.png b/static/images/6155/DeviceDetail/Hby650.png deleted file mode 100644 index 098221ce7d6dc7bac203822192ecb78e7b42c80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12194 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 bHn-_$%PqtFv5nx*3$OI;)v|AkH`M$E58;Sg literal 0 HcmV?d00001