Просмотр исходного кода

工单处理 丢件处理 客户添加信息

ajun 4 лет назад
Родитель
Сommit
ff059394d1

+ 26 - 19
app/WorkOrder.php

@@ -147,7 +147,7 @@ class WorkOrder extends Model
     }
 
     // 内物破损图片
-    public function commodityImage(): HasMany
+    public function commodityImages(): HasMany
     {
         return $this->hasMany(WorkOrderImage::class)->where('type', 1);
     }
@@ -180,11 +180,16 @@ class WorkOrder extends Model
     /** 默认 with 参数 */
     public function scopeDefaultWith($query)
     {
-        $query->with(['type', 'owner', 'issueType', 'creator', 'reviewer', 'order' => function ($query) {
-            /** @var $query Builder */
+        $query->with(['type', 'owner', 'issueType', 'creator','details',
+            'packageImages.uploadFile',
+            'commodityImages.uploadFile',
+            'dealImages.uploadFile',
+            'refundImages.uploadFile',
+        'reviewer', 'order' => function ($query) {
+            /** @var Builder $query  */
             $query->with('packages', 'logistic', 'owner');
         }, 'orderIssue' => function ($query) {
-            /** @var $query Builder */
+            /** @var Builder $query  */
             $query->with(['issueType', 'logs' => function ($query) {
                 if (Gate::denies('订单管理-问题件-客户不可见')) {
                     $query->with('user')->orderByDesc('created_at');
@@ -206,54 +211,56 @@ class WorkOrder extends Model
         NotificationService::SingleRegister($msg, $clientCode, "订单管理-问题件");
     }
 
-    public function addPackageImages($images)
-    {
+    public function addPackageImage($images)
+    {       // 外包装图
         foreach ($images as $image) {
             /** @var UploadedFile  $image */
             $count = $this->packageImages()->count();
             /** @var WorkOrderImage $workOrderImage */
-            $workOrderImage = WorkOrderImage::query()->create(['type' => 0, 'amount' => ++$count]);
+            $workOrderImage = $this->packageImages()->create(['type' => 0, 'amount' => ++$count]);
             $workOrderImage->saveFile($image);
-            $this->packageImages()->save($workOrderImage);
         }
+        $this->loadMissing('packageImages');
     }
 
     public function addCommodityImage($images)
-    {
+    {       // 内物破损图
         foreach ($images as $image) {
-            $count = $this->commodityImage()->count();
+            $count = $this->commodityImages()->count();
             /** @var WorkOrderImage $workOrderImage */
-            $workOrderImage = WorkOrderImage::query()->create(['type' => 1, 'amount' => ++$count]);
+            $workOrderImage = $this->commodityImages()->create(['type' => 1, 'amount' => ++$count]);
             $workOrderImage->saveFile($image);
-            $this->commodityImage()->save($workOrderImage);
         }
+        $this->loadMissing('commodityImages');
     }
 
-    public function addDealImages($images)
-    {
+    public function addDealImage($images)
+    {       // 交易截图
         foreach ($images as $image) {
             $count = $this->dealImages()->count();
             /** @var WorkOrderImage $workOrderImage */
-            $workOrderImage = WorkOrderImage::query()->create(['type' => 2, 'amount' => ++$count]);
+            $workOrderImage = $this->dealImages()->create(['type' => 2, 'amount' => ++$count]);
             $workOrderImage->saveFile($image);
-            $this->dealImages()->save($workOrderImage);
         }
+        $this->loadMissing('dealImages');
     }
 
     public function addRefundImage($images)
-    {
+    {        // 退款截图
         foreach ($images as $image) {
             $count = $this->refundImages()->count();
             /** @var WorkOrderImage $workOrderImage */
-            $workOrderImage = WorkOrderImage::query()->create(['type' => 3, 'amount' => ++$count]);
+            $workOrderImage = $this->refundImages()->create(['type' => 3, 'amount' => ++$count]);
             $workOrderImage->saveFile($image);
-            $this->refundImages()->save($workOrderImage);
         }
+        $this->loadMissing('dealImages');
     }
 
     public function saveWorkOrderDetail($params)
     {
         $param  = (new WorkOrderDetail($params))->getAttributes();
         $this->details()->create($param);
+        $this->loadMissing('details');
     }
+
 }

+ 4 - 5
app/WorkOrderImage.php

@@ -61,7 +61,7 @@ class WorkOrderImage extends Model
 
     public function uploadFile(): HasOne
     {
-        return $this->hasOne(UploadFile::class,'table_id','id')->where('table_name','work_order_image');
+        return $this->hasOne(UploadFile::class,'table_id','id')->where('table_name',$this->getTable());
     }
 
     public function saveFile(UploadedFile $image): bool
@@ -73,11 +73,9 @@ class WorkOrderImage extends Model
         $fileName = date('ymd') . '-' . Uuid::uuid1();
         $pathName = $dirPath . $fileName .'.' . $fileSuffix;
         $result = move_uploaded_file($tmpFile, $pathName);
-        if ($result) return false;
-        $img = Image::make($pathName);
-        $img->save($pathName);
+        if(!$result) return false;
         $this->uploadFile()->create(
-            ['table_name' => $this->getTable(), 'table_id' => $this['id'], 'url' => '/files/workOrder/'.$fileName, 'type' => $fileSuffix]
+            [ 'url' => '/files/workOrder/'.$fileName, 'type' => $fileSuffix,'table_name'=>$this->getTable()]
         );
         return true;
     }
@@ -86,6 +84,7 @@ class WorkOrderImage extends Model
     {
         $tmpFile = $image->getRealPath();
         $fileSuffix = $image->getClientOriginalExtension();
+
         if (!is_uploaded_file($tmpFile)) return false;
         if ($image->getSize() > 5 * 1024 * 1024) return false;
         if (!in_array($fileSuffix,[ 'gif','image','jpeg','jpg','png','svg'])) return false;

+ 1 - 1
database/migrations/2021_09_22_135941_create_work_order_details_table.php

@@ -16,7 +16,7 @@ class CreateWorkOrderDetailsTable extends Migration
         Schema::create('work_order_details', function (Blueprint $table) {
             $table->id();
             $table->integer('work_order_id')->index()->comment('工单');
-            $table->string('skus')->comment('破损sku');
+            $table->tinyInteger('sku_amount')->comment('破损sku数量');
             $table->decimal('price',11,3)->comment('价格');
             $table->string('receive_address')->comment('收方信息');
             $table->string('reissue_logistic_number')->comment('补发单号');

+ 77 - 0
resources/views/order/workOrder/_fill_loss_work_order.blade.php

@@ -0,0 +1,77 @@
+<div class="modal fade " id="fill-loss-work-order-modal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel" aria-hidden="true">
+    <div class="modal-dialog modal-xl modal-dialog-centered">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="checkModalLabel" >信息填写</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                {{--破损商品价格--}}
+                <div class="form-group row" >
+                    <label for="work-order-price" class="col-sm-2 col-form-label text-right">丢件价值</label>
+                    <div class="col-sm-10">
+                        <input type="number" id="work-order-price" class="form-control" v-model="workOrder.price" placeholder="破损商品价格">
+                    </div>
+                </div>
+                {{--快递单号--}}
+                <div class="form-group row" >
+                    <label for="work-order-logistic-number" class="col-sm-2 col-form-label text-right">补发单号</label>
+                    <div class="col-sm-10">
+                        <input type="text" id="work-order-logistic-number" class="form-control" v-model="workOrder['logistic_number']" placeholder="快递单号">
+                    </div>
+                </div>
+                {{--信息更改--}}
+                <div class="form-group row" >
+                    <hr>
+                    <label for="order_issue_type" class="col-sm-2 col-form-label text-right">收方信息</label>
+                    <div class="col-sm-10">
+                        <textarea class="form-control" name="" id="remake_info" cols="30" rows="2" v-model="workOrder.remake"></textarea>
+                    </div>
+                </div>
+
+                <div class="form-group " >
+                    <div class="offset-2 pl-1 custom-file col-10">
+                        <input type="file" id="deal-images" name="deal-images" multiple class="custom-file-input" accept="image/*" @change="pushImagesAndShow($event,workOrder.dealImages)">
+                        <label class="custom-file-label" for="deal-images">点击添加交易截图</label>
+                    </div>
+                    <div class="offset-2 mt-1 col-10">
+                        <div v-for="(image,i) in  workOrder.dealImages" class="d-inline-block col-4 position-relative card">
+                            <div class="card-body">
+                                <img :src="image.src" class="card-img-top" :alt="image.file.name">
+                                <div class="float-right position-relative">
+                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="spliceImage(i,workOrder.dealImages)">取消</button>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <hr>
+                <div class="form-group">
+                    <div class="pl-1 custom-file col-10 offset-2">
+                        <input type="file" id="refund-images" name="refund-images" multiple class="custom-file-input" accept="image/*" @change="pushImagesAndShow($event,workOrder.refundImages)">
+                        <label class="custom-file-label" for="refund-images">添加退款成功截图</label>
+                    </div>
+                    <div class="border-dark mt-1">
+                        <div v-for="(image,i) in  workOrder.refundImages" class="d-inline-block col-4 position-relative card">
+                            <div class="card-body">
+                                <img :src="image.src" class="card-img-top" :alt="image.file.name">
+                                <div class="float-right position-relative">
+                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="spliceImage(i,workOrder.refundImages)">取消</button>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭
+                </button>
+                {{--填充工单--}}
+                <button type="button" class="btn btn-outline-primary" @click="updateLossWorkOrder">提交
+                </button>
+            </div>
+        </div>
+    </div>
+</div>

+ 2 - 2
resources/views/order/workOrder/index.blade.php

@@ -52,7 +52,7 @@
                                     <span>@{{ i+1 }}</span>
                                     <span v-show="item.is_issue_order" class="badge badge-primary">问题件</span>
                                 </td>
-                                <td class="text-center">
+                                <td class="text-left">
                                     @can('订单管理-订单问题件生成')
                                         <button class="btn btn-sm btn-outline-primary"
                                                 @click="createOrderIssue(item,true)" v-show="!item.is_issue_order ">
@@ -65,7 +65,7 @@
                                             审核
                                         </button>
                                     @endcan
-                                        <button class="btn btn-sm btn-outline-inverse" @click="showFillModel(item,i)" v-if="item.issue_type.name ==='丢件'">工单填充</button>
+                                    <button class="btn btn-sm btn-outline-secondary" @click="showFillModel(item,i)" v-if="item.issue_type.name ==='快递丢件'">工单填充</button>
                                 </td>
                                 <td class="text-center">@{{ item.status }}</td>
                                 <td class="text-center">@{{ item.owner ? item.owner.name : '' }}</td>

+ 1 - 0
routes/apiLocal.php

@@ -263,6 +263,7 @@ Route::group(['prefix' => 'print'],function (){
 Route::prefix('workOrder')->group(function(){
     Route::post('store','WorkOrderController@storeApi')->name('workOrder.storeApi'); // 创建
     Route::post('damaged','WorkOrderController@damagedApi')->name('workOrder.damagedApi'); // 创建 破损
+    Route::post('loss','WorkOrderController@updateLossApi')->name('workOrder.lossApi'); // 客户提供丢件信息
     Route::post('store','WorkOrderController@storeApi')->name('workOrder.storeApi'); // 创建
     Route::post('review','WorkOrderController@reviewApi')->name('workOrder.reviewApi'); // 审核
     Route::post('batchReview','WorkOrderController@batchReviewApi')->name('workOrder.batchReviewApi');  // 批量审核