Browse Source

我的页面,及分包页面

master
DU 6 months ago
parent
commit
74aff07033
  1. 18
      src/app.config.ts
  2. BIN
      src/assets/big/user_bg.png
  3. BIN
      src/assets/icon/agreement.png
  4. BIN
      src/assets/icon/goods_cons.png
  5. BIN
      src/assets/icon/half_star.png
  6. BIN
      src/assets/icon/help_center.png
  7. BIN
      src/assets/icon/my_avatar.png
  8. BIN
      src/assets/icon/order_list.png
  9. BIN
      src/assets/icon/pole_storage.png
  10. BIN
      src/assets/icon/start.png
  11. BIN
      src/assets/icon/sun.png
  12. BIN
      src/assets/icon/unsettled_orders.png
  13. BIN
      src/assets/icon/user_edite.png
  14. BIN
      src/assets/icon/yue.png
  15. BIN
      src/assets/icon/zuan.png
  16. 232
      src/pages/user/index.scss
  17. 155
      src/pages/user/index.tsx
  18. 5
      src/pagesUser/accountBalance/index.config.ts
  19. 5
      src/pagesUser/accountBalance/index.scss
  20. 20
      src/pagesUser/accountBalance/index.tsx
  21. 5
      src/pagesUser/agreement/index.config.ts
  22. 5
      src/pagesUser/agreement/index.scss
  23. 20
      src/pagesUser/agreement/index.tsx
  24. 5
      src/pagesUser/editProfile/index.config.ts
  25. 5
      src/pagesUser/editProfile/index.scss
  26. 20
      src/pagesUser/editProfile/index.tsx
  27. 5
      src/pagesUser/goodsCons/index.config.ts
  28. 5
      src/pagesUser/goodsCons/index.scss
  29. 20
      src/pagesUser/goodsCons/index.tsx
  30. 5
      src/pagesUser/helpCenter/index.config.ts
  31. 5
      src/pagesUser/helpCenter/index.scss
  32. 20
      src/pagesUser/helpCenter/index.tsx
  33. 5
      src/pagesUser/orderList/index.config.ts
  34. 5
      src/pagesUser/orderList/index.scss
  35. 20
      src/pagesUser/orderList/index.tsx
  36. 5
      src/pagesUser/poleStorage/index.config.ts
  37. 5
      src/pagesUser/poleStorage/index.scss
  38. 20
      src/pagesUser/poleStorage/index.tsx
  39. 5
      src/pagesUser/unsettledOrders/index.config.ts
  40. 5
      src/pagesUser/unsettledOrders/index.scss
  41. 20
      src/pagesUser/unsettledOrders/index.tsx

18
src/app.config.ts

