Selaa lähdekoodia

合伙人界面

Alex 10 kuukautta sitten
vanhempi
sitoutus
9addfc2a42
100 muutettua tiedostoa jossa 1144 lisäystä ja 85 poistoa
  1. 25 25
      manifest.json
  2. 0 2
      pages-mine/components/discounts-item.vue
  3. 111 0
      pages-mine/components/partner-order-item.vue
  4. 65 0
      pages-mine/pages/partner/income-detail.vue
  5. 165 0
      pages-mine/pages/partner/order-detail.vue
  6. 248 0
      pages-mine/pages/partner/partner-apply.vue
  7. 247 0
      pages-mine/pages/partner/partner-home.vue
  8. 131 0
      pages-mine/pages/partner/partner-status.vue
  9. 5 0
      pages-mine/pages/partner/partner.vue
  10. BIN
      pages-mine/static/discounts-bg.png
  11. BIN
      pages-mine/static/discounts-bg2.png
  12. BIN
      pages-mine/static/discounts-bg3.png
  13. BIN
      pages-mine/static/partner1.png
  14. BIN
      pages-mine/static/partner2.png
  15. BIN
      pages-mine/static/pending.png
  16. BIN
      pages-mine/static/rejected.png
  17. BIN
      pages-mine/static/user-bg.png
  18. 36 0
      pages.json
  19. 111 58
      pages/mine/index.vue
  20. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  21. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  22. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  23. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/common-dialog.js.map
  24. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/img-swiper.js.map
  25. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/loadmore.js.map
  26. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/nav/dial-nav.js.map
  27. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-search.js.map
  28. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-top-search.js.map
  29. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/no-data.js.map
  30. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/pageScroll/index.js.map
  31. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/search/search.js.map
  32. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/select-reason.js.map
  33. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/tag.js.map
  34. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/title-operate.js.map
  35. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookItem.js.map
  36. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookListItem.js.map
  37. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/PickupTimePicker.js.map
  38. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/SubmitConfirm.js.map
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/book-order.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/order-success.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/scaned-book.js.map
  42. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/apply-reason.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-goods.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-status.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-goods-pop.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-item.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/express/list.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-info.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select-sku.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/submitBar.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/line-info-operate.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/navbar-tab-search.js.map
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/express-goods-card.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-card.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-goods-card.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-operate.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-status.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/orderdetail-goods-card.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/sel-coupon-popup.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-discounts.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-goods-card.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-operate.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply-status.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/back.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/components/setExpress.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/list.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/success.js.map
  70. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/goods/detail.js.map
  71. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/detail.js.map
  72. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/express.js.map
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/list.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay-result.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay.js.map
  76. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/submit.js.map
  77. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/zone/zone.js.map
  78. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/address-card.js.map
  79. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/book-list.js.map
  80. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/category-popup.js.map
  81. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/city-picker.js.map
  82. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/detail-book-item.js.map
  83. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/discounts-item.js.map
  84. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-actions.js.map
  85. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-item.js.map
  86. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-return-actions.js.map
  87. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-return-item.js.map
  88. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-timeline.js.map
  89. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/partner-order-item.js.map
  90. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/return-notice.js.map
  91. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/select-book-item.js.map
  92. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/service-promise.js.map
  93. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/add-or-update.js.map
  94. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/list.js.map
  95. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/apply-return.js.map
  96. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/apply.js.map
  97. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/cashier-desk.js.map
  98. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/complaint.js.map
  99. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/feedback.js.map
  100. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/notice.js.map

+ 25 - 25
manifest.json

@@ -69,33 +69,33 @@
             },
             "icons" : {
                 "android" : {
-                    "hdpi" : "unpackage/res/icons/72x72.png",
-                    "xhdpi" : "unpackage/res/icons/96x96.png",
-                    "xxhdpi" : "unpackage/res/icons/144x144.png",
-                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                    "hdpi" : "",
+                    "xhdpi" : "",
+                    "xxhdpi" : "",
+                    "xxxhdpi" : ""
                 },
                 "ios" : {
-                    "appstore" : "unpackage/res/icons/1024x1024.png",
+                    "appstore" : "",
                     "ipad" : {
-                        "app" : "unpackage/res/icons/76x76.png",
-                        "app@2x" : "unpackage/res/icons/152x152.png",
-                        "notification" : "unpackage/res/icons/20x20.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "proapp@2x" : "unpackage/res/icons/167x167.png",
-                        "settings" : "unpackage/res/icons/29x29.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "spotlight" : "unpackage/res/icons/40x40.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
+                        "app" : "",
+                        "app@2x" : "",
+                        "notification" : "",
+                        "notification@2x" : "",
+                        "proapp@2x" : "",
+                        "settings" : "",
+                        "settings@2x" : "",
+                        "spotlight" : "",
+                        "spotlight@2x" : ""
                     },
                     "iphone" : {
-                        "app@2x" : "unpackage/res/icons/120x120.png",
-                        "app@3x" : "unpackage/res/icons/180x180.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "notification@3x" : "unpackage/res/icons/60x60.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "settings@3x" : "unpackage/res/icons/87x87.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
-                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
+                        "app@2x" : "",
+                        "app@3x" : "",
+                        "notification@2x" : "",
+                        "notification@3x" : "",
+                        "settings@2x" : "",
+                        "settings@3x" : "",
+                        "spotlight@2x" : "",
+                        "spotlight@3x" : ""
                     }
                 }
             }
@@ -115,9 +115,9 @@
         },
         "usingComponents" : true,
         "permission" : {},
