xiongzhu vor 3 Jahren
Ursprung
Commit
427582d9bd

+ 14 - 9
src/components/CommissionItem.vue

@@ -2,33 +2,38 @@
     <div class="commission-item">
         <div class="head">
             <ion-thumbnail class="avatar">
-                <img src="../assets/bg.png" />
+                <img :src="detail.junior.avatar" />
             </ion-thumbnail>
-            <div class="name">吴尧东</div>
-            <div class="num">{{ $t('distribution.commission') }}: +5.68</div>
+            <div class="name">{{ detail.junior.nickname }}</div>
+            <div class="num">{{ $t('distribution.commission') }}: +{{ detail.amount }}</div>
         </div>
         <div class="order">
             <ion-thumbnail class="cover">
-                <img src="../assets/bg.png" />
+                <img :src="detail.order.pic[0]" />
             </ion-thumbnail>
             <div class="info">
-                <div class="name">名称名称名称名称名称名称名</div>
+                <div class="name">{{ detail.order.name }}</div>
                 <div class="price">
                     <div class="value">{{ $t('balance.symbol') }}100</div>
                     <div class="num">×1</div>
                 </div>
             </div>
         </div>
-        <div class="prop">{{ $t('order.id') }}: 2022112052035464</div>
-        <div class="prop">{{ $t('order.createdAt') }}: 2022-11-20 12:10</div>
+        <div class="prop">{{ $t('order.id') }}: {{ detail.orderId }}</div>
+        <div class="prop">{{ $t('order.createdAt') }}: {{ detail.createdAt }}</div>
     </div>
 </template>
 <script setup>
 import { ref, computed, onMounted } from 'vue'
 const props = defineProps({
-    commission: {
+    detail: {
         type: Object,
-        default: () => {}
+        default: () => {
+            return {
+                junior: {},
+                order: { pic: [] }
+            }
+        }
     }
 })
 </script>

+ 5 - 5
src/components/TeamMember.vue

@@ -1,15 +1,15 @@
 <template>
     <div class="team-member">
         <ion-thumbnail class="avatar">
-            <img src="../assets/bg.png" />
+            <img :src="detail.junior.avatar" />
         </ion-thumbnail>
         <div class="info">
-            <div class="name">吴尧东</div>
-            <div class="time">{{ $t('distribution.joinTeamAt') }}: 2022-11-20 1</div>
+            <div class="name">{{ detail.junior.nickname }}</div>
+            <div class="time">{{ $t('distribution.joinTeamAt') }}: {{ detail.createdAt.substr(0, 11) }}</div>
         </div>
         <div class="divider"></div>
         <div class="profit">
-            <div class="value">+13.5</div>
+            <div class="value">+{{ detail.commissionSum }}</div>
             <div class="label">{{ $t('distribution.totalProfit') }}</div>
         </div>
     </div>
@@ -18,7 +18,7 @@
 <script setup>
 import { ref, computed, onMounted } from 'vue'
 const props = defineProps({
-    commission: {
+    detail: {
         type: Object,
         default: () => {}
     }

+ 2 - 2
src/views/BalanceRecordPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('title.balanceRecord') }}</ion-title>
             </ion-toolbar>
@@ -19,7 +19,7 @@
                 </div>
                 <div class="total">{{ $t('balance.totalWithdraw') }}{{ $t('balance.symbol') }}{{ totalWithDraw }}</div>
             </ion-item>
-            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="loadmore">
+            <van-list v-model="loading" :finished="finished" :finished-text="$t('common.loadFinish')" @load="loadmore">
                 <ion-item class="record-item" v-for="item in records" :key="item.id" :class="item.remark.split('.')">
                     <ion-icon :src="balanceIcon"></ion-icon>
                     <ion-label>

+ 1 - 1
src/views/ChangeTextPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
             </ion-toolbar>
         </ion-header>

+ 8 - 8
src/views/CommissionListPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('title.balanceRecord') }}</ion-title>
             </ion-toolbar>
