From 10298137c4d5e646a6e297c4fa1c250c70432ca0 Mon Sep 17 00:00:00 2001
From: pengwei <2071057782@qq.com>
Date: 星期二, 08 四月 2025 17:31:37 +0800
Subject: [PATCH] 最新代码

---
 项目代码/client/src/views/tts/UserManagement/Usermanagement.vue |  338 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 207 insertions(+), 131 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue"
index 239ce0f..33f9791 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue"
@@ -107,6 +107,7 @@
             >鏂板缓</el-button
           >
           <el-button
+            v-if="isactive != 3"
             size="small"
             style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
             @click="printExcel"
@@ -140,7 +141,7 @@
             fontSize: '0.88rem',
             height: '3rem',
           }"
-          @select="UserSelectionChange"
+          @selection-change="UserSelectionChange"
         >
           <el-table-column type="selection" align="center" min-width="1%" />
           <el-table-column
@@ -182,13 +183,21 @@
             <template #default="scope">
               <el-image
                 style="width: 70px; height: 70px"
-                :src="'http://115.159.85.185:9098' + scope.row.headImageUrl"
+                :src="
+                  'http://115.159.85.185:9098' + scope.row.headImageUrl
+                "
                 show-progress
                 :initial-index="4"
                 fit="cover"
               />
             </template>
           </el-table-column>
+          <el-table-column
+            prop="groupID"
+            label="鐧惧害浜戝垎缁�"
+            align="center"
+            min-width="3%"
+          />
           <el-table-column label="鏄惁鍚敤" align="center" min-width="2%">
             <template #default="scope">
               <el-switch
@@ -228,6 +237,15 @@
                 @click="Editpassword(scope.row)"
                 >淇敼瀵嗙爜</el-button
               >
+              <el-button
+                size="small"
+                type="text"
+                @click="deletUser(scope.row)"
+                :disabled="
+                  scope.row.userName == 'admin' || scope.row.user_Id == '1'
+                "
+                >鍒犻櫎</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
@@ -251,7 +269,7 @@
             fontSize: '0.88rem',
             height: '3rem',
           }"
-          @select="RoleSelectionChange"
+          @selection-change="RoleSelectionChange"
         >
           <el-table-column type="selection" align="center" />
           <el-table-column prop="roleName" label="瑙掕壊鍚嶇О" align="center" />
@@ -316,6 +334,17 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
         />
+        <el-pagination
+          v-if="isactive == 2"
+          size="small"
+          background
+          layout="prev, pager, next"
+          :current-page="pageQuery.page"
+          :page-size="pageQuery.rows"
+          :total="pageTotal1"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
       </div>
     </div>
 
@@ -353,7 +382,7 @@
       >
         <el-row :gutter="20">
           <el-col :span="8">
-            <el-form-item prop="userName">
+            <el-form-item prop="username">
               <template #label>
                 <div style="display: flex; align-items: flex-end">
                   <span style="color: red; margin-right: 0.2rem">*</span>
@@ -365,13 +394,13 @@
               </template>
               <el-input
                 size="small"
-                v-model="formUser.userName"
+                v-model="formUser.username"
                 placeholder="璇疯緭鍏�"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item prop="userTrueName">
+            <el-form-item prop="usertruename">
               <template #label>
                 <div style="display: flex; align-items: flex-end">
                   <span style="color: red; margin-right: 0.2rem">*</span>
@@ -383,13 +412,13 @@
               </template>
               <el-input
                 size="small"
-                v-model="formUser.userTrueName"
+                v-model="formUser.usertruename"
                 placeholder="璇疯緭鍏�"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item prop="phoneNo">
+            <el-form-item prop="phoneno">
               <template #label>
                 <div style="display: flex; align-items: flex-end">
                   <span style="color: red; margin-right: 0.2rem">*</span>
@@ -401,7 +430,7 @@
               </template>
               <el-input
                 size="small"
-                v-model="formUser.phoneNo"
+                v-model="formUser.phoneno"
                 placeholder="璇疯緭鍏�"
               />
             </el-form-item>
@@ -409,7 +438,7 @@
         </el-row>
         <el-row :gutter="20">
           <el-col :span="8">
