diff --git a/components/LockDatetimePicker/LockDatetimePicker.vue b/components/LockDatetimePicker/LockDatetimePicker.vue index 911b896..0f3dcf6 100644 --- a/components/LockDatetimePicker/LockDatetimePicker.vue +++ b/components/LockDatetimePicker/LockDatetimePicker.vue @@ -6,10 +6,10 @@ {{ timeFormat(time, 'yyyy-mm-dd h:M') }} - + @close="close" @cancel="close"> @@ -22,7 +22,7 @@ export default { title: String, value: Number, minDate: Number, - placeholder: String, + maxDate: Number, type: { type: String, default: 'datetime' @@ -39,6 +39,24 @@ export default { }, methods: { timeFormat, + formatter(type, value) { + if (type === 'year') { + return `${value}年`; + } + if (type === 'month') { + return `${value}月`; + } + if (type === 'day') { + return `${value}日`; + } + if (type === 'hour') { + return `${value}时`; + } + if (type === 'minute') { + return `${value}分`; + } + return value; + }, filter(mode, options) { if (mode === 'minute' && this.type === 'datehour') { return options.filter((option) => option === '00') diff --git a/manifest.json b/manifest.json index 8d2ba3d..bca47ef 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "name" : "wx-starlock", "appid" : "__UNI__933D519", "description" : "", - "versionName" : "1.0.1", - "versionCode" : "18", + "versionName" : "1.0.2", + "versionCode" : "22", "transformPx" : false, /* 小程序特有相关 */ "mp-weixin" : { diff --git a/pages/createKey/createKey.vue b/pages/createKey/createKey.vue index 3faf3b0..5bcfba2 100644 --- a/pages/createKey/createKey.vue +++ b/pages/createKey/createKey.vue @@ -10,26 +10,28 @@ :list="tabs" :autoplay="false" :circular="true" :current="currnetIndex" @change="changeSwiper"> - - - 接收者可使用此小程序开关锁 - 发送钥匙 + 接收者可使用此小程序开关锁 + 小程序暂不支持邮箱登录,若接收者账号为邮箱可先使用星星锁APP登录,绑定手机号后可使用小程序登录 + 发送 - - + @changeTime="changeTemporaryValidTime" :maxDate="maxDate"> + @changeTime="changeTemporaryInvalidTime" :maxDate="maxDate"> - 接收者在有效期内可以不限次数使用 - 发送钥匙 + 接收者在有效期内可以不限次数使用 + 小程序暂不支持邮箱登录,若接收者账号为邮箱可先使用星星锁APP登录,绑定手机号后可使用小程序登录 + 发送 @@ -62,6 +64,7 @@ export default { temporaryValidTime: Number(new Date()), temporaryInvalidTime: Number(new Date()), minDate: Number(new Date()), + maxDate: Number(4133951940000), currnetIndex: 0, deviceInfo: null, pending: false @@ -77,7 +80,7 @@ export default { }, async onLoad () { this.deviceInfo = await this.getDeviceInfo() - this.temporaryInvalidTime = this.setTime() + // this.temporaryInvalidTime = this.setTime() }, methods: { ...mapActions(useBasicStore, ['getDeviceInfo', 'backAndToast', 'getNetworkType']), @@ -212,8 +215,6 @@ page { } .text { - margin-top: 40rpx; - margin-bottom: 50rpx; color: #262626; font-size: 26rpx; padding: 0 32rpx; diff --git a/pages/createPassword/createPassword.vue b/pages/createPassword/createPassword.vue index 4710779..2843629 100644 --- a/pages/createPassword/createPassword.vue +++ b/pages/createPassword/createPassword.vue @@ -10,17 +10,17 @@ :list="tabs" :autoplay="false" :circular="true" :current="currnetIndex" @change="changeSwiper"> - {{ text }} 获取密码 - - + {{ text }} 获取密码 @@ -51,10 +51,11 @@ export default { temporaryName: '', temporaryTime: Number(new Date()), minDate: Number(new Date()), + maxDate: Number(4133951940000), currnetIndex: 0, deviceInfo: null, pending: false, - text: '密码生成后,请在当日23:59前使用一次进行激活,否则过点后未激活则失效。密码激活后,有效期内不限次数使用。' + text: '密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。' } }, components: { @@ -68,14 +69,37 @@ export default { async onLoad() { this.deviceInfo = await this.getDeviceInfo() this.temporaryTime = this.setTime() + this.minDate = Number(this.getNextFullHour()) + this.maxDate = Number(this.getFutureTimestamp()) }, methods: { ...mapActions(useBasicStore, ['getDeviceInfo', 'backAndToast', 'getNetworkType']), ...mapActions(useLockStore, ['getPasswordList', 'updatePasswordSearch']), + // 获取下一个整点时间 + getNextFullHour() { + const now = new Date() + const currentHour = now.getHours() + now.setHours(currentHour); + now.setMinutes(0); + now.setSeconds(0); + now.setMilliseconds(0); + + return now; + }, + getFutureTimestamp() { + const currentDate = new Date(); + + const year = currentDate.getFullYear(); + const month = currentDate.getMonth(); + const day = currentDate.getDate(); + + const futureDate = new Date(year + 3, month, day, 23, 0, 0); + + return futureDate.getTime(); + }, setTime() { const now = new Date() now.setMinutes(0, 0, 0) - now.setDate(now.getDate() + 1) return now.getTime() }, diff --git a/pages/keyDetail/keyDetail.vue b/pages/keyDetail/keyDetail.vue index 2da44aa..17b2aec 100644 --- a/pages/keyDetail/keyDetail.vue +++ b/pages/keyDetail/keyDetail.vue @@ -1,7 +1,7 @@ diff --git a/stores/bluetooth.js b/stores/bluetooth.js index 69e57d9..79e479d 100644 --- a/stores/bluetooth.js +++ b/stores/bluetooth.js @@ -495,7 +495,7 @@ export const useBluetoothStore = defineStore('ble', { if(searchNumber === 0 && searchTipFlag) { uni.showModal({ title: '提示', - content: '长时间未搜索到任何设备,请确认微信的附近设备权限开启后再试', + content: '长时间未搜索到任何设备,请确认微信的附近设备权限开启后再试(鸿蒙系统在设置-隐私-定位服务中开启位置信息权限)', showCancel: false, success() { uni.openAppAuthorizeSetting({ @@ -756,15 +756,33 @@ export const useBluetoothStore = defineStore('ble', { return new Promise((resolve) => { uni.startBluetoothDevicesDiscovery({ success: function () { - timer2 = setTimeout(() => { - uni.stopBluetoothDevicesDiscovery() - clearInterval(timer1) - resolve({ code: -1 }) - }, 10500) + let searchFlag = false + timer2 = setTimeout(async () => { + uni.stopBluetoothDevicesDiscovery() + clearInterval(timer1) + if (!searchFlag) { + uni.showModal({ + title: '提示', + content: '长时间未搜索到任何设备,请确认微信的附近设备权限开启后再试(鸿蒙系统在设置-隐私-定位服务中开启位置信息权限)', + showCancel: false, + success () { + uni.openAppAuthorizeSetting({ + success (res) { + console.log(res) + } + }) + } + }) + } + resolve({ code: -1 }) + }, 10500) timer1 = setInterval(() => { uni.getBluetoothDevices({ success(res) { const deviceList = res.devices + if(searchFlag === false && res.devices.length > 0) { + searchFlag = true + } for(let i = 0; i < deviceList.length; i++) { if(deviceList[i]?.name === that.currentLockInfo.name) { const uuid = deviceList[i]?.advertisServiceUUIDs[0]