|
|
@@ -0,0 +1,451 @@
|
|
|
+<template>
|
|
|
+ <el-dropdown ref="usermenu" class="user-header float-left mr-3" trigger="click" :hide-on-click=false>
|
|
|
+ <span class="el-dropdown-link">
|
|
|
+ <span class="badge" v-if="loginPage">
|
|
|
+ <img class="head-img" src="../../assets/img/headimg.png"> 登录
|
|
|
+ </span>
|
|
|
+ <span class="badge" v-else>
|
|
|
+ Hi <img class="head-img" :src="userHead">
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ <el-dropdown-menu slot="dropdown" class="userlist">
|
|
|
+ <div class="user-dropdown-menu" v-if="loginPage">
|
|
|
+ <div class="form-group">
|
|
|
+ <!-- <label for="tel">邮箱/手机</label> -->
|
|
|
+ <el-input type="text" v-model="username" id="username" placeholder="通行账号 邮箱 或 手机" clearable size="small" v-on:keyup="checkKeyCode()" v-on:keydown="checkKeyCode()"></el-input>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <!-- <label for="password">密码</label> -->
|
|
|
+ <el-input type="password" v-model="password" id="password" placeholder="密码" clearable size="small" v-on:keyup="checkKeyCode()" v-on:keydown="checkKeyCode()"></el-input>
|
|
|
+ </div>
|
|
|
+ <button class="btn btn-blue btn-sm mr-4 btn-block" @click="loginButton()">登录</button>
|
|
|
+ <div class="alert alert-danger alert-sm mt-3" role="alert" v-show="fail">{{ failMsg }}</div>
|
|
|
+ <div class="row mt-2 mb-3">
|
|
|
+ <div class="col text-left"><a @click="goSsoUrl('/getpasswd')" class="nomal-a">忘记密码</a></div>
|
|
|
+ <div class="col text-right"><a @click="goSsoUrl('/reg')" class="nomal-a">注册通行帐号</a></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="user-dropdown-menu" v-else>
|
|
|
+ <div class="">
|
|
|
+ <button class="btn btn-primary btn-sm btn-block" v-if="onlinePage" @click="openDialog(onlinePage)">免费开通纵横网络版</button>
|
|
|
+ <a class="dropdown-item" v-else @click="openDialog(onlinePage)">已开通纵横网络版</a>
|
|
|
+ <el-dialog
|
|
|
+ title="免费网络版"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="43%"
|
|
|
+ top="4vh"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :close-on-press-escape="false"
|
|
|
+ append-to-body>
|
|
|
+ <div class="modal-body" style="max-height: 378px">
|
|
|
+ <div class="text-right" v-if="!onlinePage && !editPage"><a class="nomal-a" @click="changeEdit()">修改信息</a></div>
|
|
|
+ <el-form ref="form" :rules="rules" :model="form" label-width="110px" label-position="left" class="form-set" v-if="editPage || onlinePage">
|
|
|
+ <el-form-item label="真实姓名" prop="name">
|
|
|
+ <el-input v-model="form.name" clearable size="mini"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="手机号码" prop="mobile">
|
|
|
+ <el-input type="age" v-model.number="form.mobile" clearable size="mini"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单位(公司)名称" prop="company">
|
|
|
+ <el-input v-model="form.company" clearable size="mini"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="联系地址" required>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item prop="province">
|
|
|
+ <el-select v-model="form.province" placeholder="省份" size="mini">
|
|
|
+ <el-option label="北京" value="北京"></el-option>
|
|
|
+ <el-option label="天津" value="天津"></el-option>
|
|
|
+ <el-option label="河北" value="河北"></el-option>
|
|
|
+ <el-option label="山西" value="山西"></el-option>
|
|
|
+ <el-option label="辽宁" value="辽宁"></el-option>
|
|
|
+ <el-option label="吉林" value="吉林"></el-option>
|
|
|
+ <el-option label="黑龙江" value="黑龙江"></el-option>
|
|
|
+ <el-option label="上海" value="上海"></el-option>
|
|
|
+ <el-option label="江苏" value="江苏"></el-option>
|
|
|
+ <el-option label="浙江" value="浙江"></el-option>
|
|
|
+ <el-option label="安徽" value="安徽"></el-option>
|
|
|
+ <el-option label="福建" value="福建"></el-option>
|
|
|
+ <el-option label="江西" value="江西"></el-option>
|
|
|
+ <el-option label="山东" value="山东"></el-option>
|
|
|
+ <el-option label="河南" value="河南"></el-option>
|
|
|
+ <el-option label="湖北" value="湖北"></el-option>
|
|
|
+ <el-option label="湖南" value="湖南"></el-option>
|
|
|
+ <el-option label="广东" value="广东"></el-option>
|
|
|
+ <el-option label="海南" value="海南"></el-option>
|
|
|
+ <el-option label="重庆" value="重庆"></el-option>
|
|
|
+ <el-option label="四川" value="四川"></el-option>
|
|
|
+ <el-option label="贵州" value="贵州"></el-option>
|
|
|
+ <el-option label="云南" value="云南"></el-option>
|
|
|
+ <el-option label="陕西" value="陕西"></el-option>
|
|
|
+ <el-option label="甘肃" value="甘肃"></el-option>
|
|
|
+ <el-option label="青海" value="青海"></el-option>
|
|
|
+ <el-option label="西藏" value="西藏"></el-option>
|
|
|
+ <el-option label="宁夏" value="宁夏"></el-option>
|
|
|
+ <el-option label="新疆" value="新疆"></el-option>
|
|
|
+ <el-option label="广西" value="广西"></el-option>
|
|
|
+ <el-option label="内蒙古" value="内蒙古"></el-option>
|
|
|
+ <el-option label="其他" value="其他"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2" class="line"> </el-col>
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item prop="address">
|
|
|
+ <el-input v-model="form.address" clearable size="mini"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="电话号码" required>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item prop="ex_tel">
|
|
|
+ <el-input type="text" v-model="form.ex_tel" clearable size="mini"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2" class="line"> -</el-col>
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item prop="tel">
|
|
|
+ <el-input type="age" v-model.number="form.tel" clearable size="mini"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="QQ号码" prop="qq">
|
|
|
+ <el-input type="age" v-model.number="form.qq" clearable size="mini"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <p class="text-danger" v-if="onlinePage">需要完善您的信息,才能完成开通。</p>
|
|
|
+ </el-form>
|
|
|
+ <el-form v-else>
|
|
|
+ <div class="form-group row">
|
|
|
+ <label for="" class="col-sm-3 col-form-label">真实姓名</label>
|
|
|
+ <div class="col-sm-9">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.name">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group row">
|
|
|
+ <label for="" class="col-sm-3 col-form-label">手机号码</label>
|
|
|
+ <div class="col-sm-9">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.mobile">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group row">
|
|
|
+ <label for="" class="col-sm-3 col-form-label">单位(公司)名称</label>
|
|
|
+ <div class="col-sm-9">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.company">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group row">
|
|
|
+ <label for="" class="col-sm-3 col-form-label">联系地址</label>
|
|
|
+ <div class="col-sm-9 row">
|
|
|
+ <div class="form-group col-sm-3">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.province">
|
|
|
+ </div>
|
|
|
+ <div class="form-group col-sm-9">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.address">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group row">
|
|
|
+ <label for="" class="col-sm-3 col-form-label">电话号码</label>
|
|
|
+ <div class="col-sm-9 row">
|
|
|
+ <div class="form-group col-sm-3">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.phoneNum[0]">
|
|
|
+ </div>
|
|
|
+ <div class="form-group col-sm-9">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.phoneNum[1]">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group row">
|
|
|
+ <label for="" class="col-sm-3 col-form-label">QQ号码</label>
|
|
|
+ <div class="col-sm-9">
|
|
|
+ <input type="text" readonly class="form-control-plaintext" :value="onlineInfo.qq">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <button class="btn btn-sm btn-secondary" @click="dialogVisible = false">关闭</button>
|
|
|
+ <button class="btn btn-sm btn-primary btn-blue" v-show="onlinePage" @click="editOnlineMsg('form', 'open')">立即开通</button>
|
|
|
+ <button class="btn btn-sm btn-primary btn-blue" v-show="editButton" @click="editOnlineMsg('form', 'edit')">确认修改</button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ <div class="dropdown-divider"></div>
|
|
|
+ <a class="dropdown-item" @click="goSsoUrl()">通行账号</a>
|
|
|
+ <a class="dropdown-item" @click="goHelpUrl()">帮助中心</a>
|
|
|
+ <a class="dropdown-item" @click="exitSso()">退出</a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import mixin from '../mixin'
|
|
|
+ import ElForm from '../../../../node_modules/element-ui/packages/form/src/form'
|
|
|
+ export default {
|
|
|
+ components: {ElForm},
|
|
|
+ mixins: [mixin],
|
|
|
+ data: () => ({
|
|
|
+ userHead: '',
|
|
|
+ loginPage: true, // 是否已登录
|
|
|
+ username: '',
|
|
|
+ password: '',
|
|
|
+ SSOUrl: 'https://sso.smartcost.com.cn',
|
|
|
+ HelpUrl: 'http://h.zhzdwd.com',
|
|
|
+ OnlineUrl: 'http://ol.smartcost.com.cn',
|
|
|
+ fail: false,
|
|
|
+ failMsg: '',
|
|
|
+ onlinePage: false, // 是否已开通网络版
|
|
|
+ dialogVisible: false, // 是否弹出窗
|
|
|
+ onlineInfo: '',
|
|
|
+ editPage: false, // 是否为编辑页面
|
|
|
+ editButton: false,
|
|
|
+ form: {
|
|
|
+ name: '',
|
|
|
+ mobile: '',
|
|
|
+ company: '',
|
|
|
+ province: '',
|
|
|
+ address: '',
|
|
|
+ ex_tel: '',
|
|
|
+ tel: '',
|
|
|
+ qq: ''
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ name: [
|
|
|
+ {required: true, message: '请输入真实姓名', trigger: 'blur'}
|
|
|
+ ],
|
|
|
+ mobile: [
|
|
|
+ {required: true, message: '请输入手机号码', trigger: 'blur'},
|
|
|
+ {type: 'number', message: '手机号码必须为数字值', trigger: 'blur'}
|
|
|
+ ],
|
|
|
+ company: [
|
|
|
+ {required: true, message: '请输入单位(公司)名称', trigger: 'blur'}
|
|
|
+ ],
|
|
|
+ province: [
|
|
|
+ {required: true, message: '请输入联系地址', trigger: 'blur,change'}
|
|
|
+ ],
|
|
|
+ address: [
|
|
|
+ {required: true, message: '请输入联系地址', trigger: 'blur'}
|
|
|
+ ],
|
|
|
+ ex_tel: [
|
|
|
+ {required: true, message: '请输入区号', trigger: 'blur'}
|
|
|
+ ],
|
|
|
+ tel: [
|
|
|
+ {required: true, message: '请输入电话号码', trigger: 'blur'},
|
|
|
+ {type: 'number', message: '电话号码必须为数字值', trigger: 'blur'}
|
|
|
+ ],
|
|
|
+ qq: [
|
|
|
+ {required: true, message: '请输入qq号码', trigger: 'blur'},
|
|
|
+ {type: 'number', message: 'qq号码必须为数字值', trigger: 'blur'}
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ created () {
|
|
|
+ this.fetchData()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ fetchData () {
|
|
|
+ // 查询账号是否可登录和状态
|
|
|
+ if (this.checkOnline()) {
|
|
|
+ let userMsg = this.$db.read().get('sc_SsoUser').value()
|
|
|
+ if (userMsg !== undefined && userMsg !== '') {
|
|
|
+ let self = this
|
|
|
+ this.$http({
|
|
|
+ method: 'post',
|
|
|
+ url: self.SSOUrl + '/startup/auth',
|
|
|
+ data: {
|
|
|
+ auth: 'checkssologin',
|
|
|
+ token: userMsg.token,
|
|
|
+ ssoID: userMsg.id
|
|
|
+ },
|
|
|
+ transformRequest: [function (data) {
|
|
|
+ let ret = ''
|
|
|
+ for (let it in data) {
|
|
|
+ ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
|
|
|
+ }
|
|
|
+ return ret
|
|
|
+ }],
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/x-www-form-urlencoded'
|
|
|
+ },
|
|
|
+ timeout: 5000
|
|
|
+ }).then(function (response) {
|
|
|
+ // 更新ssouser数据库
|
|
|
+ if (response.data.err === 0) {
|
|
|
+ let info = response.data.info
|
|
|
+ self.loginPage = false
|
|
|
+ self.onlinePage = info.onlineFlag !== 1
|
|
|
+ self.onlineInfo = info.onlineMsg
|
|
|
+ self.userHead = info.avatar
|
|
|
+ self.$db.read().set('sc_SsoUser', info).write()
|
|
|
+ } else {
|
|
|
+ self.loginPage = true
|
|
|
+ self.showFailMsg(response.data.msg)
|
|
|
+ self.$refs.usermenu.show()
|
|
|
+ self.$db.read().set('sc_SsoUser', '').write()
|
|
|
+ }
|
|
|
+ }).catch(function () {
|
|
|
+ self.showFailMsg('网络有误')
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ loginButton () {
|
|
|
+ if (!this.checkOnline()) {
|
|
|
+ this.$message.error('当前网络不可用,请检查网络问题')
|
|
|
+ } else {
|
|
|
+ if (this.username === '' || this.password === '') {
|
|
|
+ this.showFailMsg('请输入账号或密码!')
|
|
|
+ } else {
|
|
|
+ let self = this
|
|
|
+ this.$http({
|
|
|
+ method: 'post',
|
|
|
+ url: self.SSOUrl + '/startup/login',
|
|
|
+ data: {
|
|
|
+ username: this.username,
|
|
|
+ userpasswd: this.password
|
|
|
+ },
|
|
|
+ transformRequest: [function (data) {
|
|
|
+ let ret = ''
|
|
|
+ for (let it in data) {
|
|
|
+ ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
|
|
|
+ }
|
|
|
+ return ret
|
|
|
+ }],
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/x-www-form-urlencoded'
|
|
|
+ },
|
|
|
+ timeout: 5000
|
|
|
+ }).then(function (response) {
|
|
|
+ // 更新ssouser数据库
|
|
|
+ if (response.data.err === 0) {
|
|
|
+ let info = response.data.info
|
|
|
+ self.loginPage = false
|
|
|
+ self.onlinePage = info.onlineFlag !== 1
|
|
|
+ self.$message.success('登录成功')
|
|
|
+ self.onlineInfo = info.onlineMsg
|
|
|
+ self.userHead = info.avatar
|
|
|
+ self.$db.read().set('sc_SsoUser', info).write()
|
|
|
+ } else {
|
|
|
+ self.showFailMsg(response.data.msg)
|
|
|
+ }
|
|
|
+ }).catch(function () {
|
|
|
+ self.showFailMsg('网络有误')
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ showFailMsg (msg) {
|
|
|
+ this.fail = true
|
|
|
+ this.failMsg = msg
|
|
|
+ let self = this
|
|
|
+ setTimeout(function () {
|
|
|
+ self.fail = false
|
|
|
+ }, 5000)
|
|
|
+ },
|
|
|
+ goSsoUrl () {
|
|
|
+ let userMsg = this.$db.read().get('sc_SsoUser').value()
|
|
|
+ let param = userMsg !== undefined && userMsg !== '' ? '?ssoID=' + userMsg.id + '&token=' + userMsg.token : ''
|
|
|
+ let url = this.SSOUrl + param
|
|
|
+ this.$electron.shell.openItem(url)
|
|
|
+ },
|
|
|
+ goHelpUrl () {
|
|
|
+ let url = this.HelpUrl
|
|
|
+ this.$electron.shell.openItem(url)
|
|
|
+ },
|
|
|
+ exitSso () {
|
|
|
+ this.loginPage = true
|
|
|
+ this.$message.info(`已退出当前账号`)
|
|
|
+ // 删除本地token
|
|
|
+ this.$db.read().set('sc_SsoUser', '').write()
|
|
|
+ },
|
|
|
+ openDialog (open = true) {
|
|
|
+ this.$refs.usermenu.hide()
|
|
|
+ this.dialogVisible = true
|
|
|
+ this.editButton = false
|
|
|
+ // 未开通网络版
|
|
|
+ if (open === false) {
|
|
|
+ this.editPage = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ changeEdit () {
|
|
|
+ this.editPage = true
|
|
|
+ this.editButton = true
|
|
|
+ this.form.name = this.onlineInfo.name
|
|
|
+ this.form.mobile = parseInt(this.onlineInfo.mobile)
|
|
|
+ this.form.company = this.onlineInfo.company
|
|
|
+ this.form.province = this.onlineInfo.province
|
|
|
+ this.form.address = this.onlineInfo.address
|
|
|
+ this.form.ex_tel = this.onlineInfo.phoneNum[0]
|
|
|
+ this.form.tel = parseInt(this.onlineInfo.phoneNum[1])
|
|
|
+ this.form.qq = parseInt(this.onlineInfo.qq)
|
|
|
+ },
|
|
|
+ editOnlineMsg (form, status) {
|
|
|
+ this.$refs[form].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ let userMsg = this.$db.read().get('sc_SsoUser').value()
|
|
|
+ let self = this
|
|
|
+ this.$http({
|
|
|
+ method: 'post',
|
|
|
+ url: self.OnlineUrl + '/api/user/edit',
|
|
|
+ data: {
|
|
|
+ auth: 'editOnline',
|
|
|
+ formData: JSON.stringify(this.form),
|
|
|
+ account: userMsg.account
|
|
|
+ },
|
|
|
+ transformRequest: [function (data) {
|
|
|
+ let ret = ''
|
|
|
+ for (let it in data) {
|
|
|
+ ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
|
|
|
+ }
|
|
|
+ return ret
|
|
|
+ }],
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/x-www-form-urlencoded'
|
|
|
+ },
|
|
|
+ timeout: 5000
|
|
|
+ }).then(function (response) {
|
|
|
+ // 更新ssouser数据库
|
|
|
+ self.editPage = false
|
|
|
+ if (response.data.err === 0) {
|
|
|
+ let info = response.data.info
|
|
|
+ self.onlineInfo = info
|
|
|
+ userMsg.onlineMsg = info
|
|
|
+ self.editPage = false
|
|
|
+ if (status === 'open') {
|
|
|
+ self.onlinePage = false
|
|
|
+ userMsg.onlineFlag = 1
|
|
|
+ self.$message.success('成功开通网络版信息!')
|
|
|
+ } else {
|
|
|
+ self.$message.success('成功修改网络版信息!')
|
|
|
+ }
|
|
|
+ self.$db.read().set('sc_SsoUser', userMsg).write()
|
|
|
+ } else {
|
|
|
+ if (status === 'edit') {
|
|
|
+ self.editPage = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).catch(function () {
|
|
|
+ self.showFailMsg('网络有误')
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ checkOnline () {
|
|
|
+ if (!navigator.onLine) {
|
|
|
+ return false
|
|
|
+ } else {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ checkKeyCode () {
|
|
|
+ let ev = window.event
|
|
|
+ if (ev.keyCode === 9) {
|
|
|
+ console.log('tab')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|