商品浏览页构建前最后一次更新

This commit is contained in:
2026-08-02 00:21:54 +08:00
parent d37a93ab9e
commit e423ab2d73
146 changed files with 3449 additions and 1342 deletions
+21 -19
View File
@@ -1,10 +1,17 @@
import { View, Text, Image, Input, Button } from '@tarojs/components'
import Taro from '@tarojs/taro'
import { useState, useEffect } from 'react'
import { useState, useEffect, useCallback } from 'react'
import './index.scss'
import ThemeToggle from '../../components/ThemeToggle'
import { useThemeContext } from '../../context/ThemeContext'
import { getUserInfo, setUserInfo, clearUserInfo } from '../../utils/store'
import { getUserInfo, setUserInfo, clearUserInfo, getAddressList, getDefaultAddress, type AddressItem } from '../../utils/store'
const MENU = [
{ label: '个人信息', icon: '/icon/个人.png', action: (s: any) => s.setShowEdit(true) },
{ label: '账号管理', icon: '/icon/账号管理.png', action: () => Taro.navigateTo({ url: '/pages/userDatabase/index' }) },
{ label: '定制协议', icon: '/icon/定制协议.png', action: () => Taro.navigateTo({ url: '/pages/agreement/index' }) },
{ label: '关于我们', icon: '/icon/关于我们.png', action: () => Taro.showToast({ title: '智绘微刻 v1.0', icon: 'none' }) }
]
export default function SettingsPage() {
const { theme } = useThemeContext()
@@ -48,22 +55,15 @@ export default function SettingsPage() {
setEditAvatar(e.detail.avatarUrl || '')
}
const MENU = [
{ label: '个人信息', icon: '👤', action: () => setShowEdit(true) },
{ label: '账号管理', icon: '🆔', action: () => Taro.navigateTo({ url: '/pages/userDatabase/index' }) },
{ label: '定制协议', icon: '📋', action: () => Taro.navigateTo({ url: '/pages/agreement/index' }) },
{ label: '关于我们', icon: '️', action: () => Taro.showToast({ title: '智绘微刻 v1.0', icon: 'none' }) }
]
return (
<View className={`theme-${theme}`}>
<View className={`theme-${theme}`} style={{ minHeight: '100vh' }}>
<View className='settings-page'>
<ThemeToggle />
<View className='page-header dashed-card mt-20'>
<View className='star-badge' />
<View className='flex-between' style={{ width: '100%' }}>
<Text className='back-btn' onClick={() => Taro.navigateBack()}></Text>
<Text className='back-btn' onTap={() => Taro.navigateBack()}></Text>
<Text className='page-title'></Text>
<View style={{ width: '60px' }} />
</View>
@@ -71,12 +71,14 @@ export default function SettingsPage() {
{/* 用户卡片 */}
<View className='settings-user dashed-card mt-20'>
<View className='flex-between' onClick={() => setShowEdit(true)}>
<View className='flex-between' onTap={() => setShowEdit(true)}>
<View className='flex-center'>
{user.avatarUrl ? (
<Image className='settings-avatar' src={user.avatarUrl} mode='aspectFill' />
) : (
<View className='settings-avatar-placeholder'><Text>👤</Text></View>
<View className='settings-avatar-placeholder'>
<Image className='settings-avatar-icon' src='/icon/个人.png' mode='aspectFit' />
</View>
)}
<View style={{ marginLeft: '20px' }}>
<Text className='settings-name'>{user.nickName || '未登录'}</Text>
@@ -90,8 +92,8 @@ export default function SettingsPage() {
{/* 菜单列表 */}
<View className='settings-list dashed-card mt-20'>
{MENU.map((item, idx) => (
<View key={idx} className={`settings-item ${idx < MENU.length - 1 ? 'bordered' : ''}`} onClick={item.action}>
<Text className='settings-item-icon'>{item.icon}</Text>
<View key={idx} className={`settings-item ${idx < MENU.length - 1 ? 'bordered' : ''}`} onTap={() => item.action({ setShowEdit })}>
<Image className='settings-item-icon-img' src={item.icon} mode='aspectFit' />
<Text className='settings-item-label'>{item.label}</Text>
<Text className='arrow'></Text>
</View>
@@ -101,7 +103,7 @@ export default function SettingsPage() {
{/* 退出登录 */}
{user?.openid && (
<View className='mt-20'>
<View className='btn-outline logout-btn' onClick={handleLogout}>
<View className='btn-outline logout-btn' onTap={handleLogout}>
<Text>退</Text>
</View>
</View>
@@ -119,7 +121,7 @@ export default function SettingsPage() {
{editAvatar ? (
<Image className='avatar-img' src={editAvatar} mode='aspectFill' />
) : (
<Text className='avatar-placeholder'></Text>
<Image className='avatar-placeholder-img' src='/icon/个人.png' mode='aspectFit' />
)}
</Button>
<Input
@@ -129,10 +131,10 @@ export default function SettingsPage() {
onInput={(e: any) => setEditName(e.detail.value)}
/>
<View className='form-actions'>
<View className='btn-outline' onClick={() => setShowEdit(false)}>
<View className='btn-outline' onTap={() => setShowEdit(false)}>
<Text></Text>
</View>
<View className='btn-gradient' onClick={handleSaveInfo}>
<View className='btn-gradient' onTap={handleSaveInfo}>
<Text></Text>
</View>
</View>