fix: 租户管理表格操作去掉按钮权限

This commit is contained in:
TsMask
2025-10-27 15:50:44 +08:00
parent 4dfe872c27
commit 4c315a1548

View File

@@ -325,7 +325,7 @@ function fnGetList(parentId?: any, tableFlag?: any, pageNum?: number) {
tablePagination.total = res.total; tablePagination.total = res.total;
if ( if (
tablePagination.total <= tablePagination.total <=
(queryParams.pageNum - 1) * tablePagination.pageSize && (queryParams.pageNum - 1) * tablePagination.pageSize &&
queryParams.pageNum !== 1 queryParams.pageNum !== 1
) { ) {
tableState.loading = false; tableState.loading = false;
@@ -774,57 +774,34 @@ onMounted(() => {
<template> <template>
<PageContainer> <PageContainer>
<a-row :gutter="16"> <a-row :gutter="16">
<a-col <a-col :lg="5" :md="5" :xs="24" style="margin-bottom: 24px" v-show="collapsible">
:lg="5"
:md="5"
:xs="24"
style="margin-bottom: 24px"
v-show="collapsible"
>
<!-- Tenant List --> <!-- Tenant List -->
<a-card size="small" :bordered="false" title="Tenant List"> <a-card size="small" :bordered="false" title="Tenant List">
<template #extra> <template #extra>
<a-button size="small" @click.prevent="fnModalVisibleByEdit()"> <a-button size="small" @click.prevent="fnModalVisibleByEdit()">
<template #icon><PlusOutlined /></template> <template #icon>
<PlusOutlined />
</template>
{{ t('common.addText') }} {{ t('common.addText') }}
</a-button></template </a-button></template>
>
<a-form layout="vertical" autocomplete="off"> <a-form layout="vertical" autocomplete="off">
<a-form-item name="tenantTree"> <a-form-item name="tenantTree">
<a-tree :tree-data="state.tenantTreeData" @select="fnSelectNode"> <a-tree :tree-data="state.tenantTreeData" @select="fnSelectNode">
<!-- treeKey is tenantId --> <!-- treeKey is tenantId -->
<template <template #title="{ key: treeKey, title, status }" style="width: 170px">
#title="{ key: treeKey, title, status }"
style="width: 170px"
>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<span <span :style="status == 1 ? { color: 'green' } : { color: 'red' }
:style=" " class="treeNode">{{ title }}</span>
status == 1 ? { color: 'green' } : { color: 'red' }
"
class="treeNode"
>{{ title }}</span
>
<!-- 占位符推动后面的按钮到最右边 --> <!-- 占位符推动后面的按钮到最右边 -->
<div style="flex: 1"></div> <div style="flex: 1"></div>
<span> <span>
<EditOutlined <EditOutlined :style="status == 1 ? { color: 'green' } : { color: 'red' }
:style=" " class="iconMyStyle" @click.stop="fnModalVisibleByEdit(treeKey)" />
status == 1 ? { color: 'green' } : { color: 'red' } <DeleteOutlined :style="status == 1 ? { color: 'green' } : { color: 'red' }
" " class="iconMyStyle" @click.stop="fnRecordDelete(treeKey, title)" />
class="iconMyStyle"
@click.stop="fnModalVisibleByEdit(treeKey)"
/>
<DeleteOutlined
:style="
status == 1 ? { color: 'green' } : { color: 'red' }
"
class="iconMyStyle"
@click.stop="fnRecordDelete(treeKey, title)"
/>
</span> </span>
</div> </div>
</template> </template>
@@ -835,11 +812,7 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="collapsible ? 19 : 24" :md="collapsible ? 19 : 24" :xs="24"> <a-col :lg="collapsible ? 19 : 24" :md="collapsible ? 19 : 24" :xs="24">
<a-card <a-card size="small" :bordered="false" :body-style="{ maxHeight: '650px', 'overflow-y': 'auto' }">
size="small"
:bordered="false"
:body-style="{ maxHeight: '650px', 'overflow-y': 'auto' }"
>
<!-- 左侧区域 --> <!-- 左侧区域 -->
<template #title> <template #title>
<a-button type="text" @click.prevent="changeCollapsible()"> <a-button type="text" @click.prevent="changeCollapsible()">
@@ -848,7 +821,7 @@ onMounted(() => {
</template> </template>
</a-button> </a-button>
<a-typography-text v-if="state.selectedName"> <a-typography-text v-if="state.selectedName">
{{ state.selectedName + '-Tenancy Asset ' }} {{ state.selectedName + '-Tenancy Asset ' }}
</a-typography-text> </a-typography-text>
<a-typography-text type="danger" v-else> <a-typography-text type="danger" v-else>
{{ t('views.system.tenant.treeSelectTip') }} {{ t('views.system.tenant.treeSelectTip') }}
@@ -864,12 +837,10 @@ onMounted(() => {
? 'Add Tenancy Asset' ? 'Add Tenancy Asset'
: 'Please Select Tenant' : 'Please Select Tenant'
}}</template> }}</template>
<a-button <a-button size="small" @click.prevent="fnModalVisibleByType()" :disabled="!modalState.typeButton">
size="small" <template #icon>
@click.prevent="fnModalVisibleByType()" <PlusOutlined />
:disabled="!modalState.typeButton" </template>
>
<template #icon> <PlusOutlined /> </template>
{{ t('common.addText') }} {{ t('common.addText') }}
</a-button> </a-button>
</a-tooltip> </a-tooltip>
@@ -879,13 +850,9 @@ onMounted(() => {
? t('common.reloadText') ? t('common.reloadText')
: 'Please Select Tenant' : 'Please Select Tenant'
}}</template> }}</template>
<a-button <a-button type="default" size="small" :disabled="!modalState.typeButton"
type="default"
size="small"
:disabled="!modalState.typeButton"
:title="modalState.typeButton ? '' : 'Please Select Tenant'" :title="modalState.typeButton ? '' : 'Please Select Tenant'"
@click.prevent="fnGetList(state.selectedNode, 'table')" @click.prevent="fnGetList(state.selectedNode, 'table')">
>
<template #icon> <template #icon>
<ReloadOutlined /> <ReloadOutlined />
</template> </template>
@@ -895,52 +862,35 @@ onMounted(() => {
</template> </template>
<!-- 租户类型表格 --> <!-- 租户类型表格 -->
<a-table <a-table class="table" row-key="id" :columns="tableColumns" :loading="tableState.loading"
class="table" :data-source="tableState.data" :pagination="tablePagination" :size="tableState.size"
row-key="id" :scroll="{ x: 1000, y: 400 }">
:columns="tableColumns"
:loading="tableState.loading"
:data-source="tableState.data"
:pagination="tablePagination"
:size="tableState.size"
:scroll="{ x: 1000, y: 400 }"
>
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.key === 'status'"> <template v-if="column.key === 'status'">
<DictTag <DictTag :options="dict.sysNormalDisable" :value="record.status" />
:options="dict.sysNormalDisable"
:value="record.status"
/>
</template> </template>
<template v-if="column.key === 'tenancyType'"> <template v-if="column.key === 'tenancyType'">
<DictTag <DictTag :options="dict.sysTenancyType" :value="record.tenancyType" />
:options="dict.sysTenancyType"
:value="record.tenancyType"
/>
</template> </template>
<template v-if="column.key === 'tenantId'"> <template v-if="column.key === 'tenantId'">
<a-space :size="8" align="center"> <a-space :size="8" align="center">
<a-tooltip> <a-tooltip>
<template #title>{{ t('common.editText') }}</template> <template #title>{{ t('common.editText') }}</template>
<a-button <a-button type="link" @click.prevent="fnModalVisibleByType(record.tenantId)">
type="link" <template #icon>
@click.prevent="fnModalVisibleByType(record.tenantId)" <FormOutlined />
v-perms:has="['system:dept:edit']" </template>
>
<template #icon><FormOutlined /></template>
</a-button> </a-button>
</a-tooltip> </a-tooltip>
<a-tooltip v-if="record.parentId !== '0'"> <a-tooltip v-if="record.parentId !== '0'">
<template #title>{{ t('common.deleteText') }}</template> <template #title>{{ t('common.deleteText') }}</template>
<a-button <a-button type="link" @click.prevent="fnTypeRecordDelete(record)">
type="link" <template #icon>
@click.prevent="fnTypeRecordDelete(record)" <DeleteOutlined />
v-perms:has="['system:dept:remove']" </template>
>
<template #icon><DeleteOutlined /></template>
</a-button> </a-button>
</a-tooltip> </a-tooltip>
</a-space> </a-space>
@@ -952,45 +902,19 @@ onMounted(() => {
</a-row> </a-row>
<!-- Tenant--新增修改框 --> <!-- Tenant--新增修改框 -->
<a-modal <a-modal width="800px" :keyboard="false" :mask-closable="false" :open="modalState.visibleByEdit"
width="800px" :title="modalState.title" @ok="fnModalOk" @cancel="fnModalCancel" :confirm-loading="modalState.confirmLoading">
:keyboard="false" <a-form name="modalStateFrom" layout="horizontal" :label-col="{ span: 8 }" :labelWrap="true">
:mask-closable="false" <a-form-item :label="t('views.system.tenant.className')" name="tenantName"
:open="modalState.visibleByEdit" v-bind="modalStateFrom.validateInfos.tenantName" :label-col="{ span: 4 }" :labelWrap="true">
:title="modalState.title" <a-input v-model:value="modalState.from.tenantName" allow-clear :maxlength="18">
@ok="fnModalOk"
@cancel="fnModalCancel"
:confirm-loading="modalState.confirmLoading"
>
<a-form
name="modalStateFrom"
layout="horizontal"
:label-col="{ span: 8 }"
:labelWrap="true"
>
<a-form-item
:label="t('views.system.tenant.className')"
name="tenantName"
v-bind="modalStateFrom.validateInfos.tenantName"
:label-col="{ span: 4 }"
:labelWrap="true"
>
<a-input
v-model:value="modalState.from.tenantName"
allow-clear
:maxlength="18"
>
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.system.tenant.status')" name="status"> <a-form-item :label="t('views.system.tenant.status')" name="status">
<a-select <a-select v-model:value="modalState.from.status" default-value="0" :options="dict.sysNormalDisable">
v-model:value="modalState.from.status"
default-value="0"
:options="dict.sysNormalDisable"
>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -999,122 +923,60 @@ onMounted(() => {
</a-modal> </a-modal>
<!-- Tenant Type--新增修改框 --> <!-- Tenant Type--新增修改框 -->
<a-modal <a-modal width="800px" :keyboard="false" :mask-closable="false" :open="modalState.visibleByType"
width="800px" :title="modalState.typeTitle" @ok="fnModalTypeOk" @cancel="fnModalCancel"
:keyboard="false" :confirm-loading="modalState.confirmLoading">
:mask-closable="false" <a-form name="modalStateTypeFrom" layout="horizontal" :label-col="{ span: 8 }" :labelWrap="true">
:open="modalState.visibleByType"
:title="modalState.typeTitle"
@ok="fnModalTypeOk"
@cancel="fnModalCancel"
:confirm-loading="modalState.confirmLoading"
>
<a-form
name="modalStateTypeFrom"
layout="horizontal"
:label-col="{ span: 8 }"
:labelWrap="true"
>
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="24" :xs="24"> <a-col :lg="12" :md="24" :xs="24">
<a-form-item <a-form-item :label="t('views.system.tenant.type')" name="type" :labelWrap="true"
:label="t('views.system.tenant.type')" v-bind="modalStateTypeFrom.validateInfos.tenancyType">
name="type" <a-select v-model:value="modalState.typeFrom.tenancyType" :options="dict.sysTenancyType"
:labelWrap="true" @change="fnTypeChange">
v-bind="modalStateTypeFrom.validateInfos.tenancyType"
>
<a-select
v-model:value="modalState.typeFrom.tenancyType"
:options="dict.sysTenancyType"
@change="fnTypeChange"
>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="24" :md="24" :xs="24"> <a-col :lg="24" :md="24" :xs="24">
<a-form-item <a-form-item :label="t('views.system.tenant.key')" name="key" :extra="keyTip" :label-col="{ span: 4 }"
:label="t('views.system.tenant.key')" v-bind="modalStateTypeFrom.validateInfos.tenancyKey" v-show="modalState.typeFrom.tenancyType == 'IMSI'">
name="key"
:extra="keyTip"
:label-col="{ span: 4 }"
v-bind="modalStateTypeFrom.validateInfos.tenancyKey"
v-show="modalState.typeFrom.tenancyType == 'IMSI'"
>
<!-- <a-input <!-- <a-input
v-model:value="modalState.typeFrom.tenancyKey" v-model:value="modalState.typeFrom.tenancyKey"
allow-clear allow-clear
></a-input> --> ></a-input> -->
<a-select <a-select v-model:value="modalState.typeFrom.imsiMatch" :options="[
v-model:value="modalState.typeFrom.imsiMatch" { label: t('views.neUser.sub.fuzzyMatch'), value: 'fuzzy' },
:options="[ { label: t('views.neUser.sub.prefixMatch'), value: 'prefix' },
{ label: t('views.neUser.sub.fuzzyMatch'), value: 'fuzzy' }, { label: t('views.neUser.sub.fullMatch'), value: 'full' },
{ label: t('views.neUser.sub.prefixMatch'), value: 'prefix' }, { label: t('views.neUser.sub.suffixMatch'), value: 'suffix' },
{ label: t('views.neUser.sub.fullMatch'), value: 'full' }, ]" style="width: 20%">
{ label: t('views.neUser.sub.suffixMatch'), value: 'suffix' },
]"
style="width: 20%"
>
</a-select> </a-select>
<a-input <a-input v-model:value="modalState.typeFrom.tenancyKey" allow-clear style="width: 80%"></a-input>
v-model:value="modalState.typeFrom.tenancyKey"
allow-clear
style="width: 80%"
></a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item :label="t('views.system.tenant.key')" name="key" :extra="keyTip" :label-col="{ span: 4 }"
:label="t('views.system.tenant.key')" v-bind="modalStateTypeFrom.validateInfos.tenancyKey" v-show="modalState.typeFrom.tenancyType == 'UPF'">
name="key" <a-auto-complete v-model:value="modalState.typeFrom.tenancyKey" allow-clear :options="dict.allRmUid" />
:extra="keyTip"
:label-col="{ span: 4 }"
v-bind="modalStateTypeFrom.validateInfos.tenancyKey"
v-show="modalState.typeFrom.tenancyType == 'UPF'"
>
<a-auto-complete
v-model:value="modalState.typeFrom.tenancyKey"
allow-clear
:options="dict.allRmUid"
/>
</a-form-item> </a-form-item>
<a-form-item <a-form-item :label="t('views.system.tenant.key')" name="radioType" :label-col="{ span: 4 }" :extra="keyTip"
:label="t('views.system.tenant.key')" v-bind="modalStateTypeFrom.validateInfos.radioType" v-show="modalState.typeFrom.tenancyType == 'RADIO'">
name="radioType" <a-select v-model:value="modalState.typeFrom.radioType" :options="[
:label-col="{ span: 4 }" { label: '4G', value: '4G' },
:extra="keyTip" { label: '5G', value: '5G' },
v-bind="modalStateTypeFrom.validateInfos.radioType" ]" @change="fnRadioIdChange" style="width: 20%">
v-show="modalState.typeFrom.tenancyType == 'RADIO'"
>
<a-select
v-model:value="modalState.typeFrom.radioType"
:options="[
{ label: '4G', value: '4G' },
{ label: '5G', value: '5G' },
]"
@change="fnRadioIdChange"
style="width: 20%"
>
</a-select> </a-select>
<a-auto-complete <a-auto-complete v-model:value="modalState.typeFrom.radioId" :options="dict.allRadio" style="width: 20%"
v-model:value="modalState.typeFrom.radioId" allow-clear />
:options="dict.allRadio"
style="width: 20%"
allow-clear
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.system.tenant.status')" name="status"> <a-form-item :label="t('views.system.tenant.status')" name="status">
<a-select <a-select v-model:value="modalState.typeFrom.status" default-value="0" :options="dict.sysNormalDisable">
v-model:value="modalState.typeFrom.status"
default-value="0"
:options="dict.sysNormalDisable"
>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -1131,12 +993,19 @@ onMounted(() => {
.treeNode { .treeNode {
display: inline-block; display: inline-block;
width: 130px; /* 设置你想要的宽度 */ width: 130px;
overflow: hidden; /* 超出部分隐藏 */ /* 设置你想要的宽度 */
text-overflow: ellipsis; /* 超出部分显示省略号 */ overflow: hidden;
line-height: 30px; /* 设置行高,使文本垂直居中 */ /* 超出部分隐藏 */
vertical-align: middle; /* 垂直居中 */ text-overflow: ellipsis;
white-space: nowrap; /* 不换行 */ /* 超出部分显示省略号 */
font-size: 16px; /* 设置字体大小 */ line-height: 30px;
/* 设置行高,使文本垂直居中 */
vertical-align: middle;
/* 垂直居中 */
white-space: nowrap;
/* 不换行 */
font-size: 16px;
/* 设置字体大小 */
} }
</style> </style>