src/pages/index.vue
@@ -38,77 +38,77 @@
    <!--         </view>-->
    <!--      </view>-->
    <!-- 营销管理模块 -->
    <!--    <view class="common-module marketing-module">-->
    <!--      <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 marketingItems"-->
    <!--                        :key="index"-->
    <!--                        @click="handleCommonItemClick(item)">-->
    <!--            <view class="icon-container"-->
    <!--                  :style="{ background: item.bgColor }">-->
    <!--              <up-icon :name="item.icon"-->
    <!--                       :size="58"-->
    <!--                       color="#ffffff"></up-icon>-->
    <!--            </view>-->
    <!--            <text class="item-label">{{item.label}}</text>-->
    <!--          </up-grid-item>-->
    <!--        </up-grid>-->
    <!--      </view>-->
    <!--    </view>-->
    <!--    &lt;!&ndash; 采购管理模块 &ndash;&gt;-->
    <!--    <view class="common-module purchase-module">-->
    <!--      <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 purchaseItems"-->
    <!--                        :key="index"-->
    <!--                        @click="handleCommonItemClick(item)">-->
    <!--            <view class="icon-container"-->
    <!--                  :style="{ background: item.bgColor }">-->
    <!--              <up-icon :name="item.icon"-->
    <!--                       :size="58"-->
    <!--                       color="#ffffff"></up-icon>-->
    <!--            </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">-->
    <!--      <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"-->
    <!--                  :style="{ background: item.bgColor }">-->
    <!--              <up-icon :name="item.icon"-->
    <!--                       :size="58"-->
    <!--                       color="#ffffff"></up-icon>-->
    <!--            </view>-->
    <!--            <text class="item-label">{{item.label}}</text>-->
    <!--          </up-grid-item>-->
    <!--        </up-grid>-->
    <!--      </view>-->
    <!--    </view>-->
        <view class="common-module marketing-module">
          <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 marketingItems"
                            :key="index"
                            @click="handleCommonItemClick(item)">
                <view class="icon-container"
                      :style="{ background: item.bgColor }">
                  <up-icon :name="item.icon"
                           :size="58"
                           color="#ffffff"></up-icon>
                </view>
                <text class="item-label">{{item.label}}</text>
              </up-grid-item>
            </up-grid>
          </view>
        </view>
        <!-- 采购管理模块 -->
        <view class="common-module purchase-module">
          <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 purchaseItems"
                            :key="index"
                            @click="handleCommonItemClick(item)">
                <view class="icon-container"
                      :style="{ background: item.bgColor }">
                  <up-icon :name="item.icon"
                           :size="58"
                           color="#ffffff"></up-icon>
                </view>
                <text class="item-label">{{item.label}}</text>
              </up-grid-item>
            </up-grid>
          </view>
        </view>
        <!-- 协同办公模块 -->
      <view class="common-module collaboration-module">
         <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"
                           :style="{ background: item.bgColor }">
                     <up-icon :name="item.icon"
                                  :size="58"
                                  color="#ffffff"></up-icon>
                  </view>
                  <text class="item-label">{{item.label}}</text>
               </up-grid-item>
            </up-grid>
         </view>
      </view>
    <!-- 生产管控模块 -->
    <!--      <view class="common-module production-module">-->
    <!--         <view class="module-header">-->
@@ -192,6 +192,7 @@
<script setup>
  import { ref, onMounted, nextTick, reactive } from "vue";
  import { userLoginFacotryList } from "@/api/login";
  import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting";
  import modal from "@/plugins/modal";
  import useUserStore from "@/store/modules/user";
