|
|
@@ -4,6 +4,8 @@ namespace App\Http\Controllers;
|
|
|
|
|
|
use App\Components\AsyncResponse;
|
|
|
use App\Filters\SupplierFilters;
|
|
|
+use App\Material;
|
|
|
+use App\MaterialSupplier;
|
|
|
use App\Supplier;
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
|
@@ -13,23 +15,44 @@ class SupplierController extends Controller
|
|
|
public function index(Request $request,SupplierFilters $filters)
|
|
|
{
|
|
|
$this->gate('供应商');
|
|
|
- $suppliers = Supplier::query()->orderByDesc('id')->filter($filters)->paginate($request['paginate']??50);
|
|
|
- return view('/maintenance/supplier/index',compact('suppliers'));
|
|
|
+ $suppliers = Supplier::query()->with('material')->orderByDesc('id')->filter($filters)->paginate($request['paginate']??50);
|
|
|
+ $materials=Material::query()->select('id','name')->get();
|
|
|
+ return view('/maintenance/supplier/index',compact('suppliers','materials'));
|
|
|
}
|
|
|
|
|
|
public function storeApi(Request $request)
|
|
|
{
|
|
|
$this->gate('供应商-编辑');
|
|
|
- $supplier = Supplier::query()->create($request->all());
|
|
|
+ $supplier = Supplier::query()->create($request->addSupplier);
|
|
|
+ $material_supplier=[];
|
|
|
+ foreach ($request->material_id as $item){
|
|
|
+ $material_supplier[]=[
|
|
|
+ 'material_id'=>$item,
|
|
|
+ 'supplier_id'=>$supplier->id,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ MaterialSupplier::query()->insert($material_supplier);
|
|
|
$this->success($supplier);
|
|
|
}
|
|
|
|
|
|
public function updateApi(Request $request)
|
|
|
{
|
|
|
$this->gate('供应商-编辑');
|
|
|
- $supplier = Supplier::query()->find($request['id']);
|
|
|
- $bool= $supplier->update($request->only(['name','contact_man','phone','invoice_title','bank','bank_account','opening_bank']));
|
|
|
- if($bool)$this->success($supplier);
|
|
|
+ $editSupplier=$request->input('editSupplier');
|
|
|
+ $material_ids=$request->input('material_id');
|
|
|
+ $material_suppliers=MaterialSupplier::query()->where('supplier_id',$editSupplier['id'])->get();
|
|
|
+ $this->updateMaterial($material_suppliers,$material_ids,$editSupplier['id']);
|
|
|
+ $supplier = Supplier::query()->find($editSupplier['id']);
|
|
|
+ $bool= $supplier->update([
|
|
|
+ 'name'=>$editSupplier['name'],
|
|
|
+ 'contact_man'=>$editSupplier['contact_man'],
|
|
|
+ 'phone'=>$editSupplier['phone'],
|
|
|
+ 'invoice_title'=>$editSupplier['invoice_title'],
|
|
|
+ 'bank'=>$editSupplier['bank'],
|
|
|
+ 'bank_account'=>$editSupplier['bank_account'],
|
|
|
+ 'opening_bank'=>$editSupplier['opening_bank']
|
|
|
+ ]);
|
|
|
+ if($bool)$this->success($supplier->loadMissing('material'));
|
|
|
$this->error('更新异常');
|
|
|
}
|
|
|
|
|
|
@@ -40,4 +63,25 @@ class SupplierController extends Controller
|
|
|
$supplier->delete();
|
|
|
$this->success();
|
|
|
}
|
|
|
+ private function updateMaterial($material_suppliers,$material_ids,$supplier_id){
|
|
|
+ $exist=[]; $adds=[];$addMaterial=[];
|
|
|
+ foreach ($material_suppliers as $material_supplier){
|
|
|
+ $exist[]=$material_supplier['material_id'];
|
|
|
+ }
|
|
|
+ $deletes=array_diff($exist,$material_ids);
|
|
|
+ foreach ($material_ids as $id){
|
|
|
+ if (empty($material_suppliers->where('material_id',$id)->first()))$adds[]=$id;
|
|
|
+ }
|
|
|
+ foreach ($adds as $add){
|
|
|
+ $addMaterial[]=[
|
|
|
+ 'material_id'=>$add,
|
|
|
+ 'supplier_id'=>$supplier_id,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ if (count($addMaterial)>0) MaterialSupplier::query()->insert($addMaterial);
|
|
|
+ foreach ($deletes as $delete){
|
|
|
+ MaterialSupplier::query()->where('material_id',$delete)
|
|
|
+ ->where('supplier_id',$supplier_id)->delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|