<template> 
 | 
  <view class="list"> 
 | 
    <z-paging ref="pagingRef" v-model="wireReportList" :fixed="false" @query="getWireReportList"> 
 | 
      <template #top> 
 | 
        <CardTitle title="报工信息" :hideAction="true" :full="false" @action="addReport" /> 
 | 
      </template> 
 | 
      <wd-card 
 | 
        v-for="(item, index) in wireReportList" 
 | 
        :key="index" 
 | 
        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="toCheck(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> 
 | 
      <WireForm ref="wireFormRef" /> 
 | 
    </wd-popup> 
 | 
    <wd-popup v-model="drawFormRef.visible" position="bottom" custom-class="yl-popup"> 
 | 
      <Draw 
 | 
        :wire-id="drawData.wireId" 
 | 
        :pole-number="drawData.poleNumber" 
 | 
        @close="handleDrawClose" 
 | 
      /> 
 | 
    </wd-popup> 
 | 
    <wd-toast /> 
 | 
  </view> 
 | 
</template> 
 | 
<script setup lang="ts"> 
 | 
import CardTitle from "@/components/card-title/index.vue"; 
 | 
import WireForm from "./wireForm.vue"; 
 | 
import { useToast } from "wot-design-uni"; 
 | 
import ProductionCard from "../../components/ProductionCard.vue"; 
 | 
import zPaging from "@/components/z-paging/z-paging.vue"; 
 | 
import { onLoad } from "@dcloudio/uni-app"; 
 | 
import ManageApi from "@/api/product/manage"; 
 | 
import Draw from "./rawMaterial.vue"; 
 | 
  
 | 
const pagingRef = ref(); 
 | 
const wireFormRef = ref(); 
 | 
const paramsId = ref(); 
 | 
const toast = useToast(); 
 | 
const dialog = reactive({ 
 | 
  visible: false, 
 | 
}); 
 | 
  
 | 
const drawFormRef = reactive({ 
 | 
  visible: false, 
 | 
}); 
 | 
// 处理draw组件关闭事件 
 | 
const handleDrawClose = () => { 
 | 
  // 确保弹窗被正确关闭 
 | 
  drawFormRef.visible = false; 
 | 
}; 
 | 
const drawData = ref({ 
 | 
  wireId: "", 
 | 
  poleNumber: "", 
 | 
}); 
 | 
  
 | 
const showDrawPopup = async () => { 
 | 
  console.log("进入该方法!"); 
 | 
  try { 
 | 
    const { data } = await ManageApi.queryWireRawMaterialInspect({ 
 | 
      wireId: paramsId.value, 
 | 
      poleNumber: drawData.value.poleNumber, 
 | 
    }); 
 | 
    console.log("data", data); 
 | 
    // 适配不同的数据结构返回格式 
 | 
    if (data == null) { 
 | 
      drawData.value = { 
 | 
        wireId: paramsId.value, 
 | 
        poleNumber: drawData.value.poleNumber, 
 | 
      }; 
 | 
      // 显示Draw弹窗 
 | 
      drawFormRef.visible = true; 
 | 
      toast.success("请填写领用信息!"); 
 | 
    } else { 
 | 
      // toast.error("已存在领用信息,无需填报!"); 
 | 
    } 
 | 
  } catch (error) { 
 | 
    console.error("获取领用信息失败:", error); 
 | 
    toast.error("获取信息失败,请重试"); 
 | 
  } 
 | 
}; 
 | 
  
 | 
const cardAttr = ref<any[]>([ 
 | 
  { 
 | 
    label: "领用杆号", 
 | 
    prop: "poleNumber", 
 | 
    span: 24, 
 | 
  }, 
 | 
  { 
 | 
    label: "单丝盘号", 
 | 
    prop: "monofilamentNumber", 
 | 
    span: 24, 
 | 
  }, 
 | 
  { 
 | 
    label: "杆型号", 
 | 
    prop: "poleModel", 
 | 
  }, 
 | 
  { 
 | 
    label: "杆包号", 
 | 
    prop: "polePackageNumber", 
 | 
  }, 
 | 
  { 
 | 
    label: "杆重(kg)", 
 | 
    prop: "poleWeight", 
 | 
  }, 
 | 
  { 
 | 
    label: "规格型号", 
 | 
    prop: "model", 
 | 
  }, 
 | 
  { 
 | 
    label: "盘型号", 
 | 
    prop: "dishModel", 
 | 
  }, 
 | 
  { 
 | 
    label: "盘长(m)", 
 | 
    prop: "oneLength", 
 | 
  }, 
 | 
  { 
 | 
    label: "实际长度", 
 | 
    prop: "actuallyLength", 
 | 
  }, 
 | 
  { 
 | 
    label: "实际重量(kg)", 
 | 
    prop: "actuallyWeight", 
 | 
  }, 
 | 
]); 
 | 
  
 | 
const wireReportList = ref<any[]>([]); 
 | 
  
 | 
// const toEdit = () => { 
 | 
//   uni.navigateTo({ 
 | 
//     url: "/pages/production/wire/report/wireEdit", 
 | 
//   }); 
 | 
// }; 
 | 
  
 | 
const addReport = () => { 
 | 
  dialog.visible = true; 
 | 
}; 
 | 
  
 | 
const submit = async () => { 
 | 
  const result = await wireFormRef.value.submit(); 
 | 
  dialog.visible = !result.success; 
 | 
  // 设置poleNumber到drawData中 
 | 
  if (result.success) { 
 | 
    drawData.value.poleNumber = result.poleNumber; 
 | 
    showDrawPopup(); 
 | 
  } 
 | 
  pagingRef.value.reload(); 
 | 
}; 
 | 
  
 | 
const cancel = () => { 
 | 
  toast.show("取消"); 
 | 
  dialog.visible = false; 
 | 
}; 
 | 
  
 | 
const toAttachment = (item: any) => { 
 | 
  uni.navigateTo({ 
 | 
    url: "/pages/production/wire/attachment/index", 
 | 
    success: () => { 
 | 
      // 页面跳转成功后发送事件传递数据 
 | 
      uni.$emit("detailData", item); 
 | 
    }, 
 | 
  }); 
 | 
}; 
 | 
  
 | 
const toCheck = (id: number) => { 
 | 
  uni.navigateTo({ 
 | 
    url: `/pages/production/wire/selfInspect/index?id=${id}`, 
 | 
  }); 
 | 
}; 
 | 
  
 | 
// 获取拉丝报工列表 
 | 
const getWireReportList = async () => { 
 | 
  const { data } = await ManageApi.getReportList({ 
 | 
    wireId: paramsId.value, 
 | 
    type: "拉丝", 
 | 
  }); 
 | 
  pagingRef.value.complete(data); 
 | 
}; 
 | 
  
 | 
onLoad((options: any) => { 
 | 
  paramsId.value = options.id; 
 | 
}); 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.list { 
 | 
  height: calc(100vh - 30px); 
 | 
  padding: 12px; 
 | 
  background: #f3f9f8; 
 | 
  
 | 
  :deep() { 
 | 
    .round { 
 | 
      border-radius: 4px; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
.action { 
 | 
  display: flex; 
 | 
  justify-content: space-between; 
 | 
} 
 | 
</style> 
 |