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: [ enum: [
{ label: '全部', value: '' }, { label: '全部', value: '' },
{ label: '未通过', value: 3 },
{ label: '已通过', value: 2 },
{ label: '未审核', value: 1 },
{ label: '未提交', value: 0 }, { label: '未提交', value: 0 },
{ label: '未审核', value: 1 },
{ label: '已通过', value: 2 },
{ label: '未通过', value: 3 },
], ],
}, },
{ {

View File

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