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

Merge branch 'master' into yang

ANG YU 4 лет назад
Родитель
Сommit
e6029fbe44

+ 5 - 2
app/Console/Commands/SyncWMSOrderTask.php

@@ -9,6 +9,7 @@ use App\ValueStore;
 use Carbon\Carbon;
 use Illuminate\Console\Command;
 use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
 
 class SyncWMSOrderTask extends Command
 {
@@ -61,11 +62,13 @@ class SyncWMSOrderTask extends Command
         $start = (string)$start;
         Cache::put($this->last_start_key,$start);
         ValueStore::query()->where('name',$this->last_start_key)->update(['value'=>$start]);
+        Log::info("订单同步开始时间",['date' => $start]);
         $this->syncCreatedOrder();
         $this->syncUpdatedOrder();
         $end = (string)Carbon::now();
         Cache::put($this->last_end_key,$end);
         ValueStore::query()->where('name',$this->last_end_key)->update(['value'=>$end]);
+        Log::info("订单同步结束时间",['date' => $end]);
     }
 
     public function syncCreatedOrder()
@@ -89,7 +92,7 @@ class SyncWMSOrderTask extends Command
             ->orderBy('DOC_Order_Header.addTime')->get();
 
         if($orderHeaders->count()==0)return;
-        $orderHeaderList = $orderHeaders->chunk(1000);
+        $orderHeaderList = $orderHeaders->chunk(200);
         foreach ($orderHeaderList as $item) {
             $item = $oracleDOCOrderHeaderService->loadMissing($item);
             $last_order = $item->last();                                                               // 时间点靠后的
@@ -126,7 +129,7 @@ class SyncWMSOrderTask extends Command
 
         if($orderHeaders->count()==0)return;
 
-        $orderHeaderList = $orderHeaders->chunk(1000);
+        $orderHeaderList = $orderHeaders->chunk(200);
         foreach ($orderHeaderList as $item) {
             $item  = $oracleDOCOrderHeaderService->loadMissing($item);
             $renewal_order = $item->last();                                                            // 时间点靠后的

+ 1 - 1
app/Console/Kernel.php

@@ -65,7 +65,7 @@ class  Kernel extends ConsoleKernel
         $schedule->command('LogExpireDelete')->dailyAt('00:01');
         $schedule->command('InventoryDailyLoggingOwner')->dailyAt('08:00');
         $schedule->command('FluxOrderFix')->hourlyAt(1);
-        $schedule->command('WASSyncWMSOrderInformation')->everyMinute();
+        //$schedule->command('WASSyncWMSOrderInformation')->everyMinute();
         $schedule->command('syncLogCacheTask')->everyMinute();
         $schedule->command('createOwnerReport')->monthlyOn(1);
         $schedule->command('createOwnerBillReport')->monthlyOn(1);

+ 66 - 4
app/Http/Controllers/TestController.php

@@ -16,7 +16,6 @@ use App\Http\Requests\AndroidGateRequest;
 use App\Http\Requests\OrderDelivering;
 use App\Jobs\BatchTaskJob;
 use App\Jobs\CacheShelfTaskJob;
-use App\Jobs\CalculationArrivedManNumJob;
 use App\Jobs\OrderCreateInstantBill;
 use App\Jobs\OrderCreateWaybill;
 use App\Jobs\SettlementBillReportJob;
@@ -58,6 +57,7 @@ use App\Services\BatchService;
 use App\Services\CacheShelfService;
 use App\Services\ForeignHaiRoboticsService;
 use App\Services\NotificationService;
+use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderPackageReceivedSyncService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
@@ -111,7 +111,7 @@ use PhpOffice\PhpSpreadsheet\Calculation\Web\Service;
 use Ramsey\Uuid\Uuid;
 use Symfony\Component\ErrorHandler\Error\FatalError;
 
-class TestController extends Controller
+class TestController extends \App\Http\Controllers\api\thirdPart\syrius\producer\Controller
 {
     use AsyncResponse, ErrorPush, Database;
 
@@ -203,6 +203,8 @@ class TestController extends Controller
     }
     public function test()
     {
+        dd(app("MenuService")->getVisibleFunctionList());
+        dd($this->response("德玛西亚",[]));
        $st = '[{"taskMode":1,"bins":[{"taskCode":"102876_1632099648.1379","binCode":"IDE0000686","fromLocCode":"BIN-IN1","toLocCode":""}],"groupCode":"_1632099648.1379","priority":10,"sequenceFlag":1}]';
        $st = json_decode($st,true);
        $st[0]["sequenceFlag"] = 0;
@@ -569,9 +571,69 @@ sql;
         \App\LaborCompanyDispatchDetail::query()->truncate();
     }
 
-    public function calculationArrivedManNum()
+    public function testChange()
     {
-        $this->dispatch(new CalculationArrivedManNumJob(\Illuminate\Support\Carbon::parse(now()->toDateString())));
+        $last_start_key = config('sync.order_sync.cache_prefix.last_start_at');
+        $last_end_key = config('sync.order_sync.cache_prefix.last_end_at');
+        Cache::put($last_start_key,Carbon::make('2021-10-12 06:23:37'));
+        Cache::put($last_end_key,Carbon::make('2021-10-12 06:23:38'));
+        ValueStore::query()->where('name','order_last_created_sync_at')->update(['value' => '2021-10-12 06:23:37']);
+        ValueStore::query()->where('name','order_last_updated_sync_at')->update(['value' => '2021-10-12 06:23:37']);
+        ValueStore::query()->where('name','last_order_sync_task_start_at')->update(['value' => '2021-10-12 06:23:37']);
+        ValueStore::query()->where('name','last_order_sync_task_end_at')->update(['value' => '2021-10-12 06:23:38']);
+    }
+
+    public function syncOrders()
+    {
+        $last_start_key = config('sync.order_sync.cache_prefix.last_start_at');
+        $last_end_key = config('sync.order_sync.cache_prefix.last_end_at');
+        ini_set('max_execution_time',2500);
+        ini_set('memory_limit','1526M');
+        $service = new OracleDOCOrderHeaderService();
+        $orderService = new OrderService();
+        $start_data = Carbon::make('2021-10-12 06:23:37');
+        for ($i = 0;$i < 7;$i++){
+            $last_start_data=  Carbon::now();
+            $end_data = Carbon::parse($start_data)->addHours(1);
+            $editHeaders =  $service->getQuery()->where('DOC_Order_Header.EditTime','>=',$start_data)
+                ->where('DOC_Order_Header.EditTime',"<=",$end_data)
+                ->orderByDesc('DOC_Order_Header.EditTime')
+                ->get();
+            $editHeaderArray = $editHeaders->chunk(200);
+            foreach ($editHeaderArray as &$array){
+                $orderService->syncOrder($array);
+            }
+            $addHeaders =  $service->getQuery()->where('DOC_Order_Header.addTime','>=',$start_data)
+                ->where('DOC_Order_Header.addTime',"<=",$end_data)
+                ->orderByDesc('DOC_Order_Header.addTime')
+                ->get();
+
+            $addHeadersArray = $addHeaders->chunk(200);
+            foreach ($addHeadersArray as &$array){
+                $orderService->syncOrder($array);
+            }
+
+            $start_data = $end_data;
+            $last_end_data  = Carbon::now();
+
+            Cache::put($last_start_key,$last_start_data);
+            ValueStore::query()->where('name','order_last_created_sync_at')->update(['value' => $addHeaders->first()->addtime]);
+            ValueStore::query()->where('name','last_order_sync_task_start_at')->update(['value' => $last_start_data]);
+            Cache::put($last_end_key,$last_end_data);
+            ValueStore::query()->where('name','order_last_updated_sync_at')->update(['value' => $editHeaders->first()->edittime]);
+            ValueStore::query()->where('name','last_order_sync_task_end_at')->update(['value' => $last_end_data]);
+            unset($editHeaderArray,$editHeaders);
+            unset($addHeadersArray,$addHeaders);
+        }
+    }
+
+    public function syncOrder()
+    {
+        $code = \request("code");
+        $service = new OracleDOCOrderHeaderService();
+        $orderService = new OrderService();
+        $orderHeaders = $service->getQuery()->where('DOC_Order_Header.WaveNo',$code)->get();
+        $orderService->syncOrder($orderHeaders);
     }
 
     public function test_sddgdfg()

+ 29 - 0
app/Http/Controllers/api/thirdPart/syrius/producer/BinLocation.php

@@ -0,0 +1,29 @@
+<?php
+
+
+namespace App\Http\Controllers\api\thirdPart\syrius\producer;
+
+class BinLocation extends Controller
+{
+    /**
+     * @param string $locationId
+     * @param \stdClass $warehouse  {id:"",name:""}
+     * @param \stdClass $attribute  {id:"",layer:0,num:0}
+     *
+     */
+    public function createBinLocation(string $locationId, \stdClass $warehouse, \stdClass $attribute)
+    {
+        $url = config("api.syrius.request.bin_location");
+        $body = [[
+            "binLocationId"     => $locationId,     //库位ID
+            "warehouseId"       => $warehouse->id,  //仓库ID
+            "warehouseName"     => $warehouse->name,//仓库名
+            "attributes"        => [
+                "shelfId"    => $attribute->id,     //架ID
+                "shelfLayer" => $attribute->layer,  //架层
+                "numOfLayer" => $attribute->num,    //架层数
+            ],
+        ]];
+        $this->response($url,$body);
+    }
+}

+ 36 - 0
app/Http/Controllers/api/thirdPart/syrius/producer/Controller.php

@@ -0,0 +1,36 @@
+<?php
+
+
+namespace App\Http\Controllers\api\thirdPart\syrius\producer;
+
+
+use Illuminate\Http\Client\ConnectionException;
+use Illuminate\Http\Client\Response;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Http;
+use Illuminate\Support\Facades\Log;
+
+class Controller
+{
+    public function response($url, $data): ?Response
+    {
+        $logInfo = [
+            "param" =>  $data,
+            "user"  =>  Auth::id(),
+            "ip"    =>  request()->ip(),
+        ];
+
+        $token = "";
+        try {
+            return Http::withHeaders([
+                'Accept' => 'application/json',
+                'Authorization' => 'Bearer '.$token,
+            ])->post($url,$data);
+        }catch (ConnectionException $e){
+            Log::warning("syrius:连接异常",$logInfo);
+        }catch (\Exception $e){
+            Log::warning("syrius:请求异常",$logInfo);
+        }
+        return null;
+    }
+}

+ 2 - 2
app/Http/Requests/Api/WaybillDispatch.php

@@ -19,8 +19,8 @@ class WaybillDispatch extends AndroidGateRequest
             "inquire_tel"           => ["required","string","max:20"],
             "amount"                => ["required","integer","min:1"],
             "amount_unit_name"      => ["required",Rule::in(["件","托"])],
-            "carrier_weight_other"  => ["required_without:carrier_weight","numeric","min:0.01"],
-            "carrier_weight"        => ["required_without:carrier_weight_other","numeric","min:0.01"],
+            "carrier_weight_other"  => ["required_without:carrier_weight","nullable","numeric","min:0.01"],
+            "carrier_weight"        => ["required_without:carrier_weight_other","nullable","numeric","min:0.01"],
             "subjoin_fee"           => ["nullable","string"],
         ];
     }

