Browse Source

获取用户信息,token处理

master
mk 1 year ago
parent
commit
0018b0ffc1
  1. 2
      src/api/index.js
  2. 2
      src/api/user.js
  3. 4
      src/assets/css/index.less
  4. 36
      src/assets/css/mixin.scss
  5. 3
      src/assets/css/variables.scss
  6. 4
      src/plugins/vant.js
  7. 2
      src/router/router.config.js
  8. 8
      src/utils/request.js
  9. 25
      src/views/login/index.vue
  10. 22
      src/views/mine/index.vue

2
src/api/index.js

@ -1,6 +1,6 @@
const api = {
Login: '/auth/login/govH5/loginByPassword',
UserInfo: '/user/userinfo',
UserInfo: '/epmetuser/customerstaff/govH5/detail',
Customerlist: '/epmetuser/customerstaff/customerlist'
}

2
src/api/user.js

@ -15,7 +15,7 @@ export function login(data) {
export function getUserInfo(data) {
return request({
url: api.UserInfo,
method: 'post',
method: 'get',
data,
})
}

4
src/assets/css/index.less

@ -1,8 +1,8 @@
html,
body #app {
color: @black;
background-color: @background-color;
color: #333333;
background-color: #f7f7f7;
}
#app {

36
src/assets/css/mixin.scss

@ -1,36 +0,0 @@
// mixin
// 清除浮动
@mixin clearfix {
&:after {
content: "";
display: table;
clear: both;
}
}
// 多行隐藏
@mixin textoverflow($clamp:1) {
display: block;
overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: $clamp;
/*! autoprefixer: ignore next */
-webkit-box-orient: vertical;
}
//flex box
@mixin flexbox($jc:space-between, $ai:center, $fd:row, $fw:nowrap) {
display: flex;
display: -webkit-flex;
flex: 1;
justify-content: $jc;
-webkit-justify-content: $jc;
align-items: $ai;
-webkit-align-items: $ai;
flex-direction: $fd;
-webkit-flex-direction: $fd;
flex-wrap: $fw;
-webkit-flex-wrap: $fw;
}

3
src/assets/css/variables.scss

@ -1,3 +0,0 @@
// variables
$background-color: #f8f8f8;
$theme-color: #07b0b8;

4
src/plugins/vant.js

@ -24,7 +24,8 @@ import {
List,
ActionSheet,
Checkbox,
CellGroup
CellGroup,
Form
} from 'vant'
Vue.use(Button)
@ -51,3 +52,4 @@ Vue.use(Button)
.use(ActionSheet)
.use(Checkbox)
.use(CellGroup)
.use(Form)

2
src/router/router.config.js

