| | |
| | | .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> |
| | |
| | | </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;"> |
| | |
| | | <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> |
| | |
| | | //#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": "" |
| | |
| | | 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(); |
| | |
| | | |
| | | //#endregion |
| | | |
| | | //#region ç²è´´ä»£ç å |
| | | $(document).ready(function () { |
| | | $('#excelPasteArea').on('click', function (e) { |
| | | if (isPasteMode) { |
| | | $(this).focus(); |
| | | } |
| | | }); |
| | | $('#btnCancelPaste').on('click', function () { |
| | | isPasteMode = false; |
| | | $('#excelPasteArea').hide(); |
| | | }); |
| | | |
| | | // çå¬å
¨å±ç²è´´äºä»¶--->ç²è´´çå¬layui没æï¼zhegeç¨åççå¬ |
| | | $(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 { |
| | | // ï¼Excelå¤å¶çæ°æ®é常æ¯å¶è¡¨ç¬¦åéï¼åå²åºæ¥è¿è¡æä½ï¼ä¹å¯ä»¥è¯è¯ç»å端å²ï¼è¿è¡å
¶ä»æä½ï¼åä¼ åæ¥ï¼ |
| | | var rows = pastedData.split(/\r\n|\n|\r/); |
| | | if (rows.length === 0) { |
| | | layer.msg('æ²¡ææ£æµå°æ°æ®', { icon: 2 }); |
| | | return; |
| | | } |
| | | // è§£æç¬¬ä¸è¡ä½ä¸ºæ é¢è¡ï¼ç¶ååä¸é¢è¿è¡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('æªè¯å«å°å¹é
çåæ é¢ï¼è¯·æ£æ¥Excelåå', { 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 æ¤é¡µé¢ææçæ¹æ³ |
| | | |
| | | // åå§åçé¢ |