wx-starlock/pages/setting/messageReminder.vue
2025-04-02 18:40:56 +08:00

141 lines
4.2 KiB
Vue

<template>
<view>
<view v-if="requestFinish">
<view
class="py-3 px-4 bg-white flex items-center justify-between text-base"
@click="toJump('openDoorNotice')"
>
<view class="item-title">开门通知</view>
<view><up-icon name="arrow-right"></up-icon></view>
</view>
<view
class="py-3 px-4 bg-white flex items-center justify-between text-base mt-4rpx"
@click="toJump('notOpenDoor')"
>
<view class="item-title">N天未开门</view>
<view class="flex items-center">
<view class="mr-2">{{
$bluetooth.currentLockNoticeSetting.dayNotOpenDoorState ? '已启用' : '未启用'
}}</view>
<up-icon name="arrow-right"></up-icon>
</view>
</view>
<view class="py-3 px-4 bg-white !py-2 flex items-center justify-between text-base mt-4rpx">
<view class="item-title">门未关好</view>
<switch
@click="
updateSetting(
'doorNotCloseState',
$bluetooth.currentLockNoticeSetting.doorNotCloseState ? 0 : 1
)
"
:checked="$bluetooth.currentLockNoticeSetting.doorNotCloseState"
class="transform-scale-90"
:disabled="true"
color="#002ce5"
/>
</view>
<view class="py-3 px-4 bg-white !py-2 flex items-center justify-between text-base mt-4rpx">
<view class="item-title">防拆报警</view>
<switch
@click="
updateSetting(
'tamperAlarmState',
$bluetooth.currentLockNoticeSetting.tamperAlarmState ? 0 : 1
)
"
:checked="$bluetooth.currentLockNoticeSetting.tamperAlarmState"
class="transform-scale-90"
:disabled="true"
color="#002ce5"
/>
</view>
<view
class="py-3 px-4 bg-white flex items-center justify-between text-base mt-4rpx"
@click="toJump('lowElecNotice')"
>
<view class="item-title">低电量提醒</view>
<view class="flex items-center">
<view class="mr-2">{{
$bluetooth.currentLockNoticeSetting.lowElecNoticeState ? '已启用' : '未启用'
}}</view>
<up-icon name="arrow-right"></up-icon>
</view>
</view>
<view
class="py-3 px-4 bg-white flex items-center justify-between text-base mt-4rpx"
@click="toJump('coercionOpenDoor')"
>
<view class="item-title">胁迫开门</view>
<view><up-icon name="arrow-right"></up-icon></view>
</view>
<view class="text-center text-sm mt-10">此模块功能需要锁联网后设置方可生效</view>
</view>
</view>
</template>
<script setup>
import { onMounted, ref } from 'vue'
import { getLockNoticeSettingRequest, updateLockNoticeSettingRequest } from '@/api/setting'
import { useBluetoothStore } from '@/stores/bluetooth'
import { useBasicStore } from '@/stores/basic'
const $bluetooth = useBluetoothStore()
const $basic = useBasicStore()
const requestFinish = ref(false)
const pending = ref(false)
onMounted(async () => {
const { code, data, message } = await getLockNoticeSettingRequest({
lockId: $bluetooth.currentLockInfo.lockId
})
if (code === 0) {
requestFinish.value = true
$bluetooth.updateCurrentLockNoticeSetting(data)
} else {
uni.showToast({
title: message,
icon: 'none'
})
}
})
const updateSetting = async (type, value) => {
if (pending.value) return
pending.value = true
uni.showLoading({
title: '更新中'
})
const { code, message } = await updateLockNoticeSettingRequest({
lockId: $bluetooth.currentLockInfo.lockId,
[type]: value
})
uni.hideLoading()
pending.value = false
if (code === 0) {
const info = $bluetooth.currentLockNoticeSetting
info[type] = value
$bluetooth.updateCurrentLockNoticeSetting(info)
} else {
uni.showToast({
title: message,
icon: 'none'
})
}
}
const toJump = name => {
$basic.routeJump({
name
})
}
</script>
<style lang="scss">
page {
background-color: $uni-bg-color-grey;
}
</style>