chenlu
2024-03-15 e7b89d449afc3912c21a64d59bafd7737f7376fd
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -18,6 +18,7 @@
const user=userInfo()
//定义表头数据
const titleUploadData = ref({
  reportingWorkId: null,
  //流程卡号
  processId: 'NG24030804A02/1',
  //销售单号
@@ -79,19 +80,29 @@
})
let inputDisabled = ref(false)
onMounted(() =>{
  if(route.query.processId !== undefined && route.query.processId!=='' && route.query.processId!=null ){
    titleUploadData.value.processId = route.query.processId
  }
  // route.query.reportingWorkId = 'BG2403140039'
  //判断是否传入报工编号
  if(route.query.reportingWorkId!== undefined && route.query.reportingWorkId!=='' && route.query.reportingWorkId!=null){
  if(route.query.reportingWorkId !== '' && route.query.reportingWorkId!=null){
    request.post(`reportingWork/selectUpdateReportingWork/${route.query.reportingWorkId}`).then(res=>{
      if(res.code === '200'){
        titleUploadData.value = res.data.reportingWork
        console.log(res.data)
        titleSelectJson.value = res.data.basic
        xGrid.value.reloadData(res.data.reportingWorkDetails)
        let button =  {
          code: 'update',
              name: '修改',
              status: 'primary',
              }
        gridOptions.toolbarConfig.buttons.push(button)
      }
      inputDisabled.value = true
    })
  }
})
@@ -278,7 +289,12 @@
})
let brokenRow = ref()
let brokenRow = ref({
  glass_child:'',
  order_number:'',
  technology_number:''
})
const gridEvents = {
  async toolbarButtonClick({code}) {
    const $grid = xGrid.value
@@ -290,7 +306,7 @@
            ElMessage.error(`校验不通过!`)
            return
          }
          saveReportingWork(0)
          saveReportingWork(0,'save')
          break
        }
        case 'saveReportingWorkReview':  {
@@ -299,7 +315,16 @@
            ElMessage.error(`校验不通过!`)
            return
          }
          saveReportingWork(1)
          saveReportingWork(1,'save')
          break
        }
        case 'update':  {
          const errMap = await $grid.validate(true)
          if (errMap) {
            ElMessage.error(`校验不通过!`)
            return
          }
          saveReportingWork(0,'update')
          break
        }
      }
