Zhouzhendong 5 лет назад
Родитель
Сommit
eb897b0507

+ 8 - 5
app/Http/Controllers/StoreCheckingReceiveController.php

@@ -67,6 +67,7 @@ class StoreCheckingReceiveController extends Controller
         if (!$mission_id || !$goods)return ['success'=>false, 'data'=>'参数传递错误!'];
         $storeCheckingReceive = app('storeCheckingReceiveService')->find($mission_id);
         if (!$storeCheckingReceive)return ['success'=>false, 'data'=>'盘收任务不存在'];
+        if ($storeCheckingReceive->status == '已收货')return ['success'=>false, 'data'=>'盘收任务已结束'];
 
         $storeCheckingReceiveItem = null;
         $is_receive_diff = "否";
@@ -77,10 +78,9 @@ class StoreCheckingReceiveController extends Controller
             if (count($item->commodity->barcodes) < 1)continue;
             foreach ($item->commodity->barcodes as $barcode){
                 if ($barcode->code == $goods['barcode']){
-                    if ($goods['bin_number'] == $item->bin_number &&
-                        $goods['batch_number'] == $item->batch_code &&
-                        $goods['produce_date'] == $item->produce_date &&
-                        $goods['valid_date'] == $item->valid_date){
+                    if ($goods['batch_number'] == $item->batch_code &&
+                        $goods['produce_date'] == $item->produced_at &&
+                        $goods['valid_date'] == $item->invalid_at){
                         $storeCheckingReceiveItem = $item;
                         break;
                     }
@@ -99,6 +99,7 @@ class StoreCheckingReceiveController extends Controller
                 $params['imported_diff_amount'] = $counted_amount;
             }else $params['imported_diff_amount'] = abs($counted_amount-$storeCheckingReceiveItem->imported_amount);
             if ($storeCheckingReceiveItem->asn_amount)$params['asn_diff_amount'] = abs($counted_amount-$storeCheckingReceiveItem->asn_amount);
+            if (!$storeCheckingReceiveItem->bin_number && $goods['bin_number'])$params['bin_number'] = $goods['bin_number'];
 
             if (isset($params['imported_diff_amount']) && $params['imported_diff_amount'] > 0)$is_receive_diff = "是";
             if (isset($params['asn_diff_amount']) && $params['asn_diff_amount'] > 0)$is_asn_diff = "是";
@@ -218,7 +219,7 @@ class StoreCheckingReceiveController extends Controller
     public function resetAmount(Request $request){
         if(!Gate::allows('入库管理-盘收一体-盘收-编辑')){ return ['success'=>false, 'data'=>'无权操作!'];  }
         $id = $request->mission_id ?? false;
-        if (!$id) new \Exception('盘收任务不存在');
+        if (!$id) return ['success'=>false, 'data'=>'盘收任务不存在'];
 
         app('storeCheckingReceiveItemService')->update(['store_checking_receive_id'=>$id],[
             'counted_amount'=>0,
@@ -237,6 +238,7 @@ class StoreCheckingReceiveController extends Controller
 
         $storeCheckingReceive = app('storeCheckingReceiveService')->find($id);
         if (!$storeCheckingReceive) return ['success'=>false, 'data'=>'未找到此盘点任务!'];
+        if ($storeCheckingReceive->status == '已收货')return ['success'=>false, 'data'=>'盘收任务已结束'];
 
         /** @var OracleDocAsnDetailService $oracleDocAsnDetailService */
         $oracleDocAsnDetailService = app('oracleDocAsnDetailService');
@@ -323,6 +325,7 @@ class StoreCheckingReceiveController extends Controller
         /** @var StoreCheckingReceive $storeCheckingReceive */
         $storeCheckingReceive = $storeCheckingReceiveService->find($id);
         if (!$storeCheckingReceive)return ['success'=>false, 'data'=>'盘收任务不存在'];
+        if ($storeCheckingReceive->status == '已收货')return ['success'=>false, 'data'=>'盘收任务已结束'];
 
         $storeController = new StoreController();
         $result = $storeController->quickStorage($storeCheckingReceive->asn,"正品",null);

+ 3 - 3
resources/views/store/checkingReceive/mission.blade.php

@@ -58,18 +58,18 @@
             <td>@{{ storeCheckingReceive.is_asn_diff }}</td>
             <td>@{{ storeCheckingReceive.created_at }}</td>
             <td>
-                @can('入库管理-盘收一体-盘收')<a target="_blank" :href="'{{url('store/checkingReceive/mission')}}/'+storeCheckingReceive.id">
+                @can('入库管理-盘收一体-盘收')<a v-if="storeCheckingReceive.status != '已收货'" target="_blank" :href="'{{url('store/checkingReceive/mission')}}/'+storeCheckingReceive.id">
                     <button class="btn btn-sm btn-outline-dark">盘收</button>
                 </a>@endcan
                 <a target="_blank" :href="'{{url('store/checkingReceive/mission')}}/'+storeCheckingReceive.id+'?is_show=false'">
                     <button class="btn btn-sm btn-outline-primary">查看</button>
                 </a>
                 @can('入库管理-盘收一体-盘收-编辑')
-                <button class="btn btn-sm btn-outline-success" data-toggle="modal" data-target="#asnWindow" @click="thisIndex=i">
+                <button v-if="storeCheckingReceive.status != '已收货'" class="btn btn-sm btn-outline-success" data-toggle="modal" data-target="#asnWindow" @click="thisIndex=i">
                     <span v-if="storeCheckingReceive.asn">重新</span>匹配ASN号
                 </button>@endcan
                 @can('入库管理-快速入库-录入')
-                <button v-if="storeCheckingReceive.status=='已ASN入库' && storeCheckingReceive.is_receive_diff != '是' && storeCheckingReceive.is_asn_diff != '是'"
+                <button v-if="storeCheckingReceive.status=='已ASN入库' && storeCheckingReceive.is_receive_diff != '是' && storeCheckingReceive.is_asn_diff != '是' && storeCheckingReceive.status != '已收货'"
                         class="btn btn-sm btn-outline-info" @click="receipt(i)">快速入库</button>
                 @endcan
             </td>

+ 23 - 8
resources/views/store/checkingReceive/show.blade.php

@@ -81,8 +81,8 @@
         @endcan
         <div class="ml-2 mt-2">
             <button class="btn btn-sm btn-outline-dark" @click="exportItem()">导出</button>
-            @can('入库管理-盘收一体-盘收-编辑')<button class="btn btn-sm btn-outline-danger" @click="isResetAmount()">重新清点</button>@endcan
-            @can('入库管理-盘收一体-盘收-编辑')<button class="btn btn-sm btn-outline-success" data-toggle="modal" data-target="#asnWindow">匹配ASN单据</button>@endcan
+            @can('入库管理-盘收一体-盘收-编辑')<button v-if="storeCheckingReceive.status != '已收货'" class="btn btn-sm btn-outline-danger" @click="isResetAmount()">重新清点</button>@endcan
+            @can('入库管理-盘收一体-盘收-编辑')<button v-if="storeCheckingReceive.status != '已收货'" class="btn btn-sm btn-outline-success" data-toggle="modal" data-target="#asnWindow">匹配ASN单据</button>@endcan
         </div>
         <div class="row text-primary ml-1 mr-2 mt-1 mb-1 w-100" style="background-color: #c3e3b5">
             <span class="ml-1">任务ID: <b class="text-dark">@{{ storeCheckingReceive.id }}</b></span>
@@ -123,7 +123,7 @@
         el:"#container",
         data:{
             storeCheckingReceive:{id:'{{$storeCheckingReceive->id}}',owner_name:'{{$storeCheckingReceive->owner ? $storeCheckingReceive->owner->name : ''}}',
-                                created_at:'{{$storeCheckingReceive->created_at}}',asn:'{{$storeCheckingReceive->asn}}'},
+                                created_at:'{{$storeCheckingReceive->created_at}}',asn:'{{$storeCheckingReceive->asn}}',status:'{{$storeCheckingReceive->status}}'},
             storeCheckingReceiveItems:[
                 @foreach($storeCheckingReceive->storeCheckingReceiveItems as $storeCheckingReceiveItem)
                 {id:'{{$storeCheckingReceiveItem->id}}',bin_number:'{{$storeCheckingReceiveItem->bin_number}}',
@@ -267,6 +267,7 @@
                                     this.storeCheckingReceiveItems[0].counted_amount = res.data.data.counted_amount;
                                     this.storeCheckingReceiveItems[0].imported_diff_amount = res.data.data.imported_diff_amount;
                                     this.storeCheckingReceiveItems[0].asn_diff_amount = res.data.data.asn_diff_amount;
+                                    this.storeCheckingReceiveItems[0].bin_number = res.data.data.bin_number;
                                 }else{
                                     this._removeCheckingReceiveItem(res.data.data.id);
                                     this._addStoreCheckingReceiveItem(res.data.data);
@@ -278,6 +279,7 @@
                             if (this.status.commitButtonVisible) this.status.commitButtonVisible=false;
                             this.audioDing();
                             if (this.inputMode === 'regular')this.cleanInputs();
+                            if (this.inputting.bin_number && !this.status.binDisable)this.status.binDisable = true;
                             return;
                         }
                         window.tempTip.setDuration(3000);
@@ -328,8 +330,10 @@
                     if (item.commodity_barcodes.length > 0){
                         return  item.commodity_barcodes.every(barcode=> {
                             if (barcode.code === this.inputting.barcode){
-                                this.inputting.bin_number=item.bin_number;
-                                this.status.binDisable=true;
+                                if (item.bin_number){
+                                    this.inputting.bin_number=item.bin_number;
+                                    this.status.binDisable=true;
+                                }
                                 return false;
                             }
                             return true;
@@ -362,9 +366,20 @@
                     });
                     return;
                 }
-                _this.status.binDisable=true;
+                if (item.bin_number) {
+                    _this.status.binDisable=true;
+                    _this.inputting.bin_number = item.bin_number;
+                }else{
+                    if (_this.status.binDisable){
+                        _this.status.binDisable=false;
+                        _this.lastScannedBarcode = _this.inputting.barcode;
+                        _this.inputting.bin_number = item.bin_number;
+                    }
+                }
                 _this.inputting.amount = '';
-                _this.inputting.bin_number = item.bin_number;
+                _this.inputting.produce_date=item.produced_at;
+                _this.inputting.valid_date=item.invalid_at;
+                _this.inputting.batch_number=item.batch_code;
                 if (signIncreasing && _this.lastScannedBarcode && _this.lastScannedBarcode !== _this.inputting.barcode) {
                     this.audioWarning_otherBarcode();
                     this.focusOutDocument();
@@ -452,7 +467,7 @@
                 });
             },
             resetAmount(){
-              axios.post('{{url('store/checkingReceive/mission/resetAmount')}}')
+              axios.post('{{url('store/checkingReceive/mission/resetAmount')}}',{mission_id:this.storeCheckingReceive.id})
                   .then(res=>{
                       if (res.data.success){
                           this.storeCheckingReceiveItems.forEach(function (item) {