| 项目代码/WIDESEA_WMSClient/src/assets/audio/error.mp3 | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WIDESEA_WMSClient/src/assets/audio/success.mp3 | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WIDESEA_WMSClient/src/views/inbound/allocateinboundOrder.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/assets/audio/error.mp3Binary files differ
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/assets/audio/success.mp3Binary files differ
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue
@@ -218,6 +218,15 @@ isSubmitting: false, palletGroupedBarcodes: {}, // é³é¢é ç½® audioConfig: { successPath: '/assets/audio/success.mp3', // å¯¹åº public ä¸çè·¯å¾ errorPath: '/assets/audio/error.mp3' }, // ç¼åé³é¢å®ä¾ï¼é¿å éå¤å建 successAudio: null, errorAudio: null, totalStockSum: 0, totalStockCount: 0, uniqueUnit: '', @@ -337,9 +346,84 @@ // ç¡®ä¿ç»ä»¶éæ¯æ¶ç§»é¤çå¬ this.removeKeyPressListener(); this.clearAllTimers(); this.removeKeyPressListener(); this.clearAllTimers(); //鿝é³é¢å®ä¾ this.successAudio = null; this.errorAudio = null; }, methods: { /** * åå§åé³é¢å®ä¾ï¼æå è½½ï¼åªåå»ºä¸æ¬¡ï¼ * @param {String} type - é³é¢ç±»åï¼success/error * @returns {Audio} é³é¢å®ä¾ */ initAudioInstance(type) { if (type === 'success' && this.successAudio) { return this.successAudio; } if (type === 'error' && this.errorAudio) { return this.errorAudio; } const audioPath = type === 'success' ? this.audioConfig.successPath : this.audioConfig.errorPath; const audioInstance = new Audio(audioPath); // ç¼åé³é¢å®ä¾ if (type === 'success') { this.successAudio = audioInstance; } else { this.errorAudio = audioInstance; } // é³é¢å 载失败åè°ï¼å¯éï¼ç¨äºè°è¯ï¼ audioInstance.onerror = (err) => { console.error(`ã${type} é³é¢ãå 载失败`, err); }; return audioInstance; }, /** * ææ¾é³é¢ * @param {String} type - é³é¢ç±»åï¼success/error */ playAudio(type) { try { const audioInstance = this.initAudioInstance(type); // éç½®ææ¾è¿åº¦ï¼é¿å éå¤ææ¾æ¶é³é¢æªç»æï¼ audioInstance.currentTime = 0; // ææ¾é³é¢ï¼è¿å Promise å¤çææ¾ç»æï¼å ¼å®¹é¨åæµè§å¨éå¶ï¼ audioInstance.play().catch((err) => { console.warn('é³é¢ææ¾å¤±è´¥ï¼å¯è½æ¯æµè§å¨èªå¨ææ¾çç¥éå¶ï¼', err); }); } catch (err) { console.error('ææ¾é³é¢æ¶åçå¼å¸¸', err); } }, /** * ææ¾æåé³é¢ */ playSuccessAudio() { this.playAudio('success'); }, /** * ææ¾å¤±è´¥é³é¢ */ playErrorAudio() { this.playAudio('error'); }, // æ·»å é®çäºä»¶çå¬ addKeyPressListener() { if (!this.keyPressListenerAdded) { @@ -717,6 +801,7 @@ this.error = `æ¡ç ${currentBarcode} 已被å½åæçç»çï¼è¯·å¿é夿ä½`; this.barcode = ''; this.focusBarcodeInput(); this.playErrorAudio(); return; } @@ -726,6 +811,7 @@ .then(valid => { if (!valid) { this.isSubmitting = false; this.playErrorAudio(); return; } @@ -792,6 +878,8 @@ this.scanCode = ''; this.isScanning = false; this.playSuccessAudio(); setTimeout(() => { this.focusBarcodeInput(); }, 100); ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/views/inbound/allocateinboundOrder.vue
@@ -339,6 +339,13 @@ bind: { key: "orderDetailStatusEnum", data: [] }, }, { field: "pallet", title: "å·²ç»æçå·", type: "string", width: 180, align: "left", }, { field: "creater", title: "å建人", type: "string", ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs
@@ -666,7 +666,6 @@ public override PageGridData<Dt_InboundOrderDetail> GetDetailPage(PageDataOptions options) { string wheres = ValidatePageOptions(options); //è·åæåºå段 Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties); List<OrderByModel> orderByModels = new List<OrderByModel>(); foreach (var item in orderbyDic) @@ -679,7 +678,6 @@ orderByModels.Add(orderByModel); } int totalCount = 0; List<SearchParameters> searchParametersList = new List<SearchParameters>(); if (!string.IsNullOrEmpty(options.Wheres)) @@ -691,35 +689,41 @@ } catch { } } //var data = BaseDal.Db.Queryable<Dt_AllocateOrderDetail>() // .WhereIF(!wheres.IsNullOrEmpty(), wheres) // .OrderBy(orderByModels) // .ToPageList(options.Page, options.Rows, ref totalCount); //Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.Id == (int)options.Value); //Dt_InboundOrder _InboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == allocateOrder.UpperOrderNo).First(); //var details = _inboundOrderDetailRepository.QueryData(x => x.OrderId == _InboundOrder.Id ); //foreach (var item in data) //{ // var detail = details.Where(x => x.MaterielCode == item.MaterielCode).FirstOrDefault(); // if (detail != null) // { // item.OrderQuantity = detail.OrderQuantity; // item.ReceiptQuantity = detail.ReceiptQuantity; // item.OverInQuantity = detail.OverInQuantity; // item.OrderDetailStatus = detail.OrderDetailStatus; // } //} //return new PageGridData<Dt_AllocateOrderDetail>(totalCount, data); Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.Id == (int)options.Value); Dt_InboundOrder _InboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == allocateOrder.UpperOrderNo).First(); var Id = _InboundOrder == null ? 0 : _InboundOrder.Id; var data = BaseDal.Db.Queryable<Dt_InboundOrderDetail>() .WhereIF(!wheres.IsNullOrEmpty(), wheres) .Where( x => x.OrderId == Id) .WhereIF(!string.IsNullOrEmpty(wheres), wheres) .Where(x => x.OrderId == Id) .OrderBy(orderByModels) .ToPageList(options.Page, options.Rows, ref totalCount); foreach (var detail in data) { if (string.IsNullOrEmpty(detail.Barcode)) { detail.Pallet = string.Empty; continue; } var stockDetail = BaseDal.Db.Queryable<Dt_StockInfoDetail>() .Where(sd => sd.Barcode == detail.Barcode) .First(); if (stockDetail == null || stockDetail.StockId <= 0) { detail.Pallet = string.Empty; continue; } var stock = BaseDal.Db.Queryable<Dt_StockInfo>() .Where(s => s.Id == stockDetail.StockId) .First(); detail.Pallet = stock == null ? string.Empty : stock.PalletCode; } return new PageGridData<Dt_InboundOrderDetail>(totalCount, data); }