From 34867c170cdb7b4a44ba93ebe1f1cd9d69cce9a7 Mon Sep 17 00:00:00 2001
From: hucan <951870319@qq.com>
Date: Fri, 18 Jul 2025 18:07:44 +0800
Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AF=B9=E6=8E=A5=E8=B0=B7=E6=AD=8C?=
 =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 package.json                           |   1 +
 src/api/admin/mm-alarm-log.js          |   9 +
 src/api/admin/sys-user.js              | 162 ++++++++++------
 src/layout/SetGoogleSecret.vue         | 149 +++++++++++++++
 src/layout/index.vue                   |  72 ++++---
 src/store/modules/user.js              | 201 +++++++++++---------
 src/utils/request.js                   |   2 +
 src/views/admin/mm-alarm-log/index.vue |  94 ++++++++-
 src/views/login/google_auth.vue        |  90 +++++++++
 src/views/login/index.vue              | 253 ++++++++++++++-----------
 10 files changed, 744 insertions(+), 289 deletions(-)
 create mode 100644 src/layout/SetGoogleSecret.vue
 create mode 100644 src/views/login/google_auth.vue
diff --git a/package.json b/package.json
index 7361a69..ccbcd03 100644
--- a/package.json
+++ b/package.json
@@ -64,6 +64,7 @@
     "normalize.css": "8.0.1",
     "nprogress": "0.2.0",
     "path-to-regexp": "6.1.0",
+    "qrcode": "^1.5.4",
     "remixicon": "^2.5.0",
     "sass-resources-loader": "^2.0.3",
     "screenfull": "5.0.2",
diff --git a/src/api/admin/mm-alarm-log.js b/src/api/admin/mm-alarm-log.js
index e9e63a8..e5abedf 100644
--- a/src/api/admin/mm-alarm-log.js
+++ b/src/api/admin/mm-alarm-log.js
@@ -53,3 +53,12 @@ export function clearAllAlarmLog() {
     })
 }
 