@@ -500,16 +525,30 @@
  })
  let reportingWorkNum = isNaN(brokenRow.value.completedQuantity*1)?0:brokenRow.value.completedQuantity*1
  if((breakageQuantityCount+reportingWorkNum>brokenRow.value.quantity*1) ){
  if((breakageQuantityCount>brokenRow.value.quantity*1) ){
    ElMessage.warning(`损耗数:'${breakageQuantityCount}'
                               完工数:'${reportingWorkNum}'之和${breakageQuantityCount+reportingWorkNum}
                               不能大于${brokenRow.value.quantity*1}`)
    return false
  }
  brokenRow.value.completedQuantity = brokenRow.value.quantity-breakageQuantityCount
  breakageQuantityCount = breakageQuantityCount === 0 ? null : breakageQuantityCount
  brokenRow.value.breakageQuantity = breakageQuantityCount
  brokenRow.value.damageDetails=brokenGrid.value.getTableData().fullData
  // xGrid.value.getTableData().fullData.forEach(
  //
  // )
  const equalByOrderNum = xGrid.value.getTableData().fullData.filter((row) =>{
    return row.order_number === brokenRow.value.order_number
  })
  const maxQuantity =  Math.max(...equalByOrderNum.map(item =>item.breakageQuantity || 0))
  console.log(maxQuantity)
  equalByOrderNum.forEach((row) =>{
    row.completedQuantity= brokenRow.value.quantity*1-maxQuantity
  })
  getQuantity()
  done()
}
@@ -524,7 +563,7 @@
  }
})
const saveReportingWork = (type) => {
const saveReportingWork = (state,saveType) => {
  if(xGrid.value.getTableData().fullData.length===0){
    ElMessage.warning(`请选择流程卡数据`)
@@ -556,10 +595,19 @@
  const requestData = {
    title:titleUploadData.value,
    detail:xGrid.value.getTableData().fullData,
    type:type//审核状态
    type:state//审核状态
  }
  gridOptions.toolbarConfig.buttons[0].disabled=true
  gridOptions.toolbarConfig.buttons[1].disabled=true
  if(saveType==='save'){
    saveReportingWorkRequest(requestData)
  }else{
    updateReportingWorkRequest(requestData)
  }
}
const saveReportingWorkRequest = (requestData) =>{
  request.post(`/reportingWork/saveReportingWork`,requestData).then(res =>{
    if (res.code == 200){
      ElMessage.success("报工成功")
@@ -567,18 +615,33 @@
    }else{
      const errorObj = JSON.parse(res.msg)
      const msg = "序号:"+errorObj.orderNumber+'\n'
                +'小片顺序:'+errorObj.technologyNumber+'\n'
                +"实际可报工数量:"+errorObj.processNum+'<'+
                "报工数量:"+errorObj.sumNum+'\n'
                +"请刷新界面重新报工"
          +'小片顺序:'+errorObj.technologyNumber+'\n'
          +"实际可报工数量:"+errorObj.processNum+'<'+
          "报工数量:"+errorObj.sumNum+'\n'
          +"请刷新界面重新报工"
      ElMessage.error(msg)
    }
  }).catch(err =>{
    ElMessage.error(err.message)
  }).finally(()=>{
    gridOptions.toolbarConfig.buttons[0].disabled=false
    gridOptions.toolbarConfig.buttons[1].disabled=false
  })
}
//更新报工数据
const updateReportingWorkRequest = (requestData) =>{
  request.post(`/reportingWork/updateReportingWork`,requestData).then(res =>{
    if (res.code == 200){
      ElMessage.success("报工修改成功")
      router.push({path:'/main/reportingWorks/AddReportingWork',
        query:{
          processId:titleUploadData.value.processId,
          random:Math.random()}
      })
    }
  })
}
@@ -659,17 +722,17 @@
const getWork = () => {
  let processId = titleUploadData.value.processId
  if (processId.indexOf("/") < 0) {
    ElMessage.warning("请输入正确格式流程卡")
    return
  }
  let indexOfChar = processId.indexOf("/")
  let leftString = processId.slice(0, indexOfChar)
  if (leftString.length != 13) {
    ElMessage.warning("请输入正确位数的流程卡")
    return
  }
  // if (processId.indexOf("/") < 0) {
  //
  //   ElMessage.warning("请输入正确格式流程卡")
  //   return
  // }
  // let indexOfChar = processId.indexOf("/")
  // let leftString = processId.slice(0, indexOfChar)
  // if (leftString.length != 13) {
  //   ElMessage.warning("请输入正确位数的流程卡")
  //   return
  // }
//工序
  let process = titleUploadData.value.thisProcess
  if (process == "" || process == null) {
@@ -784,7 +847,26 @@
        item.completedQuantity=row.completedQuantity
      }
    })
    getQuantity()
  }
}
const  getQuantity = () => {
  const arr = xGrid.value.getTableData().fullData
  const returnArr =  arr.filter((obj, index, self) =>
      self.findIndex((t) => t.order_number === obj.order_number) === index
  )
  let sumBreak = 0
  let sumQuantity = 0
  returnArr.forEach((item)=>{
    sumQuantity+=Number(item.completedQuantity*1)
  })
  arr.forEach((item)=>{
    sumBreak+=Number(item.breakageQuantity) || 0
  })
  titleUploadData.value.thisCompletedQuantity = sumQuantity
  titleUploadData.value.thisWornQuantity = sumBreak
}
</script>
@@ -792,9 +874,10 @@
<template>
  <div style="height: 100%;width: 100%">
    <div id="head" style="height: 5%;width: 100%;margin-bottom: 5px">
      <el-input v-model="titleUploadData.processId" placeholder="流程卡号" style="width: 200px" @keyup.enter.native="getWork"/>
      <el-input :disabled="inputDisabled" v-if="titleUploadData.reportingWorkId" v-model="titleUploadData.reportingWorkId" placeholder="报工编号" style="width: 200px" />
      <el-input :disabled="inputDisabled" v-model="titleUploadData.processId" placeholder="流程卡号" style="width: 200px" @keyup.enter.native="getWork"/>
      &nbsp;
      <el-select v-model="titleUploadData.thisProcess" clearable placeholder="请选择工序" style="width: 120px"
      <el-select :disabled="inputDisabled" v-model="titleUploadData.thisProcess" clearable placeholder="请选择工序" style="width: 120px"
                 @change="getWork">
        <el-option
            v-for="item in titleSelectJson['processType']"
@@ -972,7 +1055,8 @@
          v-model="brokenVisible"
          :close-on-click-modal="false"
          :close-on-press-escape="false"
          :title="$t('reportingWorks.damageList')"
          :title="$t('reportingWorks.damageList')+':'
          +brokenRow.glass_child+'.'+brokenRow.order_number+'.'+brokenRow.technology_number"
          style="width: 80%;height:75% ">
        <vxe-grid