fix: merge table rows of members
parent
327b6cc563
commit
78bfee7c53
|
|
@ -29,12 +29,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<app-table
|
<app-table
|
||||||
class="mt-16"
|
class="member-table mt-16"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
:pagination-config="paginationConfig"
|
:pagination-config="paginationConfig"
|
||||||
@sizeChange="handleSizeChange"
|
@sizeChange="handleSizeChange"
|
||||||
@changePage="getList"
|
@changePage="getList"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
|
:span-method="objectSpanMethod"
|
||||||
>
|
>
|
||||||
<el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
|
<el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
|
||||||
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
|
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
|
||||||
|
|
@ -135,6 +136,23 @@ watch(
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const objectSpanMethod = ({ row, column, rowIndex, columnIndex }: any) => {
|
||||||
|
if (column.property === 'nick_name' || column.property === 'username') {
|
||||||
|
const sameUserRows = tableData.value.filter(item => item.user_id === row.user_id);
|
||||||
|
if (rowIndex === tableData.value.findIndex(item => item.user_id === row.user_id)) {
|
||||||
|
return {
|
||||||
|
rowspan: sameUserRows.length,
|
||||||
|
colspan: 1
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
rowspan: 0,
|
||||||
|
colspan: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const addMemberDrawerRef = ref<InstanceType<typeof AddMemberDrawer>>()
|
const addMemberDrawerRef = ref<InstanceType<typeof AddMemberDrawer>>()
|
||||||
|
|
||||||
function handleAdd() {
|
function handleAdd() {
|
||||||
|
|
@ -158,3 +176,9 @@ function handleDelete(row: RoleMemberItem) {
|
||||||
.catch(() => {})
|
.catch(() => {})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.member-table :deep(.el-table__cell):nth-child(2) {
|
||||||
|
border-right: 1px solid var(--el-table-border-color);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 删除按钮 -->
|
<!-- 删除按钮 -->
|
||||||
<el-button @click="handleDelete(index)" text
|
<el-button :disabled="props.keepOneLine && form.length === 1" @click="handleDelete(index)" text
|
||||||
:style="{ 'margin-top': index === 0 && props.models.some((item) => item.label) ? '30px' : '' }">
|
:style="{ 'margin-top': index === 0 && props.models.some((item) => item.label) ? '30px' : '' }">
|
||||||
<el-icon>
|
<el-icon>
|
||||||
<Delete />
|
<Delete />
|
||||||
|
|
@ -38,6 +38,7 @@ import type { FormItemModel } from '@/api/type/role'
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
models: FormItemModel[];
|
models: FormItemModel[];
|
||||||
addText?: string;
|
addText?: string;
|
||||||
|
keepOneLine?: boolean; // 至少保留一行
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@
|
||||||
{{ $t('views.userManage.roleSetting') }}</h4>
|
{{ $t('views.userManage.roleSetting') }}</h4>
|
||||||
<MemberFormContent ref="memberFormContentRef" :models="formItemModel" v-model:form="list"
|
<MemberFormContent ref="memberFormContentRef" :models="formItemModel" v-model:form="list"
|
||||||
v-loading="memberFormContentLoading"
|
v-loading="memberFormContentLoading"
|
||||||
|
keepOneLine
|
||||||
:addText="$t('views.userManage.addRole')" v-if="user.isEE() || user.isPE()"/>
|
:addText="$t('views.userManage.addRole')" v-if="user.isEE() || user.isPE()"/>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click.prevent="visible = false"> {{ $t('common.cancel') }}</el-button>
|
<el-button @click.prevent="visible = false"> {{ $t('common.cancel') }}</el-button>
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,8 @@
|
||||||
@sizeChange="handleSizeChange"
|
@sizeChange="handleSizeChange"
|
||||||
@changePage="getList"
|
@changePage="getList"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
|
class="member-table"
|
||||||
|
:span-method="objectSpanMethod"
|
||||||
>
|
>
|
||||||
<el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
|
<el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
|
||||||
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
|
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
|
||||||
|
|
@ -131,6 +133,23 @@ watch(
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const objectSpanMethod = ({ row, column, rowIndex, columnIndex }: any) => {
|
||||||
|
if (column.property === 'nick_name' || column.property === 'username') {
|
||||||
|
const sameUserRows = tableData.value.filter(item => item.user_id === row.user_id);
|
||||||
|
if (rowIndex === tableData.value.findIndex(item => item.user_id === row.user_id)) {
|
||||||
|
return {
|
||||||
|
rowspan: sameUserRows.length,
|
||||||
|
colspan: 1
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
rowspan: 0,
|
||||||
|
colspan: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const addMemberDrawerRef = ref<InstanceType<typeof AddMemberDrawer>>()
|
const addMemberDrawerRef = ref<InstanceType<typeof AddMemberDrawer>>()
|
||||||
function handleAdd() {
|
function handleAdd() {
|
||||||
addMemberDrawerRef.value?.open()
|
addMemberDrawerRef.value?.open()
|
||||||
|
|
@ -155,3 +174,10 @@ function handleDelete(row: WorkspaceMemberItem) {
|
||||||
.catch(() => {})
|
.catch(() => {})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.member-table :deep(.el-table__cell):nth-child(2) {
|
||||||
|
border-right: 1px solid var(--el-table-border-color);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue