From b7d451c91ec40bee70f23b1e2cf6a8797643faef Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期六, 25 四月 2026 15:18:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
small-program/shop/pages/mine/mine.vue | 391 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 376 insertions(+), 15 deletions(-)
diff --git a/small-program/shop/pages/mine/mine.vue b/small-program/shop/pages/mine/mine.vue
index 45877d2..90ef1eb 100644
--- a/small-program/shop/pages/mine/mine.vue
+++ b/small-program/shop/pages/mine/mine.vue
@@ -1,13 +1,69 @@
<template>
<view class="shop-mine-page">
- <view class="nav-bar" :style="{ paddingTop: statusbarHeight + 'px' }">
- <view class="nav-content">
- <text class="nav-title">鎴戠殑</text>
+ <view class="page-header">
+ <view class="custom-nav">
+ <view :style="{ height: statusbarHeight + 'px' }"></view>
+ <view class="nav-content" :style="{ height: navHeight + 'px' }">
+ <view class="logout-btn" @click="handleLogout">鐧诲嚭</view>
+ <view class="nav-actions">
+ <image class="nav-action-icon" :src="navActionIcon" mode="aspectFit"></image>
+ </view>
+ </view>
+ </view>
+
+ <view :style="{ height: statusbarHeight + navHeight + 'px' }"></view>
+
+ <view class="profile-section">
+ <view class="profile-main">
+ <view class="profile-left">
+ <image class="store-avatar" :src="storeAvatar" mode="aspectFill"></image>
+ <view class="profile-info">
+ <text class="store-name">{{ shopDisplayName }}</text>
+ <view class="profile-meta-row">
+ <text class="manager-name">{{ managerName }}</text>
+ <view class="identity-tag enterprise-tag">浼佷笟</view>
+ <view class="identity-tag personal-tag">涓汉</view>
+ </view>
+ </view>
+ </view>
+ <image class="setting-icon" src="/static/icon/ic_option@2x.png" mode="aspectFit" @click="junp"></image>
+ </view>
</view>
</view>
- <view class="page-content">
- <text>闂ㄥ簵鎴戠殑椤甸潰</text>
+
+ <view class="page-body">
+ <!-- <view class="card order-card">
+ <view class="card-header">
+ <text class="card-title">璁㈠崟绠$悊</text>
+ <view class="header-link" @click="goAllOrders">
+ <text>鍏ㄩ儴璁㈠崟</text>
+ <text class="header-arrow">></text>
+ </view>
+ </view>
+
+ <view class="order-grid">
+ <view class="order-item" v-for="item in orderMenus" :key="item.title" @click="handleOrderClick(item)">
+ <view class="order-icon-wrap">
+ <image class="order-icon" :src="item.icon" mode="aspectFit"></image>
+ <view v-if="item.badge" class="order-badge">{{ item.badge }}</view>
+ </view>
+ <text class="order-title">{{ item.title }}</text>
+ </view>
+ </view>
+ </view> -->
+
+ <view class="banner-card">
+ <image class="banner-image" src="/static/image/share@2x.png" mode="widthFix"></image>
+ </view>
+
+ <view class="card menu-card">
+ <view class="menu-item" v-for="item in menuList" :key="item.title" @click="handleMenuClick(item)">
+ <text class="menu-title">{{ item.title }}</text>
+ <image src="/static/icon/ar_map@2x.png" mode="widthFix" class="menu-arrow"></image>
+ </view>
+ </view>
</view>
+
<custom-tabbar></custom-tabbar>
</view>
</template>
@@ -20,8 +76,77 @@
components: {
CustomTabbar
},
+ data() {
+ return {
+ navActionIcon: '',
+ settingIcon: '',
+ storeAvatar: '',
+ bannerImage: '',
+ orderMenus: [
+ { title: '寰呮牳楠�', badge: 12, icon: '/static/icon/mine_ic_daifukuan@2x.png', url: '/shop/pages/write-off/write-off' },
+ { title: '寰呮敹璐�', badge: 2, icon: '/static/icon/mine_ic_daishouhuo@2x.png', url: '' },
+ { title: '閫�娆�/鍞悗', badge: '', icon: '/static/icon/mine_ic_tuikuan@2x.png', url: '' }
+ ],
+ menuList: [
+ { title: '瑙勮寖椤荤煡', url: '' },
+ { title: '鍦ㄧ嚎瀹㈡湇', url: '' },
+ { title: '鍏充簬鎴戜滑', url: '' }
+ ]
+ }
+ },
computed: {
- ...mapState(['statusbarHeight'])
+ ...mapState(['navHeight', 'statusbarHeight', 'shopInfo']),
+ shopDisplayName() {
+ return this.shopInfo.shopName || '涓搧蹇繍鍗楃珯鏃楄埌搴�'
+ },
+ managerName() {
+ return this.shopInfo.contactName || this.shopInfo.managerName || '钄″瓙鐟�'
+ }
+ },
+ methods: {
+ junp() {
+ uni.navigateTo({
+ url: '/shop/pages/settings/settings'
+ })
+ },
+ handleLogout() {
+ uni.showToast({
+ title: '璇锋帴鍏ョ櫥鍑洪�昏緫',
+ icon: 'none'
+ })
+ },
+ goAllOrders() {
+ uni.showToast({
+ title: '璇锋帴鍏ヨ鍗曞垪琛�',
+ icon: 'none'
+ })
+ },
+ handleOrderClick(item) {
+ if (!item.url) {
+ uni.showToast({
+ title: '璇疯ˉ鍏呰烦杞摼鎺�',
+ icon: 'none'
+ })
+ return
+ }
+
+ uni.navigateTo({
+ url: item.url
+ })
+ },
+ handleMenuClick(item) {
+ if (!item.url) {
+ uni.showToast({
+ title: '璇疯ˉ鍏呴〉闈㈤摼鎺�',
+ icon: 'none'
+ })
+ return
+ }
+
+ uni.navigateTo({
+ url: item.url
+ })
+ }
}
}
</script>
@@ -29,33 +154,269 @@
<style lang="scss" scoped>
.shop-mine-page {
min-height: 100vh;
- background: #f8f8f8;
+ background: #f5f7fa;
}
- .nav-bar {
+ .page-header {
+ background: linear-gradient(180deg, #bfefff 0%, #e7f9ff 68%, #f5f7fa 100%);
+ }
+
+ .custom-nav {
position: fixed;
top: 0;
left: 0;
right: 0;
- background: #ffffff;
z-index: 100;
+ background: linear-gradient(180deg, #bfefff 0%, #dff7ff 100%);
}
.nav-content {
- height: 44px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 30rpx;
+ }
+
+ .logout-btn {
+ min-width: 104rpx;
+ height: 52rpx;
+ padding: 0 24rpx;
+ border-radius: 28rpx;
+ background: rgba(255, 255, 255, 0.96);
+ font-size: 24rpx;
+ font-weight: 500;
+ color: #2c4e68;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-shadow: 0 10rpx 24rpx rgba(76, 128, 160, 0.08);
+ }
+
+ .nav-actions {
+ width: 64rpx;
+ height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
}
- .nav-title {
- font-size: 34rpx;
+ .nav-action-icon {
+ width: 44rpx;
+ height: 44rpx;
+ }
+
+ .profile-section {
+ padding: 16rpx 30rpx 36rpx;
+ }
+
+ .profile-main {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ .profile-left {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ align-items: center;
+ }
+
+ .store-avatar {
+ width: 112rpx;
+ height: 112rpx;
+ border-radius: 56rpx;
+ background: #d5dde5;
+ flex-shrink: 0;
+ }
+
+ .profile-info {
+ flex: 1;
+ min-width: 0;
+ padding-left: 24rpx;
+ }
+
+ .setting-icon {
+ width: 40rpx;
+ height: 40rpx;
+ margin-left: 20rpx;
+ flex-shrink: 0;
+ }
+
+ .store-name {
+ display: block;
+ font-size: 42rpx;
+ font-weight: 700;
+ line-height: 1.25;
+ color: #1f2b3d;
+ }
+
+ .profile-meta-row {
+ margin-top: 16rpx;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 12rpx;
+ }
+
+ .manager-name {
+ font-size: 26rpx;
+ color: #506070;
+ }
+
+ .identity-tag {
+ height: 34rpx;
+ padding: 0 14rpx;
+ border-radius: 18rpx;
+ font-size: 20rpx;
font-weight: 600;
+ color: #ffffff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .enterprise-tag {
+ background: linear-gradient(135deg, #ff9a45 0%, #ff6a3d 100%);
+ }
+
+ .personal-tag {
+ background: linear-gradient(135deg, #54d1ff 0%, #24b9dd 100%);
+ }
+
+ .page-body {
+ padding: 0 30rpx calc(180rpx + env(safe-area-inset-bottom));
+ margin-top: -6rpx;
+ }
+
+ .card {
+ background: #ffffff;
+ border-radius: 24rpx;
+ box-shadow: 0 12rpx 30rpx rgba(31, 76, 112, 0.06);
+ }
+
+ .order-card {
+ padding: 30rpx 28rpx 22rpx;
+ }
+
+ .card-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ .card-title {
+ font-size: 34rpx;
+ font-weight: 700;
+ color: #222f3e;
+ }
+
+ .header-link {
+ display: flex;
+ align-items: center;
+ font-size: 24rpx;
+ color: #9aa6b2;
+ }
+
+ .header-arrow {
+ margin-left: 8rpx;
+ font-size: 22rpx;
+ }
+
+ .order-grid {
+ margin-top: 26rpx;
+ display: flex;
+ justify-content: space-between;
+ gap: 16rpx;
+ }
+
+ .order-item {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 10rpx 0;
+ }
+
+ .order-icon-wrap {
+ position: relative;
+ width: 72rpx;
+ height: 72rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .order-icon {
+ width: 60rpx;
+ height: 60rpx;
+ }
+
+ .order-badge {
+ position: absolute;
+ top: -8rpx;
+ right: -10rpx;
+ min-width: 32rpx;
+ height: 32rpx;
+ padding: 0 8rpx;
+ border-radius: 16rpx;
+ background: #ff3558;
+ font-size: 20rpx;
+ font-weight: 600;
+ color: #ffffff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ }
+
+ .order-title {
+ margin-top: 8rpx;
+ font-weight: 400;
+ font-size: 24rpx;
color: #333333;
}
- .page-content {
- padding-top: calc(44px + 44px);
- min-height: 100vh;
+ .banner-card {
+ margin-top: 24rpx;
+ border-radius: 20rpx;
+ overflow: hidden;
+ background: linear-gradient(135deg, #0d63d5 0%, #8fd9ff 100%);
+ }
+
+ .banner-image {
+ display: block;
+ width: 100%;
+ height: 184rpx;
+ background: linear-gradient(135deg, #0d63d5 0%, #8fd9ff 100%);
+ }
+
+ .menu-card {
+ margin-top: 24rpx;
+ padding: 0 24rpx;
+ }
+
+ .menu-item {
+ height: 102rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #edf1f5;
+ }
+
+ .menu-item:last-child {
+ border-bottom: none;
+ }
+
+ .menu-title {
+ font-weight: 400;
+ font-size: 30rpx;
+ color: #222222;
+ }
+
+ .menu-arrow {
+ width: 16rpx;
+ height: 26rpx;
}
</style>
--
Gitblit v1.9.3