chenlu
2025-11-24 1e31f9f7fe6f04236e97f72c0df3ce051d5f867e
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -21,6 +21,9 @@
const router = useRouter()
const route = useRoute()
const user=userInfo()
//是否复合工序
const laminating = ref(null)
//定义表头数据
const titleUploadData = ref({
  //是否合片工序
@@ -77,6 +80,9 @@
let technologicalProcess=''
let processName = ref([])
//隐藏全部完工序号
let  hiddenVal = ref(1)
//定义接收加载表头下拉数据
const titleSelectJson = ref({
  deviceType: [],
@@ -113,16 +119,16 @@
  //   label: t('reportingWorks.nightShift'),
  // },
   {
    value: '木箱',
    label: '木箱',
    value: t('reportingWorks.woodenBox'),
    label: t('reportingWorks.woodenBox'),
  },
  {
    value: '铁架',
    label: '铁架',
    value: t('reportingWorks.brandreth'),
    label: t('reportingWorks.brandreth'),
  },
  {
    value: '倒架',
    label: '倒架',
    value: t('reportingWorks.tilting'),
    label: t('reportingWorks.tilting'),
  },
]
@@ -146,6 +152,7 @@
   //route.query.reportingWorkId = 'BG2403150004'
  //判断是否传入报工编号
  if(route.query.reportingWorkId !== '' && route.query.reportingWorkId!=null){
    gridOptions.loading = true
    request.post(`reportingWork/selectUpdateReportingWork/${route.query.reportingWorkId}`).then(res=>{
      if(res.code === '200'){
        titleUploadData.value = res.data.reportingWork
@@ -200,6 +207,7 @@
        }
      }
     // getQuantity()
      gridOptions.loading = false
      inputDisabled.value = true
    })
  }
@@ -299,14 +307,14 @@
          },
          {
            code: 'SecondaryBreakage',
            name: "序号次破相同",
            name: t('reportingWorks.secondaryBreakage'),
            prefixIcon: 'vxe-icon-indicator',
            visible: true,
            disabled: false
          },
          {
            code: 'checkedBreakage',
            name: "选中次破相同",
            name: t('reportingWorks.checkedBreakage'),
            prefixIcon: 'vxe-icon-indicator',
            visible: true,
            disabled: false
@@ -425,8 +433,15 @@
          }else  if(row.quantity_card<row.completedQuantity){
            return new Error(t('reportingWorks.pleaseNumber10'))
          }
          const nextProcess = titleUploadData.value.nextProcess//下工序
          const completedSum = Number(row.thisQuantitySum) //总完工数量
          const nextQuantitySum = Number(row.nextQuantitySum) //总下工序完工数量
          let nextQuantitySum = ''
          if (nextProcess!=''){
             nextQuantitySum = Number(row.nextQuantitySum) //总下工序完工数量
          }else {
             nextQuantitySum = Number(row.received_quantity) //总下工序完工数量
          }
          const totalQuantity = Number(row.quantity) //可完工数量
          const val = Number(cellValue) //输入值
@@ -434,19 +449,48 @@
          const completedNum =
              (row.completedQuantity === undefined || row.completedQuantity===null || row.completedQuantity==='') ? 0 : row.completedQuantity
          //
          const okVal = completedSum - totalQuantity
          const okVal = completedSum - totalQuantity + row.breakageQuantity
          //当可操作数量为0,并且完工数量不等于可完工数量时
          if(row.minQuantity===0 && val!==totalQuantity ){
          if(row.minQuantity===0 && val!==(totalQuantity-row.breakageQuantity) ){
            return new Error(`${t('reportingWorks.pleaseNumber12')} ${okVal}+${val}=${okVal+val}\n
                              ${t('reportingWorks.pleaseNumber13')} ${nextQuantitySum}\n
                              ${t('reportingWorks.pleaseNumber14')}
            `)
          }
          if(titleUploadData.value.reportingWorkId!=null  && (val>totalQuantity ||  val<(row.quantity-row.minQuantity) )){
            return new Error(`${row.quantity-row.minQuantity}
            <=val<=
            ${row.quantity}`)
          if(titleUploadData.value.reportingWorkId!=null){
            if (nextProcess!=''){//非最后一道工序
              if(row.completedQuantityComputed>=row.minQuantity ){
                if((val<(row.completedQuantityComputed-row.minQuantity || val>=row.completedQuantityComputed))){
                  return new Error(`${row.completedQuantityComputed-row.minQuantity}
                                  <=val<=
                                  ${row.completedQuantityComputed}`)
                }
              }else{
                if((val>row.completedQuantityComputed)){
                  return new Error(`val
                                  <=
                                  ${row.completedQuantityComputed}`)
                }
              }
            }else {//最后一道工序
              if (val<row.completedQuantityComputed){
                         //库存数量、已入库数量
                if (val>(row.inventory_quantity-row.received_quantity)){
                  return new Error(`val
                                  <=
                                  ${row.inventory_quantity-row.received_quantity}`)
                }else {
                  if (val < (row.inventory_quantity-row.received_quantity)){
                        //完工总数、本次完工数、已入库数量
                    if (completedSum-row.completedQuantityComputed <row.received_quantity){
                      return new Error(`${t('reportingWorks.pleaseNumber15')}`)
                    }
                  }
                }
              }
            }
          }
        }
      }
@@ -458,6 +502,9 @@
      {code: 'saveReportingWorkReview', name: t('reportingWorks.saveAndReview'), status: 'primary', icon: 'vxe-icon-save',disabled:true},
      {code: 'saveWorkStorage', name: t('reportingWorks.saveWorkStorage'), status: 'primary', icon: 'vxe-icon-save'},
    ],
    // slots: {
    //   tools: 'toolbar_buttons'
    // },
    zoom: true,
    custom: true
  },
