From 366612bd8e8b88d02a98edf508f96d7add23ff9f Mon Sep 17 00:00:00 2001
From: pengwei <2071057782@qq.com>
Date: 星期日, 27 四月 2025 16:03:38 +0800
Subject: [PATCH] 功能新增

---
 项目代码/client/src/views/tts/UserManagement/Usermanagement.vue |  685 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 504 insertions(+), 181 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 2892d82..d988f4e 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"
@@ -39,7 +39,7 @@
             size="small"
           />
         </div>
-        <!-- <div class="serch_box">
+        <div class="serch_box">
           <div class="serchb">
             <el-select
               v-model="queryForm.selectType"
@@ -56,11 +56,11 @@
             </el-select>
           </div>
           <input
-            v-model="queryForm.selectName"
+            v-model="queryForm.selectInput"
             placeholder="璇疯緭鍏ュ叧閿瘝鎼滅储"
             style="border-left: 0.06rem solid #e2e2e2"
           />
-        </div> -->
+        </div>
         <el-button
           @click="handleQuery"
           type="primary"
@@ -87,7 +87,7 @@
               display: flex;
               align-items: center;
             "
-            ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon
+            ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
             >鏂板缓</el-button
           >
           <!-- 鐢ㄦ埛瑙掕壊鏂板缓 -->
@@ -103,10 +103,11 @@
               display: flex;
               align-items: center;
             "
-            ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon
+            ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
             >鏂板缓</el-button
           >
           <el-button
+            v-if="isactive != 3"
             size="small"
             style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
             @click="printExcel"
@@ -123,6 +124,7 @@
       <div style="margin-top: 1rem; height: 100%">
         <!-- 鐢ㄦ埛鍒楄〃 -->
         <el-table
+          empty-text="鏆傛棤鏁版嵁"
           height="450"
           v-if="isactive == 1"
           :data="tableData"
@@ -139,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
@@ -181,16 +183,29 @@
             <template #default="scope">
               <el-image
                 style="width: 70px; height: 70px"
-                :src="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
+                :disabled="
+                  userInfo.userName == 'admin' || userInfo.roleId == '1'
+                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
+                    : scope.row.userName == 'admin' ||
+                      scope.row.user_Id == '1' ||
+                      scope.row.userName != userInfo.userName
+                "
                 v-model="scope.row.enable"
                 :active-value="1"
                 :inactive-value="0"
@@ -206,14 +221,26 @@
           />
           <el-table-column label="鎿嶄綔" align="center" min-width="3%">
             <template #default="scope">
-              <el-button size="small" type="text" @click="Edit(scope.row)"
+              <el-button
+                size="small"
+                type="text"
+                @click="Edit(scope.row)"
+                :disabled="scope.row.isdisabled"
                 >缂栬緫</el-button
               >
               <el-button
                 size="small"
                 type="text"
+                :disabled="scope.row.isdisabled"
                 @click="Editpassword(scope.row)"
                 >淇敼瀵嗙爜</el-button
+              >
+              <el-button
+                size="small"
+                type="text"
+                @click="deletUser(scope.row)"
+                :disabled="scope.row.isdisabled"
+                >鍒犻櫎</el-button
               >
             </template>
           </el-table-column>
@@ -221,6 +248,7 @@
 
         <!-- 鐢ㄦ埛瑙掕壊 -->
         <el-table
+          empty-text="鏆傛棤鏁版嵁"
           height="450"
           v-if="isactive == 2"
           :data="grideData"
@@ -237,19 +265,21 @@
             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" />
           <el-table-column prop="name" label="瑙掕壊鏉冮檺" align="center">
             <template #default="scope">
               <span
-                @click="
-                  router.replace({
-                    path: `/permission`,
-                    state: { info: JSON.stringify(scope.row) },
-                  })
+                v-if="
+                  !(userInfo.userName == 'admin' || userInfo.roleId == '1'
+                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
+                    : scope.row.userName == 'admin' ||
+                      scope.row.user_Id == '1' ||
+                      scope.row.userName != userInfo.userName)
                 "
+                @click="toDetail(scope.row)"
                 style="color: #4386ff; cursor: pointer"
                 >绠$悊</span
               >
@@ -259,6 +289,9 @@
           <el-table-column label="鏄惁鍚敤" align="center">
             <template #default="scope">
               <el-switch
