From bf23d66c841f7bc7de098a93b9a61fffe04d9cfb Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期三, 28 二月 2024 18:41:13 +0800
Subject: [PATCH] 提交右键菜单以及拖拉选中功能

---
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 50 insertions(+), 4 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 47d0e62..e104c19 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:'',
@@ -76,7 +80,9 @@
       options: [
         [
           { code: 'addRow', name: '娣诲姞', prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false },
-          { code: 'deleteRow', name: '鍒犻櫎', prefixIcon: 'vxe-icon-delete', visible: true, disabled: true }
+          { 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 },
         ]
       ]
     }
@@ -298,6 +304,32 @@
           gridOptions.menuConfig.body.options[0][1].disabled=true
           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
+              }
+            })
+          }
+          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
+              }
+            })
+          }
+          break
+        }
       }
     }
   },
@@ -321,6 +353,9 @@
 
 //鍒濆鍖栧垽鏂槸鍚︽湁id浼犲叆
 onMounted(()=>{
+  //鍚敤琛ㄦ牸鎷栧姩閫変腑
+  addListener(xGrid.value,gridOptions,cellArea.value)
+
   const str = route.query.orderId
   if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
     return
@@ -349,7 +384,7 @@
         gridOptions.toolbarConfig.buttons[2].disabled = true
       }
 
-
+      //鍔犺浇鍓〃鏁版嵁
       xGrid.value.reloadData(res.data.orderDetails)
     }else{
       ElMessage.error(res.msg)
@@ -483,8 +518,6 @@
 
     titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
 }
-
-
 
 
 
@@ -652,6 +685,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--cell-area" ref="cellArea" >
+      <span  class="vxe-table--cell-main-area"  ></span>
+
+      <span class="vxe-table--cell-active-area"  ></span>
+    </div>
 
   </div>
 </template>
@@ -678,5 +717,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