@@ -563,7 +610,7 @@
          //层号
          let technologyStr = resultProcessId[2];
          if (last != titleUploadData.value.thisProcess){
            ElMessage.error('请选择最后工序报工入库')
            ElMessage.error(t('reportingWorks.pleaseNumber16'))
            return
          }
          storageBtn.value = true
@@ -775,7 +822,7 @@
    },
    {
      field: 'responsiblePersonnel',
      title: '责任信息',
      title: t('rework.responsibilityInformation'),
      editRender: {name: 'input', attrs: {placeholder: ''}}
    },
@@ -979,6 +1026,23 @@
    return
  }
  const reportingWorkTime = titleUploadData.value.reportingWorkTime
    const currentTime = new Date()
    const targetTime = new Date(reportingWorkTime)
    //未来时间
    if (targetTime > currentTime) {
      ElMessage.error(t('reportingWorks.futureTime'))
      return
    }
    // 两个时间的毫秒差
    const diffMs = currentTime - targetTime
    // 转换为天数
    const diffDays = diffMs / (1000 * 60 * 60 * 24)
    if (diffDays > 396 && saveType!="update") {
      ElMessage.error(t('reportingWorks.longTime'))
      return
    }
  const seenIds = {}
  const uniqueByOrderNum = xGrid.value.getTableData().fullData.filter(item => {
    // 检查item的id是否已经在seenIds中
@@ -1029,6 +1093,7 @@
  }
  gridOptions.toolbarConfig.buttons[0].disabled=true
  gridOptions.toolbarConfig.buttons[1].disabled=true
  gridOptions.loading=true
  //判断保存还是修改
  if(saveType==='save'){
    saveReportingWorkRequest(requestData)
@@ -1046,6 +1111,7 @@
      if(storageBtn.value == true){
        getStorageWork();
      }
      gridOptions.loading=false
      router.push({path:'/main/reportingWorks/AddReportingWork',query:{processId:titleUploadData.value.processId,random:Math.random()}})
    }else{
      const errorObj = JSON.parse(res.msg)
@@ -1054,15 +1120,16 @@
          +t('reportingWorks.pleaseNumber3')+':'+errorObj.processNum+'<'+
          +t('reportingWorks.pleaseNumber4')+':'+errorObj.sumNum+'\n'
          +t('reportingWorks.pleaseNumber5')
      gridOptions.loading=false
      ElMessage.error(msg)
    }
  }).catch(err =>{
    ElMessage.error('提交失败,请刷新后重试')
    ElMessage.error(t('basicData.msg.ServerConnectionError'))
    gridOptions.loading=false
  }).finally(()=>{
    gridOptions.toolbarConfig.buttons[0].disabled=false
    gridOptions.toolbarConfig.buttons[1].disabled=false
    gridOptions.loading=false
  })
}
@@ -1257,47 +1324,30 @@
      //判断早晚班
      titleUploadData.value.classes=t('reportingWorks.early')
      titleUploadData.value.reportingWorkTime = formatCurrentTime()
      //处理编号列
      //定义存放编号数组
      const s01Values = [];
      for (let i = 0; i < res.data.Detail.length; i++) {
        const s01Values = [];
        // 遍历 detailList 数组,提取 S01 值到 s01Values 数组
        if (res.data.Detail[i].other_columns!=null|| res.data.Detail[i].other_columns!=undefined){
          res.data.Detail.forEach(element => {
            const otherColumnsObject = JSON.parse(element.other_columns);
            const s01Value = otherColumnsObject.S01;
            s01Values.push(s01Value || ''); // 如果 S01 值为空,添加空字符串或者其他默认值
          });
          // 将 s01Values 中的值赋给每个订单详情对象的 s01Value 属性
          res.data.Detail.forEach((detail, index) => {
            detail.s01Value = index < s01Values.length ? s01Values[index] : ''; // 赋值给 s01Value 属性
          });
        }
      }
      titleUploadData.value.reportingWorkTime = res.data.reportingWorkTiem
      //绑定下方表格
      detail.value = res.data.Detail
      // 使用map方法来处理每个对象
      let modifiedCollection = detail.value.map(item => {
      let modifiedCollection = res.data.Detail.map(item => {
        if (item.reviewed_state === 1) {
          return { ...item, reviewed_state: "已审核" };
          return { ...item, reviewed_state: t('productStock.approved') };
        }
        else if (item.reviewed_state === 0) {
          return { ...item, reviewed_state: "未审核" };
          return { ...item, reviewed_state: t('reportingWorks.unreviewed') };
        }
        else {
          // 其他情况保持不变
          return item;
        }
      });
      xGrid.value.reloadData(modifiedCollection)
      detail.value = modifiedCollection
      xGrid.value.reloadData(detail.value)
      hideButton()
      // nextTick(() => {
      //   hiddenCompletedOk()
      // })
    } else {
      ElMessage.warning(res.msg)
    }
@@ -1483,7 +1533,7 @@
  const seen = new Set();
  const result = rawData.filter(item => {
    // 1. 先把 completedQuantity 为 0 的剔除
    if (item.completedQuantity === 0) {
    if (item.completedQuantity === 0 || item.completedQuantity =="0" || item.completedQuantity =="") {
      return false;
    }
    // 2. 遇到相同 order_number,只保留第一次,后面都丢弃
@@ -1501,7 +1551,8 @@
      orderId: titleUploadData.value.orderId
    },
    processId:processIdStr,
    orderNumber:item.order_number
    orderNumber:item.order_number,
    inventoryQuantity:item.completedQuantity
  }));
  let flowData = ref({
    decValue:company.decValue,
@@ -1511,6 +1562,7 @@
    remark: remark.value,
    container: container.value,
    flowCard: resultData,
    createTime: titleUploadData.value.reportingWorkTime
  })
  //调用入库接口
  request.post("/finishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => {
@@ -1585,6 +1637,29 @@
  }
}
const onHiddenChange = (checked) => {
  hiddenVal.value = checked ? 1 : 0
  hiddenCompletedOk()
}
const hiddenCompletedOk = () => {
  const $grid = xGrid.value
  const data = $grid.getTableData().fullData
  const laminating = titleUploadData.value.laminating
  const filteredData = data.filter(row => {
    return row.completedQuantity>0 //过滤可完工数量为0的
  })
  if (laminating == ''){
    if (hiddenVal.value == 1){
      // 重新加载过滤后的数据
      $grid.loadData(filteredData)
    }else {
      //原始数据
      $grid.loadData(detail.value);
    }
  }
}
</script>
@@ -1793,7 +1868,15 @@
            </div>
          </div>
        </template>
        <template #toolbar_buttons>
          <el-checkbox
              :model-value="hiddenVal === 1"
              @change="onHiddenChange"
          >
            {{ t('reportingWorks.hiddenVal') }}
          </el-checkbox>
          &nbsp;&nbsp;
        </template>
      </vxe-grid>
    </div>
@@ -1988,8 +2071,7 @@
}
::v-deep(.mytable-scrollbar .col-red) {
  background-color: rgb(66,159,254);
  color: #fff;
  background-color: rgb(66,159,254)!important;
}