From 2a125174ea501d53c59f627347bdec9012928960 Mon Sep 17 00:00:00 2001
From: china <527956374@qq.com>
Date: 星期一, 17 四月 2023 13:55:52 +0800
Subject: [PATCH] 拼图滑块验证

---
 src/views/user/login.vue |   88 ++++++++++++++++++++++++++++---------------
 1 files changed, 57 insertions(+), 31 deletions(-)

diff --git a/src/views/user/login.vue b/src/views/user/login.vue
index 53cec33..3096f7a 100644
--- a/src/views/user/login.vue
+++ b/src/views/user/login.vue
@@ -40,6 +40,12 @@
       <el-form-item v-if="loginForm.verifyType==='slide'">
         <drag-verify @success="verifyTrue" ref="verify"/>
       </el-form-item>
+      <el-form-item v-if="loginForm.verifyType==='jigsaw'">
+<!--        <drag-verify @success="verifyTrue" ref="verify"/>-->
+        <transition duration="1000" name="el-fade-in" v-if="verify">
+          <jigsaw-verify v-if="loginForm.verifyType==='jigsaw'" :left="left" :top="top" @hide="verifyFalse" @success="handleLogin" />
+        </transition>
+      </el-form-item>
       <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">璁颁綇瀵嗙爜</el-checkbox>
       <el-form-item style="width:100%;">
         <el-button
@@ -67,24 +73,28 @@
 <script>
   import {getCodeImg, getCodeNone} from "@/api/login";
   import dragVerify from './dragVerify/index.vue' // 婊戝姩楠岃瘉缁勪欢
+  import jigsawVerify from '@/views/components/verify'  // 鎷煎浘楠岃瘉缁勪欢锛�2023-04-06
   import Cookies from "js-cookie";
-  import {encrypt} from '@/utils/jsencrypt'
+  // import {encrypt} from '@/utils/jsencrypt'
 
   export default {
   components: {
-    'drag-verify': dragVerify
+    'drag-verify': dragVerify,
+    'jigsaw-verify': jigsawVerify
   },
   data() {
     return {
       verify:false,  // 婊戝姩鏍¢獙
       codeUrl: "",
+      left: '50%',    // 鎷煎浘楠岃瘉鐮佷綅缃�
+      top: '220px',     // 鎷煎浘楠岃瘉鐮佷綅缃�
       loginForm: {
         username: 'supervisor',
         password: '123456',
         code:'',
         uuid: '',
         loginType: 'user_pass',  // 鐢ㄦ埛鍚嶃�佸瘑鐮佹柟寮忕櫥褰�
-        verifyType: 'slide'//  'code': 楠岃瘉鐮�  'slide':婊戝潡  'jigsaw':鎷煎浘
+        verifyType: 'jigsaw'//  'code': 楠岃瘉鐮�  'slide':婊戝潡  'jigsaw':鎷煎浘
         // rememberMe: false,
       },
       loginRules: {
@@ -122,6 +132,9 @@
     verifyTrue () {
       this.verify = true
     },
+    verifyFalse() {
+      this.verify = false
+    },
     getCode() {
       if(this.loginForm.verifyType==='code'){
         getCodeImg().then(res => {
@@ -141,6 +154,8 @@
 
       } else if(this.loginForm.verifyType==='jigsaw'){
         // 鎷煎浘鏂瑰紡锛岀湅闇�瑕佸暐鍙傛暟锛屾殏鏈疄鐜�
+        console.log('jigsaw...');
+        this.loginForm.code = 'jigsaw'; // 濉厖code榛樿鍊硷紝鍚﹀垯楠岃瘉涓嶉�氳繃銆�2023-04-06
 
       } else if(this.loginForm.verifyType==='slide' || this.loginForm.verifyType==='sms'){
         // 涓嶉渶瑕侀獙璇佺爜锛屼絾浠嶉渶瑕佽姹傛帴鍙h幏鍙杣uid
@@ -160,36 +175,47 @@
       this.loginForm.password = password === undefined ? this.loginForm.password : password
       this.loginForm.rememberMe = rememberMe === undefined ? this.loginForm.rememberMe : rememberMe
     },
-    handleLogin() {
+    handleLogin(param) {
+      // 鎷煎浘楠岃瘉  娌℃湁杩斿洖param鏃跺��
+      if(this.loginForm.verifyType==='jigsaw' && !param.uuid){
+        this.verify = true
+        return false
+      }
+      // 鎷煎浘楠岃瘉  杩斿洖param鏃跺��
+      if(this.loginForm.verifyType==='jigsaw' && param.uuid){
+        // 鎷煎浘楠岃瘉鐮佹椂锛岃皟鐢ㄦ柟浼氫紶鍏ode锛堢敤鎴烽獙璇佺爜浣嶇疆锛夛紝uuid
+        this.loginForm.code = param.x;
+        this.loginForm.uuid = param.uuid;
+      }
       this.$refs.loginForm.validate(valid => {
-        if (valid) {
-          if (this.loginForm.verifyType==='slide' && !this.verify) {
-            this.$message.error('璇峰厛瀹屾垚楠岃瘉')
-            this.loading = false
-            return
-          }
-          this.loading = true;
-          if (this.loginForm.rememberMe) {
-            Cookies.set("username", this.loginForm.username, { expires: 30 });
-            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
-            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
-          } else {
-            Cookies.remove("username");
-            Cookies.remove("password");
-            Cookies.remove('rememberMe');
-          }
-          // console.log(this.loginForm);
-          // console.log("-----------------------------");
-          this.$store.dispatch("Login", this.loginForm).then(() => {
-            this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
-          }).catch(() => {
-            this.loading = false;
-            if (this.captchaEnabled && this.loginForm.verifyType==='code') {
-              this.getCode();
+          if (valid) {
+            if (this.loginForm.verifyType==='slide' && !this.verify) {
+              this.$message.error('璇峰厛瀹屾垚楠岃瘉')
+              this.loading = false
+              return
             }
-          });
-        }
-      });
+            this.loading = true;
+            if (this.loginForm.rememberMe) {
+              Cookies.set("username", this.loginForm.username, { expires: 30 });
+              Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
+              Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
+            } else {
+              Cookies.remove("username");
+              Cookies.remove("password");
+              Cookies.remove('rememberMe');
+            }
+            // console.log(this.loginForm);
+            // console.log("-----------------------------");
+            this.$store.dispatch("Login", this.loginForm).then(() => {
+              this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
+            }).catch(() => {
+              this.loading = false;
+              if (this.captchaEnabled && this.loginForm.verifyType==='code') {
+                this.getCode();
+              }
+            });
+          }
+        });
     }
   }
 };

--
Gitblit v1.9.1