@@ -232,6 +233,10 @@
    {
      icon: "/static/images/icon/kaipiaotaizhang@2x.png",
      label: "开票台账",
    },
    {
      icon: "/static/images/icon/kaipiaotaizhang@2x.png",
      label: "发货台账",
    },
    {
      icon: "/static/images/icon/huikuandengji@2x.png",
@@ -276,16 +281,37 @@
  ]);
  // 协同办公功能数据
  const collaborationItems = reactive([
    {
      icon: "/static/images/icon/xietongshenpi@2x.png",
      label: "协同审批",
    },
    {
      icon: "/static/images/icon/kehubaifang@2x.png",
      label: "客户拜访",
    },
  ]);
   // 协同办公功能数据
   const collaborationItems = reactive([
      {
         icon: "/static/images/icon/baoxiaoguanli.png",
         label: "协同审批",
      },
      {
         icon: "/static/images/icon/huiyiliebiao@2x.png",
         label: "会议管理",
      },
      {
         icon: "/static/images/icon/tongzhigonggao@2x.png",
         label: "通知公告",
      },
      {
         icon: "/static/images/icon/zhishiku@2x.png",
         label: "知识库",
      },
      {
         icon: "/static/images/icon/yongyinguanli@2x.png",
         label: "用印管理",
      },
      {
         icon: "/static/images/icon/guizhangzhidu@2x.png",
         label: "规章制度",
      },
      {
         icon: "/static/images/icon/kehubaifang@2x.png",
         label: "客户拜访",
      },
   ]);
  // 生产管控功能数据
  const productionItems = reactive([
@@ -375,6 +401,11 @@
          url: "/pages/sales/invoiceLedger/index",
        });
        break;
      case "发货台账":
        uni.navigateTo({
          url: "/pages/sales/deliveryLedger/index",
        });
        break;
      case "回款登记":
        uni.navigateTo({
          url: "/pages/sales/receiptPayment/index",
@@ -420,16 +451,41 @@
          url: "/pages/procurementManagement/paymentLedger/index",
        });
        break;
      case "协同审批":
        uni.navigateTo({
          url: "/pages/cooperativeOffice/collaborativeApproval/index",
        });
        break;
      case "客户拜访":
        uni.navigateTo({
          url: "/pages/cooperativeOffice/clientVisit/index",
        });
        break;
         case "协同审批":
            uni.navigateTo({
               url: "/pages/indexItem?label=协同审批",
            });
            break;
         case "会议管理":
            uni.navigateTo({
               url: "/pages/indexItem?label=会议管理",
            });
            break;
         case "通知公告":
            uni.navigateTo({
               url: "/pages/cooperativeOffice/noticeManagement/index",
            });
            break;
         case "知识库":
            uni.navigateTo({
               url: "/pages/managementMeetings/knowledgeBase/index",
            });
            break;
         case "用印管理":
            uni.navigateTo({
               url: "/pages/managementMeetings/sealManagement/index",
            });
            break;
         case "规章制度":
            uni.navigateTo({
               url: "/pages/managementMeetings/rulesRegulationsManagement/index",
            });
            break;
         case "客户拜访":
            uni.navigateTo({
               url: "/pages/cooperativeOffice/clientVisit/index",
            });
            break;
      case "生产订单":
        uni.navigateTo({
          url: "/pages/productionManagement/productionOrder/index",
@@ -527,30 +583,74 @@
  }
  const getcode = () => {
    uni.scanCode({
      success: res => {
      success: async res => {
        // 解析二维码内容
        const scanResult = res.result;
        let orderRow = "";
        // 尝试从扫码结果中提取orderRow参数
        try {
          // 处理混合格式: http://...?orderRow={...}
          const orderRowStart = scanResult.indexOf("orderRow={");
          // 提取从orderRow={开始的JSON内容
          const jsonPart = scanResult.substring(orderRowStart + 9); // 9是"orderRow=".length
          // 尝试直接使用这个JSON部分
          orderRow = jsonPart;
        } catch (e) {
          console.error(e, "解析失败====????=====");
          orderRow = "";
        // 判断扫描结果是否为纯数字(id)
        const isNumericId = /^\d+$/.test(scanResult.trim());
        if (isNumericId) {
          // 如果是纯数字,根据 id 获取工单数据
          const workOrderId = scanResult.trim();
          modal.loading("正在获取工单信息...");
          try {
            const workRes = await getProductWorkOrderById({ id: workOrderId });
            modal.closeLoading();
            console.log("工单查询结果:", workRes);
            if (workRes.code === 200 && workRes.data) {
              // 新接口返回的是单个对象,不是数组
              const workData = workRes.data;
              console.log("工单数据:", workData);
              orderRow = JSON.stringify({
                id: workData.id || workOrderId,
                planQuantity: workData.planQuantity-workData.completeQuantity,
                productProcessRouteItemId: workData.productProcessRouteItemId || workData.产品工艺路线项ID || "",
              });
              console.log("构造的orderRow:", orderRow);
            } else {
              modal.msgError("未找到对应的工单信息");
              return;
            }
          } catch (error) {
            modal.closeLoading();
            console.error("获取工单信息失败:", error);
            modal.msgError("获取工单信息失败: " + (error.message || "未知错误"));
            return;
          }
        } else {
          // 如果不是纯数字,尝试从扫码结果中提取orderRow参数
          try {
            // 处理混合格式: http://...?orderRow={...}
            const orderRowStart = scanResult.indexOf("orderRow={");
            if (orderRowStart !== -1) {
              // 提取从orderRow={开始的JSON内容
              const jsonPart = scanResult.substring(orderRowStart + 9); // 9是"orderRow=".length
              orderRow = jsonPart;
            } else {
              // 如果直接是JSON字符串,尝试解析
              orderRow = scanResult;
            }
          } catch (e) {
            console.error(e, "解析失败====????=====");
            orderRow = "";
          }
          // 验证是否为有效的JSON
          try {
            JSON.parse(orderRow);
          } catch (error) {
            modal.msgError("订单解析失败,请检查二维码格式");
            return;
          }
        }
        console.log(orderRow, "orderRow======@@@@@@@@");
        try {
          JSON.parse(orderRow);
        } catch (error) {
          modal.msgError("订单解析失败");
          return;
        }
        // 扫码成功后跳转到生产报工页面,并传递orderRow参数
        uni.navigateTo({
          url: `/pages/productionManagement/productionReport/index?orderRow=${orderRow}`,
@@ -561,9 +661,6 @@
          title: "扫码失败",
          icon: "none",
        });
        // uni.navigateTo({
        //   url: `/pages/productionManagement/productionReport/index`,
        // });
      },
    });
  };