完成指纹、遥控、人脸、掌静脉创建循环钥匙的功能

This commit is contained in:
范鹏 2025-02-12 18:18:25 +08:00
parent 83de6dc898
commit 2dc1c31f49
8 changed files with 285 additions and 29 deletions

View File

@ -58,6 +58,7 @@
faceUserNo: String(data.faceNumber),
faceType: params.value.faceType,
addType: 1,
weekDay: params.value.weekDays,
fingerRight: params.value.isAdmin,
isCoerced: params.value.isForce === 1 ? 2 : 1
})

View File

@ -57,6 +57,7 @@
lockId: $bluetooth.currentLockInfo.lockId,
startDate: params.startDate,
endDate: params.endDate,
weekDay: params.weekDays,
fingerprintName: params.fingerprintName,
fingerprintNumber: String(data.fingerprintNumber),
fingerprintUserNo: String(data.fingerprintNumber),

View File

@ -55,6 +55,7 @@
palmVeinNumber: String(data.palmVeinNumber),
palmVeinUserNo: String(data.palmVeinNumber),
palmVeinType: params.palmVeinType,
weekDay: params.weekDays,
addType: 1,
palmVeinRight: params.isAdmin,
isCoerced: params.isForce === 1 ? 2 : 1

View File

@ -58,6 +58,7 @@
remoteNumber: String(data.remoteNumber),
remoteType: params.remoteType,
addType: 1,
weekDay: params.weekDays,
remoteRight: params.isAdmin,
isCoerced: params.isForce === 1 ? 2 : 1
})

View File

