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 扫描二维码,或手动输入密钥添加账号 
+                        密钥:
+