فهرست منبع

【Add】产品批量设置状态

liuxiangxin 2 ماه پیش
والد
کامیت
dc6d2a283f
3فایلهای تغییر یافته به همراه230 افزوده شده و 128 حذف شده
  1. 41 0
      app/Http/Controllers/Admin/Product.php
  2. 183 124
      resources/views/admin/product/index.blade.php
  3. 6 4
      routes/web.php

+ 41 - 0
app/Http/Controllers/Admin/Product.php

@@ -1142,4 +1142,45 @@ class Product extends Auth{
 		return			json_send(['code'=>'success','msg'=>'设置成功','path'=>'']);
 	}
 
+	/**
+	 * 排序
+	 * 
+	 * */
+	public function batch_status( Request $request, Model $Model ){
+		// 验证参数
+		// $request->scene('batch_status')->validate();
+		// 接收参数
+		$idList				= request('product_list',[]);
+		$status				= request('status',0);
+		// 查询对应的数据
+		$oldList			= $Model->query()->whereIn('status',$status ? [0,2] : [1,3,4])->whereIn('id',$idList)->get(['id','status','puton_time'])->toArray();
+		// 没有符合条件的数据
+		if( !$oldList )		return json_send(['code'=>'error','msg'=>'无可操作数据']);
+		// 开启事务
+		DB::beginTransaction();
+		// 循环数据
+		foreach ($oldList as $value) {
+			// 如果是上架操作,判断是不是要设置预上架;如果是下架动作,统一下架
+			$editStatus		= $status == 0 ? ($value['puton_time'] ? 2 : 0) : 3;
+			// 如果是有上架时间, 预上架,否则直接上架
+			$result 		= $Model->edit($value['id'],['status'=>$editStatus]);
+			// 提示新增失败
+			if( !$result )	{
+				// 事务回滚
+				DB::rollBack();
+				// 返回提示
+				return		json_send(['code'=>'error','msg'=>'设置失败']);
+			}
+			// 记录行为
+			$this->addAdminHistory(admin('uid'),$Model->getTable(),$value['id'],2,$value,['status'=>$editStatus]);
+		}
+		// 提交事务
+		DB::commit();
+		// 告知结果
+		return			json_send(['code'=>'success','msg'=>'设置成功','path'=>'']);
+	}
+
+
+
+
 }

+ 183 - 124
resources/views/admin/product/index.blade.php

@@ -53,140 +53,156 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 <div class="row">
 	<div class="col-xs-12">
 		<div class="table-responsive">
