增加免登,抽奖记录

This commit is contained in:
wulin 2020-08-21 17:29:29 +08:00
parent 0543fbccc7
commit b11f38584d
8 changed files with 197 additions and 10 deletions

View File

@ -13,13 +13,13 @@ module.exports = {
assetsPublicPath: '/',
proxyTable: {
'/lz_management': {
target: 'http://localhost:8080',
target: 'http://192.168.43.94:8080',
changeOrigin: true
}
},
// Various Dev Server settings
host: IP, // can be overwritten by process.env.HOST
host: '192.168.43.94', // can be overwritten by process.env.HOST
port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: true,
errorOverlay: true,

18
package-lock.json generated
View File

@ -3657,6 +3657,14 @@
"randombytes": "^2.0.0"
}
},
"dingtalk-jsapi": {
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/dingtalk-jsapi/-/dingtalk-jsapi-2.12.0.tgz",
"integrity": "sha512-hpktx8R0bE7/XEarV47RhR89o2R9m5nKnm6gB27HKNzZaLyRenzyzQNCBR5KeJ/qqbRsPM/U8mZmUla7/bI5WQ==",
"requires": {
"promise-polyfill": "^7.1.0"
}
},
"dns-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
@ -15476,6 +15484,11 @@
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
"promise-polyfill": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.2.tgz",
"integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ=="
},
"proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
@ -18493,6 +18506,11 @@
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
"dev": true
},
"vconsole": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/vconsole/-/vconsole-3.3.4.tgz",
"integrity": "sha512-9yihsic96NPoMLQx/lCQwH9d89H0bbMW3LZPzo/t4yGQcS1X+vTCe9OHm1XSH7WNxzGDmcSwBiKLsFGwvJpQBg=="
},
"vendors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz",

View File

@ -18,6 +18,7 @@
"axios": "^0.19.2",
"babel-plugin-component": "0.10.1",
"babel-polyfill": "6.26.0",
"dingtalk-jsapi": "^2.12.0",
"echarts": "^4.7.0",
"element-ui": "^2.13.1",
"gulp": "3.9.1",
@ -34,6 +35,7 @@
"sass-loader": "6.0.6",
"svg-sprite-loader": "3.7.3",
"v-charts": "^1.19.0",
"vconsole": "^3.3.4",
"vue": "2.5.16",
"vue-cookie": "1.1.4",
"vue-router": "3.0.1",

View File

