| | |
| | | <view> |
| | | <view class="list"> |
| | | <view class="list-call"> |
| | | <u--input |
| | | v-model="username" |
| | | <!-- #ifdef MP-WEIXIN --> |
| | | <u--input v-model="username" |
| | | clearable |
| | | maxlength="32" |
| | | type="text" |
| | | placeholder="请输入用户名" |
| | | placeholder="请输入手机号" |
| | | prefixIcon="account" |
| | | prefixIconStyle="font-size: 22px;color: #909399" |
| | | ></u--input> |
| | | prefixIconStyle="font-size: 22px;color: #909399"></u--input> |
| | | <!-- #endif --> |
| | | <!-- #ifdef H5 --> |
| | | <customPagination |
| | | style="width:100%; height: 60rpx; font-size: 30rpx;" |
| | | :options="userList" |
| | | :value="username" |
| | | v-model="username" |
| | | @changeInput="changeInput2" |
| | | @input="handleInput2" |
| | | :placeholder="'请输入登录账号'" |
| | | ></customPagination> |
| | | <!-- #endif --> |
| | | </view> |
| | | |
| | | <view class="list-call"> |
| | | <u--input |
| | | v-model="password" |
| | | <u--input v-model="password" |
| | | clearable |
| | | maxlength="32" |
| | | type="password" |
| | | placeholder="请输入密码" |
| | | prefixIcon="lock" |
| | | prefixIconStyle="font-size: 22px;color: #909399" |
| | | ></u--input> |
| | | prefixIconStyle="font-size: 22px;color: #909399"></u--input> |
| | | </view> |
| | | </view> |
| | | <view class="loginBtn"><u-button type="primary" :text="btnText == 1 ? '绑定' : '登录'" @click="submit()"></u-button></view> |
| | | <!-- 记住密码 --> |
| | | <!-- #ifdef H5 --> |
| | | <view class="jizhu"> |
| | | <view> |
| | | <u-checkbox-group |
| | | v-model="isJizhu" |
| | | placement="column" |
| | | @change="checkboxChange" |
| | | > |
| | | <u-checkbox |
| | | :checked="isChecked" |
| | | label="记住密码" :size='35' :iconSize="35" :labelSize="30" name="1" |
| | | placement="row"> |
| | | </u-checkbox> |
| | | </u-checkbox-group> |
| | | </view> |
| | | </view> |
| | | <!-- #endif --> |
| | | <view class="loginBtn"><u-button type="primary" |
| | | :text="btnText == 1 ? '绑定' : '登录'" |
| | | @click="submit()" |
| | | :loading="submitLoading"></u-button></view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { apiLoginPassword } from '@/api/publicInterface.js'; |
| | | import { mapMutations } from 'vuex'; |
| | | import { setName, setToken, setRefreshToken, setUsernameKey, setCustomerId, redirectHome } from '@/utils/status.js'; |
| | | export default { |
| | | name: 'userPassword', |
| | | props: { |
| | | //0:正常,1:微信绑定 |
| | | btnText: { |
| | | type: Number, |
| | | default: 0 |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | username: '', // 客户 |
| | | // username:'13333333331',//货代 |
| | | // username: '13333333332',// 司机 |
| | | password: '', |
| | | remember: true, |
| | | baseUrl: '' |
| | | }; |
| | | }, |
| | | methods: { |
| | | ...mapMutations(['setUserTabbar']), |
| | | //登录 |
| | | async submit() { |
| | | uni.showLoading({ |
| | | title: '登录中...' |
| | | }); |
| | | //表单校验 |
| | | if (this.username.length === 0) { |
| | | this.$u.toast('请输入账号'); |
| | | return; |
| | | import { apiLoginPassword } from '@/api/publicInterface.js'; |
| | | import { mapMutations } from 'vuex'; |
| | | import customPagination from './user.vue' |
| | | import { setName, setToken, setRefreshToken, setUsernameKey, setCustomerId, redirectHome } from '@/utils/status.js'; |
| | | export default { |
| | | name: 'userPassword', |
| | | props: { |
| | | //0:正常,1:微信绑定 |
| | | btnText: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | userList: { |
| | | type: Array, |
| | | default: () => { |
| | | return []; |
| | | } |
| | | } |
| | | if (this.password.length === 0) { |
| | | this.$u.toast('请输入密码'); |
| | | return; |
| | | } |
| | | let grant_type = 'password'; |
| | | //登录接口 |
| | | await apiLoginPassword({ |
| | | username: this.username, |
| | | password: this.password, |
| | | grant_type, |
| | | scope: 'server' |
| | | }) |
| | | .then(res => { |
| | | setToken(res.access_token); |
| | | setRefreshToken(res.refresh_token); |
| | | if (this.btnText == 0) { |
| | | if (res.code != 1) { |
| | | // 登陆成功,存储相关信息 |
| | | setToken(res.access_token); |
| | | setRefreshToken(res.refresh_token); |
| | | setUsernameKey(res.username); |
| | | //查询用户详细信息并储存 |
| | | this.$reqGet('getUserEntity') |
| | | .then(res => { |
| | | this.$u.toast('登录成功'); |
| | | this.setUserTabbar(res.data.type); |
| | | uni.setStorageSync('roleType', res.data.type); |
| | | setCustomerId(res.data.customerid); |
| | | setName(res.name); |
| | | uni.hideLoading(); |
| | | //跳转页面 |
| | | this.$nextTick(() => { |
| | | redirectHome(); |
| | | }); |
| | | }) |
| | | .catch(err => { |
| | | this.$u.toast('登录异常!'); |
| | | console.log(err); |
| | | }); |
| | | } else { |
| | | uni.hideLoading(); |
| | | this.$u.toast(res.msg); |
| | | } |
| | | } else { |
| | | uni.login({ |
| | | success: res => { |
| | | if (res.code) { |
| | | uni.setStorageSync('bindcode', res.code); |
| | | }, |
| | | components: { |
| | | customPagination |
| | | }, |
| | | data() { |
| | | return { |
| | | username: '', // 客户 |
| | | // username:'13333333331',//货代 |
| | | // username: '13333333332',// 司机 |
| | | password: '', |
| | | isChecked:false, |
| | | remember: true, |
| | | isJizhu: uni.getStorageSync('remberPassWord').username ? ['1'] : false, |
| | | username: uni.getStorageSync('remberPassWord').username || '',//承运商 |
| | | password: uni.getStorageSync('remberPassWord').password || '', |
| | | baseUrl: '', |
| | | weXinisLoginFlag:[1,2,3], //微信 |
| | | H5IsLoginFlag:[5,6,7], //h5 |
| | | submitLoading: false |
| | | }; |
| | | }, |
| | | methods: { |
| | | ...mapMutations(['setUserTabbar']), |
| | | //登录 |
| | | async submit() { |
| | | uni.showLoading({ |
| | | title: '登录中...' |
| | | }); |
| | | //表单校验 |
| | | if (this.username.length === 0) { |
| | | this.$u.toast('请输入账号'); |
| | | return; |
| | | } |
| | | if (this.password.length === 0) { |
| | | this.$u.toast('请输入密码'); |
| | | return; |
| | | } |
| | | let grant_type = 'password'; |
| | | //登录接口 |
| | | this.submitLoading = true |
| | | await apiLoginPassword({ |
| | | username: this.username, |
| | | password: this.password, |
| | | grant_type, |
| | | scope: 'server' |
| | | }) |
| | | .then(res => { |
| | | this.submitLoading = false |
| | | setToken(res.access_token); |
| | | setRefreshToken(res.refresh_token); |
| | | if (this.btnText == 0) { |
| | | this.submitLoading = false |
| | | if (res.code != 1) { |
| | | // 登陆成功,存储相关信息 |
| | | setToken(res.access_token); |
| | | setRefreshToken(res.refresh_token); |
| | | setUsernameKey(res.username); |
| | | //查询用户详细信息并储存 |
| | | this.$reqGet('getUserEntity') |
| | | .then(res => { |
| | | |
| | | // #ifdef H5 |
| | | if(this.weXinisLoginFlag.includes(res.data.type)) { |
| | | console.log('触发登录角色') |
| | | this.$u.toast('当前角色请前往小程序登录') |
| | | return ; |
| | | |
| | | } |
| | | } |
| | | }); |
| | | if (uni.getStorageSync('bindcode')) { |
| | | this.$reqPost('wxBind', { state: 'MINI', code: uni.getStorageSync('bindcode') }, 'params').then(res => { |
| | | //#endif |
| | | this.$u.toast('登录成功'); |
| | | // #ifdef H5 |
| | | if(this.isJizhu.length){ //记住密码 |
| | | uni.setStorageSync('remberPassWord',{ |
| | | username: this.username, |
| | | password: this.password, |
| | | }); |
| | | }else{ |
| | | uni.setStorageSync('remberPassWord',{ |
| | | username: this.username, |
| | | password: '', |
| | | }); |
| | | } |
| | | //#endif |
| | | this.submitLoading = false |
| | | this.getLoginInfo(); // 记录登录信息 |
| | | this.setUserTabbar(res.data.type); |
| | | uni.setStorageSync('roleType', res.data.type); |
| | | uni.setStorageSync("userId", res.data.userId) |
| | | uni.setStorageSync("carNo", res.data.carNo) |
| | | uni.setStorageSync("userInfo", res.data) |
| | | setCustomerId(res.data.customerid); |
| | | setName(res.name); |
| | | let data=uni.getStorageSync('userList')?JSON.parse(uni.getStorageSync('userList')):[]; |
| | | let id = data.length + 1; |
| | | if (data.filter(item=> item.username == this.username).length == 0){ |
| | | data.push({username: this.username,password: this.password,type:res.data.type}) |
| | | } |
| | | uni.setStorageSync("userList", JSON.stringify(data)) |
| | | uni.hideLoading(); |
| | | if(res.data.forcePassword == 1) { |
| | | uni.navigateTo({ |
| | | url: '/pages/login/resetPassword/resetPassword' |
| | | }) |
| | | }else { |
| | | //跳转页面 |
| | | this.$nextTick(() => { |
| | | redirectHome(); |
| | | }); |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | this.submitLoading = false |
| | | this.$u.toast('登录异常!'); |
| | | console.log(err); |
| | | }); |
| | | } else { |
| | | uni.hideLoading(); |
| | | if (res.code == 0) { |
| | | this.$u.toast('绑定成功!即将回到登录页!'); |
| | | setTimeout(() => { |
| | | uni.navigateBack(); |
| | | }, 1000); |
| | | } else { |
| | | this.$u.toast(res.msg ? res.msg : '绑定失败'); |
| | | this.$u.toast(res.msg); |
| | | } |
| | | } else { |
| | | console.log('微信绑定?????') |
| | | uni.login({ |
| | | success: res => { |
| | | if (res.code) { |
| | | uni.setStorageSync('bindcode', res.code); |
| | | } |
| | | if (uni.getStorageSync('bindcode')) { |
| | | this.$reqPost('wxBind', { state: 'MINI', code: uni.getStorageSync('bindcode') }, |
| | | 'params').then(res => { |
| | | uni.hideLoading(); |
| | | if (res.code == 0) { |
| | | this.$u.toast('绑定成功!即将回到登录页!'); |
| | | setTimeout(() => { |
| | | uni.navigateBack(); |
| | | }, 1000); |
| | | } else { |
| | | this.$u.toast(res.msg ? res.msg : '绑定失败'); |
| | | } |
| | | }).finally(() => { |
| | | this.submitLoading = false; |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | this.submitLoading = false |
| | | |
| | | } |
| | | } |
| | | }).catch(e => { |
| | | this.submitLoading = false |
| | | this.$u.toast(e); |
| | | }); |
| | | |
| | | }, |
| | | //记录登录信息 |
| | | getLoginInfo(){ |
| | | this.$reqPost('setApplogonTime').then((res) => { |
| | | |
| | | }) |
| | | .catch(e => { |
| | | this.$u.toast(e); |
| | | }); |
| | | }, |
| | | checkboxChange(val){ |
| | | console.log(val,'isJz') |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import 'index.scss'; |
| | | .dengluBtn { |
| | | margin-top: 80rpx; |
| | | } |
| | | /* #ifdef H5 */ |
| | | .loginBtn{ |
| | | width: 80%; |
| | | margin: 0 auto; |
| | | } |
| | | /* #endif */ |
| | | @import 'index.scss'; |
| | | |
| | | .dengluBtn { |
| | | margin-top: 80rpx; |
| | | } |
| | | .jizhu{ |
| | | padding: 40rpx 70rpx 40rpx 70rpx; |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | </style> |