This commit is contained in:
parent
1c41156c0d
commit
38cf0ef624
@ -106,6 +106,7 @@ export function useAccountGroups(globalStatus, onMembershipSaved = () => {}) {
|
||||
if (response?.errorNo !== 0) throw new Error(response?.errorMsg || '保存分组失败')
|
||||
ElMessage.success('账号分组已保存')
|
||||
await refreshGroups()
|
||||
return response.data || null
|
||||
} catch (error) {
|
||||
if (error !== 'cancel' && error !== 'close' && !isRecentAuthenticationCancelled(error)) ElMessage.error(error?.message || '保存分组失败')
|
||||
} finally {
|
||||
@ -113,6 +114,19 @@ export function useAccountGroups(globalStatus, onMembershipSaved = () => {}) {
|
||||
}
|
||||
}
|
||||
|
||||
const createMembershipGroup = async () => {
|
||||
if (!membershipVisible.value || !canManageGroups.value || groupSaving.value) return
|
||||
const group = await saveGroup()
|
||||
if (!group?.id) return
|
||||
if (membershipLimit.value === 1) {
|
||||
membershipSelection.value = [group.id]
|
||||
return
|
||||
}
|
||||
const selectedGroups = membershipSelection.value.filter(id => id !== 0)
|
||||
if (!selectedGroups.includes(group.id)) selectedGroups.push(group.id)
|
||||
membershipSelection.value = selectedGroups
|
||||
}
|
||||
|
||||
const editMembership = (user, options = {}) => {
|
||||
if (!canManageGroups.value || groupSaving.value) return
|
||||
membershipUser.value = { ...user, Role: options.role || user.Role }
|
||||
@ -163,6 +177,6 @@ export function useAccountGroups(globalStatus, onMembershipSaved = () => {}) {
|
||||
accountGroups, groupsLoading, groupsError, canManageGroups, groupSaving,
|
||||
membershipVisible, membershipUser, membershipSelection, membershipLimit,
|
||||
membershipDraft, membershipSingleSelection,
|
||||
refreshGroups, loadGroup, toggleGroup, saveGroup, editMembership, saveMembership
|
||||
refreshGroups, loadGroup, toggleGroup, saveGroup, createMembershipGroup, editMembership, saveMembership
|
||||
}
|
||||
}
|
||||
|
||||
@ -224,6 +224,21 @@
|
||||
background: var(--pm-bg-secondary);
|
||||
}
|
||||
|
||||
.membership-selector-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
margin-bottom: 8px;
|
||||
color: var(--pm-text-secondary);
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.membership-selector-header :deep(.el-button) {
|
||||
flex: 0 0 auto;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.membership-option {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -121,6 +121,19 @@
|
||||
<p>账号:{{ membershipUser?.Account }}</p>
|
||||
<el-form label-position="top">
|
||||
<el-form-item label="所属分组">
|
||||
<div class="membership-selector-header">
|
||||
<span>{{ membershipLimit > 1 ? '可选择多个分组' : '只能选择一个分组' }}</span>
|
||||
<el-button
|
||||
v-if="canManageGroups"
|
||||
type="primary"
|
||||
text
|
||||
size="small"
|
||||
:disabled="groupSaving"
|
||||
@click="createMembershipGroup"
|
||||
>
|
||||
新建分组
|
||||
</el-button>
|
||||
</div>
|
||||
<fieldset
|
||||
class="membership-options"
|
||||
:aria-label="membershipLimit > 1 ? '所属分组(可多选)' : '所属分组(单选)'"
|
||||
@ -358,6 +371,7 @@ const {
|
||||
membershipLimit,
|
||||
membershipDraft,
|
||||
membershipSingleSelection,
|
||||
createMembershipGroup,
|
||||
loadGroup,
|
||||
toggleGroup,
|
||||
saveGroup,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user