From e00d1817afd6f86154aaa4c870571c724ebfecfc Mon Sep 17 00:00:00 2001
From: 艺术家 <10819716+q100102@user.noreply.gitee.com>
Date: 星期三, 11 六月 2025 14:09:30 +0800
Subject: [PATCH] 代码提交

---
 项目代码/伸缩杆/client/src/views/tts/UserManagement/Usermanagement.vue |  220 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 212 insertions(+), 8 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue"
index 3b86e55..ee75184 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue"
@@ -162,6 +162,14 @@
             >鏂板缓</el-button
           >
           <el-button
+            type="primary"
+            size="small"
+            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
+            class="text_btn"
+            @click="registerdialogVisible = true"
+            >浜鸿劯娉ㄥ唽</el-button
+          >
+          <el-button
             size="small"
             style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
             @click="printExcel"
@@ -243,8 +251,8 @@
             min-width="2%"
           >
             <template #default="scope">
-              <span v-if="scope.row.isLeader == 0">缁勫憳</span>
-              <span v-else-if="scope.row.isLeader == 1">缁勯暱</span>
+              <span v-if="scope.row.isLeader == 0">浜岀骇</span>
+              <span v-else-if="scope.row.isLeader == 1">涓�绾�</span>
             </template>
           </el-table-column>
           <el-table-column
@@ -382,10 +390,10 @@
               >
             </template>
           </el-table-column>
-          <el-table-column prop="isLeader" label="缁勫憳绫诲瀷" align="center">
+          <el-table-column prop="isLeader" label="鐢ㄦ埛绫诲瀷" align="center">
             <template #default="scope">
-              <span v-if="scope.row.isLeader == 0">缁勫憳</span>
-              <span v-else-if="scope.row.isLeader == 1">缁勯暱</span>
+              <span v-if="scope.row.isLeader == 0">浜岀骇</span>
+              <span v-else-if="scope.row.isLeader == 1">涓�绾�</span>
             </template>
           </el-table-column>
           <el-table-column prop="deptName" label="澶囨敞" align="center" />
@@ -566,7 +574,7 @@
       >
         <el-pagination
           v-if="isactive == 1"
-          size="small"
+          size="large"
           background
           layout="prev, pager, next"
           :current-page="pageQuery.page"
@@ -679,7 +687,7 @@
                   <span
                     style="font-size: 0.88rem; color: black; font-weight: bold"
                     class="from_title"
-                    >鐢ㄦ埛瑙掕壊
+                    >瑙掕壊鍚嶅瓧
                   </span>
                 </div>
               </template>
@@ -1281,11 +1289,51 @@
         />
       </div>
     </el-dialog>
+
+    <!-- 浜鸿劯娉ㄥ唽 -->
+    <el-dialog
+      v-model="registerdialogVisible"
+      title="鎻掍欢閰嶇疆"
+      width="500"
+      :before-close="handleClose"
+      top="5vh"
+    >
+      <template #header="{ titleId }">
+        <div class="my-header">
+          <h2 :id="titleId" style="font-size: 2rem">浜鸿劯褰曞叆</h2>
+        </div>
+      </template>
+      <div class="content_register">
+        <div class="image-container">
+          <img
+            src="@/assets/login/headimg.jpg"
+            id="img"
+            style="width: 100%"
+            class="profile-image"
+          />
+        </div>
+        <div class="action-buttons" @click="begin(1)">
+          <a href="myapp://" class="btn face-register">
+            <i class="fas fa-user-plus"></i> 浜鸿劯褰曞叆</a
+          >
+          <button class="btn submit-data" @click="faceEnter()">
+            <i class="fas fa-paper-plane"></i> 鎻愪氦鏁版嵁
+          </button>
+        </div>
+      </div>
+      <template #footer>
+        <!-- <div class="dialog-footer">
+          <el-button type="primary" class="downloadreBtn" @click="download(2)"
+            >鎻愪氦閰嶇疆</el-button
+          >
+        </div> -->
+      </template>
+    </el-dialog>
   </div>
 </template>
 <script setup>
 import { ref, reactive, onMounted, toRef } from "vue";
