廖井涛
2025-03-26 d33a7f7c7e7c218a4cb71cb039249b75bcfeef42
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -18,6 +18,7 @@
import footSum from "@/hook/footSum"
import {useI18n} from "vue-i18n"
import {multiply,multiplyAuto,divideAuto} from '@/utils/decimal'
import OrderNumberReportTransfer from "@/components/sd/order/OrderNumberReportTransfer.vue";
const { t } = useI18n()
let dialogTableVisible = ref(false)
@@ -25,6 +26,13 @@
let errorAreaVisible = ref(false)
let otherMoneyVisible = ref(false)
let sizeCheckVisible = ref(false)
let dialogTransferVisible = ref(false)
const transferData = ref({
  oldOrderId:null,
  newOrderNumber:null,
  newOrderId:null,
  oldOrderNumber:null,
})
let orderIdVisible = ref(false)
const maxTableLen =ref(500)
const userStore = useUserInfoStore()
@@ -99,8 +107,8 @@
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true,gt:0 },//开启虚拟滚动
  scrollX:{ enabled: true,gt:0 },//开启虚拟滚动
  virtualXConfig:{ enabled: true,gt:0 },//开启虚拟滚动
  virtualYConfig:{ enabled: true,gt:0 },//开启虚拟滚动
  showOverflow:true,
  menuConfig: {
    body: {
@@ -117,7 +125,8 @@
          { code: 'errorArea', name: t('basicData.errorSettlementArea'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
          { code: 'sizeCheck', name: t('basicData.sizeReview'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false },
          { code: 'updateOrderId', name: '修改订单号', prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false }
          { code: 'updateOrderId', name: t('searchOrder.updateOrderId'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false },
          { code: 'reportingTransfer', name: t('searchOrder.reportingTransfer'), prefixIcon: 'vxe-icon-send', visible: true, disabled: true }
        ]
      ]
    }
@@ -628,29 +637,62 @@
          if(result){
            const dataList = xGrid.value.getTableData().visibleData
            const val = getNestedProperty(dataList[result.start],result.cell)+""
            if(!/\d$/.test(val)){
              const matches = val.match(/\D/g);
              const b= val.lastIndexOf(matches[matches.length-1])
            const numbersArr = []
            const regex = /\d+/g
            let match
            while ((match = regex.exec(val))) {
              numbersArr.push({ number: match[0], index: match.index });
            }
            let numbers=numbersArr[numbersArr.length-1]
            var subStr1 = val.substring(numbers.index);
            var subStr2 = val.substring(0, numbers.index);
            let number = parseInt(subStr1)
            var reg =new RegExp(number,"g")
            dataList.forEach((item,index) =>{
              if(index>=result.start ){
                let newStr = subStr1.replace(reg, number);
                if(parseInt(newStr)>9){
                  newStr=parseInt(newStr)
                }
                setNestedValue(item,result.cell,subStr2+newStr)
                number=number+1
              const numbersArr = []
              const regex = /\d+/g
              let match
              while ((match = regex.exec(val))) {
                numbersArr.push({ number: match[0], index: match.index });
              }
              let numbers=numbersArr[numbersArr.length-1]
              var subStr1 = val.substring(numbers.index);
              const matche = subStr1.match(/(\d+)([^0-9]|$)/);
              const a= val.lastIndexOf(matche[2])
              var subStr2 = val.substring(0, numbers.index);
              var subStr3 = val.substring(a,b+1);
              let number = parseInt(subStr1)
              var reg =new RegExp(number,"g")
              dataList.forEach((item,index) =>{
                if(index>=result.start ){
                  let newStr = subStr1.replace(reg, number);
                  if(parseInt(newStr)>9){
                    newStr=parseInt(newStr)
                    if(!/\d$/.test(val)){
                      newStr=newStr+subStr3
                    }
                  }
                  setNestedValue(item,result.cell,subStr2+newStr)
                  number=number+1
                }
            })
              })
            }else{
              const numbersArr = []
              const regex = /\d+/g
              let match
              while ((match = regex.exec(val))) {
                numbersArr.push({ number: match[0], index: match.index });
              }
              let numbers=numbersArr[numbersArr.length-1]
              var subStr1 = val.substring(numbers.index);
              var subStr2 = val.substring(0, numbers.index);
              let number = parseInt(subStr1)
              var reg =new RegExp(number,"g")
              dataList.forEach((item,index) =>{
                if(index>=result.start ){
                  let newStr = subStr1.replace(reg, number);
                  if(parseInt(newStr)>9){
                    newStr=parseInt(newStr)
                  }
                  setNestedValue(item,result.cell,subStr2+newStr)
                  number=number+1
                }
              })
            }
          }
          computedMoney(result.cell)
@@ -662,40 +704,74 @@
          if (result) {
            const dataList = xGrid.value.getTableData().visibleData
            const val = getNestedProperty(dataList[result.start], result.cell)+""
            const numbersArr = []
            const regex = /\d+/g
            let match
            while ((match = regex.exec(val))) {
              numbersArr.push({ number: match[0], index: match.index });
            }
            let numbers=numbersArr[numbersArr.length-1]
            var subStr1 = val.substring(numbers.index);
            var subStr2 = val.substring(0, numbers.index);
            let number = parseInt(subStr1)
            var reg =new RegExp(number,"g")
            dataList.forEach((item,index) =>{
              if(index >= result.start && index <= result.end){
                let newStr = subStr1.replace(reg, number);
                if(parseInt(newStr)>9){
                  newStr=parseInt(newStr)
            if(!/\d$/.test(val)){
              const matches = val.match(/\D/g);
              const b= val.lastIndexOf(matches[matches.length-1])
              const numbersArr = []
              const regex = /\d+/g
              let match
              while ((match = regex.exec(val))) {
                numbersArr.push({ number: match[0], index: match.index });
              }
              let numbers=numbersArr[numbersArr.length-1]
              var subStr1 = val.substring(numbers.index);
              const matche = subStr1.match(/(\d+)([^0-9]|$)/);
              const a= val.lastIndexOf(matche[2])
              var subStr2 = val.substring(0, numbers.index);
              var subStr3 = val.substring(a,b+1);
              let number = parseInt(subStr1)
              var reg =new RegExp(number,"g")
              dataList.forEach((item,index) =>{
                if(index >= result.start && index <= result.end){
                  let newStr = subStr1.replace(reg, number);
                  if(parseInt(newStr)>9){
                    newStr=parseInt(newStr)
                    newStr=newStr+subStr3
                  }
                  setNestedValue(item,result.cell,subStr2+newStr)
                  number=number+1
                }
                setNestedValue(item,result.cell,subStr2+newStr)
                number=number+1
              }
            })
            /*let numbers = parseInt(val.match(/(\d+)$/))
            const string=val.replace(/\d+$/, '')
            dataList.forEach((item, index) => {
              if (index >= result.start && index <= result.end) {
                setNestedValue(item, result.cell, string + numbers)
                numbers = numbers + 1
              })
            }else{
              const numbersArr = []
              const regex = /\d+/g
              let match
              while ((match = regex.exec(val))) {
                numbersArr.push({ number: match[0], index: match.index });
              }
            })*/
              let numbers=numbersArr[numbersArr.length-1]
              var subStr1 = val.substring(numbers.index);
              var subStr2 = val.substring(0, numbers.index);
              let number = parseInt(subStr1)
              var reg =new RegExp(number,"g")
              dataList.forEach((item,index) =>{
                if(index >= result.start && index <= result.end){
                  let newStr = subStr1.replace(reg, number);
                  if(parseInt(newStr)>9){
                    newStr=parseInt(newStr)
                  }
                  setNestedValue(item,result.cell,subStr2+newStr)
                  number=number+1
                }
              })
            }
          }
          computedMoney(result.cell)
          gridOptions.menuConfig.body.options[0][5].disabled = false
          break
        }
        case "reportingTransfer":{
          const row = xGrid.value.getCurrentRecord()
          if(row===null){
            ElMessage.warning("请选择一行数据")
            return
          }
          transferData.value.oldOrderNumber = row.orderNumber
          transferData.value.oldOrderId = titleUploadData.value.orderId
          dialogTransferVisible.value = true
          break
        }
      }
@@ -821,9 +897,10 @@
          gridOptions.toolbarConfig.buttons[2].disabled = true
          gridOptions.toolbarConfig.buttons[3].disabled = true
          gridOptions.toolbarConfig.buttons[4].disabled = true
        }
      }
      if(res.data.order.processingCard>0 && company.connectMes){
        gridOptions.menuConfig.body.options[0][12].disabled = false
      }
      if(res.data.order.productionOrder !==0 ){
@@ -875,6 +952,8 @@
    if(titleUploadData.value.calculateType===3){
      item.grossAmount=multiply(item.price,item.quantity)
    }else if(titleUploadData.value.calculateType===4){
      item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue))
    }else{
      item.grossAmount=multiply(item.price,item.computeGrossArea)
    }
@@ -938,7 +1017,7 @@
      titleUploadData.value.alType = titleSelectJson.value.alType[0].basicName
      titleUploadData.value.calculateType = company.calculateType
      const today = new Date
      today.setTime(today.getTime() + (7 * 24 * 60 * 60 * 1000))
      today.setTime(today.getTime() + (company.deliveryDate * 24 * 60 * 60 * 1000))
      titleUploadData.value.deliveryDate = today.getFullYear() +
          '-' + ("0" + (today.getMonth() + 1)).slice(-2)
          + '-' + ("0" + today.getDate()).slice(-2)
@@ -1028,17 +1107,17 @@
          orderId:newOrderId.value,
          random:Math.random()}})
    }else if(res.data==="false1"){
      ElMessage.warning("输入订单号不能大于最大订单号")
      ElMessage.warning(t('order.msg.updateOrderIdErrorGtMaxId'))
    }else if(res.data==="false2"){
      ElMessage.warning("输入订单号已存在")
      ElMessage.warning(t('order.msg.updateOrderIdErrorIsExist'))
    }else if(res.data==="false3"){
      ElMessage.warning("输入订单号相同")
      ElMessage.warning(t('order.msg.updateOrderIdErrorIsSame'))
    }else if(res.data==="false4"){
      ElMessage.warning("输入订单号长度不符")
      ElMessage.warning(t('order.msg.updateOrderIdErrorDiscrepancyInLength'))
    }else if(res.data==="false5"){
      ElMessage.warning("请输入数字")
      ElMessage.warning(t('order.msg.updateOrderIdErrorInputNumber'))
    }else if(res.data==="false6"){
      ElMessage.warning("不能修改第一个单子")
      ElMessage.warning(t('order.msg.updateOrderIdErrorNotNo1'))
    }
  })
}
@@ -1081,8 +1160,7 @@
  await  ElMessageBox.confirm(
        t('order.msg.differentSize'),
        t('order.msg.warning'),
        {
          confirmButtonText: t('basicData.confirmButtonText'),
        {confirmButtonText: t('basicData.confirmButtonText'),
          cancelButtonText: t('basicData.cancelButtonText'),
          type: 'warning',
        }
@@ -1128,7 +1206,7 @@
    return
  }
  titleUploadData.value.project = item.project
  titleUploadData.value.salesmanId = item.salesmanId
  titleUploadData.value.salesmanId = parseInt(item.salesmanId)
  titleUploadData.value.salesman = item.salesman
  titleUploadData.value.contacts = item.contacts
  titleUploadData.value.contactNumber = item.contactNumber
@@ -1149,7 +1227,7 @@
const changeSaleMan = () => {
  const changedSaleManId = titleUploadData.value.salesmanId
  const SaleMan = titleSelectJson.value.saleMan.filter(item => item.id === changedSaleManId)
  titleUploadData.value.salesman = SaleMan[0].basicName
  titleUploadData.value.salesman = SaleMan[0]['basicName']
}
const area = (row) => {
@@ -1161,7 +1239,11 @@
  // 获取保留面积,
  const decValue = company.decValue
  switch (titleUploadData.value.calculateType){
    case 2:{
    case 2 :{
      areaSum = parseFloat(divideAuto(row.width * row.height* row.quantity,1000000,company.decValue))
      break
    }
    case 4:{
      areaSum = parseFloat(divideAuto(row.width * row.height* row.quantity,1000000,company.decValue))
      break
    }
@@ -1224,6 +1306,8 @@
      }
      if(titleUploadData.value.calculateType===3){
        item.grossAmount=multiply(item.price , item.quantity)
      }else if(titleUploadData.value.calculateType===4){
        item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue))
      }else{
        item.grossAmount=multiply(item.price * 1 , item.computeGrossArea)
      }
@@ -1285,6 +1369,8 @@
     }
     if(titleUploadData.value.calculateType===3){
       row.grossAmount=multiply(row.price ,row.quantity)
     }else if(titleUploadData.value.calculateType===4){
       row.grossAmount=parseFloat(divideAuto(row.width * row.height* row.quantity*row.price,1000000,company.decValue))
     }else{
       row.grossAmount=multiply(row.price , row.computeGrossArea)
     }
