半自动+人工”链路已经落下第一版

This commit is contained in:
yml
2026-04-12 19:07:51 +08:00
parent 4c98b78267
commit 75647e9eed
24 changed files with 711 additions and 93 deletions
@@ -37,6 +37,18 @@ function isCurrentUser(userId: number) {
return getAdminUserId() === userId
}
function formatRoleLabel(role: AdminRole) {
if (role === 'admin') {
return '管理员'
}
if (role === 'support') {
return '客服'
}
return '普通运营'
}
async function loadUsers(page = pagination.value.page) {
if (!hasAdminRole('admin')) {
loading.value = false
@@ -90,11 +102,13 @@ async function submitCreate() {
}
}
async function toggleRole(item: AdminUserListItem) {
const nextRole: AdminRole = item.role === 'admin' ? 'operator' : 'admin'
async function updateRole(item: AdminUserListItem, nextRole: AdminRole) {
if (item.role === nextRole) {
return
}
try {
await showConfirm(`确认将 ${item.username} 调整为${nextRole === 'admin' ? '管理员' : '普通运营'}吗?`, '确认操作', {
await showConfirm(`确认将 ${item.username} 调整为${formatRoleLabel(nextRole)}吗?`, '确认操作', {
type: 'warning',
confirmButtonText: '继续执行',
cancelButtonText: '取消',
@@ -202,6 +216,7 @@ onMounted(loadUsers)
<input v-model="createPassword" class="text-input" type="password" placeholder="新密码,至少 8 位" />
<select v-model="createRole" class="text-input select-input">
<option value="operator">普通运营</option>
<option value="support">客服</option>
<option value="admin">管理员</option>
</select>
<el-button :loading="creating" round type="primary" @click="submitCreate">新增用户</el-button>
@@ -228,7 +243,7 @@ onMounted(loadUsers)
<tr v-for="item in items" :key="item.userId">
<td>{{ item.userId }}</td>
<td>{{ item.username }}</td>
<td>{{ item.role === 'admin' ? '管理员' : '普通运营' }}</td>
<td>{{ formatRoleLabel(item.role) }}</td>
<td><AdminStatusTag :status="item.status" /></td>
<td>{{ formatAdminDateTime(item.createdAt) }}</td>
<td>{{ formatAdminDateTime(item.updatedAt) }}</td>
@@ -238,9 +253,25 @@ onMounted(loadUsers)
:loading="actionLoadingId === item.userId"
link
:disabled="isCurrentUser(item.userId)"
@click="toggleRole(item)"
@click="updateRole(item, 'admin')"
>
{{ item.role === 'admin' ? '设为运营' : '设为管理员' }}
设为管理员
</el-button>
<el-button
:loading="actionLoadingId === item.userId"
link
:disabled="isCurrentUser(item.userId)"
@click="updateRole(item, 'operator')"
>
设为运营
</el-button>
<el-button
:loading="actionLoadingId === item.userId"
link
:disabled="isCurrentUser(item.userId)"
@click="updateRole(item, 'support')"
>
设为客服
</el-button>
<el-button
:loading="actionLoadingId === item.userId"