ZN
7 天以前 dd630fede0cc46500fe898c75464e3e04ce82b0f
src/pages/works.vue
@@ -1,5 +1,27 @@
<template>
  <view class="content">
    <!-- 协同办公模块 -->
    <view class="common-module collaboration-module"
          v-if="hasCollaborationItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">协同办公</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in collaborationItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 营销管理模块 -->
    <view class="common-module marketing-module"
          v-if="hasMarketingItems">
@@ -22,7 +44,7 @@
        </up-grid>
      </view>
    </view>
    <!--    &lt;!&ndash; 采购管理模块 &ndash;&gt;-->
    <!-- 采购管理模块 -->
    <view class="common-module purchase-module"
          v-if="hasPurchaseItems">
      <view class="module-header">
@@ -34,72 +56,6 @@
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in purchaseItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- &lt;!&ndash; 协同办公模块 &ndash;&gt; -->
    <view class="common-module collaboration-module"
          v-if="hasCollaborationItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">协同办公</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in collaborationItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 安全生产模块 -->
    <view class="common-module collaboration-module"
          v-if="hasSafetyItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">安全生产</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in safetyItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 质量管理模块 -->
    <view class="common-module collaboration-module"
          v-if="hasQualityItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">质量管理</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in qualityItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
@@ -154,6 +110,94 @@
        </up-grid>
      </view>
    </view>
    <!-- 财务管理模块 -->
    <view class="common-module finance-module"
          v-if="hasFinanceManagementItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">财务管理</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in financeManagementItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 档案管理模块 -->
    <view class="common-module archive-module"
          v-if="hasArchiveManagementItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">档案管理</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in archiveManagementItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 售后服务模块 -->
    <view class="common-module after-sales-module"
          v-if="hasAfterSalesServiceItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">售后服务</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in afterSalesServiceItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 质量管理模块 -->
    <view class="common-module collaboration-module"
          v-if="hasQualityItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">质量管理</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in qualityItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 设备管理模块 -->
    <view class="common-module equipment-module"
          v-if="hasEquipmentItems">
@@ -166,6 +210,28 @@
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in equipmentItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
              <image :src="item.icon" class="item-icon"></image>
            </view>
            <text class="item-label">{{item.label}}</text>
          </up-grid-item>
        </up-grid>
      </view>
    </view>
    <!-- 安全生产模块 -->
    <view class="common-module collaboration-module"
          v-if="hasSafetyItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">安全生产</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in safetyItems"
                        :key="index"
                        @click="handleCommonItemClick(item)">
            <view class="icon-container">
