浏览代码

Merge branch 'Haozi'

zhouzhendong 4 年之前
父节点
当前提交
3d6afcad34

+ 1 - 0
app/Http/Controllers/OwnerController.php

@@ -189,6 +189,7 @@ class OwnerController extends Controller
         $re = $owner->update([
             "deleted_at" => date('Y-m-d H:i:s'),
         ]);
+        app("OwnerService")->syncUpdate($owner);//停用更新flux
         app("OwnerService")->deleteAuthority($owner);
         app('LogService')->log(__METHOD__, __FUNCTION__, $owner->toJson(), Auth::user()['id']);
         return ['success' => $re];

+ 22 - 13
app/Http/Controllers/RejectedBillItemController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 
 use App\Components\AsyncResponse;
 use App\Events\InformWMSReceivedEvent;
+use App\Log;
 use App\Owner;
 use App\RejectedBill;
 use App\RejectedBillItem;
@@ -49,8 +50,15 @@ class RejectedBillItemController extends Controller
             $rejectedBillItem->save();
         }
 
-        $packageImage=$service->uploadImages($request->packageImages??[],$rejectedBillItem->id,'外箱');
-        $commodityImages=$service->uploadImages($request->commodityImages??[],$rejectedBillItem->id,'产品');
+        try {
+            $packageImage=$request->packageImages ??false;
+            $commodityImages=$request->commodityImages ??false;
+             if ($packageImage) $service->uploadImages($packageImage, $rejectedBillItem->id, '外箱');
+             if ($commodityImages)  $service->uploadImages($commodityImages, $rejectedBillItem->id, '产品');
+        } catch (\Exception $e) {
+            \Illuminate\Support\Facades\Log::warning("退货录入图片-异常",
+                ["msg"=>$e->getMessage(),'data'=>json_encode($request)]);
+        }
         if (!$rejectedBillItem->rejectedBill || !$rejectedBillItem->rejectedBill->owner)return ['success'=>'false','failure_info'=>'退货单或货主不存在'];
 
 //        /** @var CommodityService $commodityService */
@@ -366,17 +374,20 @@ class RejectedBillItemController extends Controller
             $fileExtension=$file->getClientOriginalExtension();
 
             // 5.存储, 生成一个随机文件名
-            $fileName = date('ymd').'-'.Uuid::uuid1();//thumbnail common bulky
+            $fileName = date('ymd').'-'.Uuid::uuid1();
             $thumbnailName=storage_path('app/public/files/'.$fileName.'-thumbnail.'.$fileExtension);
             $commonName=storage_path('app/public/files/'.$fileName.'-common.'.$fileExtension);
             $bulkyName=storage_path('app/public/files/'.$fileName.'-bulky.'.$fileExtension);
             $result=move_uploaded_file ($tmpFile ,$bulkyName);
             if ($result){
-                $img=Image::make($bulkyName);
-                if ($img->height() > $img->width())
+                $img=Image::make($bulkyName)->resize(250,250);
+                if ($img->height() > $img->width()){
                     $img->heighten(250)->save($commonName);
-                else $img->widen(250)->save($commonName);
-                $img->heighten(28)->save($thumbnailName);
+                } else{
+                    $img->widen(250)->save($commonName);
+                    $img->widen(28)->save($thumbnailName);
+                }
+                if (file_exists($bulkyName)){unlink($bulkyName);}
                 /** @var UploadFile|\stdClass $uploadFile */
                 $uploadFile=new UploadFile([
                     "table_name"=>"rejected_bill_items",
@@ -385,9 +396,7 @@ class RejectedBillItemController extends Controller
                     "type"=>$fileExtension,
                     "file_name"=>$request->type??'',
                 ]);
-                if ($uploadFile->save())
-                    app('LogService')->log(__CLASS__,'退货详情图片上传',json_encode($request),Auth::user()['id']);
-                $res[] = $uploadFile;
+                if ($uploadFile->save()) $res[] = $uploadFile;
             }else $this->error("图片存储失败,检查服务器状态");
         }
         $this->success($res);
@@ -403,9 +412,9 @@ class RejectedBillItemController extends Controller
             $bulky=storage_path('app/public/'.$uploadFile->url.'-bulky.'.$uploadFile->type);
             $common=storage_path('app/public/'.$uploadFile->url.'-common.'.$uploadFile->type);
             $thumbnail=storage_path('app/public/'.$uploadFile->url.'-thumbnail.'.$uploadFile->type);
