10 changed files with 30 additions and 308 deletions
After Width: | Height: | Size: 314 KiB |
@ -1,293 +0,0 @@ |
|||||
<template> |
|
||||
<div class="g-app"> |
|
||||
<div class="g-bd" v-if="isShowLogin || true"> |
|
||||
<div class="m-fm"> |
|
||||
<div class="wrap"> |
|
||||
<h2 class="title">{{ $t('brand.work') }}</h2> |
|
||||
<div class="fm"> |
|
||||
<el-form |
|
||||
:model="dataForm" |
|
||||
:rules="dataRule" |
|
||||
ref="dataForm" |
|
||||
@keyup.enter.native="dataFormSubmitHandle()" |
|
||||
status-icon |
|
||||
> |
|
||||
<div class="fm-item"> |
|
||||
<div class="ico"> |
|
||||
<img src="@/assets/img/login/zhanghao.png" alt="" /> |
|
||||
</div> |
|
||||
<div class="input"> |
|
||||
<input |
|
||||
type="text" |
|
||||
v-model="dataForm.phone" |
|
||||
placeholder="账号" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="fm-item"> |
|
||||
<div class="ico"> |
|
||||
<img src="@/assets/img/login/mima.png" alt="" /> |
|
||||
</div> |
|
||||
<div class="input"> |
|
||||
<input |
|
||||
type="password" |
|
||||
v-model="dataForm.password" |
|
||||
:placeholder="$t('login.password')" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="fm-captcha"> |
|
||||
<div class="fm-item"> |
|
||||
<div class="input"> |
|
||||
<input |
|
||||
type="text" |
|
||||
v-model="dataForm.captcha" |
|
||||
placeholder="验证码" |
|
||||
/> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="captcha"> |
|
||||
<img :src="captchaPath" @click="getCaptcha()" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="fm-btn" @click="dataFormSubmitHandle()"> |
|
||||
{{ $t('login.title') }} |
|
||||
</div> |
|
||||
<div class="hint">请使用小程序端的账号密码登录</div> |
|
||||
</el-form> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="m-footer"> |
|
||||
<div class="login-footer"> |
|
||||
<p> |
|
||||
<a href="" target="_blank">{{ $t('login.copyright') }}</a> |
|
||||
</p> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<c-dialog |
|
||||
:showFooter="false" |
|
||||
:title="'选择客户'" |
|
||||
:isNest="false" |
|
||||
:visible="diaVisible" |
|
||||
:dialogHeight="0.8" |
|
||||
:width="30" |
|
||||
:top="'120px'" |
|
||||
@cancel="diaCancel" |
|
||||
> |
|
||||
<!-- <div class="div_total"> --> |
|
||||
<div v-for="(item, index) in tableData" :key="index" class="div_row"> |
|
||||
<span @click="selectCustomer(item)" class="span_name">{{ |
|
||||
item.customerName |
|
||||
}}</span> |
|
||||
</div> |
|
||||
</c-dialog> |
|
||||
</div> |
|
||||
</template> |
|
||||
<script> |
|
||||
import Cookies from 'js-cookie' |
|
||||
import CDialog from '@c/CDialog' |
|
||||
import debounce from 'lodash/debounce' |
|
||||
import { messages } from '@/i18n' |
|
||||
import { getUUID } from '@/utils' |
|
||||
import { Loading } from 'element-ui' // 引入Loading服务 |
|
||||
import JSEncrypt from 'jsencrypt' //引入加密 |
|
||||
|
|
||||
let loading // 加载动画 |
|
||||
export default { |
|
||||
data() { |
|
||||
return { |
|
||||
pubKey: null, // 获取到公钥 |
|
||||
isShowLogin: true, |
|
||||
i18nMessages: messages, |
|
||||
captchaPath: '', |
|
||||
dataForm: { |
|
||||
customerId: '', |
|
||||
app: 'gov', |
|
||||
client: 'web', |
|
||||
username: '', |
|
||||
phone: '', |
|
||||
password: '', |
|
||||
uuid: '', |
|
||||
captcha: '' |
|
||||
}, |
|
||||
// 客户列表相关 |
|
||||
diaVisible: false, |
|
||||
tableLoading: false, |
|
||||
tableData: [] |
|
||||
} |
|
||||
}, |
|
||||
components: { |
|
||||
CDialog |
|
||||
}, |
|
||||
computed: { |
|
||||
dataRule() { |
|
||||
return { |
|
||||
phone: [{ required: true, message: '手机号不能为空', trigger: 'blur' }], |
|
||||
password: [ |
|
||||
{ required: true, message: '密码不能为空', trigger: 'blur' } |
|
||||
], |
|
||||
captcha: [ |
|
||||
{ required: true, message: '验证码不能为空', trigger: 'blur' } |
|
||||
] |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
created() { |
|
||||
//平阴联动平台 登陆 |
|
||||
if (this.$route.query.platformToken) { |
|
||||
this.isShowLogin = false |
|
||||
this.getAutoLogin(this.$route.query.platformToken) |
|
||||
} else { |
|
||||
this.getCaptcha() |
|
||||
//获取公钥 |
|
||||
this.getPubKey() |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
localStorage.removeItem('showHeader') |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
// 获取公钥 |
|
||||
getPubKey() { |
|
||||
this.$http |
|
||||
.post('/auth/govweb/getKey') |
|
||||
.then(({ data: res }) => { |
|
||||
if (res.code !== 0) { |
|
||||
return this.$message.error(res.msg) |
|
||||
} |
|
||||
|
|
||||
this.pubKey = res.data // 获取到公钥; |
|
||||
}) |
|
||||
.catch(() => {}) |
|
||||
}, |
|
||||
// 获取验证码 |
|
||||
getCaptcha() { |
|
||||
this.dataForm.uuid = getUUID() |
|
||||
this.captchaPath = `${window.SITE_CONFIG['apiURL']}/auth/login/captcha?uuid=${this.dataForm.uuid}` |
|
||||
}, |
|
||||
// 表单提交 |
|
||||
dataFormSubmitHandle() { |
|
||||
this.$refs['dataForm'].validate((valid, messageObj) => { |
|
||||
if (!valid) { |
|
||||
app.util.validateRule(messageObj) |
|
||||
} |
|
||||
this.startLoading() |
|
||||
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/epmetuser/customerstaff/customerlist' |
|
||||
const url = '/epmetuser/customerstaff/customerlist' |
|
||||
const params = { |
|
||||
phone: this.dataForm.phone |
|
||||
} |
|
||||
window.app.ajax.post( |
|
||||
url, |
|
||||
params, |
|
||||
(data, rspMsg) => { |
|
||||
if (data.length === 0) { |
|
||||
//没有客户,提示无法登录 |
|
||||
this.$message.error('账号不存在') |
|
||||
this.endLoading() |
|
||||
} else if (data.length === 1) { |
|
||||
this.selectCustomer(data[0]) |
|
||||
} else { |
|
||||
this.endLoading() |
|
||||
this.diaVisible = true |
|
||||
this.$nextTick(() => { |
|
||||
this.tableData = data |
|
||||
}) |
|
||||
} |
|
||||
}, |
|
||||
(rspMsg, data) => { |
|
||||
this.endLoading() |
|
||||
this.$message.error(rspMsg) |
|
||||
} |
|
||||
) |
|
||||
}) |
|
||||
}, |
|
||||
// 平阴联动 自动登录接口 |
|
||||
getAutoLogin(platformToken) { |
|
||||
this.dataForm.thirdToken = platformToken |
|
||||
this.dataForm.platform = 'pyld' |
|
||||
this.$http |
|
||||
.post(`/auth/sso/oper/third/login`, this.dataForm) |
|
||||
.then(({ data: res }) => { |
|
||||
if (res.code !== 0) { |
|
||||
if (res.code == 8302) { |
|
||||
return this.$message.error(res.msg) |
|
||||
} |
|
||||
return this.$message.error(res.msg) |
|
||||
} |
|
||||
localStorage.setItem('customerId', res.data.customerId) |
|
||||
localStorage.setItem('userType', 'work') |
|
||||
localStorage.setItem('showHeader', '0') |
|
||||
Cookies.set('token', res.data.token) |
|
||||
this.$router.replace({ name: 'home' }) |
|
||||
}) |
|
||||
.catch(() => {}) |
|
||||
// epmet-ext9.elinkservice.cn/platform-admin |
|
||||
}, |
|
||||
//选择客户 |
|
||||
selectCustomer(row) { |
|
||||
localStorage.setItem('customerId', row.customerId) |
|
||||
localStorage.setItem('customerName', row.customerName) |
|
||||
this.startLoading() |
|
||||
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/auth/govweb/login' |
|
||||
const url = '/auth/govweb/login' |
|
||||
this.dataForm.customerId = row.customerId |
|
||||
let param = {} |
|
||||
Object.assign(param, this.dataForm) |
|
||||
param.password = this.encryptedData(this.pubKey, this.dataForm.password) |
|
||||
this.$http |
|
||||
.post(url, param) |
|
||||
.then(({ data: res }) => { |
|
||||
if (res.code !== 0) { |
|
||||
this.getCaptcha() |
|
||||
return this.$message.error(res.msg) |
|
||||
} |
|
||||
this.diaVisible = false |
|
||||
|
|
||||
localStorage.setItem('userType', 'work') |
|
||||
|
|
||||
Cookies.set('token', res.data.token) |
|
||||
this.$router.replace({ name: 'indexWork' }).catch(() => {}) |
|
||||
}) |
|
||||
.catch(() => {}) |
|
||||
this.endLoading() |
|
||||
}, |
|
||||
// 取消 |
|
||||
diaCancel() { |
|
||||
this.diaVisible = false |
|
||||
}, |
|
||||
// 开启加载动画 |
|
||||
startLoading() { |
|
||||
loading = Loading.service({ |
|
||||
lock: true, // 是否锁定 |
|
||||
text: '正在加载……', // 加载中需要显示的文字 |
|
||||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|
||||
}) |
|
||||
}, |
|
||||
// 结束加载动画 |
|
||||
endLoading() { |
|
||||
// clearTimeout(timer); |
|
||||
if (loading) { |
|
||||
loading.close() |
|
||||
} |
|
||||
}, |
|
||||
// 加密 |
|
||||
encryptedData(key, data) { |
|
||||
// 新建JSEncrypt对象 |
|
||||
let encryptor = new JSEncrypt() |
|
||||
// 设置公钥 |
|
||||
encryptor.setPublicKey(key) |
|
||||
// 加密数据 |
|
||||
return encryptor.encrypt(data) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" src="@/assets/scss/pages/loginWork.scss"></style> |
|
Loading…
Reference in new issue