From 37931d04e87cbae60cf833890c2c8432b389fa1a Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 01 三月 2024 08:56:51 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue |  141 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 132 insertions(+), 9 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 9ba0119..e0335aa 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
@@ -8,6 +8,8 @@
 import  useUserInfoStore from '@/stores/userInfo'
 import SelectProduct from "@/views/sd/product/SelectProduct.vue"
 import {changeFilterEvent,filterChanged} from "@/hook"
+import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
+import {CaretBottom} from "@element-plus/icons-vue";
 
 let dialogTableVisible = ref(false)
 let productVisible = ref(false)
@@ -15,6 +17,8 @@
 const router = useRouter()
 const route = useRoute()
 const xGrid = ref()
+let cellArea = ref()
+
 // 瀹氫箟琛ㄥご涓婁紶鏁版嵁
 const titleUploadData = ref({
   project:'',
@@ -56,6 +60,7 @@
 })
 let filterData = ref({})
 let rowIndex = ref(null)
+let rowClickIndex = ref(null)
 
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
@@ -74,7 +79,12 @@
     body: {
       options: [
         [
-          { code: 'addRow', name: '娣诲姞', prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false }
+          { code: 'addRow', name: '娣诲姞', prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false },
+          { code: 'deleteRow', name: '鍒犻櫎', prefixIcon: 'vxe-icon-delete', visible: true, disabled: true },
+          { code: 'copyChecked', name: '閫変腑鐩稿悓', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
+          { code: 'copyAll', name: '涔嬪悗鐩稿悓', prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
+          { code: 'clearChecked', name: '娓呴櫎閫変腑', prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
+          { code: 'computedMoney', name: '璁$畻閲戦', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true },
         ]
       ]
     }
@@ -123,6 +133,9 @@
       { min: 0, max: 255, message: '鍚嶇О闀垮害鍦� 0 鍒� 255 涓瓧绗�' }
     ],
     productId: [
+      { required: true, message: '璇烽�夋嫨浜у搧' }
+    ],
+    productName: [
       { required: true, message: '璇烽�夋嫨浜у搧' }
     ],
     price: [
@@ -181,6 +194,7 @@
       {'code': 'remarks', 'name': '鍔犲伐瑕佹眰'},
       {'code': 'Craft', 'name': '宸ヨ壓',status: 'primary',disabled: true},
       {'code': 'review', 'name': '瀹℃牳',status: 'primary',disabled: true},
+      {'code': 'updateMoney', 'name': '閲戦閲嶇疆',status: 'primary',disabled: true},
       {'code': 'saveOrder', 'name': '淇濆瓨',status: 'primary',icon: 'vxe-icon-save',disabled: false}
     ],
     slots: {
@@ -218,6 +232,10 @@
           dialogTableVisible.value=true
           break
         }
+        case 'updateMoney': {
+          updateMoney()
+          break
+        }
         case 'Craft': {
           await router.push({path: '/main/order/updateOrderCraft', query: {orderId: titleUploadData.value.orderId }})
           break
@@ -235,6 +253,11 @@
             ElMessage.error('娌℃湁琛ㄦ牸鏁版嵁锛�')
             return
           }
+          if(!gridOptions.menuConfig.body.options[0][5].disabled){
+            ElMessage.error('璇峰厛鎵撳紑鍙冲嚮鑿滃崟閲嶆柊璁$畻閲戦鍚庯紝鍐嶄繚瀛橈紒')
+            return
+          }
+
           const project = titleUploadData.value.project
           if(project === null || project === undefined || project === ''){
             ElMessage.error('杈撳叆椤圭洰鍚嶇О锛�')
@@ -287,7 +310,69 @@
             return
           }
           $grid.insert({})
-          //console.log($grid.getRecordset().insertRecords)
+          break
+        }
+        case 'deleteRow':{
+
+          $grid.remove(rowClickIndex.value)
+          rowClickIndex.value = null
+          gridOptions.menuConfig.body.options[0][1].disabled=true
+          gridOptions.menuConfig.body.options[0][5].disabled=false
+          break
+        }
+        case 'copyChecked' :{
+          let result = toolbarButtonClickEvent()
+          if(result){
+            const dataList = xGrid.value.getTableData().visibleData
+            const val = dataList[result.start][result.cell]
+            dataList.forEach((item,index) =>{
+              if(index>=result.start && index<=result.end){
+                item[result.cell] = val
+              }
+            })
+          }
+          gridOptions.menuConfig.body.options[0][5].disabled=false
+          break
+        }
+        case 'copyAll' :{
+          let result = toolbarButtonClickEvent()
+          if(result){
+            const dataList = xGrid.value.getTableData().visibleData
+            const val = dataList[result.start][result.cell]
+            dataList.forEach((item,index) =>{
+              if(index>=result.start ){
+                item[result.cell] = val
+              }
+            })
+          }
+          gridOptions.menuConfig.body.options[0][5].disabled=false
+          break
+        }
+        case 'clearChecked' :{
+          let result = toolbarButtonClickEvent()
+          if(result){
+            const dataList = xGrid.value.getTableData().visibleData
+            dataList.forEach((item,index) =>{
+              if(index>=result.start && index<=result.end){
+                item[result.cell] = ''
+              }
+            })
+          }
+          gridOptions.menuConfig.body.options[0][5].disabled=false
+          break
+        }
+        case 'computedMoney' :{
+          const  dataList = xGrid.value.getTableData().fullData
+          dataList.forEach((item,index) =>{
+            item.area = area(item)
+            item.grossArea = countArea(item)
+            item.computeArea = item.area
+            item.computeGrossArea = item.grossArea
+            item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2))
+          })
+          titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
+
+          gridOptions.menuConfig.body.options[0][5].disabled=true
           break
         }
       }
