add banbanmini

This commit is contained in:
HycJack
2026-03-24 13:15:03 +08:00
parent 42567b7605
commit 0d0f995dc2
59 changed files with 26319 additions and 0 deletions

View File

@@ -0,0 +1,142 @@
import { View, Text, Image } from '@tarojs/components'
import { useState } from 'react'
import Taro from '@tarojs/taro'
import './index.scss'
interface UserInfo {
name: string
role: string
isVerified: boolean
avatar: string
}
interface MenuItem {
icon: string
name: string
value: string
arrow?: boolean
}
export default function Sleep() {
const [user] = useState<UserInfo>({
name: '微信家长',
role: '管理员身份',
isVerified: true,
avatar: '👤'
})
const menuItems = [
{
icon: require('../../assets/tab-icons/orange-robot.png'),
iconBgClass: 'orange',
name: '儿童资料 (用于称呼)',
value: '小夏 (6岁)',
arrow: true
},
{
icon: require('../../assets/tab-icons/rings.png'),
iconBgClass: 'green',
name: '绑定新设备',
value: '',
arrow: true
},
{
icon: require('../../assets/tab-icons/broken-rings.png'),
iconBgClass: 'red',
name: '解除设备绑定',
value: '',
arrow: true
}
]
const handleMenuClick = (item: MenuItem) => {
if (item.name === '绑定新设备') {
// 跳转到绑定设备页面
Taro.navigateTo({ url: '/pages/bind/index' })
} else if (item.name === '解除设备绑定') {
Taro.showModal({
title: '解除设备绑定',
content: '确定要解除当前设备的绑定吗?解除后需要重新扫码绑定。',
confirmColor: '#FF8C42',
success: (res) => {
if (res.confirm) {
// 清除设备信息
Taro.removeStorageSync('hasDevice')
Taro.removeStorageSync('deviceInfo')
Taro.showToast({
title: '已解除绑定',
icon: 'success',
duration: 1500,
complete: () => {
setTimeout(() => {
Taro.redirectTo({ url: '/pages/bind/index' })
}, 500)
}
})
}
}
})
} else {
Taro.showToast({
title: `点击了 ${item.name}`,
icon: 'none'
})
}
}
return (
<View className='manage-page'>
<View className='page-header'>
<Text className='page-title'></Text>
</View>
<View className='user-card'>
<View className='user-avatar'>
<Text className='avatar-img'>{user.avatar}</Text>
</View>
<View className='user-info'>
<Text className='user-name'>{user.name}</Text>
<Text className='user-role'>{user.role}</Text>
</View>
{user.isVerified && (
<View className='verified-badge'>
<Text></Text>
</View>
)}
</View>
<View className='menu-card'>
{menuItems.map((item, index) => (
<View key={index}>
<View className='menu-item' onClick={() => handleMenuClick(item)}>
<View className='menu-left'>
<View className={`icon-bg ${item.iconBgClass}`}>
<Image
className='control-icon-img'
src={item.icon}
mode='aspectFit'
/>
</View>
<Text className='menu-name'>{item.name}</Text>
</View>
<View className='menu-right'>
{item.value && (
<Text className='menu-value'>{item.value}</Text>
)}
{item.arrow && <Text className='arrow'></Text>}
</View>
</View>
{index < menuItems.length - 1 && (
<View className='divider'></View>
)}
</View>
))}
</View>
<View className='version-info'>
<Text className='version-text'> Companion V1.1.0</Text>
</View>
</View>
)
}