From 8f53694cc7ed5b9965d172a511ab39b914edbfb6 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 19 四月 2024 14:18:02 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/a1536384743/erp_-override

---
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue |  134 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 124 insertions(+), 10 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 2b482a9..45bd176 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
@@ -7,6 +7,7 @@
 import deepClone from "@/utils/deepClone"
 import  useUserInfoStore from '@/stores/userInfo'
 import SelectProduct from "@/views/sd/product/SelectProduct.vue"
+import OrderOtherMoney from "@/components/sd/order/OrderOtherMoney.vue"
 import {changeFilterEvent,filterChanged} from "@/hook"
 import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove"
 import downLoadFile from "@/hook/downLoadFile"
@@ -15,6 +16,9 @@
 
 let dialogTableVisible = ref(false)
 let productVisible = ref(false)
+let errorAreaVisible = ref(false)
+let otherMoneyVisible = ref(false)
+let errorArea = ref(null)
 const userStore = useUserInfoStore()
 const router = useRouter()
 const route = useRoute()
@@ -53,6 +57,7 @@
 })
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
+  orderOtherMoney:[],
   orderType:[],
   alType:[],
   icon:[],
@@ -64,6 +69,7 @@
 let filterData = ref({})
 let rowIndex = ref(null)
 let rowClickIndex = ref(null)
+let otherMoney = ref(null)
 
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
@@ -88,6 +94,8 @@
           { code: 'copyAll', name: t('basicData.sameAfterwards'), prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
           { code: 'clearChecked', name: t('basicData.clearSelection'), prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
           { code: 'computedMoney', name: t('basicData.calculateAmount'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true },
+          { code: 'errorArea', name: '璇樊缁撶畻闈㈢Н', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
+          { code: 'otherMoney', name: '鍏朵粬閲戦', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }
         ]
       ]
     }
@@ -105,7 +113,8 @@
   editConfig: {
     trigger: 'click',
     mode: 'cell',
-    showStatus: true
+    showStatus: true,
+    showIcon:false
   },//琛ㄥご鍙傛暟
   columns:[
     {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
@@ -129,7 +138,8 @@
     {field: 'bendRadius',width:160,  title: t('order.bendRadius'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
     {field: 'edgingType',width:160,  title: t('order.edgingType'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
     {field: 'processingNote',width:200,  title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
-    {field: 'remarks',width:140,  title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
+    {field: 'remarks',width:140,  title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+
 
   ],
   //琛ㄥ崟楠岃瘉
@@ -297,7 +307,8 @@
             }
             let order ={
               title:titleUploadData.value,
-              detail:$grid.getTableData().tableData
+              detail:$grid.getTableData().tableData,
+              otherMoney:otherMoney.value
             }
             saveOrder(order)
           }
@@ -305,7 +316,8 @@
         }
       }
     }
-  },//鍙抽敭鎸夐挳浜嬩欢
+  },
+  //鍙抽敭鎸夐挳浜嬩欢
   menuClick ({ menu, row, column }) {
     const $grid = xGrid.value
     if ($grid) {
@@ -383,6 +395,14 @@
           titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
 
           gridOptions.menuConfig.body.options[0][5].disabled=true
+          break
+        }
+        case 'errorArea' :{
+          errorAreaVisible.value=true
+          break
+        }
+        case 'otherMoney' :{
+          otherMoneyVisible.value=true
           break
         }
       }
@@ -470,11 +490,14 @@
       }
       if(res.data.order.productionOrder !==0 ){
         gridOptions.toolbarConfig.buttons[2].disabled = true
-
       }
+      const orderDetails = res.data.orderDetails
+      orderDetails.forEach(item => {
+        item.otherColumns = JSON.parse(item.otherColumns)
+      })
 
       //鍔犺浇鍓〃鏁版嵁
-      xGrid.value.reloadData(res.data.orderDetails)
+      xGrid.value.reloadData(orderDetails)
     }else{
       ElMessage.error(res.msg)
     }