+                :disabled="
+                  !(userInfo.userName == 'admin' || userInfo.roleId == '1')
+                "
                 v-model="scope.row.enable"
                 :active-value="1"
                 :inactive-value="0"
@@ -270,6 +303,13 @@
           <el-table-column label="鎿嶄綔" align="center">
             <template #default="scope">
               <span
+                v-if="
+                  !(userInfo.userName == 'admin' || userInfo.roleId == '1'
+                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
+                    : scope.row.userName == 'admin' ||
+                      scope.row.user_Id == '1' ||
+                      scope.row.userName != userInfo.userName)
+                "
                 style="color: blue; font-size: 0.88rem; cursor: pointer"
                 @click="EditRole(scope.row)"
                 >缂栬緫</span
@@ -305,9 +345,9 @@
           layout="prev, pager, next"
           :current-page="pageQuery.page"
           :page-size="pageQuery.rows"
-          :total="pageTotal"
-          @size-change="RoleSizeChange"
-          @current-change="RoleCurrentChange"
+          :total="pageTotal1"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
         />
       </div>
     </div>
@@ -320,6 +360,7 @@
       :before-close="handleClose"
       :show-close="false"
       :align-center="true"
+      @close="resetForm(formUserRef)"
     >
       <template #title>
         <div
@@ -339,11 +380,13 @@
         :model="formUser"
         label-width="auto"
         label-position="top"
-        ref="formRef"
+        :rules="rules"
+        ref="formUserRef"
+        :hide-required-asterisk="true"
       >
         <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>
@@ -355,13 +398,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>
@@ -373,13 +416,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>
@@ -391,7 +434,7 @@
               </template>
               <el-input
                 size="small"
-                v-model="formUser.phoneNo"
+                v-model="formUser.phoneno"
                 placeholder="璇疯緭鍏�"
               />
             </el-form-item>
@@ -399,23 +442,49 @@
         </el-row>
         <el-row :gutter="20">
           <el-col :span="8">
-            <el-form-item>
+            <el-form-item prop="roleid">
               <template #label>
                 <div style="display: flex; align-items: flex-end">
                   <span style="color: red; margin-right: 0.2rem">*</span>
                   <span
                     style="font-size: 0.88rem; color: black; font-weight: bold"
-                    >鐢ㄦ埛瑙掕壊</span
-                  >
+                    >鐢ㄦ埛瑙掕壊
+                  </span>
                 </div>
               </template>
               <el-select
-                v-model="formUser.role_Id"
+                v-model="formUser.roleid"
                 placeholder="璇烽�夋嫨"
                 size="small"
               >
                 <el-option
+                  :disabled="item.roleId == 1"
                   v-for="item in groupOptions"
+                  :key="item.roleId"
+                  :label="item.roleName"
+                  :value="item.roleId"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="rolename">
+              <template #label>
+                <div style="display: flex; align-items: flex-end">
+                  <span style="color: red; margin-right: 0.2rem">*</span>
+                  <span
+                    style="font-size: 0.88rem; color: black; font-weight: bold"
+                    >鐢ㄦ埛绫诲瀷
+                  </span>
+                </div>
+              </template>
+              <el-select
+                v-model="formUser.rolename"
+                placeholder="璇烽�夋嫨"
+                size="small"
+              >
+                <el-option
+                  v-for="item in roleNameList"
                   :key="item.value"
                   :label="item.label"
                   :value="item.value"
@@ -424,7 +493,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item>
+            <el-form-item prop="enable">
               <template #label>
                 <div style="display: flex; align-items: flex-end">
                   <span style="color: red; margin-right: 0.2rem">*</span>
@@ -458,25 +527,33 @@
                   <span
                     style="font-size: 0.88rem; color: black; font-weight: bold"
                     >浜鸿劯鍥剧墖</span
-                  ><span
+                  >
+                  <!-- <span
                     style="
                       color: rgba(255, 0, 0, 1);
                       font-size: 0.75rem;
                       margin-left: 0.5rem;
                     "
                     >娉細鏈�澶氬彲涓婁紶涓夊紶锛屽浘鐗囬渶瑕佹瑙勭殑浜哄儚璇佷欢鐓�</span
-                  >
+                  > -->
                 </div>
               </template>
               <el-upload