-            if (file_exists($bulky) && file_exists($common) && file_exists($thumbnail)){
-                unlink($bulky);unlink($common);unlink($thumbnail);
-            }
+            if (file_exists($bulky))unlink($bulky);
+            if (file_exists($common))unlink($common);
+            if (file_exists($thumbnail))unlink($thumbnail);
         }
         $query->delete();
         app('LogService')->log(__METHOD__,'退货商品详情图片删除',json_encode($request),Auth::user()['id']);

+ 0 - 5
app/Observers/OwnerObserver.php

@@ -18,11 +18,6 @@ class OwnerObserver
         if(config('app.env')=='production')app("OwnerService")->syncPush($owner);
     }
 
-    public function updated(Owner $owner)
-    {
-        if(config('app.env')=='production')app("OwnerService")->syncUpdate($owner);
-    }
-
     public function deleted(Owner $owner)
     {
         $owner->load("roles");

+ 8 - 13
app/Services/RejectedBillItemService.php

@@ -3,10 +3,8 @@
 namespace App\Services;
 
 use App\RejectedBillItem;
-use App\Traits\ModelLogChanging;
 use App\Traits\ServiceAppAop;
 use App\UploadFile;
-use Illuminate\Support\Facades\Auth;
 use Intervention\Image\Facades\Image;
 use Ramsey\Uuid\Uuid;
 
@@ -24,17 +22,14 @@ class RejectedBillItemService
             $tmpFile = $file->getRealPath();
             if (!is_uploaded_file($tmpFile)) return 3;//文件错误
             $fileExtension = $file->getClientOriginalExtension();
-            $fileName = date('ymd') . '-' . Uuid::uuid1();//thumbnail common bulky
-            $thumbnailName = storage_path('app/public/files/' . $fileName . '-thumbnail.' . $fileExtension);
-            $commonName = storage_path('app/public/files/' . $fileName . '-common.' . $fileExtension);
-            $bulkyName = storage_path('app/public/files/' . $fileName . '-bulky.' . $fileExtension);
-            $result = move_uploaded_file($tmpFile, $bulkyName);
-            if ($result) {
-                $img = Image::make($bulkyName);
-                if ($img->height() > $img->width())
-                    $img->heighten(250)->save($commonName);
-                else $img->widen(250)->save($commonName);
-                $img->heighten(28)->save($thumbnailName);
+
+            $fileName = date('ymd').'-'.Uuid::uuid1();
+            $thumbnailName=storage_path('app/public/files/'.$fileName.'-thumbnail.'.$fileExtension);
+            $commonName=storage_path('app/public/files/'.$fileName.'-common.'.$fileExtension);
+            if ($tmpFile){
+                $img=Image::make(file_get_contents($tmpFile))->resize(300,400);
+                $img->save($commonName);
+                $img->widen(28)->heighten(28)->save($thumbnailName);
                 /** @var UploadFile|\stdClass $uploadFile */
                 $uploadFile = new UploadFile([
                     "table_name" => "rejected_bill_items",

+ 45 - 7
resources/views/rejected/create.blade.php

@@ -737,7 +737,7 @@
                 },
                 getImages(images) {
                     return images.map((item) => {
-                        return item.file;
+                        return item.src;
                     })
                 },
                 pasteImage(event,imageArray){
@@ -986,7 +986,6 @@
                 },
                 checkImageWhetherNeed(item){
                     if (this.billInputting.id_owner==4)return 0;//幼岚非必要上传外箱及产品图
-                    if (this.billInputting.id_owner==10 && item.id_quality_label==3)return 0;
                     if (item.id_quality_label!=1){
                         if (item.commodityImages.length===0){
                             tempTip.setDuration(3000);
@@ -997,20 +996,58 @@
                     return 0;
                 },
                 setFormDataImage(formData, prefix, images) {
+                    let uuid=Math.floor(Math.random()*10000)
                     images.forEach((item) => {
-                        formData.append(`${prefix}[]`, item);
+                        formData.append(`${prefix}[]`, item,'rejected_bill_item'+uuid+'.jpg');
                     });
                 },
+                compressedImage(_this,packageImages){
+                    let blobs=[];
+                    packageImages.forEach(function (imageFile){
+                        let docImg=document.createElement('img');
+                        docImg.src=imageFile;
+                        const { width: originWidth, height: originHeight } = docImg
+                        let maxWidth = 400;
+                        let maxHeight = 600;
+                        // 需要压缩的目标尺寸
+                        let targetWidth = originWidth
+                        let targetHeight = originHeight
+                        // 等比例计算超过最大限制时缩放后的图片尺寸
+                        if (originWidth > maxWidth || originHeight > maxHeight) {
+                            if (originWidth / originHeight > maxWidth / maxHeight) {
+                                targetWidth = maxWidth
+                                targetHeight = Math.floor(maxWidth * (originHeight / originWidth))
+                            } else {
+                                targetWidth = Math.floor(maxHeight * (originWidth / originHeight))
+                                targetHeight = maxHeight;
+                            }
+                        }
+                        const canvas = document.createElement('canvas')
+                        const context = canvas.getContext('2d')
+                        // 设置宽高度为等同于要压缩图片的尺寸
+                        canvas.width = targetWidth
+                        canvas.height = targetHeight
+                        context.clearRect(0, 0, targetWidth, targetHeight)
+                        //将img绘制到画布上
+                        context.drawImage(docImg, 0, 0, targetWidth, targetHeight)
+                        let image = canvas.toDataURL();
+                        let blob=_this.dataUrlToBlob(image);
+                        blobs.push(blob)
+                    });
+                    return blobs;
+                },
                 getDamagedFormData(item){
                     let _this=this;
                     let formData = new FormData();
                     if (item.packageImages.length>0){
                         let packageImages = _this.getImages(item.packageImages);
-                        this.setFormDataImage(formData,'packageImages',packageImages);
+                        let blobs=_this.compressedImage(_this,packageImages);
+                        this.setFormDataImage(formData,'packageImages',blobs);
                     }
                     if (item.commodityImages.length>0){
                         let commodityImages = _this.getImages(item.commodityImages);
-                        this.setFormDataImage(formData,'commodityImages',commodityImages);
+                        let blobs=_this.compressedImage(_this,commodityImages);
+                        this.setFormDataImage(formData,'commodityImages',blobs);
                     }
                     formData.append('barcode_goods',item.barcode_goods);
                     formData.append('amount',item.amount);
@@ -1038,6 +1075,7 @@
                         }
                     }
                     let formData = _this.getDamagedFormData(_this.itemInputting);
+
                     axios.post(url, formData,{'Content-Type':'multipart/form-data'}).then(function (response) {
                         _this.cleanError();
                         if (response.data.success === 'true') {
@@ -1295,11 +1333,11 @@
                                     _this.items.splice(i, 1);
                                 }
                             });
+                            _this.cleanItem();
                         } else {
                             tempTip.show('删除失败,可尝试刷新页面再操作');
                         }
                     }).catch(function (response) {
-                        alert('连接错误:' + response);
                         tempTip.show('删除失败,可尝试刷新页面!');
                     });
                 },
@@ -1515,7 +1553,7 @@
                     let isBtn = '@can('运输管理-运单-图片删除') true @endcan ';
                     for(let i=0;i<uploadFiles.length;i++){
                         let btn = isBtn ? "<button type='button' class='btn btn-sm btn-danger' onclick='vueList.btnDeleteImg(this)' data-url='"+uploadFiles[i].url+"' value='"+id+"' style='position: relative;float: right;margin-top: -30px;' >删除</button>" : "";
-                        let href = this.imgPrefix+uploadFiles[i].url+'-bulky.'+uploadFiles[i].type;
+                        let href = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
                         let src = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
                         div += "<div><a target='_blank' href='"+href+"'><img alt='#' src='"+src+"' style='position: relative;' ></a>"+btn+"</div>"
                     }

+ 44 - 6
resources/views/rejected/edit.blade.php

@@ -833,7 +833,7 @@
                 },
                 getImages(images) {
                     return images.map((item) => {
-                        return item.file;
+                        return item.src;
                     })
                 },
                 pasteImage(event,imageArray){
@@ -877,20 +877,58 @@
                     return 0;
                 },
                 setFormDataImage(formData, prefix, images) {
+                    let uuid=Math.floor(Math.random()*10000)
                     images.forEach((item) => {
-                        formData.append(`${prefix}[]`, item);
+                        formData.append(`${prefix}[]`, item,'rejected_bill_item'+uuid+'.jpg');
                     });
                 },
