Quellcode durchsuchen

需求发布 与 包裹问题修改

ANG YU vor 4 Jahren
Ursprung
Commit
e927834726

+ 27 - 2
app/Filters/OrderPackageFilters.php

@@ -33,6 +33,8 @@ class OrderPackageFilters
         'default_date',
         'has_transfer_status',
         'is_new_rejecting',
+        'result_explain',
+        'issue_type_name',
     ];
 
     protected $orderIssueQuery;
@@ -173,8 +175,31 @@ class OrderPackageFilters
 
     public function is_new_rejecting($is_new_rejecting)
     {
-        $this->queryBuilder->whereIn('order_id', function ($query) use ($is_new_rejecting) {
-            $query->from('order_issues')->select('order_id')->where('is_new_rejecting', $is_new_rejecting);
+        if ($is_new_rejecting === '有') {
+            $this->queryBuilder->whereIn('logistic_number', function ($query) {
+                $query->from('rejected_bills')->select('logistic_number_return')->where('logistic_number','原单退回')->whereNotNull('logistic_number_return');
+            });
+        }
+        if ($is_new_rejecting === '无') {
+            $this->queryBuilder->whereNotIn('logistic_number', function ($query) {
+                $query->from('rejected_bills')->select('logistic_number_return')->where('logistic_number','原单退回')->whereNotNull('logistic_number_return');
+            });
+        }
+    }
+
+    public function issue_type_name($issue_type_name)
+    {
+        $this->queryBuilder->whereIn('order_id', function ($query) use ($issue_type_name) {
+            $query->from('order_issues')->select('order_id')->where('order_issue_type_id',function ($query) use ($issue_type_name){
+                $query->from('order_issue_types')->select('id')->where('name', $issue_type_name);
+            });
+        });
+    }
+
+    public function result_explain($result_explain)
+    {
+        $this->queryBuilder->whereIn('order_id', function ($query) use ($result_explain) {
+            $query->from('order_issues')->select('order_id')->where('result_explain','like',$result_explain);
         });
     }
 }

+ 5 - 1
app/Http/Controllers/PackageLogisticController.php

@@ -31,7 +31,11 @@ class PackageLogisticController extends Controller
         $paginateParams = $request->input();
         $orderPackages = OrderPackage::query()
             ->filter($filters)
-            ->with(['order.logistic',
+            ->with([
+                'order.logistic',
+                'rejectedBill'=>function($query){
+                    $query->select('id','logistic_number','logistic_number_return')->where('logistic_number', '原单退回');
+                },
                 'orderPackageRemarks' => function ($query) {
                     $query->with('user')->orderByDesc('created_at');
                 },

+ 11 - 1
app/Http/Controllers/RequirementController.php

@@ -9,6 +9,7 @@ use App\Role;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Gate;
 
 class RequirementController extends Controller
 {
@@ -35,7 +36,10 @@ class RequirementController extends Controller
     {
         $requirement->fill($request->all());
         $requirement->user_id = Auth::id();
-        $requirement->status = '待接收';
+        $status = null;
+        if (Gate::allows('需求发布-新建-业务部门新建')) $status ='待审核';
+        if (Gate::allows('需求发布-新建-直接发布')) $status ='待接收';
+        $requirement->status = $status;
         $requirement->save();
         return redirect()->route('requirements.index', $requirement->id)->with('success', '需求创建成功!');
     }
@@ -129,4 +133,10 @@ class RequirementController extends Controller
         $requirement->save();
         return redirect()->route('requirements.show', $requirement->id)->with('success', '再次申请验收流程完成');
     }
+
+    public function status(Requirement $requirement,Request $request)
+    {
+        $requirement->update($request->all());
+        return redirect()->route('requirements.show', $requirement->id)->with('success', "状态更新为 {$request->status}成功!");
+    }
 }

+ 10 - 6
app/Http/Requests/RequirementRequest.php

@@ -3,20 +3,24 @@
 namespace App\Http\Requests;
 
 
-class RequirementRequest extends Request
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Support\Facades\Gate;
+
+class RequirementRequest extends FormRequest
 {
     public function rules()
     {
-        switch($this->method())
-        {
+        switch ($this->method()) {
             case 'POST':
             case 'PUT':
             case 'PATCH':
             {
+                $score = '';
+                if (Gate::allows('需求发布-新建-直接发布')) $score = 'required|numeric';
                 return [
-                    'content'       => 'required|min:3',
-                    'title'       => 'required|min:3',
-                    'score' => 'required|numeric',
+                    'content' => 'required|min:3',
+                    'title' => 'required|min:3',
+                    'score' => $score,
                 ];
             }
             case 'GET':

+ 5 - 0
app/OrderPackage.php

@@ -394,4 +394,9 @@ class OrderPackage extends Model
     {
         return $this->hasMany(OrderPackageRemark::class);
     }
+
+    public function rejectedBill(): BelongsTo
+    {
+        return $this->belongsTo(RejectedBill::class, 'logistic_number', 'logistic_number_return');
+    }
 }

+ 2 - 0
app/Requirement.php

@@ -42,6 +42,8 @@ class Requirement extends Model
             '待验收'=>3,
             '验收通过'=>4,
             '验收未通过'=>5,
+            '待审核'=>6,
+            '已驳回'=>7,
         ],
     ];
     function __construct(array $attributes = [])

+ 1 - 1
app/Services/LogisticSFService.php

@@ -173,7 +173,7 @@ xml;
                     $data['status'] = '返回中';
                     break;
                 case 70:
-                    $data['status'] = '';
+                    $data['status'] = '其他';
                     break;
                 default:
                     throw new WarningException("未知的丰桥状态码: {$lastRoute['opcode']}->{json_encode($lastRoute)}");

+ 32 - 0
database/migrations/2021_08_26_100421_change_score_nullable_to_requirements_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeScoreNullableToRequirementsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('requirements', function (Blueprint $table) {
+            $table->decimal('score')->nullable()->change();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('requirements', function (Blueprint $table) {
+            //
+        });
+    }
+}

+ 35 - 7
resources/views/package/logistic/index.blade.php

@@ -119,11 +119,11 @@
                             @{{ i+1 }}
                             <span class="badge badge-danger" v-if="package.order.issue">问题件</span>
                             <span
-                                style="display: inline-block;width: 15px;height: 15px;border-radius: 50%;position: absolute;top: 2px; margin-left: 3px;box-shadow: 0 0 3px #211f1f"
+                                style="display: inline-block;width: 15px;height: 15px;border-radius: 50%;position: relative;top: 3px; margin-left: 3px;box-shadow: 0 0 3px #211f1f"
                                   :style="package.sync_routes_flag?'background-color:#4ed32d':'background-color:#e83939'"></span>
                             <span v-if="package.is_manual_update">
                                 <i class="fa fa-hand-paper-o" aria-hidden="true"
-                                   style="color: red;position: absolute;left: 50px;top: 3px;"></i>
+                                   style="color: red;margin-left: 5px"></i>
                             </span>
                         </span>
                     </td>
@@ -156,7 +156,7 @@
                         </div>
                     </td>
                     <!--退件状态-->
-                    <td>@{{ package.order.issue?package.order.issue.is_new_rejecting:'' }}</td>
+                    <td>@{{ package.rejected_bill?'有':'无' }}</td>
                     <td  class="m-0 p-0 order-package-remarks" style="padding-left: 0 !important;padding-right: 0 !important">
                         @can('包裹管理-快递-客服备注')
                         <label :for="'create_remark_'+package.id" class="btn-create-remark" @click="package.input_remark=!package.input_remark">
@@ -189,8 +189,7 @@
                         </div>
                         @endcan
                     </td>
-                    <td class="text-overflow-warp-200"><span v-if="package.order && package.order.issue">@{{ package.order.issue.result_explain }}</span>
-                    </td>
+                    <td class="text-overflow-warp-200"><span v-if="package.order && package.order.issue">@{{ package.order.issue.result_explain }}</span></td>
                     <td class="text-overflow-warp-200"><span
                             v-if="package.order && package.order.issue && package.order.issue.issue_type">@{{ package.order.issue.issue_type.name }}</span>
                     </td>
@@ -310,6 +309,7 @@
                     [
                         {name: 'logistic_number', type: 'input', tip: '可支持多快递单号,糊模查找需要在右边打上%符号', placeholder: '快递单号'},
                         {name: 'remark', type: 'input', tip: '糊模查找需要在右边打上%符号', placeholder: '客服备注'},
+                        {name: 'result_explain', type: 'input', tip: '糊模查找需要在右边打上%符号', placeholder: '情况说明'},
                         {
                             name: 'status',
                             type: 'select_multiple_select',
@@ -343,7 +343,8 @@
                         {name: 'received_at_start', type: 'dateTime', tip: '选择显示收货时间的起始时间'},
                         {name: 'default_date', type: 'checkbox', tip: '默认15天', data: [{name: 'ture', value: '默认15天'}]},
                         {name: 'default_logistics', type: 'checkbox', tip: '默认承运商', data: [{name: 'ture', value: '默认承运商'}]},
-                    ], [
+                    ],
+                    [
                         {
                             name: 'logistic',
                             type: 'select_multiple_select',
@@ -386,7 +387,34 @@
                             type: 'select',
                             tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的状态'],
                             placeholder: '退件状态',
-                            data: [{name: '无', value: '无'}, {name: '有', value: '有'},{name: '已处理', value: '已处理'}]
+                            data: [{name: '无', value: '无'}, {name: '有', value: '有'}]
+                        },
+                    ],
+                    [
+                        {
+                            name: 'issue_type_name',
+                            type: 'select',
+                            tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的状态'],
+                            placeholder: '问题类型',
+                            data: [
+                                {name: '拦截', value: '拦截'},
+                                {name: '快递异常', value: '快递异常'},
+                                {name: '信息更改', value: '信息更改'},
+                                {name: '联系不上', value: '联系不上'},
+                                {name: '其他', value: '其他'},
+                                {name: '错漏发', value: '错漏发'},
+                                {name: '仓库问题', value: '仓库问题'},
+                                {name: '快递丢件', value: '快递丢件'},
+                                {name: '破损', value: '破损'},
+                                {name: '撤销丢件', value: '撤销丢件'},
+                                {name: '二次加工', value: '二次加工'},
+                                {name: '全检问题', value: '全检问题'},
+                                {name: '系统问题', value: '系统问题'},
+                                {name: '延迟发货', value: '延迟发货'},
+                                {name: '仓库丢件', value: '仓库丢件'},
+                                {name: '快递方式更改', value: '快递方式更改'},
+                                {name: '无记录', value: '无记录'},
+                            ]
                         },
                     ]
                 ];

+ 2 - 0
resources/views/requirement/create_and_edit.blade.php

@@ -34,6 +34,7 @@
                                   placeholder="请填入至少三个字符的内容。"
                                   required>{{ old('content', $requirement->content ) }}</textarea>
                                     </div>
+                                    @can('需求发布-新建-直接发布')
                                     <div class="form-group">
                                         <label class="form-group" for="score">分数</label>
 
@@ -41,6 +42,7 @@
                                                value="{{ old('score', $requirement->score ) }}" placeholder="请填写分数"
                                                required></input>
                                     </div>
+                                    @endcan
                                     <div class="well well-sm">
                                         <button type="submit" class="btn btn-primary"> 保存</button>
                                     </div>

+ 4 - 0
resources/views/requirement/index.blade.php

@@ -221,6 +221,10 @@
                             return "badge badge-success";
                         case '验收未通过':
                             return "badge badge-danger";
+                        case '待审核':
+                            return "badge badge-warning";
+                            case '已驳回':
+                            return "badge badge-danger";
                     }
                 }
             },

+ 51 - 4
resources/views/requirement/show.blade.php

@@ -12,18 +12,21 @@
                         发布人:{{ $requirement->creator->name }}
                     </div>
                     <div class="text-center">
-                        分数:{{ $requirement->score }}
+                        分数:{{ $requirement->score??'-' }}
+                    </div>
+                    <div class="text-center">
+                        状态:{{ $requirement->status }}
                     </div>
                 </div>
             </div>
         </div>
         <div class="col-12">
             <div class="card">
-                <div class="card-body">
-                    <h1 class="text-center mt-3 mb-3">
+                <div class="card-body text-center" style="width: 1200px;margin: 0 auto;">
+                    <h1>
                         {{ $requirement->title }}
                     </h1>
-                    <div class="text-center mt-4 mb-4">
+                    <div class="mt-4 mb-4">
                         {{ $requirement->content }}
                     </div>
                 </div>
@@ -78,7 +81,51 @@
                     </form>
                 </div>
             </div>
+        @elseif($requirement->status==='待审核')
+            <div class="m-4">
+                <form action="{{ route('requirements.status',$requirement->id) }}" method="post"
+                      style="display: inline-block;"
+                      onsubmit="return confirm('您确定要驳回需求么?');">
+                    {{ csrf_field() }}
+                    <input type="text" hidden name="status" value="已驳回">
+                    <button type="submit" class="btn btn-danger"> 驳回需求</button>
+                </form>
 
+                <form action="{{ route('requirements.status',$requirement->id) }}" method="post"
+                      style="display: inline-block;"
+                      onsubmit>
+                    {{ csrf_field() }}
+                    <input type="text" hidden name="status" value="待接收">
+                    <!-- Button trigger modal -->
+                    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
+                        通过审核
+                    </button>
+
+                    <!-- Modal -->
+                    <div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
+                        <div class="modal-dialog">
+                            <div class="modal-content">
+                                <div class="modal-header">
+                                    <h5 class="modal-title" id="exampleModalLabel">输入分数</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">
+                                        <label for="exampleInputEmail1">分数</label>
+                                        <input type="number" name="score" class="form-control">
+                                    </div>
+                                </div>
+                                <div class="modal-footer">
+                                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                                    <button type="submit" class="btn btn-success">通过审核</button>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </form>
+            </div>
         @elseif($requirement->status==='开发中')
             <div class="col-12">
                 <div class="text-center m-4">

+ 1 - 0
routes/web.php

@@ -1029,6 +1029,7 @@ Route::group(['prefix'=>'package'],function(){
         Route::get('{requirement}/edit','RequirementController@edit')->name('requirements.edit');
         Route::post('{requirement}/review','RequirementController@review')->name('requirements.review');
         Route::post('{requirement}/againReview','RequirementController@againReview')->name('requirements.againReview');
+        Route::post('{requirement}/status','RequirementController@status')->name('requirements.status');
     });
 
 });

+ 0 - 1
tests/Services/LogisticYDService/LogisticYDSyncTest.php

@@ -5,7 +5,6 @@ use App\Jobs\LogisticYDSync;
 use App\OrderPackage;
 use App\Services\LogisticYDService;
 use Tests\TestCase;
-use App\LogisticYD;
 use App\Traits\TestMockSubServices;
 
 class LogisticYDSyncTest extends TestCase