From 3268de7494d5281186bb692635540e38db251e13 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 12 十月 2026 11:53:01 +0800
Subject: [PATCH] feat(dashboard): 添加权限控制和能耗分析功能
---
src/views/dashboard/analytics/modules/biz-cards.vue | 23 +++++++++++++++++------
1 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/views/dashboard/analytics/modules/biz-cards.vue b/src/views/dashboard/analytics/modules/biz-cards.vue
index 95a9e63..5fc8ff1 100644
--- a/src/views/dashboard/analytics/modules/biz-cards.vue
+++ b/src/views/dashboard/analytics/modules/biz-cards.vue
@@ -1,5 +1,5 @@
<script lang="ts" setup>
-import { onMounted, ref } from 'vue';
+import { computed, onMounted, ref } from 'vue';
import { CountTo } from '@vben/common-ui';
import { IconifyIcon } from '@vben/icons';
@@ -11,6 +11,8 @@
import { getMaterialStockPage } from '#/api/mes/wm/materialstock';
import { getTaskTodoPage } from '#/api/bpm/task';
+import { useHomeAccess } from '../use-home-access';
+
defineOptions({ name: 'DashboardBizCards' });
const emit = defineEmits<{
@@ -21,8 +23,14 @@
const saleCount = ref(0);
const stockCount = ref(0);
const bpmTodoCount = ref(0);
+const { canNavigate, canQuery } = useHomeAccess();
+const canViewPurchase = computed(() => canQuery('erp:purchase-order:query') && canNavigate('ErpPurchaseOrder'));
+const canViewSale = computed(() => canQuery('erp:sale-order:query') && canNavigate('ErpSaleOrder'));
+const canViewStock = computed(() => canQuery('mes:wm-material-stock:query') && canNavigate('MesWmMaterialStock'));
+const canViewBpmTodo = computed(() => canQuery('bpm:task:query') && canNavigate('BpmTaskTodo'));
async function loadPurchase() {
+ if (!canViewPurchase.value) return;
try {
const result = await getPurchaseOrderPage({ pageNo: 1, pageSize: 1 });
purchaseCount.value = result.total ?? 0;
@@ -30,6 +38,7 @@
}
async function loadSale() {
+ if (!canViewSale.value) return;
try {
const result = await getSaleOrderPage({ pageNo: 1, pageSize: 1 });
saleCount.value = result.total ?? 0;
@@ -37,6 +46,7 @@
}
async function loadStock() {
+ if (!canViewStock.value) return;
try {
const result = await getMaterialStockPage({ pageNo: 1, pageSize: 1 });
stockCount.value = result.total ?? 0;
@@ -44,6 +54,7 @@
}
async function loadBpmTodo() {
+ if (!canViewBpmTodo.value) return;
try {
const result = await getTaskTodoPage({ pageNo: 1, pageSize: 1 });
bpmTodoCount.value = result.total ?? 0;
@@ -83,9 +94,9 @@
</script>
<template>
- <Row :gutter="16">
+ <Row v-if="canViewPurchase || canViewSale || canViewStock || canViewBpmTodo" :gutter="16">
<!-- 閲囪喘璁㈠崟 -->
- <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
+ <Col v-if="canViewPurchase" :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
<div
class="glass-tilt group cursor-pointer overflow-hidden rounded-2xl border-0"
:style="tiltStyle('purchase')"
@@ -112,7 +123,7 @@
</Col>
<!-- 閿�鍞鍗� -->
- <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
+ <Col v-if="canViewSale" :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
<div
class="glass-tilt group cursor-pointer overflow-hidden rounded-2xl border-0"
:style="tiltStyle('sale')"
@@ -139,7 +150,7 @@
</Col>
<!-- 鐗╂枡搴撳瓨 -->
- <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
+ <Col v-if="canViewStock" :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
<div
class="glass-tilt group cursor-pointer overflow-hidden rounded-2xl border-0"
:style="tiltStyle('stock')"
@@ -166,7 +177,7 @@
</Col>
<!-- BPM 寰呭姙 -->
- <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
+ <Col v-if="canViewBpmTodo" :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4">
<div
class="glass-tilt group cursor-pointer overflow-hidden rounded-2xl border-0"
:style="tiltStyle('bpm')"
--
Gitblit v1.9.3