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. 13
      src/views/login/index.vue
  10. 22
      src/views/mine/index.vue

2
src/api/index.js

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

2
src/api/user.js

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

4
src/assets/css/index.less

@ -1,8 +1,8 @@
html, html,
body #app { body #app {
color: @black; color: #333333;
background-color: @background-color; background-color: #f7f7f7;
} }
#app { #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, List,
ActionSheet, ActionSheet,
Checkbox, Checkbox,
CellGroup CellGroup,
Form
} from 'vant' } from 'vant'
Vue.use(Button) Vue.use(Button)
@ -51,3 +52,4 @@ Vue.use(Button)
.use(ActionSheet) .use(ActionSheet)
.use(Checkbox) .use(Checkbox)
.use(CellGroup) .use(CellGroup)
.use(Form)

2
src/router/router.config.js

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

8
src/utils/request.js

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

13
src/views/login/index.vue

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

22
src/views/mine/index.vue

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

Loading…
Cancel
Save