<template> 
 | 
  <view class="list"> 
 | 
    <z-paging ref="pagingRef" v-model="twistReportList" :fixed="false" @query="getTwistReportList"> 
 | 
      <template #top> 
 | 
        <CardTitle title="报工信息" :hideAction="true" :full="false" @action="addReport" /> 
 | 
      </template> 
 | 
      <wd-card v-for="item in twistReportList" :key="item.id" type="rectangle" custom-class="round"> 
 | 
        <template #title> 
 | 
          <view class="flex justify-between"> 
 | 
            <view> 
 | 
              <wd-icon name="user" color="#0D867F"></wd-icon> 
 | 
              <text class="text-[#0D867F] ml-2 font-medium">生产人</text> 
 | 
              <text class="text-[#333333] ml-2">{{ item.productUser }}</text> 
 | 
            </view> 
 | 
            <view class="text-[#A8A8A8]" @click="toEdit">编辑</view> 
 | 
          </view> 
 | 
        </template> 
 | 
        <ProductionCard :data="cardAttr" :value="item" /> 
 | 
        <template #footer> 
 | 
          <wd-button size="small" plain style="margin-right: 10px" @click="toAttachment(item)"> 
 | 
            附件 
 | 
          </wd-button> 
 | 
          <wd-button size="small" plain @click="handleSelfCheck(item.id)">自检</wd-button> 
 | 
        </template> 
 | 
      </wd-card> 
 | 
    </z-paging> 
 | 
  
 | 
    <wd-popup v-model="dialog.visible" position="bottom" custom-class="yl-popup"> 
 | 
      <view class="action px-3"> 
 | 
        <wd-button type="text" @click="cancel">取消</wd-button> 
 | 
        <wd-button type="text" @click="submit">确定</wd-button> 
 | 
      </view> 
 | 
      <TwistForm ref="twistFormRef" /> 
 | 
    </wd-popup> 
 | 
    <wd-popup v-model="drawFormRef.visible" position="bottom" custom-class="yl-popup"> 
 | 
      <Draw 
 | 
        :single-regulation-info-array="drawData.singleRegulationInfoArray" 
 | 
        :steel-regulation-info="drawData.steelRegulationInfo" 
 | 
        :reel-tooling-info="drawData.reelToolingInfo" 
 | 
        :wire-id="drawData.wireId" 
 | 
        @close="handleDrawClose" 
 | 
      /> 
 | 
    </wd-popup> 
 | 
    <wd-toast /> 
 | 
  </view> 
 | 
</template> 
 | 
<script setup lang="ts"> 
 | 
import CardTitle from "@/components/card-title/index.vue"; 
 | 
import TwistForm from "./form.vue"; 
 | 
import { useToast } from "wot-design-uni"; 
 | 
import ProductionCard from "../../components/ProductionCard.vue"; 
 | 
import { onLoad } from "@dcloudio/uni-app"; 
 | 
import { ref, reactive } from "vue"; 
 | 
import ManageApi from "@/api/product/manage"; 
 | 
import TwistApi from "@/api/product/twist"; 
 | 
import Draw from "./draw.vue"; 
 | 
  
 | 
const drawFormRef = reactive({ 
 | 
  visible: false, 
 | 
}); 
 | 
  
 | 
// 处理draw组件关闭事件 
 | 
const handleDrawClose = () => { 
 | 
  // 确保弹窗被正确关闭 
 | 
  drawFormRef.visible = false; 
 | 
}; 
 | 
const pagingRef = ref(); 
 | 
const paramsId = ref(); 
 | 
const twistFormRef = ref(); 
 | 
const toast = useToast(); 
 | 
const dialog = reactive({ 
 | 
  visible: false, 
 | 
}); 
 | 
const drawData = ref({ 
 | 
  singleRegulationInfoArray: [], 
 | 
  steelRegulationInfo: { 
 | 
    model: "", 
 | 
    twistedDirection: "", 
 | 
    outerDiameter: "", 
 | 
    scratch: "", 
 | 
    oilStain: "", 
 | 
  }, 
 | 
  reelToolingInfo: { 
 | 
    nutFixed: "", 
 | 
    sidePlateFlat: "", 
 | 
    centerPlateFlat: "", 
 | 
    paintQuality: "", 
 | 
    burrCrack: "", 
 | 
    edgeBlunt: "", 
 | 
    woodMold: "", 
 | 
    weldQuality: "", 
 | 
  }, 
 | 
  wireId: "", 
 | 
}); 
 | 
  
 | 