-			<table class="table table-striped table-bordered table-hover">
-				<thead>
-					<tr>
-						<th>产品编码</th>
-						<th>产品名称</th>
-						<th>规格</th>
-						<th>产品价格</th>
-						<th>剩余库存</th>
-						<th>产品销量</th>
-						<th>产品库存</th>
-						<th>服务城市</th>
-						<th>店铺</th>
-						<th>排序</th>
-						<th>限购数量</th>
-						<th>产品状态</th>
-						<th>修改时间</th>
-						<th>操作</th>
-					</tr>
-				</thead>
-				<tbody>
-					@foreach ($list as $a)
-					<tr>
-						<td> {{$a['product_code']}}</td>
-						<td> {{$a['name']}}</td>
-						<td> {{$a['spec']}}</td>
-						<td> ¥<del>{{$a['market_price']}}</del> ¥{{$a['price']}}</td>
-						<td>{{$a['stock']}}</td>
-						<td>{{$a['sales_total']}}</td>
-						<td>{{$a['stock_total']}}</td>
-						<td> {{$a['city_name']}}</td>
-						<td> {{$a['business_name']}}</td>
-						<td>
-							@if(check_auth('admin/product/set_sort'))
-							<input type="text" class="set_sort" id="{{$a['id']}}" value="{{$a['sort']}}">
-							@else
-								{{$a['sort']}}
-							@endif
-						</td>
-						<td> {{$a['quota']}} </td>
-						<td> 
-							@switch($a['status'])
-								@case(1)
-									编辑中
-								@break
-								@case(0)
-									已上架
-								@break
-								@case(2)
-									预上架
-								@break
-								@case(3)
-									已中止
-								@break
-								@case(4)
-									已结束
-								@break
-								@default
-									无
-								@break
-							@endswitch
-						</td>
-						<td> {{date('Y/m/d H:i:s',$a['update_time'])}}</td>
-						<td>
-							@if(check_auth('admin/product/edit'))
-							<a class="btn btn-sm btn-warning" href="{{url('admin/product/edit?'.http_build_query(['id'=>$a['id']]))}}" title="查看">
-								@if ( $a['status'] && $a['status'] != 2 ) 编辑 @else 查看 @endif
-							</a>
-							@endif
-							@if(check_auth('admin/product/copy'))
-							<a class="btn btn-sm btn-primary" href="{{url('admin/product/copy?'.http_build_query(['id'=>$a['id']]))}}" title="复制">
-								复制
-							</a>
-							@endif
-							@if(check_auth('admin/product/set_status'))
+			<form action="{{url('admin/product/batch_status')}}" method="post" class="post-form" id="batch_form">
+				<table class="table table-striped table-bordered table-hover">
+					<thead>
+						<tr>
+							<th>产品编码</th>
+							<th>产品名称</th>
+							<th>规格</th>
+							<th>产品价格</th>
+							<th>剩余库存</th>
+							<th>产品销量</th>
+							<th>产品库存</th>
+							<th>服务城市</th>
+							<th>店铺</th>
+							<th>排序</th>
+							<th>限购数量</th>
+							<th>产品状态</th>
+							<th>修改时间</th>
+							<th>操作</th>
+						</tr>
+					</thead>
+					<tbody>
+						@foreach ($list as $a)
+						<tr>
+							<td> <label ><input type="checkbox" name="product_list[]" class="check_items" value="{{$a['id']}}"> {{$a['product_code']}}</label> </td>
+							<td> {{$a['name']}}</td>
+							<td> {{$a['spec']}}</td>
+							<td> ¥<del>{{$a['market_price']}}</del> ¥{{$a['price']}}</td>
+							<td>{{$a['stock']}}</td>
+							<td>{{$a['sales_total']}}</td>
+							<td>{{$a['stock_total']}}</td>
+							<td> {{$a['city_name']}}</td>
+							<td> {{$a['business_name']}}</td>
+							<td>
+								@if(check_auth('admin/product/set_sort'))
+								<input type="text" class="set_sort" id="{{$a['id']}}" value="{{$a['sort']}}">
+								@else
+									{{$a['sort']}}
+								@endif
+							</td>
+							<td> {{$a['quota']}} </td>
+							<td> 
 								@switch($a['status'])
-									@case(0)
-										<a class="delete btn btn-sm btn-danger" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'3']))}}">
-											下架
-										</a>
-									@break
 									@case(1)
-										@if ( $a['puton_time'] )
-										<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'2']))}}">
-											预上架
-										</a>
-										@else
-										<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'0']))}}">
-											上架
-										</a>
-										@endif
+										编辑中
+									@break
+									@case(0)
+										已上架
 									@break
 									@case(2)
-										<a class="delete btn btn-sm btn-danger" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'3']))}}">
-											下架
-										</a>
+										预上架
 									@break
 									@case(3)
-										@if ( $a['puton_time'] )
-										<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'2']))}}">
-											预上架
-										</a>
-										@else
-										<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'0']))}}">
-											上架
-										</a>
-										@endif
+										已中止
 									@break
 									@case(4)
-										@if ( $a['puton_time'] )
-										<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'2']))}}">
-											预上架
-										</a>
-										@else
-										<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'0']))}}">
-											上架
-										</a>
-										@endif
+										已结束
+									@break
+									@default
+										无
 									@break
 								@endswitch
