1
This commit is contained in:
383
scoring/pages/my/setting.vue
Normal file
383
scoring/pages/my/setting.vue
Normal file
@@ -0,0 +1,383 @@
|
||||
<template>
|
||||
<view class="setting-page">
|
||||
<view class="setting-content">
|
||||
<!-- 账户设置 -->
|
||||
<view class="setting-section">
|
||||
<view class="section-title">账户设置</view>
|
||||
<view class="setting-list">
|
||||
<view class="setting-item" @click="navigateToProfile">
|
||||
<view class="item-left">
|
||||
<text class="item-title">个人资料</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<text class="item-value">查看</text>
|
||||
<uni-icons type="right" size="24" color="#ccc"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="setting-item" @click="navigateToSecurity">
|
||||
<view class="item-left">
|
||||
<text class="item-title">账户安全</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<text class="item-value">设置</text>
|
||||
<uni-icons type="right" size="24" color="#ccc"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 应用设置 -->
|
||||
<view class="setting-section">
|
||||
<view class="section-title">应用设置</view>
|
||||
<view class="setting-list">
|
||||
<view class="setting-item" @click="toggleNotifications">
|
||||
<view class="item-left">
|
||||
<text class="item-title">消息通知</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<uni-switch
|
||||
:checked="notificationsEnabled"
|
||||
activeColor="#007aff"
|
||||
@change="toggleNotifications"
|
||||
></uni-switch>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="setting-item" @click="toggleDarkMode">
|
||||
<view class="item-left">
|
||||
<text class="item-title">深色模式</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<uni-switch
|
||||
:checked="darkModeEnabled"
|
||||
activeColor="#007aff"
|
||||
@change="toggleDarkMode"
|
||||
></uni-switch>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="setting-item" @click="clearCache">
|
||||
<view class="item-left">
|
||||
<text class="item-title">清除缓存</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<text class="item-value">{{cacheSize}}</text>
|
||||
<uni-icons type="right" size="24" color="#ccc"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 关于 -->
|
||||
<view class="setting-section">
|
||||
<view class="section-title">关于</view>
|
||||
<view class="setting-list">
|
||||
<view class="setting-item" @click="navigateToAbout">
|
||||
<view class="item-left">
|
||||
<text class="item-title">关于我们</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<text class="item-value">{{appVersion}}</text>
|
||||
<uni-icons type="right" size="24" color="#ccc"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="setting-item" @click="navigateToPrivacy">
|
||||
<view class="item-left">
|
||||
<text class="item-title">隐私政策</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<uni-icons type="right" size="24" color="#ccc"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="setting-item" @click="navigateToTerms">
|
||||
<view class="item-left">
|
||||
<text class="item-title">用户协议</text>
|
||||
</view>
|
||||
<view class="item-right">
|
||||
<uni-icons type="right" size="24" color="#ccc"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 退出登录 -->
|
||||
<view class="logout-section">
|
||||
<button class="logout-btn" @click="logout">退出登录</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
|
||||
// 响应式数据
|
||||
const notificationsEnabled = ref(true)
|
||||
const darkModeEnabled = ref(false)
|
||||
const cacheSize = ref('12.3MB')
|
||||
const appVersion = ref('1.0.0')
|
||||
|
||||
// 生命周期
|
||||
onMounted(() => {
|
||||
// 初始化时检查缓存大小等信息
|
||||
checkCacheSize()
|
||||
})
|
||||
|
||||
// 切换通知开关
|
||||
const toggleNotifications = (e) => {
|
||||
notificationsEnabled.value = e.detail.checked || !notificationsEnabled.value
|
||||
uni.showToast({
|
||||
title: notificationsEnabled.value ? '通知已开启' : '通知已关闭',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
// 切换深色模式
|
||||
const toggleDarkMode = (e) => {
|
||||
darkModeEnabled.value = e.detail.checked || !darkModeEnabled.value
|
||||
uni.showToast({
|
||||
title: darkModeEnabled.value ? '深色模式已开启' : '深色模式已关闭',
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
// 这里可以添加实际的深色模式切换逻辑
|
||||
// 例如:document.body.classList.toggle('dark-mode')
|
||||
}
|
||||
|
||||
// 检查缓存大小
|
||||
const checkCacheSize = () => {
|
||||
// 模拟获取缓存大小
|
||||
// 实际项目中可以调用uni.getStorageInfoSync()等API获取
|
||||
}
|
||||
|
||||
// 清除缓存
|
||||
const clearCache = () => {
|
||||
uni.showModal({
|
||||
title: '清除缓存',
|
||||
content: '确定要清除所有缓存数据吗?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
// 模拟清除缓存
|
||||
setTimeout(() => {
|
||||
cacheSize.value = '0KB'
|
||||
uni.showToast({
|
||||
title: '缓存清除成功',
|
||||
icon: 'success'
|
||||
})
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 导航到个人资料页面
|
||||
const navigateToProfile = () => {
|
||||
// 实际项目中添加导航逻辑
|
||||
uni.showToast({
|
||||
title: '跳转到个人资料页面',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
// 导航到账户安全页面
|
||||
const navigateToSecurity = () => {
|
||||
// 实际项目中添加导航逻辑
|
||||
uni.showToast({
|
||||
title: '跳转到账户安全页面',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
// 导航到关于页面
|
||||
const navigateToAbout = () => {
|
||||
// 实际项目中添加导航逻辑
|
||||
uni.showToast({
|
||||
title: '跳转到关于页面',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
// 导航到隐私政策页面
|
||||
const navigateToPrivacy = () => {
|
||||
// 实际项目中添加导航逻辑
|
||||
uni.showToast({
|
||||
title: '跳转到隐私政策页面',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
// 导航到用户协议页面
|
||||
const navigateToTerms = () => {
|
||||
// 实际项目中添加导航逻辑
|
||||
uni.showToast({
|
||||
title: '跳转到用户协议页面',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
// 退出登录
|
||||
const logout = () => {
|
||||
uni.showModal({
|
||||
title: '退出登录',
|
||||
content: '确定要退出登录吗?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
// 模拟退出登录
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: '已退出登录',
|
||||
icon: 'success'
|
||||
})
|
||||
// 实际项目中可以添加跳转到登录页面的逻辑
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.setting-page {
|
||||
background-color: #f5f5f5;
|
||||
min-height: 100vh;
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
/* 页面标题 */
|
||||
.page-title {
|
||||
font-size: 34rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
background-color: #fff;
|
||||
padding: 30rpx;
|
||||
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 内容区域 */
|
||||
.setting-content {
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
|
||||
/* 设置分组 */
|
||||
.setting-section {
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
/* 分组标题 */
|
||||
.section-title {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
padding: 0 30rpx 10rpx;
|
||||
}
|
||||
|
||||
/* 设置列表 */
|
||||
.setting-list {
|
||||
background-color: #fff;
|
||||
border-radius: 12rpx;
|
||||
margin: 0 30rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 设置项 */
|
||||
.setting-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 30rpx;
|
||||
position: relative;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.setting-item:active {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.setting-item:not(:last-child)::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 30rpx;
|
||||
right: 30rpx;
|
||||
height: 1rpx;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
/* 左侧内容 */
|
||||
.item-left {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* 图标容器 */
|
||||
.item-icon {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
border-radius: 12rpx;
|
||||
background-color: #f0f8ff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
/* 标题文本 */
|
||||
.item-title {
|
||||
font-size: 30rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
/* 右侧内容 */
|
||||
.item-right {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* 值文本 */
|
||||
.item-value {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
/* 退出登录区域 */
|
||||
.logout-section {
|
||||
padding: 40rpx 30rpx 0;
|
||||
}
|
||||
|
||||
/* 退出登录按钮 */
|
||||
.logout-btn {
|
||||
background-color: #fff;
|
||||
color: #ff3b30;
|
||||
border-radius: 80rpx;
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.logout-btn:active {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
/* 微信小程序特定样式优化 */
|
||||
/* #ifdef MP-WEIXIN */
|
||||
.setting-item {
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.item-icon {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.setting-list {
|
||||
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.03);
|
||||
}
|
||||
/* #endif */
|
||||
</style>
|
||||
Reference in New Issue
Block a user