用户接口对接

This commit is contained in:
仲么了
2023-03-20 08:51:21 +08:00
parent c5ed54924b
commit c308a7131b
10 changed files with 284 additions and 110 deletions

22
App.vue
View File

@@ -2,21 +2,17 @@
import encrypt from './common/js/aes.js' import encrypt from './common/js/aes.js'
export default { export default {
onLaunch: function () { onLaunch: function () {
let cidAES = uni.getStorageSync('cidAES') let cidAES = uni.getStorageSync('cidAES') || 'nnvmhMk8626D8QHhJefm+W9rTAJWuBPRxcnRm4+9bWXdSLRIyTnTruoYfLxGK3Oy'
uni.setStorageSync('cidAES', cidAES);
if (!cidAES) { if (!cidAES) {
uni.getPushClientId({ document.addEventListener('plusready', () => {
success: (res) => { // 页面加载时触发
console.log(res.cid); let pinf = plus.push.getClientInfo();
uni.setStorageSync('cid', res.cid); let cid = pinf.clientid;//客户端标识
var cidAES = encrypt.Encrypt(res.cid, this.$config.key); cidAES = encrypt.Encrypt(cid, this.$config.key);
uni.setStorageSync('cidAES', cidAES); uni.setStorageSync('cidAES', cidAES);
}, }, false);
fail (err) {
console.log(err)
}
})
} }
}, },
onShow: function () { onShow: function () {
console.log('App Show') console.log('App Show')

View File

@@ -1,22 +1,30 @@
import request from '../js/request' import request from '../js/request'
/**
* 发送验证码
* @param {*} params.type 0:登录 1:注册 3:忘记密码 4:更换手机号第二步获取验证码 5:更换手机号第一步获取验证码
* @returns
*/
export function apiGetYms (params) { export function apiGetYms (params) {
return request({ return request({
url: '/shiningCloud/user/authCode', url: '/shiningCloud/user/authCode',
data: { data: {
phone: params.phone, phone: params.phone,
devCode: uni.getStorageSync('cidAES'), devCode: uni.getStorageSync('cidAES'),
type: 0 type: params.type
}, },
method: 'POST' method: 'POST'
}) })
} }
/** /**
* * 登录
* @param {*} type 0:ysm 1:pwd * @param {*} params.type 0:ysm 1:pwd
* @returns * @returns
*/ */
export function apiLogin (params) { export function apiLogin (params) {
console.log(uni.getStorageSync('cidAES'));
return request({ return request({
url: '/shiningCloud/user/login', url: '/shiningCloud/user/login',
data: { data: {
@@ -27,4 +35,46 @@ export function apiLogin (params) {
}, },
method: 'POST' method: 'POST'
}) })
}
/**
* 注册
* @param {*} params
* @returns
*/
export function apiRegister (params) {
return request({
url: '/shiningCloud/user/register',
data: {
phone: params.phone,
devCode: uni.getStorageSync('cidAES'),
code: params.code.trim(),
},
method: 'POST'
})
}
// 第一次登录设置密码
export function apiSetPsd (params) {
return request({
url: '/shiningCloud/user/setPsd',
data: {
userId: uni.getStorageSync('userInfo').userId,
devCode: uni.getStorageSync('cidAES'),
password: params.password.trim()
},
method: 'POST'
})
}
// 重置密码
export function apiReSetPsd(params) {
return request({
url: '/shiningCloud/user/resetPsd',
data: {
phone: params.phone,
code: params.code.trim(),
devCode: uni.getStorageSync('cidAES'),
password: params.password.trim()
},
method: 'POST'
})
} }

View File

@@ -24,8 +24,6 @@ export default (options = {}) => {
}, },
header: { header: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
'Authorization': uni.getStorageSync('Authorization'),
'Cookie': uni.getStorageSync('Cookie'),
...options.header ...options.header
}, },
method: options.method || 'GET', method: options.method || 'GET',

View File

@@ -125,6 +125,26 @@
"mp-baidu" : { "mp-baidu" : {
"usingComponents" : true "usingComponents" : true
}, },
"h5" : {
"devServer" : {
"port" : 8088,
"proxy" : {
"/api" : {
"https" : true,
// "target" : "https://china.indpecker.com",
"target" : "http://pqmcc.com:8040",
"changOrigin" : true,
"pathRewrite" : {
"/api" : ""
}
}
},
"https" : false
},
"router" : {
"base" : ""
}
},
"mp-toutiao" : { "mp-toutiao" : {
"usingComponents" : true "usingComponents" : true
}, },

View File

@@ -421,7 +421,7 @@
"list": [ "list": [
{ {
"name": "login", //模式名称 "name": "login", //模式名称
"path": "pages/user/login", //启动页面,必选 "path": "pages/user/changePhone", //启动页面,必选
"query": "" //启动参数在页面的onLoad函数里面得到。 "query": "" //启动参数在页面的onLoad函数里面得到。
} }
] ]

View File

@@ -1,25 +1,27 @@
<template> <template>
<Cn-page :loading='loading'> <view>
<view slot='body'> <view>
<view class='index'> <web-view src="http://112.4.156.196:8040/shiningCloud/business/userAgreement"></web-view>
用户协议 </view>
</view> </view>
</view>
</Cn-page>
</template> </template>
<script> <script>
export default { export default {
data () { data() {
return { return {
loading: false showFlag:0,
} pageNameFlag:1,
}, pageName:'用户协议',
methods: { }
} },
} methods: {
},
}
</script> </script>
<style lang='scss'>
.index { <style>
padding: 20rpx;
} </style>
</style>

View File

@@ -3,34 +3,34 @@
<view slot="body"> <view slot="body">
<view class="index"> <view class="index">
<template v-if="step == 1"> <template v-if="step == 1">
<uni-forms ref="form"> <uni-forms ref="form" :rules="rules" :modelValue="formData">
<uni-forms-item name="phone"> <uni-forms-item name="phone">
<uni-easyinput disabled type="text" v-model="formData.phone" placeholder="请输入手机号" /> <uni-easyinput disabled type="text" v-model="formData.phoneShow" placeholder="请输入手机号" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item name="code"> <uni-forms-item name="code">
<view class="login-box-input mt40"> <view class="login-box-input">
<uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" /> <uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" />
<view class="ml40" <view class="ml40"
style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center" style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center"
v-if="waitTime > 0">{{ waitTime + 's后重新获取' }}</view> v-if="waitTime > 0">{{ waitTime + 's后重新获取' }}</view>
<button class="login-box-input-btn" v-else @click="getCode" size="mini">获取验证码</button> <button class="login-box-input-btn" v-else @click="getCode(5)" size="mini">获取验证码</button>
</view> </view>
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
<button type="default" class="submit-btn" @click="firstSubmit">下一步</button> <button type="default" class="submit-btn" @click="firstSubmit">下一步</button>
</template> </template>
<template v-else> <template v-else>
<uni-forms ref="form"> <uni-forms ref="form" :rules="rules" :modelValue="formData">
<uni-forms-item name="phone"> <uni-forms-item name="phone">
<uni-easyinput type="number" v-model="formData.phone2" placeholder="请输入新手机号" /> <uni-easyinput type="number" v-model="formData.phone2" placeholder="请输入新手机号" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item name="code"> <uni-forms-item name="code">
<view class="login-box-input mt40"> <view class="login-box-input">
<uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" /> <uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" />
<view class="ml40" <view class="ml40"
style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center" style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center"
v-if="waitTime > 0">{{ waitTime + 's后重新获取' }}</view> v-if="waitTime > 0">{{ waitTime + 's后重新获取' }}</view>
<button class="login-box-input-btn" v-else @click="getCode" size="mini">获取验证码</button> <button class="login-box-input-btn" v-else @click="getCode(4)" size="mini">获取验证码</button>
</view> </view>
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
@@ -50,7 +50,8 @@ export default {
waitTime: 0, waitTime: 0,
// 表单数据 // 表单数据
formData: { formData: {
phone: '150****0083', phone: '',
phoneShow: '',
code: '', code: '',
phone2: '', phone2: '',
code2: '', code2: '',
@@ -72,19 +73,19 @@ export default {
} }
] ]
}, },
password: { phone2: {
rules: [ rules: [
{ {
required: true, required: true,
errorMessage: "请填写新密码" errorMessage: "请填写新手机号"
} }
] ]
}, },
password2: { code2: {
rules: [ rules: [
{ {
required: true, required: true,
errorMessage: "请填写确认密码" errorMessage: "请填写验证码"
} }
] ]
} }
@@ -92,17 +93,39 @@ export default {
}; };
}, },
onLoad () { onLoad () {
this.init()
}, },
methods: { methods: {
getCode () { getCode (type) {
this.waitTime = 60 if (!this.formData.phone) {
this.inter = setInterval(() => { return this.$util.toast('请输入手机号!')
if (this.waitTime == 0) { }
clearInterval(this.inter) uni.showLoading({
} else { title: '请稍等'
this.waitTime-- })
} apiGetYms({
}, 1000) phone: this.formData.phone,
type,
}).then(res => {
uni.hideLoading()
console.log(res);
this.waitTime = 60
this.inter = setInterval(() => {
if (this.waitTime == 0) {
clearInterval(this.inter)
} else {
this.waitTime--
}
}, 1000)
}).catch(err => {
uni.hideLoading()
console.log(err);
})
},
init () {
this.formData.phone = uni.getStorageSync('userInfo').phone
// 150****0083
this.formData.phoneShow = this.formData.phone.substr(0, 3) + '****' + this.formData.phone.substr(7)
}, },
firstSubmit () { firstSubmit () {
this.step = 2 this.step = 2

View File

@@ -7,7 +7,7 @@
<uni-easyinput type="number" v-model="formData.phone" placeholder="请输入手机号" /> <uni-easyinput type="number" v-model="formData.phone" placeholder="请输入手机号" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item name="code"> <uni-forms-item name="code">
<view class="login-box-input mt40"> <view class="login-box-input">
<uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" /> <uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" />
<view class="ml40" <view class="ml40"
style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center" style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center"
@@ -24,8 +24,8 @@
</uni-forms> </uni-forms>
<button type="default" class="submit-btn" @click="submit">提交</button> <button type="default" class="submit-btn" @click="submit">提交</button>
<view class="login-box-tips"> <view class="login-box-tips">
<view style="color:#999">说明密码长度为6-18</view> <view style="color:#999">说明密码长度为6-18</view>
</view> </view>
<view class="login-box-tips"> <view class="login-box-tips">
<view style="color:#999">点击提交即表示同意</view> <view style="color:#999">点击提交即表示同意</view>
<navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator> <navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator>
@@ -36,6 +36,8 @@
</Cn-page> </Cn-page>
</template> </template>
<script> <script>
import { apiGetYms, apiReSetPsd } from '@/common/api/user'
export default { export default {
name: "jiaban", name: "jiaban",
data () { data () {
@@ -89,20 +91,56 @@ export default {
}, },
methods: { methods: {
getCode () { getCode () {
this.waitTime = 60 if (!this.formData.phone) {
this.inter = setInterval(() => { return this.$util.toast('请输入手机号!')
if (this.waitTime == 0) { }
clearInterval(this.inter) uni.showLoading({
} else { title: '请稍等'
this.waitTime-- })
} apiGetYms({
}, 1000) phone: this.formData.phone,
type: 3,
}).then(res => {
uni.hideLoading()
console.log(res);
this.waitTime = 60
this.inter = setInterval(() => {
if (this.waitTime == 0) {
clearInterval(this.inter)
} else {
this.waitTime--
}
}, 1000)
}).catch(err => {
uni.hideLoading()
console.log(err);
})
}, },
submit () { submit () {
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
console.log(valid); if (this.formData.password.length < 6 || this.formData.password.length > 18) {
if (valid) { return this.$util.toast('密码长度为6-18位')
} else if (this.formData.password != this.formData.password2) {
return this.$util.toast('两次密码不一致')
} }
uni.showLoading({
title: '请稍等'
})
apiReSetPsd({
phone: this.formData.phone,
code: this.formData.code,
password: this.formData.password,
}).then(res => {
uni.hideLoading()
console.log(res);
this.$util.toast('修改成功!')
setTimeout(() => {
uni.navigateBack()
}, 1000)
}).catch(err => {
uni.hideLoading()
console.log(err);
})
}) })
}, },
} }

View File

@@ -3,7 +3,7 @@
<view slot="body"> <view slot="body">
<view class="login"> <view class="login">
<view class="login-title">登录</view> <view class="login-title">登录</view>
<view class="login-des">{{ companyName }}</view> <view class="login-des">灿能物联</view>
<view class="login-box"> <view class="login-box">
<!-- <image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image> --> <!-- <image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image> -->
<image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image> <image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image>
@@ -24,7 +24,7 @@
</template> </template>
<template v-else> <template v-else>
<view class="login-box-input mt100"> <view class="login-box-input mt100">
<input class="login-box-input-main" v-model="pwdForm.account" placeholder="请输入账号" /> <input class="login-box-input-main" v-model="pwdForm.phone" placeholder="请输入账号" />
</view> </view>
<view class="login-box-input mt40"> <view class="login-box-input mt40">
<input type="password" class="login-box-input-main" v-model="pwdForm.pwd" placeholder="请输入密码" /> <input type="password" class="login-box-input-main" v-model="pwdForm.pwd" placeholder="请输入密码" />
@@ -62,7 +62,7 @@ export default {
loading: false, loading: false,
loginType: 'pwd', loginType: 'pwd',
pwdForm: { pwdForm: {
account: '', phone: '',
pwd: '', pwd: '',
imgCode: '', imgCode: '',
}, },
@@ -79,23 +79,31 @@ export default {
}, },
components: {}, components: {},
methods: { methods: {
async getCode () { getCode () {
if (!this.yzmForm.phone) { if (!this.yzmForm.phone) {
return this.$util.toast('请输入手机号!') return this.$util.toast('请输入手机号!')
} }
const res = await apiGetYms({ uni.showLoading({
title: '请稍等'
})
apiGetYms({
phone: this.yzmForm.phone, phone: this.yzmForm.phone,
type: 0, type: 0,
}).then(res => {
uni.hideLoading()
console.log(res);
this.waitTime = 60
this.inter = setInterval(() => {
if (this.waitTime == 0) {
clearInterval(this.inter)
} else {
this.waitTime--
}
}, 1000)
}).catch(err => {
uni.hideLoading()
console.log(err);
}) })
console.log(res);
this.waitTime = 60
this.inter = setInterval(() => {
if (this.waitTime == 0) {
clearInterval(this.inter)
} else {
this.waitTime--
}
}, 1000)
}, },
login () { login () {
console.log(this.loginType); console.log(this.loginType);
@@ -106,17 +114,12 @@ export default {
} }
}, },
pwdLogin () { pwdLogin () {
console.log({ if (!this.pwdForm.phone && !this.pwdForm.pwd) {
phone: this.yzmForm.phone,
key: this.yzmForm.pwd,
type: 1,
})
if (!this.pwdForm.account && !this.pwdForm.pwd) {
return this.$util.toast('请填写登录信息!') return this.$util.toast('请填写登录信息!')
} }
apiLogin({ apiLogin({
phone: this.yzmForm.phone, phone: this.pwdForm.phone,
key: this.yzmForm.pwd, key: this.pwdForm.pwd,
type: 1, type: 1,
}).then(res => { }).then(res => {
console.log(res); console.log(res);

View File

@@ -3,12 +3,12 @@
<view slot="body"> <view slot="body">
<view class="index"> <view class="index">
<template v-if="step == 1"> <template v-if="step == 1">
<uni-forms ref="form"> <uni-forms ref="form" :rules="rules" :modelValue="formData">
<uni-forms-item name="phone"> <uni-forms-item name="phone">
<uni-easyinput type="number" v-model="formData.phone" placeholder="请输入手机号" /> <uni-easyinput type="number" v-model="formData.phone" placeholder="请输入手机号" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item name="code"> <uni-forms-item name="code">
<view class="login-box-input mt40"> <view class="login-box-input">
<uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" /> <uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" />
<view class="ml40" <view class="ml40"
style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center" style="margin-left:40rpx;font-size: 28rpx; color: #666; width: 200rpx; text-align: center"
@@ -25,7 +25,7 @@
</view> </view>
</template> </template>
<template v-else> <template v-else>
<uni-forms ref="form"> <uni-forms ref="form" :rules="rules" :modelValue="formData">
<uni-forms-item name="password"> <uni-forms-item name="password">
<uni-easyinput type="text" v-model="formData.password" placeholder="请输入登录密码" /> <uni-easyinput type="text" v-model="formData.password" placeholder="请输入登录密码" />
</uni-forms-item> </uni-forms-item>
@@ -43,6 +43,7 @@
</Cn-page> </Cn-page>
</template> </template>
<script> <script>
import { apiRegister, apiGetYms, apiSetPsd } from '@/common/api/user'
export default { export default {
name: "jiaban", name: "jiaban",
data () { data () {
@@ -97,21 +98,64 @@ export default {
}, },
methods: { methods: {
getCode () { getCode () {
this.waitTime = 60 if (!this.formData.phone) {
this.inter = setInterval(() => { return this.$util.toast('请输入手机号!')
if (this.waitTime == 0) { }
clearInterval(this.inter) uni.showLoading({
} else { title: '请稍等'
this.waitTime-- })
} apiGetYms({
}, 1000) phone: this.formData.phone,
type: 1,
}).then(res => {
uni.hideLoading()
console.log(res);
this.waitTime = 60
this.inter = setInterval(() => {
if (this.waitTime == 0) {
clearInterval(this.inter)
} else {
this.waitTime--
}
}, 1000)
}).catch(err => {
uni.hideLoading()
console.log(err);
})
}, },
firstSubmit () { firstSubmit () {
this.step = 2 this.$refs.form.validate().then((valid, errors) => {
apiRegister({
phone: this.formData.phone,
code: this.formData.code
}).then(res => {
console.log(res);
this.$util.toast(res.msg)
uni.setStorageSync('userInfo', res.data)
this.step = 2
})
})
}, },
secondSubmit () { secondSubmit () {
this.$refs.form.validate().then((valid, errors) => {
console.log(this.formData.password.length);
if (this.formData.password.length < 6 || this.formData.password.length > 18) {
return this.$util.toast('密码长度为6-18位')
} else if (this.formData.password != this.formData.password2) {
return this.$util.toast('两次密码不一致')
}
apiSetPsd({
phone: this.formData.phone,
password: this.formData.password,
}).then(res => {
console.log(res);
this.$util.toast(res.msg)
uni.setStorageSync('userInfo', res.data)
uni.reLaunch({
url: '/pages/user/login'
})
})
})
} }
} }
}; };