@@ -18,12 +18,12 @@
                     <ion-icon :icon="caretDownOutline"></ion-icon>
                 </div>
                 <div class="total">
-                    {{ $t('distribution.totalProfit') }}{{ $t('balance.symbol') }}123&nbsp;&nbsp;
-                    {{ $t('distribution.orderNum') }}123
+                    {{ $t('distribution.totalProfit') }}{{ $t('balance.symbol') }}{{ totalCommission }}&nbsp;&nbsp;
+                    {{ $t('distribution.orderNum') }}{{ records.length }}
                 </div>
             </ion-item>
-            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="loadmore">
-                <CommissionItem v-for="item in records" :key="item.id"></CommissionItem>
+            <van-list v-model="loading" :finished="finished" :finished-text="$t('common.loadFinish')" @load="loadmore">
+                <CommissionItem v-for="item in records" :key="item.id" :detail="item"></CommissionItem>
                 <van-empty v-if="finished && records.length === 0"></van-empty>
             </van-list>
         </ion-content>
@@ -66,8 +66,8 @@ export default {
         yearMonth() {
             return format(parseISO(this.date, new Date()), 'yyyy MMM')
         },
-        totalWithDraw() {
-            return -this.records.filter(i => i.remark === 'balance.record.withdraw').reduce((a, b) => a + b.amount, 0)
+        totalCommission() {
+            return this.records.reduce((a, b) => a + b.amount, 0).toFixed(2)
         }
     },
     methods: {
@@ -84,7 +84,7 @@ export default {
         getData(e) {
             const date = parseISO(this.date, new Date())
             return this.$http
-                .get('/user/balanceRecord', {
+                .get('/commission/records', {
                     page: this.page,
                     size: 10000,
                     start: format(startOfMonth(date), 'yyyy-MM-dd HH:mm:ss'),

+ 1 - 1
src/views/CommissionRecord.vue

@@ -13,7 +13,7 @@
         </div>
         <van-pull-refresh v-model="refreshing" @refresh="onRefresh" success-text="刷新成功">
             <div class="content">
-                <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
+                <van-list v-model="loading" :finished="finished" :finished-text="$t('common.loadFinish')" @load="onLoad">
                     <div class="order-list">
                         <record v-for="(item, index) in list" :info="item" :key="index"></record>
                         <!-- <record></record>

+ 27 - 27
src/views/DistributionPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('title.distribution') }}</ion-title>
             </ion-toolbar>
@@ -11,7 +11,7 @@
         <ion-content>
             <div class="head">
                 <div class="title">{{ $t('title.distribution') }}</div>
-                <div class="desc">{{ $t('distribution.myInvitor') }}:</div>
+                <div class="desc" v-if="superior">{{ $t('distribution.myInvitor') }}: {{ superior.nickname }}</div>
                 <div class="qr-wrapper" @click="showQR = true">
                     <img src="@/assets/icon_qr.png" class="qr" />
                     <div class="desc">
@@ -25,7 +25,7 @@
                     <div class="col">
                         <div class="content">
                             <div class="value profit">
-                                123<span class="unit">{{ $t('balance.unit') }}</span>
+                                {{ stat.commissionSum }}<span class="unit">{{ $t('balance.unit') }}</span>
                             </div>
                             <div class="title">{{ $t('distribution.myProfit') }}</div>
                             <div class="btn-detail" @click="$router.push({ name: 'commissionList' })">
@@ -36,7 +36,7 @@
                     <div class="divider"></div>
                     <div class="col">
                         <div class="content">
-                            <div class="value">123</div>
+                            <div class="value">{{ stat.inviteNum }}</div>
                             <div class="title">{{ $t('distribution.teamNum') }}</div>
                             <div class="btn-team" @click="$router.push({ name: 'myTeam' })">
                                 {{ $t('distribution.viewTeam') }}
@@ -47,12 +47,12 @@
             </div>
             <div class="list-header">
                 <div class="title">{{ $t('distribution.profitDetails') }}</div>
-                <div class="more">
+                <div class="more" @click="$router.push({ name: 'commissionList' })">
                     <div>{{ $t('common.more') }}</div>
                     <ion-icon :icon="chevronForwardOutline"></ion-icon>
                 </div>
             </div>
-            <CommissionItem></CommissionItem>
+            <CommissionItem v-for="item in records" :key="item.id" :detail="item"></CommissionItem>
             <ion-modal class="qr-modal dialog" :is-open="showQR" @didDismiss="showQR = false">
                 <ion-content>
                     <vue-qrcode value="Hello, World!" :options="{ width: 250, margin: 2 }"></vue-qrcode>
@@ -74,40 +74,40 @@ export default {
     },
     data() {
         return {
-            commission: {},
+            stat: {},
             show: false,
             url: '',
             caretForwardCircleOutline,
             chevronForwardOutline,
-            showQR: false
+            showQR: false,
+            records: [],
+            superior: null
         }
     },
     computed: {
         ...mapState(useUserStore, ['user'])
     },
-    mounted() {
-        this.getInfo()
-    },
-    methods: {
-        withdrawApply() {
+    created() {
+        this.getStat()
+        this.getLatestRecords()
+        if (this.user.superiorId) {
             this.$http
-                .post('/withdrawApply/apply')
+                .get('/user/mySuperior')
                 .then(res => {
-                    this.$dialog
-                        .alert({
-                            message: '提现申请提交成功'
-                        })
-                        .then(() => {
-                            this.getInfo()
-                        })
-                })
-                .catch(e => {
-                    return this.$toast(e.error)
+                    this.superior = res
                 })
+                .catch(() => {})
+        }
+    },
+    methods: {
+        getStat() {
+            this.$http.get('/commission/myStat').then(res => {
+                this.stat = res
+            })
         },
-        getInfo() {
-            this.$http.get('/commission/overview').then(res => {
-                this.commission = res
+        getLatestRecords() {
+            this.$http.get('/commission/records').then(res => {
+                this.records = res.content
             })
         }
     }

+ 9 - 7
src/views/LoginPage.vue

@@ -35,14 +35,14 @@
                             <img src="../assets/login_icon_mima.png" alt="" class="icon" />
                         </template>
                         <template #button>
-                            <div class="showPsd" @click="showPsd = !showPsd">
-                                <img v-if="showPsd" src="../assets/login_icon_kejian.png" alt="" />
+                            <div class="showPsd" @click="showPwd = !showPwd">
+                                <img v-if="showPwd" src="../assets/login_icon_kejian.png" alt="" />
                                 <img v-else src="../assets/login_icon_bukejian.png" alt="" />
                             </div>
                         </template>
                     </van-field>
                     <van-cell class="xieyi">
-                        <van-checkbox v-model="checked">
+                        <van-checkbox v-model="agreeTerm">
                             已阅读并同意
                             <!-- <span @click.stop="$router.push('/agreement?page=service')"> 《用户服务协议》 </span> -->
                             <span class="rule"> 用户协议 </span>
@@ -65,6 +65,8 @@
 import phone from '../mixins/phone'
 import { ref } from 'vue'
 import { useUserStore } from '../stores/user'
+import { useStorage } from '@vueuse/core'
+
 let fromRoute = null
 export default {
     mixins: [phone],
@@ -74,20 +76,20 @@ export default {
             password: ''
         })
 
-        const checked = ref(false)
+        const showPwd = ref(false)
 
-        const showPsd = ref(false)
+        const agreeTerm = useStorage('agreeTerm', false, localStorage)
 
         const userStore = useUserStore()
 
-        return { formData, checked, showPsd, login: userStore.login }
+        return { formData, agreeTerm, showPwd, login: userStore.login }
     },
     beforeRouteEnter(to, from) {
         fromRoute = from
     },
     methods: {
         onSubmit(e) {
-            if (!this.checked) {
+            if (!this.agreeTerm) {
                 this.$toast('请先阅读并同意注册协议')
                 return
             }

+ 36 - 3
src/views/MyTeamPage.vue

@@ -3,19 +3,52 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('title.myTeam') }}</ion-title>
             </ion-toolbar>
         </ion-header>
         <ion-content>
-            <TeamMember v-for="n in 20" :key="n"></TeamMember>
+            <van-list
+                ref="list"
+                v-model:loading="loading"
+                :finished="finished"
+                :finished-text="$t('common.loadFinish')"
+                @load="loadmore"
+            >
+                <TeamMember v-for="(item, i) in list" :key="i" :detail="item"></TeamMember>
+            </van-list>
         </ion-content>
     </ion-page>
 </template>
 
-<script setup>
+<script>
 import TeamMember from '../components/TeamMember.vue'
+import { List } from 'vant'
+export default {
+    components: { TeamMember },
+    data() {
+        return { loading: false, finished: false, page: -1, list: [] }
+    },
+    mounted() {
+        setTimeout(() => {
+            this.$refs.list.check()
+        }, 50)
+    },
+    methods: {
+        loadmore() {
+            this.page++
+            this.$http.get('/commission/juniors', { page: this.page, sort: 'createdAt,desc' }).then(res => {
+                if (res.first) {
+                    this.list = []
+                }
+                this.list = this.list.concat(res.content)
+                this.finished = res.last
+                this.loading = false
+            })
+        }
+    }
+}
 </script>
 
 <style lang="less" scoped></style>

+ 1 - 1
src/views/OrderDetailPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back(-1)"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back(-1)"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('order.detail') }}</ion-title>
             </ion-toolbar>

+ 7 - 2
src/views/OrderPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back(-1)"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back(-1)"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('order.my') }}</ion-title>
             </ion-toolbar>
@@ -27,7 +27,12 @@
             </ion-item-divider>
             <div class="tabs-placeholder"></div>
             <van-empty v-if="finished && list.length === 0" :image="emptyImg"></van-empty>
-            <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="loadmore">
+            <van-list
+                v-model:loading="loading"
+                :finished="finished"
+                :finished-text="$t('common.loadFinish')"
+                @load="loadmore"
+            >
                 <order-item v-for="item in list" :key="item.id" :info="item"></order-item>
             </van-list>
         </ion-content>

+ 1 - 1
src/views/ProductDetailPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" text="" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('product.detail') }}</ion-title>
             </ion-toolbar>

+ 8 - 2
src/views/ProductListPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" text="" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ batchInfo.name }}</ion-title>
                 <ion-buttons slot="end">
@@ -26,7 +26,13 @@
                 <img src="../assets/info_icon_shijian.png" alt="" />
                 <span><van-count-down :time="status" /> 开抢</span>
             </div>
-            <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
+            <van-list
+                class="list"
+                v-model:loading="loading"
+                :finished="finished"
+                :finished-text="$t('common.loadFinish')"
+                @load="getData"
+            >
                 <div class="product" v-for="(item, index) in list" :key="index">
                     <product-info list v-model:info="list[index]"></product-info>
                 </div>

+ 2 - 2
src/views/ProductSearchPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar class="head">
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" text="" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" text="" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ batchInfo.name }}</ion-title>
             </ion-toolbar>
@@ -21,7 +21,7 @@
                     </template>
                 </van-search>
             </div>
-            <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
+            <van-list class="list" v-model:loading="loading" :finished="finished" :finished-text="$t('common.loadFinish')" @load="getData">
                 <div class="product" v-for="(item, index) in list" :key="index">
                     <product-info list v-model:info="list[index]"></product-info>
                 </div>

+ 1 - 1
src/views/SettingPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('user.profile') }}</ion-title>
             </ion-toolbar>

+ 1 - 1
src/views/WalletPage.vue

@@ -3,7 +3,7 @@
         <ion-header>
             <ion-toolbar>
                 <ion-buttons slot="start">
-                    <ion-back-button default-href="#" @click="$router.back()"></ion-back-button>
+                    <ion-back-button text="" default-href="#" @click="$router.back()"></ion-back-button>
                 </ion-buttons>
                 <ion-title>{{ $t('user.wallet') }}</ion-title>
             </ion-toolbar>