const cardAttr = ref<any[]>([ 
 | 
  { 
 | 
    label: "领用杆号", 
 | 
    prop: "poleNumber", 
 | 
  }, 
 | 
  { 
 | 
    label: "杆重(kg)", 
 | 
    prop: "poleWeight", 
 | 
  }, 
 | 
  { 
 | 
    label: "单丝盘号", 
 | 
    prop: "monofilamentNumber", 
 | 
  }, 
 | 
  { 
 | 
    label: "实际重量(kg)", 
 | 
    prop: "actuallyWeight", 
 | 
  }, 
 | 
  { 
 | 
    label: "盘长(m)", 
 | 
    prop: "oneLength", 
 | 
  }, 
 | 
  { 
 | 
    label: "理论重量(kg)", 
 | 
    prop: "theoryWeight", 
 | 
  }, 
 | 
  { 
 | 
    label: "规格型号", 
 | 
    prop: "model", 
 | 
  }, 
 | 
]); 
 | 
  
 | 
const twistReportList = ref<any[]>([]); 
 | 
  
 | 
const toEdit = () => { 
 | 
  uni.navigateTo({ 
 | 
    url: "/pages/production/twist/report/edit", 
 | 
  }); 
 | 
}; 
 | 
  
 | 
const addReport = async () => { 
 | 
  dialog.visible = true; 
 | 
  // 打开新增弹窗时自动执行 
 | 
  // await showDrawPopup(); 
 | 
}; 
 | 
  
 | 
const submit = async () => { 
 | 
  const isSuccess = await twistFormRef.value.submit(); 
 | 
  dialog.visible = !isSuccess; // 如果提交成功,关闭弹窗 
 | 
  if (isSuccess) { 
 | 
    // 提交成功后执行 
 | 
    // showDrawPopup(); 
 | 
  } 
 | 
}; 
 | 
  
 | 
const cancel = () => { 
 | 
  toast.show("取消"); 
 | 
  dialog.visible = false; 
 | 
}; 
 | 
  
 | 
const toAttachment = (item: any) => { 
 | 
  uni.navigateTo({ 
 | 
    url: "/pages/production/twist/attachment/index", 
 | 
    success: () => { 
 | 
      // 页面跳转成功后发送事件传递数据 
 | 
      uni.$emit("detailData", item); 
 | 
    }, 
 | 
  }); 
 | 
}; 
 | 
  
 | 
const showDrawPopup = async () => { 
 | 
  try { 
 | 
    const { data } = await TwistApi.querySingleDishInspection({ 
 | 
      id: paramsId.value, 
 | 
    }); 
 | 
    // 适配不同的数据结构返回格式 
 | 
    const responseData = data.data || data; 
 | 
    if (responseData && responseData.singleWirePrePareInfoVo) { 
 | 
      const info = responseData.singleWirePrePareInfoVo; 
 | 
      drawData.value = { 
 | 
        singleRegulationInfoArray: info.singleRegulationInfoArray || [], 
 | 
        steelRegulationInfo: info.steelRegulationInfo || {}, 
 | 
        reelToolingInfo: info.reelToolingInfo || {}, 
 | 
        wireId: paramsId.value, 
 | 
      }; 
 | 
      // 显示Draw弹窗 
 | 
      drawFormRef.visible = true; 
 | 
      toast.success("请填写领用信息!"); 
 | 
    } else { 
 | 
      // toast.error("已存在领用信息,无需填报!"); 
 | 
    } 
 | 
  } catch (error) { 
 | 
    console.error("获取领用信息失败:", error); 
 | 
    toast.error("获取信息失败,请重试"); 
 | 
  } 
 | 
}; 
 | 
  
 | 
const handleSelfCheck = (id: string) => { 
 | 
  console.log("执行自检操作,ID:", id); 
 | 
  uni.showToast({ 
 | 
    title: "自检功能开发中", 
 | 
    icon: "none", 
 | 
  }); 
 | 
}; 
 | 
  
 | 
// 保留原有的confirm函数,用于其他地方调用 
 | 
// const confirm = async () => { 
 | 
//   await showDrawPopup(); 
 | 
// }; 
 | 
  
 | 
// 获取拉丝报工列表 
 | 
const getTwistReportList = async () => { 
 | 
  const { data } = await ManageApi.getReportList({ 
 | 
    wireId: paramsId.value, 
 | 
    type: "绞线", 
 | 
  }); 
 | 
  pagingRef.value.complete(data); 
 | 
}; 
 | 
  
 | 
onLoad((options: any) => { 
 | 
  paramsId.value = options.id; 
 | 
  showDrawPopup(); 
 | 
}); 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.list { 
 | 
  height: calc(100vh - 80px); 
 | 
  padding: 12px; 
 | 
  background: #f3f9f8; 
 | 
  
 | 
  :deep() { 
 | 
    .round { 
 | 
      border-radius: 4px; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
.action { 
 | 
  display: flex; 
 | 
  justify-content: space-between; 
 | 
} 
 | 
</style> 
 |