@@ -297,8 +382,11 @@
     const { row } = params
     productVisible.value = true
     rowIndex=row
-    //console.log(row)
-    //alert("鎴戞墦寮�浜嗕骇鍝佺晫闈�")
+  },
+  cellClick({ row }){
+    rowClickIndex.value = row
+    //鍙抽敭鑿滃崟鍒犻櫎鍚敤
+    gridOptions.menuConfig.body.options[0][1].disabled=false
   }
 }
 //鑾峰彇瀛愰〉闈骇鍝佹柟娉�
@@ -308,20 +396,25 @@
   productVisible.value = false
 }
 
+
+
 //鍒濆鍖栧垽鏂槸鍚︽湁id浼犲叆
 onMounted(()=>{
+  //鍚敤琛ㄦ牸鎷栧姩閫変腑
+  addListener(xGrid.value,gridOptions)
   const str = route.query.orderId
   if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
     return
   }
   request.post(`/order/getOrderById/${str}`).then((res) => {
     if(res.code==200){
+      console.log(res.data.order)
       titleUploadData.value = res.data.order
       //鍙栨秷宸ヨ壓鎸夐挳绂佺敤
       gridOptions.toolbarConfig.buttons[1].disabled = false
       //宸ヨ壓瀹℃牳鍚庝繚瀛樻寜閽鐢�
       if(res.data.order.processReview === 2){
-        gridOptions.toolbarConfig.buttons[3].disabled = true
+        gridOptions.toolbarConfig.buttons[4].disabled = true
       }
       //鍙栨秷瀹℃牳鎸夐挳绂佺敤
       if(res.data.order.processReview === 2 && res.data.order.orderReview === 0){
@@ -333,12 +426,13 @@
         gridOptions.toolbarConfig.buttons[2].disabled = false
         gridOptions.toolbarConfig.buttons[2].code='reviews'
         gridOptions.toolbarConfig.buttons[2].name='鍙嶅'
+        gridOptions.toolbarConfig.buttons[3].disabled = false
       }
       if(res.data.order.productionOrder !==0 ){
         gridOptions.toolbarConfig.buttons[2].disabled = true
       }
 
-
+      //鍔犺浇鍓〃鏁版嵁
       xGrid.value.reloadData(res.data.orderDetails)
     }else{
       ElMessage.error(res.msg)
@@ -377,6 +471,24 @@
     }
   })
 }
+
+//鏇存柊閲戦
+const updateMoney = () => {
+  const updateData = {
+    order: titleUploadData.value,
+    detail: xGrid.value.getTableData().fullData
+  }
+  request.post(`/order/updateOrderMoney`,updateData).then(res => {
+    if (res.code == 200){
+      ElMessage.success('鏇存柊閲戦鎴愬姛')
+      router.push({path:'/main/order/createOrder',query:{orderId:titleUploadData.value.orderId,random:Math.random()}})
+    }
+
+  })
+
+}
+
+
 // 瀹℃牳璁㈠崟
 const reviewOrder = (state) => {
   request.post(`/order/reviewOrderById/${titleUploadData.value.orderId}/${state}`).then(res =>{
@@ -475,8 +587,6 @@
 
 
 
-
-
 </script>
 
 <template>
@@ -557,7 +667,7 @@
         <el-col  :span="2"><el-text>璁$畻鏂瑰紡锛�</el-text></el-col>
         <el-col  :span="2">
           <el-select v-model="titleUploadData.calculateType"  clearable placeholder=" " >
-            <el-option value="1" label="闈㈢Н閲戦锛堝崟鐗囷級"/>
+            <el-option :value="1" label="闈㈢Н閲戦锛堝崟鐗囷級"/>
           </el-select>
         </el-col>
         <el-col  :span="2"><el-text>*涓氬姟鍛橈細</el-text></el-col>
@@ -641,6 +751,12 @@
     <el-dialog v-model="productVisible"  style="width: 80%;height:75% ">
       <select-product :rowIndex="rowIndex" @getProductRow="getProductRow" style="width: 100%;height: 100%" />
     </el-dialog>
+<!--閫変腑琛ㄦ牸 -->
+<!--    <div class="vxe-table&#45;&#45;cell-area" ref="cellArea" >-->
+<!--      <span  class="vxe-table&#45;&#45;cell-main-area"  ></span>-->
+
+<!--      <span class="vxe-table&#45;&#45;cell-active-area"  ></span>-->
+<!--    </div>-->
 
   </div>
 </template>
@@ -667,5 +783,12 @@
     width: 100%;
     height: 85%;
   }
+  .vxe-grid {
+    /* 绂佺敤娴忚鍣ㄩ粯璁ら�変腑 */
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+  }
 
 </style>
\ No newline at end of file

--
Gitblit v1.8.0