-            <el-form-item prop="role_Id">
+            <el-form-item prop="roleid">
               <template #label>
                 <div style="display: flex; align-items: flex-end">
                   <span style="color: red; margin-right: 0.2rem">*</span>
@@ -420,12 +449,12 @@
                 </div>
               </template>
               <el-select
-                v-model="formUser.role_Id"
+                v-model="formUser.roleid"
                 placeholder="璇烽�夋嫨"
                 size="small"
               >
                 <el-option
-                  :disabled="item.roleId == 1"
+                  :disabled="item.roleId == 20"
                   v-for="item in groupOptions"
                   :key="item.roleId"
                   :label="item.roleName"
@@ -435,7 +464,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item prop="roleName">
+            <el-form-item prop="rolename">
               <template #label>
                 <div style="display: flex; align-items: flex-end">
                   <span style="color: red; margin-right: 0.2rem">*</span>
@@ -446,7 +475,7 @@
                 </div>
               </template>
               <el-select
-                v-model="formUser.roleName"
+                v-model="formUser.rolename"
                 placeholder="璇烽�夋嫨"
                 size="small"
               >
@@ -516,6 +545,7 @@
                 @before-upload="beforeAvatarUpload"
                 :on-success="handleAvatarSuccess"
                 :file-list="fileList != [] ? fileList : []"
+                :class="{ hide: showUpload }"
               >
                 <el-icon>
                   <Plus />
@@ -605,7 +635,7 @@
         </div>
       </template>
       <el-form
-        :model="formUser"
+        :model="newobj"
         label-width="auto"
         label-position="top"
         ref="formpasswordRef"
@@ -636,7 +666,7 @@
           <el-input
             style="margin-top: 1rem"
             size="large"
-            v-model="formUser.newPwd"
+            v-model="newobj.newPwd"
             placeholder="璇疯緭鍏�"
           />
         </el-form-item>
@@ -748,7 +778,6 @@
     </el-dialog>
 
     <!-- 鏉冮檺绠$悊寮瑰嚭妗� -->
-
     <el-dialog v-model="imgdialogVisible">
       <div
         style="
@@ -768,16 +797,17 @@
 import { ref, reactive, onMounted, toRef } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import {
-  GetUserList,
   AddUser,
   UpdateUser,
   DelApi,
   ExportApi,
   ExportApi1,
-  UpdatePassword,
   UpdatePwd,
-  AddUserApi,
-  EditUserApi,
+  NewGetUserList,
+  AdduserData,
+  NewUpdateUser,
+  DeleteUserData,
+  FaceGetPageData,
 } from "@/api/user";
 import { useRouter } from "vue-router";
 import { formatTime } from "@/utils/index.js";
@@ -799,6 +829,7 @@
 
 const tableData = ref([]);
 const grideData = ref([]);
+const faceData = ref([]);
 //鏂板缓鐢ㄦ埛ref
 const formUserRef = ref();
 const options = ref([]);
@@ -810,31 +841,27 @@
   },
   { value: 1, label: "鏄�" },
 ]);
+const showUpload = ref(false);
 //鍒嗙粍
 const groupOptions = ref([]);