+ 1 - 1
app/Imports/StoreCheckingReceiveImport.php

@@ -96,7 +96,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                 "unique_code" => $item["唯一码"],
                 "SKU" => $item["SKU"],
                 "商品名称" => $item["商品名称"],
-                "条码" => $item["条码"],
+                "条码" => rtrim(ltrim($item["条码"])),
             ]);
             if ($isUniqueCommodity){
                 array_push($commodities[$item["条码"]], count($items)-1);

+ 7 - 8
app/Services/OrderPackageService.php

@@ -99,7 +99,7 @@ class OrderPackageService
 
     public function getByOrderNos($orderNos)
     {
-        return OrderPackage::query()->with('order')
+        return OrderPackage::query()->with('order.logistic')
             ->whereIn('order_id', function ($query) use ($orderNos) {
                 $query->from('orders')->select('id')->whereIn('code', $orderNos);
             })->get();
@@ -164,7 +164,7 @@ class OrderPackageService
         /** 批量添加 */
         if (count($inner_params) > 0) {
             try {
-                $inner_array = array_chunk($inner_params, 5000);
+                $inner_array = array_chunk($inner_params, 200);
                 foreach ($inner_array as $params) {
                     $bool = $this->insert($params);
                     $bool ? LogService::log(__METHOD__, __FUNCTION__, '批量添加 OrderPackage ' . count($inner_params) . ' || ' . json_encode($inner_params)) : null;
@@ -287,7 +287,7 @@ class OrderPackageService
         $update_params[] = ['id', 'sent_at'];
         foreach ($packages as $package) {
             if ($package->sent_at || !isset($map[$package->logistic_number])) continue;
-            list($allocation,$orderHeader) = $map[$package->logistic_number];
+            $allocation = $map[$package->logistic_number];
             try {
                 $checktime = $allocation->checktime;
             } catch (\Exception $e) {
@@ -295,7 +295,7 @@ class OrderPackageService
             }
             if ($checktime) {
                 //EDISENDFLAG
-                $this->checkingAndProcess($package,$allocation->orderlineno,$orderHeader); //检查和处理揽收
+                $this->checkingAndProcess($package,$allocation->orderlineno); //检查和处理揽收
                 $update_params[] = [
                     'id' => $package->id,
                     'sent_at' => $checktime,
@@ -310,13 +310,12 @@ class OrderPackageService
      *
      * @param OrderPackage|\stdClass $package
      * @param int $lineNo
-     * @param \stdClass|mixed $orderHeader
      */
-    public function checkingAndProcess(OrderPackage $package, int $lineNo, $orderHeader)
+    public function checkingAndProcess(OrderPackage $package, int $lineNo)
     {
         //校验快递商 订单状态 复核标记 揽收标记
-        $package->loadMissing("order.logistic");
         if ($package->collecting_status == '1' || !$package->logistic_number)return;
+        $package->loadMissing("order.logistic");
         if (strpos($package->order->logistic->code ?? '','ZTO') === false)return;
         $statusMapping = array_flip(Order::STATUS);
         if (($statusMapping[$package->order->wms_status] ?? 90) == 90){
@@ -342,7 +341,7 @@ class OrderPackageService
             $actAllocationDetails = $orderHeader->actAllocationDetails;
             foreach ($actAllocationDetails as $actAllocationDetail) {
                 $logistic_number = $actAllocationDetail->picktotraceid;
-                $map[$logistic_number] = [$actAllocationDetail,$orderHeader];
+                $map[$logistic_number] = $actAllocationDetail;
             }
         }
         return $map;

+ 12 - 1
app/Services/WaybillService.php

@@ -17,6 +17,7 @@ use Illuminate\Database\Eloquent\Model;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
 use Ramsey\Uuid\Uuid;
 use App\Traits\ServiceAppAop;
 
@@ -362,7 +363,17 @@ class WaybillService
         $w->wms_bill_number = $waybill->wms_bill_number;
         $w->waybill_number  = $waybill->carrier_bill;
         $controller = new WaybillController();
-        return $controller->accomplishToWMS($w);
+        if ($controller->accomplishToWMS($w)){
+            $sql = <<<SQL
+UPDATE ACT_ALLOCATION_DETAILS SET PICKTOTRACEID = ?,DROPID = ? WHERE ORDERNO = ? AND  PICKTOTRACEID = ? AND DROPID = ?
+SQL;
+            $updateRow = DB::connection("oracle")->update($sql,[
+                $waybill->carrier_bill,$waybill->carrier_bill,$waybill->wms_bill_number,$waybill->wms_bill_number,$waybill->wms_bill_number
+            ]);
+            if ($updateRow!=1)Log::warning("德邦单号修改分配失败",["param"=>$w,"row"=>$updateRow]);
+            return true;
+        }
+        return false;
     }
 
     /**

+ 4 - 4
app/Services/WorkOrderImageService.php

@@ -49,7 +49,7 @@ class WorkOrderImageService
         foreach ($images as $image) {
             $this->createWorkOrderCommodityImage($workOrder,$image);
         }
-        if ($isLoadMissing)$workOrder->loadMissing('packageImages');
+        if ($isLoadMissing)$workOrder->loadMissing('commodityImages');
     }
 
     /**
@@ -74,7 +74,7 @@ class WorkOrderImageService
     public function createWorkOrderDealImages($workOrder,$images, bool $isLoadMissing = true)
     {
         foreach ($images as $image) {
-            $this->createWorkOrderCommodityImage($workOrder,$image);
+            $this->createWorkOrderDealImage($workOrder,$image);
         }
         if ($isLoadMissing)$workOrder->loadMissing('dealImages');
     }
@@ -82,7 +82,7 @@ class WorkOrderImageService
     public function createWorkOrderDealImage($workOrder,$image)
     {
         /** @var UploadedFile  $image */
-        $count = $workOrder->commodityImages()->count();
+        $count = $workOrder->dealImages()->count();
         /** @var WorkOrderImage $workOrderImage */
         $workOrderImage = $workOrder->dealImages()->create(['type' => 3, 'number' => ++$count]);
         $workOrderImage->saveFile($image);
@@ -97,7 +97,7 @@ class WorkOrderImageService
     public function createWorkOrderRefundImages($workOrder, $images, bool $isLoadMissing = true)
     {
         foreach ($images as $image) {
-            $this->createWorkOrderCommodityImage($workOrder,$image);
+            $this->createWorkOrderRefundImage($workOrder,$image);
         }
         if ($isLoadMissing)$workOrder->loadMissing('refundImages');
     }

+ 5 - 1
app/Services/WorkOrderService.php

@@ -230,7 +230,11 @@ class WorkOrderService
             ];
         }
         if (!isset($inner_params)) return ['success' => false, 'message' => '创建问题件失败'];
-        return app('OrderIssueService')->buildOrderIssue($inner_params);
+        try {
+            return app('OrderIssueService')->buildOrderIssue($inner_params);
+        } catch (\Exception $e) {
+            return ['success'=>false,'message' => '刷新页面后重试'];
+        }
     }
 
     /**

+ 15 - 0
config/api.php

@@ -59,6 +59,21 @@ return [
         ],
     ],
 
+    "syrius" => [
+        "client_id"     => "1dg6clndocrtiugsl4bj83kpk6",
+        "client_secret" => "vthuec06c1jrjr31nt98l8r7kune0uqdgrjeifm0472re923c15",
+        "base_url"      => "",
+        "request"       => [
+            "bin_location"  => "/account/binlocation/",         //POST
+            "find_all_bin_location" => " /account/binlocation/",//GET
+            "delete_bin_location" => " /account/binlocation/",  //DELETE
+            "find_storage_type" =>  "/account/basicdata-type/storage/type/{storageTypeId}", //GET
+            "create_order"  => "/order/warehouse-order/", //POST
+            "find_order"    => "/order/warehouse-order/{id}",//GET
+            "notifications" => "{order-notification-url}"   //POST
+        ],
+    ],
+
     /** goodScan
     https://was.baoshi56.com/api/thirdPart/goodscan/weight/new  //新增包裹
      */

+ 1 - 1
config/sync.php

@@ -43,7 +43,7 @@ return [
         'interval' => 1,   // 时间以分为单位
         'start_at'=> '',    // 开始同步WMS的时间  时间格式: yyyy-MM-dd HH:mm:ss 如 2020-09-05 13:15:16
         'cache_prefix' => [
-            'restart' => 10,  // 重新启动时间 已分钟为单位
+            'restart' => 40,  // 重新启动时间 已分钟为单位
             'last_start_at' => 'last_order_sync_task_start_at' ,
             'last_end_at' => 'last_order_sync_task_end_at' ,
             'last_err_at' => 'last_order_sync_task_error_at' ,

+ 9 - 6
resources/views/layouts/app.blade.php

@@ -125,12 +125,10 @@
         switch (type) {
             case 2:
                 a.innerText = menu.name;
-                li.appendChild(a);
-                return li;
+                break;
             case 3:
                 a.innerText = menu.name;
-                li.appendChild(a);
-                return li;
+                break;
             default:
                 if (menu.font){
                     let span = document.createElement("span");
@@ -139,9 +137,14 @@
                     a.appendChild(span);
                 }
                 a.appendChild(document.createTextNode(menu.name));
-                li.appendChild(a);
-                return li;
+                break;
         }
+        li.appendChild(a);
+        a.onclick = function (){
+
+            return false;
+        };
+        return li;
     }
     function getMenu() {
         let xhr = new XMLHttpRequest();

+ 33 - 47
resources/views/order/issue/index.blade.php

@@ -86,7 +86,7 @@
                             colspan="8">
                             原始运单
                         </th>
-                        <th class="font-weight-bolder header-3 text-center" colspan="14">
+                        <th class="font-weight-bolder header-3 text-center" colspan="15">
                             情况说明
                         </th>
                         @cannot('订单管理-问题件-客户不可见')
@@ -178,15 +178,15 @@
                         <th class="three-layer bg-whit  align-middle" rowspan="2" style="min-width: 180px">情况说明</th>
                         <th class="three-layer align-middle" rowspan="2" style="min-width: 115px">问题类别</th>
                         <th class="three-layer align-middle" colspan="4" style="min-width: 155px">处理结果</th>
+
+                        <th class="three-layer align-middle " rowspan="2"
+                            style="max-width: 500px;min-width: 400px;">快递路由
+                        </th>
                         @cannot('订单管理-问题件-客户不可见')
                             <th class="three-layer  align-middle" rowspan="2"
                                 style="width:50px">@{{ isShowSecondOrderInfo ? '隐藏':'展开' }}
                             </th>
 
-                            <th class="three-layer align-middle " rowspan="2"
-                                style="max-width: 500px;min-width: 400px;"
-                                v-show="isShowSecondOrderInfo">快递路由
-                            </th>
                             <th class="three-layer align-middle" rowspan="2"
                                 style="min-width: 120px;"
                                 v-show="isShowSecondOrderInfo">二次客户订单号
@@ -707,8 +707,33 @@
                         {{--情况说明 结束--}}
 
                         {{--客户编辑 开启--}}
-
-
+                        <td>
+                            <div class="alert alert-light " v-for="(item,i) in orderIssue.order.packages">
+                                <div class="text-left">
+                                    <span v-text="item.logistic_number"></span>
+                                    <span class="float-right" v-if="item['transfer_status'].length === 0">暂无路由信息</span>
+                                    <button type="button" class="btn btn-sm btn-outline-primary float-right" v-if="item['transfer_status'].length > 0 && selectOrderPackage!==item.id" @click="selectOrderPackage = item.id">展开</button>
+                                    <button type="button" class="btn btn-sm btn-outline-primary float-right" v-if="selectOrderPackage === item.id" @click="selectOrderPackage = null">收起</button>
+                                </div>
+                                <div class="text-left" v-if="selectOrderPackage === item.id">
+                                    <div v-for="transfer in item['transfer_status']">
+                                        <div >
+                                            <hr>
+                                            <span class="mr-1 text-monospace">时间:</span>
+                                            <span v-text="transfer['accept_time']"></span>
+                                        </div>
+                                        <div>
+                                            <span class="mr-1 text-monospace">到达地:</span>
+                                            <span v-text="transfer['accept_address']"></span>
+                                        </div>
+                                        <div>
+                                            <span class="mr-1 text-monospace">详情:</span>
+                                            <span v-text="transfer['remark']"></span>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </td>
                     @cannot('订单管理-问题件-客户不可见')
                             <td class="p-0 m-0 child-layer-3" style="min-width:50px;"
                                 v-if="index===0"
@@ -719,45 +744,7 @@
                                       @click="toggleSeCondeOrder"
                                       v-text="isShowSecondOrderInfo ? '隐藏运单列' : '展开运单列'"></span>
                             </td>
-                            <td v-show="isShowSecondOrderInfo">
-                                <div v-if=""></div>
-                                <div v-show="selectOrderIssue !== orderIssue.id">
-                                    <div>
-                                        <button class="btn btn-sm btn-outline-primary" @click="selectOrderIssue = orderIssue.id">展开</button>
-                                    </div>
-                                </div>
-                                <div v-show="selectOrderIssue === orderIssue.id">
-                                    <div class="alert alert-light " v-for="(item,i) in orderIssue.order.packages">
-                                        <div class="text-left">
-                                            <span v-text="item.logistic_number"></span>
-                                            <span class="float-right" v-if="item['transfer_status'].length === 0">暂无路由信息</span>
-                                            <button type="button" class="btn btn-sm btn-outline-primary float-right" v-if="item['transfer_status'].length > 0 && selectOrderPackage!==item.id" @click="selectOrderPackage = item.id">展开</button>
-                                            <button type="button" class="btn btn-sm btn-outline-primary float-right" v-if="selectOrderPackage === item.id" @click="selectOrderPackage = null">收起</button>
-                                        </div>
-                                        <div class="text-left" v-if="selectOrderPackage === item.id">
-                                            <div v-for="transfer in item['transfer_status']">
-                                                <div >
-                                                    <hr>
-                                                    <span class="mr-1 text-monospace">时间:</span>
-                                                    <span v-text="transfer['accept_time']"></span>
-                                                </div>
-                                                <div>
-                                                    <span class="mr-1 text-monospace">到达地:</span>
-                                                    <span v-text="transfer['accept_address']"></span>
-                                                </div>
-                                                <div>
-                                                    <span class="mr-1 text-monospace">详情:</span>
-                                                    <span v-text="transfer['remark']"></span>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div>
-                                        <button class="btn btn-sm btn-outline-primary" @click="selectOrderIssue = null">收起</button>
-                                    </div>
-                                </div>
 
-                            </td>
                             <td class="child-layer-3-hide" v-show="isShowSecondOrderInfo">
                                 @can('订单管理-问题件-编辑')
                                     <input class="form-control form-control-sm"
@@ -1250,7 +1237,6 @@
                 },
                 toggleBtnHeight: null,
                 selectOrderPackage: null,
-                selectOrderIssue:null,
             },
             created() {
                 let _this = this;
@@ -1521,7 +1507,7 @@
                 isShowSecondOrderInfo(newValue) {
                     let _this = this;
                     setTimeout(function () {
-                        $('.header-3').attr('colspan', 14 + (newValue ? 6 : 0) + (_this.isShowRejectedBill ? 6 : 0));
+                        $('.header-3').attr('colspan', 15 + (newValue ? 6 : 0) + (_this.isShowRejectedBill ? 6 : 0));
                     }, 2);
                 },
             },

+ 4 - 0
resources/views/order/workOrder/_work_order_details.blade.php

@@ -70,6 +70,7 @@
                          v-for="(dealImage,i) in item['deal_images']">
                         <div class="">
                             <a  target="_blank"
+                                v-if="dealImage.upload_file"
                                 :href="filePrefix+dealImage.upload_file.url + '.'+dealImage.upload_file.type">
                                 <img class="image-w"
                                      :src="filePrefix+dealImage.upload_file.url + '.'+dealImage.upload_file.type"
@@ -88,6 +89,7 @@
                     <div class="card-body col-sm-6"
                          v-for="(refundImage,i) in item['refund_images']">
                         <a target="_blank"
+                           v-if="refundImage.upload_file"
                            :href="filePrefix+refundImage.upload_file.url + '.'+refundImage.upload_file.type">
                             <img class="image-w"
                                  :src="filePrefix+refundImage.upload_file.url + '.'+refundImage.upload_file.type"
@@ -105,6 +107,7 @@
                     <div class="card-body col-sm-6"
                          v-for="(packageImage,i) in item['package_images']">
                         <a target="_blank"
+                           v-if="packageImage.upload_file"
                            :href="filePrefix+packageImage.upload_file.url + '.'+packageImage.upload_file.type">
                             <img class="image-w"
                                  :src="filePrefix+packageImage.upload_file.url + '.'+packageImage.upload_file.type"
@@ -122,6 +125,7 @@
                     <div class="card-body col-sm-6"
                          v-for="(commodityImage,i) in item['commodity_images']">
                         <a target="_blank"
+                           v-if="commodityImage.upload_file"
                            :href="filePrefix+commodityImage.upload_file.url  + '.'+commodityImage.upload_file.type">
                             <img class="image-w"
                                  :src="filePrefix+commodityImage.upload_file.url + '.'+commodityImage.upload_file.type"

+ 27 - 29
resources/views/order/workOrder/index.blade.php

@@ -268,39 +268,37 @@
                                     </template>
                                 </td>
                                 <td class="text-center">
-                                    <template v-if="item.review_at">
-                                        <div v-if="item.order && item.order.packages">
-                                            <template v-for="package in item.order.packages">
-                                                <template
-                                                    v-if="package.transfer_status && package.transfer_status.length > 0">
-                                                    <div v-if="selectOrderPackage === package.id">
-                                                        <template v-for="transfer in package.transfer_status">
-                                                            <p>@{{
-                                                                transfer['accept_time']+':'+transfer['accept_address']
-                                                                }}</p>
-                                                        </template>
-                                                    </div>
-                                                    <div v-else>
-                                                        @{{
-                                                        package.transfer_status[0]['accept_time']+':'+package.transfer_status[0]['accept_address']
-                                                        }}
-                                                    </div>
-                                                    <button class="btn btn-sm btn-outline-primary"
-                                                            v-if="selectOrderPackage !== package.id"
-                                                            @click="selectOrderPackage = package.id">展开
-                                                    </button>
-                                                    <button class="btn btn-sm btn-outline-primary" v-else
-                                                            @click="selectOrderPackage = null">收起
-                                                    </button>
-                                                </template>
+                                    <div v-if="item.order && item.order.packages">
+                                        <template v-for="package in item.order.packages">
+                                            <template
+                                                v-if="package.transfer_status && package.transfer_status.length > 0">
+                                                <div v-if="selectOrderPackage === package.id">
+                                                    <template v-for="transfer in package.transfer_status">
+                                                        <p>@{{
+                                                            transfer['accept_time']+':'+transfer['accept_address']
+                                                            }}</p>
+                                                    </template>
+                                                </div>
+                                                <div v-else>
+                                                    @{{
+                                                    package.transfer_status[0]['accept_time']+':'+package.transfer_status[0]['accept_address']
+                                                    }}
+                                                </div>
+                                                <button class="btn btn-sm btn-outline-primary"
+                                                        v-if="selectOrderPackage !== package.id"
+                                                        @click="selectOrderPackage = package.id">展开
+                                                </button>
+                                                <button class="btn btn-sm btn-outline-primary" v-else
+                                                        @click="selectOrderPackage = null">收起
+                                                </button>
                                             </template>
-                                        </div>
-                                    </template>
+                                        </template>
+                                    </div>
                                 </td>
                                 <td class="text-center">@{{ item.creator ? item.creator.name : '' }}</td>
-                                <td class="text-center">@{{ item.created_at | dataTime}}</td>
+                                <td class="text-center">@{{ item.created_at}}</td>
                                 <td>@{{ item.reviewer ? item.reviewer.name : ''}}</td>
-                                <td>@{{ item.review_at |dataTime}}</td>
+                                <td>@{{ item.review_at}}</td>
                                 @can('订单管理-工单处理-删除')
                                     <td>
                                         <button class="btn btn-sm btn-outline-danger"