spring
2025-12-04 f7f25f593a731ea71e307257f5cec3ba562dacda
src/pages/production/detail/twistDetail.vue
@@ -1,14 +1,20 @@
<template>
  <view>
    <ProductCard :data="cardData" />
    <ProductCard
      :data="cardData"
      :map="{
        deviceModel: 'deviceModel',
        model: 'model',
        systemNo: 'systemNo',
        totalAmount: 'totalAmount',
        amount: 'amount',
        unAmount: 'unAmount',
        segmentLengthNote: 'segmentLengthNote',
      }"
    />
    <view class="mx-3">
      <wd-grid class="rounded-lg" clickable>
        <wd-grid-item
          icon="computer"
          link-type="navigateTo"
          :url="`/pages/production/twist/report/index?id=${paramsId}`"
          text="报工"
        />
        <wd-grid-item icon="computer" @click="handleReportClick" text="报工" />
        <!-- <wd-grid-item
          icon="chart"
          text="自检"
@@ -18,7 +24,7 @@
        <wd-grid-item
          icon="tips"
          link-type="navigateTo"
          url="/pages/production/twist/backman/index"
          :url="`/pages/production/twist/backman/index?id=${paramsId}`"
          text="杂工"
        />
        <wd-grid-item
@@ -36,30 +42,94 @@
import { onLoad } from "@dcloudio/uni-app";
import ProductCard from "@/components/product_card/index.vue";
import TwistApi from "@/api/product/twist";
import { getPrepareId, setPrepareId, clearPrepareId } from "@/utils/cache";
import HomeApi from "@/api/home";
const paramsId = ref();
const cardData = reactive({
  deviceModel: undefined,
  model: undefined,
  systemNo: undefined,
  totalAmount: undefined,
  amount: undefined,
  unAmount: undefined,
  segmentLengthNote: undefined,
});
const detailData = ref<any>({});
const getDetailData = async (id: string) => {
  const { data } = await TwistApi.getTwistDetailById({
    id: id,
  });
  detailData.value = data;
  cardData.deviceModel = data.deviceModel;
  cardData.model = data.model;
  cardData.systemNo = data.systemNo;
  cardData.totalAmount = data.totalLength;
  cardData.amount = data.length;
  cardData.unAmount = data.unLength;
  cardData.segmentLengthNote = data.segmentLengthNote;
};
onLoad((options: any) => {
// 获取并缓存生产准备ID
const initPrepareId = async () => {
  try {
    const { data } = await HomeApi.getIndex();
    if (data && data.prepareId) {
      setPrepareId(data.prepareId);
    } else {
      // 如果没有 prepareId,清空缓存
      clearPrepareId();
    }
  } catch (error) {
    console.error("获取生产准备ID失败:", error);
    // 获取失败时也清空缓存
    clearPrepareId();
  }
};
// 处理报工点击
const handleReportClick = async () => {
  // 先请求验证变更接口
  try {
    const { code } = await TwistApi.verifyChanges({ projectId: detailData.value.projectId });
    if (code !== 200) {
      return;
    }
  } catch (error) {
    console.error("验证变更失败:", error);
    return;
  }
  const prepareId = getPrepareId();
  console.log("绞线表格报工检查 - prepareId值:", prepareId);
  // 如果prepareId为空或未定义,说明生产准备未完成
  if (!prepareId) {
    console.log("绞线表格报工阻止 - 生产准备未完成");
    uni.showModal({
      title: "提示",
      content: "请在电脑端完成生产准备确认,再进行报工操作",
      showCancel: false,
      confirmText: "确定",
      success: () => {
        // 用户点击确定后,不做任何操作
      },
    });
    return;
  }
  // 如果有 prepareId,正常跳转
  uni.navigateTo({
    url: `/pages/production/twist/report/index?id=${paramsId.value}`,
  });
};
onLoad(async (options: any) => {
  paramsId.value = options.id;
  getDetailData(options.id);
  await getDetailData(options.id);
  // 获取并缓存生产准备ID
  await initPrepareId();
});
</script>