+//导出告警记录
+export function exportMmAlarmLog(query) {
+    return request({
+        url: '/api/v1/mm-alarm-log/export',
+        method: 'get',
+        params: query,
+        responseType: 'blob',
+    })
+}
diff --git a/src/api/admin/sys-user.js b/src/api/admin/sys-user.js
index 06112e1..960a3c6 100644
--- a/src/api/admin/sys-user.js
+++ b/src/api/admin/sys-user.js
@@ -1,142 +1,178 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 查询用户列表
 export function listUser(query) {
   return request({
-    url: '/api/v1/sys-user',
-    method: 'get',
-    params: query
-  })
+    url: "/api/v1/sys-user",
+    method: "get",
+    params: query,
+  });
 }
 
 // 查询用户详细
 export function getUser(userId) {
   return request({
-    url: '/api/v1/sys-user/' + userId,
-    method: 'get'
-  })
+    url: "/api/v1/sys-user/" + userId,
+    method: "get",
+  });
 }
 
 export function getUserInit() {
   return request({
-    url: '/api/v1/sys-user/',
-    method: 'get'
-  })
+    url: "/api/v1/sys-user/",
+    method: "get",
+  });
 }
 
 // 新增用户
 export function addUser(data) {
   return request({
-    url: '/api/v1/sys-user',
-    method: 'post',
-    data: data
-  })
+    url: "/api/v1/sys-user",
+    method: "post",
+    data: data,
+  });
 }
 
 // 修改用户
 export function updateUser(data) {
   return request({
-    url: '/api/v1/sys-user',
-    method: 'put',
-    data: data
-  })
+    url: "/api/v1/sys-user",
+    method: "put",
+    data: data,
+  });
 }
 
 // 删除用户
 export function delUser(data) {
   return request({
-    url: '/api/v1/sys-user',
-    method: 'delete',
-    data: data
-  })
+    url: "/api/v1/sys-user",
+    method: "delete",
+    data: data,
+  });
 }
 
 // 导出用户
 export function exportUser(query) {
   return request({
-    url: '/api/v1/sys-user/export',
-    method: 'get',
-    params: query
-  })
+    url: "/api/v1/sys-user/export",
+    method: "get",
+    params: query,
+  });
 }
 
 // 用户密码重置
 export function resetUserPwd(userId, password) {
   const data = {
     userId,
-    password
-  }
+    password,
+  };
   return request({
-    url: '/api/v1/user/pwd/reset',
-    method: 'put',
-    data: data
-  })
+    url: "/api/v1/user/pwd/reset",
+    method: "put",
+    data: data,
+  });
 }
 
 // 用户状态修改
 export function changeUserStatus(e) {
   const data = {
     userId: e.userId,
-    status: e.status
-  }
+    status: e.status,
+  };
   return request({
-    url: '/api/v1/user/status',
-    method: 'put',
-    data: data
-  })
+    url: "/api/v1/user/status",
+    method: "put",
+    data: data,
+  });
 }
 
 // 修改用户个人信息
 export function updateUserProfile(data) {
   return request({
-    url: '/api/v1/sys-user/profile',
-    method: 'put',
-    data: data
-  })
+    url: "/api/v1/sys-user/profile",
+    method: "put",
+    data: data,
+  });
 }
 
 // 下载用户导入模板
 export function importTemplate() {
   return request({
-    url: '/api/v1/sys-user/importTemplate',
-    method: 'get'
-  })
+    url: "/api/v1/sys-user/importTemplate",
+    method: "get",
+  });
 }
 
 // 用户密码重置
 export function updateUserPwd(oldPassword, newPassword) {
   const data = {
     oldPassword,
-    newPassword
-  }
+    newPassword,
+  };
   return request({
-    url: '/api/v1/user/pwd/set',
-    method: 'put',
-    data: data
-  })
+    url: "/api/v1/user/pwd/set",
+    method: "put",
+    data: data,
+  });
 }
 
 // 用户头像上传
 export function uploadAvatar(data) {
   return request({
-    url: '/api/v1/user/avatar',
-    method: 'post',
-    data: data
-  })
+    url: "/api/v1/user/avatar",
+    method: "post",
+    data: data,
+  });
 }
 
 // 查询用户个人信息
 export function getUserProfile() {
   return request({
-    url: '/api/v1/user/profile',
-    method: 'get'
-  })
+    url: "/api/v1/user/profile",
+    method: "get",
+  });
 }
 
 // 查询用户列表
 export function getUserOptions() {
   return request({
-    url: '/api/v1/sys-user/options',
-    method: 'get'
-  })
-}
\ No newline at end of file
+    url: "/api/v1/sys-user/options",
+    method: "get",
+  });
+}
+
+// 检查是否需要谷歌验证
+export function needCheckGoogleAuth(headers) {
+  return request({
+    url: "/api/v1/need-check-google-auth",
+    method: "get",
+    headers: headers,
+  });
+}
+
+//验证google验证码
+export function checkGoogleCode(params,headers) {
+  return request({
+    url: "/api/v1/google-code",
+    method: "get",
+    params: params,
+    headers: headers,
+  });
+}
+
+//判断是否需要谷歌验证
+export function needGoolAuth() {
+  return request({
+    url: "/api/v1/need-auth",
+    method: "get",
+  });
+}
+
+//绑定谷歌认证器
+export function setGoogleAuth(data) {
+  return request({
+    url: "/api/v1/set-google-auth",
+    method: "put",
+    data: data,
+  });
+}
diff --git a/src/layout/SetGoogleSecret.vue b/src/layout/SetGoogleSecret.vue
new file mode 100644
index 0000000..5d60ec9
--- /dev/null
+++ b/src/layout/SetGoogleSecret.vue
@@ -0,0 +1,149 @@
+
+     1. 使用 Google Authenticator 扫描二维码,或手动输入密钥添加账号 
+                        密钥:
+