From 9b9fdcb4711279a303cf8da9ce9e3ff30b1bf6e0 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期四, 20 三月 2025 16:45:06 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue |  209 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 146 insertions(+), 63 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index 1b5ebc4..0f3d636 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -1,5 +1,5 @@
 <script lang="ts"  setup>
-import {onMounted, reactive, ref, watch} from "vue"
+import {nextTick, onMounted, reactive, ref, watch} from "vue"
 import {useRouter,useRoute} from "vue-router"
 import * as XLXS from "xlsx"
 import {ElMessage, ElMessageBox} from "element-plus"
@@ -145,7 +145,7 @@
     trigger: 'dblclick',
     mode: 'cell',
     showStatus: true,
-    showIcon:false
+    showIcon:false,
   },//琛ㄥご鍙傛暟
   columns:[
     {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
@@ -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)
       }
@@ -1266,7 +1342,6 @@
 //琛屽崟鍏冩牸淇敼淇敼瑙﹀彂姝や簨浠�
 const editClosedEvent = ({ row, column }) => {
 
-
   //鍒ゆ柇淇敼鐩稿簲鐨勬暟鍊间慨鏀归潰绉笌閲戦
    if (['width', 'height', 'quantity', 'price'].includes(column.property)) {
      if(titleUploadData.value?.orderReview!==2){
@@ -1277,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)
      }
@@ -1306,7 +1383,6 @@
    //   }
    // }
   titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
-
 
 }
 
@@ -1377,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
@@ -1389,7 +1469,7 @@
 }
 
 //琛ㄦ牸鍥炶溅锛屽湪琛ㄦ牸鏈�鍚庝竴琛屾坊鍔犱竴琛岀┖鏁版嵁
-const handleKeyDown = (evnt) =>{
+const handleKeyDown =async (evnt) =>{
   //鍒ゆ柇琛ㄧず鏄惁涓虹瓫閫夌姸鎬�
   if(xGrid.value.isFilter()){
     return
@@ -1413,9 +1493,12 @@
         break;
       case 'quantity':
         if(nextRowIndex === length){
+          await editClosedEvent({row,column})
+          xGrid.value.clearEdit()
           let rowNext = row
           delete rowNext._X_ROW_KEY
-          xGrid.value.insertAt(rowNext, 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)
@@ -1501,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>
 
 
@@ -1588,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>
@@ -1683,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">

--
Gitblit v1.8.0