-							@endif
-							@if(check_auth('admin/product/get_poster'))
-							<a href="{{url('admin/product/get_poster?'.http_build_query(['id'=>$a['id']]))}}" class="btn btn-sm btn-success" >海报</a>
-							@endif
-						</td>
-					</tr>
-					@endforeach
-					<tr>
-						<td colspan="20" class="page">{{$list->render()}}</td>
-					</tr>
-					<tr>
-						<td colspan="20">总计 {{$list->total()}} 个产品</td>
-					</tr>
-				</tbody>
-			</table>
+							</td>
+							<td> {{date('Y/m/d H:i:s',$a['update_time'])}}</td>
+							<td>
+								@if(check_auth('admin/product/edit'))
+								<a class="btn btn-sm btn-warning" href="{{url('admin/product/edit?'.http_build_query(['id'=>$a['id']]))}}" title="查看">
+									@if ( $a['status'] && $a['status'] != 2 ) 编辑 @else 查看 @endif
+								</a>
+								@endif
+								@if(check_auth('admin/product/copy'))
+								<a class="btn btn-sm btn-primary" href="{{url('admin/product/copy?'.http_build_query(['id'=>$a['id']]))}}" title="复制">
+									复制
+								</a>
+								@endif
+								@if(check_auth('admin/product/set_status'))
+									@switch($a['status'])
+										@case(0)
+											<a class="delete btn btn-sm btn-danger" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'3']))}}">
+												下架
+											</a>
+										@break
+										@case(1)
+											@if ( $a['puton_time'] )
+											<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'2']))}}">
+												预上架
+											</a>
+											@else
+											<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'0']))}}">
+												上架
+											</a>
+											@endif
+										@break
+										@case(2)
+											<a class="delete btn btn-sm btn-danger" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'3']))}}">
+												下架
+											</a>
+										@break
+										@case(3)
+											@if ( $a['puton_time'] )
+											<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'2']))}}">
+												预上架
+											</a>
+											@else
+											<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'0']))}}">
+												上架
+											</a>
+											@endif
+										@break
+										@case(4)
+											@if ( $a['puton_time'] )
+											<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'2']))}}">
+												预上架
+											</a>
+											@else
+											<a class="delete btn btn-sm btn-success" data-url="{{url('admin/product/set_status?'.http_build_query(['id'=>$a['id'],'status'=>'0']))}}">
+												上架
+											</a>
+											@endif
+										@break
+									@endswitch
+								@endif
+								@if(check_auth('admin/product/get_poster'))
+								<a href="{{url('admin/product/get_poster?'.http_build_query(['id'=>$a['id']]))}}" class="btn btn-sm btn-success" >海报</a>
+								@endif
+							</td>
+						</tr>
+						@endforeach
+						<tr>
+							<td><label ><input type="checkbox" class="check_all" > 全选</label></td>
+							<td>
+								<select name="status" class="form-control" required="" >
+									<option value="">选择操作</option>
+									<option value="3">下架</option>
+									<option value="0">上架</option>
+								</select>
+							</td>
+							<td colspan="20" >
+								@csrf
+								<input type="submit" class="btn btn-sm btn-primary" value="提交"/>
+							</td>
+						</tr>
+						<tr>
+							<td colspan="20" class="page">{{$list->render()}}</td>
+						</tr>
+						<tr>
+							<td colspan="20">总计 {{$list->total()}} 个产品</td>
+						</tr>
+					</tbody>
+				</table>
+			</form>
 		</div>
 	</div>
 </div>
@@ -218,4 +234,47 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 		})
 	})
 </script>
+<script>
+	$(function(){
+	// 全选按钮
+	$('.check_all').click(function(){
+		// 获取选择状态
+		var check_all			=  $(this).prop('checked');
+		// 子项选择
+		$('.check_items').prop('checked',check_all);
+	})
+	// 单选按钮
+	$('.check_items').click(function(){
+		// 默认全选
+		var check_all			=  true;
+		// 循环选项
+		$.each($('.check_items'),function(k,v){
+			// 选项状态
+			var check_items		=  $(v).prop('checked');
+			// 如果有一个未选。取消全选
+			if( !check_items )	check_all = false;
+		})
+		// 修改
+		$('.check_all').prop('checked',check_all);
+	})
+	// 站点传输
+	$('#batch_form').submit(function(){
+		// 默认未选择
+		var checked				=  false;
+		// 循环选项
+		$.each($('.check_items'),function(k,v){
+			// 选项状态
+			var check_items		=  $(v).prop('checked');
+			// 如果有一个选中,改为已选
+			if( check_items )	checked = true;
+		})
+		// 未选择,提示
+		if( !checked )			{
+			alert('请至少选择一个产品');
+			// 阻止事件
+			return				false;
+		}
+	});
+})
+</script>
 @endsection

+ 6 - 4
routes/web.php

@@ -112,14 +112,16 @@ Route::middleware('admin')->prefix('admin')->group(function(){
     Route::any('product/copy',[App\Http\Controllers\Admin\Product::class,'copy']);
     // 状态
     Route::any('product/set_status',[App\Http\Controllers\Admin\Product::class,'set_status']);
-    // 状态
+    // 海报
     Route::any('product/get_poster',[App\Http\Controllers\Admin\Product::class,'get_poster']);
-    // 状态
+    // 规格
     Route::any('product/get_spec_html',[App\Http\Controllers\Admin\Product::class,'get_spec_html']);
-    // 状态
+    // SKU
     Route::any('product/get_sku_html',[App\Http\Controllers\Admin\Product::class,'get_sku_html']);
-    // 状态
+    // 排序
     Route::any('product/set_sort',[App\Http\Controllers\Admin\Product::class,'set_sort']);
+    // 批量状态
+    Route::any('product/batch_status',[App\Http\Controllers\Admin\Product::class,'batch_status']);
 
 
     /* 客户管理 */