ReedawFoodApp/pageTwo/devices/G02.vue

257 lines
6.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="weightPages">
<view class="content ">
<view class="status">{{bleTipsText}}</view>
<view class="text">{{text}}</view>
<view class="image">
<image src="/pageTwo/static/HC.png" class="image3"></image>
</view>
<view class="tips">
<text>{{$t("msgTitle")}}</text>
<text>1.{{$t("onDeviceBluetoothTips")}}</text>
<text>2.{{$t("openDeviceeMeasureTips")}}</text>
</view>
</view>
<!-- 手动记录 -->
<view class="wrapper" v-if="isHeight">
<view class="bg"></view>
<view class="Blue">
<view class="h4">{{$t("measureResultTips")}}</view>
<view class="Blue-box">
{{$t("nowHeight")}}<text>{{height}}{{unit}}</text>
</view>
<view class="Blue-box">
{{$t("lastWeight")}}<input v-model="weight" type="digit" :placeholder="$t('verifyWeight')" />kg
</view>
<view class="Blue-btn Blue-close" @click="handleHeight">{{$t("remeasure")}}</view>
<view class="Blue-btn" @click="handleGetMeasure">{{$t("SaveResult")}}</view>
</view>
</view>
</view>
</template>
<script>
import {
mapState
} from "vuex";
let myTime;
export default {
data() {
return {
text: "",
weight: "",
height: "",
height2: "",
deviceId: "",
macAddr: "",
write: "",
notify: "",
unit: "cm",
isHeight: false,
isConnection: 0,
isdevice: false,
Unload: false,
}
},
computed: {
...mapState(["user", "bleValue", "isBluetoothTyle"]),
userInfo() {
return this.user
},
bleTipsText() {
return this.bleValue.bleTipsText
}
},
onLoad(options) {
let that = this
that.weight = that.userInfo.weight
that.deviceId = options.deviceId
},
onUnload: function() {
let that = this
that.$ble.stopBluetoothDevicesDiscovery();
that.$ble.closeBLEConnection()
that.$ble.closeBluetoothAdapter()
console.log("页面返回onUnload")
},
watch: {
isBluetoothTyle: function() {
let that = this
if (!that.isBluetoothTyle) {
that.$tools.showModal(that.$t("linkBluetoothFail2"))
}
},
bleValue: {
handler(newVal, oldVal) {
let that = this
if (newVal.serviceId) {
that.deviceId = newVal.deviceId
that.serviceId = newVal.serviceId
that.getBLEDeviceCharacteristics(newVal.serviceId)
}
},
deep: true,
immediate: true
},
},
methods: {
/**
* 获取指定服务的特征值
*/
getBLEDeviceCharacteristics(serviceId) {
let that = this;
uni.getBLEDeviceCharacteristics({
deviceId: that.deviceId,
serviceId: serviceId,
success: res => {
// * 读read: true, //,写write: true, //,通知notify: true
for (let i = 0; i < res.characteristics.length; i++) {
let item = res.characteristics[i];
if (item.uuid.indexOf('0000FFF1') != -1) {
that.notify = item.uuid
} else if (item.uuid.indexOf('0000FFF2') != -1) {
that.write = item.uuid
}
}
that.$store.commit("changeBluetoothValue", {
type: 1,
isConnectStatus: 2,
bleTipsText: $t("linkBluetoothSuccess"),
})
uni.notifyBLECharacteristicValueChange({
deviceId: that.deviceId,
serviceId: serviceId,
characteristicId: that.notify,
state: true,
})
uni.notifyBLECharacteristicValueChange({
deviceId: that.deviceId,
serviceId: serviceId,
characteristicId: that.write,
state: true,
})
that.notifyBLECharacteristicValue(serviceId)
},
fail: res => {
console.log('获取特征值失败:', JSON.stringify(res))
}
})
},
// 接收蓝牙数据
notifyBLECharacteristicValue(serviceId) {
let that = this;
uni.notifyBLECharacteristicValueChange({
state: true, // 启用 notify 功能
deviceId: that.deviceId,
serviceId: serviceId,
characteristicId: that.notify,
success(res) {
uni.onBLECharacteristicValueChange(function(res) {
let value = that.$tools.ab2hex(res.value, "");
let data = parseInt(value.substring(7, 10), 16)
let unit = parseInt(value.substring(10, 12))
let digit = parseInt(value.substring(12, 14))
if (digit == "1") {
data = data / 10
}
if (digit == "2") {
data = data / 100
}
if (unit == "0") {
that.unit = "cm"
}
if (unit == "1") {
that.unit = "inch"
}
if (unit == "2") {
that.unit = "ft"
}
if (Number(data) < 20) {
that.text = that.$t("errorOperation")
} else {
if (unit == "2") {
let data1 = data / 12
let data2 = Number(data1 - Math.floor(data1)) * 12
that.height2 = data
that.height = Math.floor(data1) + "'" + data2.toFixed(1)
} else {
that.height2 = data
that.height = data
}
that.text = that.$t("heightText") + that.height + that.unit
that.isHeight = true
}
console.log("G02", value, unit, data, that.height, that.height2)
})
},
fail(res) {
console.log("测量失败", res.value);
}
})
},
// 保存测量结果
handleGetMeasure() {
let that = this
let height = 0
if (!that.weight) {
that.$tools.msg(that.$t("verifyWeight"))
return
}
if (that.unit == 'ft') {
height = Number(that.height2 * 2.54).toFixed(2)
} else {
height = that.height2
}
that.$model.getmeasurefunit({
adc: 0,
weight: that.weight + 'kg',
height: height,
aud_id: that.user.aud_id,
}).then(res => {
that.isHeight = false
console.log("报告", res)
if (res.code == 0) {
that.$store.dispatch('getUserInfo', {
aud_id: that.user.aud_id
})
that.$store.dispatch("getResult", {
aud_id: that.user.aud_id
})
that.$tools.msg(that.$t("msgSuccess"))
} else {
that.$tools.msg(that.$t("msgFail"))
}
setTimeout(function() {
uni.switchTab({
url: "/pages/index/index"
})
}, 500)
})
},
handleHeight() {
let that = this
that.text = ""
that.height = ""
that.isHeight = false
},
},
}
</script>
<style scoped lang="scss">
.image3 {
width: 200px !important;
height: 340px !important;
}
.status {
width: 70%;
font-size: 16px;
height: 35px;
line-height: 35px;
text-align: center;
border-radius: 15px;
margin: 15px auto;
background-color: #ffdda6;
}
</style>