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) {
method: "get"
});
}
/**
* 森林状态
* @param {*}
*/
export function getForestStatus(userId) {
return request({
url: `/user/forestStatus?userId=${userId}`,
method: "get"
});
}
import request from "@/utils/request";
import qs from "qs";
// 登录
export function Login() {
return request({
......@@ -7,3 +7,19 @@ export function Login() {
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 {
Tabs,
Toast,
Uploader,
Progress
Progress,
Loading
} from "vant";
Vue.use(Button)
......@@ -43,4 +44,5 @@ Vue.use(Button)
.use(Tabs)
.use(Uploader)
.use(Progress)
.use(Toast);
.use(Toast)
.use(Loading);
......@@ -10,15 +10,13 @@
<span class="nav-title">森林状态</span>
</div>
<div class="forest-content">
<div class="forest-level">
{{ level }}
</div>
<div class="forest-level">Lv.{{ userLevel }}{{ levelDes }}</div>
<div class="nums">距离下一级直推用户还需增加{{ directpush }}</div>
<div class="nums">距离下一级团队用户还需增加{{ team }}</div>
<div class="level-progress">
<div class="level-num">{{ currentLevel }}</div>
<div class="level-num">Lv.{{ userLevel }}</div>
<van-progress :percentage="50" />
<div class="level-num">{{ nextLevel }}</div>
<div class="level-num">Lv.{{ nextLevel }}</div>
</div>
<div class="relegation">保级还需增加¥{{ relegationNum }} 业绩</div>
</div>
......@@ -41,44 +39,77 @@
</template>
<script>
import { getForestStatus } from "@/api/grade";
import { getLevelDes, getNextLevel } from "@/config/grade";
export default {
name: "grade",
data() {
return {
level: "Lv.3白银树",
userLevel: "",
levelDes: "白银树",
directpush: "XXX",
team: "XXX",
relegationNum: "21,141",
currentLevel: "Lv.3",
nextLevel: "Lv.4",
currentLevel: "",
nextLevel: "",
list: [
{
num: 14,
label: "团队总人数",
hasArrow: true,
urlName: "LeagueNums"
urlName: "LeagueNums",
field: "teamUserCount"
},
{
num: 12,
label: "我的直推",
hasArrow: true
hasArrow: true,
field: "recommendUserCount"
},
{
num: 61859,
label: "团队累计总业绩",
hasArrow: false
hasArrow: false,
field: "teamCountDouble"
},
{
num: 11256,
label: "团队当月新增业绩",
hasArrow: false
hasArrow: false,
field: "teamNowCount"
}
]
};
},
mounted() {
this.getstatus()
},
methods: {
handleUrl(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 @@
<div class="form-content">
<van-cell-group>
<van-field
:value="value"
v-model="form.userId"
placeholder="请输入用户名"
:border="hasBorder"
bind:change="onChange"
>
<img
class="icon-user"
......@@ -18,10 +17,9 @@
/>
</van-field>
<van-field
:value="value"
v-model="form.sms"
placeholder="请输入验证码"
:border="hasBorder"
bind:change="onChange"
>
<img
class="icon-user"
......@@ -34,14 +32,17 @@
size="small"
type="primary"
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
:value="value"
v-model="form.beInvitedCode"
placeholder="请输入推荐人邀请码(非必填)"
:border="hasBorder"
bind:change="onChange"
>
<img
class="icon-user"
......@@ -51,36 +52,123 @@
/>
</van-field>
</van-cell-group>
<van-button class="btn-submit" @click="register">注册</van-button>
<van-button
class="btn-submit"
:disabled="registerBtnDisabled"
@click="handleResister"
>
注册
</van-button>
</div>
<van-overlay :show="show" class-name="registerEorr" @click="onClickHide">
<div class="wrapper" @click.stop>
<div class="title">{{ title }}</div>
<div class="error-tip"></div>
<div class="tip">{{ tip }}</div>
<van-button>确定</van-button>
<van-button @click="show = false">确定</van-button>
</div>
</van-overlay>
</div>
</template>
<script>
import { smsCode } from "@/api/base";
import { register } from "@/api/user";
export default {
name: "register",
data() {
return {
form: {
userId: "",
sms: "",
beInvitedCode: ""
},
disabled: false,
registerBtnDisabled: false,
sendMsg: "发送验证码",
value: "",
hasBorder: false,
show: true,
show: false,
title: "注册失败",
tip: "该推荐人邀请码不存在,请重新填写"
tip: "",
time: 60,
timer: null
};
},
mounted() {
if (this.timer) {
clearInterval(this.timer);
}
},
methods: {
register() {
// this.show = true
},
onClickHide() {
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 {
position: absolute;
left: 15px;
top: 9px;
// display: block;
// font-size: 25px;
// color: #333;
// margin: 13px 0 0 15px;
&::before {
font-size: 20px;
color: #333;
}
}
.logo-img {
width: 102px;
......@@ -109,7 +197,7 @@ export default {
}
.form-content {
padding: 0 15px;
.van-field__left-icon {
::v-deep .van-field__left-icon {
display: flex;
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