From 04376b94df4d1277f09954e247d64eabf94123af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E9=B9=8F?= Date: Mon, 26 Aug 2024 14:13:36 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=AE=8C=E6=88=90=E9=94=81=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5UI=E5=8F=8A=E5=BC=80=E5=85=B3=E9=94=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/lock.js | 9 + components/SwitchLoading/SwitchLoading.vue | 95 ++++++ pages/home/home.vue | 15 +- pages/lockDetail/lockDetail.vue | 318 ++++++++++++++++++++- static/images/background_main.jpg | Bin 0 -> 51592 bytes static/images/icon_cloud.png | Bin 0 -> 1770 bytes static/images/icon_cloud_active.png | Bin 0 -> 1810 bytes static/images/icon_lock_transparent.png | Bin 0 -> 1285 bytes static/images/icon_menu.png | Bin 0 -> 1522 bytes static/images/icon_role.png | Bin 0 -> 2454 bytes static/images/icon_setting.png | Bin 0 -> 2594 bytes static/images/icon_tips.png | Bin 0 -> 1809 bytes stores/bluetooth.js | 10 +- stores/user.js | 2 +- 14 files changed, 438 insertions(+), 11 deletions(-) create mode 100644 components/SwitchLoading/SwitchLoading.vue create mode 100644 static/images/background_main.jpg create mode 100644 static/images/icon_cloud.png create mode 100644 static/images/icon_cloud_active.png create mode 100644 static/images/icon_lock_transparent.png create mode 100644 static/images/icon_menu.png create mode 100644 static/images/icon_role.png create mode 100644 static/images/icon_setting.png create mode 100644 static/images/icon_tips.png diff --git a/api/lock.js b/api/lock.js index 9931b27..1be2222 100644 --- a/api/lock.js +++ b/api/lock.js @@ -19,3 +19,12 @@ export function bindLockAdmin(data) { data }) } + +// 获取手机联网token +export function getLockNetTokenRequest(data) { + return request({ + url: '/lock/getLockNetToken', + method: 'POST', + data + }) +} diff --git a/components/SwitchLoading/SwitchLoading.vue b/components/SwitchLoading/SwitchLoading.vue new file mode 100644 index 0000000..569f1cb --- /dev/null +++ b/components/SwitchLoading/SwitchLoading.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/pages/home/home.vue b/pages/home/home.vue index 57f6010..261ca59 100644 --- a/pages/home/home.vue +++ b/pages/home/home.vue @@ -64,7 +64,6 @@ import { useBluetoothStore } from '@/stores/bluetooth' import { useBasicStore } from '@/stores/basic' import { mapState, mapActions } from 'pinia' - import { getServerDatetime } from '@/api/check' export default { data() { @@ -106,7 +105,8 @@ timeFormat, ...mapActions(useUserStore, ['updateUserInfo', 'updateLoginStatus', 'login']), ...mapActions(useLockStore, ['getLockList', 'getRole', 'getTimeLimit']), - ...mapActions(useBluetoothStore, ['getBluetoothStatus', 'initAndListenBluetooth', 'updateCurrentLockInfo', 'checkSetting']), + ...mapActions(useBluetoothStore, ['getBluetoothStatus', 'initAndListenBluetooth', 'updateCurrentLockInfo', + 'checkSetting', 'updateKeyId']), ...mapActions(useBasicStore, ['routeJump', 'getDeviceInfo']), async nextPage() { if(this.lockList.length < this.lockTotal) { @@ -172,7 +172,16 @@ result = await this.initAndListenBluetooth() } if(result) { - this.updateCurrentLockInfo(lock) + const data = { + ...lock, + name: lock.bluetooth.bluetoothDeviceName, + deviceId: lock.bluetooth.bluetoothDeviceId, + commKey: lock.bluetooth.privateKey, + signKey: lock.bluetooth.signKey, + publicKey: lock.bluetooth.publicKey, + } + this.updateKeyId(lock.keyId) + this.updateCurrentLockInfo(data) this.routeJump({ name: 'lockDetail' }) diff --git a/pages/lockDetail/lockDetail.vue b/pages/lockDetail/lockDetail.vue index 608c2be..d7637d1 100644 --- a/pages/lockDetail/lockDetail.vue +++ b/pages/lockDetail/lockDetail.vue @@ -1,17 +1,327 @@ - diff --git a/static/images/background_main.jpg b/static/images/background_main.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53c25b11a693299535fff1476af488c4dc9f7d2c GIT binary patch literal 51592 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 O7(8A5T-G@yGywpOZx9^- literal 0 HcmV?d00001 diff --git a/static/images/icon_menu.png b/static/images/icon_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..2311ee0ec0351734bf256bc5e5ab3cb0a2861304 GIT binary patch literal 1522 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 U+sm4Kj{pDw07*qoM6N<$g1l;ct^fc4 literal 0 HcmV?d00001 diff --git a/static/images/icon_setting.png b/static/images/icon_setting.png new file mode 100644 index 0000000000000000000000000000000000000000..6834c06bd6bd0864bb05c00a29667ee2f08297f1 GIT binary patch literal 2594 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 literal 0 HcmV?d00001 diff --git a/static/images/icon_tips.png b/static/images/icon_tips.png new file mode 100644 index 0000000000000000000000000000000000000000..5dcd7a1b548880886d3cd8fa59de8bed2401de91 GIT binary patch literal 1809 zcma)7>pPSQAO1ZvV?xFpjMLIPLyD$tm&+xQ!{f9&lSq*$t7+JBng|=4Fa~9mD{8A* zOU_KlArwlU(w0(QIkb`(TICdaRm2=#`ycFw`*7VK?+^Da^78zVr2dUM0FXFr*L`a$ z_y?-QHSTaY(zPZ?%)TF;p{Cn#3V_(fadq;E5B!k-JV(odl5VAsnxw(wiARqBK?!s! z3Y3oMpbHdSj#Oj!lUuhQnme8l}7afbd6i39Q z6g^mDs^009cmL9esqst83l7g@GjHTqElQ*-ZF+Qq!_FlO+LAu=Q>g8o(W`Gwm)Z`n zTRBMJ0z1MrM4%RzUc8a%gQtiB-4{G|lsBwSke63h6xz$o_;EU7kT%)Ycy9xFF=N+n-Ppb z!)vyvJSsPD)#Swe>o%}aJHbrlQVipuOOGKm$UVNztw=2g@iOOH4_$clA2V+Ky~ZD4 z&MP24X^V=gN)%3mnYJ>vMQe68slar}d0OamuDH$?A{mVCma3w$)dP#Q^v)(DiMpWt zZUL{wnc}ley$WH{t4ogN7zV3Jyrp)wAHyKzW|9fE&%l3lZmue1|Afos8%fG2LL=Uk z5O>qv=(v|5@W)rVMOE&qpw~~QXb8Ge9a)ChjQ_AoCa&@i=i@n&?i*APvgUY_9 zI{Dl)cE{UD6?H|Eo}@0SL3Gou|EPWm{4NIM9xhm8vuPN|Cu?TV@whT9f7C zt~eDrS~NfZ!n}PgBZJD}zoUF)pr3Fy2qFfZ4D;&p&pD(%)5#$?t9rSwg=g{r?B zGiC$4Qhq*LF(Bt^k4J?&6p$c%10aR7<9kFKFiFOSoo8@B4=-c>=xHE`)`nP}dAN?4n$`XlHaJPVg*pkBsNW-9b%V&#Vg4#74Z` zwjehWHLQT}9q_XreN7zW@LIEqddGF+KzN0M!*=@m)sN}!)DNgWIe$2IYkX*(@UkTV zJ3U(>I{YW%>{V8Itdy96aCJs6EKc725_XZtmnK(nBtnPil(e5@-?TVR?kB+$p}7?| zZ4`H}k=xLlE5@^R(+*JrGTR#xO2!U3h5ILKt;;?m-TuV;lUALg-K<@a7+O|t`)Y(W zda5l)kjk3uq7{|Dwy!u~L+43C6P;YqXg^XcN1o2i zaC-Y4CD)gYp>ApTvsIvDM~?mZ;g8$5;FPaTT1V1X_j%%t(e*U?oo}LIgz4su+BN4ev(3J|L<RTg8yt@M{S>(S8^8dsbjjv!bUlrr<#g;riPkd(WTM*=k3d=jVN`3%vr; zGHX>)a1-VFAWe$wDS9aNpsR@gc+_~> b^}TGp$HZ{W2UR2f+Q$LM&C|8UnJfH1XB{m6 literal 0 HcmV?d00001 diff --git a/stores/bluetooth.js b/stores/bluetooth.js index 2e67edf..8c9307b 100644 --- a/stores/bluetooth.js +++ b/stores/bluetooth.js @@ -67,6 +67,10 @@ export const useBluetoothStore = defineStore('ble', { } }, actions: { + // 更新keyId + updateKeyId(keyId) { + this.keyId = keyId + }, // 二进制转字符串 uint8ArrayToString(uint8Array) { let str = '' @@ -900,11 +904,12 @@ export const useBluetoothStore = defineStore('ble', { conentArray.set(this.timestampToArray(openTime), 63) - conentArray.set(this.currentLockInfo.token, 67) + conentArray.set(this.currentLockInfo.token || this.timestampToArray(openTime), 67) conentArray[71] = 16 - const md5Array = this.md5Encrypte(name + uid, this.currentLockInfo.token, this.currentLockInfo.signKey) + + const md5Array = this.md5Encrypte(name + uid, this.currentLockInfo.token || this.timestampToArray(openTime), this.currentLockInfo.signKey) conentArray.set(md5Array, 72) @@ -915,7 +920,6 @@ export const useBluetoothStore = defineStore('ble', { const cebArray = sm4.encrypt(conentArray, this.currentLockInfo.commKey, { mode: 'ecb', output: 'array' }) const packageArray = this.createPackageEnd(headArray, cebArray) - await this.writeBLECharacteristicValue(packageArray) return this.getWriteResult(this.openDoor, data) diff --git a/stores/user.js b/stores/user.js index e89fd61..16d047e 100644 --- a/stores/user.js +++ b/stores/user.js @@ -22,7 +22,7 @@ export const useUserStore = defineStore('user', { this.isLogin = status }, async login() { - uni.setStorageSync('token', '3023|pZ1aoVlMKJBTBTGWlsZPpbLvxc8txcHbrJx2ljrf49c7efe0') + uni.setStorageSync('token', '3028|6WkZCHj5yzLlXW3z3ylc1TDhtKYvF3jHB6e4eTWr22681e3e') const { code, data } = await getUserInfoRequest() await useLockStore().getLockList({ pageNo: 1,