diff --git a/README.md b/README.md
index 2395a9f..77aa65f 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -18,18 +30,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
📚 [在线文档](https://doc.charles7c.top) | 🚀 [演示地址](https://cnadmin.charles7c.top)(账号/密码:admin/admin123)
diff --git a/src/api/system/user.ts b/src/api/system/user.ts
index d691b5d..6582134 100644
--- a/src/api/system/user.ts
+++ b/src/api/system/user.ts
@@ -7,6 +7,7 @@ export interface DataRecord {
id?: number;
username?: string;
nickname?: string;
+ password?: string;
gender?: number;
email?: string;
phone?: string;
@@ -25,6 +26,10 @@ export interface DataRecord {
disabled?: boolean;
}
+export interface UserResetReq {
+ newPassword: string;
+}
+
export interface ListParam {
username?: string;
status?: number;
@@ -64,8 +69,8 @@ export function del(ids: number | Array) {
return axios.delete(`${BASE_URL}/${ids}`);
}
-export function resetPassword(id: number) {
- return axios.patch(`${BASE_URL}/${id}/password`);
+export function resetPassword(req: UserResetReq, id: number) {
+ return axios.patch(`${BASE_URL}/${id}/password`, req);
}
export interface UpdateUserRoleReq {
diff --git a/src/views/system/user/center/components/security-settings/update-pwd.vue b/src/views/system/user/center/components/security-settings/update-pwd.vue
index fe503e7..e21acaf 100644
--- a/src/views/system/user/center/components/security-settings/update-pwd.vue
+++ b/src/views/system/user/center/components/security-settings/update-pwd.vue
@@ -68,7 +68,7 @@
callback(
t(
'userCenter.securitySettings.updatePwd.form.error.validator.rePassword'
- )
+ ),
);
} else {
callback();
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index b366367..ad8280f 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -15,6 +15,7 @@
import { LabelValueState } from '@/store/modules/dict/types';
import getAvatar from '@/utils/avatar';
import checkPermission from '@/utils/permission';
+ import { encryptByRsa } from '@/utils/encrypt';
const { proxy } = getCurrentInstance() as any;
const { dis_enable_status_enum } = proxy.useDict('dis_enable_status_enum');
@@ -31,6 +32,7 @@
const detailLoading = ref(false);
const exportLoading = ref(false);
const visible = ref(false);
+ const resetPasswordVisible = ref(false);
const userRoleVisible = ref(false);
const detailVisible = ref(false);
const deptLoading = ref(false);
@@ -57,6 +59,7 @@
rules: {
username: [{ required: true, message: '请输入用户名' }],
nickname: [{ required: true, message: '请输入昵称' }],
+ password: [{ required: true, message: '请输入密码' }],
deptId: [{ required: true, message: '请选择所属部门' }],
roleIds: [{ required: true, message: '请选择所属角色' }],
},
@@ -126,6 +129,17 @@
});
};
+ /**
+ * 打开重置密码对话框
+ *
+ * @param id ID
+ */
+ const toResetPassword = (id: number) => {
+ reset();
+ form.value.id = id;
+ resetPasswordVisible.value = true;
+ };
+
/**
* 打开分配角色对话框
*
@@ -183,8 +197,10 @@
*/
const handleCancel = () => {
visible.value = false;
+ resetPasswordVisible.value = false;
userRoleVisible.value = false;
proxy.$refs.formRef?.resetFields();
+ proxy.$refs.resetPasswordFormRef?.resetFields();
proxy.$refs.userRoleFormRef?.resetFields();
};
@@ -201,12 +217,38 @@
proxy.$message.success(res.msg);
});
} else {
- add(form.value).then((res) => {
+ const rawPassword = form.value.password;
+ if (rawPassword) {
+ form.value.password = encryptByRsa(rawPassword) || '';
+ }
+ add(form.value)
+ .then((res) => {
+ handleCancel();
+ getList();
+ proxy.$message.success(res.msg);
+ })
+ .catch(() => {
+ form.value.password = rawPassword;
+ });
+ }
+ }
+ });
+ };
+
+ /**
+ * 重置密码
+ */
+ const handleResetPassword = () => {
+ proxy.$refs.resetPasswordFormRef.validate((valid: any) => {
+ if (!valid && form.value.id !== undefined) {
+ const newPassword = form.value.password;
+ resetPassword({ newPassword: encryptByRsa(newPassword) }, form.value.id)
+ .then((res) => {
handleCancel();
getList();
proxy.$message.success(res.msg);
- });
- }
+ })
+ .catch();
}
});
};
@@ -285,17 +327,6 @@
});
};
- /**
- * 重置密码
- *
- * @param id ID
- */
- const handleResetPassword = (id: number) => {
- resetPassword(id).then((res) => {
- proxy.$message.success(res.msg);
- });
- };
-
/**
* 已选择的数据行发生改变时触发
*
@@ -578,7 +609,13 @@
}}
-
+
男
@@ -622,7 +659,12 @@
否
-
+
{{ record.createUserString }}
@@ -668,22 +710,15 @@
-
-
-
-
-
+
+
-
+
@@ -736,7 +763,13 @@
v-model="form.nickname"
placeholder="请输入昵称"
:max-length="30"
- style="width: 162px"
+ />
+
+
+
@@ -744,7 +777,6 @@
v-model="form.email"
placeholder="请输入邮箱"
:max-length="255"
- style="width: 162px"
/>
@@ -752,11 +784,10 @@
v-model="form.phone"
placeholder="请输入手机号码"
:max-length="15"
- style="width: 162px"
/>
-
+
男
女
未知
@@ -770,7 +801,6 @@
allow-clear
allow-search
:filter-tree-node="filterDeptOptions"
- style="width: 431px"
/>
@@ -798,7 +827,32 @@
minRows: 3,
}"
show-word-limit
- style="width: 431px"
+ />
+
+
+
+
+
+
+
+