@ -15,6 +15,20 @@ export default defineAppConfig({
pages: [ pages: [
'mapStore/index', // 地图找店页面 'mapStore/index', // 地图找店页面
] ]
},
{
root: 'pagesUser',
name: 'user-package',
pages: [
'poleStorage/index', // 存杆柜记录
'orderList/index', // 订单记录
'unsettledOrders/index', // 未结算账单
'goodsCons/index', // 商品消费
'helpCenter/index', // 帮助中心
'agreement/index', // 协议
'editProfile/index', // 编辑资料
'accountBalance/index', // 账户余额
]
} }
], ],
// 分包预下载规则 // 分包预下载规则
@ -22,6 +36,10 @@ export default defineAppConfig({
'pages/store/index': { 'pages/store/index': {
network: 'all', network: 'all',
packages: ['store-package'] packages: ['store-package']
},
'pages/user/index': {
network: 'all',
packages: ['user-package']
} }
}, },
window: { window: {

BIN
src/assets/big/user_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

BIN
src/assets/icon/agreement.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
src/assets/icon/goods_cons.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
src/assets/icon/half_star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
src/assets/icon/help_center.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
src/assets/icon/my_avatar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

BIN
src/assets/icon/order_list.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
src/assets/icon/pole_storage.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
src/assets/icon/start.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
src/assets/icon/sun.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
src/assets/icon/unsettled_orders.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
src/assets/icon/user_edite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
src/assets/icon/yue.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
src/assets/icon/zuan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

232
src/pages/user/index.scss

@ -2,55 +2,207 @@
min-height: 100vh; min-height: 100vh;
background-color: #121212; background-color: #121212;
.header { // 上部分背景图和用户信息
padding: 60px 32px; .user-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); height: 520px;
text-align: center; background-size: cover;
background-position: center;
.avatar { background-repeat: no-repeat;
width: 120px; position: relative;
height: 120px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
margin: 0 auto 20px;
display: flex;
align-items: center;
justify-content: center;
.avatar-text { .user-content {
font-size: 48px; padding: 0 30px;
color: #fff; height: 100%;
font-weight: bold;
} // 用户信息模块
} .user-info {
padding-top: 180px;
// 上半部分头像名称编辑按钮
.user-profile {
display: flex;
align-items: flex-start;
// 头像包裹器
.avatar-wrapper {
width: 125px;
height: 125px;
margin-right: 40px;
flex-shrink: 0;
.avatar {
width: 100%;
height: 100%;
display: block;
}
:global {
.taroify-image {
width: 100%;
height: 100%;
display: block;
}
.taroify-image__img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
// 右侧信息
.profile-right {
flex: 1;
min-width: 0; // 关键确保flex子元素可以收缩
// 用户名称和编辑按钮
.name-row {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 30px;
.name-edit-wrapper {
display: flex;
align-items: center;
flex: 1;
min-width: 0; // 关键确保内容可以收缩
.username {
font-weight: 400;
font-size: 33rpx;
color: #FFFFFF;
white-space: nowrap; // 不换行
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
.edit-icon {
width: 30px;
height: 30px;
margin-left: 25px;
flex-shrink: 0;
}
}
.vip-badge {
margin-left: 20px;
padding: 5px 20px;
background: linear-gradient(90deg, #FFD700, #FFA500);
border-radius: 20px;
font-size: 25rpx;
font-weight: bold;
color: #000;
flex-shrink: 0;
}
}
.nickname { // 成长值
font-size: 32px; .growth-row {
color: #fff; display: flex;
font-weight: 500; align-items: center;
.growth-label {
font-size: 25rpx;
color: #999999;
margin-right: 10px;
flex-shrink: 0;
}
.growth-icon {
width: 30px;
height: 30px;
margin-right: 10px;
flex-shrink: 0;
}
}
}
}
// 下半部分账户余额积分优惠券
.user-stats {
margin-top: 40px;
display: flex;
justify-content: space-between;
align-items: center;
.stat-item {
width: 217rpx;
height: 142rpx;
background: linear-gradient(180deg, #282832, #0E0D0D);
border-radius: 13rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.stat-value {
display: flex;
align-items: baseline;
.stat-symbol,
.stat-unit {
font-size: 25px;
color: #FFFFFF;
}
.stat-number {
font-size: 40rpx;
color: #FFFFFF;
font-weight: 500;
}
}
.stat-label {
margin-top: 27px;
font-size: 25rpx;
color: #B8B8B8;
}
}
}
}
} }
} }
.content { // 下部分其他服务
padding: 32px; .service-section {
background-color: #121212;
padding: 33px 30px 0;
border-radius: 16px 16px 0 0;
.section-title {
font-weight: bold;
font-size: 31rpx;
color: #999999;
display: block;
margin-bottom: 30px;
}
.info-card { .service-grid {
background: #fff;
border-radius: 16px;
padding: 32px;
display: flex; display: flex;
justify-content: space-between; flex-wrap: wrap;
align-items: center; justify-content: flex-start;
.label { .service-item {
font-size: 28px; width: 25%;
color: #666; display: flex;
} flex-direction: column;
align-items: center;
margin-bottom: 50px;
.service-icon {
width: 90px;
height: 90px;
margin-bottom: 25px;
}
.value { .service-title {
font-size: 36px; font-size: 30px;
font-weight: bold; color: #FFFFFF;
color: #667eea; text-align: center;
}
} }
} }
} }

155
src/pages/user/index.tsx

@ -1,34 +1,161 @@
/** /**
* *
*/ */
import { View, Text } from '@tarojs/components' import { View, Text, Image } from '@tarojs/components'
import { useLoad } from '@tarojs/taro' import { useLoad } from '@tarojs/taro'
import Taro from '@tarojs/taro'
import { observer } from 'mobx-react' import { observer } from 'mobx-react'
import { Image as TaroifyImage } from '@taroify/core'
import { userStore } from '../../store' import { userStore } from '../../store'
import './index.scss' import './index.scss'
// 导入图片
import userBg from '../../assets/big/user_bg.png'
import userEdite from '../../assets/icon/user_edite.png'
import zuanIcon from '../../assets/icon/zuan.png'
import sunIcon from '../../assets/icon/sun.png'
import yueIcon from '../../assets/icon/yue.png'
import startIcon from '../../assets/icon/start.png'
import poleStorageIcon from '../../assets/icon/pole_storage.png'
import orderListIcon from '../../assets/icon/order_list.png'
import unsettledOrdersIcon from '../../assets/icon/unsettled_orders.png'
import goodsConsIcon from '../../assets/icon/goods_cons.png'
import helpCenterIcon from '../../assets/icon/help_center.png'
import agreementIcon from '../../assets/icon/agreement.png';
import myAvatar from '../../assets/icon/my_avatar.png';
const UserIndex = observer(() => { const UserIndex = observer(() => {
useLoad(() => { useLoad(() => {
console.log('个人中心页面加载') console.log('个人中心页面加载')
}) })
// 成长值图标映射(根据实际业务逻辑调整)
const growthIcons = [zuanIcon, sunIcon, yueIcon, startIcon]
// 服务项配置
const serviceItems = [
{ icon: poleStorageIcon, title: '存杆柜记录', path: '/pagesUser/poleStorage/index' },
{ icon: orderListIcon, title: '订单记录', path: '/pagesUser/orderList/index' },
{ icon: unsettledOrdersIcon, title: '未结算账单', path: '/pagesUser/unsettledOrders/index' },
{ icon: goodsConsIcon, title: '商品消费', path: '/pagesUser/goodsCons/index' },
{ icon: helpCenterIcon, title: '帮助中心', path: '/pagesUser/helpCenter/index' },
{ icon: agreementIcon, title: '协议', path: '/pagesUser/agreement/index' },
]
// 点击编辑
const handleEdit = () => {
Taro.navigateTo({
url: '/pagesUser/editProfile/index'
})
}
// 点击账户余额
const handleBalanceClick = () => {
Taro.navigateTo({
url: '/pagesUser/accountBalance/index'
})
}
// 点击服务项
const handleServiceClick = (path: string) => {
Taro.navigateTo({
url: path
})
}
return ( return (
<View className="user-page"> <View className="user-page">
<View className="header"> {/* 上部分:背景图和用户信息 */}
<View className="avatar"> <View className="user-header" style={{ backgroundImage: `url(${userBg})` }}>
<Text className="avatar-text"> <View className="user-content">
{userStore.userInfo?.nickname?.[0] || '未'} {/* 用户信息模块 */}
</Text> <View className="user-info">
{/* 上半部分:头像、名称、编辑按钮 */}
<View className="user-profile">
{/* 头像 */}
<View className="avatar-wrapper">
<TaroifyImage
className="avatar"
src={userStore.userInfo?.avatar || myAvatar}
round
mode="aspectFill"
/>
</View>
{/* 右侧信息 */}
<View className="profile-right">
{/* 用户名称和编辑按钮 */}
<View className="name-row">
<View className="name-edit-wrapper">
<Text className="username">{userStore.userInfo?.nickname || '旋转跳跃的球圣'}</Text>
<Image
className="edit-icon"
src={userEdite}
onClick={handleEdit}
/>
</View>
<View className="vip-badge">VIP</View>
</View>
{/* 成长值 */}
<View className="growth-row">
<Text className="growth-label"></Text>
{growthIcons.map((icon, index) => (
<Image
key={index}
className="growth-icon"
src={icon}
/>
))}
</View>
</View>
</View>
{/* 下半部分:账户余额、积分、优惠券 */}
<View className="user-stats">
<View className="stat-item" onClick={handleBalanceClick}>
<View className="stat-value">
<Text className="stat-symbol">¥</Text>
<Text className="stat-number">{userStore.balance.toFixed(2)}</Text>
</View>
<Text className="stat-label"></Text>
</View>
<View className="stat-item">
<View className="stat-value">
<Text className="stat-number">1000</Text>
<Text className="stat-unit"></Text>
</View>
<Text className="stat-label"></Text>
</View>
<View className="stat-item">
<View className="stat-value">
<Text className="stat-number">6</Text>
<Text className="stat-unit"></Text>
</View>
<Text className="stat-label"></Text>
</View>
</View>
</View>
</View> </View>
<Text className="nickname">
{userStore.userInfo?.nickname || '未登录'}
</Text>
</View> </View>
<View className="content"> {/* 下部分:其他服务 */}
<View className="info-card"> <View className="service-section">
<Text className="label"></Text> <Text className="section-title"></Text>
<Text className="value">¥ {userStore.balance.toFixed(2)}</Text>
<View className="service-grid">
{serviceItems.map((item, index) => (
<View
key={index}
className="service-item"
onClick={() => handleServiceClick(item.path)}
>
<Image className="service-icon" src={item.icon} />
<Text className="service-title">{item.title}</Text>
</View>
))}
</View> </View>
</View> </View>
</View> </View>

5
src/pagesUser/accountBalance/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '账户余额',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/accountBalance/index.scss

@ -0,0 +1,5 @@
.account-balance-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/accountBalance/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const AccountBalance = () => {
useLoad(() => {
console.log('账户余额详情页面加载')
})
return (
<View className="account-balance-page">
<Text></Text>
</View>
)
}
export default AccountBalance

5
src/pagesUser/agreement/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '用户协议',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/agreement/index.scss

@ -0,0 +1,5 @@
.agreement-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/agreement/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const Agreement = () => {
useLoad(() => {
console.log('协议页面加载')
})
return (
<View className="agreement-page">
<Text></Text>
</View>
)
}
export default Agreement

5
src/pagesUser/editProfile/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '编辑资料',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/editProfile/index.scss

@ -0,0 +1,5 @@
.edit-profile-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/editProfile/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const EditProfile = () => {
useLoad(() => {
console.log('编辑个人信息页面加载')
})
return (
<View className="edit-profile-page">
<Text></Text>
</View>
)
}
export default EditProfile

5
src/pagesUser/goodsCons/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '商品消费',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/goodsCons/index.scss

@ -0,0 +1,5 @@
.goods-cons-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/goodsCons/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const GoodsCons = () => {
useLoad(() => {
console.log('商品消费页面加载')
})
return (
<View className="goods-cons-page">
<Text></Text>
</View>
)
}
export default GoodsCons

5
src/pagesUser/helpCenter/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '帮助中心',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/helpCenter/index.scss

@ -0,0 +1,5 @@
.help-center-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/helpCenter/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const HelpCenter = () => {
useLoad(() => {
console.log('帮助中心页面加载')
})
return (
<View className="help-center-page">
<Text></Text>
</View>
)
}
export default HelpCenter

5
src/pagesUser/orderList/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '订单记录',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/orderList/index.scss

@ -0,0 +1,5 @@
.order-list-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/orderList/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const OrderList = () => {
useLoad(() => {
console.log('订单记录页面加载')
})
return (
<View className="order-list-page">
<Text></Text>
</View>
)
}
export default OrderList

5
src/pagesUser/poleStorage/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '存杆柜记录',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/poleStorage/index.scss

@ -0,0 +1,5 @@
.pole-storage-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/poleStorage/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const PoleStorage = () => {
useLoad(() => {
console.log('存杆柜记录页面加载')
})
return (
<View className="pole-storage-page">
<Text></Text>
</View>
)
}
export default PoleStorage

5
src/pagesUser/unsettledOrders/index.config.ts

@ -0,0 +1,5 @@
export default {
navigationBarTitleText: '未结算账单',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
}

5
src/pagesUser/unsettledOrders/index.scss

@ -0,0 +1,5 @@
.unsettled-orders-page {
min-height: 100vh;
background-color: #F2F3F5;
padding: 30px;
}

20
src/pagesUser/unsettledOrders/index.tsx

@ -0,0 +1,20 @@
/**
*
*/
import { View, Text } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'
const UnsettledOrders = () => {
useLoad(() => {
console.log('未结算账单页面加载')
})
return (
<View className="unsettled-orders-page">
<Text></Text>
</View>
)
}
export default UnsettledOrders
Loading…
Cancel
Save