| | |
| | | onClick: function () { |
| | | } |
| | | } |
| | | , |
| | | { |
| | | name: "æå¨107请æ±", |
| | | icon: '', |
| | | class: '', |
| | | value: 'ManualStock', |
| | | type: 'success', |
| | | onClick: function () { |
| | | } |
| | | } |
| | | ] |
| | | |
| | | export default buttons |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <vol-box |
| | | v-model="showDetialBox" |
| | | :lazy="true" |
| | | width="600px" |
| | | :padding="15" |
| | | title="æå¨107请æ±" |
| | | > |
| | | <div style="margin-bottom: 20px;"> |
| | | è·åå°çº¸å·æ¡ç æ¥è¯¢ERPåºå |
| | | <br> |
| | | <br> |
| | | <el-input |
| | | v-model="requestBarCode" |
| | | style="width: 180px" |
| | | label="çº¸å·æ¡ç " |
| | | ></el-input> |
| | | |
| | | <el-descriptions title="ERPåºå" v-if="showStock"> |
| | | <el-descriptions-item label="éé">{{ searchStock.weight ? searchStock.weight : "æ åºå"}}</el-descriptions-item> |
| | | <el-descriptions-item label="ç´å¾">{{ searchStock.thicknes ? searchStock.thicknes : "æ åºå" }}</el-descriptions-item> |
| | | <el-descriptions-item label="å¹
宽">{{ searchStock.wide ? searchStock.wide : "æ åºå"}}</el-descriptions-item> |
| | | </el-descriptions> |
| | | <el-button type="primary" size="small" @click="search">æ¥è¯¢</el-button> |
| | | </div> |
| | | <div> |
| | | <el-form> |
| | | <el-form-item label="请è¾RFIDï¼" |
| | | ><el-input |
| | | v-model="requestStock.rfId" |
| | | style="width: 180px" |
| | | label="请è¾RFID" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="请è¾ééï¼" |
| | | ><el-input |
| | | v-model="requestStock.weight" |
| | | style="width: 180px" |
| | | label="请è¾éé" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="请è¾ç´å¾ï¼" |
| | | ><el-input |
| | | v-model="requestStock.thicknes" |
| | | style="width: 180px" |
| | | label="请è¾ç´å¾" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="请è¾å¹
宽ï¼" |
| | | ><el-input |
| | | v-model="requestStock.wide" |
| | | style="width: 180px" |
| | | label="请è¾å¹
宽" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <template #footer> |
| | | <el-button type="primary" size="small" @click="submit">确认</el-button> |
| | | <el-button type="danger" size="small" @click="close">å
³é</el-button> |
| | | </template> |
| | | </vol-box> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import VolBox from "@/components/basic/VolBox.vue"; |
| | | export default { |
| | | components: { VolBox }, |
| | | data() { |
| | | return { |
| | | showDetialBox: false, |
| | | showStock: false, |
| | | requestBarCode:null, |
| | | searchStock: { |
| | | weight: null, |
| | | thicknes: null, |
| | | wide: null |
| | | }, |
| | | requestStock: { |
| | | rfId: null, |
| | | weight: null, |
| | | thicknes: null, |
| | | wide: null |
| | | }, |
| | | }; |
| | | }, |
| | | methods: { |
| | | open() { |
| | | this.showDetialBox = true; |
| | | }, |
| | | close() { |
| | | this.showDetialBox = false; |
| | | this.requestStock = { |
| | | rfId: null, |
| | | weight: null, |
| | | thicknes: null, |
| | | wide: null |
| | | }; |
| | | this.showStock = false; |
| | | this.requestBarCode = null; |
| | | this.searchStock = { |
| | | weight: null, |
| | | thicknes: null, |
| | | wide: null |
| | | }; |
| | | }, |
| | | search(){ |
| | | this.http |
| | | .post( |
| | | "api/ERPBST/BSTStockAsync?barCode=" + this.requestBarCode, |
| | | null, |
| | | "æ°æ®å¤çä¸" |
| | | ) |
| | | .then((x) => { |
| | | if(x.code==200){ |
| | | this.showStock = true; |
| | | this.searchStock.weight= x.data.qty ==0 ? null:x.data.qty; |
| | | this.searchStock.thicknes= x.data.thick ==0 ? null:x.data.thick; |
| | | this.searchStock.wide= x.data.w ==0 ? null:x.data.w; |
| | | console.log(this.searchStock); |
| | | }else{ |
| | | this.$message.error(x.message); |
| | | } |
| | | }); |
| | | }, |
| | | submit() { |
| | | if (this.showStock == false) return this.$message.error("请å
æ¥è¯¢ERPåºå"); |
| | | if (this.requestStock.rfId == null) return this.$message.error("请è¾å
¥RFID"); |
| | | if (this.requestStock.weight == null) return this.$message.error("请è¾å
¥éé"); |
| | | if (this.requestStock.thicknes == null) return this.$message.error("请è¾å
¥ç´å¾"); |
| | | if (this.requestStock.wide == null) return this.$message.error("请è¾å
¥å¹
宽"); |
| | | this.http |
| | | .post( |
| | | "api/Task/YLPurchaseBoxing?palletCode=" + this.requestStock.rfId + "&weight=" + this.requestStock.weight + "&thickness=" + this.requestStock.thicknes + "&wide=" + this.requestStock.wide+ "&stationCode=107", |
| | | null, |
| | | "æ°æ®å¤çä¸" |
| | | ) |
| | | .then((x) => { |
| | | if (!x.status) return this.$message.error(x.message); |
| | | this.$message.success("æä½æå"); |
| | | this.$parent.refresh(); |
| | | this.close(); |
| | | }); |
| | | }, |
| | | }, |
| | | created() {}, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .el-col { |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .grid-content { |
| | | border-radius: 4px; |
| | | min-height: 36px; |
| | | } |
| | | |
| | | .content-text { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .right-text { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | } |
| | | </style> |
| | | <style> |
| | | .el-table .warning-row { |
| | | background: #e6a23c; |
| | | } |
| | | |
| | | .el-table .success-row { |
| | | background: #f0f9eb; |
| | | } |
| | | |
| | | .el-table .error-row { |
| | | background: #f56c6c; |
| | | } |
| | | |
| | | canvas { |
| | | display: block; |
| | | margin: auto; |
| | | } |
| | | </style> |
| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | import gridHeader from './extend/manualStock.vue' |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridHeader: gridHeader, |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | |
| | | }); |
| | | } |
| | | } |
| | | let manualStock = this.buttons.find(x => x.value == 'ManualStock'); |
| | | if (manualStock) { |
| | | manualStock.onClick = function () { |
| | | this.$refs.gridHeader.open(); |
| | | } |
| | | } |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | |
| | | BSTResponse<BSTStockInfoDTO> bSTResponse = _invokeERPService.BSTStockAsync(item.PalletCode).DeserializeObject<BSTResponse<BSTStockInfoDTO>>(); |
| | | if (bSTResponse.Code == 500) |
| | | { |
| | | content.Message += $"æ¡ç {item.PalletCode}䏿ERPåºåä¸åå¨,"; |
| | | stockInfosDel.Add(item); |
| | | content.Message += $"æ¡ç {item.PalletCode}䏿ERPåºåå·²ä¸åå¨,"; |
| | | continue; |
| | | } |
| | | BSTStockInfoDTO bSTStockInfoDTO = bSTResponse.Data ?? throw new Exception($"䏿ERPæªè¿å{item.PalletCode}çåºåä¿¡æ¯"); |
| | | if (item.StockLength != bSTStockInfoDTO.StockMeter && bSTStockInfoDTO.StockMeter>0) |
| | | if (item.StockLength != bSTStockInfoDTO.StockMeter) |
| | | { |
| | | item.MaterielThickness = bSTStockInfoDTO.Thick; |
| | | item.MaterielWeight = bSTStockInfoDTO.Qty; |
| | |
| | | item.Remark = $"{item.StockLength}-{bSTStockInfoDTO.StockMeter}"; |
| | | item.StockLength = bSTStockInfoDTO.StockMeter; |
| | | stockInfosUp.Add(item); |
| | | } |
| | | else if(item.StockLength != bSTStockInfoDTO.StockMeter && bSTStockInfoDTO.StockMeter == 0) |
| | | { |
| | | stockInfosDel.Add(item); |
| | | } |
| | | } |
| | | //æ°æ®åºæä½ |
| | |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Basic; |
| | |
| | | _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoOld, oldQty, oldQty < stockInfoOld.StockLength ? stockInfoOld.StockLength- oldQty: oldQty- stockInfoOld.StockLength, StockChangeTypeEnum.MaterielGroup); |
| | | return content.OK($"èå颿éåºRFID{stockInfoOld.RfidCode}æ¡ç {stockInfoOld.PalletCode}"); |
| | | } |
| | | else if (stockInfoOld != null && stockInfoOld.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && stockInfoOld.StockStatus == StockStatusEmun.åºåºå®æ.ObjToInt() && stockInfoOld.StockLength<=0 && stationCode.IsNullOrEmpty()) |
| | | { |
| | | _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfoOld, App.User.UserId > 0 ? OperateTypeEnum.äººå·¥å®æ : OperateTypeEnum.èªå¨å®æ); |
| | | throw new Exception($"{palletCode}RFIDä¿¡æ¯èåé¢æåæ åºåéæ"); |
| | | } |
| | | else if (stockInfoOld != null) |
| | | { |
| | | throw new Exception($"{palletCode}RFIDä¿¡æ¯å·²åå¨"); |
| | |
| | | /// æ¥æ¶ä¸æç管æç¨ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveOutOrder")] |
| | | [HttpPost, HttpGet, Route("ReceiveOutOrder"), AllowAnonymous] |
| | | public WebResponseContent AddOutSGOrder([FromBody] List<SGOutOrderDTO> outOrderDTOs) |
| | | { |
| | | return _taskService.AddOutSGOrder(outOrderDTOs); |
| | |
| | | /// æ¥æ¶åæéé¢æä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceivePicking")] |
| | | [HttpPost, HttpGet, Route("ReceivePicking"), AllowAnonymous] |
| | | public WebResponseContent ReceivePicking([FromBody] List<BSTPickInfoDTO> bSTPickInfoDTOs) |
| | | { |
| | | return _taskService.ReceivePicking(bSTPickInfoDTOs); |
| | |
| | | /// æ¥æ¶åæééæä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveReturnOrder")] |
| | | [HttpPost, HttpGet, Route("ReceiveReturnOrder"), AllowAnonymous] |
| | | public WebResponseContent ReceiveReturnOrder([FromBody] List<BSTReturnOrderDTO> bSTReturnOrderDTOs) |
| | | { |
| | | return _returnBSTOrderService.ReceiveReturnOrder(bSTReturnOrderDTOs); |