Files
xingmeng-uniapp/pages/users/users_share/info.vue
PC-202306242200\Administrator c7cbc11d07 first commit
2026-03-28 23:07:10 +08:00

305 lines
8.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="xkl-com-bg">
<view style="height: 20rpx"></view>
<view style="background-color: #ffffff; border-radius: 10rpx; padding: 30rpx; font-size: 30rpx">
<view style="display: flex; align-items: center">
<u-image width="100rpx" height="100rpx" :src="shopinfo.avatar" shape="circle"></u-image>
<view style="width: 20rpx"></view>
<view>
<view>{{ shopinfo.nickname }}</view>
<view style="height: 10rpx"></view>
<view>{{ shopinfo.account }}</view>
</view>
</view>
<u-divider></u-divider>
<view style="display: flex; justify-content: space-between">
<view>
<view>推广人数{{ shopinfo.childCount || 0 }}</view>
<view>订单金额{{ shopinfo.numberCount || 0 }}</view>
<view>订单数量{{ shopinfo.orderCount || 0 }}</view>
</view>
<view style="width: 20rpx"></view>
<view>
<view>手机号{{ shopinfo.phone || '-' }}</view>
<view style="height: 10rpx"></view>
<view>等级{{ shopinfo.levelRatio }}</view>
</view>
</view>
<view style="height: 16rpx"></view>
<view style="display: flex; align-items: center; justify-content: space-between">
<view>注册时间{{ shopinfo.createTime }}</view>
<view>
<u-button @click="show = true" type="primary" size="small" color="#f33c2b" :plain="true" text="修改等级"></u-button>
</view>
</view>
</view>
<view style="height: 20rpx"></view>
<view style="background-color: #ffffff; border-radius: 10rpx; padding: 30rpx; font-size: 30rpx">
<view style="display: flex; align-items: center">
<view style="background-color: #ffffff; border-radius: 12rpx; padding: 10rpx" :class="search.weekType === 1 ? 'xkl_cur' : 'xkl_no'" @click="checkweek(1)">
本周
</view>
<view style="width: 30rpx"></view>
<view style="background-color: #ffffff; border-radius: 12rpx; padding: 10rpx" :class="search.weekType == 2 ? 'xkl_cur' : 'xkl_no'" @click="checkweek(2)">上周</view>
<view style="width: 30rpx"></view>
<view>
<uni-datetime-picker v-model="single" type="daterange" @change="maskClick">
<view style="background-color: #ffffff; border-radius: 12rpx; padding: 10rpx" :class="search.weekType === '' ? 'xkl_cur' : 'xkl_no'">
<text v-if="search.startTime">{{ search.startTime }} - {{ search.endTime }}</text>
<text v-else>自定义时间</text>
</view>
</uni-datetime-picker>
</view>
<!-- <view
@click="screen.showcalendar = true"
style="background-color: #ffffff; border-radius: 12rpx; padding: 10rpx"
:class="search.week === '' ? 'xkl_cur' : 'xkl_no'"
>
<text v-if="search.startTime">{{ search.startTime }} - {{ search.endTime }}</text>
<text v-else>自定义时间</text>
</view> -->
</view>
<view style="margin-top: 30rpx; display: flex; align-items: center">
<view
v-for="(item, index) in getDateRanges()"
:key="index"
style="background-color: #ffffff; border-radius: 12rpx; padding: 10rpx; margin-right: 30rpx"
:class="search.week === item.name ? 'xkl_cur' : 'xkl_no'"
@click="checkTime(item)"
>
{{ item.name }}
</view>
</view>
<u-divider></u-divider>
<view style="height: 20rpx"></view>
<qiun-data-charts type="line" :opts="opts" :chartData="chartData" />
</view>
<u-picker :show="show" :columns="columns" keyName="name" @cancel="show = false" @confirm="confirm"></u-picker>
<view style="height: 100rpx"></view>
</view>
</template>
<script>
import { shareUserInfo, shareUserInfoStats, editLevel, levelRatioList } from '@/api/user.js';
export default {
data() {
const currentDate = this.getDate({
format: true
});
return {
show: false,
screen: {
showcalendar: false
},
shopinfo: {
nickname: '',
username: '',
money: '',
mobile: '',
vip: '',
device_num: '',
id: ''
},
team_device_num: 0,
chartData: {},
opts: {
padding: [15, 10, 0, 15],
enableScroll: false,
legend: {},
xAxis: {
disableGrid: true,
showTitle: false
},
yAxis: {
disabled: true,
gridType: 'dash',
dashLength: 2
},
extra: {
line: {
type: 'curve',
width: 2,
activeType: 'none'
}
}
},
search: {
uid: '',
start_time: '',
end_time: '',
weekType: 1
},
dateTime: currentDate,
single: '',
team: {},
columns: []
};
},
onLoad(option) {
console.log(option.id, 'option.id');
if (option && option.id) {
this.search.uid = option.id;
}
levelRatioList().then((res) => {
console.log(res.data);
this.columns = [res.data];
});
},
onReady() {
this.getServerData();
},
async onPullDownRefresh() {
this.search.weekType = 1;
this.getServerData();
uni.stopPullDownRefresh();
},
methods: {
confirm(e) {
editLevel({
uid: this.search.uid,
levelRatio: e.value[0].level
}).then((res) => {
this.show = false
shareUserInfo({ uid: this.search.uid }).then((res) => {
uni.showToast({
title:'修改成功',
icon:"none"
})
this.shopinfo = res.data;
});
});
},
getDate(type) {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (type === 'start') {
year = year - 60;
} else if (type === 'end') {
year = year + 2;
}
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}`;
},
bindDateChange(e) {
this.dateTime = e.detail.value;
},
getDateRanges() {
const now = new Date();
const year = now.getFullYear();
const month = now.getMonth(); // 月份从 0 开始,所以当前月份是 month + 1
// 定义日期范围
const ranges = {
firstRange: {
name: '1号-10号',
start: new Date(year, month, 1), // 1号
end: new Date(year, month, 10) // 10号
},
secondRange: {
name: '11号-20号',
start: new Date(year, month, 11), // 11号
end: new Date(year, month, 20) // 20号
},
thirdRange: {
name: '21号-月底',
start: new Date(year, month, 21) // 21号
}
};
// 计算当前月份的最后一天
const lastDayOfMonth = new Date(year, month + 1, 0);
ranges.thirdRange.end = lastDayOfMonth; // 月底
// 格式化日期为 yyyy-mm-dd
function formatDate(date) {
const yyyy = date.getFullYear();
const mm = String(date.getMonth() + 1).padStart(2, '0'); // 月份从 1 开始
const dd = String(date.getDate()).padStart(2, '0');
return `${yyyy}-${mm}-${dd}`;
}
return [
{
name: ranges.firstRange.name,
start: formatDate(ranges.firstRange.start),
end: formatDate(ranges.firstRange.end)
},
{
name: ranges.secondRange.name,
start: formatDate(ranges.secondRange.start),
end: formatDate(ranges.secondRange.end)
},
{
name: ranges.thirdRange.name,
start: formatDate(ranges.thirdRange.start),
end: formatDate(ranges.thirdRange.end)
}
];
},
checkTime(e) {
this.search.startTime = e.start;
this.search.endTime = e.end;
this.screen.showcalendar = false;
this.search.weekType = '';
this.getServerData();
},
checkweek(week) {
this.search.weekType = week;
this.search.startTime = '';
this.search.endTime = '';
this.getServerData();
},
maskClick(e) {
this.search.startTime = e[0];
this.search.endTime = e[e.length - 1];
this.search.weekType = '';
this.getServerData();
},
getServerData() {
shareUserInfo({ uid: this.search.uid }).then((res) => {
this.shopinfo = res.data;
});
shareUserInfoStats(this.search).then((res) => {
this.team = res.data;
let _list = [
{
name: '订单数量',
data: res.data.stats7.map((item) => {
return item.num;
})
},
{
name: '订单金额',
data: res.data.stats7.map((item) => {
return item.payPrice;
})
},
];
this.chartData.categories = res.data.dayStr;
this.chartData.series = _list;
// this.chartData.console.log(res);
});
}
}
};
</script>
<style lang="scss">
.xkl_cur {
border: 1px solid #f33c2b;
color: #f33c2b;
}
.xkl_no {
border: 1px solid #999999;
color: #999999;
}
</style>