From 3704e11b86fa50bf9f670de268a18e6de3b5d48a Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 03 十二月 2025 09:02:43 +0800
Subject: [PATCH] Merge branch 'dev-1.3.0.4' of http://120.26.58.240:8888/r/flexJobAdminBClient into dev-1.3.0.4

---
 src/views/UserManage/UserManageList.vue |  115 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 91 insertions(+), 24 deletions(-)

diff --git a/src/views/UserManage/UserManageList.vue b/src/views/UserManage/UserManageList.vue
index 898903f..ccb367c 100644
--- a/src/views/UserManage/UserManageList.vue
+++ b/src/views/UserManage/UserManageList.vue
@@ -14,18 +14,33 @@
           </QueryFilterItem>
         </template>
         <template #btn>
-          <el-button @click="openDialog()" icon="Plus" type="primary">鏂板</el-button>
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+            @click="openDialog()"
+            icon="Plus"
+            type="primary"
+            >鏂板</el-button
+          >
         </template>
       </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="UserManageColumns"
-        :operationBtns="operationBtns"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+        <template #status="{ row }">
+          <FieldSwitch
+            v-model="row.status"
+            active-text="鍚敤"
+            :active-value="EnumUserStatus.Normal"
+            inactive-text="绂佺敤"
+            :inactive-value="EnumUserStatus.Disabled"
+            :before-change="() => setUserInfoStatus(row)"
+          />
+        </template>
       </ProTableV2>
     </AppContainer>
     <AddOrEditUserDialog v-bind="dialogProps" />
     <ResetPasswordDialog v-bind="resetPasswordDialogProps"></ResetPasswordDialog>
+    <ResetOperatorPasswordDialog
+      v-bind="resetOperatorPasswordDialogProps"
+    ></ResetOperatorPasswordDialog>
   </LoadingLayout>
 </template>
 
@@ -40,42 +55,41 @@
   useTable,
   useFormDialog,
   defineOperationBtns,
+  FieldSwitch,
 } from '@bole-core/components';
 import * as userServices from '@/services/api/user';
-import { UserManageColumns } from './constants';
-import { EnumUserStatusText } from '@/constants';
+import { EnumUserStatus, EnumUserStatusText } from '@/constants';
 import { ModelValueType } from 'element-plus';
 import { Message } from '@bole-core/core';
 import AddOrEditUserDialog from './components/AddOrEditUserDialog.vue';
 import ResetPasswordDialog from './components/ResetPasswordDialog.vue';
+import ResetOperatorPasswordDialog from './components/ResetOperatorPasswordDialog.vue';
 
 defineOptions({
   name: 'UserManageList',
 });
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'editBtn',
-      name: '缂栬緫',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  editBtn: {
     emits: {
       onClick: (role) => openDialog(role),
     },
   },
-  {
-    data: {
-      enCode: 'resetPasswordBtn',
-      name: '閲嶇疆瀵嗙爜',
-    },
-    props: {
-      type: 'danger',
-    },
+  resetPasswordBtn: {
     emits: {
       onClick: (role) => openResetPasswordDialog(role),
     },
   },
-]);
+  resetOperatorPasswordBtn: {
+    emits: {
+      onClick: (role) => openResetOperatorPasswordDialog(role),
+    },
+  },
+};
+
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 const BaseState = {
@@ -125,7 +139,7 @@
         formatter: (role: API.GetOperationUserInfosQueryResultItem) =>
           role.roles?.length > 0 ? role.roles.map((x) => x.name).join(',') : '',
       },
-      status: { type: 'enum', valueEnum: EnumUserStatusText },
+      // status: { type: 'enum', valueEnum: EnumUserStatusText },
     },
   }
 );
@@ -141,6 +155,7 @@
     status: '' as any as EnumUserStatus,
     roleIds: [] as string[],
     password: '',
+    operatorPassword: '',
   },
 });
 
@@ -155,6 +170,7 @@
       roleIds: row.roles?.map((x) => x.id) ?? [],
       status: row.status,
       password: '',
+      operatorPassword: '',
     });
   } else {
     handleAdd();
@@ -174,6 +190,7 @@
     };
     if (!editForm.id) {
       params.password = editForm.password;
+      params.operatorPassword = editForm.operatorPassword;
     }
     if (editForm.id) {
       params.id = editForm.id;
@@ -187,6 +204,38 @@
   } catch (error) {}
 }
 
+const {
+  dialogProps: resetOperatorPasswordDialogProps,
+  handleAdd: handleResetOperatorPasswordAdd,
+  editForm: resetOperatorPasswordEditForm,
+} = useFormDialog({
+  onConfirm: resetOperatorPassword,
+  defaultFormParams: {
+    ids: '',
+    operatorPassword: '',
+  },
+});
+
+function openResetOperatorPasswordDialog(row: API.GetOperationUserInfosQueryResultItem) {
+  handleResetOperatorPasswordAdd({
+    ids: row.id,
+    operatorPassword: '',
+  });
+}
+
+async function resetOperatorPassword() {
+  try {
+    let params: API.ResetUserOperatorPasswordsCommand = {
+      ids: [resetOperatorPasswordEditForm.ids],
+      operatorPassword: resetOperatorPasswordEditForm.operatorPassword,
+    };
+    let res = await userServices.resetUserOperatorPasswords(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
 const {
   dialogProps: resetPasswordDialogProps,
   handleAdd: handleResetPasswordAdd,
@@ -206,6 +255,24 @@
   });
 }
 
+async function setUserInfoStatus(row: API.GetOperationUserInfosQueryResultItem) {
+  try {
+    await Message.tipMessage(
+      `纭瑕�${row.status === EnumUserStatus.Normal ? '绂佺敤' : '鍚敤'}璇ョ敤鎴峰悧锛焋
+    );
+    const res = await userServices.setUserInfoStatus({
+      ids: [row.id],
+      status:
+        row.status === EnumUserStatus.Normal ? EnumUserStatus.Disabled : EnumUserStatus.Normal,
+    });
+    if (res) {
+      getList(paginationState.pageIndex);
+      Message.successMessage(`鎿嶄綔鎴愬姛`);
+      return !!res;
+    }
+  } catch (error) {}
+}
+
 async function resetPassword() {
   try {
     let params: API.ResetUserPasswordsCommand = {

--
Gitblit v1.9.1