@@ -1384,10 +1470,24 @@
    if( !isNaN(item.computeArea*1) && item.computeArea != null ){
      if(titleUploadData.value.calculateType===3){
        item.grossAmount=parseFloat(multiply(item.price , item.quantity))
      }else if(titleUploadData.value.calculateType===4){
        if(titleUploadData.value?.orderReview!==2){
          item.grossArea = countArea(item)
          item.computeGrossArea = item.grossArea
          item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue))
        }else{
          item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue))
        }
      }else{
        item.grossArea = countArea(item)
        item.computeGrossArea = item.grossArea
        item.grossAmount=parseFloat(multiply(item.price , item.computeGrossArea))
        if(titleUploadData.value?.orderReview!==2){
          item.grossArea = countArea(item)
          item.computeGrossArea = item.grossArea
          item.grossAmount=parseFloat(multiply(item.price , item.computeGrossArea))
        }else{
          item.grossAmount=parseFloat(multiply(item.price , item.computeGrossArea))
        }
      }
    }
  })
@@ -1424,8 +1524,8 @@
          xGrid.value.clearEdit()
          let rowNext = row
          delete rowNext._X_ROW_KEY
          xGrid.value.insertAt(rowNext, xGrid.value.getTableData.length || -1)
          //xGrid.value.insertAt({}, xGrid.value.getTableData.length || -1)
          //xGrid.value.insertAt(rowNext, xGrid.value.getTableData.length || -1)
          xGrid.value.insertAt({}, xGrid.value.getTableData.length || -1)
        }
        const nextRow = xGrid.value.getTableData().fullData[nextRowIndex]
        xGrid.value.setCurrentRow(nextRow)
