import { computed, reactive, ref } from 'vue' import { ElMessage } from 'element-plus' import { roleData } from '../../../data/roles' import { demoAdminUsers } from '../data/adminUsers' export function useAdminUsers() { const keyword = ref('') const roleFilter = ref('') const currentPage = ref(1) const pageSize = ref(10) const dialogVisible = ref(false) const form = reactive({ username: '', name: '', role: '', ipWhitelist: '' }) const users = ref(demoAdminUsers.map((user) => ({ ...user }))) const filtered = computed(() => users.value.filter((user) => { const query = keyword.value.trim().toLowerCase() const matchesKeyword = !query || `${user.id} ${user.username} ${user.name}`.toLowerCase().includes(query) return matchesKeyword && (!roleFilter.value || user.role === roleFilter.value) }) ) const paginated = computed(() => filtered.value.slice( (currentPage.value - 1) * pageSize.value, currentPage.value * pageSize.value ) ) function queryUsers() { currentPage.value = 1 } function toggleStatus(user) { user.status = user.status === '启用' ? '停用' : '启用' } function addUser() { if (!form.username.trim() || !form.name.trim() || !form.role) return ElMessage.warning('请填写用户名、姓名并选择权限角色') const role = roleData.find((item) => item.name === form.role) users.value.unshift({ id: Math.max(0, ...users.value.map((user) => user.id)) + 1, username: form.username.trim(), name: form.name.trim(), roleId: role?.id || 0, role: form.role, ipWhitelist: form.ipWhitelist.trim() || '不限', status: '启用', twoFactor: '未开启', createdAt: new Date().toLocaleString('sv-SE'), lastLogin: '—' }) Object.assign(form, { username: '', name: '', role: '', ipWhitelist: '' }) dialogVisible.value = false currentPage.value = 1 ElMessage.success('管理员已添加') } return { keyword, roleFilter, currentPage, pageSize, dialogVisible, form, users, filtered, paginated, queryUsers, toggleStatus, addUser } }