diff --git a/App.vue b/App.vue index 8e09af1..89526a8 100644 --- a/App.vue +++ b/App.vue @@ -2,7 +2,7 @@ export default { onLaunch: function() { - + }, onShow: function() { console.log('App Show') @@ -15,52 +15,27 @@ \ No newline at end of file diff --git a/api/6155/BlueHelper.js b/api/6155/BlueHelper.js new file mode 100644 index 0000000..82dd23d --- /dev/null +++ b/api/6155/BlueHelper.js @@ -0,0 +1,671 @@ +export default { + featrueValueCallback: null,//蓝牙特征变化回调 + BleChangeCallback:null,//蓝牙状态变化回调 + //引导用户打开蓝牙 + showBluetoothGuide: function(showTip) { + let platform = process.env.UNI_PLATFORM; + + + var openBlueSetting = function() { + // 判断平台类型 + if (platform === 'mp-weixin') { + uni.openSetting(); + } else if (platform === 'app-plus' || platform === 'app') { + //---------------------------------------------------------------- + const osName = plus.os.name; + + if (osName === 'iOS') { + // iOS 平台打开蓝牙设置 + plus.runtime.openURL('App-Prefs:root=Bluetooth', function() { + console.log('成功打开蓝牙设置'); + }, function(err) { + console.error('打开蓝牙设置失败:' + err.message); + uni.showModal({ + title: '提示', + content: '无法自动打开蓝牙设置,请手动前往设置 > 蓝牙 进行操作。', + showCancel: false + }); + }); + } else if (osName === 'Android') { + // Android 平台打开蓝牙设置 + try { + const Intent = plus.android.importClass('android.content.Intent'); + const Settings = plus.android.importClass('android.provider.Settings'); + const main = plus.android.runtimeMainActivity(); + const intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS); + main.startActivity(intent); + } catch (e) { + console.error('打开蓝牙设置失败:' + e.message); + // 尝试使用通用设置页面作为备选方案 + plus.runtime.openURL('settings://', function() { + console.log('打开系统设置成功,请手动找到蓝牙选项'); + }, function() { + uni.showModal({ + title: '提示', + content: '无法自动打开蓝牙设置,请手动前往设置页面开启蓝牙。', + showCancel: false + }); + }); + } + } else { + uni.showModal({ + title: '提示', + content: '当前系统不支持自动打开蓝牙设置,请手动操作。', + showCancel: false + }); + } + + + //-------------------------------------------------------------------- + } else if (platform === 'mp-alipay') { + uni.openSetting(); + } + + } + + if (showTip !== undefined) { + openBlueSetting(); + return; + } + if (platform === 'mp-weixin' || platform === 'app-plus' || platform === 'mp-alipay' || platform === 'app') { + uni.showModal({ + title: '蓝牙未开启', + content: '请在系统设置中打开蓝牙以使用此功能', + success: (res) => { + if (res.confirm) { + openBlueSetting(); + } + } + }); + } else { + console.log("当前平台不支持打开系统设置" + platform); + } + + + }, + //获取蓝牙适配器状态 + CheckBlue: function(callback) { + + uni.getBluetoothAdapterState({ + success(res1) { + + console.log("当前蓝牙适配器状态:" + JSON.stringify(res1)) + if (callback) { + callback(res1); + } + + }, + fail(ex1) { + console.log("检查蓝牙状态异常:" + JSON.stringify(ex1)); + if (callback) { + if (ex1.code == 10000) { + console.log("未初始化蓝牙适配器"); + } + let res1 = { + available: false, + discovering: false + } + callback(res1); + } + }, + complete() { + + } + }); + }, + //初始化蓝牙模块 + OpenBlue: function(isCheckState, callback, availCallback) { + + var these = this; + + var init = function() { + uni.openBluetoothAdapter({ + success: (res) => { + console.log("蓝牙初始化成功:" + JSON.stringify(res)); + if (callback) { + callback(); + } + uni.onBluetoothAdapterStateChange(function(state) { + console.log('蓝牙状态发生变化:' + JSON.stringify(state)); + if(this.BleChangeCallback){ + this.BleChangeCallback() + } + }) + }, + fail: function(ex2) { + console.log("蓝牙初始化失败:" + JSON.stringify(ex2)) + if (ex2.code == '10001') { + console.log("手机蓝牙未打开或设备不支持蓝牙"); + + + if (availCallback) { + availCallback(); + } else { + these.showBluetoothGuide(); + } + } + } + }); + } + if (isCheckState) { + this.CheckBlue(function(res1) { + if (res1.available) { + if (callback) { + callback(); + } + return; + } + init(); + }) + } else { + init(); + } + + + + }, + //关闭蓝牙模块,停止搜索、断开所有连接 + CloseBlue: function(callback) { + + this.StopSearch(); + + this.disconnectDevice(); + + uni.closeBluetoothAdapter({ + success: () => { + console.log("蓝牙模块已关闭"); + if (callback) { + callback(); + } + } + }); + }, + //开始搜索新设备 + StartSearch: function(callback) { + + var these = this; + + //发现新设备 + var onDeviceFound = function() { + uni.onBluetoothDeviceFound(function(res) { + console.log("发现新设备:" + JSON.stringify(res)); + if (callback) { + callback(res); + } + }) + } + //开始搜索 + var Search = function() { + uni.startBluetoothDevicesDiscovery({ + services: ["0xFFE0"], + allowDuplicatesKey: false, + success: (res) => { + console.log('开始搜索蓝牙设备成功'); + onDeviceFound(); + }, + fail: (err) => { + console.log(`搜索蓝牙设备失败: ${err.errMsg}`); + } + }); + + } + //先检查蓝牙状态是可用 + this.CheckBlue(function(res1) { + if (res1.available) { + if (!res1.discovering) { + Search(); + } else { + console.log("当前蓝牙正在搜索设备") + } + + } else { + these.OpenBlue(false, Search, () => { + these.showBluetoothGuide(); + }); + } + }); + + + + }, + //停止搜索 + StopSearch: function() { + uni.stopBluetoothDevicesDiscovery({ + success: (res) => { + console.log("停止搜索蓝牙设备成功") + }, + fail() { + console.log("无法停止蓝牙搜索") + } + }); + }, + //获取已连接的设备 + getLinkBlue: function(callback) { + uni.getConnectedBluetoothDevices({ + services: ["0xFFE0"], + success: (res) => { + if (callback) { + callback(res); + + } + }, + fail: function(ex) { + console.log("获取已连接设备异常"); + if (callback) { + callback({ + devices: [] + }); + } + } + }) + }, + //连接某个设备 + LinkBlue: function(deviceId, callback, error) { + + this.StopSearch(); + var these = this; + let key = "linkedDevices"; + var store = uni.getStorageInfoSync(); + var f = store.keys.find(function(v) { + return v == key; + }); + var linkedDevices = []; + if (f) { + var str = uni.getStorageSync(key); + if (str) { + linkedDevices = JSON.parse(str); + }else{ + linkedDevices=[]; + } + + } + //连接成功的回调 + var lindedCallback = function () { + + let c = linkedDevices.find(function (v) { + return v.deviceId == deviceId; + }); + + if (c) { + console.log("连接成功开始监听特征变化") + //监听设备的特征变化 + uni.notifyBLECharacteristicValueChange({ + deviceId: deviceId, + serviceId: c.notifyServiceid, + characteristicId: c.notifyCharactId, + state: true, + success: function (res) { + console.log("开始监听成功。。。。") + if(res.errCode=='0'){ + //订阅特征值 + uni.onBLECharacteristicValueChange(function(data){ + // data.characteristicId + // data.deviceId + // data.serviceId + // data.value + console.log("监听到特征值:"+JSON.stringify(data)); + + if(these.featrueValueCallback){ + these.featrueValueCallback(data); + } + }); + + } + } + }); + } + + if (callback) { + callback(deviceId); + } + } + + var linkState = function(res) { + console.log("获取已连接的设备回调" + JSON.stringify(res)) + let flag = res.devices.find(function(v) { + if (v.deviceId == deviceId) { + return true; + } + return false; + }); + if (flag) { + console.log("设备状态已连接"); + + lindedCallback(deviceId); + + return; + } else { + console.log("设备未连接"); + linkDevice(deviceId); + } + } + + var linkDevice = function(id) { + console.log("正在连接"+id); + uni.createBLEConnection({ + deviceId: id, + timeout: 30000, + success: function(info) { + + console.log("连接成功"); + + uni.setBLEMTU({ + deviceId: id, + mtu: 512, + success: () => { + console.log("mtu设置成功"); + if(linkedDevices){ + console.log("11111"+JSON.stringify(linkedDevices)); + f = linkedDevices.find(function (v) { + return v.deviceId == id; + }); + }else{ + console.log("22222") + f=null; + } + + + + if (!f) { + console.log("缓存中没有找到该设备") + + these.getLinkBlue(function (res) { + if (res.devices && res.devices.length) { + let f = res.devices.find(function (v) { + return v.deviceId == id; + }); + linkedDevices.push(f); + uni.setStorageSync(key, JSON.stringify(linkedDevices)); + + getService(id); + + } + + }); + + + } else { + console.log("缓存中已连接过"); + if (!f.services) { + getService(id); + } else { + + lindedCallback(id); + + } + } + }, + fail: function() { + console.log("mtu设置失败") + } + }); + + }, + fail: function(ex) { + if (error) { + console.log("蓝牙连接失败" + JSON.stringify(error)); + error(ex); + } + } + }); + } + //获取服务 + var getService = function(id) { + + var repeatCnt = 0; + var startgetService = function() { + uni.getBLEDeviceServices({ + deviceId: id, + success: function(res) { + if (res.services && res.services.length > 0) { + console.log("获取到服务:" + JSON.stringify(res)); + + linkedDevices.find(function(v) { + if (v.deviceId == id) { + v.services = res.services; + } + }); + uni.setStorageSync(key, JSON.stringify(linkedDevices)); + var promises = []; + for (var i = 0; i < res.services.length; i++) { + let service = res.services[i]; + promises.push(getFeatrus(id, service.uuid)); + } + + Promise.all(promises) + .then(results => { + console.log('所有操作成功完成', results); + + lindedCallback(id); + + }) + .catch(error => { + console.error('至少一个操作失败', error); + }); + + + } else { + repeatCnt++; + if (repeatCnt > 5) { + + lindedCallback(id); + + return; + } + setTimeout(function() { + startgetService(id); + }, 500); + } + } + }) + } + + setTimeout(function() { + startgetService(id); + }, 1000); + } + //获取特性 + var getFeatrus = function(id, serviceId) { + var promise = new Promise((resolve, reject) => { + uni.getBLEDeviceCharacteristics({ + deviceId: id, + serviceId: serviceId, + success: (res) => { + console.log("获取到特征:" + JSON.stringify(res)); + + //写特征 + let writeChar = res.characteristics.find(char => + char.uuid.indexOf("FFE1") > -1 + ); + //通知特征 + let notiChar = res.characteristics.find(char => + char.uuid.indexOf("FFE2") > -1 + ); + + linkedDevices.find(function(v) { + if (v.deviceId == id) { + if (!v.Characteristics) { + v.Characteristics = []; + } + v.Characteristics = v.Characteristics.concat(res + .characteristics); + + if (writeChar) { + v.writeServiceId = serviceId; + v.wirteCharactId = writeChar.uuid; + } + + if (notiChar) { + v.notifyServiceid = serviceId; + v.notifyCharactId = notiChar.uuid; + } + } + }); + + uni.setStorageSync(key, JSON.stringify(linkedDevices)); + resolve(res); + }, + fail: (ex) => { + console.log("获取特征出现异常:" + JSON.stringify(ex)); + resolve(ex); + } + }); + }); + return promise; + } + + //监测蓝牙状态变化 + uni.onBLEConnectionStateChange(function(res) { + if (!res.connected) { + console.log("蓝牙断开连接" + res.deviceId + ""); + // lindDevice(res.deviceId); + } + }); + + console.log("正在获取蓝牙适配器状态") + this.CheckBlue((res) => { + console.log("蓝牙状态:" + JSON.stringify(res)); + if (res.available) { + this.getLinkBlue(linkState); + } else { + console.log("蓝牙适配器不可用,正在初始化"); + this.OpenBlue(false, () => { + this.getLinkBlue(linkState); + }, () => { + console.log("请引导用户打开蓝牙"); + these.showBluetoothGuide(); + }) + } + + }); + + + }, + //断开连接 + disconnectDevice: function(deviceId) { + + var disconnect = function(id) { + uni.closeBLEConnection({ + deviceId: id, + success: (res) => { + console.log("蓝牙连接已断开"); + + } + }); + } + if (deviceId) { + disconnect(deviceId); + return; + } + //断开所有已连接的设备 + this.getLinkBlue(function(res) { + if (res.devices && res.devices.length > 0) { + for (var i = 0; i < res.devices.length; i++) { + let item = res.devices[i]; + disconnect(item.deviceId); + } + + } else { + console.log("无连接设备"); + } + }); + + }, + //发送二进制数据 + sendData: function(deviceid, buffer) { + + console.log("准备向设备发送数据,deviceid=" + deviceid); + return new Promise((resolve, reject) => { + if (!deviceid) { + reject(`deviceid为空,请输入要发送的设备`); + return; + } + console.log("准备发送数据包"); + let key = "linkedDevices"; + var store = uni.getStorageInfoSync(); + var f = store.keys.find(function(v) { + return v == key; + }); + console.log("倒计时:5"); + var linkedDevices = []; + if (f) { + var str = uni.getStorageSync(key); + if (str) { + linkedDevices = JSON.parse(str); + } + + } + console.log("倒计时:4"); + if (linkedDevices && linkedDevices.length && linkedDevices.length > 0) { + console.log("倒计时:3"); + f = linkedDevices.find(function(v) { + return v.deviceId == deviceid; + + }); + console.log("f=" + JSON.stringify(f)); + // console.log("deviceid=" + deviceid); + console.log("倒计时:2"); + if (f) { + console.log("倒计时:1"); + uni.writeBLECharacteristicValue({ + deviceId: f.deviceId, + serviceId: f.writeServiceId, + characteristicId: f.wirteCharactId, + value: buffer, + success: () => { + console.log("发送数据成功"); + resolve(); + }, + fail: (err) => { + console.log("发送数据失败" + JSON.stringify(err)); + reject(`发送数据失败: ${err.errMsg}`); + }, + complete: function() { + console.log("发送数据complete"); + } + }); + } else { + reject(`已连接设备中无法找到此设备`); + // console.log("警报:已连接设备中无法找到此设备") + } + + } else { + console.log("检测到未与设备建立连接"); + reject(`检测到未与设备建立连接`); + } + + + }); + }, + sendDataNew: function(deviceid, serviceId, characteristicId, buffer) { + + console.log("准备向设备发送数据,deviceid=" + deviceid); + return new Promise((resolve, reject) => { + uni.writeBLECharacteristicValue({ + deviceId: deviceid, + serviceId: serviceId, + characteristicId: characteristicId, + value: buffer, + success: () => { + console.log("发送数据成功"); + resolve(); + }, + fail: (err) => { + console.log("发送数据失败" + JSON.stringify(err)); + reject(`发送数据失败: ${err.errMsg}`); + }, + complete: function() { + console.log("发送数据complete"); + } + }); + + + + + + }); + } + +} + + diff --git a/api/common/operatingInstruct/index.js b/api/common/operatingInstruct/index.js deleted file mode 100644 index 63694f3..0000000 --- a/api/common/operatingInstruct/index.js +++ /dev/null @@ -1,19 +0,0 @@ -import request from '@/utils/request' -import qs from 'qs' -// 查询列表 -export function fileInfo(params) { - return request({ - url: '/app/file/list', - method: 'GET', - data: params - }) -} - - -// 删除 -export function fileDelete(ids) { - return request({ - url: `/app/file/delete/${ids}`, - method: 'delete', - }) -} diff --git a/api/common/operationVideo/index.js b/api/common/operationVideo/index.js deleted file mode 100644 index 35841be..0000000 --- a/api/common/operationVideo/index.js +++ /dev/null @@ -1,32 +0,0 @@ -import request from '@/utils/request' -// 视频列表 -export function listOperationVideos(params) { - return request({ - url: '/app/operationVideo/listOperationVideos', - method: 'GET', - data: params - }) -} -// 添加 -export function addOperationVideo(data) { - return request({ - url: '/app/operationVideo/addOperationVideo', - method: 'post', - data - }) -} -// 编辑 -export function editOperationVideo(data) { - return request({ - url: '/app/operationVideo/editOperationVideo', - method: 'post', - data - }) -} -// 删除视频列表 -export function deleteOperationVideo(ids) { - return request({ - url: `/app/operationVideo/deleteOperationVideo/${ids}`, - method: 'delete', - }) -} \ No newline at end of file diff --git a/components/BottomSlideMenuPlus/BottomSlideMenuPlus.vue b/components/BottomSlideMenuPlus/BottomSlideMenuPlus.vue new file mode 100644 index 0000000..af0dd3b --- /dev/null +++ b/components/BottomSlideMenuPlus/BottomSlideMenuPlus.vue @@ -0,0 +1,258 @@ + + + + + \ No newline at end of file diff --git a/components/MessagePopup/MessagePopup.vue b/components/MessagePopup/MessagePopup.vue new file mode 100644 index 0000000..a5faf71 --- /dev/null +++ b/components/MessagePopup/MessagePopup.vue @@ -0,0 +1,381 @@ + + + + + \ No newline at end of file diff --git a/components/Progress/Progress.vue b/components/Progress/Progress.vue new file mode 100644 index 0000000..697e69a --- /dev/null +++ b/components/Progress/Progress.vue @@ -0,0 +1,129 @@ + + + + + \ No newline at end of file diff --git a/manifest.json b/manifest.json index 1dab1b3..86e2a73 100644 --- a/manifest.json +++ b/manifest.json @@ -22,7 +22,8 @@ "Barcode" : {}, "Camera" : {}, "Maps" : {}, - "OAuth" : {} + "OAuth" : {}, + "Geolocation" : {} }, /* 应用发布信息 */ "distribute" : { @@ -58,7 +59,6 @@ }, /* ios打包配置 */ "ios" : { - "appid": "uni.app.UNIA21EF43", "privacyDescription" : { "NSBluetoothPeripheralUsageDescription" : "需要蓝牙访问权限,用于设备通信", "NSBluetoothAlwaysUsageDescription" : "需要蓝牙访问权限,用于设备通信" @@ -67,8 +67,21 @@ }, /* SDK配置 */ "sdkConfigs" : { - "geolocation" : {}, - "maps" : {}, + "geolocation" : { + "amap" : { + "name" : "amapHG8nIFW5", + "__platform__" : [ "ios", "android" ], + "appkey_ios" : "065c43f02c7b627a74ad7dd23b16bb4f", + "appkey_android" : "d7d852dbda2b95f6f796fb9a711a9fee" + } + }, + "maps" : { + "amap" : { + "name" : "amapHG8nIFW5", + "appkey_ios" : "065c43f02c7b627a74ad7dd23b16bb4f", + "appkey_android" : "d7d852dbda2b95f6f796fb9a711a9fee" + } + }, "oauth" : {}, "push" : {} }, diff --git a/pages.json b/pages.json index 6be4dc3..9cd1049 100644 --- a/pages.json +++ b/pages.json @@ -6,6 +6,17 @@ "navigationStyle": "custom" } }, + + + { + "path" : "pages/6155/deviceDetail", + "style" : + { + "navigationBarTitleText" : "HBY 6155" + } + }, + + { "path": "pages/common/index/index", "style": { @@ -61,44 +72,56 @@ } }, { - "path": "pages/common/operationVideo/index", + "path": "pages/6170/operationVideo/index", "style": { "navigationStyle": "custom" } }, { - "path": "pages/common/addvideo/index", + "path": "pages/6170/addvideo/index", "style": { - "navigationStyle": "custom" + "navigationBarTitleText": "添加" } }, - // 操作说明 { - "path": "pages/common/operatingInstruct/index", + "path": "pages/6170/editVideo/index", "style": { - "navigationStyle": "custom" + "navigationBarTitleText": "编辑视频" } }, - // 产品说明 { - "path": "pages/common/productDes/index", + "path": "pages/6170/operatingInstruct/index", "style": { "navigationStyle": "custom" } }, { - "path": "pages/6155/index", - "style": { - "navigationBarTitleText": "6155" + "path" : "pages/common/addBLE/addEquip", + "style" : + { + "navigationBarTitleText" : "添加设备" } }, { - "path": "pages/6155/bluetooth/bluetooth", - "style": { - "navigationStyle": "custom" + "path" : "pages/common/addBLE/LinkBle", + "style" : + { + "navigationBarTitleText" : "扫描到的设备" + } + }, + + { + "path" : "pages/6155/ImgCrop", + "style" : + { + "navigationBarTitleText" : "图像裁剪", + "navigationStyle": "custom", + "fullscreen": true } } + + ], "tabBar": { "color": "#fff", diff --git a/pages/6155/ImgCrop.vue b/pages/6155/ImgCrop.vue new file mode 100644 index 0000000..2fc323d --- /dev/null +++ b/pages/6155/ImgCrop.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/pages/6155/bluetooth/bluetooth.vue b/pages/6155/bluetooth/bluetooth.vue deleted file mode 100644 index ebbae43..0000000 --- a/pages/6155/bluetooth/bluetooth.vue +++ /dev/null @@ -1,257 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/6155/deviceDetail.vue b/pages/6155/deviceDetail.vue new file mode 100644 index 0000000..9483a94 --- /dev/null +++ b/pages/6155/deviceDetail.vue @@ -0,0 +1,1334 @@ + + + + + \ No newline at end of file diff --git a/pages/6155/index.vue b/pages/6155/index.vue deleted file mode 100644 index 3e0d00c..0000000 --- a/pages/6155/index.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/pages/common/addvideo/index.vue b/pages/6170/addvideo/index.vue similarity index 50% rename from pages/common/addvideo/index.vue rename to pages/6170/addvideo/index.vue index 3b34679..571569a 100644 --- a/pages/common/addvideo/index.vue +++ b/pages/6170/addvideo/index.vue @@ -1,60 +1,50 @@ diff --git a/pages/6170/deviceControl/index.vue b/pages/6170/deviceControl/index.vue index 52afed3..ce55170 100644 --- a/pages/6170/deviceControl/index.vue +++ b/pages/6170/deviceControl/index.vue @@ -2,7 +2,7 @@ + @right-click="uploadStartup"> @@ -231,8 +231,7 @@ lightModeB: false, lightModeC: false, //激光提示框 items: [], - isFormExpanded: true, // 默认展开 - deviceID: '' + isFormExpanded: true // 默认展开 } }, computed: { @@ -315,19 +314,17 @@ // 操纵说明 operatingInst() { uni.navigateTo({ - url: `/pages/common/operatingInstruct/index?id=${this.deviceID}` + url: '/pages/6170/operatingInstruct/index' }) }, // 产品参数 productparams() { - uni.navigateTo({ - url: `/pages/common/productDes/index?id=${this.deviceID}` - }) + }, // 操作视频 operatingVideo() { uni.navigateTo({ - url: `/pages/common/operationVideo/index?id=${this.deviceID}` + url: '/pages/6170/operationVideo/index' }) }, @@ -341,10 +338,6 @@ handleDisagree() { this.lightModeC = false }, - }, - onLoad(options) { - console.log(options.id) // 输出: 123 - this.deviceID = options.id } } @@ -556,8 +549,7 @@ transform: translate(-17%, -100%); } - - .uni-file-picker__container { + .uni-file-picker__container{ width: 200rpx !important; border: 1px solid rgb(58, 58, 58); } diff --git a/pages/6170/editVideo/index.vue b/pages/6170/editVideo/index.vue new file mode 100644 index 0000000..fca7d0d --- /dev/null +++ b/pages/6170/editVideo/index.vue @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/pages/6170/operatingInstruct/index.vue b/pages/6170/operatingInstruct/index.vue new file mode 100644 index 0000000..6690755 --- /dev/null +++ b/pages/6170/operatingInstruct/index.vue @@ -0,0 +1,350 @@ + + + + \ No newline at end of file diff --git a/pages/common/operationVideo/index.vue b/pages/6170/operationVideo/index.vue similarity index 69% rename from pages/common/operationVideo/index.vue rename to pages/6170/operationVideo/index.vue index aaa2779..25a429f 100644 --- a/pages/common/operationVideo/index.vue +++ b/pages/6170/operationVideo/index.vue @@ -1,20 +1,21 @@ diff --git a/pages/common/addBLE/LinkBle.vue b/pages/common/addBLE/LinkBle.vue new file mode 100644 index 0000000..8183fd0 --- /dev/null +++ b/pages/common/addBLE/LinkBle.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/pages/common/addBLE/addEquip.vue b/pages/common/addBLE/addEquip.vue new file mode 100644 index 0000000..6f87957 --- /dev/null +++ b/pages/common/addBLE/addEquip.vue @@ -0,0 +1,598 @@ + + + + + \ No newline at end of file diff --git a/pages/common/index/index.vue b/pages/common/index/index.vue index 7912128..01ed200 100644 --- a/pages/common/index/index.vue +++ b/pages/common/index/index.vue @@ -24,8 +24,8 @@ style="height:80vh;"> - +