linqilong před 1 měsícem
rodič
revize
85115f9a22
2 změnil soubory, kde provedl 134 přidání a 0 odebrání
  1. 54 0
      src/api/login.js
  2. 80 0
      src/views/Login/index.vue

+ 54 - 0
src/api/login.js

@@ -0,0 +1,54 @@
+import request from "@/utils/request";
+
+/**
+ * 获取验证码
+ * @param {*} id 随机字符串
+ */
+export function qrCodeLogin(id) {
+    return request({
+        url: '/qrcode/login/' + id,
+        method: 'GET',
+    })
+}
+
+/**
+ * 发送验证码邮件
+ * @param {*} phoneNumber 手机号
+ */
+export function sendMessage(phoneNumber, imgCodeId, code) {
+    return request({
+        url: '/bis/insp/sendMessage',
+        method: 'POST',
+        data: {
+            'phone': phoneNumber,
+            'imgCodeId': imgCodeId,
+            'code': code,
+        },
+        params: {
+            'phone': phoneNumber,
+            'imgCodeId': imgCodeId,
+            'code': code,
+        }
+    })
+}
+
+/**
+ * 验证码登录
+ * @param {*} code 验证码
+ * @param {*} message 短信验证码
+ * 
+ */ 
+export function loginWithMessage(code, message) {
+    return request({
+        url: '/bis/insp/loginByCode',
+        method: 'POST',
+        data: {
+            'code': message,
+            'phone': code
+        },
+        params: {
+            'code': message,
+            'phone': code
+        }
+    })
+}

+ 80 - 0
src/views/Login/index.vue

@@ -0,0 +1,80 @@
+<template>
+
+</template>
+<script setup>
+import { v4 as uuidv4 } from 'uuid';
+import QRCode from 'qrcode'
+let qrUuid = uuidv4();
+let loginType = 3;
+let countTimeNum = 0;
+
+qrCodeLogin(qrUuid).then(res => {
+    if (res.success) {
+        qrUuid = res.data.key;
+        setTimeout(() => {
+            QRCode.toCanvas(canvas, qrUuid, (error) => {
+                if (error) console.error(error);
+                console.log('success!');
+                toLoginWithQrCode();
+            })
+        }, 1000);
+    }
+})
+
+function toLoginWithQrCode() {
+    let qrCode = qrUuid;
+    let logtyp = this.loginType;
+    let timer = setTimeout(function () {
+        countTimeNum++;
+        if (countTimeNum > 20) {
+            clearTimeout(timer);
+            countTimeNum = 0;
+        } else {
+            if (logtyp == 3) {
+                console.log('调用二维码登录');
+                qrCodeLogin(qrCode).then(
+                    (res) => {
+                        console.log(res);
+                        if (res.success) {
+                            let userid = res.data.guid;
+                            let loginName = res.data.persName;
+                            let guid = res.data.orgId;
+                            let orgNm = res.data.orgNm;
+                            let isAdmin = res.data.permission;
+                            let allNode = JSON.stringify(res.data.allNode);//当前用户所在组信息
+                            let allOrg = JSON.stringify(res.data.allOrg);
+                            let persType = res.data.persType;
+                            let accessToken = res.accessToken;  //token是否过期
+                            localStorage.setItem('userid', userid);
+                            localStorage.setItem('account', loginName);
+                            localStorage.setItem('guid', guid);
+                            localStorage.setItem('orgNm', orgNm);
+                            localStorage.setItem('isAdmin', isAdmin);
+                            localStorage.setItem('persType', persType);
+                            localStorage.setItem('accessToken', accessToken);
+                            let orgId = res.data.orgId;
+                            localStorage.setItem('orgId', orgId);
+                            localStorage.setItem('allOrg', allOrg);
+                            localStorage.setItem("currentOrgId", res.data.defaultOrg.orgId);  //省级当前的机构id
+                            localStorage.setItem("currentRlcode", res.data.defaultOrg.rlcode);  //省级当前的行政区划编码
+                            // 改变全局adcode状态
+                            $store.commit('changeAdCode', res.data.defaultOrg.rlcode)
+                            localStorage.setItem("currentOrgNm", res.data.defaultOrg.orgNm);  //省级当前的机构名称
+                            localStorage.setItem('allNode', allNode);
+                            $message.success({
+                                message: '登录成功',
+                                duration: 700
+                            });
+                            $router.push('/')
+                        } else {
+                            toLoginWithQrCode();
+
+                        }
+                    }
+                );
+            }
+        }
+    }, 3000);
+}
+
+</script>