+const groupIDOptions = ref([]);
 const formUser = ref({
-  user_Id: undefined,
-  userName: "",
-  role_Id: 2,
-  roleName: "",
-  phoneNo: "",
-  remark: "",
-  userPwd: "123456",
-  userTrueName: "",
-  dept_Id: 0,
+  id: undefined,
+  username: "",
+  phoneno: "",
+  roleid: 21,
+  rolename: "",
   enable: 1,
-  headImageUrl: "",
-  createDate: formatTime(new Date()), //鍒涘缓鏃堕棿
-  creater: JSON.parse(localStorage.getItem("user")).userName, //鍒涘缓浜�
-  newPwd: "",
+  path: "",
+  usertruename: "",
 });
 const rules = reactive({
-  userName: {
+  username: {
     required: true,
     message: "璇疯緭鍏ョ敤鎴峰悕",
     trigger: "blur",
   },
-  role_Id: {
+  roleid: {
     required: true,
     message: "璇烽�夋嫨瑙掕壊",
     trigger: "change",
@@ -851,12 +878,12 @@
     message: "璇疯緭鍏ュ鍚�",
     trigger: "blur",
   },
-  phoneNo: {
+  phoneno: {
     required: true,
     message: "璇疯緭鍏ユ墜鏈哄彿",
     trigger: "blur",
   },
-  userTrueName: {
+  usertruename: {
     required: true,
     message: "璇疯緭鍏ョ湡瀹炲鍚�",
     trigger: "blur",
@@ -875,11 +902,11 @@
 //绛涢�夋潯浠�
 const userOptions = [
   {
-    value: "userName",
+    value: "username",
     label: "鐧诲綍璐﹀彿",
   },
   {
-    value: "userTrueName",
+    value: "usertruename",
     label: "鐪熷疄濮撳悕",
   },
   {
@@ -929,39 +956,11 @@
 });
 
 const uploadRef = ref();
-// //鐢ㄦ埛淇敼瀵嗙爜
-// const handleUpdatePassword = (row) => {
-//   dialogVisible1.value = true;
-//   formUser.value = Object.assign({}, row);
-// };
-// const UpdatePassword = () => {
-//   formpasswordRef.value.validate((valid) => {
-//     if (valid) {
-//       UpdatePassword({
-//         user_Id: formUser.value.user_Id,
-//         oldPwd: formpassword.value.oldPwd,
-//         newPwd: formpassword.value.newPwd,
-//       }).then((res) => {
-//         if (res.code == 200) {
-//           ElMessage({
-//             message: "淇敼鎴愬姛",
-//             type: "success",
-//           });
-//           dialogVisible1.value = false;
-//           initData();
-//         } else {
-//           ElMessage({
-//             message: res.msg,
-//             type: "error",
-//           });
-//         }
-//       });
-//     }
-//   });
-// };
 
 const pageTotal = ref(0);
-//鐧诲綍璁板綍
+const pageTotal1 = ref(0);
+const pageTotal2 = ref(0);
+//鐢ㄦ埛鍒楄〃
 const initData = () => {
   // 鏌ヨ鏉′欢
   const startTime = formatTime(queryForm.value.selectTime[0]);
@@ -975,14 +974,16 @@
     { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
     { name: "createDate", value: endTime, displayType: "LessOrEqual" },
   ];
-  GetUserList({
-    ...pageQuery.value,
-    filter,
+  NewGetUserList({
+    pageIndex: pageQuery.value.page,
+    pageSize: pageQuery.value.rows,
+    searchKeyword: queryForm.value.selectInput,
+    startDate: startTime,
+    endDate: endTime,
   }).then((res) => {
-    tableData.value = res.rows;
-    pageTotal.value = res.total;
+    tableData.value = res.data.items;
+    pageTotal.value = res.data.totalCount;
   });
-  getRole();
 };
 //鍒嗛〉璇锋眰鍙傛暟
 const pageQuery = ref({
@@ -993,23 +994,48 @@
   wheres: "", //鏉′欢鏌ヨ
 });
 
+//鍒嗛〉璇锋眰鍙傛暟
+const pageQuery1 = ref({
+  page: 1, //褰撳墠椤甸潰
+  rows: 10, //姣忛〉鏄剧ず鏉℃暟
+  order: "desc", //鎺掑簭鏂瑰紡
+  sort: "", //鎺掑簭瀛楁
+  wheres: "", //鏉′欢鏌ヨ
+});
+
+//鍒嗛〉璇锋眰鍙傛暟
+const pageQuery2 = ref({
+  page: 1, //褰撳墠椤甸潰
+  rows: 10, //姣忛〉鏄剧ず鏉℃暟
+  order: "desc", //鎺掑簭鏂瑰紡
+  sort: "", //鎺掑簭瀛楁
+  wheres: "", //鏉′欢鏌ヨ
+});
 //鏁版嵁妫�绱簨浠�
 const handleQuery = () => {
-  pageQuery.value.page = 1;
   if (isactive.value == 1) {
+    pageQuery.value.page = 1;
     initData();
-  } else {
+  } else if (isactive.value == 2) {
+    pageQuery1.value.page = 1;
     getRole();
+  } else {
+    pageQuery2.value.page = 1;
+    GetFacePageData();
   }
 };
 //閲嶇疆鏌ヨ鏉′欢
 const resetQuery = () => {
   queryForm.value = Object.assign({}, obj);
-  pageQuery.value.page = 1;
   if (isactive.value == 1) {
+    pageQuery.value.page = 1;
     initData();
-  } else {
+  } else if (isactive.value == 2) {
+    pageQuery1.value.page = 1;
     getRole();
+  } else {
+    pageQuery2.value.page = 1;
+    GetFacePageData();
   }
 };
 //鍒嗛〉椤甸潰澶у皬鏀瑰彉
@@ -1017,8 +1043,10 @@
   pageQuery.value.rows = val;
   if (isactive.value == 1) {
     initData();
-  } else {
+  } else if (isactive.value == 2) {
     getRole();
+  } else {
+    GetFacePageData();
   }
 };
 
@@ -1027,34 +1055,42 @@
   pageQuery.value.page = val;
   if (isactive.value == 1) {
     initData();
-  } else {
+  } else if (isactive.value == 2) {
     getRole();
+  } else {
+    GetFacePageData();
   }
 };
-const handleAvatarSuccess = (val) => {
-  formUser.value.headImageUrl = "/image/" + val.data;
+const handleAvatarSuccess = (response, file, fileList) => {
+  formUser.value.path = response.data;
+  if (fileList.length >= 1) {
+    showUpload.value = true;
+  }
 };
 //閲嶇疆琛ㄥ崟
 const resetForm = (formEl) => {
   if (!formEl) return;
   formEl.resetFields();
   formUser.value = {
-    user_Id: undefined,
-    userName: "",
-    role_Id: 21,
-    roleName: "",
-    phoneNo: "",
-    remark: "",
-    userPwd: "123456",
-    userTrueName: "",
-    dept_Id: 0,
+    username: "",
+    phoneno: "",
+    roleid: 21,
+    rolename: "",
     enable: 1,
-    headImageUrl: "",
-    newPwd: "",
+    path: "",
+    user_Id: undefined,
   };
   fileList.value = [];
 };
 const resetForm1 = (formEl) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  formRole.value = {
+    roleName: "",
+    description: "",
+  };
+};
+const resetForm2 = (formEl) => {
   if (!formEl) return;
   formEl.resetFields();
   formRole.value = {
@@ -1067,23 +1103,18 @@
   dialogImageUrl.value = uploadFile.url;
   imgdialogVisible.value = true;
 };
-const handleRemove = (val) => {
+const handleRemove = (file, fileList1) => {
   fileList.value = [];
   //绉婚櫎宸蹭笂浼犵殑鍥剧墖
-  formUser.value.headImageUrl = "";
+  formUser.value.path = "";
+  if (fileList.value.length < 1) {
+    showUpload.value = false;
+  }
 };
+
 const beforeAvatarUpload = (val) => {
   console.log(val);
 };
-// const submitUpload = () => {
-//   let promise = new Promise((resolve, reject) => {
-//     setTimeout(async () => {
-//       await uploadRef.value.submit();
-//       resolve("涓婁紶鎴愬姛");
-//     });
-//   });
-//   return promise;
-// };
 
 //鏂板缓鐢ㄦ埛璐﹀彿
 const saveObj = async (formEl) => {
@@ -1091,14 +1122,14 @@
   if (!formEl) return;
   await formEl.validate((valid, fields) => {
     if (valid) {
-      if (formUser.value.user_Id != undefined) {
-        UpdateUser(formUser.value).then((res) => {
+      if (formUser.value.id != undefined) {
+        NewUpdateUser(formUser.value).then((res) => {
           ElMessage({ message: "淇敼鎴愬姛", type: "success" });
           dialogVisible.value = false;
           initData();
         });
       } else {
-        AddUser(formUser.value).then((res) => {
+        AdduserData(formUser.value).then((res) => {
           ElMessage({ message: "鎻愪氦鎴愬姛", type: "success" });
           dialogVisible.value = false;
           initData();
@@ -1111,9 +1142,17 @@
 };
 //鏄惁鍚敤
 const changeSwitch = (val) => {
-  let data = Object.assign({}, val);
-  console.log(data);
-  UpdateUser(data).then((res) => {
+  let data = {
+    id: val.user_Id,
+    username: val.userName,
+    phoneno: val.phoneNo,
+    roleid: val.role_Id,
+    rolename: val.roleName,
+    enable: val.enable,
+    path: val.headImageUrl,
+    usertruename: val.userTrueName,
+  };
+  NewUpdateUser(data).then((res) => {
     ElMessage({ message: "淇敼鎴愬姛", type: "success" });
     dialogVisible.value = false;
     initData();
@@ -1131,15 +1170,24 @@
 };
 //缂栬緫鐢ㄦ埛璐﹀彿
 const Edit = (val) => {
-  let obj = Object.assign({}, val);
+  let obj = {
+    id: val.user_Id,
+    username: val.userName,
+    phoneno: val.phoneNo,
+    roleid: val.role_Id,
+    rolename: val.roleName,
+    enable: val.enable,
+    path: val.headImageUrl,
+    usertruename: val.userTrueName,
+  };
   formUser.value = {
     ...obj,
   };
-  if (obj.headImageUrl != "") {
+  if (obj.path != "") {
     fileList.value = [
       {
         name: "1",
-        url: "http://115.159.85.185:9098" + obj.headImageUrl,
+        url: "http://115.159.85.185:9098" + obj.path,
       },
     ];
   }
@@ -1153,20 +1201,15 @@
   formUser.value = obj;
   formpassword.value = val;
   newobj.value = Object.assign({}, val);
-  console.log(newobj.value);
-
   dialogVisible1.value = true;
 };
 //淇濆瓨淇敼瀵嗙爜
 const savePassword = async (formEl) => {
-  let obj = Object.assign({}, newobj);
-  // obj.password = formpassword.value.password;
-  console.log(formUser.value);
-
+  let obj = Object.assign({}, newobj.value);
   let formdata = {
-    id: formUser.value.user_Id,
-    oldPwd: formUser.value.userPwd,
-    newPwd: formUser.value.newPwd,
+    id: obj.user_Id,
+    oldPwd: obj.userPwd,
+    newPwd: obj.newPwd,
   };
   if (!formEl) return;
   await formEl.validate((valid, fields) => {
@@ -1250,12 +1293,39 @@
     { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
     { name: "createDate", value: endTime, displayType: "LessOrEqual" },
   ];
-  GetPageDataApi({ ...pageQuery.value, filter }).then((res) => {
+  GetPageDataApi({ ...pageQuery1.value, filter }).then((res) => {
     grideData.value = res.rows;
-    pageTotal.value = res.total;
+    pageTotal1.value = res.total;
     groupOptions.value = res.rows;
   });
 };
+
+//鍒犻櫎鐢ㄦ埛
+const deletUser = (val) => {
+  ElMessageBox.confirm("纭鍒犻櫎璇ョ敤鎴峰悧锛�", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      DeleteUserData({
+        userAccount: val.userName,
+      }).then((res) => {
+        ElMessage({
+          type: "success",
+          message: "鍒犻櫎鎴愬姛",
+        });
+        initData();
+      });
+    })
+    .catch(() => {
+      ElMessage({
+        type: "info",
+        message: "鍙栨秷鍒犻櫎",
+      });
+    });
+};
+
 //鎵撳嵃鏁版嵁
 const printExcel = () => {
   // 鏌ヨ鏉′欢
@@ -1294,9 +1364,11 @@
   if (isactive.value == 1) {
     selectoptions.value = userOptions;
     initData();
-  } else {
+  } else if (isactive.value == 2) {
     selectoptions.value = roleOptions;
     getRole();
+  } else {
+    GetFacePageData();
   }
 };
 
@@ -1331,6 +1403,7 @@
     });
   }
 };
+
 //绠$悊
 //璺敱璺宠浆
 const toDetail = (row) => {
@@ -1339,6 +1412,7 @@
 
 onMounted(() => {
   initData();
+  getRole();
 });
 </script>
 <style lang="scss" scoped>
@@ -1484,14 +1558,16 @@
     text-align: center;
   }
 }
+:deep(.hide .el-upload--picture-card) {
+  display: none;
+}
 </style>
 <style>
-.confirmButtonClass {
+/* .confirmButtonClass {
   margin-right: 10px;
 }
-
 .el-message-box .el-message-box__btns {
   flex-direction: row-reverse !important;
   justify-content: normal !important;
-}
+} */
 </style>

--
Gitblit v1.9.3