diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 4fb8065..b909440 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -3,39 +3,49 @@
- + + + + + + + +
+ +
+
+
@@ -85,6 +95,7 @@ callback() } } + return { loginForm: { username: '', @@ -96,11 +107,12 @@ password: [{ required: true, trigger: ['blur', 'change'], validator: validatePass }], kaptcha: [{ required: false, trigger: ['blur', 'change'], validator: validateKaptcha }] }, + loginType: 'password', loading: false, pwdType: 'password', redirect: '/', showKaptcha: false, // 是否显示验证码 - bgUrl: require('../../assets/login_images/bg1.png') // 背景图片 + bgUrl: require('../../assets/login_images/bg1.png'), // 背景图片 } }, watch: { @@ -164,6 +176,55 @@ return false } }) + }, + handleChangeLoginType() { + // 如果是人脸登录方式则打开摄像头 + const video = document.getElementById('video') + if (this.loginType === 'face') { + this.openVideo(video) + } else { + this.closeVideo(video) + } + }, + openVideo(video) { + navigator.getUserMedia( + { + video: true, + audio: true + }, + (stream)=> { + this.mediaStreamTrack = typeof stream.stop === 'function' ? stream : stream.getTracks()[1] + //创建video元素 + // const video = document.getElementById("video") + console.log("video", video) + //指定src + if (window.URL) { + console.log("window.URL", window.URL) + try { + video.src = window.URL.createObjectURL(stream) + } catch (e) { + video.srcObject = stream + } + } else { + video.src = stream + } + //视频播放 + video.play(); + }, + (error)=> { + console.log("调用摄像头错误error",error) + } + ) + }, + closeVideo(video) { + if (!video) return + let stream = video.srcObject + console.log(stream) + let tracks = stream.getTracks() + tracks.forEach(track => { + track.stop() + }) + video.srcObject = null } } } @@ -176,6 +237,11 @@ /* reset element-ui css */ .login-container { + .face-outer { + border: 2px solid #00ffff; + width: 400px; + height: 302px; + } .el-input { display: inline-block; height: 40px; @@ -280,7 +346,7 @@ } .login-form { max-width: 100%; - padding: 15px 15px 5px 15px; + padding: 15px 0px; margin: auto; overflow:hidden; .el-form-item{