From ab90b425f62ebca1730f52af7c87705020bef9de Mon Sep 17 00:00:00 2001
From: llj <132905093+newwwwwwtree@users.noreply.github.com>
Date: 星期三, 10 十二月 2025 11:33:22 +0800
Subject: [PATCH] 条码变更粘贴功能

---
 WebTM/views/模治具管理/模治具管理/KF_BarCodeStatusChangeBill.html |  252 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 227 insertions(+), 25 deletions(-)

diff --git "a/WebTM/views/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/KF_BarCodeStatusChangeBill.html" "b/WebTM/views/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/KF_BarCodeStatusChangeBill.html"
index 9684df7..06e3e0a 100644
--- "a/WebTM/views/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/KF_BarCodeStatusChangeBill.html"
+++ "b/WebTM/views/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/\346\250\241\346\262\273\345\205\267\347\256\241\347\220\206/KF_BarCodeStatusChangeBill.html"
@@ -45,6 +45,38 @@
         .layui-form-label {
             width: 25%;
         }
+        /* 娣诲姞绮樿创鍖哄煙鏍峰紡 */
+        .paste-area {
+            border: 2px dashed #ccc;
+            border-radius: 5px;
+            padding: 20px;
+            text-align: center;
+            margin: 10px;
+            background-color: #f9f9f9;
+            cursor: pointer;
+            min-height: 80px;
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+        }
+
+            .paste-area:hover {
+                border-color: #1E9FFF;
+                background-color: #f0f9ff;
+            }
+
+            .paste-area i {
+                font-size: 30px;
+                color: #1E9FFF;
+                margin-bottom: 10px;
+            }
+
+            .paste-area .paste-hint {
+                color: #666;
+                font-size: 14px;
+                margin-top: 5px;
+            }
     </style>
 
 </head>
@@ -75,30 +107,30 @@
                                             </div>
                                         </div>
                                         <!--<div class="layui-inline">
-                                            <label class="layui-form-label" style="width: 85px;">鍗曟嵁鐘舵��</label>
-                                            <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
-                                                <select name="HBillStatus" id="HBillStatus" lay-verify="HBillStatus">
-                                                    <option style="color:blue;" value="1">鏈</option>
-                                                    <option style="color:blue;" value="2">瀹℃牳閫氳繃</option>
-                                                    <option style="color:blue;" value="3">鍏抽棴</option>
-                                                    <option style="color:blue;" value="4">浣滃簾</option>
-                                                    <option style="color:blue;" value="5">瀹℃牳閫�鍥�</option>
-                                                    <option style="color:blue;" value="6">瀹℃牳涓�</option>
-                                                    <option style="color:blue;" value="7">宸查槄</option>
-                                                    <option style="color:blue;" value="8">宸插洖澶�</option>
-                                                    <option style="color:blue;" value="9">缁撴</option>
-                                                    <option style="color:blue;" value="10">楠岃瘉</option>
-                                                    <option style="color:blue;" value="11">涓嬭揪</option>
-                                                    <option style="color:blue;" value="12">寮�宸�</option>
-                                                    <option style="color:blue;" value="13">鐢宠瀹℃壒</option>-->
-                                                    <!--<option style="color:blue;" value="14">鐢宠妫�楠�</option>-->
-                                                    <!--<option style="color:blue;" value="15">鐢宠妫�楠�</option>
-                                                    <option style="color:blue;" value="16">鍒ゅ畾鍚堟牸</option>
-                                                    <option style="color:blue;" value="17">鍒ゅ畾涓嶅悎鏍�</option>
+                            <label class="layui-form-label" style="width: 85px;">鍗曟嵁鐘舵��</label>
+                            <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
+                                <select name="HBillStatus" id="HBillStatus" lay-verify="HBillStatus">
+                                    <option style="color:blue;" value="1">鏈</option>
+                                    <option style="color:blue;" value="2">瀹℃牳閫氳繃</option>
+                                    <option style="color:blue;" value="3">鍏抽棴</option>
+                                    <option style="color:blue;" value="4">浣滃簾</option>
+                                    <option style="color:blue;" value="5">瀹℃牳閫�鍥�</option>
+                                    <option style="color:blue;" value="6">瀹℃牳涓�</option>
+                                    <option style="color:blue;" value="7">宸查槄</option>
+                                    <option style="color:blue;" value="8">宸插洖澶�</option>
+                                    <option style="color:blue;" value="9">缁撴</option>
+                                    <option style="color:blue;" value="10">楠岃瘉</option>
+                                    <option style="color:blue;" value="11">涓嬭揪</option>
+                                    <option style="color:blue;" value="12">寮�宸�</option>
+                                    <option style="color:blue;" value="13">鐢宠瀹℃壒</option>-->
+                                        <!--<option style="color:blue;" value="14">鐢宠妫�楠�</option>-->
+                                        <!--<option style="color:blue;" value="15">鐢宠妫�楠�</option>
+                                    <option style="color:blue;" value="16">鍒ゅ畾鍚堟牸</option>
+                                    <option style="color:blue;" value="17">鍒ゅ畾涓嶅悎鏍�</option>
 