+                compressedImage(_this,packageImages){
+                    let blobs=[];
+                    packageImages.forEach(function (imageFile){
+                        let docImg=document.createElement('img');
+                        docImg.src=imageFile;
+                        const { width: originWidth, height: originHeight } = docImg
+                        let maxWidth = 400;
+                        let maxHeight = 600;
+                        // 需要压缩的目标尺寸
+                        let targetWidth = originWidth
+                        let targetHeight = originHeight
+                        // 等比例计算超过最大限制时缩放后的图片尺寸
+                        if (originWidth > maxWidth || originHeight > maxHeight) {
+                            if (originWidth / originHeight > maxWidth / maxHeight) {
+                                targetWidth = maxWidth
+                                targetHeight = Math.floor(maxWidth * (originHeight / originWidth))
+                            } else {
+                                targetWidth = Math.floor(maxHeight * (originWidth / originHeight))
+                                targetHeight = maxHeight;
+                            }
+                        }
+                        const canvas = document.createElement('canvas')
+                        const context = canvas.getContext('2d')
+                        // 设置宽高度为等同于要压缩图片的尺寸
+                        canvas.width = targetWidth
+                        canvas.height = targetHeight
+                        context.clearRect(0, 0, targetWidth, targetHeight)
+                        //将img绘制到画布上
+                        context.drawImage(docImg, 0, 0, targetWidth, targetHeight)
+                        let image = canvas.toDataURL();
+                        let blob=_this.dataUrlToBlob(image);
+                        blobs.push(blob)
+                    });
+                    return blobs;
+                },
                 getDamagedFormData(item){
                     let _this=this;
                     let formData = new FormData();
                     if (item.packageImages.length>0){
                         let packageImages = _this.getImages(item.packageImages);
-                        this.setFormDataImage(formData,'packageImages',packageImages);
+                        let blobs=_this.compressedImage(_this,packageImages);
+                        this.setFormDataImage(formData,'packageImages',blobs);
                     }
                     if (item.commodityImages.length>0){
                         let commodityImages = _this.getImages(item.commodityImages);
-                        this.setFormDataImage(formData,'commodityImages',commodityImages);
+                        let blobs=_this.compressedImage(_this,commodityImages);
+                        this.setFormDataImage(formData,'commodityImages',blobs);
                     }
                     formData.append('barcode_goods',item.barcode_goods);
                     formData.append('amount',item.amount);
@@ -1079,11 +1117,11 @@
                                         _this.items.splice(i, 1);
                                     }
                                 });