-		//小程序隐私协议
-		"__usePrivacyCheck__": true,
-		"lazyCodeLoading": "requiredComponents"
+        //小程序隐私协议
+        "__usePrivacyCheck__" : true,
+        "lazyCodeLoading" : "requiredComponents"
     },
     "mp-alipay" : {
         "usingComponents" : true,

+ 0 - 2
pages-mine/components/discounts-item.vue

@@ -19,7 +19,6 @@
 		</view>
 		<view class="select" v-if="select"></view>
 	</view>
-</view>
 </template>
 
 <script>
@@ -58,7 +57,6 @@ export default {
 .coupon {
 	width: 100%;
 	height: 174rpx;
-	background-image: url('@/pages-mine/static/discounts-bg.png');
 	background-size: cover;
 	margin-bottom: 30rpx;
 	display: flex;

+ 111 - 0
pages-mine/components/partner-order-item.vue

@@ -0,0 +1,111 @@
+<template>
+    <view class="order-item">
+        <view class="order-no">
+            订单编号:{{ order.orderNo }}
+            <text class="status">{{ order.status }}</text>
+        </view>
+        <view class="book-list">
+            <image v-for="(book, index) in order.books" :key="index" :src="book.cover" mode="aspectFill" class="book-cover"/>
+        </view>
+        <view class="order-info">
+            <view class="info-row">
+                <text>买书订单状态</text>
+                <text>{{ order.orderStatus }}</text>
+            </view>
+            <view class="info-row">
+                <text>买书订单预估金额</text>
+                <text class="amount">¥{{ order.estimatedAmount }}</text>
+            </view>
+            <view class="info-row">
+                <text>我的预估佣金</text>
+                <text class="commission">¥{{ order.estimatedCommission }}</text>
+            </view>
+            <view class="info-row" v-if="order.finalAmount">
+                <text>买书订单核算金额</text>
+                <text class="amount">¥{{ order.finalAmount }}</text>
+            </view>
+            <view class="info-row" v-if="order.finalCommission">
+                <text>我的结算佣金</text>
+                <text class="commission">¥{{ order.finalCommission }}</text>
+            </view>
+        </view>
+        <view class="order-time">创建时间:{{ order.createTime }}</view>
+    </view>
+</template>
+
+<script>
+export default {
+    name: 'partner-order-item',
+    props: {
+        order: {
+            type: Object,
+            default: () => ({})
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.order-item {
+    background: #FFFFFF;
+    border-radius: 8px;
+    padding: 16px;
+    margin-bottom: 12px;
+
+    .order-no {
+        display: flex;
+        justify-content: space-between;
+        font-size: 14px;
+        color: #333;
+        margin-bottom: 12px;
+
+        .status {
+            color: #FF0000;
+        }
+    }
+
+    .book-list {
+        display: flex;
+        gap: 8px;
+        margin-bottom: 12px;
+
+        .book-cover {
+            width: 60px;
+            height: 80px;
+            border-radius: 4px;
+        }
+    }
+
+    .order-info {
+        background: #F8F8F8;
+        padding: 12px;
+        border-radius: 4px;
+
+        .info-row {
+            display: flex;
+            justify-content: space-between;
+            font-size: 14px;
+            margin-bottom: 8px;
+            color: #666;
+
+            &:last-child {
+                margin-bottom: 0;
+            }
+
+            .amount {
+                color: #333;
+            }
+
+            .commission {
+                color: #FF0000;
+            }
+        }
+    }
+
+    .order-time {
+        margin-top: 12px;
+        font-size: 12px;
+        color: #999;
+    }
+}
+</style> 

+ 65 - 0
pages-mine/pages/partner/income-detail.vue

@@ -0,0 +1,65 @@
+<template>
+    <view class="income-detail">
+        <page-scroll ref="pageScroll" url="/api/mock/income-detail" :immediate="true" :slot-empty="true">
+            <view class="income-list">
+                <view class="income-item" v-for="(item, index) in mockData" :key="index">
+                    <view class="item-left">
+                        <view class="income-title">推广收入</view>
+                        <view class="income-time">{{ item.time }}</view>
+                    </view>
+                    <view class="income-amount">+{{ item.amount }}</view>
+                </view>
+            </view>
+        </page-scroll>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            mockData: Array(6)
+                .fill()
+                .map(() => ({
+                    time: "2021.2.25 10:48:32",
+                    amount: "100.00",
+                })),
+        };
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+.income-detail {
+    min-height: 100vh;
+    background-color: #f5f5f5;
+}
+
+.income-item {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    background-color: #fff;
+    padding: 30rpx 40rpx;
+    margin-bottom: 2rpx;
+
+    .item-left {
+        .income-title {
+            font-size: 32rpx;
+            color: #333;
+            margin-bottom: 10rpx;
+        }
+
+        .income-time {
+            font-size: 28rpx;
+            color: #999;
+        }
+    }
+
+    .income-amount {
+        font-size: 32rpx;
+        color: #ff5555;
+        font-weight: 500;
+    }
+}
+</style>

+ 165 - 0
pages-mine/pages/partner/order-detail.vue

@@ -0,0 +1,165 @@
+<template>
+    <view class="order-detail">
+        <!-- 标签页 -->
+        <view class="tabs-wrapper">
+            <u-tabs :list="tabList" :current="currentTab" @change="handleTabChange" :is-scroll="false"
+                active-color="#38C148" bar-width="60"></u-tabs>
+        </view>
+
+        <!-- 订单列表 -->
+        <page-scroll :page-size="12" @updateList="handleUpdateList" ref="pageRef" slotEmpty
+            url="/token/partner/order/list" :params="params" :immediate="false">
+            <view v-if="orderList.length > 0" class="pad-20">
+                <partner-order-item v-for="order in orderList" :key="order.orderNo" :order="order"></partner-order-item>
+            </view>
+        </page-scroll>
+    </view>
+</template>
+
+<script>
+import PartnerOrderItem from '../../components/partner-order-item.vue'
+import pageScroll from '@/components/pageScroll/index.vue'
+
+export default {
+    components: {
+        PartnerOrderItem,
+        pageScroll,
+    },
+    data() {
+        return {
+            tabList: [{
+                name: '全部',
+                status: "-1"
+            },
+            {
+                name: '未结算',
+                status: "0"
+            },
+            {
+                name: '未到账',
+                status: "1"
+            },
+            {
+                name: '已到账',
+                status: "2"
+            },
+            {
+                name: '已失效',
+                status: "3"
+            }
+            ],
+            currentTab: 0,
+            orderList: [],
+            params: {},
+            // 模拟数据
+            mockOrders: [{
+                orderNo: '54631435441',
+                status: '未结算',
+                books: [
+                    { cover: '/static/book1.jpg' },
+                    { cover: '/static/book2.jpg' },
+                    { cover: '/static/book3.jpg' },
+                    { cover: '/static/book4.jpg' },
+                    { cover: '/static/book5.jpg' }
+                ],
+                orderStatus: '已提交',
+                estimatedAmount: '63.00',
+                estimatedCommission: '6.30',
+                createTime: '2024-12-06 15:00:00'
+            },
+            {
+                orderNo: '54631435441',
+                status: '已失效',
+                books: [
+                    { cover: '/static/book1.jpg' },
+                    { cover: '/static/book2.jpg' },
+                    { cover: '/static/book3.jpg' },
+                    { cover: '/static/book4.jpg' },
+                    { cover: '/static/book5.jpg' }
+                ],
+                orderStatus: '订单取消',
+                estimatedAmount: '63.00',
+                estimatedCommission: '6.30',
+                createTime: '2024-12-06 15:00:00'
+            },
+            {
+                orderNo: '54631435441',
+                status: '未到账',
+                books: [
+                    { cover: '/static/book1.jpg' },
+                    { cover: '/static/book2.jpg' },
+                    { cover: '/static/book3.jpg' },
+                    { cover: '/static/book4.jpg' },
+                    { cover: '/static/book5.jpg' }
+                ],
+                orderStatus: '已结算',
+                estimatedAmount: '63.00',
+                estimatedCommission: '6.30',
+                finalAmount: '58.00',
+                finalCommission: '5.80',
+                createTime: '2024-12-06 15:00:00'
+            },
+            {
+                orderNo: '54631435441',
+                status: '已到账',
+                books: [
+                    { cover: '/static/book1.jpg' },
+                    { cover: '/static/book2.jpg' },
+                    { cover: '/static/book3.jpg' },
+                    { cover: '/static/book4.jpg' },
+                    { cover: '/static/book5.jpg' }
+                ],
+                orderStatus: '已结算',
+                estimatedAmount: '63.00',
+                estimatedCommission: '6.30',
+                finalAmount: '58.00',
+                finalCommission: '5.80',
+                createTime: '2024-12-06 15:00:00'
+            }]
+        }
+    },
+    onLoad(options) {
+        // 如果有传入状态,切换到对应tab
+        if (options.status) {
+            this.currentTab = this.tabList.findIndex(item => item.status === options.status)
+            this.params.status = options.status
+        }
+        this.loadOrders(true, this.params)
+    },
+    methods: {
+        loadOrders(bool = false, params = {}) {
+            // 模拟数据,实际开发时删除这行,使用下面的接口调用
+            this.orderList = this.mockOrders
+            // this.$refs.pageRef?.loadData(bool, params);
+        },
+
+        handleTabChange(index) {
+            this.currentTab = index
+            this.params.status = this.tabList[index].status
+            this.loadOrders(true, this.params)
+        },
+
+        handleUpdateList(list) {
+            this.orderList = list
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.order-detail {
+    min-height: 100vh;
+    background-color: #F5F5F5;
+
+    .tabs-wrapper {
+        position: sticky;
+        top: 0;
+        z-index: 99;
+        background: #FFFFFF;
+    }
+
+    .pad-20 {
+        padding: 20rpx;
+    }
+}
+</style>

+ 248 - 0
pages-mine/pages/partner/partner-apply.vue

@@ -0,0 +1,248 @@
+<template>
+    <view class="partner-apply">
+        <!-- 手机号和验证码区域 -->
+        <u-form :model="form" ref="uForm" :rules="rules" :error-type="['toast']" :label-width="160">
+            <view class="form-section">
+                <u-form-item label="新手机号" prop="mobile">
+                    <u-input v-model="form.mobile" placeholder="获取手机号码" />
+                    <u-button slot="right" type="success" size="mini" @click="getMobile" plain>获取手机号</u-button>
+                </u-form-item>
+
+                <u-form-item label="验证码" prop="verifyCode">
+                    <u-input v-model="form.verifyCode" placeholder="请输入验证码" />
+                    <u-button slot="right" type="success" size="mini" @click="getCode" :disabled="counting" plain>
+                        {{ counting ? `${countdown}s后获取` : "获取验证码" }}
+                    </u-button>
+                </u-form-item>
+            </view>
+
+            <!-- 基本信息区域 -->
+            <view class="form-section">
+                <u-form-item label="姓名" prop="name">
+                    <u-input v-model="form.name" placeholder="请输入真实姓名" />
+                </u-form-item>
+
+                <u-form-item label="地址选择" prop="address">
+                    <uni-data-picker v-model="selAddressCodes" :localdata="dataList" placeholder="请选择所在区县"
+                        popup-title="请选择所在区县" @change="cityChange"></uni-data-picker>
+                </u-form-item>
+
+                <u-form-item label="学校" prop="school">
+                    <u-input v-model="form.school" placeholder="请输入学校" />
+                </u-form-item>
+
+                <u-form-item label="院系" prop="faculties">
+                    <u-input v-model="form.faculties" placeholder="请输入院系" />
+                </u-form-item>
+
+                <u-form-item label="专业" prop="specialty">
+                    <u-input v-model="form.specialty" placeholder="请输入专业" />
+                </u-form-item>
+
+                <u-form-item label="年级" prop="grade">
+                    <u-input v-model="form.grade" placeholder="请输入年级" />
+                </u-form-item>
+            </view>
+        </u-form>
+
+        <view class="agreement">
+            <u-checkbox v-model="agreement" shape="circle">
+                <text>我已阅读并同意</text>
+                <text class="agreement-link" @click="openAgreement">《书嗨用户协议》</text>
+            </u-checkbox>
+        </view>
+
+        <view class="fixed-bottom">
+            <u-button type="primary" color="#38C148" @click="submit">提交</u-button>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            form: {
+                provinceId: '',
+                cityId: '',
+                districtId: '',
+                name: "",
+                school: "",
+                faculties: "",
+                specialty: "",
+                grade: "",
+                mobile: "",
+                verifyCode: "",
+            },
+            agreement: false,
+            counting: false,
+            countdown: 60,
+            rules: {
+                name: [{ required: true, message: "请输入真实姓名" }],
+                school: [{ required: true, message: "请输入学校" }],
+                faculties: [{ required: true, message: "请输入院系" }],
+                specialty: [{ required: true, message: "请输入专业" }],
+                provinceId: [{ required: true, message: "请选择所在区县" }],
+            },
+            // 省市区相关数据
+            selAddressCodes: [],
+            dataList: [],
+        };
+    },
+    onLoad() {
+        // 获取省市区数据
+        this.getDistrictData();
+    },
+    methods: {
+        // 获取省市区数据
+        async getDistrictData() {
+            try {
+                const res = await uni.$u.http.get('/token/getAllDistrict');
+                if (res.code == 200) {
+                    this.dataList = res.data;
+                }
+            } catch (error) {
+                uni.$u.toast('获取地区数据失败');
+            }
+        },
+
+        // 省市区选择回调
+        cityChange(e) {
+            let { value } = e.detail;
+            if (!value.length) return;
+            this.form.provinceId = value[0].value;
+            this.form.cityId = value[1].value;
+            this.form.districtId = value[2].value || '';
+        },
+
+        getMobile() {
+            // 获取手机号的逻辑
+            uni.login({
+                provider: "weixin",
+                success: async (loginRes) => {
+                    // 这里需要调用获取手机号的相关接口
+                    // 获取成功后设置 form.mobile
+                },
+            });
+        },
+
+        async getCode() {
+            if (!this.form.mobile) {
+                uni.$u.toast("请先获取手机号");
+                return;
+            }
+
+            try {
+                const res = await uni.$u.http.post("/token/applyPartner/getMobileCode", {
+                    mobile: this.form.mobile,
+                });
+
+                if (res.code === 200) {
+                    this.startCountdown();
+                    uni.$u.toast("验证码已发送");
+                } else {
+                    uni.$u.toast(res.msg);
+                }
+            } catch (error) {
+                uni.$u.toast("获取验证码失败");
+            }
+        },
+
+        startCountdown() {
+            this.counting = true;
+            this.countdown = 60;
+            const timer = setInterval(() => {
+                this.countdown--;
+                if (this.countdown <= 0) {
+                    clearInterval(timer);
+                    this.counting = false;
+                }
+            }, 1000);
+        },
+
+        openAgreement() {
+            // 打开用户协议页面
+            uni.navigateTo({
+                url: "/pages/agreement/index",
+            });
+        },
+
+        async submit() {
+            if (!this.agreement) {
+                uni.$u.toast("请先阅读并同意用户协议");
+                return;
+            }
+            try {
+                this.$refs.uForm.validate(async (valid) => {
+                    if (valid) {
+                        const res = await uni.$u.http.post("/token/applyPartner", this.form);
+                        if (res.code === 200) {
+                            uni.navigateTo({
+                                url: "/pages-mine/pages/partner/partner-status?status=pending",
+                            });
+                        } else {
+                            uni.$u.toast(res.msg);
+                        }
+                    }
+                });
+            } catch (error) {
+                uni.$u.toast("提交失败");
+            }
+        },
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+.partner-apply {
+    min-height: 100vh;
+    background-color: #f5f5f5;
+    padding: 20rpx;
+    padding-bottom: 120rpx;
+
+    .form-section {
+        background-color: #fff;
+        margin-bottom: 20rpx;
+        padding: 0 30rpx;
+        border-radius: 10rpx;
+
+        :deep(.u-form-item) {
+            .u-form-item--left {
+                white-space: nowrap;
+            }
+
+            .u-button {
+                margin-left: 20rpx;
+            }
+        }
+    }
+
+    .agreement {
+        margin: 30rpx;
+        display: flex;
+
+        .agreement-link {
+            color: #38c148;
+        }
+    }
+
+    .fixed-bottom {
+        position: fixed;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        background-color: #fff;
+        padding: 20rpx 30rpx;
+        box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
+        padding-bottom: 60rpx;
+
+        .u-button {
+            width: 100%;
+            height: 80rpx;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+        }
+    }
+}
+</style>

+ 247 - 0
pages-mine/pages/partner/partner-home.vue

@@ -0,0 +1,247 @@
+<template>
+    <view class="partner-home">
+        <!-- 头部信息 -->
+        <view class="header">
+            <image class="avatar" src="/static/img/logo.png" mode="aspectFit"></image>
+            <view class="header-text">
+                <text class="title">您好,合伙人</text>
+                <text class="subtitle">这里是合伙人数据中心</text>
+            </view>
+            <navigator url="/pages-mine/pages/partner-rule" class="rule-btn">合伙人规则</navigator>
+        </view>
+        <view class="content" style="margin-top: -180rpx;">
+            <!-- 收入统计 -->
+            <view class="income-section">
+                <view class="section-header">
+                    <text class="section-title">收入统计</text>
+                    <text class="tip">每月20号到账上月结算收益</text>
+                </view>
+                <view class="income-grid">
+                    <view class="income-item">
+                        <text class="amount">¥{{ detail.totalIncome || "0.00" }}</text>
+                        <text class="label">累计收入</text>
+                    </view>
+                    <view class="income-item">
+                        <text class="amount">¥{{ detail.todayEstimateIncome || "0.00" }}</text>
+                        <text class="label">今日预估</text>
+                    </view>
+                    <view class="income-item">
+                        <text class="amount">¥{{ detail.lastMontyEstimateIncome || "0.00" }}</text>
+                        <text class="label">上月预估</text>
+                    </view>
+                    <view class="income-item">
+                        <text class="amount">¥{{ detail.thisMontyEstimateIncome || "0.00" }}</text>
+                        <text class="label">本月预估</text>
+                    </view>
+                    <view class="income-item">
+                        <text class="amount">¥{{ detail.lastMontySettlement || "0.00" }}</text>
+                        <text class="label">上月结算</text>
+                    </view>
+                    <view class="income-item">
+                        <text class="amount">¥{{ detail.waitAccount || "0.00" }}</text>
+                        <text class="label">待到账</text>
+                    </view>
+                </view>
+            </view>
+
+            <!-- 实用工具 -->
+            <view class="tools-section">
+                <text class="section-title">实用工具</text>
+                <view class="tools-grid">
+                    <navigator url="/pages-mine/pages/partner/income-detail" class="tool-item">
+                        <image src="/pages-mine/static/partner1.png" mode="aspectFit"></image>
+                        <text>收入明细</text>
+                    </navigator>
+                    <navigator url="/pages-mine/pages/partner/order-detail" class="tool-item">
+                        <image src="/pages-mine/static/partner2.png" mode="aspectFit"></image>
+                        <text>订单明细</text>
+                    </navigator>
+                </view>
+            </view>
+
+            <!-- 生成海报按钮 -->
+            <button class="generate-poster" @click="generatePoster">生成专属二维码海报</button>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            detail: {
+                totalIncome: 0,
+                todayEstimateIncome: 0,
+                lastMontyEstimateIncome: 0,
+                thisMontyEstimateIncome: 0,
+                lastMontySettlement: 0,
+                waitAccount: 0,
+            },
+        };
+    },
+    onLoad() {
+        this.getPartnerInfo();
+    },
+    methods: {
+        getPartnerInfo() {
+            uni.$u.get("/token/getUserPartnerInfo").then((res) => {
+                if (res.code == 200) {
+                    this.detail = res.data;
+                }
+            });
+        },
+        generatePoster() {
+            // TODO: 实现生成海报功能
+            uni.showToast({
+                title: "正在生成海报...",
+                icon: "loading",
+            });
+        },
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+.partner-home {
+    min-height: 100vh;
+    background-color: #f5f5f5;
+
+    .section-title {
+        font-size: 32rpx;
+        font-weight: bold;
+        margin-bottom: 20rpx;
+        display: block;
+    }
+    .header {
+        display: flex;
+        align-items: flex-start;
+        background-color: #4caf50;
+        padding: 30rpx;
+        padding-top: 45rpx;
+        border-radius: 16rpx;
+        margin-bottom: 20rpx;
+        height: 322rpx;
+        border-radius: 0rpx 0rpx 161rpx 161rpx;
+
+        .avatar {
+            width: 80rpx;
+            height: 80rpx;
+            border-radius: 50%;
+            margin-right: 20rpx;
+        }
+
+        .header-text {
+            flex: 1;
+            color: #fff;
+
+            .title {
+                font-size: 32rpx;
+                font-weight: bold;
+                display: block;
+            }
+
+            .subtitle {
+                font-size: 24rpx;
+                opacity: 0.8;
+            }
+        }
+
+        .rule-btn {
+            padding: 10rpx 20rpx;
+            background: rgba(255, 255, 255, 0.2);
+            border-radius: 30rpx;
+            color: #fff;
+            font-size: 24rpx;
+        }
+    }
+
+    .income-section {
+        background-color: #fff;
+        border-radius: 16rpx;
+        padding: 30rpx;
+        margin: 20rpx auto;
+        width: calc(100% - 40rpx);
+
+        .section-header {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            margin-bottom: 20rpx;
+
+            .tip {
+                font-size: 24rpx;
+                color: #999;
+            }
+        }
+
+        .income-grid {
+            display: grid;
+            grid-template-columns: repeat(2, 1fr);
+            gap: 20rpx;
+
+            .income-item {
+                background-color: #f8f8f8;
+                padding: 20rpx;
+                border-radius: 12rpx;
+                text-align: center;
+
+                .amount {
+                    color: #ff4d4f;
+                    font-size: 32rpx;
+                    font-weight: bold;
+                    display: block;
+                }
+
+                .label {
+                    font-size: 24rpx;
+                    color: #666;
+                    margin-top: 8rpx;
+                }
+            }
+        }
+    }
+
+    .tools-section {
+        background-color: #fff;
+        border-radius: 16rpx;
+        padding: 30rpx;
+        margin: 20rpx auto;
+        width: calc(100% - 40rpx);
+
+        .tools-grid {
+            display: flex;
+            gap: 30rpx;
+
+            .tool-item {
+                flex: 1;
+                display: flex;
+                align-items: center;
+                padding: 20rpx;
+                border-radius: 12rpx;
+
+                image {
+                    width: 90rpx;
+                    height: 90rpx;
+                    margin-right: 10rpx;
+                }
+
+                text {
+                    font-size: 26rpx;
+                    color: #333;
+                }
+            }
+        }
+    }
+
+    .generate-poster {
+        width: calc(100% - 60rpx);
+        height: 88rpx;
+        line-height: 88rpx;
+        background-color: #4caf50;
+        color: #fff;
+        border-radius: 10rpx;
+        font-size: 28rpx;
+        margin: 40rpx auto;
+    }
+}
+</style>

+ 131 - 0
pages-mine/pages/partner/partner-status.vue

@@ -0,0 +1,131 @@
+<template>
+    <view class="partner-status">
+        <!-- 待审核状态 -->
+        <view class="status-content" v-if="detail.status === 0">
+            <view class="icon-wrapper">
+                <image src="/pages-mine/static/pending.png" mode="aspectFit" class="status-icon"></image>
+            </view>
+            <view class="status-title">请等待管理员审核</view>
+            <view class="status-desc">您的申请已提交成功,预计1个工作日内审核完毕</view>
+            <view class="status-tip">审核结果会通过消息通知到小程序内</view>
+            <view class="btn-wrapper">
+                <u-button type="primary" color="#38C148" @click="goHome">返回首页</u-button>
+            </view>
+        </view>
+
+        <!-- 审核驳回状态 -->
+        <view class="status-content" v-if="detail.status !== 0">
+            <view class="icon-wrapper">
+                <image src="/pages-mine/static/rejected.png" mode="aspectFit" class="status-icon"></image>
+            </view>
+            <view class="status-title">{{ statusMap[detail.status] }}</view>
+            <view class="status-desc">您好,由于您所在区域不在平台的服务范围内</view>
+            <view class="status-tip">暂时无法参与合伙人计划,给您带来的不便深感抱歉!</view>
+            <view class="btn-wrapper">
+                <u-button type="primary" color="#38C148" @click="goHome">返回首页</u-button>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            statusMap: ["审核中", "审核通过", "审核驳回", "已拉黑但仍有余额", "已拉黑无余额"],
+            detail: {},
+            status: "pending", // 'pending' 或 'rejected'
+        };
+    },
+    onLoad(options) {
+        // 根据路由参数设置状态
+        this.getPartnerStatus();
+    },
+    methods: {
+        goHome() {
+            uni.switchTab({
+                url: "/pages/home/index",
+            });
+        },
+        // 获取合伙人状态
+        getPartnerStatus() {
+            uni.$u.get("/token/getUserPartnerInfo").then((res) => {
+                if (res.code == 200) {
+                    this.detail = res.data;
+                }
+            });
+        },
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+.partner-status {
+    min-height: 100vh;
+    background-color: #fff;
+    padding: 120rpx 40rpx;
+
+    .status-content {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        text-align: center;
+    }
+
+    .icon-wrapper {
+        width: 200rpx;
+        height: 200rpx;
+        background: rgba(56, 193, 72, 0.1);
+        border-radius: 50%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-bottom: 40rpx;
+
+        .status-icon {
+            width: 200rpx;
+            height: 200rpx;
+        }
+    }
+
+    .status-title {
+        font-size: 36rpx;
+        font-weight: 500;
+        color: #333;
+        margin-bottom: 24rpx;
+    }
+
+    .status-desc {
+        font-size: 28rpx;
+        color: #666;
+        margin-bottom: 12rpx;
+    }
+
+    .status-tip {
+        font-size: 28rpx;
+        color: #999;
+        margin-bottom: 80rpx;
+    }
+
+    .btn-wrapper {
+        width: 100%;
+        padding: 0 30rpx;
+
+        .u-button {
+            height: 88rpx;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            font-size: 32rpx;
+        }
+    }
+
+    .bottom-line {
+        width: 100rpx;
+        height: 8rpx;
+        background: #d8d8d8;
+        border-radius: 4rpx;
+        margin-top: 200rpx;
+    }
+}
+</style>

+ 5 - 0
pages-mine/pages/partner/partner.vue

@@ -0,0 +1,5 @@
+<template>
+    <div>
+        合伙人计划
+    </div>
+</template>

BIN
pages-mine/static/discounts-bg.png


BIN
pages-mine/static/discounts-bg2.png


BIN
pages-mine/static/discounts-bg3.png


BIN
pages-mine/static/partner1.png


BIN
pages-mine/static/partner2.png


BIN
pages-mine/static/pending.png


BIN
pages-mine/static/rejected.png


BIN
pages-mine/static/user-bg.png


+ 36 - 0
pages.json

@@ -237,6 +237,42 @@
                     "style": {
                         "navigationBarTitleText": "支付成功"
                     }
+                },
+                {
+                    "path": "pages/partner/partner",
+                    "style": {
+                        "navigationBarTitleText": "合伙人计划"
+                    }
+                },
+                {
+                    "path": "pages/partner/partner-apply",
+                    "style": {
+                        "navigationBarTitleText": "成为合伙人"
+                    }
+                },
+                {
+                    "path": "pages/partner/partner-status",
+                    "style": {
+                        "navigationBarTitleText": "成为合伙人"
+                    }
+                },
+                {
+                    "path": "pages/partner/partner-home",
+                    "style": {
+                        "navigationBarTitleText": "合伙人计划"
+                    }
+                },
+                {
+                    "path": "pages/partner/income-detail",
+                    "style": {
+                        "navigationBarTitleText": "收入明细"
+                    }
+                },
+                {
+                    "path": "pages/partner/order-detail",
+                    "style": {
+                        "navigationBarTitleText": "订单明细"
+                    }
                 }
             ]
         },

+ 111 - 58
pages/mine/index.vue

@@ -4,7 +4,11 @@
         <view class="user-info">
             <view class="user-header" @tap="handleUpdateUserInfo">
                 <view class="user-avatar">
-                    <image class="avatar" :src="userInfo.imgPath || 'https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/logo3.png'" mode="aspectFill"></image>
+                    <image
+                        class="avatar"
+                        :src="userInfo.imgPath || 'https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/logo3.png'"
+                        mode="aspectFill"
+                    ></image>
                 </view>
                 <view class="user-detail">
                     <view class="nickname">{{ userInfo.nickName }}</view>
@@ -39,9 +43,13 @@
                     <u-icon name="arrow-right" size="24" color="#999"></u-icon>
                 </view>
             </view>
-            <view class="order-types" style="padding: 0 20rpx;">
-                <view class="type-item flex-d flex-a-c" v-for="(item, index) in orderTypes" :key="index"
-                    @click="navigateToOrder(item.path)">
+            <view class="order-types" style="padding: 0 20rpx">
+                <view
+                    class="type-item flex-d flex-a-c"
+                    v-for="(item, index) in orderTypes"
+                    :key="index"
+                    @click="navigateToOrder(item.path)"
+                >
                     <image class="type-icon" :src="'/pages-mine/static/' + item.icon" mode="aspectFit"></image>
                     <text>{{ item.name }}</text>
                     <view class="badge" v-if="item.badge">{{ item.badge }}</view>
@@ -53,8 +61,12 @@
         <view class="tools-section">
             <view class="section-title">实用工具</view>
             <view class="tools-grid">
-                <view class="tool-item flex-d flex-a-c" v-for="(tool, index) in tools" :key="index"
-                    @click="navigateToTool(tool.path)">
+                <view
+                    class="tool-item flex-d flex-a-c"
+                    v-for="(tool, index) in tools"
+                    :key="index"
+                    @click="navigateToTool(tool.path)"
+                >
                     <image class="tool-icon" :src="'/pages-mine/static/' + tool.icon" mode="aspectFit"></image>
                     <text>{{ tool.name }}</text>
                 </view>
@@ -69,10 +81,10 @@ export default {
         return {
             userInfo: {
                 userId: 0,
-                openid: '',
-                imgPath: '',
-                nickName: '这里是微信昵称.',
-                mobile: '',
+                openid: "",
+                imgPath: "",
+                nickName: "这里是微信昵称.",
+                mobile: "",
                 tags: [],
                 accountMoney: 0,
                 couponNum: 0,
@@ -81,82 +93,123 @@ export default {
                 pickUpNum: 0,
                 auditNum: 0,
                 payNum: 0,
-                refundNum: 0
+                refundNum: 0,
             },
             orderTypes: [
-                { name: '待初审', icon: '1.png', badge: 0,key:"firstAuditNum", path: '/pages-mine/pages/order-page?status=2' },
-                { name: '待取件', icon: '2.png', badge: 0,key:"pickUpNum", path: '/pages-mine/pages/order-page?status=3' },
-                { name: '待审核', icon: '3.png', badge: 0,key:"auditNum", path: '/pages-mine/pages/order-page?status=8' },
-                { name: '待到款', icon: '4.png', badge: 0,key:"payNum", path: '/pages-mine/pages/order-page?status=10' },
-                { name: '申请退回', icon: '5.png', badge: 0,key:"refundNum", path: '/pages-mine/pages/apply-return' }
+                {
+                    name: "待初审",
+                    icon: "1.png",
+                    badge: 0,
+                    key: "firstAuditNum",
+                    path: "/pages-mine/pages/order-page?status=2",
+                },
+                {
+                    name: "待取件",
+                    icon: "2.png",
+                    badge: 0,
+                    key: "pickUpNum",
+                    path: "/pages-mine/pages/order-page?status=3",
+                },
+                {
+                    name: "待审核",
+                    icon: "3.png",
+                    badge: 0,
+                    key: "auditNum",
+                    path: "/pages-mine/pages/order-page?status=8",
+                },
+                {
+                    name: "待到款",
+                    icon: "4.png",
+                    badge: 0,
+                    key: "payNum",
+                    path: "/pages-mine/pages/order-page?status=10",
+                },
+                { name: "申请退回", icon: "5.png", badge: 0, key: "refundNum", path: "/pages-mine/pages/apply-return" },
             ],
             tools: [
-                { name: '消息通知', icon: 't1.png', path: '/pages-mine/pages/notice' },
-                { name: '我的收藏', icon: 't2.png', path: '' },
-                { name: '我的足迹', icon: 't3.png', path: '' },
-                { name: '我的地址', icon: 't4.png', path: '/pages-mine/pages/address/list' },
-                { name: '我的优惠券', icon: 't5.png', path: '' },
-                { name: '联系客服', icon: 't6.png', path: '/pages/tools/service' },
-                { name: '意见反馈', icon: 't7.png', path: '/pages-mine/pages/feedback' },
-                { name: '到货提醒', icon: 't8.png', path: '/pages/tools/arrival-notice' },
-                { name: '合伙人计划', icon: 't9.png', path: '/pages/tools/partner' },
-                { name: '买卖答疑', icon: 't10.png', path: '/pages/tools/faq' },
-                { name: '关于书嗨', icon: 't11.png', path: '/pages/tools/about' },
-                { name: '我的余额', icon: 't12.png', path: '/pages-mine/pages/wallet' },
-                { name: '用户设置', icon: 't13.png', path: '/pages/tools/settings' }
-            ]
-        }
+                { name: "消息通知", icon: "t1.png", path: "/pages-mine/pages/notice" },
+                { name: "我的收藏", icon: "t2.png", path: "" },
+                { name: "我的足迹", icon: "t3.png", path: "" },
+                { name: "我的地址", icon: "t4.png", path: "/pages-mine/pages/address/list" },
+                { name: "我的优惠券", icon: "t5.png", path: "" },
+                { name: "联系客服", icon: "t6.png", path: "/pages/tools/service" },
+                { name: "意见反馈", icon: "t7.png", path: "/pages-mine/pages/feedback" },
+                { name: "到货提醒", icon: "t8.png", path: "/pages/tools/arrival-notice" },
+                { name: "合伙人计划", icon: "t9.png", path: "/pages-mine/pages/partner/partner-apply" },
+                { name: "买卖答疑", icon: "t10.png", path: "/pages/tools/faq" },
+                { name: "关于书嗨", icon: "t11.png", path: "/pages/tools/about" },
+                { name: "我的余额", icon: "t12.png", path: "/pages-mine/pages/wallet" },
+                { name: "用户设置", icon: "t13.png", path: "/pages/tools/settings" },
+            ],
+        };
     },
     methods: {
         //用户信息
         handleUpdateUserInfo() {
             uni.navigateTo({
-                url: '/pages-mine/pages/setting'
-            })
+                url: "/pages-mine/pages/setting",
+            });
         },
         //查看全部订单
         viewAllOrders() {
             uni.navigateTo({
-                url: '/pages-mine/pages/order-page?status=-1'
-            })
+                url: "/pages-mine/pages/order-page?status=-1",
+            });
         },
         //跳转订单
         navigateToOrder(path) {
             uni.navigateTo({
-                url: path
-            })
+                url: path,
+            });
         },
         //跳转工具
         navigateToTool(path) {
-			if(!path) return uni.showToast({
-				title:"开发中...",
-				icon:"none"
-			})
+            if (!path)
+                return uni.showToast({
+                    title: "开发中...",
+                    icon: "none",
+                });
             uni.navigateTo({
-                url: path
-            })
+                url: path,
+            });
         },
         //获取用户信息
         getUserInfo() {
-            uni.$u.http.get('/token/user/detail').then(res => {
-                console.log(res)
+            uni.$u.http.get("/token/user/detail").then((res) => {
+                console.log(res);
                 if (res.code == 200) {
-                    this.userInfo = res.data
+                    this.userInfo = res.data;
 
-                    this.orderTypes.forEach(item => {
-                        item.badge = this.userInfo[item.key]
-                    })
+                    this.orderTypes.forEach((item) => {
+                        item.badge = this.userInfo[item.key];
+                    });
+                }
+            });
+        },
+        //获取合伙人状态
+        getPartnerStatus() {
+            uni.$u.get("/token/getUserPartnerInfo").then((res) => {
+                if (res.code == 200) {
+                    let { status } = res.data;
+                    let item = this.tools.find((item) => item.name == "合伙人计划");
+                    if (status == -1) {
+                        item.path = "/pages-mine/pages/partner/partner-apply";
+                    } else if (status == 1) {
+                        item.path = "/pages-mine/pages/partner/partner-home";
+                    } else {
+                        item.path = "/pages-mine/pages/partner/partner-status";
+                    }
                 }
-            })
+            });
         },
     },
     onShow() {
-        let token = uni.getStorageSync('token')
+        let token = uni.getStorageSync("token");
         if (token) {
-            this.getUserInfo()
+            this.getUserInfo();
         }
-    }
-}
+    },
+};
 </script>
 
 <style lang="scss" scoped>
