Commit 2a317c8a authored by leiqingsong's avatar leiqingsong

Merge branch 'master' of http://111.203.232.171:8888/Song/xitiansenmall into dev_lqs

parents 29c4fedd a34a4e57
...@@ -10,3 +10,14 @@ export function getMyTeam(userId) { ...@@ -10,3 +10,14 @@ export function getMyTeam(userId) {
method: "get" method: "get"
}); });
} }
/**
* 森林状态
* @param {*}
*/
export function getForestStatus(userId) {
return request({
url: `/user/forestStatus?userId=${userId}`,
method: "get"
});
}
import request from "@/utils/request"; import request from "@/utils/request";
import qs from "qs";
// 登录 // 登录
export function Login() { export function Login() {
return request({ return request({
...@@ -7,3 +7,19 @@ export function Login() { ...@@ -7,3 +7,19 @@ export function Login() {
method: "get" method: "get"
}); });
} }
/**
* 发送验证码
* @param {*} params userId required 手机号
* @param {*} param sms required 验证码
* @param {*} param beInvitedCode required 邀请码
* @returns
*/
export function register(params) {
const final_params = qs.stringify(params);
return request({
url: "/api/user/register",
method: "post",
data: final_params
});
}
const levels = {
0: "普通用户",
1: "幼苗",
2: "青铜树",
3: "白银树",
4: "黄金树",
5: "农场主",
6: "森林之星",
7: "西田森合伙人"
};
export function getLevelDes(level) {
const label = levels[level];
if (label) {
return label;
} else {
return "";
}
}
export function getNextLevel(level) {
let nextLevel = 0;
let isHighest = false;
if (level || level !== 0) {
nextLevel = level + 1;
if (nextLevel === 8) {
isHighest = true;
}
}
return {
level: level,
nextLevel: nextLevel,
isHighest: isHighest
};
}
...@@ -20,7 +20,8 @@ import { ...@@ -20,7 +20,8 @@ import {
Tabs, Tabs,
Toast, Toast,
Uploader, Uploader,
Progress Progress,
Loading
} from "vant"; } from "vant";
Vue.use(Button) Vue.use(Button)
...@@ -43,4 +44,5 @@ Vue.use(Button) ...@@ -43,4 +44,5 @@ Vue.use(Button)
.use(Tabs) .use(Tabs)
.use(Uploader) .use(Uploader)
.use(Progress) .use(Progress)
.use(Toast); .use(Toast)
.use(Loading);
...@@ -10,15 +10,13 @@ ...@@ -10,15 +10,13 @@
<span class="nav-title">森林状态</span> <span class="nav-title">森林状态</span>
</div> </div>
<div class="forest-content"> <div class="forest-content">
<div class="forest-level"> <div class="forest-level">Lv.{{ userLevel }}{{ levelDes }}</div>
{{ level }}
</div>
<div class="nums">距离下一级直推用户还需增加{{ directpush }}</div> <div class="nums">距离下一级直推用户还需增加{{ directpush }}</div>
<div class="nums">距离下一级团队用户还需增加{{ team }}</div> <div class="nums">距离下一级团队用户还需增加{{ team }}</div>
<div class="level-progress"> <div class="level-progress">
<div class="level-num">{{ currentLevel }}</div> <div class="level-num">Lv.{{ userLevel }}</div>
<van-progress :percentage="50" /> <van-progress :percentage="50" />
<div class="level-num">{{ nextLevel }}</div> <div class="level-num">Lv.{{ nextLevel }}</div>
</div> </div>
<div class="relegation">保级还需增加¥{{ relegationNum }} 业绩</div> <div class="relegation">保级还需增加¥{{ relegationNum }} 业绩</div>
</div> </div>
...@@ -41,44 +39,77 @@ ...@@ -41,44 +39,77 @@
</template> </template>
<script> <script>
import { getForestStatus } from "@/api/grade";
import { getLevelDes, getNextLevel } from "@/config/grade";
export default { export default {
name: "grade", name: "grade",
data() { data() {
return { return {
level: "Lv.3白银树", userLevel: "",
levelDes: "白银树",
directpush: "XXX", directpush: "XXX",
team: "XXX", team: "XXX",
relegationNum: "21,141", relegationNum: "21,141",
currentLevel: "Lv.3", currentLevel: "",
nextLevel: "Lv.4", nextLevel: "",
list: [ list: [
{ {
num: 14, num: 14,
label: "团队总人数", label: "团队总人数",
hasArrow: true, hasArrow: true,
urlName: "LeagueNums" urlName: "LeagueNums",
field: "teamUserCount"
}, },
{ {
num: 12, num: 12,
label: "我的直推", label: "我的直推",
hasArrow: true hasArrow: true,
field: "recommendUserCount"
}, },
{ {
num: 61859, num: 61859,
label: "团队累计总业绩", label: "团队累计总业绩",
hasArrow: false hasArrow: false,
field: "teamCountDouble"
}, },
{ {
num: 11256, num: 11256,
label: "团队当月新增业绩", label: "团队当月新增业绩",
hasArrow: false hasArrow: false,
field: "teamNowCount"
} }
] ]
}; };
}, },
mounted() {
this.getstatus()
},
methods: { methods: {
handleUrl(urlName) { handleUrl(urlName) {
this.$router.push({ name: urlName }); this.$router.push({ name: urlName });
},
getstatus() {
const userId = 13933770749;
const _this = this;
getForestStatus(userId).then(res => {
if (res.code === 0) {
let resData = res.data;
_this.handleData(resData);
} else {
_this.$toast.fail(res.msg);
}
});
},
handleData(data) {
this.userLevel = data.userLevel;
this.levelDes = getLevelDes(data.userLevel);
let nextLevelObj = getNextLevel(data.userLevel);
if (!nextLevelObj.isHighest) {
this.nextLevel = nextLevelObj.nextLevel;
}
this.list.forEach(v => {
v.num = data[v['field']]
})
} }
} }
}; };
......
...@@ -5,10 +5,9 @@ ...@@ -5,10 +5,9 @@
<div class="form-content"> <div class="form-content">
<van-cell-group> <van-cell-group>
<van-field <van-field
:value="value" v-model="form.userId"
placeholder="请输入用户名" placeholder="请输入用户名"
:border="hasBorder" :border="hasBorder"
bind:change="onChange"
> >
<img <img
class="icon-user" class="icon-user"
...@@ -18,10 +17,9 @@ ...@@ -18,10 +17,9 @@
/> />
</van-field> </van-field>
<van-field <van-field
:value="value" v-model="form.sms"
placeholder="请输入验证码" placeholder="请输入验证码"
:border="hasBorder" :border="hasBorder"
bind:change="onChange"
> >
<img <img
class="icon-user" class="icon-user"
...@@ -34,14 +32,17 @@ ...@@ -34,14 +32,17 @@
size="small" size="small"
type="primary" type="primary"
class="verify-code" class="verify-code"
>发送验证码</van-button :disabled="disabled"
@click="sendSms"
> >
<span v-if="!disabled">发送验证码</span>
<span v-else>{{ time }}秒后重新发送</span>
</van-button>
</van-field> </van-field>
<van-field <van-field
:value="value" v-model="form.beInvitedCode"
placeholder="请输入推荐人邀请码(非必填)" placeholder="请输入推荐人邀请码(非必填)"
:border="hasBorder" :border="hasBorder"
bind:change="onChange"
> >
<img <img
class="icon-user" class="icon-user"
...@@ -51,36 +52,123 @@ ...@@ -51,36 +52,123 @@
/> />
</van-field> </van-field>
</van-cell-group> </van-cell-group>
<van-button class="btn-submit" @click="register">注册</van-button> <van-button
class="btn-submit"
:disabled="registerBtnDisabled"
@click="handleResister"
>
注册
</van-button>
</div> </div>
<van-overlay :show="show" class-name="registerEorr" @click="onClickHide"> <van-overlay :show="show" class-name="registerEorr" @click="onClickHide">
<div class="wrapper" @click.stop> <div class="wrapper" @click.stop>
<div class="title">{{ title }}</div> <div class="title">{{ title }}</div>
<div class="error-tip"></div> <div class="error-tip"></div>
<div class="tip">{{ tip }}</div> <div class="tip">{{ tip }}</div>
<van-button>确定</van-button> <van-button @click="show = false">确定</van-button>
</div> </div>
</van-overlay> </van-overlay>
</div> </div>
</template> </template>
<script> <script>
import { smsCode } from "@/api/base";
import { register } from "@/api/user";
export default { export default {
name: "register", name: "register",
data() { data() {
return { return {
form: {
userId: "",
sms: "",
beInvitedCode: ""
},
disabled: false,
registerBtnDisabled: false,
sendMsg: "发送验证码",
value: "", value: "",
hasBorder: false, hasBorder: false,
show: true, show: false,
title: "注册失败", title: "注册失败",
tip: "该推荐人邀请码不存在,请重新填写" tip: "",
time: 60,
timer: null
}; };
}, },
methods: { mounted() {
register() { if (this.timer) {
// this.show = true clearInterval(this.timer);
}
}, },
methods: {
onClickHide() { onClickHide() {
this.show = false; this.show = false;
},
sendSms() {
const _this = this;
if (_this.timer) {
return false;
}
// 校验手机号
let phoneReg = /^(0|86|17951)?(13[0-9]|15[012356789]|17[0-9]|18[0-9]|14[57])[0-9]{8}$/;
//如果手机号码输入为空
if (!_this.form.userId) {
_this.$toast("请输入手机号");
return false;
}
//验证输入的电话号码是否是11位数字
if (!phoneReg.test(_this.form.userId)) {
_this.$toast("请输入正确手机号");
return false;
}
_this.time = 60;
_this.disabled = true;
// _this.handelSendSmsApi();
_this.timer = setInterval(() => {
if (_this.time === 0) {
clearInterval(_this.timer);
_this.disabled = false;
}
_this.time--;
}, 1000);
},
handelSendSmsApi() {
// 检验手机号
const params = {
codeType: 0,
phone: this.userId
};
smsCode(params).then(res => {
console.log(res);
});
},
handleResister() {
// 校验文本框必填项
const _this = this;
if (!_this.form.userId) {
this.$toast("请输入用户名");
return false;
}
if (!_this.form.sms) {
this.$toast("请输入验证码");
return false;
}
_this.registerBtnDisabled = true;
this.$toast.loading({
duration: 5000, // 持续展示 toast
message: "加载中...",
forbidClick: true
});
register(_this.form).then(res => {
this.$toast.clear();
_this.registerBtnDisabled = false;
if (res.code === 0) {
_this.$toast.sucess(res.msg);
} else {
_this.show = true;
_this.tip = res.msg;
// _this.$toast.fail(res.msg);
}
});
} }
} }
}; };
...@@ -96,10 +184,10 @@ export default { ...@@ -96,10 +184,10 @@ export default {
position: absolute; position: absolute;
left: 15px; left: 15px;
top: 9px; top: 9px;
// display: block; &::before {
// font-size: 25px; font-size: 20px;
// color: #333; color: #333;
// margin: 13px 0 0 15px; }
} }
.logo-img { .logo-img {
width: 102px; width: 102px;
...@@ -109,7 +197,7 @@ export default { ...@@ -109,7 +197,7 @@ export default {
} }
.form-content { .form-content {
padding: 0 15px; padding: 0 15px;
.van-field__left-icon { ::v-deep .van-field__left-icon {
display: flex; display: flex;
align-items: center; align-items: center;
} }
......
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