style(全局): 修改所有容器页面边距为16px并调整用例管理和用例评审创建风格

This commit is contained in:
xinxin.wu 2024-04-24 19:17:59 +08:00 committed by 刘瑞斌
parent cc22096cd4
commit 9db5b6f79a
29 changed files with 247 additions and 233 deletions

View File

@ -1,5 +1,5 @@
<template>
<div class="flex h-full flex-col gap-[24px] overflow-hidden">
<div class="flex h-full flex-col gap-[16px] overflow-hidden">
<div class="group-auth-table">
<a-table
:span-method="dataSpanMethod"
@ -488,7 +488,7 @@
.group-auth-table {
@apply flex-1 overflow-hidden;
padding: 0 24px;
padding: 0 16px;
:deep(.arco-table-container) {
border-top: 1px solid var(--color-text-n8) !important;
border-left: 1px solid var(--color-text-n8) !important;

View File

@ -1,6 +1,6 @@
<template>
<div class="flex flex-col px-[24px] pb-[24px]">
<div class="sticky top-0 z-[999] bg-white pb-[8px] pt-[24px]">
<div class="flex flex-col px-[16px] pb-[16px]">
<div class="sticky top-0 z-[999] bg-white pb-[8px] pt-[16px]">
<a-input-search
:placeholder="t('system.userGroup.searchHolder')"
allow-clear

View File

@ -1,5 +1,5 @@
<template>
<div class="px-[24px]">
<div class="px-[16px]">
<MsBaseTable v-bind="propsRes" v-on="propsEvent">
<template v-if="hasAnyPermission(props.updatePermission || [])" #quickCreate>
<MsConfirmUserSelector :ok-loading="okLoading" v-bind="userSelectorProps" @confirm="handleAddMember" />

View File

@ -7,7 +7,7 @@
'relative',
props.isFullscreen || isFullScreen ? 'ms-card--fullScreen' : '',
props.autoHeight ? '' : 'h-full min-h-[500px]',
props.noContentPadding ? 'ms-card--noContentPadding' : 'p-[24px]',
props.noContentPadding ? 'ms-card--noContentPadding' : 'p-[16px]',
props.noBottomRadius ? 'ms-card--noBottomRadius' : '',
!props.hideFooter && !props.simple ? 'pb-[24px]' : '',
]"
@ -36,7 +36,7 @@
</div>
</div>
</a-scrollbar>
<div :class="{ 'px-[24px]': props.dividerHasPX }">
<div :class="{ 'px-[16px]': props.dividerHasPX }">
<a-divider v-if="!props.simple && !props.hideDivider" class="mb-[16px] mt-0" />
</div>
<div class="ms-card-container">
@ -195,7 +195,7 @@
&--noContentPadding {
border-radius: var(--border-radius-large);
.ms-card-header {
padding: 24px 24px 16px;
padding: 16px;
}
.arco-divider {
@apply mb-0;

View File

@ -16,6 +16,7 @@ export default {
'common.disable': 'Disable',
'common.close': 'Close',
'common.create': 'Create',
'common.newCreate': 'Create',
'common.update': 'Update',
'common.all': 'All',
'common.operation': 'Operation',

View File

@ -16,6 +16,7 @@ export default {
'common.disable': '禁用',
'common.close': '关闭',
'common.create': '创建',
'common.newCreate': '新建',
'common.update': '更新',
'common.all': '全部',
'common.operation': '操作',

View File

@ -59,7 +59,7 @@
</div>
<a-spin
:loading="props.loading"
:class="[isResponseModel ? 'h-[381px] w-full' : 'h-[calc(100%-35px)] w-full px-[18px] pb-[18px]']"
:class="[isResponseModel ? 'h-[381px] w-full' : 'h-[calc(100%-35px)] w-full px-[16px] pb-[16px]']"
>
<edit
v-if="props.isEdit && activeResponseType === 'content' && innerResponseDefinition"

View File

@ -1,6 +1,6 @@
<template>
<div :class="['p-[8px_16px]', props.class]">
<div class="mb-[8px] flex items-center justify-between">
<div class="mb-[16px] flex items-center justify-between">
<div class="flex items-center"> </div>
<div class="items-right flex gap-[8px]">
<a-input-search

View File

@ -361,7 +361,7 @@
};
}
return {
height: 'calc(100vh - 280px)',
height: 'calc(100vh - 240px)',
threshold: 200,
fixedSize: true,
buffer: 15,

View File

@ -1,113 +1,116 @@
<template>
<MsCard simple no-content-padding>
<div class="flex items-center border-b border-[var(--color-text-n8)] p-[8px_24px]">
<a-button v-permission="['FUNCTIONAL_CASE:READ+ADD']" type="primary" @click="caseDetail">
{{ t('caseManagement.featureCase.creatingCase') }}
</a-button>
<a-button v-permission="['FUNCTIONAL_CASE:READ+IMPORT']" class="mx-3" type="outline" @click="importCase('Excel')">
{{ t('caseManagement.featureCase.importExcel') }}
</a-button>
<!-- <a-button type="outline" @click="importCase('Xmind')">
{{ t('caseManagement.featureCase.importXmind') }}
</a-button> -->
</div>
<div class="pageWrap relative h-[calc(100%-49px)]">
<MsSplitBox>
<template #first>
<div class="p-[8px_24px] pb-0">
<div class="feature-case h-[100%]">
<a-input-search
<MsSplitBox>
<template #first>
<div class="p-[16px] pb-0">
<div class="feature-case h-[100%]">
<div class="mb-[16px] flex justify-between">
<a-input
v-model:model-value="groupKeyword"
:placeholder="t('caseManagement.featureCase.searchTip')"
:placeholder="t('caseManagement.caseReview.folderSearchPlaceholder')"
allow-clear
class="mb-[16px]"
></a-input-search>
<div class="case h-[38px]">
<div class="flex items-center" :class="getActiveClass('all')" @click="setActiveFolder('all')">
<MsIcon type="icon-icon_folder_filled1" class="folder-icon" />
<div class="folder-name mx-[4px]">{{ t('caseManagement.featureCase.allCase') }}</div>
<div class="folder-count">({{ modulesCount.all || 0 }})</div></div
>
<div class="ml-auto flex items-center">
<a-tooltip
:content="
isExpandAll ? t('project.fileManagement.collapseAll') : t('project.fileManagement.expandAll')
"
>
<MsButton type="icon" status="secondary" class="!mr-0 p-[4px]" @click="expandHandler">
<MsIcon :type="isExpandAll ? 'icon-icon_folder_collapse1' : 'icon-icon_folder_expansion1'" />
</MsButton>
</a-tooltip>
<MsPopConfirm
v-if="hasAnyPermission(['FUNCTIONAL_CASE:READ+ADD'])"
ref="confirmRef"
v-model:visible="addSubVisible"
:is-delete="false"
:title="t('caseManagement.featureCase.addSubModule')"
:all-names="rootModulesName"
:loading="confirmLoading"
:ok-text="t('common.confirm')"
:field-config="{
placeholder: t('caseManagement.featureCase.addGroupTip'),
}"
@confirm="confirmHandler"
>
<MsButton type="icon" class="!mr-0 p-[2px]">
<MsIcon
type="icon-icon_create_planarity"
size="18"
class="text-[rgb(var(--primary-5))] hover:text-[rgb(var(--primary-4))]"
/>
</MsButton>
</MsPopConfirm>
</div>
</div>
<a-divider class="my-[8px]" />
<FeatureCaseTree
ref="caseTreeRef"
v-model:selected-keys="selectedKeys"
v-model:group-keyword="groupKeyword"
:all-names="rootModulesName"
:active-folder="activeFolder"
:is-expand-all="isExpandAll"
:modules-count="modulesCount"
:is-modal="false"
@case-node-select="caseNodeSelect"
@init="setRootModules"
@drag-update="dragUpdate"
></FeatureCaseTree>
:max-length="255"
/>
<a-dropdown position="br">
<a-button class="ml-2" type="primary">
{{ t('common.newCreate') }}
</a-button>
<template #content>
<a-doption v-permission="['FUNCTIONAL_CASE:READ+ADD']" @click="caseDetail">{{
t('caseManagement.featureCase.creatingCase')
}}</a-doption>
<a-doption v-permission="['FUNCTIONAL_CASE:READ+IMPORT']" @click="importCase('Excel')">{{
t('caseManagement.featureCase.importExcel')
}}</a-doption>
</template>
</a-dropdown>
</div>
</div>
<div class="flex-1">
<a-divider class="!my-0 !mb-0" />
<div class="case">
<div
class="flex items-center px-[20px]"
:class="getActiveClass('recycle')"
@click="setActiveFolder('recycle')"
<div class="case h-[38px]">
<div class="flex items-center" :class="getActiveClass('all')" @click="setActiveFolder('all')">
<MsIcon type="icon-icon_folder_filled1" class="folder-icon" />
<div class="folder-name mx-[4px]">{{ t('caseManagement.featureCase.allCase') }}</div>
<div class="folder-count">({{ modulesCount.all || 0 }})</div></div
>
<MsIcon type="icon-icon_delete-trash_outlined" class="folder-icon" />
<div class="folder-name mx-[4px]">{{ t('caseManagement.featureCase.recycle') }}</div>
<div class="folder-count">({{ recycleModulesCount.all || 0 }})</div>
<div class="ml-auto flex items-center">
<a-tooltip
:content="
isExpandAll ? t('project.fileManagement.collapseAll') : t('project.fileManagement.expandAll')
"
>
<MsButton type="icon" status="secondary" class="!mr-0 p-[4px]" @click="expandHandler">
<MsIcon :type="isExpandAll ? 'icon-icon_folder_collapse1' : 'icon-icon_folder_expansion1'" />
</MsButton>
</a-tooltip>
<MsPopConfirm
v-if="hasAnyPermission(['FUNCTIONAL_CASE:READ+ADD'])"
ref="confirmRef"
v-model:visible="addSubVisible"
:is-delete="false"
:title="t('caseManagement.featureCase.addSubModule')"
:all-names="rootModulesName"
:loading="confirmLoading"
:ok-text="t('common.confirm')"
:field-config="{
placeholder: t('caseManagement.featureCase.addGroupTip'),
}"
@confirm="confirmHandler"
>
<MsButton type="icon" class="!mr-0 p-[2px]">
<MsIcon
type="icon-icon_create_planarity"
size="18"
class="text-[rgb(var(--primary-5))] hover:text-[rgb(var(--primary-4))]"
/>
</MsButton>
</MsPopConfirm>
</div>
</div>
</div>
</template>
<template #second>
<div class="p-[8px_24px]">
<CaseTable
ref="caseTableRef"
<a-divider class="my-[8px]" />
<FeatureCaseTree
ref="caseTreeRef"
v-model:selected-keys="selectedKeys"
v-model:group-keyword="groupKeyword"
:all-names="rootModulesName"
:active-folder="activeFolder"
:offspring-ids="offspringIds"
:active-folder-type="activeCaseType"
:is-expand-all="isExpandAll"
:modules-count="modulesCount"
@init="initModulesCount"
@import="importCase"
></CaseTable>
:is-modal="false"
@case-node-select="caseNodeSelect"
@init="setRootModules"
@drag-update="dragUpdate"
></FeatureCaseTree>
</div>
</template>
</MsSplitBox>
</div>
</div>
<div class="flex-1">
<a-divider class="!my-0 !mb-0" />
<div class="case">
<div
class="flex items-center px-[20px]"
:class="getActiveClass('recycle')"
@click="setActiveFolder('recycle')"
>
<MsIcon type="icon-icon_delete-trash_outlined" class="folder-icon" />
<div class="folder-name mx-[4px]">{{ t('caseManagement.featureCase.recycle') }}</div>
<div class="folder-count">({{ recycleModulesCount.all || 0 }})</div>
</div>
</div>
</div>
</template>
<template #second>
<div class="p-[16px_16px]">
<CaseTable
ref="caseTableRef"
:active-folder="activeFolder"
:offspring-ids="offspringIds"
:active-folder-type="activeCaseType"
:modules-count="modulesCount"
@init="initModulesCount"
@import="importCase"
></CaseTable>
</div>
</template>
</MsSplitBox>
</MsCard>
<!-- </div> -->
<ExportExcelModal
@ -411,47 +414,42 @@
</script>
<style scoped lang="less">
.pageWrap {
min-width: 1000px;
border-radius: var(--border-radius-large);
@apply bg-white;
.case {
padding: 8px 4px;
border-radius: var(--border-radius-small);
@apply flex cursor-pointer items-center justify-between;
&:hover {
background-color: rgb(var(--primary-1));
}
.folder-icon {
margin-right: 4px;
color: var(--color-text-4);
}
.folder-name {
color: var(--color-text-1);
}
.case {
padding: 8px 4px;
border-radius: var(--border-radius-small);
@apply flex cursor-pointer items-center justify-between;
&:hover {
background-color: rgb(var(--primary-1));
}
.folder-icon {
margin-right: 4px;
color: var(--color-text-4);
}
.folder-name {
color: var(--color-text-1);
}
.folder-count {
margin-left: 4px;
color: var(--color-text-4);
}
.case-active {
.folder-icon,
.folder-name,
.folder-count {
margin-left: 4px;
color: var(--color-text-4);
color: rgb(var(--primary-5));
}
.case-active {
.folder-icon,
.folder-name,
.folder-count {
color: rgb(var(--primary-5));
}
}
.back {
margin-right: 8px;
width: 20px;
height: 20px;
border: 1px solid #ffffff;
background: linear-gradient(90deg, rgb(var(--primary-9)) 3.36%, #ffffff 100%);
box-shadow: 0 0 7px rgb(15 0 78 / 9%);
.arco-icon {
color: rgb(var(--primary-5));
}
@apply flex cursor-pointer items-center rounded-full;
}
.back {
margin-right: 8px;
width: 20px;
height: 20px;
border: 1px solid #ffffff;
background: linear-gradient(90deg, rgb(var(--primary-9)) 3.36%, #ffffff 100%);
box-shadow: 0 0 7px rgb(15 0 78 / 9%);
.arco-icon {
color: rgb(var(--primary-5));
}
@apply flex cursor-pointer items-center rounded-full;
}
}
.recycle {

View File

@ -1,12 +1,17 @@
<template>
<div>
<a-input
v-model:model-value="moduleKeyword"
:placeholder="t('caseManagement.caseReview.folderSearchPlaceholder')"
allow-clear
class="mb-[16px]"
:max-length="255"
/>
<div class="mb-[16px] flex justify-between">
<a-input
v-model:model-value="moduleKeyword"
:placeholder="t('caseManagement.caseReview.folderSearchPlaceholder')"
allow-clear
:max-length="255"
/>
<a-button v-permission="['CASE_REVIEW:READ+ADD']" class="ml-2" type="primary" @click="emit('create')">
{{ t('common.newCreate') }}
</a-button>
</div>
<div v-if="!props.isModal" class="folder">
<div :class="getFolderClass('all')" @click="setActiveFolder('all')">
<MsIcon type="icon-icon_folder_filled1" class="folder-icon" />
@ -19,7 +24,13 @@
<MsIcon :type="isExpandAll ? 'icon-icon_folder_collapse1' : 'icon-icon_folder_expansion1'" />
</MsButton>
</a-tooltip>
<popConfirm v-if="hasAnyPermission(['CASE_REVIEW:READ+UPDATE'])" mode="add" :all-names="rootModulesName" parent-id="NONE" @add-finish="() => initModules()">
<popConfirm
v-if="hasAnyPermission(['CASE_REVIEW:READ+UPDATE'])"
mode="add"
:all-names="rootModulesName"
parent-id="NONE"
@add-finish="() => initModules()"
>
<MsButton type="icon" class="!mr-0 p-[2px]">
<MsIcon
type="icon-icon_create_planarity"
@ -121,7 +132,7 @@
modulesCount?: Record<string, number>; //
isExpandAll?: boolean; //
}>();
const emit = defineEmits(['init', 'folderNodeSelect']);
const emit = defineEmits(['init', 'folderNodeSelect', 'create']);
const appStore = useAppStore();
const { t } = useI18n();

View File

@ -1,6 +1,6 @@
<template>
<div class="px-[24px] py-[8px]">
<div class="mb-[8px]">
<div class="p-[16px]">
<div class="mb-[16px]">
<MsAdvanceFilter
v-model:keyword="keyword"
:filter-config-list="filterConfigList"
@ -11,10 +11,15 @@
@refresh="searchReview"
>
<template #left>
<div class="flex items-center">
<!-- <div class="flex items-center">
<div class="mr-[4px] text-[var(--color-text-1)]">{{ t('caseManagement.caseReview.allReviews') }}</div>
<div class="text-[var(--color-text-4)]">({{ propsRes.msPagination?.total }})</div>
</div>
</div> -->
<a-radio-group v-model:model-value="innerShowType" type="button" class="file-show-type">
<a-radio value="all">{{ t('common.all') }}</a-radio>
<a-radio value="reviewByMe">{{ t('caseManagement.caseReview.waitMyReview') }}</a-radio>
<a-radio value="createByMe">{{ t('caseManagement.caseReview.myCreate') }}</a-radio>
</a-radio-group>
</template>
</MsAdvanceFilter>
</div>
@ -193,6 +198,7 @@
<script setup lang="ts">
import { onBeforeMount } from 'vue';
import { useRouter } from 'vue-router';
import { useVModel } from '@vueuse/core';
import { Message } from '@arco-design/web-vue';
import dayjs from 'dayjs';
@ -262,6 +268,8 @@
const reviewersFilters = ref<string[]>([]);
const reviewersFilterVisible = ref(false);
const innerShowType = useVModel(props, 'showType', emit);
onBeforeMount(async () => {
try {
const [userRes, memberRes] = await Promise.all([
@ -543,8 +551,8 @@
keyword: keyword.value,
projectId: appStore.currentProjectId,
moduleIds,
createByMe: props.showType === 'createByMe' ? userStore.id : undefined,
reviewByMe: props.showType === 'reviewByMe' ? userStore.id : undefined,
createByMe: innerShowType.value === 'createByMe' ? userStore.id : undefined,
reviewByMe: innerShowType.value === 'reviewByMe' ? userStore.id : undefined,
filter: { status: statusFilters.value, reviewers: reviewersFilters.value },
combine: filter
? {
@ -569,7 +577,7 @@
});
watch(
() => props.showType,
() => innerShowType.value,
() => {
searchReview();
}

View File

@ -1,42 +1,31 @@
<template>
<MsCard simple no-content-padding>
<div class="flex items-center justify-between border-b border-[var(--color-text-n8)] p-[8px_24px]">
<a-button v-permission="['CASE_REVIEW:READ+ADD']" type="primary" @click="goCreateReview">
{{ t('caseManagement.caseReview.create') }}
</a-button>
<a-radio-group v-model:model-value="showType" type="button" class="file-show-type">
<a-radio value="all">{{ t('common.all') }}</a-radio>
<a-radio value="reviewByMe">{{ t('caseManagement.caseReview.waitMyReview') }}</a-radio>
<a-radio value="createByMe">{{ t('caseManagement.caseReview.myCreate') }}</a-radio>
</a-radio-group>
</div>
<div class="relative h-[calc(100%-49px)]">
<MsSplitBox>
<template #first>
<div class="px-[24px] py-[16px]">
<ModuleTree
ref="folderTreeRef"
:show-type="showType"
:modules-count="modulesCount"
:is-expand-all="true"
@folder-node-select="handleFolderNodeSelect"
@init="initModuleTree"
/>
</div>
</template>
<template #second>
<ReviewTable
:active-folder="activeFolderId"
:module-tree="moduleTree"
:tree-path-map="moduleTreePathMap"
<MsSplitBox>
<template #first>
<div class="p-[16px]">
<ModuleTree
ref="folderTreeRef"
:show-type="showType"
:offspring-ids="offspringIds"
@go-create="goCreateReview"
@init="initModuleCount"
:modules-count="modulesCount"
:is-expand-all="true"
@folder-node-select="handleFolderNodeSelect"
@init="initModuleTree"
@create="goCreateReview"
/>
</template>
</MsSplitBox>
</div>
</div>
</template>
<template #second>
<ReviewTable
v-model:show-type="showType"
:active-folder="activeFolderId"
:module-tree="moduleTree"
:tree-path-map="moduleTreePathMap"
:offspring-ids="offspringIds"
@go-create="goCreateReview"
@init="initModuleCount"
/>
</template>
</MsSplitBox>
</MsCard>
</template>

View File

@ -128,7 +128,7 @@
<style lang="less" scoped>
.page {
transform: scale3d(1, 1, 1);
padding: 24px;
padding: 16px;
.no-content {
:deep(.arco-tabs-content) {
padding-top: 0;

View File

@ -208,7 +208,7 @@
height: 100%;
.header {
overflow-y: auto;
padding: 24px 24px 0;
padding: 16px 16px 0;
max-height: calc(100% - 100px);
background-color: #ffffff;
}
@ -219,7 +219,7 @@
z-index: 999;
display: flex;
justify-content: flex-end;
padding: 24px;
padding: 16px;
background-color: #ffffff;
box-shadow: 0 -1px 4px rgb(2 2 2 / 10%);
gap: 16px;

View File

@ -325,11 +325,11 @@
transform: scale3d(1, 1, 1);
height: 100%;
.header {
padding: 24px 24px 0;
padding: 16px 16px 0;
}
.content {
overflow-y: auto;
padding: 0 24px;
padding: 0 16px;
height: 100%;
max-height: calc(100% - 320px);
background-color: #ffffff;

View File

@ -2,7 +2,7 @@
<div class="page">
<MsSplitBox>
<template #first>
<div class="p-[24px]">
<div class="mr-[6px] p-[16px]">
<!-- TODO:这个版本环境不展示默认项目环境 -->
<!-- <div
><a-radio-group

View File

@ -1,5 +1,5 @@
<template>
<div class="flex h-[calc(100vh-88px)] flex-col p-[24px]">
<div class="flex h-[calc(100vh-88px)] flex-col p-[16px]">
<div class="header">
<a-button v-permission="['PROJECT_FILE_MANAGEMENT:READ+ADD']" type="primary" @click="handleAddClick">
{{ t('project.fileManagement.addFile') }}

View File

@ -2,7 +2,7 @@
<div class="page">
<MsSplitBox>
<template #first>
<div class="p-[24px]">
<div class="p-[16px]">
<div class="folder" @click="setActiveFolder('my')">
<div :class="getFolderClass('my')">
<MsIcon type="icon-icon_folder_filled1" class="folder-icon" />

View File

@ -1,10 +1,10 @@
<template>
<div class="wrapper flex min-h-[500px]" :style="{ height: 'calc(100vh - 90px)' }">
<div class="wrapper flex min-h-[500px]" :style="{ height: 'calc(100vh - 74px)' }">
<MsMenuPanel
:title="t('project.permission.projectAndPermission')"
:default-key="currentKey"
:menu-list="menuList"
class="mr-[16px] w-[208px] min-w-[208px] bg-white p-[24px]"
class="mr-[16px] w-[208px] min-w-[208px] bg-white p-[16px]"
@toggle-menu="toggleMenu"
/>
<MsCard simple :other-width="290" :min-width="700" :loading="isLoading">

View File

@ -1,5 +1,5 @@
<template>
<div class="box h-full">
<div class="box">
<div class="left" :class="getStyleClass()">
<div class="item" :class="[activeTask === 'real' ? 'active' : '']" @click="toggleTask('real')">
{{ t('project.taskCenter.realTimeTask') }}
@ -91,7 +91,7 @@
}
function getStyleClass() {
return props.mode === 'modal' ? ['p-0', 'pt-[24px]', 'pr-[24px]'] : ['p-[24px]'];
return props.mode === 'modal' ? ['p-0', 'pt-[16px]', 'pr-[16px]'] : ['p-[16px]'];
}
const listName = computed(() => {

View File

@ -20,7 +20,7 @@
<a-scrollbar
:style="{
overflow: 'auto',
height: `calc(100vh - ${collapseHeight} - 220px)`,
height: `calc(100vh - ${collapseHeight} - 196px)`,
}"
>
<div v-if="filterList.length" class="list">

View File

@ -134,11 +134,11 @@
},
]);
const isCollapse = ref<boolean>(false);
const collapseHeight = ref<string>('72px');
const collapseHeight = ref<string>('56px');
const changeHandler = (activeKey: (string | number)[]) => {
isCollapse.value = activeKey.length > 0;
collapseHeight.value = activeKey.length > 0 ? '158px' : '72px';
collapseHeight.value = activeKey.length > 0 ? '152px' : '56px';
};
const jumpHandler = (links: SkipTitle) => {

View File

@ -1,18 +1,21 @@
<template>
<div class="card">
<!-- <div class="card"> -->
<MsCard simple no-content-padding>
<MsSplitBox v-model:width="leftWidth" @expand-change="handleCollapse">
<template #first>
<UserGroupLeft
ref="ugLeftRef"
:add-permission="['ORGANIZATION_USER_ROLE:READ+ADD']"
:update-permission="['ORGANIZATION_USER_ROLE:READ+UPDATE']"
:is-global-disable="true"
@handle-select="handleSelect"
@add-user-success="handleAddMember"
/>
<div class="mr-1">
<UserGroupLeft
ref="ugLeftRef"
:add-permission="['ORGANIZATION_USER_ROLE:READ+ADD']"
:update-permission="['ORGANIZATION_USER_ROLE:READ+UPDATE']"
:is-global-disable="true"
@handle-select="handleSelect"
@add-user-success="handleAddMember"
/>
</div>
</template>
<template #second>
<div class="p-[24px]">
<div class="p-[16px]">
<div class="flex flex-row items-center justify-between">
<a-tooltip :content="currentUserGroupItem.name">
<div class="one-line-text max-w-[300px] font-medium">{{ currentUserGroupItem.name }}</div>
@ -61,7 +64,8 @@
</div>
</template>
</MsSplitBox>
</div>
</MsCard>
<!-- </div> -->
</template>
<script lang="ts" setup>
@ -71,6 +75,7 @@
import { computed, nextTick, onMounted, provide, ref, watchEffect } from 'vue';
import { useRouter } from 'vue-router';
import MsCard from '@/components/pure/ms-card/index.vue';
import MsSplitBox from '@/components/pure/ms-split-box/index.vue';
import AuthTable from '@/components/business/ms-user-group-comp/authTable.vue';
import UserGroupLeft from '@/components/business/ms-user-group-comp/msUserGroupLeft.vue';

View File

@ -1,5 +1,5 @@
<template>
<div v-expire class="mb-4">
<div v-expire class="mb-4" :class="props.styleClass">
<a-alert type="warning">{{
licenseStore.expiredDays >= 0 && licenseStore.expiredDays <= 30
? t('system.authorized.LicenseExpirationPromptLessThanThirty', { day: licenseStore.expiredDays })
@ -16,6 +16,10 @@
const licenseStore = useLicenseStore();
const { t } = useI18n();
const props = defineProps<{
styleClass?: string[];
}>();
</script>
<style scoped></style>

View File

@ -601,7 +601,7 @@
@apply bg-white;
margin-top: 16px;
padding: 24px;
padding: 16px;
border-radius: var(--border-radius-large);
.log-card-header {
@apply flex items-center justify-between;

View File

@ -38,7 +38,6 @@
.wrapper {
/* position: relative; */
width: 100%;
height: calc(100vh - 138px);
min-height: 500px;
}
</style>

View File

@ -1,8 +1,6 @@
<template>
<ExpireAlert />
<MsCard simple no-content-padding>
<div class="p-4 pb-0">
<ExpireAlert />
</div>
<TaskCenter group="system" />
</MsCard>
</template>

View File

@ -12,9 +12,9 @@
/>
</template>
<template #second>
<div class="flex h-full flex-col overflow-hidden pt-[24px]">
<div class="flex h-full flex-col overflow-hidden pt-[16px]">
<ExpireAlert class="px-4" />
<div class="mb-4 flex flex-row items-center justify-between px-[24px]">
<div class="mb-4 flex flex-row items-center justify-between px-[16px]">
<a-tooltip :content="currentUserGroupItem.name">
<div class="one-line-text max-w-[300px] font-medium">{{ currentUserGroupItem.name }}</div>
</a-tooltip>