@ -38,7 +38,7 @@
</view>
<view class="button mt-5" @click="create('permanent')">下一步</view>
</swiper-item>
<swiper-item :style="{ height: deviceInfo.windowHeight - 44 + 'px' }">
<swiper-item>
<LockInput
:value="temporaryName"
title="姓名"
@ -51,7 +51,6 @@
:value="temporaryStartTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryStartTime', $event)"
></LockDatetimePicker>
</view>
@ -61,7 +60,6 @@
:value="temporaryEndTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryEndTime', $event)"
></LockDatetimePicker>
</view>
@ -74,6 +72,26 @@
</view>
<view class="button mt-5" @click="create('temporary')">下一步</view>
</swiper-item>
<swiper-item>
<LockInput
:value="cycleName"
title="姓名"
placeholder="请输入"
@change-input="changeName('cycle', $event)"
></LockInput>
<view class="mt-3">
<LockCycle @change="changeCycle"></LockCycle>
</view>
<view class="mt-3">
<LockSwitch
:value="cycleAdmin"
title="是否为管理员"
@change="changeAdmin('cycle', $event)"
></LockSwitch>
</view>
<view class="button mt-5" @click="create('cycle')">下一步</view>
</swiper-item>
</swiper>
</view>
</template>
@ -81,6 +99,7 @@
<script setup>
import { getCurrentInstance, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { timeFormat } from 'uview-plus'
import { useBasicStore } from '@/stores/basic'
import { useUserStore } from '@/stores/user'
import { useBluetoothStore } from '@/stores/bluetooth'
@ -99,6 +118,9 @@
},
{
name: '限时'
},
{
name: '循环'
}
]
@ -110,6 +132,12 @@
const temporaryEndTime = ref(Number(new Date()))
const temporaryAdmin = ref(false)
const cycleName = ref('')
const cycleStartTime = ref(null)
const cycleEndTime = ref(null)
const weekDays = ref([])
const cycleAdmin = ref(false)
const minDate = ref(Number(new Date()))
const maxDate = ref(Number(4133951940000))
const currentIndex = ref(0)
@ -123,6 +151,12 @@
maxDate.value = Number(getFutureTimestamp())
})
const changeCycle = data => {
cycleStartTime.value = data.startDate
cycleEndTime.value = data.endDate
weekDays.value = data.weekDays
}
const getNextFullHour = () => {
const now = new Date()
const currentHour = now.getHours()
@ -156,7 +190,8 @@
const create = async type => {
if (
(type === 'temporary' && temporaryName.value === '') ||
(type === 'permanent' && permanentName.value === '')
(type === 'permanent' && permanentName.value === '') ||
(type === 'cycle' && cycleName.value === '')
) {
uni.showToast({
title: '名称不能为空',
@ -173,6 +208,14 @@
return
}
if (type === 'cycle' && weekDays.value.length === 0) {
uni.showToast({
title: '请选择有效期',
icon: 'none'
})
return
}
const netWork = await $basic.getNetworkType()
if (!netWork) {
return
@ -200,7 +243,7 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
} else if (type === 'temporary') {
params = {
...params,
faceName: temporaryName.value,
@ -213,6 +256,19 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
params = {
...params,
faceName: cycleName.value,
isAdmin: cycleAdmin.value ? 1 : 0,
weekDays: weekDays.value,
faceType: 4,
isRound: 1,
startDate: cycleStartTime.value,
endDate: cycleEndTime.value,
startTime: timeFormat(new Date(cycleStartTime.value), 'h:M'),
endTime: timeFormat(new Date(cycleEndTime.value), 'h:M')
}
}
const { code, message } = await checkFaceNameRequest({
@ -242,8 +298,10 @@
const changeName = (type, event) => {
if (type === 'permanent') {
permanentName.value = event
} else {
} else if (type === 'temporary') {
temporaryName.value = event
} else {
cycleName.value = event
}
}
@ -258,8 +316,10 @@
const changeAdmin = (type, event) => {
if (type === 'permanent') {
permanentAdmin.value = event.detail.value
} else {
} else if (type === 'temporary') {
temporaryAdmin.value = event.detail.value
} else {
cycleAdmin.value = event.detail.value
}
}

View File

@ -46,7 +46,7 @@
</view>
<view class="button" @click="create('permanent')">下一步</view>
</swiper-item>
<swiper-item :style="{ height: deviceInfo.windowHeight - 44 + 'px' }">
<swiper-item>
<LockInput
:value="temporaryName"
title="姓名"
@ -59,7 +59,6 @@
:value="temporaryStartTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryStartTime', $event)"
></LockDatetimePicker>
</view>
@ -69,7 +68,6 @@
:value="temporaryEndTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryEndTime', $event)"
></LockDatetimePicker>
</view>
@ -90,6 +88,33 @@
</view>
<view class="button" @click="create('temporary')">下一步</view>
</swiper-item>
<swiper-item>
<LockInput
:value="cycleName"
title="姓名"
placeholder="请输入"
@change-input="changeName('cycle', $event)"
></LockInput>
<view class="mt-3">
<LockCycle @change="changeCycle"></LockCycle>
</view>
<view class="mt-3">
<LockSwitch
:value="cycleAdmin"
title="是否为管理员"
@change="changeAdmin('cycle', $event)"
></LockSwitch>
</view>
<view class="mt-3 mb-3">
<LockSwitch
:value="cycleCoerced"
title="胁迫指纹"
@change="changeCoerced('cycle', $event)"
:placeholder="placeholder"
></LockSwitch>
</view>
<view class="button" @click="create('cycle')">下一步</view>
</swiper-item>
</swiper>
</view>
</template>
@ -97,6 +122,7 @@
<script setup>
import { getCurrentInstance, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { timeFormat } from 'uview-plus'
import { useBasicStore } from '@/stores/basic'
import { useUserStore } from '@/stores/user'
import { useBluetoothStore } from '@/stores/bluetooth'
@ -115,6 +141,9 @@
},
{
name: '限时'
},
{
name: '循环'
}
]
@ -128,6 +157,13 @@
const temporaryAdmin = ref(false)
const temporaryCoerced = ref(false)
const cycleName = ref('')
const cycleStartTime = ref(null)
const cycleEndTime = ref(null)
const weekDays = ref([])
const cycleAdmin = ref(false)
const cycleCoerced = ref(false)
const minDate = ref(Number(new Date()))
const maxDate = ref(Number(4133951940000))
const currentIndex = ref(0)
@ -143,6 +179,12 @@
maxDate.value = Number(getFutureTimestamp())
})
const changeCycle = data => {
cycleStartTime.value = data.startDate
cycleEndTime.value = data.endDate
weekDays.value = data.weekDays
}
const getNextFullHour = () => {
const now = new Date()
const currentHour = now.getHours()
@ -176,7 +218,8 @@
const create = async type => {
if (
(type === 'temporary' && temporaryName.value === '') ||
(type === 'permanent' && permanentName.value === '')
(type === 'permanent' && permanentName.value === '') ||
(type === 'cycle' && cycleName.value === '')
) {
uni.showToast({
title: '名称不能为空',
@ -193,6 +236,14 @@
return
}
if (type === 'cycle' && weekDays.value.length === 0) {
uni.showToast({
title: '请选择有效期',
icon: 'none'
})
return
}
const netWork = await $basic.getNetworkType()
if (!netWork) {
return
@ -221,7 +272,7 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
} else if (type === 'temporary') {
params = {
...params,
fingerprintName: temporaryName.value,
@ -235,6 +286,20 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
params = {
...params,
fingerprintName: cycleName.value,
isAdmin: cycleAdmin.value ? 1 : 0,
isForce: cycleCoerced.value ? 1 : 0,
weekDays: weekDays.value,
fingerprintType: 4,
isRound: 1,
startDate: cycleStartTime.value,
endDate: cycleEndTime.value,
startTime: timeFormat(new Date(cycleStartTime.value), 'h:M'),
endTime: timeFormat(new Date(cycleEndTime.value), 'h:M')
}
}
const { code, message } = await checkFingerprintNameRequest({
@ -264,8 +329,10 @@
const changeName = (type, event) => {
if (type === 'permanent') {
permanentName.value = event
} else {
} else if (type === 'temporary') {
temporaryName.value = event
} else {
cycleName.value = event
}
}
@ -280,16 +347,20 @@
const changeAdmin = (type, event) => {
if (type === 'permanent') {
permanentAdmin.value = event.detail.value
} else {
} else if (type === 'temporary') {
temporaryAdmin.value = event.detail.value
} else {
cycleAdmin.value = event.detail.value
}
}
const changeCoerced = (type, event) => {
if (type === 'permanent') {
permanentCoerced.value = event.detail.value
} else {
} else if (type === 'temporary') {
temporaryCoerced.value = event.detail.value
} else {
cycleCoerced.value = event.detail.value
}
}

View File

@ -46,7 +46,7 @@
</view>
<view class="button" @click="create('permanent')">下一步</view>
</swiper-item>
<swiper-item :style="{ height: deviceInfo.windowHeight - 44 + 'px' }">
<swiper-item>
<LockInput
:value="temporaryName"
title="姓名"
@ -59,7 +59,6 @@
:value="temporaryStartTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryStartTime', $event)"
></LockDatetimePicker>
</view>
@ -69,7 +68,6 @@
:value="temporaryEndTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryEndTime', $event)"
></LockDatetimePicker>
</view>
@ -90,6 +88,34 @@
</view>
<view class="button" @click="create('temporary')">下一步</view>
</swiper-item>
<swiper-item>
<LockInput
:value="cycleName"
title="姓名"
placeholder="请输入"
@change-input="changeName('cycle', $event)"
></LockInput>
<view class="mt-3">
<LockCycle @change="changeCycle"></LockCycle>
</view>
<view class="mt-3">
<LockSwitch
:value="cycleAdmin"
title="是否为管理员"
@change="changeAdmin('cycle', $event)"
></LockSwitch>
</view>
<view class="mt-3 mb-3">
<LockSwitch
:value="cycleCoerced"
title="胁迫掌静脉"
@change="changeCoerced('cycle', $event)"
:placeholder="placeholder"
></LockSwitch>
</view>
<view class="button" @click="create('cycle')">下一步</view>
</swiper-item>
</swiper>
</view>
</template>
@ -101,6 +127,7 @@
import { useUserStore } from '@/stores/user'
import { useBluetoothStore } from '@/stores/bluetooth'
import { checkPalmVeinNameRequest } from '@/api/palmVein'
import { timeFormat } from 'uview-plus'
const instance = getCurrentInstance().proxy
const eventChannel = instance.getOpenerEventChannel()
@ -115,6 +142,9 @@
},
{
name: '限时'
},
{
name: '循环'
}
]
@ -128,6 +158,13 @@
const temporaryAdmin = ref(false)
const temporaryCoerced = ref(false)
const cycleName = ref('')
const cycleStartTime = ref(null)
const cycleEndTime = ref(null)
const weekDays = ref([])
const cycleAdmin = ref(false)
const cycleCoerced = ref(false)
const minDate = ref(Number(new Date()))
const maxDate = ref(Number(4133951940000))
const currentIndex = ref(0)
@ -143,6 +180,12 @@
maxDate.value = Number(getFutureTimestamp())
})
const changeCycle = data => {
cycleStartTime.value = data.startDate
cycleEndTime.value = data.endDate
weekDays.value = data.weekDays
}
const getNextFullHour = () => {
const now = new Date()
const currentHour = now.getHours()
@ -176,7 +219,8 @@
const create = async type => {
if (
(type === 'temporary' && temporaryName.value === '') ||
(type === 'permanent' && permanentName.value === '')
(type === 'permanent' && permanentName.value === '') ||
(type === 'cycle' && cycleName.value === '')
) {
uni.showToast({
title: '名称不能为空',
@ -193,6 +237,14 @@
return
}
if (type === 'cycle' && weekDays.value.length === 0) {
uni.showToast({
title: '请选择有效期',
icon: 'none'
})
return
}
const netWork = await $basic.getNetworkType()
if (!netWork) {
return
@ -221,7 +273,7 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
} else if (type === 'temporary') {
params = {
...params,
palmVeinName: temporaryName.value,
@ -235,6 +287,20 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
params = {
...params,
palmVeinName: cycleName.value,
isAdmin: cycleAdmin.value ? 1 : 0,
isForce: cycleCoerced.value ? 1 : 0,
weekDays: weekDays.value,
palmVeinType: 4,
isRound: 1,
startDate: cycleStartTime.value,
endDate: cycleEndTime.value,
startTime: timeFormat(new Date(cycleStartTime.value), 'h:M'),
endTime: timeFormat(new Date(cycleEndTime.value), 'h:M')
}
}
const { code, message } = await checkPalmVeinNameRequest({
@ -264,8 +330,10 @@
const changeName = (type, event) => {
if (type === 'permanent') {
permanentName.value = event
} else {
} else if (type === 'temporary') {
temporaryName.value = event
} else {
cycleName.value = event
}
}
@ -280,16 +348,20 @@
const changeAdmin = (type, event) => {
if (type === 'permanent') {
permanentAdmin.value = event.detail.value
} else {
} else if (type === 'temporary') {
temporaryAdmin.value = event.detail.value
} else {
cycleAdmin.value = event.detail.value
}
}
const changeCoerced = (type, event) => {
if (type === 'permanent') {
permanentCoerced.value = event.detail.value
} else {
} else if (type === 'temporary') {
temporaryCoerced.value = event.detail.value
} else {
cycleCoerced.value = event.detail.value
}
}

View File

@ -31,7 +31,7 @@
></LockInput>
<view class="button mt-5" @click="create('permanent')">下一步</view>
</swiper-item>
<swiper-item :style="{ height: deviceInfo.windowHeight - 44 + 'px' }">
<swiper-item>
<LockInput
:value="temporaryName"
title="姓名"
@ -44,7 +44,6 @@
:value="temporaryStartTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryStartTime', $event)"
></LockDatetimePicker>
</view>
@ -54,12 +53,24 @@
:value="temporaryEndTime"
:minDate="minDate"
:maxDate="maxDate"
type="datehour"
@change-time="changeDate('temporaryEndTime', $event)"
></LockDatetimePicker>
</view>
<view class="button mt-5" @click="create('temporary')">下一步</view>
</swiper-item>
<swiper-item>
<LockInput
:value="cycleName"
title="姓名"
placeholder="请输入"
@change-input="changeName('cycle', $event)"
></LockInput>
<view class="mt-3">
<LockCycle @change="changeCycle"></LockCycle>
</view>
<view class="button mt-5" @click="create('cycle')">下一步</view>
</swiper-item>
</swiper>
</view>
</template>
@ -67,6 +78,7 @@
<script setup>
import { getCurrentInstance, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { timeFormat } from 'uview-plus'
import { useBasicStore } from '@/stores/basic'
import { useUserStore } from '@/stores/user'
import { useBluetoothStore } from '@/stores/bluetooth'
@ -85,6 +97,9 @@
},
{
name: '限时'
},
{
name: '循环'
}
]
@ -94,6 +109,11 @@
const temporaryStartTime = ref(Number(new Date()))
const temporaryEndTime = ref(Number(new Date()))
const cycleName = ref('')
const cycleStartTime = ref(null)
const cycleEndTime = ref(null)
const weekDays = ref([])
const minDate = ref(Number(new Date()))
const maxDate = ref(Number(4133951940000))
const currentIndex = ref(0)
@ -107,6 +127,12 @@
maxDate.value = Number(getFutureTimestamp())
})
const changeCycle = data => {
cycleStartTime.value = data.startDate
cycleEndTime.value = data.endDate
weekDays.value = data.weekDays
}
const getNextFullHour = () => {
const now = new Date()
const currentHour = now.getHours()
@ -140,7 +166,8 @@
const create = async type => {
if (
(type === 'temporary' && temporaryName.value === '') ||
(type === 'permanent' && permanentName.value === '')
(type === 'permanent' && permanentName.value === '') ||
(type === 'cycle' && cycleName.value === '')
) {
uni.showToast({
title: '名称不能为空',
@ -157,6 +184,14 @@
return
}
if (type === 'cycle' && weekDays.value.length === 0) {
uni.showToast({
title: '请选择有效期',
icon: 'none'
})
return
}
const netWork = await $basic.getNetworkType()
if (!netWork) {
return
@ -183,7 +218,7 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
} else if (type === 'temporary') {
params = {
...params,
remoteName: temporaryName.value,
@ -195,6 +230,18 @@
startTime: '00:00',
endTime: '00:00'
}
} else {
params = {
...params,
remoteName: cycleName.value,
weekDays: weekDays.value,
remoteType: 4,
isRound: 1,
startDate: cycleStartTime.value,
endDate: cycleEndTime.value,
startTime: timeFormat(new Date(cycleStartTime.value), 'h:M'),
endTime: timeFormat(new Date(cycleEndTime.value), 'h:M')
}
}
const { code, message } = await checkRemoteNameRequest({
@ -224,8 +271,10 @@
const changeName = (type, event) => {
if (type === 'permanent') {
permanentName.value = event
} else {
} else if (type === 'temporary') {
temporaryName.value = event
} else {
cycleName.value = event
}
}