update:账号管理

This commit is contained in:
ltx 2026-04-13 14:18:06 +08:00
parent dc04a5800f
commit 030397faa3
2 changed files with 40 additions and 42 deletions

View File

@ -136,10 +136,10 @@ const columns = ref([
},
enum: [
{ label: '全部', value: '' },
{ label: '未通过', value: 3 },
{ label: '已通过', value: 2 },
{ label: '未审核', value: 1 },
{ label: '未提交', value: 0 },
{ label: '未审核', value: 1 },
{ label: '已通过', value: 2 },
{ label: '未通过', value: 3 },
],
},
{

View File

@ -1,22 +1,25 @@
<template>
<div class="system-menu-container layout-padding">
<ProTable ref="tableRef" :request-api="sysuserPageGet" :columns="columns" :pagination="true"
:tool-button="true" :initParam="initParam">
<ProTable
v-if="tableReady"
ref="tableRef"
:request-api="sysuserPageGet"
:columns="columns"
:pagination="true"
:tool-button="true"
:initParam="initParam"
>
<template #tools>
<el-button v-auth="'permission:account:add'" type="primary" icon="ele-Plus" @click="onOpenMenu()"> 新增
</el-button>
<el-button v-auth="'permission:account:add'" type="primary" icon="ele-Plus" @click="onOpenMenu()"> 新增 </el-button>
</template>
<template #index="scope">
{{ scope.$index + 1 }}
</template>
<template #action="scope">
<el-button v-auth="'permission:account:edit'" icon="ele-Edit" size="small" text type="primary"
@click="onOpenMenu(scope.row)"> 编辑 </el-button>
<el-button v-auth="'permission:account:edit'" icon="ele-Edit" size="small" text type="primary" @click="onOpenMenu(scope.row)"> 编辑 </el-button>
<el-popconfirm title="确认删除吗?" @confirm="onDeleteMenu(scope.row.id)">
<template #reference>
<el-button v-auth="'permission:account:delete'" icon="ele-Delete" size="small" text
type="danger"> 删除
</el-button>
<el-button v-auth="'permission:account:delete'" icon="ele-Delete" size="small" text type="danger"> 删除 </el-button>
</template>
</el-popconfirm>
</template>
@ -24,9 +27,7 @@
<!-- 弹窗 -->
<el-dialog :title="dialogTitle" v-model="isShowDialog">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="150px"
style="max-width: 600px;margin-bottom: 30px;" v-if="isShowDialog">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="150px" style="max-width: 600px; margin-bottom: 30px" v-if="isShowDialog">
<!-- 商户名称 -->
<el-form-item label="姓名" prop="name">
<el-input v-model="formData.name" placeholder="请输入姓名"></el-input>
@ -49,12 +50,10 @@
<!-- 可用赛事 -->
<el-form-item label="关联角色" prop="roles">
<el-select v-model="formData.roles" placeholder="请选择关联角色" multiple style="width: 100%;">
<el-option v-for="item in eventList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
<el-select v-model="formData.roles" placeholder="请选择关联角色" multiple style="width: 100%">
<el-option v-for="item in eventList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
@ -67,7 +66,7 @@
</template>
<script setup name="sysMenu">
import { defineAsyncComponent, ref, reactive, onMounted, computed } from 'vue';
import { defineAsyncComponent, ref, reactive, onMounted, computed, nextTick } from 'vue';
import { ElMessage, ElForm } from 'element-plus';
import SysMenuApi from '/@/api/SysMenuApi';
import { auths } from '/@/utils/authFunction';
@ -78,14 +77,15 @@ import { sysroleSelectGet } from '/@/api/match/role';
// 定义表单引用类型
const formRef = ref();
const eventList = ref([]);
const tableReady = ref(false);
const formData = ref({
name: '',
account: '',
password: '',
confirmPassword: '',
roles: []
})
const initParam = ref(true)
roles: [],
});
const initParam = ref(true);
// 确认密码验证
const validateConfirmPassword = (rule, value, callback) => {
@ -101,25 +101,19 @@ const validateConfirmPassword = (rule, value, callback) => {
const formRules = computed(() => {
const rules = {
name: [
{ required: true, message: '姓名', trigger: 'blur' }
],
account: [
{ required: true, message: '请输入账号', trigger: 'blur' }
],
name: [{ required: true, message: '姓名', trigger: 'blur' }],
account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
};
// 只有新增时才需要验证密码和确认密码
if (!isEdit.value) {
rules.password = [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ min: 6, max: 32, message: '密码长度在 6 到 32 个字符', trigger: 'blur' }
];
rules.confirmPassword = [
{ required: true, validator: validateConfirmPassword, trigger: 'blur' }
{ min: 6, max: 32, message: '密码长度在 6 到 32 个字符', trigger: 'blur' },
];
rules.confirmPassword = [{ required: true, validator: validateConfirmPassword, trigger: 'blur' }];
}
return rules;
});
@ -157,8 +151,8 @@ const columns = ref([
isShow: false,
search: {
el: 'select',
enum: [],
},
enum: [],
},
{ prop: 'createdTime', label: '生成时间', search: { el: 'date-picker', props: { type: 'daterange' } }, minWidth: 160 },
@ -170,7 +164,6 @@ const dialogTitle = ref('新增');
const isEdit = ref(false);
const onOpenMenu = async (row) => {
dialogTitle.value = row ? '编辑' : '新增';
isEdit.value = !!row;
if (row) {
@ -182,7 +175,7 @@ const onOpenMenu = async (row) => {
account: data.account,
password: '',
confirmPassword: '',
roles: data.roles || []
roles: data.roles || [],
};
} else {
formData.value = {
@ -190,7 +183,7 @@ const onOpenMenu = async (row) => {
account: '',
password: '',
confirmPassword: '',
roles: []
roles: [],
};
}
isShowDialog.value = true;
@ -244,21 +237,26 @@ const onCancel = () => {
};
onMounted(async () => {
tableReady.value = false;
try {
const result = await sysroleSelectGet();
console.log('获取的角色数据:', result);
if (result.succeeded && result.data) {
columns.value[4].search.enum = result.data;
columns.value[4].enum = result.data;
console.log('获取的角色数据:', columns.value[4].enum);
eventList.value = result.data;
await nextTick();
tableReady.value = true;
} else {
ElMessage.error(result.errors || '获取角色数据失败');
tableReady.value = true;
}
} catch (error) {
console.error('获取角色数据时发生错误:', error);
ElMessage.error('获取角色数据时发生错误,请稍后重试');
tableReady.value = true;
}
});
</script>
<style scoped lang="scss">
.dialog-footer {
@ -308,4 +306,4 @@ onMounted(async () => {
height: 178px;
text-align: center;
}
</style>
</style>