refactor: ♻️ 用户代码重构优化

Former-commit-id: e25812358a829075d00af324c815831a52070bb4
This commit is contained in:
hxr
2023-10-07 23:59:23 +08:00
parent 8686d05130
commit c5586e954f

View File

@@ -1,3 +1,4 @@
<!-- 用户管理 -->
<script setup lang="ts"> <script setup lang="ts">
defineOptions({ defineOptions({
name: "User", name: "User",
@@ -27,31 +28,45 @@ const queryFormRef = ref(ElForm); // 查询表单
const userFormRef = ref(ElForm); // 用户表单 const userFormRef = ref(ElForm); // 用户表单
const uploadRef = ref<UploadInstance>(); // 上传组件 const uploadRef = ref<UploadInstance>(); // 上传组件
const loading = ref(false); const loading = ref(false); // 加载状态 用于分页
const ids = ref([]); const removeIds = ref([]); // 删除用户ID集合 用于批量删除
const total = ref(0);
const queryParams = reactive<UserQuery>({ const queryParams = reactive<UserQuery>({
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
}); });
const userList = ref<UserPageVO[]>(); const total = ref(0); // 数据总数
const pageData = ref<UserPageVO[]>(); // 用户分页数据
const deptList = ref<OptionType[]>(); // 部门下拉数据源
const roleList = ref<OptionType[]>(); // 角色下拉数据源
// 弹窗对象
const dialog = reactive({
visible: false,
type: "user-form",
width: 1200,
title: "",
});
// 用户表单数据
const formData = reactive<UserForm>({ const formData = reactive<UserForm>({
status: 1, status: 1,
}); });
// 用户导入数据
const importData = reactive({ const importData = reactive({
deptId: undefined, deptId: undefined,
file: undefined, file: undefined,
fileList: [], fileList: [],
}); });
// 校验规则
const rules = reactive({ const rules = reactive({
username: [{ required: true, message: "用户名不能为空", trigger: "blur" }], username: [{ required: true, message: "用户名不能为空", trigger: "blur" }],
nickname: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }], nickname: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
deptId: [{ required: true, message: "所属部门不能为空", trigger: "blur" }], deptId: [{ required: true, message: "所属部门不能为空", trigger: "blur" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "blur" }], roleremoveIds: [
{ required: true, message: "用户角色不能为空", trigger: "blur" },
],
email: [ email: [
{ {
pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/,
@@ -68,22 +83,12 @@ const rules = reactive({
], ],
}); });
const deptList = ref<OptionType[]>();
const roleList = ref<OptionType[]>();
const dialog = reactive({
visible: false,
type: "user-form",
width: 1200,
title: "",
});
/** 查询 */ /** 查询 */
function handleQuery() { function handleQuery() {
loading.value = true; loading.value = true;
getUserPage(queryParams) getUserPage(queryParams)
.then(({ data }) => { .then(({ data }) => {
userList.value = data.list; pageData.value = data.list;
total.value = data.total; total.value = data.total;
}) })
.finally(() => { .finally(() => {
@@ -101,7 +106,7 @@ function resetQuery() {
/** 行选中事件 */ /** 行选中事件 */
function handleSelectionChange(selection: any) { function handleSelectionChange(selection: any) {
ids.value = selection.map((item: any) => item.id); removeIds.value = selection.map((item: any) => item.id);
} }
/** 用户状态 Change*/ /** 用户状态 Change*/
@@ -252,8 +257,8 @@ const handleSubmit = useThrottleFn(() => {
/** 删除用户 */ /** 删除用户 */
function handleDelete(id?: number) { function handleDelete(id?: number) {
const userIds = [id || ids.value].join(","); const userremoveIds = [id || removeIds.value].join(",");
if (!userIds) { if (!userremoveIds) {
ElMessage.warning("请勾选删除项"); ElMessage.warning("请勾选删除项");
return; return;
} }
@@ -263,7 +268,7 @@ function handleDelete(id?: number) {
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}).then(function () { }).then(function () {
deleteUsers(userIds).then(() => { deleteUsers(userremoveIds).then(() => {
ElMessage.success("删除成功"); ElMessage.success("删除成功");
resetQuery(); resetQuery();
}); });
@@ -399,7 +404,7 @@ onMounted(() => {
<el-button <el-button
v-hasPerm="['sys:user:delete']" v-hasPerm="['sys:user:delete']"
type="danger" type="danger"
:disabled="ids.length === 0" :disabled="removeIds.length === 0"
@click="handleDelete()" @click="handleDelete()"
><i-ep-delete />删除</el-button ><i-ep-delete />删除</el-button
> >
@@ -427,7 +432,7 @@ onMounted(() => {
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="userList" :data="pageData"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="50" align="center" /> <el-table-column type="selection" width="50" align="center" />
@@ -571,8 +576,12 @@ onMounted(() => {
<dictionary v-model="formData.gender" type-code="gender" /> <dictionary v-model="formData.gender" type-code="gender" />
</el-form-item> </el-form-item>
<el-form-item label="角色" prop="roleIds"> <el-form-item label="角色" prop="roleremoveIds">
<el-select v-model="formData.roleIds" multiple placeholder="请选择"> <el-select
v-model="formData.roleremoveIds"
multiple
placeholder="请选择"
>
<el-option <el-option
v-for="item in roleList" v-for="item in roleList"
:key="item.value" :key="item.value"