perf(仪表板): 没有权限的节点显示灰色

This commit is contained in:
fit2cloud-chenyw
2026-06-12 15:07:33 +08:00
parent 147aa94897
commit ddac5659fa
7 changed files with 69 additions and 14 deletions

View File

@@ -97,6 +97,7 @@ export default {
filter_condition: 'Filter condition',
no_auth_tips: 'Missing menu permissions, please contact the administrator',
no_menu_tips: 'Resource not found 401 error',
no_permission_node: 'No permission for this node',
refresh_success: 'Refresh success'
},
toolbox: {

View File

@@ -94,6 +94,7 @@ export default {
filter_condition: '篩選條件',
no_auth_tips: '缺少選單權限請聯絡管理員',
no_menu_tips: '未找到資源401錯誤',
no_permission_node: '對當前節點沒有權限',
refresh_success: '刷新成功'
},
toolbox: {

View File

@@ -95,6 +95,7 @@ export default {
filter_condition: '筛选条件',
no_auth_tips: '缺少菜单权限请联系管理员',
no_menu_tips: '未找到资源 401错误',
no_permission_node: '对当前节点没有权限',
refresh_success: '刷新成功'
},
toolbox: {

View File

@@ -81,7 +81,7 @@ const props = defineProps({
const defaultProps = {
children: 'children',
label: 'name',
disabled: (data: any) => data.extraFlag1 === 0
disabled: (data: any) => data.extraFlag1 === 0 || !data.weight
}
const mounted = ref(false)
const rootManage = ref(false)
@@ -785,17 +785,20 @@ defineExpose({
draggable
>
<template #default="{ node, data }">
<span class="custom-tree-node" :class="{ 'node-disabled-custom': data.extraFlag1 === 0 }">
<span
class="custom-tree-node"
:class="{ 'node-disabled-custom': data.extraFlag1 === 0 || !data.weight }"
>
<el-icon style="font-size: 18px" v-if="!data.leaf">
<Icon name="dv-folder"><dvFolder class="svg-icon" /></Icon>
</el-icon>
<el-icon style="font-size: 18px" v-else-if="curCanvasType === 'dashboard'">
<Icon v-if="data.extraFlag1"
<Icon v-if="data.extraFlag1 && data.weight"
><component
:is="data.extraFlag ? dvDashboardSpineMobile : dvDashboardSpine"
></component
></Icon>
<Icon v-if="!data.extraFlag1"
<Icon v-if="!data.extraFlag1 || !data.weight"
><component
:is="data.extraFlag ? dvDashboardSpineMobileDisabled : dvDashboardSpineDisabled"
></component
@@ -803,7 +806,10 @@ defineExpose({
</el-icon>
<el-icon
class="icon-screen-new color-dataV"
:class="{ 'color-dataV': data.extraFlag1, 'color-dataV-disabled': !data.extraFlag1 }"
:class="{
'color-dataV': data.extraFlag1 && data.weight,
'color-dataV-disabled': !data.extraFlag1 || !data.weight
}"
style="font-size: 18px"
v-else
>
@@ -813,6 +819,15 @@ defineExpose({
</el-icon>
<span :title="node.label" class="label-tooltip">
<el-tooltip
v-if="!data.weight"
effect="dark"
:content="t('common.no_permission_node')"
placement="top-start"
>
{{ node.label }}
</el-tooltip>
<el-tooltip
v-else
class="box-item"
effect="dark"
:content="t('visualization.publish_tips1')"

View File

@@ -700,7 +700,8 @@ const datasetTypeList = computed(() => {
const defaultProps = {
children: 'children',
label: 'name'
label: 'name',
disabled: (data: any) => !data.weight
}
const defaultTab = [
@@ -748,7 +749,7 @@ const getLimit = () => {
}
const sortTypeTip = computed(() => {
return sortList.find(ele => ele.value === state.curSortType).name
return sortList.find(ele => ele.value === state.curSortType)?.name
})
const tablePanes = ref([])
@@ -922,14 +923,24 @@ const proxyAllowDrop = throttle((arg1, arg2) => {
@node-click="handleNodeClick"
>
<template #default="{ node, data }">
<span class="custom-tree-node">
<span class="custom-tree-node" :class="{ 'node-disabled-custom': !data.weight }">
<el-icon v-if="!data.leaf" style="font-size: 18px">
<Icon name="dv-folder"><dvFolder class="svg-icon" /></Icon>
</el-icon>
<el-icon v-if="data.leaf" style="font-size: 18px">
<Icon name="icon_dataset"><icon_dataset class="svg-icon" /></Icon>
</el-icon>
<span :title="node.label" class="label-tooltip ellipsis">{{ node.label }}</span>
<el-tooltip
v-if="!data.weight"
effect="dark"
:content="t('common.no_permission_node')"
placement="top-start"
>
<span :title="node.label" class="label-tooltip ellipsis">{{ node.label }}</span>
</el-tooltip>
<span v-else :title="node.label" class="label-tooltip ellipsis">{{
node.label
}}</span>
<div class="icon-more" v-if="data.weight >= 7">
<handle-more
icon-size="24px"
@@ -1445,4 +1456,8 @@ const proxyAllowDrop = throttle((arg1, arg2) => {
}
}
}
.node-disabled-custom {
color: rgba(187, 191, 196, 1);
cursor: not-allowed;
}
</style>

View File

@@ -1041,7 +1041,8 @@ const uploadExcel = editType => {
const activeName = ref('table')
const defaultProps = {
children: 'children',
label: 'name'
label: 'name',
disabled: data => !data.weight
}
const loadInit = () => {
@@ -1218,7 +1219,11 @@ const getMenuList = (val: boolean) => {
@node-click="handleNodeClick"
>
<template #default="{ node, data }">
<span class="custom-tree-node" style="position: relative">
<span
class="custom-tree-node"
style="position: relative"
:class="{ 'node-disabled-custom': !data.weight }"
>
<el-icon :class="data.leaf && 'icon-border'" style="font-size: 18px">
<Icon :static-content="getDsIcon(data)"
><component class="svg-icon" :is="getDsIconName(data)"></component
@@ -1230,16 +1235,29 @@ const getMenuList = (val: boolean) => {
>
<Icon><icon_warning_colorful_red class="svg-icon" /></Icon>
</el-icon>
<el-tooltip
v-if="!data.weight"
effect="dark"
:content="t('common.no_permission_node')"
placement="top-start"
>
<span
:title="node.label"
class="label-tooltip ellipsis"
:class="data.type === 'Excel' && 'excel'"
>{{ node.label }}</span
>
</el-tooltip>
<span
v-else-if="data.extraFlag > -1"
:title="node.label"
class="label-tooltip ellipsis"
:class="data.type === 'Excel' && 'excel'"
v-if="data.extraFlag > -1"
>{{ node.label }}</span
>
<el-tooltip
effect="dark"
v-else
effect="dark"
:content="`${t('data_set.invalid_data_source')}: ${node.label}`"
placement="top"
>
@@ -2386,6 +2404,10 @@ const getMenuList = (val: boolean) => {
}
}
}
.node-disabled-custom {
color: rgba(187, 191, 196, 1);
cursor: not-allowed;
}
</style>
<style lang="less">
.record-drawer {