wx-starlock/pages/setting/catEyeMode.vue
2025-07-29 11:07:43 +08:00

388 lines
13 KiB
Vue
Raw 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.

<template>
<view>
<view
@click="updateCatEyeConfig(0)"
class="flex items-center bg-#ececec py-4 pr-2 pl-1 mx-3 my-6 rounded-2xl"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 0
? 'bg-#d9e8fd'
: 'bg-#ececec'
]"
>
<view class="w-80 h-full flex items-center justify-center">
<up-icon
v-if="
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 0
"
name="checkbox-mark"
color="#2a85ec"
size="40rpx"
></up-icon>
</view>
<view class="flex-1">
<view
class="text-lg font-bold"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 0
? 'text-#2a85ec'
: 'text-black'
]"
>{{ catEyeMode[0].name }}</view
>
<view
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 0
? 'text-#2a85ec'
: 'text-gray-500'
]"
>
<view class="text-sm"> 适合门口较为安全的环境。</view>
<view class="text-sm">仅发生特定事件才录像,并可查看实时画面。</view>
<view class="text-sm">一般情况下满电可使用7-8个月</view></view
>
</view>
<view
@click.stop="updateType(0)"
class="text-gray-500 border-2 border-solid border-gray-500 py-1 px-1 text-sm rounded-3xl w-80 ml-1 text-center"
>
查看
</view>
</view>
<view
@click="updateCatEyeConfig(1)"
class="flex items-center bg-#ececec py-4 pr-2 pl-1 mx-3 my-6 rounded-2xl"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 1
? 'bg-#d9e8fd'
: 'bg-#ececec'
]"
>
<view class="w-80 h-full flex items-center justify-center">
<up-icon
v-if="
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 1
"
name="checkbox-mark"
color="#2a85ec"
size="40rpx"
></up-icon>
</view>
<view class="flex-1">
<view
class="text-lg font-bold"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 1
? 'text-#2a85ec'
: 'text-black'
]"
>
{{ catEyeMode[1].name }}</view
>
<view
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 1
? 'text-#2a85ec'
: 'text-gray-500'
]"
>
<view class="text-sm"> 有人逗留或发生特定事件才录像,可随时查看实时画面。</view>
<view class="text-sm">一般情况下满电可使用5~6个月。</view></view
>
</view>
<view
@click.stop="updateType(1)"
class="text-gray-500 border-2 border-solid border-gray-500 py-1 px-1 text-sm rounded-3xl w-80 ml-1 text-center"
>
查看
</view>
</view>
<view
@click="updateCatEyeConfig(2)"
class="flex items-center bg-#ececec py-4 pr-2 pl-1 mx-3 my-6 rounded-2xl"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 2
? 'bg-#d9e8fd'
: 'bg-#ececec'
]"
>
<view class="w-80 h-full flex items-center justify-center">
<up-icon
v-if="
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 2
"
name="checkbox-mark"
color="#2a85ec"
size="40rpx"
></up-icon>
</view>
<view class="flex-1">
<view
class="text-lg font-bold"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 2
? 'text-#2a85ec'
: 'text-black'
]"
>{{ catEyeMode[2].name }}</view
>
<view
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 2
? 'text-#2a85ec'
: 'text-gray-500'
]"
>
<view class="text-sm"> 适合门口人员复杂、较不安全的环境。</view>
<view class="text-sm">有人出现就录像,可随时查看实时画面。</view>
<view class="text-sm">一般情况下满电可使用2~4个月。</view></view
>
</view>
<view
@click.stop="updateType(2)"
class="text-gray-500 border-2 border-solid border-gray-500 py-1 px-1 text-sm rounded-3xl w-80 ml-1 text-center"
>
查看
</view>
</view>
<view
@click="updateCatEyeConfig(3)"
class="flex items-center bg-#ececec py-4 pr-2 pl-1 mx-3 my-6 rounded-2xl"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 3
? 'bg-#d9e8fd'
: 'bg-#ececec'
]"
>
<view class="w-80 h-full flex items-center justify-center">
<up-icon
v-if="
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 3
"
name="checkbox-mark"
color="#2a85ec"
size="40rpx"
></up-icon>
</view>
<view class="flex-1">
<view
class="text-lg font-bold"
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 3
? 'text-#2a85ec'
: 'text-black'
]"
>{{ catEyeMode[3].name }}</view
>
<view
:class="[
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 3
? 'text-#2a85ec'
: 'text-gray-500'
]"
>
<view class="text-sm"> 根据您家门口实际情况设置录像和实时画面功能。</view>
<view class="text-sm">可使用时长由具体设置决定。</view>
</view>
</view>
<view
@click.stop="toCustom"
class="text-gray-500 border-2 border-solid border-gray-500 py-1 px-1 text-sm rounded-3xl w-80 ml-1 text-center"
>
设置
</view>
</view>
<up-popup
round="32"
:show="show"
@close="show = false"
mode="bottom"
:closeOnClickOverlay="true"
:safeAreaInsetBottom="false"
bgColor="transparent"
>
<view
class="bg-white text-lg font-bold rounded-t-2xl pb-[calc(env(safe-area-inset-bottom)+20rpx)]"
>
<view class="py-3 text-center text-xl">{{ catEyeMode[type].name }}</view>
<view class="flex items-center justify-between mx-4 my-6">
<view>录像时机</view>
<view class="text-sm text-gray-500 max-w-250rpx">{{ catEyeMode[type].text1 }}</view>
</view>
<view class="flex items-center justify-between mx-4 my-6">
<view>有人出现时录像</view>
<view class="text-sm text-gray-500 max-w-250rpx">{{ catEyeMode[type].text2 }}</view>
</view>
<view class="flex items-center justify-between mx-4 my-6">
<view>人体侦测距离</view>
<view class="text-sm text-gray-500 max-w-250rpx">{{ catEyeMode[type].text3 }}</view>
</view>
<view class="flex items-center justify-between mx-4 my-6">
<view>查看实时画面</view>
<view class="text-sm text-gray-500 max-w-250rpx">{{ catEyeMode[type].text4 }}</view>
</view>
<view
@click="show = false"
class="w-686 mx-4 text-center h-88 line-height-88rpx mt-5 text-white bg-#4777ee rounded-44rpx"
>我知道了</view
>
</view>
</up-popup>
</view>
</template>
<script setup>
import { computed, getCurrentInstance, ref } from 'vue'
import { useBluetoothStore } from '@/stores/bluetooth'
import { catEyeMode } from '@/constant/catEyeMode'
import { useBasicStore } from '@/stores/basic'
const instance = getCurrentInstance().proxy
const eventChannel = instance.getOpenerEventChannel()
const $bluetooth = useBluetoothStore()
const $basic = useBasicStore()
const show = ref(false)
const value = computed(() => {
const list = []
if ($bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0]) {
list.push($bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode)
if ($bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === 4) {
if (
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.recordStartTime === 0 &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.recordEndTime === 1440
) {
list.push(1)
} else {
list.push(0)
}
list.push(
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.recordStartTime / 256
)
list.push(
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.recordStartTime % 256
)
list.push(
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.recordEndTime / 256
)
list.push(
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.recordEndTime % 256
)
list.push(
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig.recordTime
? $bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.recordTime
: 0
)
list.push(
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.detectionDistance
? $bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.detectionDistance
: 0
)
list.push(
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
.realTimeMode
)
} else {
list.push(...[0, 0, 0, 0, 0, 0, 0, 0])
}
} else {
list.push(...[0, 0, 0, 0, 0, 0, 0, 0, 0])
}
list.push($bluetooth.currentLockSetting.lockSettingInfo.autoLightScreen)
list.push($bluetooth.currentLockSetting.lockSettingInfo.autoLightScreenTime)
list.push($bluetooth.currentLockSetting.lockSettingInfo.stayWarn)
list.push($bluetooth.currentLockSetting.lockSettingInfo.abnormalWarn)
return list
})
const type = ref(0)
const updateType = index => {
type.value = index
show.value = true
}
const toCustom = () => {
if (
!$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] ||
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode !== 3
) {
uni.showToast({
title: '请先选择自定义模式',
icon: 'none'
})
return
}
$basic.routeJump({
name: 'customCatEye',
events: {
update: data => {
eventChannel.emit('update', data)
}
}
})
}
const updateCatEyeConfig = index => {
if (
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0] &&
$bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeMode === index
) {
return
}
let array = value.value
array[0] = index
eventChannel.emit('update', {
value: array,
type: 'catEyeConfig',
params: [
{
catEyeMode: index,
catEyeModeConfig: $bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0]
? $bluetooth.currentLockSetting.lockSettingInfo.catEyeConfig[0].catEyeModeConfig
: {
recordMode: 0,
recordStartTime: 0,
recordEndTime: 0,
recordTime: 0,
detectionDistance: 0,
realTimeMode: 0
}
}
]
})
}
</script>
<style lang="scss">
page {
background-color: $uni-bg-color-grey;
}
</style>