src/pages/works.vue
@@ -1,28 +1,5 @@
<template>
  <view class="content">
    <!-- OA办公模块 -->
    <view class="common-module oa-module"
          v-if="hasOaItems">
      <view class="module-header">
        <view class="module-title-container">
          <text class="module-title">OA办公</text>
        </view>
      </view>
      <view class="module-content">
        <up-grid :border="false"
                 col="4">
          <up-grid-item v-for="(item, index) in oaItems"
                        :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="hasCollaborationItems">
@@ -331,7 +308,6 @@
  import { userLoginFacotryList } from "@/api/login";
  import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting";
  import DownloadProgressMask from "@/components/DownloadProgressMask.vue";
  import { OA_WORKBENCH_ITEMS } from "@/config/oaWorkbench.js";
  import modal from "@/plugins/modal";
  import useUserStore from "@/store/modules/user";
@@ -415,6 +391,10 @@
      icon: "/static/images/icon/gongyingshangdangan.svg",
      label: "供应商档案",
    },
    {
      icon: "/static/images/icon/caigouguanli.svg",
      label: "采购需求",
    },
  ]);
  // 财务管理功能数据
@@ -495,6 +475,10 @@
      icon: "/static/images/icon/kucunguanli.svg",
      label: "库存管理",
    },
    {
      icon: "/static/images/icon/kucunguanli.svg",
      label: "库存盘点",
    },
  ]);
  const humanResourcesItems = reactive([
@@ -509,6 +493,21 @@
    {
      icon: "/static/images/icon/hetongguanli.svg",
      label: "合同管理",
    },
    {
      icon: "/static/images/icon/hetongguanli.svg",
      label: "转正申请",
      path: "/pages/oa/HrManage/regular-apply/index",
    },
    {
      icon: "/static/images/icon/renyuanxinzi.svg",
      label: "调动申请",
      path: "/pages/oa/HrManage/transfer-apply/index",
    },
    {
      icon: "/static/images/icon/gongchuguanli.svg",
      label: "工作交接",
      path: "/pages/oa/HrManage/work-handover/index",
    },
  ]);
  const qualityItems = reactive([
@@ -559,17 +558,22 @@
      label: "安全培训考核",
    },
  ]);
  // OA办公功能数据(纯前端配置,不参与后端权限过滤)
  const oaItems = reactive(
    OA_WORKBENCH_ITEMS.map(item => ({ ...item }))
  );
  // 协同办公功能数据
  const collaborationItems = reactive([
    {
      icon: "/static/images/icon/xietongshenpi.svg",
      label: "协同审批",
    },
    // {
    //   icon: "/static/images/icon/xietongshenpi.svg",
    //   label: "协同审批",
    // },
      {
         icon: "/static/images/icon/guizhangzhidu.svg",
         label: "审批管理",
         path: "/pages/oa/ApproveManage/approve-template/index",
      },
      {
         icon: "/static/images/icon/xietongshenpi.svg",
         label: "协同审批",
         path: "/pages/oa/ApproveManage/approve-list/index",
      },
    {
      icon: "/static/images/icon/huiyiguanli.svg",
      label: "会议管理",
@@ -593,6 +597,26 @@
    {
      icon: "/static/images/icon/kehubaifang.svg",
      label: "客户拜访",
    },
    {
      icon: "/static/images/icon/qingjiaguanli.svg",
      label: "请假申请",
      path: "/pages/oa/AttendManage/leave-apply/index",
    },
    {
      icon: "/static/images/icon/dakaqiandao.svg",
      label: "加班申请",
      path: "/pages/oa/AttendManage/overtime-apply/index",
    },
    {
      icon: "/static/images/icon/chuchaiguanli.svg",
      label: "差旅报销",
      path: "/pages/oa/ReimburseManage/travel-reimburse/index",
    },
    {
      icon: "/static/images/icon/baoxiaoguanli.svg",
      label: "费用报销",
      path: "/pages/oa/ReimburseManage/cost-reimburse/index",
    },
  ]);
@@ -630,6 +654,22 @@
    {
      icon: "/static/images/icon/shengchanhesuan.svg",
      label: "生产核算",
    },
    {
      icon: "/static/images/icon/shengchanbaogong.svg",
      label: "计件单价配置",
    },
    {
      icon: "/static/images/icon/shengchanshikuang.svg",
      label: "产量统计",
    },
    {
      icon: "/static/images/icon/shengchanhesuan.svg",
      label: "材料消耗核算",
    },
    {
      icon: "/static/images/icon/shengchanshikuang.svg",
      label: "成本核算分析",
    },
  ]);
@@ -758,6 +798,11 @@
      case "供应商档案":
        uni.navigateTo({
          url: "/pages/basicData/supplierManage/index",
        });
        break;
      case "采购需求":
        uni.navigateTo({
          url: "/pages/procurementManagement/procurementDemand/index",
        });
        break;
      case "公出管理":
@@ -908,6 +953,26 @@
          url: "/pages/productionManagement/productionAccounting/index",
        });
        break;
      case "计件单价配置":
        uni.navigateTo({
          url: "/pages/productionManagement/pieceRateConfig/index",
        });
        break;
      case "产量统计":
        uni.navigateTo({
          url: "/pages/productionManagement/outputStatistics/index",
        });
        break;
      case "材料消耗核算":
        uni.navigateTo({
          url: "/pages/productionManagement/materialConsumption/index",
        });
        break;
      case "成本核算分析":
        uni.navigateTo({
          url: "/pages/productionManagement/costAccounting/index",
        });
        break;
      case "生产追溯":
        uni.navigateTo({
          url: "/pages/productionManagement/productionTraceability/index",
@@ -1036,6 +1101,11 @@
      case "库存管理":
        uni.navigateTo({
          url: "/pages/inventoryManagement/stockManagement/index",
        });
        break;
      case "库存盘点":
        uni.navigateTo({
          url: "/pages/inventoryManagement/stockCheck/index",
        });
        break;
      case "反馈登记":
@@ -1303,7 +1373,6 @@
  const hasAfterSalesServiceItems = computed(
    () => afterSalesServiceItems.length > 0
  );
  const hasOaItems = computed(() => oaItems.length > 0);
  const hasCollaborationItems = computed(() => collaborationItems.length > 0);
  const hasSafetyItems = computed(() => safetyItems.length > 0);
  const hasQualityItems = computed(() => qualityItems.length > 0);