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