diff --git a/components/MsgBox/MsgBox.vue b/components/MsgBox/MsgBox.vue index 41f8d0c..3c4bea3 100644 --- a/components/MsgBox/MsgBox.vue +++ b/components/MsgBox/MsgBox.vue @@ -6,10 +6,12 @@ :buttonTextColor="item.buttonTextColor" :iconUrl="item.iconUrl" :message="item.message" :buttonText="item.buttonText" @buttonClick="okCallback(item,index)" :visiblePrompt="item.visiblePrompt" :promptTitle="item.promptTitle" v-model="item.modelValue" @closePop="closePop(item)" - :buttonCancelText="item.buttonCancelText" :showCancel="item.showCancel" + :buttonCancelText="item.buttonCancelText" :showCancel="item.showCancel" :showSlot="item.showSlot" :showHeader="item.showHeader" :headerTxt="item.headerTxt" - @cancelPop="cancelClick(item,index)" /> + @cancelPop="cancelClick(item,index)" > + + @@ -48,10 +50,10 @@ this.closePop(item); }, closePop: function(item) { - debugger; + if (item) { this.Msgboxs.find((v, i) => { - debugger; + if (item.key && v.key) { if (item.key === v.key) { this.Msgboxs.splice(i, 1); @@ -79,7 +81,7 @@ showPop: true, //是否显示弹窗 popType: 'custom', bgColor: '#383934bd', - borderColor: '#BBE600', + borderColor: '#BBE6004d', textColor: '#ffffffde', buttonBgColor: '#BBE600', buttonTextColor: '#232323DE', @@ -116,7 +118,7 @@ } if (!json.borderColor) { - json.borderColor = '#BBE600'; + json.borderColor = '#BBE6004d'; json.buttonBgColor = '#BBE600'; } json.showPop = true; @@ -137,21 +139,37 @@ error: { icoUrl: '/static/images/common/uploadErr.png', borderColor: "#e034344d", - buttonBgColor: "#E03434" + buttonBgColor: "#E03434", + bgColor:'#38393466', + buttonTextColor:'#FFFFFFde' }, succ: { icoUrl: '/static/images/common/success.png', - borderColor: "#BBE600", - buttonBgColor: "#BBE600" + borderColor: "#BBE6004d", + buttonBgColor: "#BBE600", + bgColor:'#38393466' }, warn: { icoUrl: '/static/images/common/warning.png', - borderColor: "#FFC84E", + borderColor: "#FFC84E4d", buttonBgColor: "#FFC84E", + bgColor:'#38393466' }, info:{ - borderColor: "#BBE600", - buttonBgColor: "#BBE600" + borderColor: "#BBE6004d", + buttonBgColor: "#BBE600", + bgColor:'#38393466' + }, + prompt:{ + + + borderColor: "#aed6004d", + buttonBgColor: "#aed600", + bgColor:'#38393466', + buttonTextColor:'#232323de', + showSlot:true, + showCancel:true, + buttonCancelText:'取消' } } @@ -171,7 +189,13 @@ borderColor: cfg[type].borderColor, buttonBgColor: cfg[type].buttonBgColor, buttonText: btnTxt ? btnTxt : '确定', - okCallback: okCallback ? okCallback : this.closePop + okCallback: okCallback ? okCallback : this.closePop, + buttonTextColor:cfg[type].buttonTextColor, + bgColor:cfg[type].bgColor, + showSlot:cfg[type].showSlot, + showCancel:cfg[type].showCancel, + buttonCancelText:cfg[type].buttonCancelText + }; return this.showPop(options); diff --git a/components/ProParams/ProParams.vue b/components/ProParams/ProParams.vue index 11742ea..28a41b6 100644 --- a/components/ProParams/ProParams.vue +++ b/components/ProParams/ProParams.vue @@ -107,6 +107,6 @@ justify-content: space-between; align-items: center; font-size: 28rpx; - color: #FFFFFF; + color: #FFFFFFde; } \ No newline at end of file diff --git a/components/TextToHex/TextToHex.vue b/components/TextToHex/TextToHex.vue index ea33b5e..fe8cfee 100644 --- a/components/TextToHex/TextToHex.vue +++ b/components/TextToHex/TextToHex.vue @@ -58,7 +58,7 @@ * 清除Canvas内容 */ clearCanvas() { - this.ctx.setFillStyle(this.bgColor); + this.ctx.setFillStyle('#FFFFFF');//this.bgColor this.ctx.fillRect(0, 0, this.currentCanvasWidth, this.currentCanvasHeight); }, @@ -73,31 +73,49 @@ // 逐行处理 for (let y = 0; y < 16; y++) { - let byte1 = 0, - byte2 = 0; + let byte1 = '', + byte2 = ''; // 每行16个像素,分为两个字节 for (let x = 0; x < 16; x++) { // 计算像素在imageData中的索引 (RGBA格式) let index = (y * 16 + x) * 4; - let red = imageData[index]; - - // 黑色像素(R值较低)视为1,白色视为0 - let isBlack = red < 128; - - if (x < 8) { - // 第一个字节(左8位) - if (isBlack) { - byte1 |= 0x80 >> x; // 从左到右设置位 - } - } else { - // 第二个字节(右8位) - if (isBlack) { - byte2 |= 0x80 >> (x - 8); - } + let index = (y * 16 + x) * 4; + let r = imageData[index]; + let g = imageData[index+1]; + let b = imageData[index+2]; + + + let gray = (r + g + b) / 3; + let bit = gray < 255 ? '1' : '0'; + + + + if (x < 8) { + byte1+=bit; + } else { + byte2+=bit; } - } + // let red = imageData[index]; + // // 黑色像素(R值较低)视为1,白色视为0 + // let isBlack = red < 128; + + // if (x < 8) { + // // 第一个字节(左8位) + // if (isBlack) { + // byte1 |= 0x80 >> x; // 从左到右设置位 + // } + // } else { + // // 第二个字节(右8位) + // if (isBlack) { + // byte2 |= 0x80 >> (x - 8); + // } + // } + } + + byte1=parseInt(byte1,2); + byte2=parseInt(byte2,2); // 将字节转换为两位十六进制字符串 matrix.push('0x' + byte1.toString(16).padStart(2, '0').toUpperCase()); matrix.push('0x' + byte2.toString(16).padStart(2, '0').toUpperCase()); @@ -118,7 +136,7 @@ this.clearCanvas(); // 3. 设置文字样式 - ctx.setFillStyle(this.color); + ctx.setFillStyle('#000000');//this.color ctx.setTextBaseline('middle'); ctx.setFontSize(this.fontSize); ctx.font = `${this.fontSize}px "PingFang SC", PingFang SC, Arial, sans-serif`; diff --git a/components/TextToHex/TextToHexV1.vue b/components/TextToHex/TextToHexV1.vue index 36612d1..a54a9ed 100644 --- a/components/TextToHex/TextToHexV1.vue +++ b/components/TextToHex/TextToHexV1.vue @@ -60,7 +60,7 @@ * 清除Canvas内容 */ clearCanvas() { - this.ctx.setFillStyle(this.bgColor); + this.ctx.setFillStyle('#FFFFFF'); //this.bgColor this.ctx.fillRect(0, 0, this.currentCanvasWidth, this.currentCanvasHeight); }, @@ -71,22 +71,22 @@ if (this.canvasWarmed) { return; } - + try { // 设置画布尺寸 this.currentCanvasWidth = 16; this.currentCanvasHeight = 16; - + // 清空画布 this.clearCanvas(); - + // 绘制一个测试字符来预热字体和画布 - this.ctx.setFillStyle(this.color); + this.ctx.setFillStyle('#000000'); //this.color this.ctx.setFontSize(this.fontSize); this.ctx.font = `${this.fontSize}px "PingFangBold", "PingFang SC", Arial, sans-serif`; this.ctx.setTextBaseline('middle'); this.ctx.fillText('测', 0, 8); - + // 等待画布绘制完成 await new Promise((resolve) => { this.ctx.draw(false, () => { @@ -110,7 +110,7 @@ }, 100); }); }); - + // 额外等待确保字体完全加载 await new Promise(resolve => setTimeout(resolve, 200)); } catch (ex) { @@ -118,55 +118,55 @@ this.canvasWarmed = true; // 即使失败也标记为已预热,避免重复尝试 } }, - + /** * 复用单个Canvas处理所有文本行 */ async drawAndGetPixels() { // 第一次调用时先预热画布(解决APP重新打开后第一次获取数据不完整的问题) // await this.warmupCanvas(); - - let convertCharToMatrix=function(imageData) { - debugger; + let convertCharToMatrix = function(imageData) { + // console.log("imgData=",imageData) let matrix = []; - + // 逐行处理 for (let y = 0; y < 16; y++) { - let byte1 = 0, - byte2 = 0; - - // 每行16个像素,分为两个字节 + let byte1 = '', + byte2 = ''; + + for (let x = 0; x < 16; x++) { - // 计算像素在imageData中的索引 (RGBA格式) + let index = (y * 16 + x) * 4; - let red = imageData[index]; - - // 黑色像素(R值较低)视为1,白色视为0 - let isBlack = red < 128; - - if (x < 8) { - // 第一个字节(左8位) - if (isBlack) { - byte1 |= 0x80 >> x; // 从左到右设置位 - } - } else { - // 第二个字节(右8位) - if (isBlack) { - byte2 |= 0x80 >> (x - 8); - } + let r = imageData[index]; + let g = imageData[index+1]; + let b = imageData[index+2]; + + + let gray = (r + g + b) / 3; + let bit = gray < 255 ? '1' : '0'; + + + + if (x < 8) { + byte1+=bit; + } else { + byte2+=bit; } } - + byte1=parseInt(byte1,2); + byte2=parseInt(byte2,2); // 将字节转换为两位十六进制字符串 matrix.push('0x' + byte1.toString(16).padStart(2, '0').toUpperCase()); matrix.push('0x' + byte2.toString(16).padStart(2, '0').toUpperCase()); } - + return matrix; } + - let drawTxt=async (textLine)=> { + let drawTxt = async (textLine) => { debugger; let result = {}; let ctx = this.ctx; @@ -179,12 +179,12 @@ this.clearCanvas(); // 3. 设置文字样式 - ctx.setFillStyle(this.color); + ctx.setFillStyle('#000000'); //this.color ctx.setTextBaseline('middle'); // ctx.setTextAlign('center') ctx.setFontSize(this.fontSize); - ctx.font = `${this.fontSize}px "PingFangBold", "PingFang SC", Arial, sans-serif`; - + ctx.font = `${this.fontSize}px "PingFang SC","PingFangBold", Arial, sans-serif`; + // 4. 绘制当前行文本 let currentX = 0; let currentY = this.fontSize / 2; @@ -206,8 +206,8 @@ width: this.currentCanvasWidth, height: this.currentCanvasHeight, success: res => { - - result={ + + result = { line: textLine, pixelData: res.data, width: this.currentCanvasWidth, @@ -228,10 +228,10 @@ let arr = []; // 循环处理每行文本 for (let i = 0; i < this.validTxts.length; i++) { -debugger; + debugger; let linePixls = []; let item = this.validTxts[i]; - + for (var j = 0; j < item.length; j++) { let result = await drawTxt(item[j]); linePixls.push(convertCharToMatrix(result.pixelData)); @@ -239,7 +239,7 @@ debugger; // console.log("hexs=",linePixls.join(",")); arr.push(linePixls); } - + return arr; } } diff --git a/components/TextToHex/TextToHexV2.vue b/components/TextToHex/TextToHexV2.vue index ffd27b4..d49c4ed 100644 --- a/components/TextToHex/TextToHexV2.vue +++ b/components/TextToHex/TextToHexV2.vue @@ -70,7 +70,7 @@ * 清除Canvas内容 */ clearCanvas() { - this.ctx.setFillStyle(this.bgColor); + this.ctx.setFillStyle('#FFFFFF');//this.bgColor this.ctx.fillRect(0, 0, this.currentCanvasWidth, this.currentCanvasHeight); }, @@ -87,7 +87,7 @@ this.clearCanvas(); // 绘制一个测试字符来预热字体和画布 - this.ctx.setFillStyle(this.color); + this.ctx.setFillStyle('#000000');//this.color this.ctx.setFontSize(this.fontSize); this.ctx.font = `${this.fontSize}px "PingFangBold","PingFang SC", Arial, sans-serif`; this.ctx.setTextBaseline('middle'); @@ -212,7 +212,7 @@ this.clearCanvas(); // 3. 设置文字样式 - ctx.setFillStyle(this.color); + ctx.setFillStyle('#000000');//this.color ctx.setTextBaseline('middle'); // ctx.setTextAlign('center') ctx.setFontSize(this.fontSize); diff --git a/components/TextToHex/textToDotMatrix.vue b/components/TextToHex/textToDotMatrix.vue index 2dc904d..1ac8e4b 100644 --- a/components/TextToHex/textToDotMatrix.vue +++ b/components/TextToHex/textToDotMatrix.vue @@ -58,7 +58,7 @@ * 清除Canvas内容 */ clearCanvas() { - this.ctx.setFillStyle(this.bgColor); + this.ctx.setFillStyle('#FFFFFF');//this.bgColor this.ctx.fillRect(0, 0, this.currentCanvasWidth, this.currentCanvasHeight); }, @@ -100,10 +100,19 @@ for (let x = 0; x < 16; x++) { // 计算像素在imageData中的索引 (RGBA格式) let index = (y * 16 + x) * 4; - let red = imageData[index]; + // let red = imageData[index]; + + let r = imageData[index]; + let g = imageData[index+1]; + let b = imageData[index+2]; + + + let gray = (r + g + b) / 3; + let bit = gray < 255 ? '1' : '0'; + // 黑色像素(R值较低)视为1,白色视为0 - let isBlack = red < 128 ? 1 : 0; + let isBlack =gray < 255 ? 1 : 0;// red < 128 ? 1 : 0; arr.push(isBlack); } @@ -154,7 +163,7 @@ this.clearCanvas(); // 3. 设置文字样式 - ctx.setFillStyle(this.color); + ctx.setFillStyle('#000000');//this.color ctx.setTextBaseline('middle'); // ctx.setTextAlign('center') ctx.setFontSize(this.fontSize); diff --git a/components/TextToHex/textToDotMatrixFor7305.vue b/components/TextToHex/textToDotMatrixFor7305.vue index ddf0847..082a62e 100644 --- a/components/TextToHex/textToDotMatrixFor7305.vue +++ b/components/TextToHex/textToDotMatrixFor7305.vue @@ -65,7 +65,7 @@ * 清除Canvas内容 */ clearCanvas() { - this.ctx.setFillStyle(this.bgColor); + this.ctx.setFillStyle('#FFFFFF');//this.bgColor this.ctx.fillRect(0, 0, this.currentCanvasWidth, this.currentCanvasHeight); }, @@ -82,9 +82,9 @@ this.currentCanvasWidth = 16; this.currentCanvasHeight = 16; this.clearCanvas(); - this.ctx.setFillStyle(this.color); + this.ctx.setFillStyle('#000000');//this.color this.ctx.setFontSize(this.fontSize); - this.ctx.font = `${this.fontSize}px "PingFangBold", "PingFang SC", Arial, sans-serif`; + this.ctx.font = `${this.fontSize}px "PingFang SC","PingFangBold", Arial, sans-serif`; this.ctx.setTextBaseline('middle'); this.ctx.fillText('测', 0, 8); @@ -158,12 +158,20 @@ // pixels.push(R < 128 ? 1 : 0); - const R = imageData[i]; - const G = imageData[i + 1]; - const B = imageData[i + 2]; - const gray = 0.299 * R + 0.587 * G + 0.114 * B; // 灰度转换 - pixels.push(gray < 128 ? 1 : 0); + // const R = imageData[i]; + // const G = imageData[i + 1]; + // const B = imageData[i + 2]; + // const gray = 0.299 * R + 0.587 * G + 0.114 * B; // 灰度转换 + // pixels.push(gray < 128 ? 1 : 0); + let r = imageData[i]; + let g = imageData[i+1]; + let b = imageData[i+2]; + + + let gray = (r + g + b) / 3; + let bit = gray < 255 ? 1 : 0; + pixels.push(bit); } const lowBytes = new Array(charWidth).fill(0); @@ -197,11 +205,11 @@ this.clearCanvas(); // 3. 设置文字样式 - ctx.setFillStyle(this.color); + ctx.setFillStyle('#000000');//this.color ctx.setTextBaseline('middle'); // ctx.setTextAlign('center') ctx.setFontSize(this.fontSize); - ctx.font = `${this.fontSize}px "PingFangBold", "PingFang SC", Arial, sans-serif`; + ctx.font = `${this.fontSize}px "PingFang SC","PingFangBold", Arial, sans-serif`; // 4. 绘制当前行文本 debugger; diff --git a/components/TextToHex/textToDotMatrixV1.vue b/components/TextToHex/textToDotMatrixV1.vue index 5191740..04f2cb0 100644 --- a/components/TextToHex/textToDotMatrixV1.vue +++ b/components/TextToHex/textToDotMatrixV1.vue @@ -59,7 +59,7 @@ * 清除Canvas内容 */ clearCanvas() { - this.ctx.setFillStyle(this.bgColor); + this.ctx.setFillStyle('#FFFFFF');//this.bgColor this.ctx.fillRect(0, 0, this.currentCanvasWidth, this.currentCanvasHeight); }, @@ -105,10 +105,18 @@ let G = imageData[index+1]; let B = imageData[index]+2; + // let r = imageData[i]; + // let g = imageData[i+1]; + // let b = imageData[i+2]; + + + let gray = (R + G + B) / 3; + let bit = gray < 255 ? 1 : 0; + // 黑色像素(R值较低)视为1,白色视为0 - let isBlack = R < 128 ? 1 : 0; - arr.push(isBlack); + // let isBlack = R < 128 ? 1 : 0; + arr.push(bit); } } @@ -159,11 +167,11 @@ this.clearCanvas(); // 3. 设置文字样式 - ctx.setFillStyle(this.color); + ctx.setFillStyle('#000000');//this.color ctx.setTextBaseline('middle'); // ctx.setTextAlign('center') ctx.setFontSize(this.fontSize); - ctx.font = `${this.fontSize}px "PingFangBold", "PingFang SC", Arial, sans-serif`; + ctx.font = `${this.fontSize}px PingFangBold", "PingFang SC", Arial, sans-serif`; // 4. 绘制当前行文本 let currentX = 0; diff --git a/components/global-loading/global-loading.vue b/components/global-loading/global-loading.vue index 2a73aab..138339e 100644 --- a/components/global-loading/global-loading.vue +++ b/components/global-loading/global-loading.vue @@ -141,9 +141,8 @@ flex-direction: column; align-items: center; justify-content: center; - transform: translateZ(0); - /* 启用GPU加速 */ - margin-top: -150rpx; + transform: translateZ(0); + margin-top: 0rpx; } /* 刻度容器 */ diff --git a/pages.json b/pages.json index 9289587..886b888 100644 --- a/pages.json +++ b/pages.json @@ -459,6 +459,13 @@ "style": { "navigationBarTitleText": "" } + }, + { + "path": "pages/210/HBY210", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "HBY210" + } } ], diff --git a/pages/008A/HBY008A.vue b/pages/008A/HBY008A.vue index a6b2dd8..fabaf03 100644 --- a/pages/008A/HBY008A.vue +++ b/pages/008A/HBY008A.vue @@ -66,7 +66,9 @@ + + @@ -85,7 +87,8 @@ MsgClose, MsgWarning, showPop, - MsgInfo + MsgInfo, + MsgPrompt } from '@/utils/MsgPops.js' import Common from '@/utils/Common.js'; import BleTool from '@/utils/BleHelper.js' @@ -213,7 +216,7 @@ }, onLoad() { - + these = this; recei = BleReceive.getBleReceive(); ble = BleTool.getBleTool(); @@ -227,8 +230,8 @@ eventChannel = this.getOpenerEventChannel(); - eventChannel.on('detailData', function(data) { - + eventChannel.on('detailData', (data)=> { + console.log("收到父页面的参数:" + JSON.stringify(data)); var device = data.data; these.Status.apiType = data.apiType; @@ -1196,7 +1199,7 @@ .navbarRight .img { width: 35rpx; height: 35rpx; - margin-right: 20rpx; + margin-right: 30rpx; } .uni-navbar--fixed { diff --git a/pages/018A/HBY018A.vue b/pages/018A/HBY018A.vue index 2c38b37..2052a4e 100644 --- a/pages/018A/HBY018A.vue +++ b/pages/018A/HBY018A.vue @@ -623,7 +623,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/100/HBY100.vue b/pages/100/HBY100.vue index 2e11bab..d988b27 100644 --- a/pages/100/HBY100.vue +++ b/pages/100/HBY100.vue @@ -1360,7 +1360,7 @@ onFreqChanging(e){ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/100J/HBY100-J.vue b/pages/100J/HBY100-J.vue index 53ba724..26f63d4 100644 --- a/pages/100J/HBY100-J.vue +++ b/pages/100J/HBY100-J.vue @@ -58,6 +58,11 @@ {{ deviceInfo.onlineStatus === 0 ? '离线': '在线' }} + + 充电状态 + {{ deviceInfo.chargingStatus === 0 ? '未充电': '充电中' }} + 定位信息 @@ -192,6 +197,16 @@ + + + @@ -1514,7 +1529,7 @@ option.buttonBgColor = '#BBE600'; } these.Status.Pop.showPop = true; - showPop(option,this); + }, btnClick() { diff --git a/pages/100Y/HBY100Y.vue b/pages/100Y/HBY100Y.vue index cf619a7..4c43935 100644 --- a/pages/100Y/HBY100Y.vue +++ b/pages/100Y/HBY100Y.vue @@ -1196,7 +1196,7 @@ .navbarRight .img { width: 35rpx; height: 35rpx; - margin-right: 20rpx; + margin-right: 30rpx; } .uni-navbar--fixed { diff --git a/pages/102/HBY102.vue b/pages/102/HBY102.vue index 113d0ed..f9ab8c2 100644 --- a/pages/102/HBY102.vue +++ b/pages/102/HBY102.vue @@ -1365,7 +1365,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/210/HBY210.vue b/pages/210/HBY210.vue index 9b725c6..edd15d3 100644 --- a/pages/210/HBY210.vue +++ b/pages/210/HBY210.vue @@ -1,750 +1,671 @@ - \ No newline at end of file diff --git a/pages/210/HBY210Old.vue b/pages/210/HBY210Old.vue new file mode 100644 index 0000000..1177a37 --- /dev/null +++ b/pages/210/HBY210Old.vue @@ -0,0 +1,1528 @@ + + + + + \ No newline at end of file diff --git a/pages/4877/BJQ4877.vue b/pages/4877/BJQ4877.vue index 71d7976..11ca4e5 100644 --- a/pages/4877/BJQ4877.vue +++ b/pages/4877/BJQ4877.vue @@ -1252,7 +1252,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/4877/BJQ4877V1.vue b/pages/4877/BJQ4877V1.vue index 894db34..cb07bc4 100644 --- a/pages/4877/BJQ4877V1.vue +++ b/pages/4877/BJQ4877V1.vue @@ -748,7 +748,7 @@ import request, { baseURL } from '@/utils/request.js'; borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/6075J/BJQ6075J.vue b/pages/6075J/BJQ6075J.vue index 23e169c..86221db 100644 --- a/pages/6075J/BJQ6075J.vue +++ b/pages/6075J/BJQ6075J.vue @@ -39,7 +39,7 @@ - + {{formData.sta_ShakeBit==3?'设备疑似受到外力碰撞':'设备声光报警中'}}! @@ -1418,7 +1418,7 @@ console.error("出现错误", ex) }); } - let msg = val == 1 ? '确定开启声光报警' : '确定关闭声光报警'; + let msg = val == 1 ? '确定开启声光报警' : '确定解除声光报警'; showPop({ message: msg, @@ -1912,7 +1912,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', showCancel: true, okCallback: function() { console.log("1111"); @@ -2858,7 +2858,7 @@ .navbarRight .img { width: 35rpx; height: 35rpx; - margin-right: 20rpx; + margin-right: 30rpx; } .uni-navbar--fixed { diff --git a/pages/6107/BJQ6107.vue b/pages/6107/BJQ6107.vue index 840d484..d56e3fa 100644 --- a/pages/6107/BJQ6107.vue +++ b/pages/6107/BJQ6107.vue @@ -840,7 +840,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/6155/BJQ6155.vue b/pages/6155/BJQ6155.vue index d0a89a1..b83802b 100644 --- a/pages/6155/BJQ6155.vue +++ b/pages/6155/BJQ6155.vue @@ -708,7 +708,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { // console.log("1111"); uni.navigateTo({ diff --git a/pages/6155/deviceDetail.vue b/pages/6155/deviceDetail.vue index 5071785..56d92a9 100644 --- a/pages/6155/deviceDetail.vue +++ b/pages/6155/deviceDetail.vue @@ -688,7 +688,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { // console.log("1111"); uni.navigateTo({ diff --git a/pages/6170/deviceControl/index.vue b/pages/6170/deviceControl/index.vue index 04b3c39..5db95c3 100644 --- a/pages/6170/deviceControl/index.vue +++ b/pages/6170/deviceControl/index.vue @@ -58,6 +58,12 @@ {{getbleStatu}} + + 充电状态 + + {{deviceInfo.chargeState != 0?'充电中':'未充电'}} + + 定位信息 @@ -73,7 +79,7 @@ - + 设备强制报警中 { + if (this.deviceInfo.batteryPercentage < 20 && + this.deviceInfo.chargeState == 0) { + this.popupType = 'bettery'; + this.popupMessage = '请及时充电'; + this.showPopupFlag = true; + } + if (this.apiType === 'listA') { + this.fetchDeviceDetail(data.data.id) + } else { + // 分享权限详情 + this.fetchSharedDeviceDetail(data.data.id) + } + }, 10000); + // 上报电量,在列表里面同步 + uni.$emit('deviceStatusUpdate', { + message: parsedMessage, + timestamp: new Date().getTime() + }); + break; + default: + console.log('未知的 deviceState 类型:', deviceState[0]); + } + }, bleStatuToggle() { let f = this.getDevice(); if (!f) { @@ -504,7 +556,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', showCancel: true, okCallback: function() { console.log("1111"); @@ -532,11 +584,9 @@ } let data = rec.ReceiveData(receive, device, pagePath, recArr); console.log("蓝牙收到消息", data) - this.receivData(data); - }, - receivData(data) { - + this.onReceive(data.state); }, + bleStateBreak() { if (this.Status.pageHide) { return; @@ -1566,6 +1616,7 @@ // this.popupConfirmText=""; }, OpenWarn(val){//开启/解除强制报警 + debugger; const topic = `B/${this.itemInfo.deviceImei}`; let message={"instruct":[7,val,0,0,0,0]}; message=JSON.stringify(message); @@ -1575,6 +1626,8 @@ }); if(flag){ this.itemInfo.alarmStatus=val; + }else{ + MsgError("操作没有成功",'确定',this); } this.showPopupFlag = false; @@ -1644,11 +1697,11 @@ // 3.解除告警状态 const registerRes = await deviceSendAlarmMessage(data); if (registerRes.code !== 200) { - uni.showToast({ - title: registerRes.msg, - icon: 'none' - }) - + // uni.showToast({ + // title: registerRes.msg, + // icon: 'none' + // }) + this.OpenWarn(0); return } this.itemInfo.alarmStatus=0; @@ -1908,53 +1961,8 @@ const deviceState = parsedMessage.state; // 直接取 state 数组 // 切换主灯光模式,亮度值设备同步 if (!deviceState) return; - // 1设备切换灯光实时返回 - switch (deviceState[0]) { - case 1: - this.currentMainMode = this.getMainLightModeLabel( - deviceState[ - 1]); - this.sliderValue = deviceState[2]; - this.deviceInfo.batteryRemainingTime = deviceState[3]; - break; - // 12为设备实时上报 - case 12: - this.currentMainMode = this.getMainLightModeLabel( - deviceState[ - 1]); - this.isLaserOn = deviceState[2] === 1; //第3位表示当时激光灯档位 - this.currentlaserMode = this.isLaserOn ? "开启" : "关闭"; - if (this.deviceInfo) { - this.deviceInfo.batteryPercentage = deviceState[ - 3]; //第4位电量百分比 - this.deviceInfo.chargeState = deviceState[ - 4]; //第5位为充电状态(0没有充电,1正在充电,2为已充满) - this.deviceInfo.batteryRemainingTime = deviceState[ - 5]; //第6位200代表电池剩余续航时间200分钟 - } - setTimeout(() => { - if (this.deviceInfo.batteryPercentage < 20 && - this.deviceInfo.chargeState == 0) { - this.popupType = 'bettery'; - this.popupMessage = '请及时充电'; - this.showPopupFlag = true; - } - if (this.apiType === 'listA') { - this.fetchDeviceDetail(data.data.id) - } else { - // 分享权限详情 - this.fetchSharedDeviceDetail(data.data.id) - } - }, 10000); - // 上报电量,在列表里面同步 - uni.$emit('deviceStatusUpdate', { - message: parsedMessage, - timestamp: new Date().getTime() - }); - break; - default: - console.log('未知的 deviceState 类型:', deviceState[0]); - } + + this.onReceive(deviceState); } catch (error) { console.log('解析MQTT消息失败:', error, '原始消息:', payload); } diff --git a/pages/6331/BJQ6331.vue b/pages/6331/BJQ6331.vue index ed179ee..e69a769 100644 --- a/pages/6331/BJQ6331.vue +++ b/pages/6331/BJQ6331.vue @@ -739,7 +739,7 @@ import request, { baseURL } from '@/utils/request.js'; borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/650/HBY650.vue b/pages/650/HBY650.vue index b39916f..e71eadd 100644 --- a/pages/650/HBY650.vue +++ b/pages/650/HBY650.vue @@ -822,7 +822,7 @@ import request, { baseURL } from '@/utils/request.js'; borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { uni.navigateTo({ diff --git a/pages/670/HBY670.vue b/pages/670/HBY670.vue index a76b342..f2fbd45 100644 --- a/pages/670/HBY670.vue +++ b/pages/670/HBY670.vue @@ -180,7 +180,7 @@ 关闭 @@ -340,7 +340,7 @@ borderColor: '#BBE600', textColor: '#ffffffde', buttonBgColor: '#BBE600', - buttonTextColor: '#232323DE', + buttonTextColor: '#FFFFFFDE', iconUrl: '', message: '您确定要这样做吗?', @@ -725,7 +725,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', showCancel: true, cancelCallback: () => { // this.closePop(); @@ -1178,6 +1178,7 @@ iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde", okCallback: null, buttonText: "确定" },these) @@ -1221,6 +1222,7 @@ iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde" },these); }).finally(() => { @@ -1285,7 +1287,8 @@ message: "通信异常,请检查手机或设备网络", iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", - buttonBgColor: "#E03434", + buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde" },these); }).finally(() => { @@ -1367,7 +1370,8 @@ message: '无操作权限', iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", - buttonBgColor: "#E03434", + buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde", okCallback: null, buttonText: "确定" },these) @@ -1439,7 +1443,8 @@ message: "通信异常,请检查手机或设备网络", iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", - buttonBgColor: "#E03434", + buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde" },these); }).finally(() => { @@ -1562,6 +1567,7 @@ iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", buttonBgColor: "#E03434", + buttonTextColor:"#FFFFFFde", okCallback: OpenSOS, buttonText: "开启" },these); @@ -1591,6 +1597,7 @@ iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde", okCallback: null, buttonText: "确定" },these) @@ -1632,7 +1639,8 @@ message: "通信异常,请检查手机或设备网络", iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", - buttonBgColor: "#E03434", + buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde" },these); }).finally(() => { @@ -2192,7 +2200,8 @@ message: '无操作权限', iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", - buttonBgColor: "#E03434", + buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde", okCallback: null, buttonText: "确定" },these) @@ -2313,7 +2322,8 @@ message: '无操作权限', iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", - buttonBgColor: "#E03434", + buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde", okCallback: null, buttonText: "确定" },these) @@ -2531,7 +2541,8 @@ message: '无操作权限', iconUrl: "/static/images/common/uploadErr.png", borderColor: "#e034344d", - buttonBgColor: "#E03434", + buttonBgColor: "#E03434", + buttonTextColor: "#FFFFFFde", okCallback: null, buttonText: "确定" },these) @@ -2921,18 +2932,16 @@ } - .usrinfo .btnSend { - line-height: 65rpx; - border-radius: 8px; - width: 120rpx; - height: 65rpx; - color: rgba(35, 35, 35, 0.87); - font-family: PingFang SC; - font-size: 24rpx; - font-weight: 400; - letter-spacing: 0.15rpx; - text-align: center; - background-color: #BBE600; + .usrinfo .btnSend { + background-color: rgb(187, 230, 0); + color: rgba(35, 35, 35, 0.87); + height: 50rpx; + line-height: 50rpx; + border-radius: 16rpx; + font-size: 26rpx; + width: 112rpx; + white-space: nowrap; + text-align: center; } .usrinfo .item { @@ -3330,7 +3339,7 @@ .navbarRight .img{ width: 35rpx; height: 35rpx; - margin-right: 20rpx; + margin-right: 30rpx; } .uni-navbar--fixed{ top:0rpx; diff --git a/pages/7305/BJQ7305.vue b/pages/7305/BJQ7305.vue index a5f89ab..f980767 100644 --- a/pages/7305/BJQ7305.vue +++ b/pages/7305/BJQ7305.vue @@ -628,7 +628,7 @@ borderColor: "#e034344d", buttonBgColor: "#E03434", buttonText: '去连接', - buttonTextColor: '#232323de', + buttonTextColor: '#FFFFFFde', okCallback: function() { console.log("1111"); uni.navigateTo({ diff --git a/pages/common/addDevice/addBle.vue b/pages/common/addDevice/addBle.vue index d963791..bddf46d 100644 --- a/pages/common/addDevice/addBle.vue +++ b/pages/common/addDevice/addBle.vue @@ -482,20 +482,20 @@ ble.addStateBreakCallback(() => { - uni.showModal({ - title: '提示', - content: '蓝牙不可用' - }); + + + MsgError('蓝牙不可用','',these); these.EquipMents.filter((v, i) => { these.$set(these.EquipMents[i], 'link', false); }); }, pagePath); ble.addStateRecoveryCallback(() => { - uni.showModal({ - title: '提示', - content: '蓝牙恢复可用' - }); + + + MsgSuccess('蓝牙恢复可用','',these,()=>{ + MsgClear(these); + }) }, pagePath); @@ -568,7 +568,7 @@ plus.runtime.openURL('weixin://', (err) => { - MsgError("打开微信失败,请手动打开微信粘贴"); + MsgError("打开微信失败,请手动打开微信,发送至'文件传输助手'"); }); }, fail(ex){ @@ -805,10 +805,8 @@ let json = getUrlParams(res.result); if (!json.key) { - uni.showModal({ - title: '错误', - content: "无效的二维码" - }) + + MsgError('无效的二维码','',these); return; } this.scanKey = json.key; @@ -1050,9 +1048,8 @@ these.sendEquipToMq(); }).catch(ex => { console.log("ex=", ex) - uni.showModal({ - content: "连接失败:" + ex.msg - }); + + MsgError("连接失败:" + ex.msg,'',these); hideLoading(these); }); } diff --git a/pages/common/index/index.vue b/pages/common/index/index.vue index 1fbee95..0c95f43 100644 --- a/pages/common/index/index.vue +++ b/pages/common/index/index.vue @@ -27,7 +27,7 @@ - + + @@ -98,14 +99,15 @@ - 设备名称 - 名称 + + @@ -134,6 +136,9 @@ + + + @@ -772,7 +777,8 @@ this.downCallback(); }); ble = bleTool.getBleTool(); - recei = BleReceive.getBleReceive(); + console.log("this=",this); + recei = BleReceive.getBleReceive(this); //蓝牙连接成功的回调 ble.addRecoveryCallback((res) => { // console.log("蓝牙连接成功的回调"); @@ -799,8 +805,9 @@ //接收到消息的回调 ble.addReceiveCallback((receive, device, path, recArr) => { - // console.error("首页收到消息了"); - recei.ReceiveData(receive, device, path, recArr); + console.error("首页收到消息了"); + let json=recei.ReceiveData(receive, device, path, recArr); + console.error("消息内容",json); this.updateBleStatu(); }, pagePath); @@ -873,12 +880,25 @@ text-align: center; /* 文字居中 */ /* 设置最小宽度 */ + + position: relative; } - .active { - color: rgba(187, 230, 0, 1); - border-bottom: 6rpx solid rgba(187, 230, 0, 1); + .tab-item.active { + color: #bbe600; + height: 60rpx; + font-weight: bold; + } + .tab-item.active::before{ + content: ""; + background-color: #bbe600; + position: absolute; + top: 90%; + left:35%; + width: 30%; + height: 6rpx; + border-radius: 6rpx; } .sendFlex { @@ -1128,14 +1148,32 @@ border-radius: 40rpx; padding: 30rpx; text-align: center; - border: 1px solid rgba(255, 200, 78, 0.3); + border: 1px solid #E034344d; } + + .cancelBtn{ + + + text-align: center; + width: 170rpx !important; + background-color: #00000000; + } + + .agreement-popupC .cancelBtn{ + border:1rpx solid #E034344d; + color:#E03434; + } + + .agreement-popupD .cancelBtn{ + border: 1rpx solid rgba(255, 255, 255, 0.6); + color:rgba(255, 255, 255, 0.6); + } .agreement-popupD { - width: 70%; + width: 75%; background-color: rgb(42, 42, 42); border-radius: 40rpx; - padding: 40rpx; + padding: 40rpx 5rpx; text-align: center; border: 1px solid rgba(187, 230, 0, 0.3); } @@ -1157,6 +1195,7 @@ font-size: 28rpx; text-align: left; text-indent: 5rpx; + width: calc(100% - 75rpx); } .svg { @@ -1177,8 +1216,8 @@ /* 同意按钮 */ .agreeBtn { - background: #FFC84E; - color: #232323; + background: #E03434; + color: #FFFFFF; border: none; width: 170rpx !important; } diff --git a/static/images/670/qiangActive.png b/static/images/670/qiangActive.png index b4930b5..159feba 100644 Binary files a/static/images/670/qiangActive.png and b/static/images/670/qiangActive.png differ diff --git a/static/images/670/ruoActive.png b/static/images/670/ruoActive.png index 5c6f7d8..6d8ebeb 100644 Binary files a/static/images/670/ruoActive.png and b/static/images/670/ruoActive.png differ diff --git a/static/images/common/dell.png b/static/images/common/dell.png index 71ff6da..6c074f3 100644 Binary files a/static/images/common/dell.png and b/static/images/common/dell.png differ diff --git a/static/images/lightImg/closeLight.png b/static/images/lightImg/closeLight.png index 506ea9b..b849335 100644 Binary files a/static/images/lightImg/closeLight.png and b/static/images/lightImg/closeLight.png differ diff --git a/static/images/lightImg/closeLightActive.png b/static/images/lightImg/closeLightActive.png new file mode 100644 index 0000000..c2d3655 Binary files /dev/null and b/static/images/lightImg/closeLightActive.png differ diff --git a/utils/BleHelper.js b/utils/BleHelper.js index 3d2b207..77abe9c 100644 --- a/utils/BleHelper.js +++ b/utils/BleHelper.js @@ -22,9 +22,6 @@ const serviceDic = [ //合作供应商的蓝牙主服务 class BleHelper { constructor() { this.StorageKey = "linkedDevices"; - - recei = receivTool.getBleReceive(); - this.init(); } init() { @@ -41,16 +38,12 @@ class BleHelper { if (!v) return false; v.Linked = false; v.notifyState = false; - return !!v.device; + return v.device; }); } - const systemInfo = uni.getSystemInfoSync(); - - - this.data = { isOpenBlue: false, //蓝牙模块是否开启 available: false, //蓝牙状态是否可用 @@ -71,17 +64,7 @@ class BleHelper { stateRecoveryCallback: [], //蓝牙适配器恢复可用事件 stateBreakCallback: [] //蓝牙适配器不可用事件 } - //蓝牙模块不再订阅,改到首页订阅 - // this.addReceiveCallback((receive, f, path, recArr) => { - // recei.ReceiveData(receive, f, path, recArr); - // }, "BleReceiveData"); - // setTimeout(() => { - // this.OpenBlue().then(() => { - // this.linkAllDevices(); - // }); - - // }, 10); this.dic = { errRemarks: [{ @@ -668,7 +651,7 @@ class BleHelper { BleReceive() { uni.onBLECharacteristicValueChange((receive) => { //订阅消息 - console.log("收到订阅消息", receive); + // console.log("收到订阅消息", receive); let f = this.data.LinkedList.find((v) => { return v.deviceId == receive.deviceId; }) diff --git a/utils/BleReceive.js b/utils/BleReceive.js index a9175c7..12206c1 100644 --- a/utils/BleReceive.js +++ b/utils/BleReceive.js @@ -1,8 +1,22 @@ import Common from '@/utils/Common.js' -import { parseBleData } from '@/api/100J/HBY100-J.js' +import { + parseBleData +} from '@/api/100J/HBY100-J.js' +import { + MsgSuccess, + MsgError, + MsgClose, + MsgWarning, + showPop, + MsgClear, + MsgInfo +} from '@/utils/MsgPops.js'; class BleReceive { - constructor() { + constructor(_ref) { + if(_ref){ + this.ref = _ref; + } this.StorageKey = "linkedDevices"; this.HandlerMap = { '/pages/6155/deviceDetail': this.Receive_6155.bind(this), @@ -13,10 +27,12 @@ class BleReceive { '/pages/4877/BJQ4877': this.Receive_4877.bind(this), '/pages/100/HBY100': this.Receive_100.bind(this), '/pages/102/HBY102': this.Receive_102.bind(this), - '/pages/6170/deviceControl/index':this.Receive_6170.bind(this), + '/pages/6170/deviceControl/index': this.Receive_6170.bind(this), '/pages/100J/HBY100-J': this.Receive_100J.bind(this), - '/pages/6075J/BJQ6075J':this.Receive_6075.bind(this) + '/pages/6075J/BJQ6075J': this.Receive_6075.bind(this), + '/pages/210/HBY210':this.Receive_210.bind(this), }; + } @@ -63,23 +79,23 @@ class BleReceive { return receive; } - if (f && f.macAddress && f.device && f.device.id) { + if (fReady) { let handler = null; let keys = Object.keys(this.HandlerMap); let devKey = f.device.detailPageUrl ? f.device.detailPageUrl.replace(/\//g, '').toLowerCase() : ''; - + for (let index = 0; index < keys.length; index++) { let devKey = f.device.detailPageUrl ? f.device.detailPageUrl.replace(/\//g, "").toLowerCase() : ''; let key = keys[index].replace(/\//g, '').toLowerCase(); if (key == devKey) { handler = this.HandlerMap[keys[index]]; - + break; } } if (handler) { - let data = handler(receive, f, path, recArr); + let data = handler(receive, f, path, recArr); this.setBleFormData(data, f); return data; } else { @@ -89,7 +105,7 @@ class BleReceive { } else { // 100J AE30 二进制帧在 f 不完整时已在上方 parseBleData,此处不再误报「无法处理」 if (!is100JAe30) { - console.log("已收到该消息,但无法处理", receive, "f:", f); + console.error("已收到该消息,但无法处理", receive, "f:", f); } } @@ -180,40 +196,33 @@ class BleReceive { formData.modeCurr = modeCurr; formData.warnLevel = warn; formData.iswarn = iswarn; - + let recCnt = recArr.find(v => { return v.key.replace(/\//g, "").toLowerCase() == f.device.detailPageUrl .replace(/\//g, "").toLowerCase(); }); if (!recCnt) { + let msg = []; + if (f) { + if (formData.battary <= 20) { + msg.push("设备'" + f.device.deviceName + "'电量低"); + } + if (iswarn) { + msg.push("设备'" + f.device.deviceName + "'环境存在漏电电源"); + } - if (iswarn) { - uni.showModal({ - content: "'" + f.device.deviceName + "'环境存在漏电电源", - title: "警告", - success(res) { - if (res.confirm) { - - if (f) { - uni.navigateTo({ - url: f.detailPageUrl, - events: { - ack: function(data) {} - }, - success: (res) => { - res.eventChannel.emit('detailData', { - data: f, - deviceType: '', - apiType: 'listA' - }); - } - }); - } - } + if (this.ref && msg.length>0) { + if (msg.length > 0) { + msg = msg.join(','); + MsgError("'" + f.device.deviceName + "'环境存在漏电电源", '', this.ref, () => { + MsgClear(this.ref); + }); } - }) + } } + + } return formData; } catch (error) { @@ -229,7 +238,7 @@ class BleReceive { if (str.indexOf('mac address:') == 0) { let formData = {}; formData.macAddress = str.split(':')[1]; - + return formData; } else { let receiveData = { @@ -348,7 +357,7 @@ class BleReceive { receiveData.fourGStrenth = fourGStrenth; receiveData.SOS = sosTxt; receiveData.qzwarn = sosTxt === 'sg'; - + console.log("recArr=", recArr); let recCnt = recArr.find(v => { return v.key.replace(/\//g, "").toLowerCase() == f.device.detailPageUrl @@ -362,13 +371,22 @@ class BleReceive { if (staticWarn) { //有静止报警 msgs.push("静止报警中"); } + if (receiveData.battary <= 20) { + msg.push("设备'" + f.device.deviceName + "'电量低"); + } if (msgs.length > 0) { - msgs = "设备'" + f.device.deviceName + msgs.join(";"); - uni.showModal({ - title: "警告", - content: msgs, - showCancel: false - }); + msgs = msgs.join(";"); + if (this.ref) { + MsgError(msgs, '', this.ref, () => { + MsgClear(this.ref); + }); + } + + // uni.showModal({ + // title: "警告", + // content: msgs, + // showCancel: false + // }); } } @@ -436,7 +454,7 @@ class BleReceive { console.log('将数据转文本失败', ex); } } - + return receiveData; } @@ -514,12 +532,13 @@ class BleReceive { }); if (!recCnt) { - if (batteryLevel <= 20) { - // 会弹出两个框,暂且注释掉这段代码 - uni.showModal({ - content: "设备'" + f.device.deviceName + "'电量低", - title: "提示" - }); + if (batteryLevel <= 20 && warn == 0x00) { + + if (this.ref) { + MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => { + MsgClear(this.ref); + }); + } } } @@ -613,13 +632,17 @@ class BleReceive { }); + console.log("formData=",formData) if (!recCnt) { - if (batteryLevel <= 20) { - // 会弹出两个框,暂且注释掉这段代码 - uni.showModal({ - content: "设备'" + f.device.deviceName + "'电量低", - title: "提示" - }); + console.log("11111"); + if (formData.battary <= 20 && bytes[5] == 0x00) { + console.log("2222") + if (this.ref) { + console.log("3333333"); + MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => { + MsgClear(this.ref); + }); + } } } @@ -646,11 +669,13 @@ class BleReceive { }); if (!recCnt) { if (receiveData.sta_PowerPercent <= 20) { - uni.showModal({ - title: "提示", - content: "设备'" + f.device.deviceName + "'电量低", - showCancel: false - }); + + if (this.ref) { + MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => { + MsgClear(this.ref); + }); + } + } } } catch (error) { @@ -674,12 +699,16 @@ class BleReceive { .replace(/\//g, "").toLowerCase(); }); if (!recCnt) { - if (receiveData.sta_battery <= 20) { - uni.showModal({ - title: "提示", - content: "设备'" + f.device.deviceName + "'电量低", - showCancel: false - }); + if (receiveData.sta_battery <= 20 && (receiveData.sta_system != '1' || receiveData.sta_system != + '3')) { + + if (this.ref) { + MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => { + MsgClear(this.ref); + }); + } + + } } } catch (error) { @@ -695,19 +724,22 @@ class BleReceive { try { if (!receive.bytes || receive.bytes.length < 3) return receiveData; // 与 HBY100-J 页 bleValueNotify 共用 notify,避免 parseBleData 执行两次:重复日志、FB05 双次 resolve、onNotify 双次 - const parsed = parseBleData(receive.bytes, { skipSideEffects: true }); + const parsed = parseBleData(receive.bytes, { + skipSideEffects: true + }); if (!parsed) return receiveData; if (parsed.longitude !== undefined) receiveData.longitude = parsed.longitude; if (parsed.latitude !== undefined) receiveData.latitude = parsed.latitude; if (parsed.batteryPercentage !== undefined) receiveData.batteryPercentage = parsed.batteryPercentage; - if (parsed.batteryRemainingTime !== undefined) receiveData.batteryRemainingTime = parsed.batteryRemainingTime; + if (parsed.batteryRemainingTime !== undefined) receiveData.batteryRemainingTime = parsed + .batteryRemainingTime; } catch (e) { console.log('[100J] BleReceive 解析失败', e); } return receiveData; } -Receive_6170(receive, f, path, recArr) { + Receive_6170(receive, f, path, recArr) { let receiveData = {}; try { @@ -721,21 +753,20 @@ Receive_6170(receive, f, path, recArr) { .replace(/\//g, "").toLowerCase(); }); if (!recCnt) { - if (receiveData.sta_PowerPercent <= 20) { - uni.showModal({ - title: "提示", - content: "设备'" + f.device.deviceName + "'电量低", - showCancel: false - }); + let deviceState = receiveData.state; + if (deviceState && deviceState instanceof Array) { + if (deviceState[0] == 12 && deviceState[3] <= 20 && deviceState[4] == 0) { + if (this.ref) { + MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => { + MsgClear(this.ref); + }); + } + } } - + + } - - - - - } catch (error) { receiveData = {}; console.error("文本解析失败", error) @@ -758,18 +789,21 @@ Receive_6170(receive, f, path, recArr) { .replace(/\//g, "").toLowerCase(); }); if (!recCnt) { - if (receiveData.sta_PowerPercent <= 20) { - uni.showModal({ - title: "提示", - content: "设备'" + f.device.deviceName + "'电量低", - showCancel: false - }); + + let msgs = []; + + if (receiveData.sta_PowerPercent <= 20 && receiveData.sta_charge == 0) { + msgs.push("设备'" + f.device.deviceName + "'电量低"); } if (receiveData.sta_Intrusion === 1) { - uni.showModal({ - title: "提示", - content: "闯入报警中", - showCancel: false + msgs.push("设备'" + f.device.deviceName + "'闯入报警中"); + } + + + if (this.ref && msg.length>0) { + msgs = msgs.join(","); + MsgError(msgs, '', this.ref, () => { + MsgClear(this.ref); }); } @@ -787,7 +821,7 @@ Receive_6170(receive, f, path, recArr) { if (receiveData.sta_tomac.indexOf(':') == -1) { receiveData.sta_tomac = receiveData.sta_tomac.replace(/(.{2})/g, '$1:').slice(0, - - 1); //mac地址自动补: + 1); //mac地址自动补: } uni.getStorageInfo({ success: function(res) { @@ -814,9 +848,9 @@ Receive_6170(receive, f, path, recArr) { let dev = arr.find(v => { if (v.linkId == f.linkId) { let vl = v.linkEqs.find(cvl => { - if(cvl.linkMac === receiveData.sta_tomac){ - v.read=false; - cvl.linkTime=time; + if (cvl.linkMac === receiveData.sta_tomac) { + v.read = false; + cvl.linkTime = time; return true; } return false; @@ -853,7 +887,7 @@ Receive_6170(receive, f, path, recArr) { console.error("某个设备闯入报警"); if (receiveData.sta_sosadd.indexOf(':') == -1) { receiveData.sta_sosadd = receiveData.sta_sosadd.replace(/(.{2})/g, '$1:').slice(0, - - 1); //mac地址自动补: + 1); //mac地址自动补: } warnArrs.push({ linkId: f.linkId, @@ -911,35 +945,61 @@ Receive_6170(receive, f, path, recArr) { } - Receive_6075(receive,f,path,recArr){ + Receive_6075(receive, f, path, recArr) { let receiveData = {}; - + try { receiveData = JSON.parse(receive.str); - + let recCnt = recArr.find(v => { return v.key.replace(/\//g, "").toLowerCase() == f.device.detailPageUrl .replace(/\//g, "").toLowerCase(); }); - if (!recCnt) { - // if (receiveData.sta_PowerPercent <= 20) { - // uni.showModal({ - // title: "提示", - // content: "设备'" + f.device.deviceName + "'电量低", - // showCancel: false - // }); - // } - - + if (!recCnt && this.ref) { + if (receiveData.sta_PowerPercent <= 20 && (receiveData.sta_system != 3 || receiveData.sta_system !=1)) { + + MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => { + MsgClear(this.ref); + }); + + } } - + } catch (error) { receiveData = {}; console.log("文本解析失败", error) } return receiveData; - + + } + Receive_210(receive, f, path, recArr) { + let receiveData = {}; + + try { + + receiveData = JSON.parse(receive.str); + + let recCnt = recArr.find(v => { + return v.key.replace(/\//g, "").toLowerCase() == f.device.detailPageUrl + .replace(/\//g, "").toLowerCase(); + }); + if (!recCnt && this.ref) { + if (receiveData.sta_PowerPercent <= 20 && (receiveData.sta_system != 3 || receiveData.sta_system !=1)) { + + MsgError("设备'" + f.device.deviceName + "'电量低", '', this.ref, () => { + MsgClear(this.ref); + }); + + } + } + + } catch (error) { + receiveData = {}; + console.log("文本解析失败", error) + } + return receiveData; + } } @@ -947,10 +1007,12 @@ Receive_6170(receive, f, path, recArr) { let receiveInstance = null; export default { - getBleReceive: function(found, receive) { + getBleReceive: function(_ref) { + console.log("_ref=",_ref); if (!receiveInstance) { - receiveInstance = new BleReceive(); - + receiveInstance = new BleReceive(_ref); + }else{ + console.log("使用现有实例receiveInstance") } return receiveInstance; } diff --git a/utils/MsgPops.js b/utils/MsgPops.js index fd61c84..2cbb718 100644 --- a/utils/MsgPops.js +++ b/utils/MsgPops.js @@ -2,7 +2,8 @@ var MsgType = { error: "error", succ: "succ", warn: "warn", - info:'info' + info:'info', + prompt:'prompt' } var time = null; // 显示成功 @@ -74,6 +75,26 @@ export const MsgInfo = (msg, btnTxt, ev, isClear,btnCallback) => { return option; +} + +//显示捕获窗口,用于自定义弹窗内容 +export const MsgPrompt = ( ev,refName, btnCallback,isClear) => { + if (!ev) { + + return null; + } + if (!ev.$refs[refName]) { + + return null; + } + let option = ev.$refs[refName].showMsg("", "", MsgType.prompt,btnCallback); + if (isClear === undefined || isClear) { + createClear(ev); + } + + return option; + + } // 隐藏loading