Commit 540a5f3c authored by leiqingsong's avatar leiqingsong

页面接口

parent 2a317c8a
......@@ -11236,6 +11236,11 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz",
"integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
},
"vue-count-to": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/vue-count-to/-/vue-count-to-1.0.13.tgz",
"integrity": "sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ=="
},
"vue-demi": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.6.1.tgz",
......
......@@ -20,6 +20,7 @@
"qs": "^6.9.6",
"vant": "^2.12.6",
"vue": "^2.6.11",
"vue-count-to": "^1.0.13",
"vue-echarts": "^6.0.0-alpha.5",
"vue-router": "^3.2.0",
"vuex": "^3.4.0"
......
......@@ -15,3 +15,17 @@ export function smsCode(params) {
data: final_params
});
}
/**
* 上传图片 后端还在修改 TODO
* @param {*} params files 文件
* @param {*} params userId 用户id
*/
export function uploadImage(userId, file) {
return request({
url: "/ZX/uploadImage",
method: "post",
data: file
})
}
import request from "@/utils/request";
/**
* 我的直推
* @param {*} params userId
* @returns
*/
export function recomendInfo(params) {
return request({
url: "/user/myRecommend",
method: "get",
params
})
}
/**
* 获取我的直推详情
* @param {*} param userId * string
* @param {*} param userlevel * int 等级
* @returns
*/
export function recommendDetail(params) {
return request({
url: "/user/myRecommendInfo",
method: "get",
params
})
}
import request from "@/utils/request";
/**
* 本月累计奖金
* @param {*} params userId
* @returns
*/
export function monthRewards(params) {
return request({
url: "award/queryMonthAward",
method: "get",
params
})
}
\ No newline at end of file
......@@ -8,7 +8,7 @@ export function Login() {
});
}
/**
* 发送验证码
* 发送验证码
* @param {*} params userId required 手机号
* @param {*} param sms required 验证码
* @param {*} param beInvitedCode required 邀请码
......@@ -23,3 +23,32 @@ export function register(params) {
data: final_params
});
}
/**
* 填写邀请码
* @param {*} params inviteCode
* @param {*} params userId
* @returns
*/
export function fillInviteCode(params) {
return request({
url: "/user/fillInInviteCode",
method: "post",
params
})
}
/**
* 设置头像
* @param {*} param headImage 头像url
* @param {*} param userId
* @returns
*/
export function setAvatar(params) {
return request({
url: "/user/setHeadImage",
method: "post",
params
})
}
......@@ -8,7 +8,7 @@
class="close-icon"
name="close"
size="30"
@click="BaseDialogShow = false"
@click="onClose"
/>
<p v-if="BaseDialogTitle" class="title">{{ BaseDialogTitle }}</p>
<slot name="content" />
......@@ -45,6 +45,9 @@ export default {
methods: {
onBtn() {
this.$emit("onClick");
},
onClose() {
this.$emit("onClose");
}
}
};
......
......@@ -134,13 +134,13 @@ const routes = [
path: "/register",
name: "Register",
component: () => import("@/views/register"),
meta: { title: "", noNav: true }
meta: { title: "注册", noNav: true }
},
{
path: "/customer",
name: "customerService",
component: () => import("@/views/customer-service"),
meta: { title: "", noNav: true }
meta: { title: "专属客服", noNav: true }
}
];
......
......@@ -2,7 +2,7 @@
<div class="modefy-avatar">
<img class="avatar" :src="avatar" alt />
<div class="btn">
<van-button type="primary" plain>确定</van-button>
<van-button type="primary" plain style="height:44px">确定</van-button>
<van-uploader
:max-count="1"
:before-delete="onDeleteAvatar"
......@@ -15,6 +15,7 @@
</template>
<script>
import { setAvatar } from "@/api/user";
export default {
name: "ModefyAvatar",
data() {
......@@ -31,6 +32,11 @@ export default {
onRead(file) {
this.avatar = file.content;
console.log("file", file);
const params = {
headImage: '',
userId: "18757121665"
}
setAvatar(params).then()
},
onDeleteAvatar(file, detail) {
return new Promise((resolve, reject) => {
......
......@@ -2,7 +2,7 @@
<div class="invitee">
<div class="baseInfo">
<img class="avatar" src="@/assets/images/avatar.png" alt="用户头像" />
<span class="userName">丁晓霞</span>
<span class="userName">{{ inviteeItem.userId }}</span>
<span style="font-size: 12px;color:#666666">西天森合伙人</span>
</div>
<div class="detail">
......@@ -12,16 +12,29 @@
</p>
<p>
<span>累计消费金额</span>
<span>1020</span>
<span>{{ inviteeItem.historyCount }}</span>
</p>
<p>
<span>当月消费金额</span>
<span>360</span>
<span>{{ inviteeItem.monthyCount }}</span>
</p>
</div>
</div>
</template>
<script>
export default {
name: "Invitee",
props: {
inviteeItem: {
type: Object,
default: () => {}
}
},
data() {},
}
</script>
<style lang="scss" scoped>
.invitee {
height: 130px;
......
......@@ -3,26 +3,26 @@
<div class="userInfo">
<img src="@/assets/images/白银树.png" alt="等级背景图" />
<span class="level-label">我的等级</span>
<span class="level">Lv.3白银树</span>
<span class="level">Lv.{{ userRecommendInfo.userlevel }}{{ userRecommendInfo.userlevel | userLevel }}</span>
<div class="userAvatar">
<div class="avatar-box">
<img class="avatar" src="@/assets/images/avatar.png" alt="头像" />
<img class="level-img" src="@/assets/images/等级展示框.png" alt />
<span class="avatar-level">Lv.3</span>
<span class="avatar-level">Lv.{{ userRecommendInfo.userlevel }}</span>
</div>
</div>
</div>
<div class="status">
<van-tabs v-model="activeTab" swipeable sticky color="#28b537">
<van-tabs v-model="activeTab" swipeable sticky color="#28b537" @click="changeTab">
<van-tab
v-for="item in Tabs"
:key="`tba-${item.id}`"
:title="item.name"
:title="`${ item.name }(${ item.num})`"
>
<base-refresh-scroll @downLoad="onDownLoad" @upRefresh="onUpRefresh">
<div slot="content">
<div v-for="item in 10" :key="item.id">
<invitee-item />
<div v-for="item in inviteeArr" :key="item.id">
<invitee-item :invitee-item="item" />
</div>
</div>
</base-refresh-scroll>
......@@ -33,6 +33,7 @@
</template>
<script>
import { recomendInfo, recommendDetail } from "@/api/myStatus";
import BaseRefreshScroll from "../../components/BaseRefreshScroll.vue";
import InviteeItem from "./components/invitee";
export default {
......@@ -41,51 +42,140 @@ export default {
InviteeItem,
BaseRefreshScroll
},
filters: {
userLevel(key) {
let levelName = "";
switch (key) {
case 0:
levelName = "普通用户"
break;
case 1:
levelName = "幼苗"
break;
case 2:
levelName = "青铜树"
break;
case 3:
levelName = "白银树"
break;
case 4:
levelName = "黄金树"
break;
case 5:
levelName = "农场主"
break;
case 6:
levelName = "森林之星"
break;
case 7:
levelName = "西田森合伙人"
break;
default:
levelName = ""
break;
}
return levelName;
}
},
data() {
return {
inviteeArr: [],
userRecommendInfo: {},
activeTab: "",
Tabs: [
{
id: 0,
name: "普通用户"
name: "普通用户",
num: 0,
keyName: "normalUserNum"
},
{
id: 1,
name: "幼苗"
name: "幼苗",
num: 0,
keyName: "seedlingNum"
},
{
id: 2,
name: "青铜树"
name: "青铜树",
num: 0,
keyName: "bronzeTreeNum"
},
{
id: 3,
name: "白银树"
name: "白银树",
num: 0,
keyName: "silverTreeNum"
},
{
id: 4,
name: "黄金树"
name: "黄金树",
num: 0,
keyName: "goldTreeNum"
},
{
id: 5,
name: "农场主"
name: "农场主",
num: 0,
keyName: "farmerNum"
},
{
id: 6,
name: "森林之星"
name: "森林之星",
num: 0,
keyName: "forestStartNum"
},
{
id: 7,
name: "西田森合伙人"
name: "西田森合伙人",
num: 0,
keyName: "partnerNum"
}
]
};
},
created() {
this.getRecommendInfo()
this.getRecommendDetail(0)
},
methods: {
changeTab(name) {
this.getRecommendDetail(name);
},
onDownLoad(val) {
console.log("下拉加载", val);
},
onUpRefresh(val) {
console.log("上拉刷新", val);
},
getRecommendInfo() {
const params = {
userId: "13933770749"
}
recomendInfo(params).then(res => {
if (res.code === 0) {
this.userRecommendInfo = res.data
for(const key in res.data.myRecommed) {
this.Tabs.forEach(el => {
if (el.keyName === key) {
console.log(key);
el.num = res.data.myRecommed[key]
}
});
}
}
})
},
getRecommendDetail(level) {
const params = {
userid: "13933770749",
userlevel: level
}
recommendDetail(params).then(res => {
if (res.code === 0) {
this.inviteeArr = res.data;
}
})
}
}
};
......
......@@ -25,7 +25,7 @@
:show-indicators="false"
>
<van-swipe-item>
95.30元进入本月累计奖金池 1-13 14:52:01</van-swipe-item
{{ awardInfo.awardTime }}</van-swipe-item
>
<van-swipe-item>内容 2</van-swipe-item>
<van-swipe-item>内容 3</van-swipe-item>
......@@ -34,19 +34,19 @@
</div>
<div class="content">
<p style="font-size: 16px; font-weight: bold">本月累计奖金</p>
<p style="font-weight: bold">19,349.00</p>
<p style="font-size: 14px;color:#333333">历史累计奖金:¥110000.00</p>
<countTo :startVal='awardInfo.lastToatal' :endVal='awardInfo.monthAwardTotal' :duration='3000' style="font-weight: bold"></countTo>
<p style="font-size: 14px;color:#333333">历史累计奖金:¥{{ awardInfo.awardTotal.toFixed(2) || 0 }}</p>
</div>
<div class="newAdd-my">
<div class="newAdd">
<p>9100.00</p>
<p>{{ awardInfo.monthIncreased || 0 }}</p>
<div class="bottom">
<img src="@/assets/images/本月新增.png" alt />
<span>本月新增</span>
</div>
</div>
<div class="my">
<p>999.00</p>
<p>{{ awardInfo.userMonthAward }}</p>
<div class="bottom">
<img src="@/assets/images/我的份额.png" alt />
<span>我的份额</span>
......@@ -57,24 +57,60 @@
<p class="level-pool-title">各等级本月累计奖励池</p>
<p class="level-pool-item">
<span>黄金树等级</span>
<span>1000.00</span>
<span>{{ awardInfo.goldAward || 0 }}</span>
</p>
<p class="level-pool-item">
<span>农场主等级</span>
<span>1000.00</span>
<span>{{ awardInfo.farmerAward || 0 }}</span>
</p>
<p class="level-pool-item">
<span>森林之星等级</span>
<span>1000.00</span>
<span>{{ awardInfo.forestStartAward || 0 }}</span>
</p>
<p class="level-pool-item">
<span>西田森合伙人等级</span>
<span>1000.00</span>
<span>{{ awardInfo.partnerAward || 0 }}</span>
</p>
</div>
</div>
</template>
<script>
import countTo from 'vue-count-to';
import { monthRewards } from "@/api/reward";
export default {
name: "MonthAward",
components: { countTo },
data() {
return {
awardInfo: {
goldAward: 0,
farmerAward: 0,
forestStartAward: 0,
partnerAward: 0,
}
}
},
created() {
this.getData()
},
methods: {
getData() {
const params = {
userId: "18757121665"
}
monthRewards(params).then(res => {
if (res.code === 0) {
this.awardInfo = res.data
this.awardInfo.lastToatal = res.data.monthAwardTotal - res.data.growthAward
}
})
}
}
}
</script>
<style lang="scss" scoped>
.month-award {
width: 100%;
......
......@@ -38,6 +38,9 @@ export default {
}
}
});
this.routes.forEach(el => {
console.log(el.meta.title + " " + "http://8.131.244.76:81/front" + el.path);
})
},
methods: {
to(path) {
......
......@@ -18,7 +18,7 @@
@click="fillInviterCode"
/>
<van-cell is-link title="软件更新" value="版本v1.2" />
<van-cell is-link title="用户协议" />
<van-cell is-link title="用户协议" @click="jumpToInstructions" />
</van-cell-group>
<van-button size="large" class="logout-btn">退出登录</van-button>
......@@ -27,6 +27,7 @@
base-dialog-btn="提交"
:base-dialog-show="inviteeCodeDialog"
:base-dialog-show-close="true"
@onClose="onCloseDialog"
@onClick="onFillInviteeCode"
>
<div slot="content">
......@@ -43,6 +44,7 @@
</template>
<script>
import { fillInviteCode } from "@/api/user";
import BaseDialog from "../components/BaseDialog.vue";
export default {
components: { BaseDialog },
......@@ -56,12 +58,23 @@ export default {
};
},
methods: {
jumpToInstructions() {
this.$router.push("/instructions");
},
onModefy() {
this.$router.push("/modefy-avatar");
},
onCloseDialog() {
this.inviteeCodeDialog = false;
},
onFillInviteeCode() {
this.inviteeCodeDialog = false;
this.inviteeCode = this.fillCode;
const params = {
inviteCode: this.fillCode,
userId: "18757121665"
}
fillInviteCode(params).then()
},
fillInviterCode() {
if (this.inviteeCode === "未填写") {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment