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