feat(resettle2): 架构2功能实现
This commit is contained in:
parent
e0f56bfa1e
commit
84d7c728c6
|
@ -47,3 +47,6 @@ export const getRefundList = params =>
|
|||
// 获取个人点位信息
|
||||
export const getPersonalPointInfo = () =>
|
||||
http.get('/member/api/member/member-point')
|
||||
|
||||
export const getMemberBoxCount = () =>
|
||||
http.get('/retail-member/api/retail-member/member-box')
|
||||
|
|
|
@ -20,7 +20,7 @@ module.exports = vm => {
|
|||
|
||||
//#ifdef DEV_SERVER
|
||||
console.log('DEV_SERVER')
|
||||
config.baseURL = 'https://t-zk.beida666.com/prod-api'
|
||||
config.baseURL = 'http://192.168.2.86:8080'
|
||||
//#endif
|
||||
|
||||
//#ifdef QA_SERVER
|
||||
|
|
|
@ -659,18 +659,22 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
/* 点位展示区域 */
|
||||
/* 点位展示区域 - 紧凑布局 */
|
||||
.points-container {
|
||||
.layer-wrapper {
|
||||
margin-bottom: 30rpx;
|
||||
margin-bottom: 16rpx;
|
||||
|
||||
.layer-title {
|
||||
font-size: 28rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
margin-bottom: 20rpx;
|
||||
padding-left: 20rpx;
|
||||
color: #005bac;
|
||||
margin-bottom: 12rpx;
|
||||
padding-left: 12rpx;
|
||||
position: relative;
|
||||
background: #f8fafe;
|
||||
padding: 8rpx 12rpx;
|
||||
border-radius: 8rpx;
|
||||
display: inline-block;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
|
@ -678,42 +682,42 @@ export default {
|
|||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 8rpx;
|
||||
height: 28rpx;
|
||||
width: 4rpx;
|
||||
height: 20rpx;
|
||||
background: #005bac;
|
||||
border-radius: 4rpx;
|
||||
border-radius: 2rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.points-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16rpx;
|
||||
gap: 8rpx;
|
||||
|
||||
&.multi-row {
|
||||
.point-slot {
|
||||
width: calc((100% - 48rpx) / 4);
|
||||
width: calc((100% - 24rpx) / 4);
|
||||
}
|
||||
}
|
||||
|
||||
.point-slot {
|
||||
flex: 1;
|
||||
min-height: 120rpx;
|
||||
border-radius: 16rpx;
|
||||
min-height: 70rpx;
|
||||
border-radius: 12rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
transition: all 0.3s ease;
|
||||
transition: all 0.2s ease;
|
||||
|
||||
&.small {
|
||||
min-height: 100rpx;
|
||||
min-height: 60rpx;
|
||||
}
|
||||
|
||||
&.occupied {
|
||||
background: linear-gradient(135deg, #005bac 0%, #0066cc 100%);
|
||||
color: #fff;
|
||||
box-shadow: 0 4rpx 12rpx rgba(0, 91, 172, 0.3);
|
||||
box-shadow: 0 2rpx 8rpx rgba(0, 91, 172, 0.25);
|
||||
|
||||
&:active {
|
||||
transform: scale(0.95);
|
||||
|
@ -721,12 +725,12 @@ export default {
|
|||
}
|
||||
|
||||
&.empty {
|
||||
background: #f5f6f8;
|
||||
border: 2rpx dashed #ccc;
|
||||
background: #fafbfc;
|
||||
border: 1rpx dashed #d9d9d9;
|
||||
color: #999;
|
||||
|
||||
&:active {
|
||||
background: #e8e9eb;
|
||||
background: #f0f0f0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -736,7 +740,7 @@ export default {
|
|||
align-items: center;
|
||||
|
||||
.point-label {
|
||||
font-size: 24rpx;
|
||||
font-size: 20rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
</view>
|
||||
<view class="stage-info">
|
||||
<text class="stage">{{ item.stageLabel }}</text>
|
||||
<text class="date">{{ formatDate(item.stageDate) }}</text>
|
||||
<!-- <text class="date">{{ formatDate(item.stageDate) }}</text> -->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
@ -589,7 +589,7 @@ export default {
|
|||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 30rpx;
|
||||
margin-bottom: 10rpx;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 2rpx solid #f5f6f8;
|
||||
|
||||
|
@ -661,18 +661,22 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
/* 点位展示区域 */
|
||||
/* 点位展示区域 - 紧凑布局 */
|
||||
.points-container {
|
||||
.layer-wrapper {
|
||||
margin-bottom: 30rpx;
|
||||
margin-bottom: 16rpx;
|
||||
|
||||
.layer-title {
|
||||
font-size: 28rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
margin-bottom: 20rpx;
|
||||
padding-left: 20rpx;
|
||||
color: #005bac;
|
||||
margin-bottom: 12rpx;
|
||||
padding-left: 12rpx;
|
||||
position: relative;
|
||||
background: #f8fafe;
|
||||
padding: 8rpx 12rpx;
|
||||
border-radius: 8rpx;
|
||||
display: inline-block;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
|
@ -680,42 +684,42 @@ export default {
|
|||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 8rpx;
|
||||
height: 28rpx;
|
||||
width: 4rpx;
|
||||
height: 20rpx;
|
||||
background: #005bac;
|
||||
border-radius: 4rpx;
|
||||
border-radius: 2rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.points-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16rpx;
|
||||
gap: 8rpx;
|
||||
|
||||
&.multi-row {
|
||||
.point-slot {
|
||||
width: calc((100% - 48rpx) / 4);
|
||||
width: calc((100% - 24rpx) / 4);
|
||||
}
|
||||
}
|
||||
|
||||
.point-slot {
|
||||
flex: 1;
|
||||
min-height: 120rpx;
|
||||
border-radius: 16rpx;
|
||||
min-height: 70rpx;
|
||||
border-radius: 12rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
transition: all 0.3s ease;
|
||||
transition: all 0.2s ease;
|
||||
|
||||
&.small {
|
||||
min-height: 100rpx;
|
||||
min-height: 60rpx;
|
||||
}
|
||||
|
||||
&.occupied {
|
||||
background: linear-gradient(135deg, #005bac 0%, #0066cc 100%);
|
||||
color: #fff;
|
||||
box-shadow: 0 4rpx 12rpx rgba(0, 91, 172, 0.3);
|
||||
box-shadow: 0 2rpx 8rpx rgba(0, 91, 172, 0.25);
|
||||
|
||||
&:active {
|
||||
transform: scale(0.95);
|
||||
|
@ -723,12 +727,12 @@ export default {
|
|||
}
|
||||
|
||||
&.empty {
|
||||
background: #f5f6f8;
|
||||
border: 2rpx dashed #ccc;
|
||||
background: #fafbfc;
|
||||
border: 1rpx dashed #d9d9d9;
|
||||
color: #999;
|
||||
|
||||
&:active {
|
||||
background: #e8e9eb;
|
||||
background: #f0f0f0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -738,7 +742,7 @@ export default {
|
|||
align-items: center;
|
||||
|
||||
.point-label {
|
||||
font-size: 24rpx;
|
||||
font-size: 20rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,6 +47,68 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 会员点位信息展示区域 -->
|
||||
<view class="member-point-info">
|
||||
<view class="point-info-grid">
|
||||
<view class="point-info-item">
|
||||
<view class="point-info-value">{{
|
||||
personalPointInfo.pointCount || 0
|
||||
}}</view>
|
||||
<view class="point-info-label">子点位总数</view>
|
||||
</view>
|
||||
<view class="point-info-divider"></view>
|
||||
<view class="point-info-item">
|
||||
<view class="point-info-value">{{
|
||||
personalPointInfo.waitPointCount || 0
|
||||
}}</view>
|
||||
<view class="point-info-label">待激活点位</view>
|
||||
</view>
|
||||
<view class="point-info-divider"></view>
|
||||
<view class="point-info-item">
|
||||
<view class="point-info-value">{{
|
||||
personalPointInfo.repPvBalance || 0
|
||||
}}</view>
|
||||
<view class="point-info-label">复购业绩余额</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="my_order">
|
||||
<view class="my_title">
|
||||
<text class="thetitle">{{ '市场动态' }}</text>
|
||||
</view>
|
||||
<view class="market-stats-container">
|
||||
<view
|
||||
class="stat-block primary"
|
||||
@click="goTo('/pages/mine/marketDynamic/achievement-list')"
|
||||
>
|
||||
<view class="stat-content">
|
||||
<view class="stat-item">
|
||||
<text class="stat-label">总业绩</text>
|
||||
<view class="stat-value">
|
||||
<text class="stat-value__integer">{{
|
||||
formattedTotalSumPv.integer
|
||||
}}</text>
|
||||
<text class="stat-value__decimal">{{
|
||||
formattedTotalSumPv.decimal
|
||||
}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="stat-divider"></view>
|
||||
<view class="stat-item">
|
||||
<text class="stat-label">小区业绩</text>
|
||||
<view class="stat-value">
|
||||
<text class="stat-value__integer">{{
|
||||
formattedSmallAreaPv.integer
|
||||
}}</text>
|
||||
<text class="stat-value__decimal">{{
|
||||
formattedSmallAreaPv.decimal
|
||||
}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="my_order">
|
||||
<view class="my_title">
|
||||
<text class="thetitle">{{ '我的订单' }}</text>
|
||||
|
@ -87,33 +149,6 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 会员点位信息展示区域 -->
|
||||
<view class="member-point-info">
|
||||
<view class="point-info-grid">
|
||||
<view class="point-info-item">
|
||||
<view class="point-info-label">子点位总数</view>
|
||||
<view class="point-info-value">{{
|
||||
personalPointInfo.pointCount || 0
|
||||
}}</view>
|
||||
</view>
|
||||
<view class="point-info-divider"></view>
|
||||
<view class="point-info-item">
|
||||
<view class="point-info-label">待激活点位</view>
|
||||
<view class="point-info-value">{{
|
||||
personalPointInfo.waitPointCount || 0
|
||||
}}</view>
|
||||
</view>
|
||||
<view class="point-info-divider"></view>
|
||||
<view class="point-info-item">
|
||||
<view class="point-info-label">复购业绩余额</view>
|
||||
<view class="point-info-value">{{
|
||||
personalPointInfo.repPvBalance || 0
|
||||
}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="my_order">
|
||||
<view class="order_flex">
|
||||
<template v-for="(item, index) in otherMenuList">
|
||||
|
@ -174,7 +209,11 @@ import * as min from '@/config/balance.js'
|
|||
import * as api from '@/config/login.js'
|
||||
import { MEMBER_SIGN } from '@/util/common.js'
|
||||
import RegionSelect from '@/components/region-select/index.vue'
|
||||
import { getRegionSelect, getPersonalPointInfo } from '@/config/mine.js'
|
||||
import {
|
||||
getRegionSelect,
|
||||
getPersonalPointInfo,
|
||||
getMemberBoxCount,
|
||||
} from '@/config/mine.js'
|
||||
// import talentList from "@/components/talentList.vue";
|
||||
export default {
|
||||
components: {
|
||||
|
@ -280,10 +319,12 @@ export default {
|
|||
this.getInfo().then(isNormal => {
|
||||
this.orderNum()
|
||||
this.getPersonalPointInfo()
|
||||
this.getMemberMarket()
|
||||
this.isNormal = isNormal
|
||||
if (!isNormal) {
|
||||
return
|
||||
}
|
||||
this.isNormal = isNormal
|
||||
|
||||
// this.getUserAwardss()
|
||||
})
|
||||
},
|
||||
|
@ -327,12 +368,6 @@ export default {
|
|||
rawPercentage: clampedPercentage,
|
||||
}
|
||||
},
|
||||
marketWrapperVisible() {
|
||||
return this.userInfo.memberSign !== MEMBER_SIGN.ZERO_LEVEL
|
||||
},
|
||||
regionInfoVisible() {
|
||||
return this.regionInfo?.regionStatus === 0
|
||||
},
|
||||
formattedTotalSumPv() {
|
||||
const value = String(this.totalSumPv || '0.00')
|
||||
const parts = value.split('.')
|
||||
|
@ -349,25 +384,21 @@ export default {
|
|||
decimal: parts.length > 1 ? `.${parts[1]}` : '',
|
||||
}
|
||||
},
|
||||
formattedTotalBox() {
|
||||
const value = String(this.totalBox || '0')
|
||||
const parts = value.split('.')
|
||||
return {
|
||||
integer: parts[0],
|
||||
decimal: parts.length > 1 ? `.${parts[1]}` : '',
|
||||
}
|
||||
},
|
||||
formattedSmallAreaBox() {
|
||||
const value = String(this.smallAreaBox || '0')
|
||||
const parts = value.split('.')
|
||||
return {
|
||||
integer: parts[0],
|
||||
decimal: parts.length > 1 ? `.${parts[1]}` : '',
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
methods: {
|
||||
getMemberMarket() {
|
||||
getMemberBoxCount({
|
||||
pkBigMember: this.userInfo.memberCode,
|
||||
}).then(res => {
|
||||
if (res.code == 200) {
|
||||
// this.totalBox = res.data?.totalBox || 0
|
||||
// this.smallAreaBox = res.data?.smallAreaBox || 0
|
||||
this.totalSumPv = res.data?.totalSumPv || 0
|
||||
this.smallAreaPv = res.data?.smallAreaPv || 0
|
||||
}
|
||||
})
|
||||
},
|
||||
getPersonalPointInfo() {
|
||||
getPersonalPointInfo().then(res => {
|
||||
if (res.code == 200) {
|
||||
|
@ -1261,7 +1292,7 @@ export default {
|
|||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
font-weight: 500;
|
||||
margin-bottom: 8rpx;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
|
||||
.point-info-divider {
|
||||
|
|
Loading…
Reference in New Issue