-import { ElMessage, ElMessageBox } from "element-plus";
+import { ElMessage, ElMessageBox, ElLoading } from "element-plus";
 import {
   GetUserList,
   AddUser,
@@ -1409,6 +1457,8 @@
 const dialogVisible1 = ref(false);
 //鐢ㄦ埛瑙掕壊鏂板缓
 const dialogVisible2 = ref(false);
+//浜鸿劯娉ㄥ唽
+const registerdialogVisible = ref(false);
 //绛涢�夋潯浠�
 const userOptions = [
   {
@@ -1664,6 +1714,7 @@
         //   formUser.value.userteam = formUser.value.userteam + "缁�";
         // }
         formUser.value.isLeader = newRole.value.isLeader;
+        formUser.value.rolename = newRole.value.roleName;
         UpdateUser(formUser.value).then((res) => {
           ElMessage({ message: "淇敼鎴愬姛", type: "success" });
           dialogVisible.value = false;
@@ -2106,6 +2157,95 @@
 const toDetail = (row) => {
   router.push({ name: "permission", state: { info: JSON.stringify(row) } });
 };
+const interval = ref(null);
+const onloading = ref(null);
+const baseUrl = "http://192.168.1.103:9093";
+const token = ref("");
+const imgbase64 = ref("");
+let urlPlugin = baseUrl + "/api/UserFace/DownlodaFacePlugin";
+let urlPReg = baseUrl + "/api/UserFace/DownloadRegFile";
+
+const getData = (flag) => {
+  let url = "http://localhost:9298";
+  let xmlResquest = new XMLHttpRequest();
+  xmlResquest.open("post", url, true);
+  xmlResquest.onload = function (e) {
+    if (xmlResquest.status == 200) {
+      clearTimeout(interval.value);
+      imgbase64.value = xmlResquest.response;
+      if (flag == 2) {
+        const faceContainer = document.getElementById("face-recognition");
+        const faceIcon = faceContainer.querySelector(".face-icon");
+        const capturedFace = document.getElementById("captured-face");
+        capturedFace.src = "data:image/png;base64," + xmlResquest.response;
+        faceIcon.style.display = "none";
+        capturedFace.style.display = "block";
+        window.URL.revokeObjectURL(url);
+        faceRecognitionEvent();
+        return;
+      } else {
+        let img = document.getElementById("img");
+        img.src = "data:image/png;base64," + xmlResquest.response;
+        window.URL.revokeObjectURL(url);
+        // hideLoading();
+        onloading.value.close();
+        return;
+      }
+    }
+    // hideLoading();
+    onloading.value.close();
+  };
+
+  xmlResquest.send();
+};
+
+const begin = (flag) => {
+  if (interval.value) {
+    clearTimeout(interval.value);
+  }
+  onloading.value = ElLoading.service({
+    lock: true,
+    text: "姝e湪澶勭悊涓�,璇风◢鍚�...",
+    background: "rgba(0, 0, 0, 0.7)",
+  });
+  interval.value = setInterval(() => {
+    getData(flag);
+  }, 10000);
+};
+
+function faceEnter() {
+  token.value = JSON.parse(localStorage.getItem("user")).token;
+  console.log(token.value);
+
+  let url = baseUrl + "/api/UserFace/faceEnter";
+  let xmlResquest = new XMLHttpRequest();
+  xmlResquest.open("post", url, true);
+  xmlResquest.setRequestHeader("Content-Type", "application/json");
+  xmlResquest.setRequestHeader("Authorization", "Bearer " + token.value);
+  xmlResquest.onload = function (e) {
+    img.src = "headimg.jpg";
+    if (xmlResquest.status == 200) {
+      let response = JSON.parse(xmlResquest.response);
+      if (response.status) {
+        ElMessage.success("浜鸿劯褰曞叆鎴愬姛,鍥剧墖鍚嶇О锛�" + response.data);
+        onloading.value.close();
+        registerdialogVisible.value = false;
+        // hideLoading();
+      } else {
+        ElMessage.error("浜鸿劯褰曞叆澶辫触锛岄敊璇俊鎭細" + response.message);
+        onloading.value.close();
+        registerdialogVisible.value = false;
+        // hideLoading();
+      }
+    } else {
+      ElMessage.error("鏁版嵁鎻愪氦澶辫触");
+      onloading.value.close();
+      registerdialogVisible.value = false;
+      // hideLoading();
+    }
+  };
+  xmlResquest.send(JSON.stringify({ Base64Image: imgbase64.value }));
+}
 
 onMounted(() => {
   if (window.innerWidth <= 1080) {
@@ -2450,6 +2590,70 @@
     }
   }
 }
+/* 娣诲姞瀛椾綋鍥炬爣搴� */
+.content_register {
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  padding: 30px;
+  background-color: #f8f9fa;
+  border-radius: 12px;
+  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
+  max-width: 800px;
+  margin: 0 auto;
+  .image-container {
+    margin-bottom: 25px;
+    border: 3px solid #e9ecef;
+    border-radius: 8px;
+    overflow: hidden;
+  }
+
+  .profile-image {
+    display: block;
+    width: 200px;
+    height: 360px;
+    object-fit: cover;
+  }
+
+  .action-buttons {
+    display: flex;
+    gap: 20px;
+  }
+
+  .btn,
+  a.btn {
+    padding: 12px 25px;
+    border: none;
+    border-radius: 50px;
+    font-size: 16px;
+    font-weight: 600;
+    cursor: pointer;
+    display: inline-flex;
+    align-items: center;
+    gap: 10px;
+    text-decoration: none;
+    color: white;
+  }
+
+  .face-register {
+    background-color: #4e73df;
+  }
+
+  .submit-data {
+    background-color: #1cc88a;
+  }
+
+  /* 纭繚a鏍囩鍙偣鍑诲尯鍩� */
+  .btn {
+    position: relative;
+    z-index: 1;
+  }
+
+  /* 娣诲姞鐐瑰嚮鍙嶉 */
+  .btn:active {
+    transform: scale(0.98);
+  }
+}
 </style>
 <style>
 .confirmButtonClass {

--
Gitblit v1.9.3