@@ -495,9 +518,17 @@
 
 //椤甸潰绗竴娆″姞杞芥墽琛�
 request.get(`/basicData/orderBasicData`).then((res) => {
-
   if(res.code==200){
     titleSelectJson.value=deepClone(res.data)
+    //鍏朵粬閲戦
+    otherMoney.value = titleSelectJson.value.orderOtherMoney[0]
+    //let columns = []
+    otherMoney.value.forEach(item => {
+      let column = {field: `otherColumns.${item.column}`,width:50,  title: item.alias,editRender: { name: 'input'}}
+      //columns.push(column)
+      gridOptions.columns.push(column)
+    })
+
     //杩涘叆椤甸潰涓嬫媺妗嗚缃粯璁ゅ��
     titleUploadData.value.orderType = titleSelectJson.value.orderType[0].basicName
     titleUploadData.value.orderClassify = titleSelectJson.value.orderClassify[0].basicName
@@ -595,6 +626,9 @@
   list.forEach((item)=>{
     countMoney += parseFloat(item.grossAmount)
   })
+  otherMoney.value.forEach(item => {
+    countMoney+=item.quantity*item.price
+  })
   return parseFloat((countMoney).toFixed(2))
 }
 //瀵煎叆鍔熻兘
@@ -636,6 +670,16 @@
   downLoadFile('/importTemplate.xlsx','importTemplate.xlsx')
 }
 
+//瀛楃涓茶浆object
+
+function getNestedProperty(obj, path) {
+  return path.split('.').reduce(function(o, p) {
+    if(o && o.hasOwnProperty(p)) {
+      return o[p];
+    }
+  }, obj);
+}
+
 //琛屽崟鍏冩牸淇敼淇敼瑙﹀彂姝や簨浠�
 const editClosedEvent = ({ row, column }) => {
   //鍒ゆ柇淇敼鐩稿簲鐨勬暟鍊间慨鏀归潰绉笌閲戦
@@ -648,11 +692,57 @@
    }else if(column.property === 'computeArea'){
      row.computeGrossArea=parseFloat((row.computeArea*row.quantity).toFixed(2))
      row.grossAmount=parseFloat((row.price * row.computeGrossArea).toFixed(2))
+   }else if(column.property.indexOf('otherColumns.M')>-1){
+     let quantity = 0
+     xGrid.value.getTableData().fullData.forEach(item => {
+       quantity += item.quantity*(getNestedProperty(item,column.property)*1)
+     })
+     if(!isNaN(quantity)){
+       otherMoney.value.forEach(item => {
+         if(item.column===column.property.split('.')[1]){
+           item.quantity = quantity
+         }
+       })
+     }
    }
+  titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
 
-    titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
+
 }
 
+//璇樊闈㈢Н璁$畻鏂规硶
+const errorAreaComputed = () => {
+  const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
+  if (!regex.test(errorArea.value)) {
+    ElMessage.warning(t('basicData.msg.range99999Dec2'))
+    return
+  }
+  const fullData = xGrid.value.getTableData().fullData
+  if (!fullData.length){
+    ElMessage.warning("琛ㄦ牸涓棤浜у搧鏁版嵁")
+  }
+  fullData.forEach((item,index) => {
+    if( !isNaN(item.computeArea*1) && item.computeArea != null && item.computeArea*1 < errorArea.value){
+      item.computeArea = errorArea.value
+      item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(2))
+      item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2))
+    }
+  })
+  titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
+  errorAreaVisible.value= false
+}
+
+
+
+//鍏抽棴鍏朵粬閲戦鐣岄潰
+const refOtherMoney = ref()
+const closeOtherMoneyDialog = async (done) => {
+  const flag = await refOtherMoney.value.validate()
+  if(flag){
+    done()
+    titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
+  }
+}
 
 
 </script>
@@ -765,7 +855,7 @@
       <el-row>
         <el-col  :span="2"><el-text>{{$t('order.money')}}锛�</el-text></el-col>
         <el-col  :span="2"><el-text >{{titleUploadData.money}}</el-text></el-col>
-        <el-col  :span="2"><el-text>{{$t('order.customers')}}锛�</el-text></el-col>
+        <el-col  :span="2"><el-text>{{$t('order.contractId')}}锛�</el-text></el-col>
         <el-col  :span="2"><el-input v-model="titleUploadData.contractId"/></el-col>
         <el-col  :span="2"><el-text>{{$t('order.customerBatch')}}:</el-text></el-col>
         <el-col  :span="2"><el-input v-model="titleUploadData.customerBatch"/></el-col>
@@ -825,7 +915,31 @@
     <el-dialog v-model="productVisible"  style="width: 80%;height:75% ">
       <select-product :rowIndex="rowIndex" @getProductRow="getProductRow" style="width: 100%;height: 100%" />
     </el-dialog>
-
+<!--璇樊缁撶畻-->
+    <el-dialog v-model="errorAreaVisible"  style="width: 300px;height:150px ">
+      <el-row>
+        <el-col :span="10">
+          <el-input
+              v-model="errorArea"
+              :placeholder="'璇樊鍊�'"
+          />
+        </el-col>
+        <el-col :span="6">
+          <el-button @click="errorAreaComputed">纭</el-button>
+        </el-col>
+      </el-row>
+    </el-dialog>
+    <el-dialog v-model="otherMoneyVisible"
+               :title="'鍏朵粬閲戦'"
+               :close-on-click-modal="false"
+               :close-on-press-escape="false"
+               :before-close="closeOtherMoneyDialog"
+               style="width: 614px;height:445px ">
+      <order-other-money
+          ref="refOtherMoney"
+          :otherMoney="otherMoney"
+          style="width: 100%;height: 100%" />
+    </el-dialog>
 
   </div>
 </template>

--
Gitblit v1.8.0