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 0000000..d345e9d Binary files /dev/null and b/static/images/6107/fan.png differ diff --git a/static/images/6107/fanJu.png b/static/images/6107/fanJu.png new file mode 100644 index 0000000..d897371 Binary files /dev/null and b/static/images/6107/fanJu.png differ diff --git a/static/images/6107/ju.png b/static/images/6107/ju.png new file mode 100644 index 0000000..efa9567 Binary files /dev/null and b/static/images/6107/ju.png differ diff --git a/static/images/6155/DeviceDetail/Hby650.png b/static/images/6155/DeviceDetail/Hby650.png deleted file mode 100644 index 098221c..0000000 Binary files a/static/images/6155/DeviceDetail/Hby650.png and /dev/null differ diff --git a/static/images/common/playingActive.png b/static/images/common/playingActive.png new file mode 100644 index 0000000..8ce83db Binary files /dev/null and b/static/images/common/playingActive.png differ