路由: routes.php
/**
* 印绣洗工厂管理
*/
$router->group(['prefix' => 'pewfactory'], function ($router) {
$router->get('', PewfactoryController::class.'@index');
$router->get('create', PewfactoryController::class.'@create'); //新增页
$router->post('', PewfactoryController::class.'@store'); //提交
$router->get('{id}/edit', PewfactoryController::class.'@edit'); //编辑页
$router->put('{id}', PewfactoryController::class.'@update'); //修改
$router->get('{id}/detail', PewfactoryController::class.'@detail'); //查看
});
控制器: PewfactoryController.php
<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\PewfactoryRequest;
use App\Models\MaterialCategory;
use App\Models\PubNlocation;
use App\Models\Pewfactory;
use App\Models\Ryhplantcoopcate;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Illuminate\Support\Facades\DB;
class PewfactoryController extends Controller
{
/**
* 标题
* @var string
*/
protected $title = '印绣洗工厂管理';
/**
* @var array
*/
protected $description = [
'index' =>'列表',
'create' =>'新增',
'edit' =>'修改',
'view' =>'查看',
];
/**
* 列表
*/
public function index(Content $content)
{
$content->header($this->title)
->description($this->description['index'])
->breadcrumb(
['text' => $this->title, 'url' => '/pewfactory']
)
->row($this->grid());
return $content;
}
/**
* 表格
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Pewfactory);
/**
* 屏蔽控件
*/
$grid->disableExport(); //屏蔽导出
$grid->disableRowSelector(); //屏蔽多选
$grid->disableColumnSelector(); //屏蔽字段筛选
$grid->disableCreateButton(); //屏蔽初始创建按钮
$grid->disableFilter(); //屏蔽查询
$grid->fixColumns(4, -1); //固定显示列 head- 前几列 tail-后几列
$grid->model()->orderBy('created_at','desc');
/**
* 列表行
*/
$grid->column('factory_no',__('工厂编号'));
...
//单选
$grid->column('nlocation.name',__('所在地'));
//多选
$grid->column('cate_remark',__('生产品类'))->display(function (){
$re_cateremark = [];
if(isset($this->cate_remark)){
$re_cateremark = MaterialCategory::getSelectCateOptions('id',explode(',',$this->cate_remark));
}
return $re_cateremark;
})->label();
$grid->column('collaborate',__('合作品类'))->display(function (){
$re_cateremark = [];
if(isset($this->collaborate)){
$re_cateremark = MaterialCategory::getSelectCateOptions('id',explode(',',$this->collaborate));
}
return $re_cateremark;
})->label();
/**
* 列表行操作按钮
*/
$grid->actions(function ($actions){
$actions->disableView();
$actions->disableDelete();
$actions->disableEdit();
$actions->append('<a href="/admin/pewfactory/'.$actions->getkey().'/detail" class="btn btn-sm btn-default" style="margin-right: 5px" >查看</a>');
$actions->append('<a href="/admin/pewfactory/'.$actions->getkey().'/edit" class="btn btn-sm btn-default" >修改</a>');
});
/**
* 增加工具栏
*/
$grid->tools(function ($tools){
$tools->append('<a href="/admin/pewfactory/create" target="_blank" rel="external nofollow" class="btn btn-sm btn-success" title="新增工厂">
<i class="fa fa-plus"></i><span class="hidden-xs"> 新增工厂</span>
</a>');
});
return $grid;
}
/**
* 新增
*/
public function create(Content $content)
{
$nlocation = PubNlocation::getSelectOptions([]); //单选 所在地
$MaterialCategory = MaterialCategory::getSelectInOptions('parent_id',[8]); //多选品类
$content->title($this->title)
->description($this->description['create'])
->breadcrumb(
['text' => $this->title, 'url' => '/pewfactory'],
['text' => $this->description['create']]
)->row(view('tpl.pewfactory.create',['nlocation'=>$nlocation,'MaterialCategory'=>$MaterialCategory]));
return $content;
}
/**
* 编辑
*/
public function edit($id,Content $content){
$nlocation = PubNlocation::getSelectOptions([]);//单选 所在地
$MaterialCategory = MaterialCategory::getSelectInOptions('parent_id',[8]);//多选 品类
$data = pewfactory::where('id',$id)->first();
$content
->header($this->title)
->description($this->description['edit'])
->breadcrumb(
['text'=>$this->title,'url'=>'/pewfactory'],
['text'=>$this->description['edit']]
)->row(view('tpl.pewfactory.create',['nlocation'=>$nlocation,'data'=>$data,'MaterialCategory'=>$MaterialCategory]));
return $content;
}
/**
* 查看
* @param $id
* @param Content $content
* @return Content
*/
public function detail($id, Content $content){
$data = pewfactory::where('id',$id)->with (["nlocation"])
->first();
//dd($data);调试
$cateremark = ''; //擅长品类
if(isset($data->cate_remark)){
$re_cateremark = MaterialCategory::getSelectCateOptions('id',explode(',',$data->cate_remark));
$cateremark = implode(',',$re_cateremark);
}
$coopcate =''; //合作品类
if(isset($data->collaborate)){
$re_coopcate = MaterialCategory::getSelectCateOptions('id',explode(',',$data->collaborate));
$coopcate = implode(',',$re_coopcate);
}
$content
->header($this->title)
->description($this->description['view'])
->breadcrumb(
['text'=>$this->title,'url'=>'/pewfactory'],
['text'=>$this->description['view']]
)->row(view('tpl.pewfactory.detail',['data'=>$data,'cateremark'=>$cateremark,'coopcate'=>$coopcate]));
return $content;
}
/**
* 提交保存
*/
public function store(PewfactoryRequest $request){
$validated = $request->validated();
$data = [
"factory_no" => $request->factory_no,
"name" => $request->name,
...
"locations" => $request->locations,
"cate_remark" => collect($request->cate_remark)->implode(','),
"collaborate" => collect($request->collaborate)->implode(','),
'user_id' => Admin::user()->id,
"updated_at" => date("Y-m-d H:i:s"),
];
if ($request->id){
$id = DB::table('pew_factory')->where('id', $request->id) ->update($data);
}else{
$data['created_at'] = date("Y-m-d H:i:s");
$id = DB::table('pew_factory')->insertGetId($data);
}
//擅长品类
$coopcate_arr = [];
foreach($request->cate_remark as $k => $v){
$coopcate = [
'plant_id' => $request->id,
'category_id' => $v,
'flag' => '0',
'type' => '1',
'created_at' => date("Y-m-d H:i:s"),
];
//if (!in_array($v,$query_cate)) {
if ($v) {
array_push($coopcate_arr, $coopcate);
}
}
DB::table('ryh_plant_coopcate')->insert($coopcate_arr);
//合作品类
$coopcate_arr = [];
foreach($request->collaborate as $k => $v){
$coopcate = [
'plant_id' => $request->id,
'category_id' => $v,
'flag' => '1',
'type' => '1',
'created_at' => date("Y-m-d H:i:s"),
];
//if (!in_array($v,$query_cate)) {
if ($v) {
array_push($coopcate_arr, $coopcate);
}
}
DB::table('ryh_plant_coopcate')->insert($coopcate_arr);
if($id){
admin_toastr(trans('admin.save_succeeded'));
}else{
admin_toastr(trans('admin.actions_failed'));
}
}
}
模型:Pewfactory.php
<?php
/**
* 印绣洗工厂
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class Pewfactory extends Model
{
protected $table = 'pew_factory';
protected $fillable = [
'factory_no','name','abbr','locations','company_ied','bank_number',
'tel','business','boss','boss_call','address','worker_num','asset_ desc',
'cate_remark','collaborate','remark','picture','status','user_id','created_at','updated_at'
];
/**
* 所在地
*/
public function nlocation(){
return $this->belongsTo(PubNlocation::class,'locations','id');
}
public static function getSelectOptions($where = array())
{
$options = DB::table('pew_factory')->where($where)->select('id','factory_no','name','abbr')->get();
$selectOption = [];
foreach ($options as $option){
$selectOption[$option->id] = $option->factory_no.'-'. $option->name.'['.$option->abbr.']';
}
return $selectOption;
}
}
视图:create.blade.php
<section class="content">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="row">
<div class="col-md-12">
<div class="box box-info">
<!-- 创建表单 -->
<!-- form start -->
<form action="/admin/pewfactory" method="post" accept-charset="UTF-8" class="form-horizontal" pjax-container>
<div class="box-body">
<div class="fields-group">
<div class="row" style="padding-bottom: 10px">
{{-- 工厂编号 --}}
<div class="col-md-3">
<div class="">
<label for="factory_no" class=" control-label col-sm-3" style="text-align: left">工厂编号</label>
<div class="col-sm-9">
<input type="text" id="factory_no" name="factory_no" class="form-control factory_no" required="1" placeholder="必填项" value="@if( old('factory_no') ){{ old('factory_no') }}@elseif(isset($data->factory_no)){{ $data->factory_no }}@endif"/>
</div>
</div>
</div>
...
{{-- 所在地 --}}
<div class="col-md-3">
<div class="">
<label for="locations" class="control-label col-sm-3" style="text-align: left">所在地</label>
<div class="col-sm-9">
<select class="form-control locations " id="locations" name="locations" data-value="" required="1" placeholder="必填项" >
<option value="">请选择</option>
@foreach( $nlocation as $k =>$v)
<option value="{{ $k }}"
@if( old('locations') && old('locations') == $k )selected @elseif(isset($data->locations) && $data->locations == $k) selected @endif>
{{ $v }}
</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
{{-- 生产品类 --}}
<div class="row" style="padding-bottom: 10px">
<div class="col-sm-12">
<div class="">
<label for="cate_remark" class="col-sm-1 control-label" style="width: 6%;text-align: left;">生产品类</label>
<div class="col-sm-11" style="width: 94%">
<select class="form-control cate_remark " id="cate_remark" name="cate_remark[]" multiple="multiple" data-value="" >
@foreach($MaterialCategory as $k => $v)
<option value="{{ $v->id }}" @if(isset($data->cate_remark) && in_array($v->id ,explode(',',$data->cate_remark))) selected @endif > {{ $v->title }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
{{-- 合作品类 --}}
<div class="row" style="padding-bottom: 10px">
<div class="col-sm-12">
<div class="">
<label for="collaborate" class="col-sm-1 control-label" style="width: 6%;text-align: left;">合作品类</label>
<div class="col-sm-11" style="width: 94%">
<select class="form-control collaborate " id="collaborate" name="collaborate[]" multiple="multiple" data-value="" >
@foreach($MaterialCategory as $k => $v)
<option value="{{ $v->id }}" @if(isset($data->collaborate) && in_array($v->id ,explode(',',$data->collaborate))) selected @endif > {{ $v->title }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
<script>
/**
* 实例化控件
**/
$(function () {
$(".locations").select2({"allowClear":true,"placeholder":{"id":"","text":"所在地"}});
$(".cate_remark").select2({"allowClear":true,"placeholder":{"id":"","text":"请选择 生产品类,长按Ctrl键,可连续选择"}});
$(".collaborate").select2({"allowClear":true,"placeholder":{"id":"","text":"请选择 合作品类,长按Ctrl键,可连续选择"}});
})
</script>