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

4
src/api/index.js

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

10
src/api/user.js

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

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 { .flex {
display: flex; display: flex;
} }
@ -66,5 +54,10 @@ body #app {
margin-top: 12px; 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 dayjs from 'dayjs'
import http from "@/utils/request";
Vue.prototype.$http = http;
Vue.prototype.$dayjs = dayjs Vue.prototype.$dayjs = dayjs
// 提示框封装 // 提示框封装
// import { Tips } from '@/utils' // import { Tips } from '@/utils'

5
src/router/router.config.js

@ -7,5 +7,10 @@ export const constantRouterMap = [
path: '/', path: '/',
component: () => import('@/views/login'), component: () => import('@/views/login'),
meta: { title: '登录', keepAlive: false } 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 * @param {string} cFormat
* @returns {string} * @returns {string}
*/ */
import JSEncrypt from "jsencrypt"; //引入加密
export function parseTime(time, cFormat) { export function parseTime(time, cFormat) {
if (arguments.length === 0) { if (arguments.length === 0) {
return null 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 // request拦截器 request interceptor
service.interceptors.request.use( service.interceptors.request.use(
config => { config => {
// 不传递默认开启loading config.headers['source'] = process.env.NODE_ENV !== 'production' ? 'dev' : 'prod'
if (!config.hideloading) { if (localStorage.getItem('token')) {
// loading config.headers['Token'] = localStorage.getItem('token')
Toast.loading({
forbidClick: true
})
}
if (store.getters.token) {
config.headers['X-Token'] = ''
} }
config.baseURL = config.baseURL + '/'
return config return config
}, },
error => { error => {
@ -37,22 +32,34 @@ service.interceptors.response.use(
Toast.clear() Toast.clear()
const res = response.data const res = response.data
if (res.status && res.status !== 200) { if (res.status && res.status !== 200) {
// 登录超时,重新登录
if (res.status === 401) {
store.dispatch('FedLogOut').then(() => {
location.reload()
})
}
return Promise.reject(res || 'error') return Promise.reject(res || 'error')
} else { } 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 => { error => {
Toast.clear() 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) return Promise.reject(error)
} }
) )
export default service export default service

57
src/views/login/index.vue

@ -8,27 +8,70 @@
<van-field v-model="password" label="密码" type="password" placeholder="请输入密码" /> <van-field v-model="password" label="密码" type="password" placeholder="请输入密码" />
</van-cell-group> </van-cell-group>
</div> </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"> <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>忘记密码?</span> <span class="text-blue">忘记密码?</span>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { login, getCustomerlist } from '@/api/user'
import { encryptedData } from "@/utils";
export default { export default {
data() { data() {
return { return {
phone: null, phone: null,
password: null, password: null,
checked:false checked: false,
pubKey: null,//
customerId: null,//id
}; };
}, },
created() { }, created() {
this.getPubKey()
},
methods: { 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); 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: {}, components: {},
@ -38,7 +81,7 @@ export default {
</script> </script>
<style lang='less' scoped> <style lang='less' scoped>
.login{ .login {
box-sizing: border-box; box-sizing: border-box;
width: calc(100% - 20px); width: calc(100% - 20px);
margin: 10px auto 0; margin: 10px auto 0;

Loading…
Cancel
Save