Browse Source

登录/我的页面合并(npm i 一下)

lisu
mk 2 years ago
parent
commit
bf18819ac3
  1. 4
      package.json
  2. 4
      src/api/index.js
  3. 10
      src/api/user.js
  4. 19
      src/assets/css/common.less
  5. 2
      src/main.js
  6. 5
      src/router/router.config.js
  7. 12
      src/utils/index.js
  8. 43
      src/utils/request.js
  9. 57
      src/views/login/index.vue

4
package.json

@ -34,7 +34,8 @@
"vue": "^2.7.8",
"vue-demi": "^0.14.0",
"vue-router": "^3.5.4",
"vuex": "^3.6.2"
"vuex": "^3.6.2",
"jsencrypt": "^3.0.3"
},
"devDependencies": {
"@babel/core": "^7.18.10",
@ -44,6 +45,7 @@
"@vue/cli-plugin-router": "~5.0.8",
"@vue/cli-plugin-vuex": "~5.0.8",
"@vue/cli-service": "~5.0.8",
"@vue/cli-shared-utils": "^5.0.8",
"ajv": "^7.2.4",
"babel-eslint": "^10.1.0",
"babel-plugin-import": "^1.13.5",

4
src/api/index.js

@ -1,7 +1,7 @@
const api = {
Login: '/user/login',
Login: '/auth/login/govH5/loginByPassword',
UserInfo: '/user/userinfo',
UserName: '/user/name'
Customerlist: '/epmetuser/customerstaff/customerlist'
}
export default api

10
src/api/user.js

@ -17,16 +17,14 @@ export function getUserInfo(data) {
url: api.UserInfo,
method: 'post',
data,
hideloading: true
})
}
// 用户名称 get 方法
export function getUserName(params) {
export function getCustomerlist(data) {
return request({
url: api.UserName,
method: 'get',
params,
hideloading: true
url: api.Customerlist,
method: 'post',
data,
})
}

19
src/assets/css/common.less

@ -1,15 +1,3 @@
html,
body #app {
color: @black;
background-color: @background-color;
}
#app {
font-size: 16px;
background-size: 100% auto;
}
.flex {
display: flex;
}
@ -66,5 +54,10 @@ body #app {
margin-top: 12px;
}
.font-size13{
font-size: 13px;
}
.text-blue{
color:#3e92ff;
}

2
src/main.js

@ -20,6 +20,8 @@ Vue.config.productionTip = false
// 日期格式化插件
import dayjs from 'dayjs'
import http from "@/utils/request";
Vue.prototype.$http = http;
Vue.prototype.$dayjs = dayjs
// 提示框封装
// import { Tips } from '@/utils'

5
src/router/router.config.js

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

12
src/utils/index.js

@ -8,6 +8,7 @@
* @param {string} cFormat
* @returns {string}
*/
import JSEncrypt from "jsencrypt"; //引入加密
export function parseTime(time, cFormat) {
if (arguments.length === 0) {
return null
@ -108,3 +109,14 @@ export function param2Obj(url) {
'"}'
)
}
// 加密
export function encryptedData(key, data) {
console.log(key, data);
// 新建JSEncrypt对象
let encryptor = new JSEncrypt();
// 设置公钥
encryptor.setPublicKey(key);
// 加密数据
return encryptor.encrypt(data);
}

43
src/utils/request.js

@ -13,16 +13,11 @@ const service = axios.create({
// request拦截器 request interceptor
service.interceptors.request.use(
config => {
// 不传递默认开启loading
if (!config.hideloading) {
// loading
Toast.loading({
forbidClick: true
})
}
if (store.getters.token) {
config.headers['X-Token'] = ''
config.headers['source'] = process.env.NODE_ENV !== 'production' ? 'dev' : 'prod'
if (localStorage.getItem('token')) {
config.headers['Token'] = localStorage.getItem('token')
}
config.baseURL = config.baseURL + '/'
return config
},
error => {
@ -37,22 +32,34 @@ service.interceptors.response.use(
Toast.clear()
const res = response.data
if (res.status && res.status !== 200) {
// 登录超时,重新登录
if (res.status === 401) {
store.dispatch('FedLogOut').then(() => {
location.reload()
})
}
return Promise.reject(res || 'error')
} else {
return Promise.resolve(res)
if (res.code === 0) {
return Promise.resolve(res)
} else {
let loginCode = [10007, 401, 10001, 10005, 10006]
if (loginCode.includes(res.code)) {
localStorage.removeItem('token')
router.replace('/login')
}
// Tips.error(res.msg)
return Promise.reject(res || 'error')
}
}
},
error => {
Toast.clear()
console.log('err' + error) // for debug
if (error.response.status === 401) {
Dialog({ message: '登录过期,请重新登录' }).then(() => {
localStorage.removeItem('token')
router.replace(
'/login'
)
})
} else {
// Tips.error(error.response.data.message)
}
return Promise.reject(error)
}
)
export default service

57
src/views/login/index.vue

@ -8,27 +8,70 @@
<van-field v-model="password" label="密码" type="password" placeholder="请输入密码" />
</van-cell-group>
</div>
<van-button type="info" round block style="margin-top: 35px;">登录</van-button>
<van-button type="info" round block style="margin-top: 35px;" @click="handelCLickLogin">登录</van-button>
<div class="flex flex-end flex-center1 m-top12">
<van-checkbox v-model="checked" shape="square">下次自动登录</van-checkbox>
<span>忘记密码?</span>
<span class="text-blue">忘记密码?</span>
</div>
</div>
</template>
<script>
import { login, getCustomerlist } from '@/api/user'
import { encryptedData } from "@/utils";
export default {
data() {
return {
phone: null,
password: null,
checked:false
checked: false,
pubKey: null,//
customerId: null,//id
};
},
created() { },
created() {
this.getPubKey()
},
methods: {
handelBlurPhone() {
getPubKey() {
this.$http
.post("/auth/govweb/getKey")
.then((res) => {
this.pubKey = res.data; // ;
console.log(this.pubKey);
})
.catch((err) => {
console.log(err);
});
},
async handelBlurPhone() {
console.log(this.pubKey);
let parms = {
phone: encryptedData(this.pubKey, this.phone),
}
let { data, code, msg } = await getCustomerlist(parms)
if (code === 0) {
console.log(data);
this.customerId = data[0].customerId
} else {
console.log(msg);
}
console.log(this.phone);
},
async handelCLickLogin() {
let parms = {
app: 'gov',
client: 'h5',
password: this.password,
phone: this.phone,
customerId: this.customerId
}
let { data, code, msg } = await login(parms)
if (code === 0) {
} else {
console.log(msg);
}
}
},
components: {},
@ -38,7 +81,7 @@ export default {
</script>
<style lang='less' scoped>
.login{
.login {
box-sizing: border-box;
width: calc(100% - 20px);
margin: 10px auto 0;

Loading…
Cancel
Save