From 089bf5d2378b3c4a61d795b2a92bede2c193b771 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:22:58 +0800
Subject: [PATCH] 1

---
 src/views/modules/user-relation/system-suer-sys-googleAuthCode.vue |  238 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 238 insertions(+), 0 deletions(-)

diff --git a/src/views/modules/user-relation/system-suer-sys-googleAuthCode.vue b/src/views/modules/user-relation/system-suer-sys-googleAuthCode.vue
new file mode 100644
index 0000000..d1fb99f
--- /dev/null
+++ b/src/views/modules/user-relation/system-suer-sys-googleAuthCode.vue
@@ -0,0 +1,238 @@
+<template>
+  <el-dialog
+    :title = "googleAuthBind?'解绑谷歌验证器':'绑定谷歌验证器'"
+    :visible.sync="visible"
+    :append-to-body="true">
+    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="120px">
+      <div class="gogTop">
+        <div v-if="!getInput" class="gogRefresgh" @click="getGoogleAuthSecret()"><i class="el-icon-refresh"></i></div>
+      </div>
+      <el-form-item v-if="getInput && !googleAuthBind" label="密钥"  style="position:relative">
+        <el-input type="number"  :disabled="true" placeholder="请点击右侧 生成密钥和二维码"></el-input>
+        <span class="maTreButton" @click="getGoogleAuthSecret()">生成密钥和二维码</span>
+      </el-form-item>
+      <el-form-item v-show="!getInput" label="密钥"  style="position:relative">
+        <el-input type="text"  :disabled="true" v-model="dataForm.secret"></el-input>
+        <el-button class="spaButton" type="button"
+          v-clipboard:copy="dataForm.secret"  
+          v-clipboard:success="onCopy" 
+          v-clipboard:error="onError">
+          复制
+ 	      </el-button>
+      </el-form-item>
+      <div v-show="!getInput" class="qrCode">
+        <img :src=gleimg alt="">
+      </div>
+      <el-form-item v-if="!googleAuthBind" label="谷歌验证" prop="code">
+        <el-input type="number" placeholder="请输入谷歌验证码" v-model="dataForm.code"></el-input>
+      </el-form-item>
+      <el-form-item label="超级谷歌验证码" prop="rootGoogleAuthCode">
+        <el-input type="number" placeholder="请输入超级谷歌验证码" v-model="dataForm.rootGoogleAuthCode"></el-input>
+      </el-form-item>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="visible = false">取消</el-button>
+      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  import { Debounce } from '@/utils/debounce'
+  import { encrypt } from '@/utils/crypto'
+  export default {
+    data () {
+      return {
+        visible: false,
+        dataForm: {
+          password: '',
+          newPassword: '',
+          urlencoded:'',
+          rootGoogleAuthCode:'',
+          code:'',
+          secret:'',//谷歌密钥
+        },
+        googleAuthBind:'',//系统用户是否绑定谷歌验证器
+        getInput:true,
+        gleimg:'',
+        gogleUs:'',//用户列表进入
+        dataRule: {
+          code: [
+            { required: true, message: '谷歌验证码不能为空', trigger: 'blur' },
+          ],
+          rootGoogleAuthCode: [
+            { required: true, message: '超级谷歌验证码不能为空', trigger: 'blur' },
+          ],
+        },
+        data:{}
+      }
+    },
+    computed: {
+      userName: {
+        get () { return this.$store.state.user.name }
+      },
+      mainTabs: {
+        get () { return this.$store.state.common.mainTabs },
+        set (val) { this.$store.commit('common/updateMainTabs', val) }
+      }
+    },
+    created(){
+      console.log(this.googleAuthBind)
+    },
+    methods: {
+      // 初始化
+      init (googleAuthBind,id,data) {
+        this.visible = true
+        this.gogleUs = id
+        this.googleAuthBind = googleAuthBind
+        this.data = {...data};
+        this.$nextTick(() => {
+          this.getInput = true
+          this.$refs['dataForm'].resetFields()
+        })
+      },
+      // 表单提交
+      dataFormSubmit: Debounce(function () {
+        this.$refs['dataForm'].validate((valid) => {
+          if (valid) {
+            if(this.googleAuthBind){ //解绑
+              this.$http({
+                url: this.$http.adornUrl('/agent/unbindGoogleAuthCode'),
+                method: 'post',
+                data: this.$http.adornData({
+                  'rootGoogleAuthCode': this.dataForm.rootGoogleAuthCode,
+                  'id': this.gogleUs,
+                })
+              }).then(({data}) => {
+                this.$message({
+                  message: '解绑成功',
+                  type: 'success',
+                  duration: 1500,
+                  onClose: () => {
+                    this.visible = false
+                    this.$emit('refreshDataList')
+                  }
+                })
+              })
+            }else{
+                this.$http({
+                url: this.$http.adornUrl('/agent/bindGoogleAuthCode'),
+                method: 'post',
+                data: this.$http.adornData({
+                  'googleAuthCode': this.dataForm.code,
+                  'id':this.gogleUs,
+                  'rootGoogleCode':this.dataForm.rootGoogleAuthCode,
+                  'googleAuthSecret': this.dataForm.secret
+                })
+              }).then(({data}) => {
+                if(data.code==0){
+                  this.$message({
+                    message: '绑定成功',
+                    type: 'success',
+                    duration: 1500,
+                    onClose: () => {
+                      this.visible = false
+                      this.$emit('refreshDataList')
+                    }
+                  })
+                }else{
+                  this.$message({
+                    message: data.msg || "绑定失败",
+                    type: 'error',
+                    duration: 1500,
+                    onClose: () => {
+                      this.visible = false
+                      this.$emit('refreshDataList')
+                    }
+                  })
+                }
+                
+              })
+            }
+
+          }
+        })
+      }),
+      //获取密钥
+      getGoogleAuthSecret () {         
+            this.$http({
+              url: this.$http.adornUrl('/getLoginGoogleAuthSecret'),
+              method: 'get',
+              params: this.$http.adornParams(Object.assign({
+                name:this.data.username || this.data.userName
+              }))
+            }).then(({data}) => {
+              if(data.code == 0){
+                this.getInput= false
+                this.dataForm.secret = data.data.googleAuthSecret
+                this.gleimg = data.data.googleAuthImg
+                this.$message({
+                message: '操作成功',
+                type: 'success',
+                duration: 1500,
+              })
+              }else{
+                this.$message({
+                message: '生成失败',
+                type: 'error',
+                duration: 1500,
+              })
+              }
+            })      
+      },
+      onCopy: function (e) {
+        this.$message({
+                message: '复制成功',
+                type: 'success',
+              })
+    },
+    onError: function (e) {
+      this.$message({
+                message: '复制失败',
+                type: 'error',
+              })
+    }
+    }
+  }
+</script>
+<style scoped>
+.gogText{
+  float: left;
+}
+.gogRefresgh{
+  float: right;
+  cursor: pointer;
+}
+.el-icon-refresh:hover{
+  color: #02A1E9;
+}
+.gogTop{
+  overflow: hidden;
+    padding: 0 15px;
+    height: 43px;
+}
+.maTreButton{
+  position: absolute;
+  width: 123px;
+  right: 10px;
+  color: #02A1E9;
+  cursor: pointer;
+}
+.maTreButton:hover{
+  color: rgb(59, 226, 184);
+}
+.qrCode{
+  width: 219px;
+  height: 228px;
+  border: 1px solid #e1e4eb;
+  margin: 0 auto;
+  margin-bottom: 20px;
+}
+.spaButton{
+  position: absolute;
+  right: 2px;
+  border: none;
+  background: #eff2f5;
+  color: #02A1E9;
+}
+</style>

--
Gitblit v1.9.3