+                ref="uploadRef"
+                name="files"
                 class="avatar-uploader"
-                action="#"
+                action="http://115.159.85.185:9098/api/User/SaveFiles"
                 list-type="picture-card"
-                :auto-upload="false"
+                limit="1"
+                :auto-upload="true"
                 @before-upload="beforeAvatarUpload"
-                :on-change="handleAvatarSuccess"
+                :on-success="handleAvatarSuccess"
+                :file-list="fileList != [] ? fileList : []"
+                :class="{ hide: showUpload }"
               >
-                <el-icon><Plus /></el-icon>
+                <el-icon>
+                  <Plus />
+                </el-icon>
                 <template #file="{ file }">
                   <div>
                     <img
@@ -496,14 +573,18 @@
                         class="el-upload-list__item-delete"
                         @click="handleDownload(file)"
                       >
-                        <el-icon size="15"><Download /></el-icon>
+                        <el-icon size="15">
+                          <Download />
+                        </el-icon>
                       </span>
                       <span
                         v-if="!disabled"
                         class="el-upload-list__item-delete"
                         @click="handleRemove(file)"
                       >
-                        <el-icon size="15"><Delete /></el-icon>
+                        <el-icon size="15">
+                          <Delete />
+                        </el-icon>
                       </span>
                     </span>
                   </div>
@@ -525,7 +606,7 @@
           <el-button
             size="small"
             type="primary"
-            @click="saveObj"
+            @click="saveObj(formUserRef)"
             style="height: 2rem; font-size: 0.88rem"
           >
             淇濆瓨
@@ -558,7 +639,7 @@
         </div>
       </template>
       <el-form
-        :model="formpassword"
+        :model="newobj"
         label-width="auto"
         label-position="top"
         ref="formpasswordRef"
@@ -585,11 +666,11 @@
             </div>
           </el-col>
         </el-row>
-        <el-form-item prop="password">
+        <el-form-item prop="newPwd">
           <el-input
             style="margin-top: 1rem"
             size="large"
-            v-model="formpassword.password"
+            v-model="newobj.newPwd"
             placeholder="璇疯緭鍏�"
           />
         </el-form-item>
@@ -623,6 +704,7 @@
       :before-close="handleClose"
       :show-close="false"
       :align-center="true"
+      @close="resetForm1(formRoleRef)"
     >
       <template #title>
         <div
@@ -700,7 +782,6 @@
     </el-dialog>
 
     <!-- 鏉冮檺绠$悊寮瑰嚭妗� -->
-
     <el-dialog v-model="imgdialogVisible">
       <div
         style="
@@ -717,15 +798,20 @@
   </div>
 </template>
 <script setup>
-import { ref, reactive, onMounted } from "vue";
+import { ref, reactive, onMounted, toRef } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import {
-  GetUserList,
   AddUser,
   UpdateUser,
   DelApi,
   ExportApi,
   ExportApi1,
+  UpdatePwd,
+  NewGetUserList,
+  AdduserData,
+  NewUpdateUser,
+  DeleteUserData,
+  FaceGetPageData,
 } from "@/api/user";
 import { useRouter } from "vue-router";
 import { formatTime } from "@/utils/index.js";
@@ -736,17 +822,20 @@
   UpdateRoleApi,
   DeleteRoleApi,
 } from "@/api/role";
-const queryForm = reactive({
+let obj = {
   selectName: "",
   selectTime: [], // 鏃堕棿鑼冨洿
   selectType: "",
   selectInput: "",
-});
+};
+const queryForm = toRef({ ...obj });
 const router = useRouter();
 
 const tableData = ref([]);
-const grideData = ref([{ id: 1 }]);
-const formRef = ref();
+const grideData = ref([]);
+const faceData = ref([]);
+//鏂板缓鐢ㄦ埛ref
+const formUserRef = ref();
 const options = ref([]);
 const props = { multiple: true };
 const isoptins = ref([
@@ -756,70 +845,73 @@
   },
   { value: 1, label: "鏄�" },
 ]);
+const showUpload = ref(false);
 //鍒嗙粍