@@ -165,7 +218,7 @@ export default {
     background-color: #f5f5f5;
 
     .user-info {
-        background-color: #38C148;
+        background-color: #38c148;
         padding: 20rpx 50rpx 120rpx;
         color: #fff;
         position: relative;
@@ -176,7 +229,7 @@ export default {
             left: -20%;
             top: 0;
             z-index: -1;
-            content: '';
+            content: "";
             border-radius: 0 0 50% 50%;
             background: #fd6954;
         }
@@ -211,7 +264,7 @@ export default {
                     display: inline-block;
                     font-size: 22rpx;
                     padding: 4rpx 12rpx;
-                    background: linear-gradient(-90deg, #272321, #4B4542);
+                    background: linear-gradient(-90deg, #272321, #4b4542);
                     border-radius: 4rpx;
                     margin-top: 8rpx;
                     margin-right: 10rpx;
@@ -250,7 +303,7 @@ export default {
                     font-size: 20rpx;
                     line-height: 30rpx;
                     height: 30rpx;
-                    background: #FF8400;
+                    background: #ff8400;
                     border-radius: 15rpx 15rpx 15rpx 0rpx;
                 }
             }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/common-dialog.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/img-swiper.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/loadmore.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/nav/dial-nav.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-search.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-top-search.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/no-data.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/pageScroll/index.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/search/search.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/select-reason.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/tag.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/title-operate.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookItem.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookListItem.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/PickupTimePicker.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/SubmitConfirm.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/book-order.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/order-success.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/scaned-book.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/apply-reason.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-goods.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-status.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-goods-pop.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-item.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/express/list.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-info.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select-sku.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/submitBar.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/line-info-operate.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/navbar-tab-search.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/express-goods-card.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-card.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-goods-card.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-operate.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-status.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/orderdetail-goods-card.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/sel-coupon-popup.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-discounts.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-goods-card.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-operate.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply-status.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/back.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/components/setExpress.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/list.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/success.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/goods/detail.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/detail.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/express.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/list.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay-result.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/submit.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/zone/zone.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/address-card.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/book-list.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/category-popup.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/city-picker.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/detail-book-item.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/discounts-item.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-actions.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-item.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-return-actions.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-return-item.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-timeline.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/partner-order-item.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/return-notice.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/select-book-item.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/service-promise.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/add-or-update.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/list.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/apply-return.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/apply.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/cashier-desk.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/complaint.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/feedback.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/notice.js.map


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä