You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
6.9 KiB
248 lines
6.9 KiB
<template>
|
|
<div class="login">
|
|
<!-- 公司左上角logo -->
|
|
<div class="left-logo">
|
|
<svg-icon icon-class="icon-hm-login1" style="font-size:130px;" />
|
|
</div>
|
|
<!-- 中间背景 -->
|
|
<div class="login-bgm" />
|
|
<!-- <img src="../../../assets/img/login_bgm.png" alt="" class="login-bgm"> -->
|
|
<div class="login-content">
|
|
<div class="login-content-title">
|
|
<div class="hospital_logo">
|
|
<img width="500" src="@/assets/img/xianganlogo.png">
|
|
</div>
|
|
<p class="main-title">眼科工作平台</p>
|
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
|
<el-tab-pane label="密码登录" name="first">
|
|
<el-form
|
|
ref="dataForm"
|
|
:model="dataForm"
|
|
:rules="dataRule"
|
|
status-icon
|
|
>
|
|
<!-- 用户名 -->
|
|
<el-form-item prop="account">
|
|
<el-input v-model="dataForm.account" placeholder="请输入工号" @keyup.enter.native="submitNext" />
|
|
</el-form-item>
|
|
<!-- 密码 -->
|
|
<el-form-item prop="password">
|
|
<el-input ref="passWord" v-model="dataForm.password" type="password" placeholder="请输入密码" @keyup.enter.native="submitNext2" />
|
|
</el-form-item>
|
|
<el-form-item prop="captcha">
|
|
<el-row :gutter="10">
|
|
<el-col :span="14">
|
|
<el-input ref="captcha" v-model="dataForm.captcha" :placeholder="$t('login.captcha')" @keyup.enter.native="dataFormSubmitHandle()" />
|
|
</el-col>
|
|
<el-col :span="10" class="login-captcha">
|
|
<img :src="captchaPath" @click="getCaptcha()">
|
|
</el-col>
|
|
</el-row>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" class="w-percent-100" @click="dataFormSubmitHandle()">{{ $t('login.title') }}
|
|
</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<p class="tips">没有账号? 请联系管理员</p>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="CA登录" name="second" />
|
|
</el-tabs>
|
|
</div>
|
|
</div>
|
|
<div class="login-footer">
|
|
<p class="copyright">南京慧目信息技术有限公司 版权所有</p>
|
|
</div>
|
|
<el-dialog
|
|
class="caLogin"
|
|
:visible.sync="visible"
|
|
width="60%"
|
|
title="CA登录"
|
|
@close="visible === false"
|
|
>
|
|
<iframe name="ifrmName" frameborder="0" width="100%" height="100%" :src="caUrl" />
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import debounce from 'lodash/debounce'
|
|
import { messages } from '@/i18n'
|
|
import { getUUID } from '@/utils'
|
|
export default {
|
|
data() {
|
|
return {
|
|
i18nMessages: messages,
|
|
activeName: 'first',
|
|
captchaPath: '',
|
|
visible: false,
|
|
// caUrl: 'http://10.80.5.32:8034/ca3/index.jsp',
|
|
caUrl: 'http://10.80.5.32:8034/ca3/index.jsp',
|
|
dataForm: {
|
|
account: '',
|
|
password: '',
|
|
uuid: '',
|
|
captcha: ''
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
dataRule() {
|
|
return {
|
|
account: [
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
],
|
|
password: [
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
|
|
],
|
|
captcha: [
|
|
{ required: false, message: this.$t('validate.required'), trigger: 'blur' }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
created() {
|
|
this.getCaptcha()
|
|
},
|
|
methods: {
|
|
handleClick() {
|
|
if (this.activeName === 'second') {
|
|
this.visible = true
|
|
this.$nextTick(() => {
|
|
document.getElementsByTagName('iframe')[0].src = this.caUrl
|
|
})
|
|
}
|
|
},
|
|
submitNext() {
|
|
this.$refs.passWord.focus()
|
|
},
|
|
submitNext2() {
|
|
this.$refs.captcha.focus()
|
|
},
|
|
// 获取验证码
|
|
async getCaptcha() {
|
|
this.dataForm.uuid = getUUID()
|
|
const { data: res } = await this.$http.get(`/captcha?uuid=${this.dataForm.uuid}`)
|
|
this.captchaPath = res.data
|
|
},
|
|
// 表单提交
|
|
dataFormSubmitHandle: debounce(function() {
|
|
this.$refs['dataForm'].validate((valid) => {
|
|
if (!valid) {
|
|
return false
|
|
}
|
|
const params = {
|
|
...this.dataForm
|
|
}
|
|
params.password = this.$md5(this.dataForm.password)
|
|
this.$http.post('/login', params).then(({ data: res }) => {
|
|
if (res.code !== 0) {
|
|
this.getCaptcha()
|
|
return this.$message.error(res.msg)
|
|
}
|
|
window.sessionStorage.setItem('xa-token', res.data.token)
|
|
window.sessionStorage.setItem('qg-userData', JSON.stringify(res.data.currentUser))
|
|
this.$router.push({ name: 'outpatientManagement-call' })
|
|
}).catch(() => { })
|
|
})
|
|
}, 1000, { 'leading': true, 'trailing': false })
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.login {
|
|
width: 100vw;
|
|
height: 100vh;
|
|
overflow: hidden;
|
|
display: flex;
|
|
justify-content: center;
|
|
position: relative;
|
|
.hospital_logo{
|
|
position: fixed;
|
|
top: -100px;
|
|
left: -80px;
|
|
}
|
|
.left-logo {
|
|
position: fixed;
|
|
left: 30px;
|
|
top: -30px;
|
|
.title {
|
|
font-size: 18px;
|
|
font-family: PingFang SC;
|
|
font-weight: 700;
|
|
display: inline-block;
|
|
padding-left: 10px;
|
|
vertical-align: middle;
|
|
}
|
|
}
|
|
.login-bgm {
|
|
background: url(../../../assets/img/login_bgm.png) no-repeat top center;
|
|
width: 900px;
|
|
height: 276px;
|
|
margin: 0 auto;
|
|
margin-top: 175px;
|
|
}
|
|
.login-content {
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 50%;
|
|
transform: translate(-50%, -50%);
|
|
//width: 100%;
|
|
.login-content-title {
|
|
text-align: center;
|
|
color: #262626;
|
|
margin-bottom: 32px;
|
|
.main-title {
|
|
font-size: 38px;
|
|
margin-bottom: 20px;
|
|
color:#1E79FF;
|
|
font-weight: 700;
|
|
}
|
|
.subtitle-title {
|
|
font-size: 24px;
|
|
color: #11305C;
|
|
}
|
|
}
|
|
.tips {
|
|
text-align: center;
|
|
color: #909399;
|
|
}
|
|
.login-captcha {
|
|
img {
|
|
width: 135px;
|
|
height: 48px;
|
|
}
|
|
}
|
|
}
|
|
.login-footer {
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
z-index: -1;
|
|
background: url(../../../assets/img/login_filter.png) no-repeat top center;
|
|
width: 100%;
|
|
height: 166px;
|
|
.copyright {
|
|
position: fixed;
|
|
bottom: 16px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
color: #fff;
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
<style lang="scss">
|
|
.login {
|
|
.el-input__inner {
|
|
background-color: #11305c;
|
|
color: #fff;
|
|
height: 48px;
|
|
}
|
|
.el-tabs__content {
|
|
height: 300px;
|
|
}
|
|
.el-dialog__body {
|
|
height: 320px;
|
|
}
|
|
}
|
|
</style>
|