kaiguan-zfb/App.vue
2024-11-13 18:00:27 +08:00

299 lines
6.9 KiB
Vue
Raw Permalink 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.

<script>
var xBlufi = require("./utils/blufi/xBlufi.js");
var call;
var data_call;
var ble_id = "1231";
var ble_url;
var user_info;
// 在文件顶部添加一个变量来存储当前连接的MAC地址
var current_connected_mac = null;
export default {
globalData: {
userInfo: null,
topicTypeIndex: 0,
token: "",
isShow: true,
bleInfo: {
current_connected_mac: null,
ble_id: "1231",
ble_url: null,
devicesList: [],
xBlufi: xBlufi
}
},
created() {
// #ifdef APP-PLUS
plus.navigator.closeSplashscreen();
// #endif
console.log('App @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Launch');
// #ifndef APP-PLUS
console.log('App 1111111111111Launch');
xBlufi.initXBlufi(1);
console.log("xBlufi初始化", xBlufi); // 修改日志输出,确保输出有意义的信息
xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent); // 取消注释,确保事件监听被正确设置
xBlufi.notifyStartDiscoverBle({
'isStart': true
});
// #endif
// 添加以下代码,将方法绑定到 uni 全局对象
uni.$emit('init_app_methods', {
set_ble_mac: this.set_ble_mac.bind(this)
});
},
onLaunch(options) {
uni.setInnerAudioOption({
obeyMuteSwitch: false
});
},
onShow: function () {
},
onHide: function () {
},
methods: {
get_ble_name(callback) {
if (callback != undefined) {
xBlufi.notifyConnectBle({
isStart: false,
deviceId: ble_id,
name: ""
});
// xBlufi.notifyStartDiscoverBle({
// 'isStart': true
// });
console.log('关闭蓝牙接口', ble_id);
call = callback;
}
},
get_ble_data(callback) {
if (callback != undefined)
data_call = callback;
},
set_ble_mac(mac) {
const bleInfo = this.globalData.bleInfo;
// 如果MAC地址与当前连接的相同则不重复连接
if (mac === bleInfo.current_connected_mac) {
console.log('设备已连接,无需重复连接');
return;
}
if (mac != undefined && bleInfo.devicesList) {
const device = bleInfo.devicesList.find(device =>
device.name && device.name.toLowerCase().includes(mac.toLowerCase())
);
if (device) {
bleInfo.ble_url = '';
uni.hideLoading();
bleInfo.ble_id = device.deviceId;
bleInfo.xBlufi.notifyConnectBle({
isStart: true,
deviceId: device.deviceId
});
uni.showToast({
title: "连接蓝牙设备中",
icon: 'none',
duration: 1500
});
bleInfo.xBlufi.notifyInitBleEsp32({
deviceId: device.deviceId
});
// 更新全局MAC地址
bleInfo.current_connected_mac = mac;
} else {
uni.showToast({
title: "未找到匹配的设备",
icon: 'none',
duration: 1500
});
}
}
},
set_ble_id(id, url) {
console.log("id", id)
if (id != undefined) {
ble_url = url
uni.hideLoading();
ble_id = id;
xBlufi.notifyConnectBle({
isStart: true,
deviceId: id
// name
});
uni.showToast({
title: "连接蓝牙设备中",
icon: 'none',
duration: 3500
});
xBlufi.notifyInitBleEsp32({
deviceId: id
});
// xBlufi.notifyStartDiscoverBle({
// 'isStart': false
// });
}
},
ble_send(data) {
if (data != undefined) {
xBlufi.notifySendCustomData({
customData: data,
});
}
},
get_user_iphone(data) {
return user_info;
},
set_user_iphone(data) {
console.log("电话存储")
uni.setStorage({
key: 'user_info',
data: data,
success: () => {
console.log('已经缓存userInfo:', data.phone);
resolve('success')
}
});
user_info = data
},
call(e) {
call = e;
},
funListenDeviceMsgEvent(options) {
switch (options.type) {
case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
if (!options.result) {
// 清除全局MAC地址
this.globalData.bleInfo.current_connected_mac = null;
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
console.log("当前页面路径", currentPage.route)
if (currentPage.route != 'pages/index/index') {
uni.showModal({
title: '设备提示!',
content: '与设备断开请重联',
showCancel: false,
success: function (res) {
uni.reLaunch({
url: '/pages/index/index'
});
}
});
}
}
break;
case xBlufi.XBLUFI_TYPE.TYPE_CONNECT_ROUTER_RESULT:
uni.hideLoading();
if (!options.result) {
uni.hideLoading();
uni.showModal({
title: '温馨提示',
content: '配网失败请确认是2.4G模式并且账户密码正确',
showCancel: false //是否显示取消按钮
});
} else {
if (options.data.progress == 100) {
let ssid = options.data.ssid;
uni.hideLoading();
uni.showModal({
title: '温馨提示',
content: `连接成功路由器`,
showCancel: false,
//是否显示取消按钮
success: function (res) {
// uni.navigateBack()
uni.navigateTo({
url: '/pages/dd/xiaoai'
});
console.log("确定成功之后 返回 ");
}
});
}
}
break;
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
if (data_call != undefined) {
data_call(options.data)
}
break;
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
if (options.result) {
this.globalData.bleInfo.devicesList = options.data; // 假设你想在组件内部使用这个变量,应该这样设置
console.log("获取设备列表", this.globalData.bleInfo.devicesList)
if (call != undefined) {
console.log("获取设备列表", this.globalData.bleInfo.devicesList)
call(this.globalData.bleInfo.devicesList)
}
}
break;
case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
console.log("连接回调:" + JSON.stringify(options));
if (options.result) {
uni.hideLoading();
uni.showToast({
title: '连接成功',
icon: 'none'
});
console.log("连接进入:", ble_url);
// uni.navigateTo({ url: ble_url });
}
else {
uni.showToast({
title: '连接超时,请重新链接',
icon: 'none'
});
}
break;
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
if (!options.result) {
uni.showToast({
title: '蓝牙未开启解决方法',
icon: 'none',
duration: 3000
});
}
break;
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
if (options.result) {
console.log('蓝牙停止搜索ok');
} else {
console.log('蓝牙停止搜索失败');
}
break;
}
}
}
}
</script>
<style lang="scss">
/*每个页面公共css */
@import "uview-ui/index.scss";
@import "./common/css/iconfont.css";
// 自定义tabar样式修改
/deep/.u-tabbar__content__item__text {
font-size: 20rpx !important;
bottom: 10rpx !important;
}
page {
background-color: #f8f8f8;
}
</style>