refactor: ♻️ 用户代码重构优化
Former-commit-id: e25812358a829075d00af324c815831a52070bb4
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user