chenlu
2025-03-20 9b9fdcb4711279a303cf8da9ce9e3ff30b1bf6e0
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -628,29 +628,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,36 +695,62 @@
          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)
                }
                setNestedValue(item,result.cell,subStr2+newStr)
                number=number+1
              }
            if(!/\d$/.test(val)){
              const matches = val.match(/\D/g);
              const b= val.lastIndexOf(matches[matches.length-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
              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
                }
              })
            }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)
@@ -875,6 +934,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 +999,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)
@@ -1122,10 +1183,17 @@
let projects = ref([])
/*const changeProject = (val) => {
  titleUploadData.value.salesmanId = null
  titleUploadData.value.salesman = null
}*/
const changeProject = (item) => {
  if(typeof item === 'string'){
    titleUploadData.value.project = item
    return
  }
  titleUploadData.value.project = item.project
  titleUploadData.value.salesmanId = parseInt(item.salesmanId)
  titleUploadData.value.salesman = item.salesman
  titleUploadData.value.contacts = item.contacts
  titleUploadData.value.contactNumber = item.contactNumber
}
const changeCustomer =  () => {
  const changedCustomerId = titleUploadData.value.customerId
@@ -1134,13 +1202,15 @@
  titleUploadData.value.project = customer[0].project
  titleUploadData.value.salesmanId = customer[0].salesmanId
  titleUploadData.value.salesman = customer[0].salesman
  titleUploadData.value.contacts = customer[0].contacts
  titleUploadData.value.contactNumber = customer[0].contactNumber
  projects.value = customer[0].projectList
}
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) => {
@@ -1152,7 +1222,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
    }
@@ -1215,6 +1289,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)
      }
@@ -1276,6 +1352,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)
     }
@@ -1375,6 +1453,10 @@
    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){
        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.grossArea = countArea(item)
        item.computeGrossArea = item.grossArea
@@ -1415,8 +1497,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)
@@ -1502,7 +1584,7 @@
                     clearable placeholder=" " allow-create  filterable >
            <el-option v-for="item in projects"
                       :label="item.project"
                       :value="item.project"/>
                       :value="item"/>
          </el-select>
@@ -1589,6 +1671,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>
@@ -1684,7 +1767,6 @@
               class="product1"
               v-model="productVisible"
               @closed="closeProductDialog"
               :destroy-on-close="true"
               style="width: 80%;height:75%; ">
      <template #header >
        <div class="my-header">