@@ -216,6 +282,30 @@
      label: "销售台账",
    },
    {
      icon: "/static/images/icon/kehuwanglai.svg",
      label: "客户往来",
    },
  ]);
  // 采购管理功能数据
  const purchaseItems = reactive([
    {
      icon: "/static/images/icon/caigoutaizhang.svg",
      label: "采购台账",
    },
    {
      icon: "/static/images/icon/gongyingshangwanglai.svg",
      label: "供应商往来",
    },
    {
      icon: "/static/images/icon/caigouguanli.svg",
      label: "采购退货",
    },
  ]);
  // 财务管理功能数据
  const financeManagementItems = reactive([
    {
      icon: "/static/images/icon/kaipiaodengji.svg",
      label: "开票登记",
    },
@@ -230,18 +320,6 @@
    {
      icon: "/static/images/icon/huikuanliushui.svg",
      label: "回款流水",
    },
    {
      icon: "/static/images/icon/kehuwanglai.svg",
      label: "客户往来",
    },
  ]);
  // 采购管理功能数据
  const purchaseItems = reactive([
    {
      icon: "/static/images/icon/caigoutaizhang.svg",
      label: "采购台账",
    },
    {
      icon: "/static/images/icon/laipiaodengji.svg",
@@ -260,10 +338,39 @@
      label: "付款流水",
    },
    {
      icon: "/static/images/icon/gongyingshangwanglai.svg",
      label: "供应商往来",
      icon: "/static/images/icon/huikuandengji.svg",
      label: "收入管理",
    },
    {
      icon: "/static/images/icon/fukuandengji.svg",
      label: "支出管理",
    },
    {
      icon: "/static/images/icon/huikuanliushui.svg",
      label: "借款管理",
    },
  ]);
  // 档案管理功能数据
  const archiveManagementItems = reactive([
    {
      icon: "/static/images/icon/gongchuguanli.svg",
      label: "供应商档案",
    },
  ]);
  // 售后服务功能数据
  const afterSalesServiceItems = reactive([
    {
      icon: "/static/images/icon/xiaoshoutaizhang.svg",
      label: "反馈登记",
    },
    {
      icon: "/static/images/icon/caigouguanli.svg",
      label: "售后处理",
    },
  ]);
  const humanResourcesItems = reactive([
    {
      icon: "/static/images/icon/dakaqiandao.svg",
@@ -465,9 +572,34 @@
          url: "/pages/procurementManagement/receiptPaymentHistory/index",
        });
        break;
      case "收入管理":
        uni.navigateTo({
          url: "/pages/financialManagement/revenueManagement/index",
        });
        break;
      case "支出管理":
        uni.navigateTo({
          url: "/pages/financialManagement/expenseManagement/index",
        });
        break;
      case "借款管理":
        uni.navigateTo({
          url: "/pages/financialManagement/loanManagement/index",
        });
        break;
      case "供应商往来":
        uni.navigateTo({
          url: "/pages/procurementManagement/paymentLedger/index",
        });
        break;
      case "采购退货":
        uni.navigateTo({
          url: "/pages/procurementManagement/purchaseReturnOrder/index",
        });
        break;
      case "供应商档案":
        uni.navigateTo({
          url: "/pages/basicData/supplierManage/index",
        });
        break;
      case "公出管理":
@@ -713,6 +845,16 @@
          url: "/pages/qualityManagement/finalInspection/index",
        });
        break;
      case "反馈登记":
        uni.navigateTo({
          url: "/pages/customerService/feedbackRegistration/index",
        });
        break;
      case "售后处理":
        uni.navigateTo({
          url: "/pages/customerService/afterSalesHandling/index",
        });
        break;
      default:
        uni.showToast({
          title: `点击了${item.label}`,
@@ -884,6 +1026,7 @@
    // 收集所有有权限的菜单标题(根据 meta.title)
    const allowedMenuTitles = new Set();
    const alwaysShowTitles = new Set(["采购退货单", "供应商管理"]);
    const collectMenuTitles = routes => {
      if (!Array.isArray(routes)) return;
      routes.forEach(route => {
@@ -900,8 +1043,9 @@
    // 定义菜单配置映射
    const menuMapping = {
      collaboration: { target: collaborationItems, specialMapping: { "规章制度": "规章制度管理" } },
      archiveManagement: { target: archiveManagementItems, specialMapping: { "供应商档案": "供应商管理" } },
    };
    console.log(allowedMenuTitles)
    // 通用过滤函数
    const filterArray = (targetArray, specialMapping) => {
      const filtered = targetArray.filter(item => {
@@ -917,6 +1061,8 @@
    // 过滤各个模块
    filterArray(marketingItems);
    filterArray(purchaseItems);
    filterArray(financeManagementItems);
    filterArray(archiveManagementItems, menuMapping.archiveManagement.specialMapping);
    filterArray(collaborationItems, menuMapping.collaboration.specialMapping);
    filterArray(safetyItems);
    filterArray(humanResourcesItems);
@@ -928,6 +1074,9 @@
  // 检查模块是否有菜单项需要显示
  const hasMarketingItems = computed(() => marketingItems.length > 0);
  const hasPurchaseItems = computed(() => purchaseItems.length > 0);
  const hasFinanceManagementItems = computed(() => financeManagementItems.length > 0);
  const hasArchiveManagementItems = computed(() => archiveManagementItems.length > 0);
  const hasAfterSalesServiceItems = computed(() => afterSalesServiceItems.length > 0);
  const hasCollaborationItems = computed(() => collaborationItems.length > 0);
  const hasSafetyItems = computed(() => safetyItems.length > 0);
  const hasQualityItems = computed(() => qualityItems.length > 0);
@@ -1617,4 +1766,4 @@
      box-shadow: 0 0.375rem 1.25rem rgba(0, 0, 0, 0.4);
    }
  }
</style>
</style>