@ -32,3 +32,13 @@ export const apiUploadFile = params => {
export const apiExportFile = params => {
return http({ url: '/lz_management/staff/info/downloadTemplate', method: 'post', responseType: 'blob', data: params })
}
// 钉钉免登录
export const apiDingtalkLogin = data => {
return http({ url: '/lz_management/dtlg/login', method: 'post', data })
}
// 钉钉抽奖登记
export const apiDingtalkLuck = data => {
return http({ url: '/lz_management/dtlg/luck', method: 'post', data })
}

View File

@ -9,7 +9,8 @@ import Router from 'vue-router'
import { apiGetMenuNav } from '@/api/api_menu'
import { isURL } from '@/utils/validate'
import { clearLoginInfo } from '@/utils'
import VConsole from 'vconsole'
let vConsole = new VConsole()// eslint-disable-line no-unused-vars
Vue.use(Router)
// 开发环境不使用懒加载, 因为懒加载页面太多的话会造成webpack热更新太慢, 所以只有生产环境使用懒加载
@ -17,6 +18,7 @@ const _import = require('./import-' + process.env.NODE_ENV)
// 全局路由(无需嵌套上左右整体布局)
const globalRoutes = [
{ path: '/dingtalkluck', component: _import('common/dingtalkluck'), name: 'dingtalkluck', meta: { title: '钉钉抽奖登记' } },
{ path: '/404', component: _import('common/404'), name: '404', meta: { title: '404未找到' } },
{ path: '/login', component: _import('common/login'), name: 'login', meta: { title: '登录' } }
]
@ -48,10 +50,16 @@ const mainRoutes = {
beforeEnter (to, from, next) {
let token = Vue.cookie.get('token')
if (!token || !/\S/.test(token)) {
clearLoginInfo()
next({ name: 'login' })
if (isDingtalk()) {
console.log('钉钉免登测试')
next({ name: 'dingtalklogin' })
} else {
clearLoginInfo()
next({ name: 'login' })
}
} else {
next()
}
next()
}
}
@ -66,7 +74,7 @@ const router = new Router({
router.beforeEach((to, from, next) => {
// 添加动态(菜单)路由
// 1. 已经添加 or 全局路由, 直接访问
// 2. 获取菜单列表, 添加并保存本地存储
// 2. 获取菜单列表, 添加并保存本地存储
if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') {
next()
} else {

View File

@ -0,0 +1,92 @@
<template>
<div>
<div>
<div>
<div>
<h2 class="brand-info__text">{{dataForm.verify}}</h2>
</div>
</div>
</div>
</div>
</template>
<script>
import { apiDingtalkLuck } from '@/api/api_staff'
import * as dd from 'dingtalk-jsapi'
var dingCode
export default {
data () {
return {
isloading: false,
dataForm: {
userName: '',
password: '',
uuid: '',
// captcha: ''
verify: '霖梓七夕抽奖登记中...'
},
dataRule: {
userName: [{ required: true, message: '帐号不能为空', trigger: 'blur' }],
password: [{ required: true, message: '密码不能为空', trigger: 'blur' }],
// captcha: [{ required: true, message: '', trigger: 'blur' }]
verify: [{ required: true, message: '验证码不能为空', trigger: 'blur' }]
},
// captchaPath: '' //
time: 0,
timer: true,
hasSendCode: false
}
},
created () {
// this.handleGetImgCaptcha()
},
mounted () {
if(this.isDingtalk()){
console.log('走钉钉免登流程')
this.dingtalkLogin()
setTimeout(() =>{
this.loginWtihCode(dingCode)
}, 3000)
}
},
methods: {
isDingtalk () {
if (/(DingTalk)/i.test(navigator.userAgent)) {
return true
} else {
return false
}
},
dingtalkLogin () {
dd.runtime.permission.requestAuthCode({
corpId: 'ding02853c26606ba7d4a1320dcb25e91351',
onSuccess: function (result) {
dingCode = result
},
onFail: function (err) {
console.log(err)
}
})
},
loginWtihCode (result) {
console.log('免登流程')
console.log(result)
apiDingtalkLuck(result).then(res => {
console.log('获取登录结果')
console.log(res)
if (res && res.code === 0) {
console.log('获取token')
this.dataForm.verify='已经登记,祝你好运!如若中将行政将会通知'
console.log('跳转')
} else {
this.dataForm.verify='无法登记。' + res.msg
this.$message.error(res.msg)
}
})
}
}
}
</script>

View File

@ -65,7 +65,9 @@
<script>
import { getUUID } from '@/utils'
import { apiLogin, apiSsysSendSMS } from '@/api/api_sys'
import { apiDingtalkLogin } from '@/api/api_staff'
import * as dd from 'dingtalk-jsapi'
var dingCode = ''
export default {
data () {
return {
@ -92,6 +94,16 @@ export default {
created () {
// this.handleGetImgCaptcha()
},
mounted () {
if(this.isDingtalk()){
console.log('走钉钉免登流程')
this.dingtalkLogin()
setTimeout(() =>{
this.loginWtihCode(dingCode)
}, 3000)
}
},
methods: {
// //
// handleGetImgCaptcha () {
@ -107,8 +119,11 @@ export default {
apiLogin(param).then(res => {
this.isloading = false
if (res && res.code === 0) {
console.log('获取token')
this.$cookie.set('token', res.token)
console.log('保存token')
this.$router.replace({ name: 'home' })
console.log('跳转')
} else {
this.$message.error(res.msg)
}
@ -118,6 +133,44 @@ export default {
}
})
},
isDingtalk () {
if (/(DingTalk)/i.test(navigator.userAgent)) {
return true
} else {
return false
}
},
dingtalkLogin () {
dd.runtime.permission.requestAuthCode({
corpId: 'ding02853c26606ba7d4a1320dcb25e91351',
onSuccess: function (result) {
dingCode = result
},
onFail: function (err) {
this.$router.replace({ name: 'login' })
console.log(err)
}
})
},
loginWtihCode (result) {
console.log('免登流程')
console.log(result)
apiDingtalkLogin(result).then(res => {
console.log('获取登录结果')
console.log(res)
if (res && res.code === 0) {
console.log('获取token')
this.$cookie.set('token', res.token)
console.log('保存token')
this.$router.replace({ name: 'home' })
console.log('跳转')
} else {
this.$message.error(res.msg)
this.$router.replace({ name: 'login' })
}
})
},
//
handleVerify () {
this.dataForm.uuid = getUUID()

View File

@ -19,7 +19,7 @@
import MainSidebar from './main-sidebar'
import MainContent from './main-content'
import { apiGetUserInfo } from '@/api/api_sys'
export default {
provide () {
return {
@ -63,7 +63,9 @@
this.handleGetUserInfo()
},
mounted () {
this.resetDocumentClientHeight()
this.resetDocumentClientHeight()
},
methods: {
//
@ -87,6 +89,8 @@
}
})
}
}
}
</script>