@@ -1495,6 +1595,13 @@
const createCustomerSuccess = async () => {
  await initOrder(1)
  createCustomerVisible.value = false
}
const orderNumberTransfer = () => {
  router.push({
    path:'/main/order/createOrder',
    query:{
      orderId:titleUploadData.value.orderId,
      random:Math.random()}})
}
</script>
@@ -1598,6 +1705,7 @@
            <el-option :value="1" :label="t('order.areaAmountPerPiece')"/>
            <el-option :value="2" :label="t('order.areaAmountAge')"/>
            <el-option :value="3" :label="t('order.quantityMount')"/>
            <el-option :value="4" :label="t('order.allAmount')"/>
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>*{{$t('order.salesman')}}:</el-text></el-col>
@@ -1693,7 +1801,6 @@
               class="product1"
               v-model="productVisible"
               @closed="closeProductDialog"
               :destroy-on-close="true"
               style="width: 80%;height:75%; ">
      <template #header >
        <div class="my-header">
@@ -1769,6 +1876,14 @@
      <create-customer :getOrderPage="'order'" @getOrderFunction="createCustomerSuccess" />
    </el-dialog>
<!--    订单报工转移-->
    <el-dialog v-model="dialogTransferVisible"
               title="报工转移"
               width="500"
               destroy-on-close :close-on-click-modal="false">
      <order-number-report-transfer :transferData="transferData" @orderNumberTransfer="orderNumberTransfer"/>
    </el-dialog>
  </div>
</template>