-const groupOptions = ref([
-  { value: 1, label: "瓒呯骇绠$悊鍛�" },
-  { value: 2, label: "璐ㄦ缁�" },
-  { value: 3, label: "鐢垫皵缁�" },
-  { value: 4, label: "鏈烘缁�" },
-  { value: 5, label: "鍦版矡缁�" },
-]);
-const table = 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: 2,
+  rolename: "",
   enable: 1,
-  headImageUrl: "",
+  path: "",
+  usertruename: "",
 });
-const userform = reactive({
-  userName: "",
-  description: "",
+const rules = reactive({
+  username: {
+    required: true,
+    message: "璇疯緭鍏ョ敤鎴峰悕",
+    trigger: "blur",
+  },
+  roleid: {
+    required: true,
+    message: "璇烽�夋嫨瑙掕壊",
+    trigger: "change",
+  },
+  newPwd: [
+    {
+      required: true,
+      message: "璇疯緭鍏ュ瘑鐮�",
+      trigger: "blur",
+    },
+  ],
+  realName: {
+    required: true,
+    message: "璇疯緭鍏ュ鍚�",
+    trigger: "blur",
+  },
+  phoneno: {
+    required: true,
+    message: "璇疯緭鍏ユ墜鏈哄彿",
+    trigger: "blur",
+  },
+  usertruename: {
+    required: true,
+    message: "璇疯緭鍏ョ湡瀹炲鍚�",
+    trigger: "blur",
+  },
 });
+
 const formpasswordRef = ref();
 const isactive = ref(1);
-const claimdialogVisible = ref(false);
 const dialogVisible = ref(false);
 const imgdialogVisible = ref(false);
 const dialogImageUrl = ref("");
+const userInfo = ref();
 //鐢ㄦ埛淇℃伅淇敼瀵嗙爜寮瑰嚭妗�
 const dialogVisible1 = ref(false);
 //鐢ㄦ埛瑙掕壊鏂板缓
 const dialogVisible2 = ref(false);
-const TorquedialogVisible = ref(false);
-//鍒嗛〉璇锋眰鍙傛暟
-const pageQuery = ref({
-  page: 1, //褰撳墠椤甸潰
-  rows: 10, //姣忛〉鏄剧ず鏉℃暟
-  order: "desc", //鎺掑簭鏂瑰紡
-  sort: "createDate", //鎺掑簭瀛楁
-  wheres: "", //鏉′欢鏌ヨ
-});
-
-const changeactive = (index) => {
-  isactive.value = index;
-  if (isactive.value == 1) {
-    selectoptions.value = userOptions;
-    initData();
-  } else {
-    selectoptions.value = roleOptions;
-    getRole();
-  }
-};
-
+//绛涢�夋潯浠�
 const userOptions = [
   {
-    value: "userName",
+    value: "username",
     label: "鐧诲綍璐﹀彿",
   },
   {
-    value: "userTrueName",
+    value: "usertruename",
     label: "鐪熷疄濮撳悕",
   },
   {
@@ -827,7 +919,18 @@
     label: "鑱旂郴鏂瑰紡",
   },
 ];
-
+const fileList = ref([]);
+const roleNameList = ref([
+  { value: "鐢垫皵璐ㄦ", label: "鐢垫皵璐ㄦ" },
+  { value: "鏈烘璐ㄦ", label: "鏈烘璐ㄦ" },
+  { value: "鍦版矡璐ㄦ", label: "鍦版矡璐ㄦ" },
+  { value: "鐢垫皵鍔涚煩", label: "鐢垫皵鍔涚煩" },
+  { value: "鐢垫皵杈呭姪", label: "鐢垫皵杈呭姪" },
+  { value: "鏈烘鍔涚煩", label: "鏈烘鍔涚煩" },
+  { value: "鏈烘杈呭姪", label: "鏈烘杈呭姪" },
+  { value: "鍦版矡鍔涚煩", label: "鍦版矡鍔涚煩" },
+  { value: "鍦版矡杈呭姪", label: "鍦版矡杈呭姪" },
+]);
 const roleOptions = [
   {
     value: "roleName",
@@ -836,116 +939,239 @@
 ];
 const selectoptions = ref([]);
 selectoptions.value = userOptions;
+//鐢ㄦ埛淇敼瀵嗙爜
 const formpassword = ref({
-  password: "",
+  oldPwd: "",
+  newPwd: "",
 });
 const passwordrules = reactive({
-  password: {
-    required: true,
-    message: "璇疯緭鍏ュ瘑鐮�",
-    trigger: "blur",
-  },
+  newPwd: [
+    {
+      required: true,
+      message: "璇疯緭鍏ュ瘑鐮�",
+      trigger: "blur",
+    },
+    {
+      min: 6,
+      max: 12,
+      message: "瀵嗙爜闀垮害鍦� 6 鍒� 12 涓瓧绗�",
+      trigger: "blur",
+    },
+  ],
 });
+
+const uploadRef = ref();
+
 const pageTotal = ref(0);
-//鐧诲綍璁板綍
+const pageTotal1 = ref(0);
+const pageTotal2 = ref(0);
+//鐢ㄦ埛鍒楄〃
 const initData = () => {
   // 鏌ヨ鏉′欢
-  const startTime = formatTime(queryForm.selectTime[0]);
-  const endTime = formatTime(queryForm.selectTime[1]);
+  const startTime = formatTime(queryForm.value.selectTime[0]);
+  const endTime = formatTime(queryForm.value.selectTime[1]);
   const filter = [
     {
-      name: "",
-      value: queryForm.selectType,
-      displayType: "int",
+      name: queryForm.value.selectType,
+      value: queryForm.value.selectInput,
+      displayType: "like",
     },
     { 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.map((item) => {
+      return {
+        ...item,
+        isdisabled:
+          userInfo.value.userName == "admin" || userInfo.value.roleId == "1"
+            ? item.userName == "admin" || item.user_Id == "1"
+            : item.userName == "admin" ||
+              item.user_Id == "1" ||
+              item.userName != userInfo.value.userName,
+      };
+    });
+    pageTotal.value = res.data.totalCount;
   });
 };
+//鍒嗛〉璇锋眰鍙傛暟
+const pageQuery = ref({
+  page: 1, //褰撳墠椤甸潰
+  rows: 10, //姣忛〉鏄剧ず鏉℃暟
+  order: "desc", //鎺掑簭鏂瑰紡
+  sort: "", //鎺掑簭瀛楁
+  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;
-  initData();
+  if (isactive.value == 1) {
+    pageQuery.value.page = 1;
+    initData();
+  } else if (isactive.value == 2) {
+    pageQuery1.value.page = 1;
+    getRole();
+  } else {
+    pageQuery2.value.page = 1;
+    GetFacePageData();
+  }
 };
-
+//閲嶇疆鏌ヨ鏉′欢
 const resetQuery = () => {
-  queryForm.selectName = "";
-  queryForm.selectInput = "";
-  queryForm.selectTime = [];
-  queryForm.selectType = "";
-  pageQuery.value.page = 1;
-  initData();
+  queryForm.value = Object.assign({}, obj);
+  if (isactive.value == 1) {
+    pageQuery.value.page = 1;
+    initData();
+  } else if (isactive.value == 2) {
+    pageQuery1.value.page = 1;
+    getRole();
+  } else {
+    pageQuery2.value.page = 1;
+    GetFacePageData();
+  }
 };
 //鍒嗛〉椤甸潰澶у皬鏀瑰彉
 const handleSizeChange = (val) => {
   pageQuery.value.rows = val;
-  initData();
+  if (isactive.value == 1) {
+    initData();
+  } else if (isactive.value == 2) {
+    getRole();
+  } else {
+    GetFacePageData();
+  }
 };
 
 //鍒嗛〉椤甸潰鏀瑰彉
 const handleCurrentChange = (val) => {
   pageQuery.value.page = val;
-  initData();
+  if (isactive.value == 1) {
+    initData();
+  } else if (isactive.value == 2) {
+    getRole();
+  } else {
+    GetFacePageData();
+  }
 };
-//鍒嗛〉椤甸潰澶у皬鏀瑰彉
-const RoleSizeChange = (val) => {
-  pageQuery.value.rows = val;
-  getRole();
+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 = {
+    username: "",
+    phoneno: "",
+    roleid: 2,
+    rolename: "",
+    enable: 1,
+    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 = {
+    roleName: "",
+    description: "",
+  };
 };
 
-//鍒嗛〉椤甸潰鏀瑰彉
-const RoleCurrentChange = (val) => {
-  pageQuery.value.page = val;
-  getRole();
-};
 const handlePictureCardPreview = (uploadFile) => {
   dialogImageUrl.value = uploadFile.url;
   imgdialogVisible.value = true;
 };
-const handleAvatarSuccess = (val) => {
-  console.log(val);
+const handleRemove = (file, fileList1) => {
+  fileList.value = [];
+  //绉婚櫎宸蹭笂浼犵殑鍥剧墖
+  formUser.value.path = "";
+  if (fileList.value.length < 1) {
+    showUpload.value = false;
+  }
 };
+
 const beforeAvatarUpload = (val) => {
   console.log(val);
 };
+
 //鏂板缓鐢ㄦ埛璐﹀彿
-const saveObj = () => {
-  formRef.value.validate((valid) => {
+const saveObj = async (formEl) => {
+  // submitUpload();
+  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();
         });
       }
+    } else {
+      console.log("error submit!", fields);
     }
   });
 };
 //鏄惁鍚敤
 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();
   });
-  console.log(val);
 };
 // 鐢ㄦ埛瑙掕壊鏄惁鍚敤
 const changeRoleSwitch = (val) => {
@@ -958,26 +1184,51 @@
 };
 //缂栬緫鐢ㄦ埛璐﹀彿
 const Edit = (val) => {
-  console.log(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.path != "") {
+    fileList.value = [
+      {
+        name: "1",
+        url: "http://115.159.85.185:9098" + obj.path,
+      },
+    ];
+  }
+
   dialogVisible.value = true;
-  formUser.value = obj;
 };
 const newobj = ref({});
 //淇敼瀵嗙爜
 const Editpassword = (val) => {
+  let obj = Object.assign({}, val);
+  formUser.value = obj;
   formpassword.value = val;
-  newobj.value = val;
+  newobj.value = Object.assign({}, val);
   dialogVisible1.value = true;
 };
 //淇濆瓨淇敼瀵嗙爜
 const savePassword = async (formEl) => {
-  let obj = Object.assign({}, newobj);
-  obj.password = formpassword.value.password;
+  let obj = Object.assign({}, newobj.value);
+  let formdata = {
+    id: obj.user_Id,
+    oldPwd: obj.userPwd,
+    newPwd: obj.newPwd,
+  };
   if (!formEl) return;
   await formEl.validate((valid, fields) => {
     if (valid) {
-      UpdateUser(obj).then((res) => {
+      UpdatePwd(formdata).then((res) => {
         ElMessage({ message: "淇敼瀵嗙爜鎴愬姛", type: "success" });
         dialogVisible1.value = false;
         initData();
@@ -1003,7 +1254,10 @@
 const formRole = ref({
   roleName: "",
   description: "",
+  createDate: formatTime(new Date()), //鍒涘缓鏃堕棿
+  creater: JSON.parse(localStorage.getItem("user")).userName, //鍒涘缓浜�
 });
+
 //鏂板缓瑙掕壊
 const AddRole = () => {
   Roletype.value = "鏂板缓";
@@ -1040,42 +1294,66 @@
   formRole.value = obj;
   dialogVisible2.value = true;
 };
+//鑾峰彇瑙掕壊
 const getRole = () => {
-  GetPageDataApi({
-    page: 1,
-    rows: 10,
-    total: 100,
-    tableName: "",
-    sort: "",
-    order: "",
-    wheres: "",
-    export: true,
-    value: "",
-    filter: [
-      {
-        name: "string",
-        value: "string",
-        displayType: "string",
-      },
-    ],
-  }).then((res) => {
-    grideData.value = res.rows;
-    pageTotal.value = res.total;
-  });
-};
-const printExcel = () => {
-  // 鏌ヨ鏉′欢
-  const startTime = formatTime(queryForm.selectTime[0]);
-  const endTime = formatTime(queryForm.selectTime[1]);
+  const startTime = formatTime(queryForm.value.selectTime[0]);
+  const endTime = formatTime(queryForm.value.selectTime[1]);
   const filter = [
     {
-      name: queryForm.selectType,
-      value: queryForm.selectInput,
-      displayType: "String",
+      name: queryForm.value.selectType,
+      value: queryForm.value.selectInput,
+      displayType: "like",
+    },
+    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
+    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
+  ];
+  GetPageDataApi({ ...pageQuery1.value, filter }).then((res) => {
+    grideData.value = res.rows;
+    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 = () => {
+  // 鏌ヨ鏉′欢
+  const startTime = formatTime(queryForm.value.selectTime[0]);
+  const endTime = formatTime(queryForm.value.selectTime[1]);
+  const filter = [
+    {
+      name: queryForm.value.selectType,
+      value: queryForm.value.selectInput,
+      displayType: "like",
     },
     {
       name: "pustatus",
-      value: queryForm.selectName,
+      value: queryForm.value.selectName,
       displayType: "String",
     },
     { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
@@ -1094,6 +1372,19 @@
     });
   }
 };
+//鍒囨崲椤甸潰
+const changeactive = (index) => {
+  isactive.value = index;
+  if (isactive.value == 1) {
+    selectoptions.value = userOptions;
+    initData();
+  } else if (isactive.value == 2) {
+    selectoptions.value = roleOptions;
+    getRole();
+  } else {
+    GetFacePageData();
+  }
+};
 
 //鎵归噺鍒犻櫎
 const ids = ref([]);
@@ -1106,6 +1397,10 @@
   ids.value = val.map((item) => item.roleId);
 };
 const deleteAll = () => {
+  if (ids.value.includes(1)) {
+    ElMessage({ message: "瓒呯骇绠$悊鍛樹笉鑳藉垹闄�", type: "error" });
+    return;
+  }
   if (ids.value.length == 0) {
     ElMessage({ message: "璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁", type: "error" });
     return;
@@ -1123,24 +1418,35 @@
   }
 };
 
+//绠$悊
+//璺敱璺宠浆
+const toDetail = (row) => {
+  router.push({ name: "permission", state: { info: JSON.stringify(row) } });
+};
 onMounted(() => {
   initData();
+  getRole();
+  userInfo.value = JSON.parse(localStorage.getItem("user"));
 });
 </script>
 <style lang="scss" scoped>
 .Usermanagement {
   display: flex;
+  flex-direction: column;
   background-color: #fff;
+
   .content {
     width: 100%;
     display: flex;
     flex-direction: column;
+
     .checkbox {
       width: 11rem;
       display: flex;
       justify-content: space-between;
       margin-top: 1rem;
       margin-left: 1.31rem;
+
       .item {
         width: 5rem;
         height: 1.88rem;
@@ -1152,20 +1458,24 @@
         line-height: 1.88rem;
         cursor: pointer;
       }
+
       .isactive {
         background-color: rgba(16, 16, 16, 1);
         color: rgba(255, 255, 255, 1);
       }
     }
+
     .serch {
       display: flex;
       margin-top: 1.31rem;
       align-items: center;
+
       .time_box {
         display: flex;
         align-items: center;
         text-align: center;
         margin-left: 0.98rem;
+
         .time {
           box-sizing: border-box;
           width: 6.88rem;
@@ -1179,12 +1489,14 @@
           justify-content: center;
         }
       }
+
       .serch_box {
         display: flex;
         align-items: center;
         text-align: center;
         margin-left: 0.98rem;
         border-radius: 0.38rem;
+
         .serchb {
           box-sizing: border-box;
           width: 6.88rem;
@@ -1195,6 +1507,7 @@
           align-items: center;
           justify-content: center;
         }
+
         input {
           box-sizing: border-box;
           outline: none;
@@ -1207,6 +1520,7 @@
         }
       }
     }
+
     .btns {
       display: flex;
       justify-content: space-between;
@@ -1217,17 +1531,20 @@
       box-sizing: border-box;
     }
   }
+
   .my-header {
     height: 3.84rem;
     display: flex;
     justify-content: space-between;
     border-bottom: 0.06rem solid rgba(233, 233, 233, 1);
   }
+
   .avatar-uploader .avatar {
     width: 7rem;
     height: 7rem;
     display: block;
   }
+
   :deep(.avatar-uploader .el-upload) {
     width: 7rem;
     height: 7rem;
@@ -1238,10 +1555,12 @@
     overflow: hidden;
     transition: var(--el-transition-duration-fast);
   }
+
   :deep(.el-upload-list__item) {
     width: 7rem;
     height: 7rem;
   }
+
   .avatar-uploader .el-upload:hover {
     border-color: var(--el-color-primary);
   }
@@ -1254,13 +1573,17 @@
     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