+                            _this.cleanItem();
                         }else{
                             tempTip.show('删除失败,可尝试刷新页面再操作');
                         }
                     }).catch(function (response) {
-                        alert('连接错误:'+response);
                         tempTip.show('删除失败,可尝试刷新页面!');
                     });
                 },
@@ -1268,7 +1306,7 @@
                     let isBtn = '@can('运输管理-运单-图片删除') true @endcan ';
                     for(let i=0;i<uploadFiles.length;i++){
                         let btn = isBtn ? "<button type='button' class='btn btn-sm btn-danger' onclick='vueList.btnDeleteImg(this)' data-url='"+uploadFiles[i].url+"' value='"+id+"' style='position: relative;float: right;margin-top: -30px;' >删除</button>" : "";
-                        let href = this.imgPrefix+uploadFiles[i].url+'-bulky.'+uploadFiles[i].type;
+                        let href = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
                         let src = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
                         div += "<div><a target='_blank' href='"+href+"'><img alt='#' src='"+src+"' style='position: relative;' ></a>"+btn+"</div>"
                     }

+ 1 - 1
resources/views/rejected/search/general.blade.php

@@ -310,7 +310,7 @@
                     let div = "";
                     let isBtn = '@can('运输管理-运单-图片删除') true @endcan ';
                     for(let i=0;i<uploadFiles.length;i++){
-                        let href = this.imgPrefix+uploadFiles[i].url+'-bulky.'+uploadFiles[i].type;
+                        let href = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
                         let src = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
                         div += "<div><a target='_blank' href='"+href+"'><img alt='#' src='"+src+"' style='position: relative;' ></a>"+"</div>"
                     }