-                                                </select>
-                                            </div>
-                                        </div>-->
+                                </select>
+                            </div>
+                        </div>-->
                                         <div class="layui-inline">
                                             <label class="layui-form-label" style="width: 85px;">鏃ユ湡</label>
                                             <div class="layui-input-block" style="margin-left: 120px;">
@@ -229,7 +261,15 @@
                         <div class="layui-btn-container">
                             <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-AddLine"><i class="layui-icon layui-icon-form"></i>澧炲姞涓�琛�</button>
                             <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-CopyLine"><i class="layui-icon layui-icon-form"></i>澶嶅埗涓�琛�</button>
-                            <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn"><i class="layui-icon layui-icon-form"></i>鍒楄缃�</button>-->
+                            <button type="button" class="layui-btn layui-btn-sm layui-btn-warm" lay-event="btn-PasteExcel"><i class="layui-icon layui-icon-file-excel"></i>Excel绮樿创</button>
+                        </div>
+                        <!-- 绮樿创鍖哄煙-->
+                        <div id="excelPasteArea" class="paste-area" style="display: none; margin-top: 10px;">
+                            <i class="layui-icon layui-icon-file-excel"></i>
+                            <div>璇蜂粠Excel澶嶅埗鏁版嵁鍚庯紝鐐瑰嚮姝ゅ鎴栨寜Ctrl+V绮樿创</div>
+                            <div class="paste-hint">鏀寔澶嶅埗澶氳鏁版嵁锛岀郴缁熶細鑷姩鍖归厤鍒楁爣棰�</div>
+                            <div class="paste-hint" style="color: #ff5722; margin-top: 10px;">褰撳墠鏀寔绮樿创鐨勫垪锛氭潯褰㈢爜銆佺姸鎬併�佽〃浣撳娉�</div>
+                            <button type="button" class="layui-btn layui-btn-primary layui-btn-sm" style="margin-top: 10px;" id="btnCancelPaste">鍙栨秷绮樿创</button>
                         </div>
                     </script>
                 </form>
@@ -302,7 +342,15 @@
             //#endregion
 
             //#region 杩涘叆椤甸潰鍗冲姞杞�
-
+            var isPasteMode = false;
+            var columnMapping = {
+                '鏉″舰鐮�': 'HBarCode',
+                '鐘舵��': 'HBarCodeStatus_New',
+                '琛ㄤ綋澶囨敞': 'HRemark',
+                '鍏宠仈鏁伴噺': 'HRelationQty',
+                '鍏宠仈閲戦': 'HRelationMoney',
+                '鍘熺姸鎬�': 'HBarCodeStatus_Old'
+            };//鏍囬鍖归厤----澶嶅埗鍚庢牴鎹噷闈㈢殑鍐呭鍖归厤
             var rowdata = [{
                 "HRelationQty": 0, "HRelationMoney": 0, "HRemark": "", "HBarCode": "", "HBarCodeStatus_Old": ""
                 , "HBarCodeStatus_New": ""
@@ -388,6 +436,15 @@
                             checkRefresh();
                         }
                         break;
+                    case 'btn-PasteExcel':
+                        isPasteMode = !isPasteMode;
+                        if (isPasteMode) {
+                            $('#excelPasteArea').show();
+                            layer.msg('璇蜂粠Excel澶嶅埗鏁版嵁鍚庯紝鐐瑰嚮绮樿创鍖哄煙鎴栨寜Ctrl+V绮樿创', { icon: 1 });
+                        } else {
+                            $('#excelPasteArea').hide();
+                        }
+                        break;
                     ////鍒楄缃�
                     //case 'set_HideColumn':
                     //    get_HideColumn();
@@ -441,6 +498,151 @@
 
             //#endregion
 
+            //#region 绮樿创浠g爜鍧�
+            $(document).ready(function () {
+                $('#excelPasteArea').on('click', function (e) {
+                    if (isPasteMode) {
+                        $(this).focus();
+                    }
+                });
+                $('#btnCancelPaste').on('click', function () {
+                    isPasteMode = false;
+                    $('#excelPasteArea').hide();
+                });
+
+                // 鐩戝惉鍏ㄥ眬绮樿创浜嬩欢--->绮樿创鐩戝惉layui娌℃湁锛寊hege鐢ㄥ師鐢熺洃鍚�
+                $(document).on('paste', function (e) {
+                    if (!isPasteMode) return;
+                    e.preventDefault();
+
+                    // 鑾峰彇鍓创鏉挎暟鎹紙window.clipboardData杩欎釜涓嶇煡閬撲负浠�涔堥�氳繃window鎷夸笉鍒扮矘璐存澘鐨勫唴瀹癸紝鎸夐亾鐞嗚搴旇鍙互閫氳繃window鏉ョ洿鎺ヨ幏鍙栧埌锛�
+                    var clipboardData = e.originalEvent.clipboardData || window.clipboardData;
+                    var pastedData = clipboardData.getData('text');
+                    if (pastedData) {
+                        processExcelData(pastedData);
+                    }
+                });
+
+                // 鐩戝惉鑷繁
+                $('#excelPasteArea').on('paste', function (e) {
+                    if (!isPasteMode) return;
+                    e.preventDefault();
+                    e.stopPropagation();
+
+                    var clipboardData = e.originalEvent.clipboardData || window.clipboardData;
+                    var pastedData = clipboardData.getData('text');
+
+                    if (pastedData) {
+                        processExcelData(pastedData);
+                    }
+                });
+            });
+
+            // 澶勭悊Excel绮樿创鏁版嵁
+            function processExcelData(pastedData) {
+                try {
+                    // 锛圗xcel澶嶅埗鐨勬暟鎹�氬父鏄埗琛ㄧ鍒嗛殧锛屽垎鍓插嚭鏉ヨ繘琛屾搷浣滐紝涔熷彲浠ヨ瘯璇曠粰鍚庣鍓诧紝杩涜鍏朵粬鎿嶄綔锛屽啀浼犲洖鏉ワ級
+                    var rows = pastedData.split(/\r\n|\n|\r/);
+                    if (rows.length === 0) {
+                        layer.msg('娌℃湁妫�娴嬪埌鏁版嵁', { icon: 2 });
+                        return;
+                    }
+                    // 瑙f瀽绗竴琛屼綔涓烘爣棰樿锛岀劧鍚庡拰涓婇潰杩涜mapping
+                    var headers = rows[0].split('\t');
+                    var columnIndices = {};
+                    for (var i = 0; i < headers.length; i++) {
+                        var header = headers[i].trim();
+                        if (columnMapping[header]) {
+                            columnIndices[columnMapping[header]] = i;
+                        }
+                    }
+
+                    if (Object.keys(columnIndices).length === 0) {
+                        layer.msg('鏈瘑鍒埌鍖归厤鐨勫垪鏍囬锛岃妫�鏌xcel鍒楀悕', { icon: 2 });
+                        return;
+                    }
+
+                    var newRows = [];
+                    var dataRows = rows.slice(1);
+
+                    for (var r = 0; r < dataRows.length; r++) {
+                        var rowData = dataRows[r].split('\t');
+                        if (rowData.length === 0 || (rowData.length === 1 && rowData[0].trim() === '')) {
+                            continue;
+                        }
+                        // 鍒涘缓鏂拌瀵硅薄锛堢浉褰撲簬鏂板涓�琛岀殑鎿嶄綔
+                        var newRow = {
+                            "HRelationQty": 0,
+                            "HRelationMoney": 0,
+                            "HRemark": "",
+                            "HBarCode": "",
+                            "HBarCodeStatus_Old": "",
+                            "HBarCodeStatus_New": ""
+                        };
+                        for (var field in columnIndices) {
+                            var colIndex = columnIndices[field];
+                            if (colIndex < rowData.length) {
+                                var value = rowData[colIndex].trim();
+                                //涓嬫媺妗嗙殑鍒ゆ柇锛屽彲浠ヤ笉瑕�
+                                if (field === 'HBarCodeStatus_New') {
+                                    var validStatus = ['鍑哄簱', '鍏ュ簱', '寮傚父', '绌�'];
+                                    if (validStatus.indexOf(value) === -1) {
+                                        value = '';
+                                    }
+                                }
+
+                                newRow[field] = value;
+                            }
+                        }
+
+                        // 妫�鏌ユ潯褰㈢爜鏄惁涓虹┖锛岃嫢涓嶈鏉″舰鐮佸垽鏂紝鍒犱簡灏辫
+                        if (newRow.HBarCode && newRow.HBarCode.trim() !== '') {
+                            newRows.push(newRow);
+                        }
+                    }
+
+                    if (newRows.length === 0) {
+                        layer.msg('鏉″舰鐮佷笉鑳戒负绌�', { icon: 2 });
+                        return;
+                    }
+
+                    // 璺充釜寮规
+                    layer.confirm('灏嗘坊鍔� ' + newRows.length + ' 琛屾暟鎹紝鏄惁缁х画锛�', {
+                        icon: 3,
+                        title: '纭绮樿创',
+                        btn: ['纭畾', '鍙栨秷']
+                    }, function (index) {
+                        var currentData = table.cache["mainTable"];
+                        var isEmptyRow = function (row) {
+                            return (!row.HBarCode || row.HBarCode.trim() === '') &&
+                                (!row.HBarCodeStatus_New || row.HBarCodeStatus_New.trim() === '') &&
+                                (!row.HRemark || row.HRemark.trim() === '');
+                        };
+                        if (currentData.length === 1 && isEmptyRow(currentData[0])) {
+                            table.cache["mainTable"] = [];
+                        }
+                        for (var i = 0; i < newRows.length; i++) {
+                            table.cache["mainTable"].push(newRows[i]);
+                        }
+
+                        option.data = table.cache["mainTable"];
+                        table.render(option);
+                        for (var i = 1; i <= option.data.length; i++) {
+                            $('#HBarCodeStatus_New' + i).find("option[value='" + (option.data[i - 1].HBarCodeStatus_New || '') + "']").attr("selected", true);
+                        }
+                        form.render('select');
+                        checkRefresh();
+                        isPasteMode = false;
+                        $('#excelPasteArea').hide();
+                        layer.msg('鎴愬姛娣诲姞 ' + newRows.length + ' 琛屾暟鎹�', { icon: 1 });
+                        layer.close(index);
+                    });
+
+                } catch (error) {
+                    layer.msg('绮樿创澶辫触锛�' + error.message, { icon: 2 });
+                }
+            }
+            //#endregion
             //#region 姝ら〉闈㈡墍鏈夌殑鏂规硶
 
             // 鍒濆鍖栫晫闈�

--
Gitblit v1.9.1