refactor: ♻️ 用户管理代码优化
Former-commit-id: dda48937806b1b6dbe29a049e72f8e2f521d6b78
This commit is contained in:
@@ -25,7 +25,7 @@ import { genFileId } from "element-plus";
|
|||||||
|
|
||||||
const queryFormRef = ref(ElForm); // 查询表单
|
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 ids = ref([]);
|
||||||
@@ -78,41 +78,6 @@ const dialog = reactive({
|
|||||||
title: "",
|
title: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
/** 加载角色下拉数据源 */
|
|
||||||
async function loadRoleOptions() {
|
|
||||||
getRoleOptions().then((response) => {
|
|
||||||
roleList.value = response.data;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 加载部门下拉数据源 */
|
|
||||||
async function loadDeptOptions() {
|
|
||||||
getDeptOptions().then((response) => {
|
|
||||||
deptList.value = response.data;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改用户状态
|
|
||||||
*/
|
|
||||||
function handleStatusChange(row: { [key: string]: any }) {
|
|
||||||
const text = row.status === 1 ? "启用" : "停用";
|
|
||||||
ElMessageBox.confirm("确认要" + text + row.username + "用户吗?", "警告", {
|
|
||||||
confirmButtonText: "确定",
|
|
||||||
cancelButtonText: "取消",
|
|
||||||
type: "warning",
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
return updateUserStatus(row.id, row.status);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
ElMessage.success(text + "成功");
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
row.status = row.status === 1 ? 0 : 1;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 查询 */
|
/** 查询 */
|
||||||
function handleQuery() {
|
function handleQuery() {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@@ -139,6 +104,24 @@ function handleSelectionChange(selection: any) {
|
|||||||
ids.value = selection.map((item: any) => item.id);
|
ids.value = selection.map((item: any) => item.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 用户状态 Change*/
|
||||||
|
function changeUserStatus(row: { [key: string]: any }) {
|
||||||
|
const text = row.status === 1 ? "启用" : "停用";
|
||||||
|
ElMessageBox.confirm("确认要" + text + row.username + "用户吗?", "警告", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
}).then(() => {
|
||||||
|
updateUserStatus(row.id, row.status)
|
||||||
|
.then(() => {
|
||||||
|
ElMessage.success(text + "成功");
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
row.status = row.status === 1 ? 0 : 1;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**重置密码 */
|
/**重置密码 */
|
||||||
function resetPassword(row: { [key: string]: any }) {
|
function resetPassword(row: { [key: string]: any }) {
|
||||||
ElMessageBox.prompt(
|
ElMessageBox.prompt(
|
||||||
@@ -161,6 +144,20 @@ function resetPassword(row: { [key: string]: any }) {
|
|||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 加载角色下拉数据源 */
|
||||||
|
async function loadRoleOptions() {
|
||||||
|
getRoleOptions().then((response) => {
|
||||||
|
roleList.value = response.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 加载部门下拉数据源 */
|
||||||
|
async function loadDeptOptions() {
|
||||||
|
getDeptOptions().then((response) => {
|
||||||
|
deptList.value = response.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打开弹窗
|
* 打开弹窗
|
||||||
*
|
*
|
||||||
@@ -208,7 +205,6 @@ function closeDialog() {
|
|||||||
importData.file = undefined;
|
importData.file = undefined;
|
||||||
importData.fileList = [];
|
importData.fileList = [];
|
||||||
}
|
}
|
||||||
resetQuery();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表单提交 */
|
/** 表单提交 */
|
||||||
@@ -223,6 +219,7 @@ const handleSubmit = useThrottleFn(() => {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
ElMessage.success("修改用户成功");
|
ElMessage.success("修改用户成功");
|
||||||
closeDialog();
|
closeDialog();
|
||||||
|
resetQuery();
|
||||||
})
|
})
|
||||||
.finally(() => (loading.value = false));
|
.finally(() => (loading.value = false));
|
||||||
} else {
|
} else {
|
||||||
@@ -230,6 +227,7 @@ const handleSubmit = useThrottleFn(() => {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
ElMessage.success("新增用户成功");
|
ElMessage.success("新增用户成功");
|
||||||
closeDialog();
|
closeDialog();
|
||||||
|
resetQuery();
|
||||||
})
|
})
|
||||||
.finally(() => (loading.value = false));
|
.finally(() => (loading.value = false));
|
||||||
}
|
}
|
||||||
@@ -247,6 +245,7 @@ const handleSubmit = useThrottleFn(() => {
|
|||||||
importUser(importData?.deptId, importData?.file).then((response) => {
|
importUser(importData?.deptId, importData?.file).then((response) => {
|
||||||
ElMessage.success(response.data);
|
ElMessage.success(response.data);
|
||||||
closeDialog();
|
closeDialog();
|
||||||
|
resetQuery();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, 3000);
|
}, 3000);
|
||||||
@@ -296,13 +295,13 @@ function downloadTemplate() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Excel文件Change事件 */
|
/** Excel文件 Change */
|
||||||
function handleFileChange(file: any) {
|
function handleFileChange(file: any) {
|
||||||
importData.file = file.raw;
|
importData.file = file.raw;
|
||||||
console.log(importData.file);
|
console.log(importData.file);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Excel文件Exceed事件 */
|
/** Excel文件 Exceed */
|
||||||
function handleFileExceed(files: any) {
|
function handleFileExceed(files: any) {
|
||||||
uploadRef.value!.clearFiles();
|
uploadRef.value!.clearFiles();
|
||||||
const file = files[0];
|
const file = files[0];
|
||||||
@@ -314,19 +313,25 @@ function handleFileExceed(files: any) {
|
|||||||
/** 导出用户 */
|
/** 导出用户 */
|
||||||
function handleExport() {
|
function handleExport() {
|
||||||
exportUser(queryParams).then((response: any) => {
|
exportUser(queryParams).then((response: any) => {
|
||||||
const blob = new Blob([response.data], {
|
const fileData = response.data;
|
||||||
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8",
|
const fileName = decodeURI(
|
||||||
});
|
|
||||||
const a = document.createElement("a");
|
|
||||||
const href = window.URL.createObjectURL(blob); // 下载的链接
|
|
||||||
a.href = href;
|
|
||||||
a.download = decodeURI(
|
|
||||||
response.headers["content-disposition"].split(";")[1].split("=")[1]
|
response.headers["content-disposition"].split(";")[1].split("=")[1]
|
||||||
); // 获取后台设置的文件名称
|
);
|
||||||
document.body.appendChild(a);
|
const fileType =
|
||||||
a.click(); // 点击导出
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
|
||||||
document.body.removeChild(a); // 下载完成移除元素
|
|
||||||
window.URL.revokeObjectURL(href); // 释放掉blob对象
|
const blob = new Blob([fileData], { type: fileType });
|
||||||
|
const downloadUrl = window.URL.createObjectURL(blob);
|
||||||
|
|
||||||
|
const downloadLink = document.createElement("a");
|
||||||
|
downloadLink.href = downloadUrl;
|
||||||
|
downloadLink.download = fileName;
|
||||||
|
|
||||||
|
document.body.appendChild(downloadLink);
|
||||||
|
downloadLink.click();
|
||||||
|
|
||||||
|
document.body.removeChild(downloadLink);
|
||||||
|
window.URL.revokeObjectURL(downloadUrl);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -472,7 +477,7 @@ onMounted(() => {
|
|||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
:inactive-value="0"
|
:inactive-value="0"
|
||||||
:active-value="1"
|
:active-value="1"
|
||||||
@change="handleStatusChange(scope.row)"
|
@change="changeUserStatus(scope.row)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -531,6 +536,7 @@ onMounted(() => {
|
|||||||
append-to-body
|
append-to-body
|
||||||
@close="closeDialog"
|
@close="closeDialog"
|
||||||
>
|
>
|
||||||
|
<!-- 用户新增/编辑表单 -->
|
||||||
<el-form
|
<el-form
|
||||||
v-if="dialog.type === 'user-form'"
|
v-if="dialog.type === 'user-form'"
|
||||||
ref="userFormRef"
|
ref="userFormRef"
|
||||||
@@ -600,6 +606,7 @@ onMounted(() => {
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 用户导入表单 -->
|
||||||
<el-form
|
<el-form
|
||||||
v-else-if="dialog.type === 'user-import'"
|
v-else-if="dialog.type === 'user-import'"
|
||||||
:model="importData"
|
:model="importData"
|
||||||
@@ -640,7 +647,7 @@ onMounted(() => {
|
|||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
<!-- 弹窗底部操作按钮 -->
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button type="primary" @click="handleSubmit">确 定</el-button>
|
<el-button type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
|||||||
Reference in New Issue
Block a user