From 8a2832d02126f33596c125c855d7effe96d69da1 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 15 十月 2026 10:02:52 +0800
Subject: [PATCH] refactor(首页): 展示模块跟随菜单权限自动隐藏
---
src/views/dashboard/analytics/index.vue | 60 ++++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 44 insertions(+), 16 deletions(-)
diff --git a/src/views/dashboard/analytics/index.vue b/src/views/dashboard/analytics/index.vue
index df4d405..f877641 100644
--- a/src/views/dashboard/analytics/index.vue
+++ b/src/views/dashboard/analytics/index.vue
@@ -18,6 +18,8 @@
import SummaryCard from '#/views/erp/home/modules/summary-card.vue';
+import { useHomeAccess } from '#/utils/use-home-access';
+
import { defaultSummary } from './data';
import BizCards from './modules/biz-cards.vue';
import KpiCards from './modules/kpi-cards.vue';
@@ -26,6 +28,26 @@
defineOptions({ name: 'DashboardAnalytics' });
const router = useRouter();
+
+const { canQuery, canSeeMenu } = useHomeAccess();
+
+/** MES 鐢熶骇 KPI锛氭暟鎹彇鑷椤垫眹鎬绘帴鍙o紝娌℃湁璇ユ潈闄愬氨鍙栦笉鍒版暟 */
+const canViewSummary = computed(() => canQuery('mes:home:query'));
+const showKpi = computed(
+ () =>
+ canViewSummary.value &&
+ (canSeeMenu('MesQcIqc') || canSeeMenu('MesDvMachinery')),
+);
+const canViewSale = computed(
+ () => canQuery('erp:sale-order:query') && canSeeMenu('ErpSaleOrder'),
+);
+const canViewPurchase = computed(
+ () => canQuery('erp:purchase-order:query') && canSeeMenu('ErpPurchaseOrder'),
+);
+/** 閲戦姒傝鏄攢鍞�/閲囪喘鐨勫鐓у彛寰勶紝鍙湁涓�杈规湁鏉冮檺鏃朵笉鎴愬崱鐗� */
+const showAmountSummary = computed(
+ () => canViewSale.value && canViewPurchase.value,
+);
const greeting = computed(() => {
const hour = new Date().getHours();
@@ -116,25 +138,31 @@
}
async function loadStatistics() {
- try {
- const saleOrders = await fetchAllPages<ErpSaleOrderApi.SaleOrder>(
- getSaleOrderPage,
- );
- saleSummary.value = aggregatePrice(saleOrders);
- } catch {
- /* 鎺ュ彛寮傚父鎴栨棤鏉冮檺 */
+ if (canViewSale.value) {
+ try {
+ const saleOrders = await fetchAllPages<ErpSaleOrderApi.SaleOrder>(
+ getSaleOrderPage,
+ );
+ saleSummary.value = aggregatePrice(saleOrders);
+ } catch {
+ /* 鎺ュ彛寮傚父鎴栨棤鏉冮檺 */
+ }
}
- try {
- const purchaseOrders = await fetchAllPages<ErpPurchaseOrderApi.PurchaseOrder>(
- getPurchaseOrderPage,
- );
- purchaseSummary.value = aggregatePrice(purchaseOrders);
- } catch {
- /* 鎺ュ彛寮傚父鎴栨棤鏉冮檺 */
+ if (canViewPurchase.value) {
+ try {
+ const purchaseOrders =
+ await fetchAllPages<ErpPurchaseOrderApi.PurchaseOrder>(
+ getPurchaseOrderPage,
+ );
+ purchaseSummary.value = aggregatePrice(purchaseOrders);
+ } catch {
+ /* 鎺ュ彛寮傚父鎴栨棤鏉冮檺 */
+ }
}
}
async function loadHomeSummary() {
+ if (!canViewSummary.value) return;
try {
homeSummary.value = await getHomeSummary();
} catch {
@@ -170,13 +198,13 @@
</div>
<!-- 璐ㄩ噺 / 璁惧 KPI -->
- <KpiCards :summary="homeSummary" @navigate="handleNavigate" />
+ <KpiCards v-if="showKpi" :summary="homeSummary" @navigate="handleNavigate" />
<!-- ERP/WMS/BPM 缁忚惀 KPI -->
<BizCards @navigate="handleNavigate" />
<!-- 閿�鍞� / 閲囪喘 閲戦姒傝 -->
- <div class="mb-4">
+ <div v-if="showAmountSummary" class="mb-4">
<SummaryCard
:purchase-summary="purchaseSummary"
:sale-summary="saleSummary"
--
Gitblit v1.9.3