@ -5,11 +5,13 @@
export const constantRouterMap = [
{
path: '/',
name:'login',
component: () => import('@/views/login'),
meta: { title: '登录', keepAlive: false }
},
{
path: '/mine',
name:'mine',
component: () => import('@/views/mine'),
meta: { title: '我的', keepAlive: false }
}

8
src/utils/request.js

@ -3,6 +3,7 @@ import store from '@/store'
import { Toast } from 'vant'
// 根据环境不同引入不同api地址
import { baseApi } from '@/config'
import router from '@/router'
import { Tips } from '@/utils/index'
// create an axios instance
const service = axios.create({
@ -15,8 +16,11 @@ const service = axios.create({
service.interceptors.request.use(
config => {
config.headers['source'] = process.env.NODE_ENV !== 'production' ? 'dev' : 'prod'
config.headers.client = 'web'
config.headers.app = 'gov'
if (localStorage.getItem('token')) {
config.headers['Token'] = localStorage.getItem('token')
config.headers['Authorization'] = localStorage.getItem('token')
}
config.baseURL = config.baseURL + '/'
return config
@ -41,7 +45,7 @@ service.interceptors.response.use(
let loginCode = [10007, 401, 10001, 10005, 10006]
if (loginCode.includes(res.code)) {
localStorage.removeItem('token')
router.replace('/login')
router.replace('/')
}
Tips.error(res.msg)
return Promise.reject(res || 'error')
@ -54,7 +58,7 @@ service.interceptors.response.use(
Dialog({ message: '登录过期,请重新登录' }).then(() => {
localStorage.removeItem('token')
router.replace(
'/login'
'/'
)
})
} else {

25
src/views/login/index.vue

@ -1,14 +1,16 @@
<template>
<div class='login'>
<div class="card">
<van-cell-group inset>
<van-field v-model="phone" label="手机号" type="tel" placeholder="请输入手机号" @blur="handelBlurPhone" />
</van-cell-group>
<van-cell-group inset>
<van-field v-model="password" label="密码" type="password" placeholder="请输入密码" />
</van-cell-group>
</div>
<van-button type="info" round block style="margin-top: 35px;" @click="handelCLickLogin">登录</van-button>
<van-form @submit="handelCLickLogin">
<div class="card">
<van-cell-group inset>
<van-field v-model="phone" label="手机号" type="tel" placeholder="请输入手机号" @blur="handelBlurPhone" :rules="[{ required: true }]"/>
</van-cell-group>
<van-cell-group inset>
<van-field v-model="password" label="密码" type="password" placeholder="请输入密码" :rules="[{ required: true}]"/>
</van-cell-group>
</div>
<van-button type="info" round block style="margin-top: 35px;" native-type="submit">登录</van-button>
</van-form>
<div class="flex flex-end flex-center1 m-top12">
<van-checkbox v-model="checked" shape="square">下次自动登录</van-checkbox>
<span class="text-blue">忘记密码?</span>
@ -44,7 +46,6 @@ export default {
});
},
async handelBlurPhone() {
console.log(this.pubKey);
let parms = {
phone: encryptedData(this.pubKey, this.phone),
}
@ -54,7 +55,6 @@ export default {
} else {
console.log(msg);
}
console.log(this.phone);
},
async handelCLickLogin() {
let parms = {
@ -66,7 +66,8 @@ export default {
}
let { data, code, msg } = await login(parms)
if (code === 0) {
localStorage.setItem("token", data.token);
this.$router.replace({name:'mine'})
} else {
console.log(msg);
}

22
src/views/mine/index.vue

@ -2,8 +2,6 @@
<div class='pages'>
<div class="heard">
<div class="my_top"></div>
<!-- <van-avatar size="large" src="../../../assets/logo.png"></van-avatar> -->
<div class="my_info">
<div class="my_left">
<img src="@/assets/images/logo.png" class="my_img">
@ -18,8 +16,7 @@
</div>
<div class="my_card">
<div class="my_zzz">
<div class="z_left"><img src="@/assets/images/icon/password.png" class="z_img">
修改密码</div>
<div class="z_left"><img src="@/assets/images/icon/password.png" class="z_img">修改密码</div>
<div class="z_right"><img src="@/assets/images/icon/right.png" class="z_img"></div>
</div>
</div>
@ -29,14 +26,23 @@
</template>
<script>
import { getUserInfo } from '@/api/user'
export default {
data() {
return {
};
},
created() { },
created() {
this.getUserInfo()
},
methods: {
async getUserInfo(){
let {data,code,msg} = await getUserInfo()
if(code == 0){
console.log(data);
}
}
},
components: {},
computed: {},
@ -87,17 +93,17 @@ export default {
// margin-top: 14px;
}
.details{
margin-top: 8px;
margin-top: 13px;
font-size: 13px;
opacity: 50%;
}
.my_card{
background: #ffffff;
width: 95%;
width:calc(100% - 20px);
height: 50px;
border-radius: 10px;
margin: 20px 10px 0;
margin: 23px 10px 0;
}
.my_zzz{
display: flex;

Loading…
Cancel
Save