Commit 9f756e7d by 孙龙

Merge branch 'sl/bom/20200528'

parents 05b2beab 9abdda59
<?php
namespace App\Exceptions;
class BomException extends \Exception{
}
\ No newline at end of file
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Services\Bom\BomService;
class BomApiController extends Controller{
public $bomService =null;
public function __construct()
{
$this->bomService = new BomService;
}
public function Entrance(Request $request,$id){
return call_user_func_array([$this,$id],[$request, $id]);
}
private function ajaxReturn($errcode=0,$errmsg='成功',$data=''){
if(is_array($errcode)){
ErrorLog($errcode[0],$errcode[1]);
return [
'errcode'=>$errcode[0],
'errmsg'=>$errcode[1],
'data'=>!empty($errcode[2])?$errcode[2]:''
];
}else{
ErrorLog($errcode,$errmsg);
return [
'errcode'=>$errcode,
'errmsg'=>$errmsg,
'data'=>$data
];
}
}
private function LayuiAjaxReturn($errcode=0,$errmsg=0,$data=[],$count=0,$total=''){
if(is_array($errcode)){
ErrorLog($errcode[0],$errcode[1]);
return [
'code'=>$errcode[0],
'msg'=>$errcode[1],
'data'=>$errcode[2],
'count'=>$errcode[3],
'total'=>!empty($errcode[4])?$errcode[4]:''
];
}else{
ErrorLog($errcode,$errmsg);
return [
'code'=>$errcode,
'msg'=>$errmsg,
'data'=>$data,
'count'=>$count,
'total'=>$total
];
}
}
// bom单列表
public function BomList($request,$id)
{
list($count,$data) = $this->bomService->getBomList($request);
return $this->LayuiAjaxReturn(0,"ok",$data,$count);
}
// bom单详情
public function BomView($request,$id)
{
list($count,$data) = $this->bomService->getBomView($request);
return $this->LayuiAjaxReturn(0,"ok",$data,$count);
}
//bom单详情 保存bom单
public function saveBomInfo($request,$id){
$res = $this->bomService->saveBomInfo($request);
return $this->ajaxReturn($res['errcode'],$res['errmsg']);
}
/*
* 创建订单
*/
public function createBomOrder($request,$id){
$res = $this->bomService->createBomOrder($request);
return $this->ajaxReturn($res['errcode'],$res['errmsg']);
}
/*
* 数据报表
*/
public function bomReportCount($request,$id){
$res = $this->bomService->bomReportCount($request);
return $this->ajaxReturn($res['errcode'],$res['errmsg'],$res['data']);
}
}
\ No newline at end of file
<?php
namespace App\Http\Controllers;
use App\Http\Page;
use App\Map\PcbOrderInvoiceMap;
use App\Map\PcbOrderMap;
use App\Map\PcbOrderShippingMap;
use App\Map\PcbPurchaseMap;
use App\Model\PaymentDaysModel;
use App\Model\Pcb\PcbOrderModel;
use App\Model\Pcb\PcbPublicModel;
use App\Model\Pcb\PcbPurchaseModel;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
class WebController extends Controller
{
// 页面用户、菜单信息
public function getPageInfo(Request $request)
{
$uri = '/' . $request->path();
$username = $request->user->email;
$useremail= $request->user->email;
// 菜单
$menuconfig = DB::table('config')->where('config_title', '订单系统')->first();
$menus = [];
if ($menuconfig && !($menus = json_decode($menuconfig->config_data)))
$menus = [];
$perm = new PermController();
// 用户角色
$role = $perm->getUserRole($request);
// 获取权限菜单
if ($role != 1) {
$menus = $perm->getPermMenu($menus, $request->user->userId);
}
$userPerms = $perm->getUserAllPerms($request->user->userId, $role); // 用户权限
$data = [
'header' => $request->user->header,
'uri' => $uri,
'username' => $username,
'useremail' => $useremail,
'menus' => $menus,
'userPerms' => $userPerms,
];
return $data;
}
public function info(Request $request,$id=''){
$data=$this->getPageInfo($request);
$data['id']=$id;
return $this->$id($request, $data, $id);
}
private function PaymentDaysList($request,$data,$id){
$data['title']='账期申请列表';
$data['Status']=[1=>'待审核',2=>'审核通过',3=>'审核不通过'];
return view('PaymentDays',$data);
}
private function AuthPaymentDays($request,$data,$id){
$data['title']='审核账期申请';
$data['Status']=[1=>'待审核',2=>'审核通过',3=>'审核不通过'];
$data['paths'] = [["title" => '账期管理', "href" => '#'], ["title" => '申请列表', "href" => '/web/PaymentDaysList'], ["title" => '审核账期申请', "href" => '#']];
$Model=new PaymentDaysModel();
$data['info']=$Model->AuthPaymentDays();
return view('PaymentDays',$data);
}
//pcb 订单列表
private function PcbOrderList($request,$data,$id){
$data['title']='PCB交易列表';
$data['order_type'] = PcbOrderMap::$order_type;
$data['status'] = PcbOrderMap::$status;
$data['shipping'] = objectToArray(DB::connection("order")->table("lie_shipping")->get());
//分页
$response = (new PcbOrderModel())->getList();
$page = new Page($response[3], 10);
$page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$show = $page->show();
$data['list'] = $response[2];
$data['page'] = $show;
return view("Pcb",$data);
}
//pcb详情
private function PcbOrderDetail($request,$data,$id){
$data['title']='PCB订单详情';
$data['paths'] = [["title" => 'PCB管理', "href" => '#'], ["title" => 'PCB订单列表', "href" => '/web/PcbOrderList'], ["title" => 'PCB订单详情', "href" => '#']];
$order_id = $request->input("order_id");
$con = DB::connection('pcb');
//订单基本信息
$orderBase = $con->table('order')->where(['order_id' => $order_id])->first();
if (!$orderBase){
return [0,'不存在此订单'];
}
//采购信息
$purchase = $con->table('purchase')->where(['order_id' => $order_id])->first();
//订单收货人信息
$orderAddress = $con->table('order_address')->where(['order_id' => $order_id])->first();
//订单费用明细
$orderAuditDetail = $con->table('order_audit_detail')->where(['order_id' => $order_id])->first();
//采购审核意见备注
$orderAuditReason2 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>2,'status'=>1])->orderBy("id","desc")->first();
$orderAuditReason1 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>1,'status'=>1])->orderBy("id","desc")->first();
//订单详细信息
$orderInfo = $con->table('order_info')->where(['order_id' => $order_id])->first();
//订单发票信息
$orderInvoice = $con->table('order_invoice')->where(['order_id' => $order_id])->first();
//物流信息
$shipping = $con->table('shipping')->where(['relevance_id' => $order_id,'shipping_type'=>1])->first();
//查询操作日志
$actionLog = $con->table("action_log")->where(["type"=>1,'oid'=>$order_id])->orderBy("id","desc")->get();
$orderBase = objectToArray($orderBase);
$orderBase['tiaojia'] = "";
//拼接采购信息
if ($purchase){
$purchase= objectToArray($purchase);
if($purchase['purchase_amount'] == 0){
$orderBase['tiaojia'] = "";
}else{
if ( $purchase['purchase_amount'] > 0 && $purchase['purchase_amount'] != $purchase['order_amount']){
$orderBase['tiaojia'] = "是";
}else{
$orderBase['tiaojia'] = "否";
}
}
$purchase['shipping_time'] = $purchase['shipping_time'] > 0 ? date('Y-m-d H:i:s',$purchase['shipping_time']) : "";
$purchase['finish_time'] = $purchase['finish_time'] > 0 ? date('Y-m-d H:i:s',$purchase['finish_time']) : "";
$purchase['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : "";
}
//拼接基本信息
$PcbPublicModel = new PcbPublicModel();
$orderBase['order_pay_type'] = $PcbPublicModel->getPay($order_id);
$orderBase['order_type'] = PcbOrderMap::$order_type[$orderBase['order_type']];
$orderBase['status_name'] = PcbOrderMap::$status[$orderBase['status']];
$orderBase['create_time'] = $orderBase['create_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['create_time']) : "";
$orderBase['finish_time'] = $orderBase['finish_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['finish_time']) : "";
$orderBase['pay_time'] = $orderBase['pay_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['pay_time']) : "";
$userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$orderBase['user_id'])->first();
$orderBase['company_name'] = $userCompany ? $userCompany->com_name : "" ;
//拼接收货信息
$RegionController = new RegionController();
if ($orderAddress){
$orderAddress = objectToArray($orderAddress);
$orderAddress['province'] = $RegionController->getRegionName($orderAddress['province']);
$orderAddress['city'] = $RegionController->getRegionName($orderAddress['city']);
$orderAddress['district'] = $RegionController->getRegionName($orderAddress['district']);
}
//拼接发票信息
if ($orderInvoice){
$orderInvoice = objectToArray($orderInvoice);
$orderInvoice['province'] = $RegionController->getRegionName($orderInvoice['consignee_province']);
$orderInvoice['city'] = $RegionController->getRegionName($orderInvoice['consignee_city']);
$orderInvoice['district'] = $RegionController->getRegionName($orderInvoice['consignee_district']);
$orderInvoice['inv_type'] = PcbOrderInvoiceMap::$inv_type[$orderInvoice['inv_type']];
$orderInvoice['invoice_status'] = PcbOrderInvoiceMap::$invoice_status[$orderInvoice['invoice_status']];
}
//拼接订单详细信息
$orderInfo = objectToArray($orderInfo);
$orderInfo['teshu'] = "是否有半孔工艺:".($orderInfo['sp_half_hole'] == 1 ? "是":"否")." 是否要金手指:".($orderInfo['sp_goldfingers'] == 1 ? "是":"否").$orderInfo['sp_goldfingers_bevelling'].$orderInfo['sp_UL_marking']; //特殊工艺
$data['orderBase'] = $orderBase;
$data['purchase'] = $purchase;
$data['orderAddress'] = $orderAddress;
$data['orderAuditDetail'] = objectToArray($orderAuditDetail);
$data['orderAuditReason1'] = objectToArray($orderAuditReason1);
$data['orderAuditReason2'] = objectToArray($orderAuditReason2);
$data['orderInfo'] = objectToArray($orderInfo);
$data['orderInvoice'] = $orderInvoice;
$data['shipping'] = objectToArray($shipping);
$data['actionLog'] = objectToArray($actionLog);
return view("Pcb",$data);
}
//pcb 采购列表
private function PcbPurchaseList($request,$data,$id){
$data['title']='PCB交易列表';
$data['order_type'] = PcbOrderMap::$order_type;
$data['status'] = PcbPurchaseMap::$status;
//分页
$response = (new PcbPurchaseModel())->getList();
$page = new Page($response[3], 10);
$page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$show = $page->show();
$data['list'] = $response[2];
$data['page'] = $show;
return view("Pcb",$data);
}
//pcb详情
private function PcbPurchaseDetail($request,$data,$id){
$data['title']='PCB采购详情';
$data['paths'] = [["title" => 'PCB管理', "href" => '#'], ["title" => 'PCB采购列表', "href" => '/web/PcbPurchaseList'], ["title" => 'PCB采购详情', "href" => '#']];
$purchase_id = $request->input("purchase_id");
$order_id = $request->input("order_id");
$con = DB::connection('pcb');
//订单基本信息
$orderBase = $con->table('order')->where(['order_id' => $order_id])->first();
if (!$orderBase){
return [0,'不存在此采购单'];
}
//采购信息
$purchase = $con->table('purchase')->where(['order_id' => $order_id])->first();
//采购费用明细
$purchaseAuditDetail = $con->table('purchase_audit_detail')->where(['purchase_id' => $purchase_id])->first();
//订单详细信息
$orderInfo = $con->table('order_info')->where(['order_id' => $order_id])->first();
//订单发票信息
$orderInvoice = $con->table('order_invoice')->where(['order_id' => $order_id])->first();
//物流信息
$shipping = $con->table('shipping')->where(['relevance_id' => $purchase_id,'shipping_type'=>3])->first();
//供应商审核结果
$orderAuditReason2 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>2,'status'=>1])->orderBy("id","desc")->first();
//查询操作日志
$actionLog = $con->table("action_log")->where(["type"=>1,'oid'=>$order_id])->orderBy("id","desc")->get();
//拼接基本信息
$orderBase = objectToArray($orderBase);
$orderBase['order_type'] = PcbOrderMap::$order_type[$orderBase['order_type']];
$orderBase['create_time'] = $orderBase['create_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['create_time']) : "";
$orderBase['finish_time'] = $orderBase['finish_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['finish_time']) : "";
$orderBase['pay_time'] = $orderBase['pay_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['pay_time']) : "";
$userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$orderBase['user_id'])->first();
$orderBase['company_name'] = $userCompany ? $userCompany->com_name : "" ;
//拼接采购信息
if ($purchase){
$purchase = objectToArray($purchase);
$purchase['shipping_time'] = $purchase['shipping_time'] > 0 ? date('Y-m-d H:i:s',$purchase['shipping_time']) : "";
$purchase['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : "";
$purchase['pay_time'] = $purchase['pay_time'] > 0 ? date('Y-m-d H:i:s',$purchase['pay_time']): "";
$purchase['order_pay_type'] = PcbOrderMap::$order_pay_type[$purchase['order_pay_type']];
$purchase['status_name'] = @PcbPurchaseMap::$status[$purchase['status']];
if($purchase['purchase_amount'] == 0){
$orderBase['tiaojia'] = "";
}else{
if ( $purchase['purchase_amount'] > 0 && $purchase['purchase_amount'] != $purchase['order_amount']){
$orderBase['tiaojia'] = "是";
}else{
$orderBase['tiaojia'] = "否";
}
}
}
//拼接订单详细信息
$orderInfo = objectToArray($orderInfo);
$orderInfo['teshu'] = "是否有半孔工艺:".($orderInfo['sp_half_hole'] == 1 ? "是":"否")." 是否要金手指:".($orderInfo['sp_goldfingers'] == 1 ? "是":"否").$orderInfo['sp_goldfingers_bevelling'].$orderInfo['sp_UL_marking']; //特殊工艺
$data['orderBase'] = $orderBase;
$data['purchase'] = $purchase;
$data['liexinInfo'] = config("params.liexin_info");
$data['purchaseAuditDetail'] = objectToArray($purchaseAuditDetail);
$data['orderAuditReason2'] = objectToArray($orderAuditReason2);
$data['orderInfo'] = objectToArray($orderInfo);
$data['orderInvoice'] = $orderInvoice;
$data['shipping'] = objectToArray($shipping);
$data['actionLog'] = objectToArray($actionLog);
return view("Pcb",$data);
}
// 订单客服池
public function kefu($request, $data, $id)
{
$data['title'] = '客服池';
return view('web', $data);
}
// 自营样片领取列表
public function selfSampleList($request, $data, $id)
{
$data['title'] = '自营样片领取列表';
return view('web', $data);
}
// 自营样片领取和邀约记录
public function selfSampleLog($request, $data, $id)
{
$user_id = $request->input('user_id', 0);
if (!$user_id) return redirect('/web/selfSampleList');
$data['title'] = '自营样片领取和邀约记录';
$data['paths'] = [["title" => '自营订单', "href" => '#'], ["title" => '自营订单领取列表', "href" => '/web/selfSampleList'], ["title" => '自营样片领取和邀约记录', "href" => '#']];
$data['user_id'] = $user_id;
return view('web', $data);
}
// 团购列表
public function groupList($request, $data, $id)
{
$data['title'] = '团购列表';
return view('web', $data);
}
// 品牌黑名单
public function brandBlackList($request, $data, $id)
{
$data['title'] = '黑名单列表';
return view('web', $data);
}
}
<?php
namespace App\Http\Controllers;
use App\Http\Page;
use App\Map\PcbOrderInvoiceMap;
use App\Map\PcbOrderMap;
use App\Map\PcbOrderShippingMap;
use App\Map\PcbPurchaseMap;
use App\Model\PaymentDaysModel;
use App\Model\Pcb\PcbOrderModel;
use App\Model\Pcb\PcbPublicModel;
use App\Model\Pcb\PcbPurchaseModel;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
class WebController extends Controller
{
// 页面用户、菜单信息
public function getPageInfo(Request $request)
{
$uri = '/' . $request->path();
$username = $request->user->email;
$useremail= $request->user->email;
// 菜单
$menuconfig = DB::table('config')->where('config_title', '订单系统')->first();
$menus = [];
if ($menuconfig && !($menus = json_decode($menuconfig->config_data)))
$menus = [];
$perm = new PermController();
// 用户角色
$role = $perm->getUserRole($request);
// 获取权限菜单
if ($role != 1) {
$menus = $perm->getPermMenu($menus, $request->user->userId);
}
$userPerms = $perm->getUserAllPerms($request->user->userId, $role); // 用户权限
$data = [
'header' => $request->user->header,
'uri' => $uri,
'username' => $username,
'useremail' => $useremail,
'menus' => $menus,
'userPerms' => $userPerms,
];
return $data;
}
public function info(Request $request,$id=''){
$data=$this->getPageInfo($request);
$data['id']=$id;
return $this->$id($request, $data, $id);
}
private function PaymentDaysList($request,$data,$id){
$data['title']='账期申请列表';
$data['Status']=[1=>'待审核',2=>'审核通过',3=>'审核不通过'];
return view('PaymentDays',$data);
}
private function AuthPaymentDays($request,$data,$id){
$data['title']='审核账期申请';
$data['Status']=[1=>'待审核',2=>'审核通过',3=>'审核不通过'];
$data['paths'] = [["title" => '账期管理', "href" => '#'], ["title" => '申请列表', "href" => '/web/PaymentDaysList'], ["title" => '审核账期申请', "href" => '#']];
$Model=new PaymentDaysModel();
$data['info']=$Model->AuthPaymentDays();
return view('PaymentDays',$data);
}
//pcb 订单列表
private function PcbOrderList($request,$data,$id){
$data['title']='PCB交易列表';
$data['order_type'] = PcbOrderMap::$order_type;
$data['status'] = PcbOrderMap::$status;
$data['shipping'] = objectToArray(DB::connection("order")->table("lie_shipping")->get());
//分页
$response = (new PcbOrderModel())->getList();
$page = new Page($response[3], 10);
$page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$show = $page->show();
$data['list'] = $response[2];
$data['page'] = $show;
return view("Pcb",$data);
}
//pcb详情
private function PcbOrderDetail($request,$data,$id){
$data['title']='PCB订单详情';
$data['paths'] = [["title" => 'PCB管理', "href" => '#'], ["title" => 'PCB订单列表', "href" => '/web/PcbOrderList'], ["title" => 'PCB订单详情', "href" => '#']];
$order_id = $request->input("order_id");
$con = DB::connection('pcb');
//订单基本信息
$orderBase = $con->table('order')->where(['order_id' => $order_id])->first();
if (!$orderBase){
return [0,'不存在此订单'];
}
//采购信息
$purchase = $con->table('purchase')->where(['order_id' => $order_id])->first();
//订单收货人信息
$orderAddress = $con->table('order_address')->where(['order_id' => $order_id])->first();
//订单费用明细
$orderAuditDetail = $con->table('order_audit_detail')->where(['order_id' => $order_id])->first();
//采购审核意见备注
$orderAuditReason2 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>2,'status'=>1])->orderBy("id","desc")->first();
$orderAuditReason1 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>1,'status'=>1])->orderBy("id","desc")->first();
//订单详细信息
$orderInfo = $con->table('order_info')->where(['order_id' => $order_id])->first();
//订单发票信息
$orderInvoice = $con->table('order_invoice')->where(['order_id' => $order_id])->first();
//物流信息
$shipping = $con->table('shipping')->where(['relevance_id' => $order_id,'shipping_type'=>1])->first();
//查询操作日志
$actionLog = $con->table("action_log")->where(["type"=>1,'oid'=>$order_id])->orderBy("id","desc")->get();
$orderBase = objectToArray($orderBase);
$orderBase['tiaojia'] = "";
//拼接采购信息
if ($purchase){
$purchase= objectToArray($purchase);
if($purchase['purchase_amount'] == 0){
$orderBase['tiaojia'] = "";
}else{
if ( $purchase['purchase_amount'] > 0 && $purchase['purchase_amount'] != $purchase['order_amount']){
$orderBase['tiaojia'] = "是";
}else{
$orderBase['tiaojia'] = "否";
}
}
$purchase['shipping_time'] = $purchase['shipping_time'] > 0 ? date('Y-m-d H:i:s',$purchase['shipping_time']) : "";
$purchase['finish_time'] = $purchase['finish_time'] > 0 ? date('Y-m-d H:i:s',$purchase['finish_time']) : "";
$purchase['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : "";
}
//拼接基本信息
$PcbPublicModel = new PcbPublicModel();
$orderBase['order_pay_type'] = $PcbPublicModel->getPay($order_id);
$orderBase['order_type'] = PcbOrderMap::$order_type[$orderBase['order_type']];
$orderBase['status_name'] = PcbOrderMap::$status[$orderBase['status']];
$orderBase['create_time'] = $orderBase['create_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['create_time']) : "";
$orderBase['finish_time'] = $orderBase['finish_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['finish_time']) : "";
$orderBase['pay_time'] = $orderBase['pay_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['pay_time']) : "";
$userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$orderBase['user_id'])->first();
$orderBase['company_name'] = $userCompany ? $userCompany->com_name : "" ;
//拼接收货信息
$RegionController = new RegionController();
if ($orderAddress){
$orderAddress = objectToArray($orderAddress);
$orderAddress['province'] = $RegionController->getRegionName($orderAddress['province']);
$orderAddress['city'] = $RegionController->getRegionName($orderAddress['city']);
$orderAddress['district'] = $RegionController->getRegionName($orderAddress['district']);
}
//拼接发票信息
if ($orderInvoice){
$orderInvoice = objectToArray($orderInvoice);
$orderInvoice['province'] = $RegionController->getRegionName($orderInvoice['consignee_province']);
$orderInvoice['city'] = $RegionController->getRegionName($orderInvoice['consignee_city']);
$orderInvoice['district'] = $RegionController->getRegionName($orderInvoice['consignee_district']);
$orderInvoice['inv_type'] = PcbOrderInvoiceMap::$inv_type[$orderInvoice['inv_type']];
$orderInvoice['invoice_status'] = PcbOrderInvoiceMap::$invoice_status[$orderInvoice['invoice_status']];
}
//拼接订单详细信息
$orderInfo = objectToArray($orderInfo);
$orderInfo['teshu'] = "是否有半孔工艺:".($orderInfo['sp_half_hole'] == 1 ? "是":"否")." 是否要金手指:".($orderInfo['sp_goldfingers'] == 1 ? "是":"否").$orderInfo['sp_goldfingers_bevelling'].$orderInfo['sp_UL_marking']; //特殊工艺
$data['orderBase'] = $orderBase;
$data['purchase'] = $purchase;
$data['orderAddress'] = $orderAddress;
$data['orderAuditDetail'] = objectToArray($orderAuditDetail);
$data['orderAuditReason1'] = objectToArray($orderAuditReason1);
$data['orderAuditReason2'] = objectToArray($orderAuditReason2);
$data['orderInfo'] = objectToArray($orderInfo);
$data['orderInvoice'] = $orderInvoice;
$data['shipping'] = objectToArray($shipping);
$data['actionLog'] = objectToArray($actionLog);
return view("Pcb",$data);
}
//pcb 采购列表
private function PcbPurchaseList($request,$data,$id){
$data['title']='PCB交易列表';
$data['order_type'] = PcbOrderMap::$order_type;
$data['status'] = PcbPurchaseMap::$status;
//分页
$response = (new PcbPurchaseModel())->getList();
$page = new Page($response[3], 10);
$page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$show = $page->show();
$data['list'] = $response[2];
$data['page'] = $show;
return view("Pcb",$data);
}
//pcb详情
private function PcbPurchaseDetail($request,$data,$id){
$data['title']='PCB采购详情';
$data['paths'] = [["title" => 'PCB管理', "href" => '#'], ["title" => 'PCB采购列表', "href" => '/web/PcbPurchaseList'], ["title" => 'PCB采购详情', "href" => '#']];
$purchase_id = $request->input("purchase_id");
$order_id = $request->input("order_id");
$con = DB::connection('pcb');
//订单基本信息
$orderBase = $con->table('order')->where(['order_id' => $order_id])->first();
if (!$orderBase){
return [0,'不存在此采购单'];
}
//采购信息
$purchase = $con->table('purchase')->where(['order_id' => $order_id])->first();
//采购费用明细
$purchaseAuditDetail = $con->table('purchase_audit_detail')->where(['purchase_id' => $purchase_id])->first();
//订单详细信息
$orderInfo = $con->table('order_info')->where(['order_id' => $order_id])->first();
//订单发票信息
$orderInvoice = $con->table('order_invoice')->where(['order_id' => $order_id])->first();
//物流信息
$shipping = $con->table('shipping')->where(['relevance_id' => $purchase_id,'shipping_type'=>3])->first();
//供应商审核结果
$orderAuditReason2 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>2,'status'=>1])->orderBy("id","desc")->first();
//查询操作日志
$actionLog = $con->table("action_log")->where(["type"=>1,'oid'=>$order_id])->orderBy("id","desc")->get();
//拼接基本信息
$orderBase = objectToArray($orderBase);
$orderBase['order_type'] = PcbOrderMap::$order_type[$orderBase['order_type']];
$orderBase['create_time'] = $orderBase['create_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['create_time']) : "";
$orderBase['finish_time'] = $orderBase['finish_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['finish_time']) : "";
$orderBase['pay_time'] = $orderBase['pay_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['pay_time']) : "";
$userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$orderBase['user_id'])->first();
$orderBase['company_name'] = $userCompany ? $userCompany->com_name : "" ;
//拼接采购信息
if ($purchase){
$purchase = objectToArray($purchase);
$purchase['shipping_time'] = $purchase['shipping_time'] > 0 ? date('Y-m-d H:i:s',$purchase['shipping_time']) : "";
$purchase['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : "";
$purchase['pay_time'] = $purchase['pay_time'] > 0 ? date('Y-m-d H:i:s',$purchase['pay_time']): "";
$purchase['order_pay_type'] = PcbOrderMap::$order_pay_type[$purchase['order_pay_type']];
$purchase['status_name'] = @PcbPurchaseMap::$status[$purchase['status']];
if($purchase['purchase_amount'] == 0){
$orderBase['tiaojia'] = "";
}else{
if ( $purchase['purchase_amount'] > 0 && $purchase['purchase_amount'] != $purchase['order_amount']){
$orderBase['tiaojia'] = "是";
}else{
$orderBase['tiaojia'] = "否";
}
}
}
//拼接订单详细信息
$orderInfo = objectToArray($orderInfo);
$orderInfo['teshu'] = "是否有半孔工艺:".($orderInfo['sp_half_hole'] == 1 ? "是":"否")." 是否要金手指:".($orderInfo['sp_goldfingers'] == 1 ? "是":"否").$orderInfo['sp_goldfingers_bevelling'].$orderInfo['sp_UL_marking']; //特殊工艺
$data['orderBase'] = $orderBase;
$data['purchase'] = $purchase;
$data['liexinInfo'] = config("params.liexin_info");
$data['purchaseAuditDetail'] = objectToArray($purchaseAuditDetail);
$data['orderAuditReason2'] = objectToArray($orderAuditReason2);
$data['orderInfo'] = objectToArray($orderInfo);
$data['orderInvoice'] = $orderInvoice;
$data['shipping'] = objectToArray($shipping);
$data['actionLog'] = objectToArray($actionLog);
return view("Pcb",$data);
}
// 订单客服池
public function kefu($request, $data, $id)
{
$data['title'] = '客服池';
return view('web', $data);
}
// 自营样片领取列表
public function selfSampleList($request, $data, $id)
{
$data['title'] = '自营样片领取列表';
return view('web', $data);
}
// 自营样片领取和邀约记录
public function selfSampleLog($request, $data, $id)
{
$user_id = $request->input('user_id', 0);
if (!$user_id) return redirect('/web/selfSampleList');
$data['title'] = '自营样片领取和邀约记录';
$data['paths'] = [["title" => '自营订单', "href" => '#'], ["title" => '自营订单领取列表', "href" => '/web/selfSampleList'], ["title" => '自营样片领取和邀约记录', "href" => '#']];
$data['user_id'] = $user_id;
return view('web', $data);
}
// 团购列表
public function groupList($request, $data, $id)
{
$data['title'] = '团购列表';
return view('web', $data);
}
// 品牌黑名单
public function brandBlackList($request, $data, $id)
{
$data['title'] = '黑名单列表';
return view('web', $data);
}
// bom列表
public function BomList($request, $data, $id)
{
$data['title'] = 'BOM单列表';
return view('web', $data);
}
// bom列表
public function BomView($request, $data, $id)
{
$data['title'] = 'BOM单详情';
$data["bom_id"] = $request->input("bom_id",0);
return view('web', $data);
}
// bom报表
public function BomReport($request, $data, $id)
{
$data['title'] = 'BOM报表';
return view('web', $data);
}
}
<?php
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| Routes File
|--------------------------------------------------------------------------
|
| Here is where you will register all of the routes in an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::pattern('userId', '[0-9]+');
Route::pattern('bid', '[0-9]+');
Route::pattern('roleId', '[0-9]+');
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| This route group applies the "web" middleware group to every route
| it contains. The "web" middleware group is defined in your HTTP
| kernel and includes session state, CSRF protection, and more.
|
*/
Route::group(['middleware' => 'web'], function () {
Route::get('/', 'OrderController@orderList');
Route::get('/list', 'OrderController@orderList');
Route::post('/ajax/orderOtherInfoLoading', 'OrderController@orderOtherInfoLoading');
Route::get('/erp_order', 'OrderController@erpOrder');
Route::get('/export', 'OrderController@export');
Route::get('/details/{id}', 'OrderController@details');
Route::get('/page/details/{id}', 'OrderController@detailsPage');
Route::get('/change/{id}', 'OrderController@changeOrder');
Route::match(['get', 'post'], '/sendSales/{id?}', 'OrderController@sendSales');
Route::post('/ajaxdeletegoods', 'OrderController@ajaxdeletegoods');
<?php
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| Routes File
|--------------------------------------------------------------------------
|
| Here is where you will register all of the routes in an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::pattern('userId', '[0-9]+');
Route::pattern('bid', '[0-9]+');
Route::pattern('roleId', '[0-9]+');
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| This route group applies the "web" middleware group to every route
| it contains. The "web" middleware group is defined in your HTTP
| kernel and includes session state, CSRF protection, and more.
|
*/
Route::group(['middleware' => 'web'], function () {
Route::get('/', 'OrderController@orderList');
Route::get('/list', 'OrderController@orderList');
Route::post('/ajax/orderOtherInfoLoading', 'OrderController@orderOtherInfoLoading');
Route::get('/erp_order', 'OrderController@erpOrder');
Route::get('/export', 'OrderController@export');
Route::get('/details/{id}', 'OrderController@details');
Route::get('/page/details/{id}', 'OrderController@detailsPage');
Route::get('/change/{id}', 'OrderController@changeOrder');
Route::match(['get', 'post'], '/sendSales/{id?}', 'OrderController@sendSales');
Route::post('/ajaxdeletegoods', 'OrderController@ajaxdeletegoods');
Route::post('/ajaxSaveChange', 'OrderController@ajaxSaveChange');
Route::post('/ajaxApplyManagerAudit', 'OrderController@ajaxApplyManagerAudit');
Route::post('/ajaxAuditPass', 'OrderController@ajaxAuditPass');
Route::post('/ajaxReAudit', 'OrderController@ajaxReAudit');
Route::get('/check/{id}', 'OrderController@check');
Route::match(['get', 'post'], '/applyAdjust/{id}', 'OrderController@applyAdjust');
Route::match(['get', 'post'], '/send/{id}', 'OrderController@send');
Route::post('/ajaxCheck', 'OrderController@ajaxCheck');
Route::match(['get', 'post'], '/adjustPrice/{id}', 'OrderController@adjustPrice');
// Route::match(['get', 'post'], '/cancelPay/{id}', 'OrderController@cancelPay');
Route::match(['get', 'post'], '/checkPay/{id}', 'OrderController@checkPay');
Route::match(['get', 'post'], '/invShipping/{id}', 'OrderController@invShipping');
Route::match(['get', 'post'], '/changeShipping/{id?}', 'OrderController@changeShipping');
Route::post('/region/getAll', 'RegionController@getAll');
Route::get('/region/cache', 'RegionController@cache');
Route::get('/region/clear', 'RegionController@clear');
Route::match(['get', 'post'], '/changeInvoice/{id?}', 'OrderController@changeInvoice');
Route::resource('/prompt', 'PromptController@index');
Route::get('/count', 'OrderCountController@count');
Route::post('/send_mail', 'OrderController@send_mail');
Route::get('/self_count', 'OrderCountController@selfCount');
Route::get('/amount', 'OrderCountController@amount');
Route::get('/self_amount', 'OrderCountController@selfAmount');
Route::post('/ajax/orderAmountInfoLoading', 'OrderCountController@orderAmountInfoLoading');
Route::match('post', '/ajaxDelayTime', 'OrderController@ajaxDelayTime');
Route::match('post', '/ajaxRejected', 'OrderController@ajaxRejected');
Route::get('/self_order', 'OrderController@selfOrder');
Route::post('/ajaxCancel', 'OrderController@ajaxCancel');
Route::post('/ajaxSelfExpress', 'OrderController@ajaxSelfExpress');
Route::match(['get', 'post'], '/self_check_pay/{id}', 'OrderController@selfCheckPay');
Route::match(['get', 'post'], '/express_set', 'OrderController@expressSet');
Route::match(['get', 'post'], '/tempcount', 'OrderController@tempCount');
Route::post('/ajaxDownloadContract', 'OrderController@ajaxDownloadContract');
// Route::post('/ajaxInputCancelReason', 'OrderController@ajaxInputCancelReason');
Route::post('/ajax/shipping', 'OrderController@shipping');
Route::get('/add_order', 'AddOrderController@addOrder');
Route::post('/ajax/getUserInfo', 'AddOrderController@getUserInfo');
Route::post('/ajax/selectAddr', 'AddOrderController@selectAddr');
Route::post('/ajax/selectInv', 'AddOrderController@selectInv');
Route::post('/ajax/selectInvType', 'AddOrderController@selectInvType');
Route::post('/ajax/getCoupon', 'AddOrderController@getCoupon');
Route::get('/add_online', 'AddOrderController@addOnline');
Route::post('/ajax/confirm', 'AddOrderController@confirm');
Route::get('/add_offline', 'AddOrderController@addOffline');
Route::post('/ajax/getSku', 'AddOrderController@getSku');
Route::post('/ajax/addCart', 'AddOrderController@addCart');
Route::post('/ajax/cartList', 'AddOrderController@cartList');
Route::post('/ajax/changeNum', 'AddOrderController@changeNum');
Route::post('/ajax/deleteGoods', 'AddOrderController@deleteGoods');
Route::post('/ajax/create', 'AddOrderController@create');
Route::get('/addorder/success', 'AddOrderController@success');
Route::post('/ajax/selfCheck', 'AddOrderController@selfCheck');
Route::post('/ajax/switchSaleType', 'AddOrderController@switchSaleType');
Route::post('/ajax/checkStock', 'AddOrderController@checkStock');
Route::post('/ajax/batchGoodsImport', 'AddOrderController@batchGoodsImport');
Route::get('/add_other_order', 'AddOrderController@addOtherOrder');
Route::match(['get', 'post'],'/web/{key}', 'WebController@info');
Route::match(['get', 'post'],'/api/{key}', 'ApiController@Entrance');
Route::match(['get', 'post'], '/export/{key}', 'ExportController@entrance');
Route::match(['get', 'post'], '/refund/{id}', 'OrderController@refund');
Route::get('/refund_order', 'RefundController@jointRefundList');
Route::get('/refund_export', 'RefundController@refundExport');
Route::get('/refund_details/{id}', 'RefundController@refundDetails');
Route::match(['get', 'post'], '/wallet_refund/{id}', 'RefundController@walletRefund');
Route::get('/refund_self_order', 'RefundController@selfRefundList');
Route::post('/ajax/cancelSelfRefund', 'RefundController@cancelSelfRefund');
Route::get('/refund_self_export', 'RefundController@refundSelfExport');
Route::post('/ajax/offlinePaid', 'OrderController@offlinePaid');
Route::post('/ajax/editContract', 'OrderController@editContract');
Route::match(['get', 'post'], '/return/{id}', 'OrderController@orderReturn');
Route::get('/self_return_list', 'ReturnController@selfReturnList');
Route::get('/return_details/{id}', 'ReturnController@returnDetails');
Route::post('/ajax/returnCheck', 'ReturnController@returnCheck');
Route::post('/ajax/returnShipping', 'ReturnController@returnShipping');
Route::get('/self_return_export', 'ReturnController@selfReturnExport');
Route::match(['get', 'post'], '/return_edit/{id}', 'OrderController@orderReturnEdit');
Route::post('/ajax/addGoods', 'AddOrderController@addGoods');
Route::post('/ajax/uploadContract', 'OrderController@uploadContract');
Route::post('/ajax/getOrderItemsTrack', 'OrderController@getOrderItemsTrack');
Route::post('/ajax/batchImportBlackList', 'AddOrderController@batchImportBlackList');
});
// 不需要登陆态
Route::group(['middleware' => 'api'], function () {
Route::get ('/api/check/sendsms', 'OrderController@checkOrderSendSms');
Route::get ('/api/check/cancelorder', 'OrderController@checkOrderCancel');
Route::get ('/api/check/histroyorder', 'OrderController@checkHistroyOrder');
Route::get ('/api/check/changeprice', 'SpecialController@changeOrderPrice');
Route::get ('/api/check/exportdimission', 'SpecialController@exportDimission');
Route::match (['get', 'post'], '/api/check/importdimission', 'SpecialController@importDimission');
Route::get('/act/useramount', 'CronController@userAmount'); // 活动统计用户实付金额
Route::get('/act/clear', 'CronController@clearData'); // 清除活动统计用户表和缓存
Route::get ('/handle/paylog', 'SpecialController@handlePayLog'); // 处理支付记录
Route::get('/act/sendactmsg', 'CronController@sendActMsg'); // 推送活动短信
Route::get ('/handle/paytype', 'SpecialController@changeOrderPayType'); // 自营更改预付款支付方式
Route::post('/hprose/service', function (Request $request) {
$server = new \App\Services\ExportService();
$server->init(); //开启服务
});
Route::get('client', function () {
$server = new \App\Services\TestClient();
$server->index();
});
});
Route::get('/check/{id}', 'OrderController@check');
Route::match(['get', 'post'], '/applyAdjust/{id}', 'OrderController@applyAdjust');
Route::match(['get', 'post'], '/send/{id}', 'OrderController@send');
Route::post('/ajaxCheck', 'OrderController@ajaxCheck');
Route::match(['get', 'post'], '/adjustPrice/{id}', 'OrderController@adjustPrice');
// Route::match(['get', 'post'], '/cancelPay/{id}', 'OrderController@cancelPay');
Route::match(['get', 'post'], '/checkPay/{id}', 'OrderController@checkPay');
Route::match(['get', 'post'], '/invShipping/{id}', 'OrderController@invShipping');
Route::match(['get', 'post'], '/changeShipping/{id?}', 'OrderController@changeShipping');
Route::post('/region/getAll', 'RegionController@getAll');
Route::get('/region/cache', 'RegionController@cache');
Route::get('/region/clear', 'RegionController@clear');
Route::match(['get', 'post'], '/changeInvoice/{id?}', 'OrderController@changeInvoice');
Route::resource('/prompt', 'PromptController@index');
Route::get('/count', 'OrderCountController@count');
Route::post('/send_mail', 'OrderController@send_mail');
Route::get('/self_count', 'OrderCountController@selfCount');
Route::get('/amount', 'OrderCountController@amount');
Route::get('/self_amount', 'OrderCountController@selfAmount');
Route::post('/ajax/orderAmountInfoLoading', 'OrderCountController@orderAmountInfoLoading');
Route::match('post', '/ajaxDelayTime', 'OrderController@ajaxDelayTime');
Route::match('post', '/ajaxRejected', 'OrderController@ajaxRejected');
Route::get('/self_order', 'OrderController@selfOrder');
Route::post('/ajaxCancel', 'OrderController@ajaxCancel');
Route::post('/ajaxSelfExpress', 'OrderController@ajaxSelfExpress');
Route::match(['get', 'post'], '/self_check_pay/{id}', 'OrderController@selfCheckPay');
Route::match(['get', 'post'], '/express_set', 'OrderController@expressSet');
Route::match(['get', 'post'], '/tempcount', 'OrderController@tempCount');
Route::post('/ajaxDownloadContract', 'OrderController@ajaxDownloadContract');
// Route::post('/ajaxInputCancelReason', 'OrderController@ajaxInputCancelReason');
Route::post('/ajax/shipping', 'OrderController@shipping');
Route::get('/add_order', 'AddOrderController@addOrder');
Route::post('/ajax/getUserInfo', 'AddOrderController@getUserInfo');
Route::post('/ajax/selectAddr', 'AddOrderController@selectAddr');
Route::post('/ajax/selectInv', 'AddOrderController@selectInv');
Route::post('/ajax/selectInvType', 'AddOrderController@selectInvType');
Route::post('/ajax/getCoupon', 'AddOrderController@getCoupon');
Route::get('/add_online', 'AddOrderController@addOnline');
Route::post('/ajax/confirm', 'AddOrderController@confirm');
Route::get('/add_offline', 'AddOrderController@addOffline');
Route::post('/ajax/getSku', 'AddOrderController@getSku');
Route::post('/ajax/addCart', 'AddOrderController@addCart');
Route::post('/ajax/cartList', 'AddOrderController@cartList');
Route::post('/ajax/changeNum', 'AddOrderController@changeNum');
Route::post('/ajax/deleteGoods', 'AddOrderController@deleteGoods');
Route::post('/ajax/create', 'AddOrderController@create');
Route::get('/addorder/success', 'AddOrderController@success');
Route::post('/ajax/selfCheck', 'AddOrderController@selfCheck');
Route::post('/ajax/switchSaleType', 'AddOrderController@switchSaleType');
Route::post('/ajax/checkStock', 'AddOrderController@checkStock');
Route::post('/ajax/batchGoodsImport', 'AddOrderController@batchGoodsImport');
Route::get('/add_other_order', 'AddOrderController@addOtherOrder');
Route::match(['get', 'post'],'/web/{key}', 'WebController@info');
Route::match(['get', 'post'],'/api/{key}', 'ApiController@Entrance');
Route::match(['get', 'post'], '/export/{key}', 'ExportController@entrance');
Route::match(['get', 'post'], '/refund/{id}', 'OrderController@refund');
Route::get('/refund_order', 'RefundController@jointRefundList');
Route::get('/refund_export', 'RefundController@refundExport');
Route::get('/refund_details/{id}', 'RefundController@refundDetails');
Route::match(['get', 'post'], '/wallet_refund/{id}', 'RefundController@walletRefund');
Route::get('/refund_self_order', 'RefundController@selfRefundList');
Route::post('/ajax/cancelSelfRefund', 'RefundController@cancelSelfRefund');
Route::get('/refund_self_export', 'RefundController@refundSelfExport');
Route::post('/ajax/offlinePaid', 'OrderController@offlinePaid');
Route::post('/ajax/editContract', 'OrderController@editContract');
Route::match(['get', 'post'], '/return/{id}', 'OrderController@orderReturn');
Route::get('/self_return_list', 'ReturnController@selfReturnList');
Route::get('/return_details/{id}', 'ReturnController@returnDetails');
Route::post('/ajax/returnCheck', 'ReturnController@returnCheck');
Route::post('/ajax/returnShipping', 'ReturnController@returnShipping');
Route::get('/self_return_export', 'ReturnController@selfReturnExport');
Route::match(['get', 'post'], '/return_edit/{id}', 'OrderController@orderReturnEdit');
Route::post('/ajax/addGoods', 'AddOrderController@addGoods');
Route::post('/ajax/uploadContract', 'OrderController@uploadContract');
Route::post('/ajax/getOrderItemsTrack', 'OrderController@getOrderItemsTrack');
Route::post('/ajax/batchImportBlackList', 'AddOrderController@batchImportBlackList');
//bom单
Route::match(['get', 'post'],'/ajax/bom/{key}', 'BomApiController@Entrance');
});
// 不需要登陆态
Route::group(['middleware' => 'api'], function () {
Route::get ('/api/check/sendsms', 'OrderController@checkOrderSendSms');
Route::get ('/api/check/cancelorder', 'OrderController@checkOrderCancel');
Route::get ('/api/check/histroyorder', 'OrderController@checkHistroyOrder');
Route::get ('/api/check/changeprice', 'SpecialController@changeOrderPrice');
Route::get ('/api/check/exportdimission', 'SpecialController@exportDimission');
Route::match (['get', 'post'], '/api/check/importdimission', 'SpecialController@importDimission');
Route::get('/act/useramount', 'CronController@userAmount'); // 活动统计用户实付金额
Route::get('/act/clear', 'CronController@clearData'); // 清除活动统计用户表和缓存
Route::get ('/handle/paylog', 'SpecialController@handlePayLog'); // 处理支付记录
Route::get('/act/sendactmsg', 'CronController@sendActMsg'); // 推送活动短信
Route::get ('/handle/paytype', 'SpecialController@changeOrderPayType'); // 自营更改预付款支付方式
Route::post('/hprose/service', function (Request $request) {
$server = new \App\Services\ExportService();
$server->init(); //开启服务
});
Route::get('client', function () {
$server = new \App\Services\TestClient();
$server->index();
});
});
<?php
namespace App\Model\Bom;
use Illuminate\Database\Eloquent\Model;
class BomExtendModel extends Model{
protected $connection = 'bom'; //库名
protected $table = 'bom_extend';
protected $primaryKey = 'id'; //设置id
protected $guarded = ['id']; //设置字段黑名单
public $timestamps = true;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
protected $dateFormat = 'Y-m-d H:i:s';
// protected $dates = ['fcorder_time'];
public static $STATUS = [
1=>"正常",
2=>"删除",
];
public function fromDateTime($value){
return strtotime(parent::fromDateTime($value));
}
public function getFcorderTimeAttribute($value)
{
if($value > 0){
return date("Y-m-d h:i",$value);
}else{
return "";
}
}
}
\ No newline at end of file
<?php
namespace App\Model\Bom;
use Illuminate\Database\Eloquent\Model;
class BomItemMatchBaseModel extends Model{
protected $suffix = null;
// 设置表后缀
public function setSuffix($suffix)
{
$this->suffix = $suffix;
if ($suffix !== null) {
$this->table = $this->getTable() . '_' . $suffix;
}
}
// 提供一个静态方法设置表后缀
public static function suffix($suffix)
{
$instance = new static;
$instance->setSuffix($suffix);
return $instance->newQuery();
}
// 创建新的"chapters_{$suffix}"的模型实例并返回
public function newInstance($attributes = [], $exists = false)
{
$model = parent::newInstance($attributes, $exists);
$model->setSuffix($this->suffix);
return $model;
}
}
\ No newline at end of file
<?php
namespace App\Model\Bom;
class BomItemMatchExtendModel extends BomItemMatchBaseModel{
protected $connection = 'bom'; //库名
protected $table = 'bom_match_extend'; //库名
protected $primaryKey = 'id'; //设置id
protected $guarded = ['id']; //设置字段黑名单
public $timestamps = true;
const CREATED_AT = 'create_time';
const UPDATED_AT = null;
protected $dateFormat = 'Y-m-d H:i:s';
public function fromDateTime($value){
return strtotime(parent::fromDateTime($value));
}
public function get_bom_match_extend($bom_id,$matching_id){
return static::where(["bom_id"=>$bom_id,"matching_id"=>$matching_id])->first();
}
}
\ No newline at end of file
<?php
namespace App\Model\Bom;
class BomItemMatchModel extends BomItemMatchBaseModel{
protected $connection = 'bom'; //库名
protected $table = 'bom_item_matching'; //库名
protected $primaryKey = 'matching_id'; //设置id
protected $guarded = ['matching_id']; //设置字段黑名单
public $timestamps = true;
const CREATED_AT = 'add_time';
const UPDATED_AT = 'update_time';
protected $dateFormat = 'Y-m-d H:i:s';
public function fromDateTime($value){
return strtotime(parent::fromDateTime($value));
}
public function getBomAmount($bom_id){
$suffix = substr(strrev($bom_id),0,1);
return self::suffix($suffix)->where('bom_id', $bom_id)->where("status",1)->selectRaw("sum(price*number) as amount")->first();
}
public function getBomItemsMatching($bom_id,$bom_item_id){
$suffix = substr(strrev($bom_id),0,1);
return self::suffix($suffix)->where('bom_id', $bom_id)->where("bom_item_id",$bom_item_id)->where("status",1)->first();
}
public function updateBomMatch($bom_id,$where,$data){
$suffix = substr(strrev($bom_id),0,1);
return self::suffix($suffix)->where($where)->update($data);
}
public function addBomMatch($bom_id,$data){
$suffix = substr(strrev($bom_id),0,1);
return self::suffix($suffix)->insert($data);
}
public function bomExtend(){
return $this->belongsTo(\App\Model\Bom\BomExtendModel::class,"bom_id","bom_id");
}
/*
* 获取bom下单型号的数量
*/
public function countCOrderBomItems($is_kefu,$bom_sn,$begin_time,$end_time){
$count = 0;
for($i=0;$i<=9;$i++){
$query = self::suffix($i);
$query = $this->buildCountQuery($query,$is_kefu,$bom_sn,$begin_time,$end_time);
$count += $query->where(["is_corder"=>1])->count("matching_id");
}
return $count;
}
protected function buildCountQuery($query,$is_kefu,$bom_sn,$begin_time,$end_time){
$bom_id = 0;
if($bom_sn != ""){
$bom = BomModel::where("bom_sn",trim($bom_sn))->select("bom_id")->first();
$bom_id = $bom ? $bom->bom_id : 0;
}
if($bom_id > 0){
$query = $query->where(["bom_id"=>$bom_id]);
}
$begin_time = $begin_time ? strtotime($begin_time." 00:00:00") : 0;
$end_time = $end_time ? strtotime($end_time." 23:59:59") : 0;
if($begin_time){
if($end_time){
$query = $query->where('add_time',">=",$begin_time)->where('add_time',"<=",$end_time);
}else{
$query = $query->where('add_time',">=",$begin_time);
}
}elseif($end_time){
$query = $query->where('add_time',"<=",$end_time);
}
if($is_kefu == '0'){
$query = $query->whereDoesntHave("bomExtend",function ($query) {
$query->where('kefu_id', "!=",0);
});
}elseif($is_kefu == '1'){
$query = $query->whereHas("bomExtend",function ($query) {
$query->where('kefu_id', "!=",0);
});
}
return $query;
}
/*
* 获取bom提交BOM金额
* $type 1提交的bom金额 2下单的bom金额
*/
public function bomAmount($is_kefu,$bom_sn,$begin_time,$end_time,$type=0){
$amount = 0;
for($i=0;$i<=9;$i++){
$query = self::suffix($i);
$query = $this->buildCountQuery($query,$is_kefu,$bom_sn,$begin_time,$end_time);
if($type == 0){
$query = $query->where(["is_corder"=>0]);
}elseif($type == 1){
$query = $query->where(["is_corder"=>1]);
}
$sumamount = $query->selectRaw("sum(number*price) as sumamount")->first();
$amount += $sumamount ? $sumamount->sumamount : 0;
}
return $amount;
}
}
\ No newline at end of file
<?php
namespace App\Model\Bom;
class BomItemModel extends BomItemMatchBaseModel{
protected $connection = 'bom'; //库名
protected $table = 'bom_item'; //库名
protected $primaryKey = 'bom_item_id'; //设置id
protected $guarded = ['bom_item_id']; //设置字段黑名单
public $timestamps = true;
const CREATED_AT = 'add_time';
const UPDATED_AT = 'update_time';
protected $dateFormat = 'Y-m-d H:i:s';
public function fromDateTime($value){
return strtotime(parent::fromDateTime($value));
}
public function getBomAmount($bom_id){
$suffix = substr(strrev($bom_id),0,1);
return self::suffix($suffix)->where('bom_id', $bom_id)->where("status",1)->selectRaw("sum(price*number) as amount")->first();
}
public function getBomItems($request,$bom_id){
$page = $request->input("page",1);
$limit = $request->input("limit",10);
$suffix = substr(strrev($bom_id),0,1);
$query = self::suffix($suffix)->select("*")->where('bom_id', $bom_id)->where(["del_status"=>1]);
$query = $query->paginate($limit,[],'page',$page);
return $query;
}
public function bomExtend(){
return $this->belongsTo(\App\Model\Bom\BomExtendModel::class,"bom_id","bom_id");
}
/*
* 获取bom提交型号的数量
*/
public function countBomItems($is_kefu,$bom_sn,$begin_time,$end_time){
$count = 0;
for($i=0;$i<=9;$i++){
$query = self::suffix($i);
$bom_id = 0;
if($bom_sn != ""){
$bom = BomModel::where("bom_sn",trim($bom_sn))->select("bom_id")->first();
$bom_id = $bom ? $bom->bom_id : 0;
}
if($bom_id > 0){
$query = $query->where(["bom_id"=>$bom_id]);
}
$begin_time = $begin_time ? strtotime($begin_time." 00:00:00") : 0;
$end_time = $end_time ? strtotime($end_time." 23:59:59") : 0;
if($begin_time){
if($end_time){
$query = $query->where('add_time',">=",$begin_time)->where('add_time',"<=",$end_time);
}else{
$query = $query->where('add_time',">=",$begin_time);
}
}elseif($end_time){
$query = $query->where('add_time',"<=",$end_time);
}
if($is_kefu == '0'){
$query = $query->whereDoesntHave("bomExtend",function ($query) {
$query->where('kefu_id', "!=",0);
});
}elseif($is_kefu == '1'){
$query = $query->whereHas("bomExtend",function ($query) {
$query->where('kefu_id', "!=",0);
});
}
$count += $query->count("bom_item_id");
}
return $count;
}
}
\ No newline at end of file
<?php
namespace App\Model\Bom;
use Illuminate\Database\Eloquent\Model;
class BomModel extends BomItemMatchBaseModel{
protected $connection = 'bom'; //库名
protected $table = 'bom';
protected $primaryKey = 'bom_id'; //设置id
protected $guarded = ['bom_id']; //设置字段黑名单
public $timestamps = true;
const CREATED_AT = 'add_time';
const UPDATED_AT = 'update_time';
protected $dateFormat = 'Y-m-d H:i:s';
public static $STATUS = [
1=>"正常",
2=>"删除",
];
public function fromDateTime($value){
return strtotime(parent::fromDateTime($value));
}
public function scopeSearchByrole($query,$role_id="",$sale_ids=[]){
if($role_id ==1){
return $query;
}elseif($role_id ==2 && is_array($sale_ids) && !empty($sale_ids) && count($sale_ids) > 0){
array_push($sale_ids,0);
$wherein = implode(",",$sale_ids);
$query = $query->whereRaw("bom_id in (select bom_id from lie_bom_extend where kefu_id in ({$wherein}))");
}elseif($role_id ==3 && !is_array($sale_ids)){
$query = $query->whereRaw("bom_id in (select bom_id from lie_bom_extend where kefu_id = 0 or kefu_id = {$sale_ids})");
}
return $query;
}
public function scopeSearchByBomSn($query,$bom_sn=""){
if($bom_sn != ''){
$query = $query->where('bom_sn',trim($bom_sn));
}
return $query;
}
public function scopeSearchByBomName($query,$bom_name=""){
if($bom_name != ''){
$query = $query->where('bom_name',trim($bom_name));
}
return $query;
}
public function scopeSearchByIsCorder($query,$is_corder=""){
if($is_corder == "all" || $is_corder == "" ){
return $query;
}else{
$query = $query->where('is_corder',intval($is_corder));
}
return $query;
}
public function scopeSearchByUserNameOrKefu($query,$username="",$is_kefu='all'){
$username = trim($username);
$is_kefu = trim($is_kefu);
if($username == "" ){
if($is_kefu == '0'){
$query = $query->whereDoesntHave("bomExtend",function ($query) {
$query->where('kefu_id', "!=",0);
});
}elseif($is_kefu == '1'){
$query = $query->whereHas("bomExtend",function ($query) {
$query->where('kefu_id', "!=",0);
});
}
return $query;
}else{
$query = $query->whereHas("bomExtend",function ($query) use($username,$is_kefu) {
if($username){
$query->where('user_name', trim($username));
}
if($is_kefu == '0'){
$query->where('kefu_id', "=",0);
}elseif($is_kefu == '1'){
$query->where('kefu_id', "!=",0);
}
});
}
return $query;
}
public function scopeSearchByTime($query,$begin_time='',$end_time=''){
$begin_time = $begin_time ? strtotime($begin_time." 00:00:00") : 0;
$end_time = $end_time ? strtotime($end_time." 23:59:59") : 0;
if($begin_time){
if($end_time){
$query = $query->where('add_time',">=",$begin_time)->where('add_time',"<=",$end_time);
}else{
$query = $query->where('add_time',">=",$begin_time);
}
}elseif($end_time){
$query = $query->where('add_time',"<=",$end_time);
}
return $query;
}
public function scopeCreateUserId($query,$create_userid=0,$role=null,$create_username='',$userType=0){
if($userType == 1){
return $query->where('create_userid',1000);
}
if($create_userid && $role != 1){
$query = $query->where('create_userid',$create_userid);
}
if($create_username && $role == 1){
$query = $query->where('create_username',"like","%".trim($create_username)."%");
}
return $query;
}
public function bomExtend()
{
return $this->hasOne(\App\Model\Bom\BomExtendModel::class,"bom_id","bom_id");
}
}
\ No newline at end of file
<?php
namespace App\Model\Bom;
use Illuminate\Database\Eloquent\Model;
class BomOrderModel extends Model{
protected $connection = 'bom'; //库名
protected $table = 'bom_order';
protected $primaryKey = 'id'; //设置id
protected $guarded = ['id']; //设置字段黑名单
public $timestamps = true;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
protected $dateFormat = 'Y-m-d H:i:s';
// protected $dates = ['fcorder_time'];
public function fromDateTime($value){
return strtotime(parent::fromDateTime($value));
}
//获取bom单的 下单金额
public static function getBomOrderAmount($bom_id=0){
return static::where(["bom_id"=>$bom_id])->sum("add_order_amount");
}
//获取bom单的 下单单号
public static function getBomOrderSn($bom_id=0){
return static::where(["bom_id"=>$bom_id])->get()->pluck("order_sn");
}
}
\ No newline at end of file
<?php
namespace App\Services\Bom;
use App\Http\Controllers\PermController;
use App\Model\Bom\BomModel;
use App\Model\Bom\BomItemMatchModel;
use App\Model\Bom\BomItemModel;
use App\Model\Bom\BomItemMatchExtendModel;
use App\Exceptions\BomException;
use App\Model\Bom\BomOrderModel;
use DB;
class BomService {
//1专卖2联营3自营4寄售5第三方仓库 0:自营 1:联营 2:专卖
public static $GOODSTYPE=[
1=>2,
2=>1,
3=>0,
4=>0,
5=>0,
];
public function __construct(){
$this->bomModel = new BomModel;
$this->bomItemMatchModel = new BomItemMatchModel;
}
protected function getRole($request){
$perm = new PermController();
// 用户角色
$role_id = (new PermController)->getUserRole($request);
$sale_ids = [];
if($role_id == 1){
$sale_ids=[];
}else if($role_id == 2){
$sale_ids = (new PermController)->getSubSaleId($request->user->userId);
}elseif($role_id >= 3){
$sale_ids = $request->user->userId;
}
return [$role_id,$sale_ids];
}
public function getBomList($request){
$page = $request->input("page",1);
$limit = $request->input("limit",10);
// $bom_sn = $request->input("bom_sn",'');
$bom_name = $request->input("bom_name",'');
$is_corder = $request->input("is_corder",'all');
$begin_time = $request->input("begin_time",'');
$end_time = $request->input("end_time",'');
$username = $request->input("username",'');
$is_kefu = $request->input("is_kefu",'all');
list($role_id,$sale_ids) = $this->getRole($request);
// dump($role_id);
// dump($sale_ids);
$query = BomModel::select("*")->where(["status"=>1])->with("bomExtend")->SearchByUserNameOrKefu($username,$is_kefu)
->SearchByBomName($bom_name)->SearchByIsCorder($is_corder)->SearchByTime($begin_time,$end_time)
->SearchByrole($role_id,$sale_ids)
->orderBy("bom_id","desc");
// $tmp = str_replace('?', '"'.'%s'.'"', $query->toSql());
// $tmp = vsprintf($tmp, $query->getBindings());
// echo $tmp;
// exit;
$list = $query->paginate($limit,[],'page',$page);
$bomItemMatchModel = new BomItemMatchModel;
foreach($list as $k=>$item){
//bom单金额
$bomMoneyObj = $bomItemMatchModel->getBomAmount($item->bom_id);
$bomMoney = $bomMoneyObj->amount;
$item->bomMoney = $bomMoney ? round($bomMoney,2) : 0;
//bom下单金额
$item->bomCOrderAmount = BomOrderModel::getBomOrderAmount($item->bom_id);
$item->bomCOrderSn = BomOrderModel::getBomOrderSn($item->bom_id);
}
$list = $list->toArray();
// dump($list);
return [$list['total'],$list["data"]];
}
public function getBomView($request){
$bom_id = $request->input("bom_id",0);
$bom = BomModel::where(["bom_id"=>$bom_id])->select("bom_id","bom_sn")->first();
$bomItemModel = new BomItemModel;
$bomItemModelMatch = new BomItemMatchModel;
$bomItemMatchExtendModel = new BomItemMatchExtendModel;
$bom_items = $bomItemModel->getBomItems($request,$bom->bom_id);
foreach($bom_items as $k=>&$item){
$bom_item_matching = $bomItemModelMatch->getBomItemsMatching($bom->bom_id,$item->bom_item_id);
if($bom_item_matching){
$item->match_is_corder = $bom_item_matching->is_corder;
$item->match_goods_type = $bom_item_matching->goods_type;
$item->matching_id = $bom_item_matching->matching_id;
$item->match_number = $bom_item_matching->number;
$item->match_goods_id = $bom_item_matching->goods_id;
$item->match_goods_name = $bom_item_matching->goods_name;
$item->match_brand_name = $bom_item_matching->brand_name;
$item->match_supplier_name = $bom_item_matching->supplier_name;
$item->match_mpq = $bom_item_matching->mpq;
$item->match_moq = $bom_item_matching->moq;
$item->match_delivery = $bom_item_matching->delivery;
$item->match_price = $bom_item_matching->price;
$item->match_amount = $bom_item_matching->price * $bom_item_matching->number;
$item->is_corder = $bom_item_matching->is_corder;
$item->bom_match_extend = $bomItemMatchExtendModel->get_bom_match_extend($bom->bom_id,$bom_item_matching->matching_id);
}
}
$list = $bom_items->toArray();
// dump($list);
return [$list['total'],$list["data"]];
}
protected function getSku($user_id,$item,$extend){
try{
$url = Config('website.search-skuid-finalInfo');
$data['id'] = $item["match_goods_id"];
$data['num'] = isset($item["match_number"]) ? intval($item["match_number"]) : 0;
$data['currency'] = $extend["currency"];
$data['uid'] = intval($user_id) ? intval($user_id) : 0;
$data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
$response = json_decode(curlApi($url, $data, 'POST'), true);
if($response['err_code'] != 0){
return false;
}else{
return $response['data'];
}
}catch(\Exception $e){
return false;
}
}
/**
* 新获取最终销售价
* @param [type] $goods [description]
* @return [type] [description]
*/
function ladder_final_price($goods,$extend)
{
$currency = isset($extend['currency']) ? $extend['currency'] : 1;
$use_ac = isset($goods['ac_type']) ? $goods['ac_type'] : 0;
if ($currency == 1) {
$field = $use_ac ? 'price_ac' : 'price_cn';
} else {
$field = $use_ac ? 'price_us' : 'price_us';//美元不支持优惠
}
$arr = [
'price' => $goods[$field],
'price_total' => isset($goods[$field.'_total']) ? $goods[$field.'_total'] : $goods[$field] * $goods['num'],
'num' => $goods['num'],
];
return $arr;
}
/*
* 获取商品的会员价
*/
protected function saveBomItemMatchingBySearchApi($bom_item_matching,$goods,$extend=[]){
// dump("获取api商品信息 修改商品");
//价格计算
$goods_prices = $this->ladder_final_price($goods, $extend);
//获取优惠前 原始价格
// $initial_prices = $this->ladder_final_price($goods, $extend);
//修改bom单匹配信息
$goodsInfo = $goods['goods_info'];
// dump($goodsInfo);
$where = ['bom_id'=>$bom_item_matching['bom_id'],"matching_id"=>$bom_item_matching['matching_id']];
$delivery = "";
if(is_array($goodsInfo['delivery_time'])){
if(isset($goodsInfo['delivery_time'][$extend['delivery_type']])){
$delivery = $goodsInfo['delivery_time'][$extend['delivery_type']];
}
}
$num = $bom_item_matching['match_number'];
if(in_array($goodsInfo['goods_type'], array(1,2))){//联营
}else{//自营
$mpl = !empty($goodsInfo['mpl']) ? $goodsInfo['mpl'] : 1;//旧数据
$modNum = $num % $mpl;
$num = $num - intval($modNum);
}
$data = [
"goods_id"=>$goodsInfo['goods_id'],
"goods_name"=>$goodsInfo['goods_name'],
"brand_id"=>$goodsInfo['brand_id'],
"brand_name"=>$goodsInfo['brand_name'],
"goods_type"=>static::$GOODSTYPE[$goodsInfo['goods_type']],
"supplier_id"=>$goodsInfo['supplier_id'],
"supplier_name"=>$goodsInfo['supplier_name'],
"delivery"=>$delivery,//货期
"delivery_type"=>$extend['delivery_type'],//交货类型
"number"=>$num,
"price"=>$goods_prices['price'],
"pdf"=>$goodsInfo['pdf'],
"stock"=>$goodsInfo['goods_number'],
"moq"=>$goodsInfo['min_buy'],
"mpq"=>$goodsInfo['min_mpq'],
"encap"=>$goodsInfo['encap'],
"status"=>1,
"update_time"=>time(),
"ladder_price"=>json_encode($goodsInfo['tiered']),
];
$bk = $this->bomItemMatchModel->updateBomMatch($bom_item_matching['bom_id'],$where,$data);
if($bk === false){
return false;
}else{
return true;
}
}
protected function addBomItemMatchingBySearchApi($bom_item_matching,$goods,$extend=[]){
//价格计算
$goods_prices = $this->ladder_final_price($goods, $extend);
//获取优惠前 原始价格
// $initial_prices = $this->ladder_final_price($goods, $extend);
//修改bom单匹配信息
$goodsInfo = $goods['goods_info'];
// $where = ['bom_id'=>$bom_item_matching['bom_id'],"matching_id"=>$bom_item_matching['matching_id']];
$num = $bom_item_matching['match_number'];
if(in_array($goodsInfo['goods_type'], array(1,2))){//联营
}else{//自营
$mpl = !empty($goodsInfo['mpl']) ? $goodsInfo['mpl'] : 1;//旧数据
$modNum = $num % $mpl;
$num = $num - intval($modNum);
}
//货期
try{
$delivery_time = $goodsInfo['delivery_time'];
if(is_array($delivery_time) && count($delivery_time) == 2){
$delivery_time = $delivery_time[$extend['delivery_type']];
}
}catch(\Exception $e){
$delivery_time = "";
}
$data = [
"bom_id"=>$bom_item_matching['bom_id'],
"bom_item_id"=>$bom_item_matching['bom_item_id'],
"goods_id"=>$goodsInfo['goods_id'],
"goods_name"=>$goodsInfo['goods_name'],
"brand_id"=>$goodsInfo['brand_id'],
"brand_name"=>$goodsInfo['brand_name'],
"goods_type"=>static::$GOODSTYPE[$goodsInfo['goods_type']],
"supplier_id"=>$goodsInfo['supplier_id'],
"supplier_name"=>$goodsInfo['supplier_name'],
"delivery"=>$delivery_time,
"delivery_type"=>$extend['delivery_type'],//交货类型
"number"=>$num,
"price"=>$goods_prices['price'],
"pdf"=>$goodsInfo['pdf'],
"stock"=>$goodsInfo['goods_number'],
"moq"=>$goodsInfo['min_buy'],
"mpq"=>$goodsInfo['min_mpq'],
"encap"=>$goodsInfo['encap'],
"status"=>1,
"update_time"=>time(),
"ladder_price"=>json_encode($goodsInfo['tiered']),
];
// dump($data);
$bk = $this->bomItemMatchModel->addBomMatch($bom_item_matching['bom_id'],$data);
if($bk === false){
return false;
}else{
return true;
}
}
public function saveBomItemMatching($bom_item_matching,$extend){
// dump("不需要匹配商品,直接修改bom单");
$goodsInfo = $bom_item_matching;
// dump($goodsInfo);return;
if(isset($bom_item_matching['matching_id']) && $bom_item_matching['matching_id'] > 0){
//修改
$where = ['bom_id'=>$bom_item_matching['bom_id'],"matching_id"=>$bom_item_matching['matching_id']];
$data = [
"goods_id"=>0,
"goods_name"=>trim($goodsInfo['match_goods_name']),
"brand_id"=>0,
"brand_name"=>trim($goodsInfo['match_brand_name']),
"goods_type"=>1,//默认联营
"delivery"=>trim($goodsInfo['match_delivery']),//货期
"delivery_type"=>$extend['delivery_type'],//交货类型
"number"=>intval($goodsInfo['match_number']),
"price"=>$goodsInfo['match_price'],
"pdf"=>"",
"supplier_name"=>trim($goodsInfo['match_supplier_name']),
"supplier_id"=>"0",
"stock"=>0,
"moq"=>0,
"mpq"=>0,
"encap"=>"",
"status"=>1,
"update_time"=>time(),
"ladder_price"=>"",
];
$bk = $this->bomItemMatchModel->updateBomMatch($goodsInfo['bom_id'],$where,$data);
if($bk === false){
return false;
}else{
return true;
}
}else{
//新增
$data = [
"bom_id"=>$goodsInfo['bom_id'],
"bom_item_id"=>$goodsInfo['bom_item_id'],
"goods_id"=>0,
"goods_name"=>isset($goodsInfo['match_goods_name']) ? trim($goodsInfo['match_goods_name']) : '',
"brand_id"=>0,
"brand_name"=>isset($goodsInfo['match_brand_name']) ? trim($goodsInfo['match_brand_name']) : '',
"goods_type"=>1,//默认联营
"delivery"=>isset($goodsInfo['match_delivery']) ? trim($goodsInfo['match_delivery']) : '',//货期
"delivery_type"=>isset($extend['delivery_type']) ? $extend['delivery_type'] : 1,//交货类型
"number"=>isset($goodsInfo['match_number']) ? intval($goodsInfo['match_number']) : 0,
"price"=>isset($goodsInfo['match_price']) ? $goodsInfo['match_price'] : 0,
"supplier_name"=>isset($goodsInfo['match_supplier_name']) ? trim($goodsInfo['match_supplier_name']) : '',
"supplier_id"=>"0",
"pdf"=>"",
"stock"=>0,
"moq"=>0,
"mpq"=>0,
"encap"=>"",
"status"=>1,
"add_time"=>time(),
"update_time"=>time(),
"ladder_price"=>"",
];
$bk = $this->bomItemMatchModel->addBomMatch($goodsInfo['bom_id'],$data);
if($bk === false){
return false;
}else{
return true;
}
}
}
public function saveBomInfo($request){
try{
$err_msg = [];
$data = $request->input("data",'');
// dump($data);exit;
$bom_id = $data[0]["bom_id"];
$bom = BomModel::where(["bom_id"=>intval($bom_id)])->select("user_id","where")->first();
$user_id = $bom->user_id;
$bom_where = $bom->where;
$delivery_type = 0;//交货地
if(!$user_id){
throw new BomException("该bom单没有绑定用户id",-1);
}
if($bom_where){
$bom_where_arr = json_decode($bom_where,true);
if(isset($bom_where_arr["delivery_type"])){
$delivery_type = $bom_where_arr["delivery_type"];
}
}
if(!in_array($delivery_type,[1,2])){
$delivery_type = 1;
}
$currency = $delivery_type;
$extend["delivery_type"] = $delivery_type;
$extend["currency"] = $currency;
foreach($data as $k=>$item){
// dump($item);exit;
//已下单的不能修改
if(isset($item['match_is_corder']) && $item['match_is_corder'] == 1){
// array_push($err_msg,sprintf("第%s个型号已下单,无法更改;",$k));
continue;
}
//设置匹配的默认数量
if(!isset($item["match_number"]) || intval($item["match_number"]) <= 0){
if(isset($item['number']) && $item['number'] > 0){
$item["match_number"] = intval($item['number']);
}else{
$item["match_number"] = 1;
}
}
//如果客服修改了goods_id则 需要重新匹配的商品信息
if(isset($item['match_goods_id']) && $item['match_goods_id'] && intval($item['match_goods_id']) > 0){
// dump($item);continue;
//请求api 获取商品信息
$res = $this->getSku($user_id,$item,$extend);
// dump($res);
//如果获取到了商品数据
if($res !== false){
if(isset($item['matching_id']) && $item['matching_id'] > 0){
//修改 查询到了商品信息 修改本地bom单信息
if($this->saveBomItemMatchingBySearchApi($item,$res,$extend)){
continue;
}
}else{
//新增
if($this->addBomItemMatchingBySearchApi($item,$res,$extend)){
continue;
}
}
}else{
//没搜索到商品 直接将商品id设为0
$item["match_goods_id"] = 0;
}
}
//没有找到商品信息
//直接按照客服提交的信息修改内容 并且修改goods_id=0 goods_type类型为联营
$this->saveBomItemMatching($item,$extend);
}
return ['errcode'=>0,"errmsg"=>"保存成功"];
}catch(BomException $e){
return ['errcode'=>$e->getCode(),"errmsg"=>$e->getMessage()];
}catch(\Exception $e){
return ['errcode'=>-1,"errmsg"=>sprintf("操作异常,请联系技术员 %s",$e->getMessage())];
}
}
/*
* bom下单
* 自营单
* 联营单
*/
public function createBomOrder($request){
try{
$err_msg = [];
$data = $request->input("data",'');
$bom_id = $data[0]["bom_id"];
$bom = BomModel::where(["bom_id"=>intval($bom_id)])->select("user_id","where","bom_sn")->first();
$user_id = $bom->user_id;
$bom_where = $bom->where;
$delivery_type = 0;//交货地
if(!$user_id){
throw new BomException("该bom单没有绑定用户id",-1);
}
if($bom_where){
$bom_where_arr = json_decode($bom_where,true);
if(isset($bom_where_arr["delivery_type"])){
$delivery_type = $bom_where_arr["delivery_type"];
}
}
if(!in_array($delivery_type,[1,2])){
$delivery_type = 1;
}
$currency = $delivery_type;
$extend["delivery_type"] = $delivery_type;
$extend["currency"] = $currency;
$extend["bom_id"] = $bom_id;
$extend["bom_sn"] = $bom->bom_sn;
$address_id = $this->getAddress($user_id);
$extend["address_id"] = $address_id;
$ziying = [];
$lianying=[];
foreach($data as $k=>$item){
if(!isset($item["matching_id"])){
array_push($err_msg,sprintf("您勾选的第%s行数据没有匹配到任何型号,不能下单",$k+1));
break;
}
if($item["is_corder"] == 1) {
array_push($err_msg,sprintf("您勾选的第%s行数据已经下单了,不能重复下单",$k+1));
break;
}
if(in_array($item["match_goods_type"],[0])){
if($item["match_goods_id"] <= 0){
array_push($err_msg,sprintf("您勾选的第%s行数据自营订单没有skuid",$k+1));
break;
}
if($item["match_number"] <= 0){
array_push($err_msg,sprintf("您勾选的第%s行数据数量有问题哦",$k+1));
break;
}
//自营
$ziying[$k]["id"] = $item["match_goods_id"];
$ziying[$k]["num"] = $item["match_number"];
$ziying[$k]["delivery_place"] = $delivery_type;
$ziying[$k]["matching_id"] = $item["matching_id"];
}else{
if($item["match_number"] <= 0){
array_push($err_msg,sprintf("您勾选的第%s行数据数量有问题哦",$k+1));
break;
}
if(!$item["match_goods_name"] || !$item['match_brand_name'] || $item['match_price'] <= 0){
array_push($err_msg,sprintf("您勾选的第%s行数据没有填写完整,请检查型号,品牌,数量等是否填写了",$k+1));
break;
}
//联营
$lianying[$k]["matching_id"] = $item['matching_id'];
$lianying[$k]["goods_name"] = $item['match_goods_name'];
$lianying[$k]["brand_name"] = $item['match_brand_name'];
$lianying[$k]["num"] = $item['match_number'];
$lianying[$k]["goods_price"] = $item['match_price'];
$lianying[$k]["delivery_time"] = $item['match_delivery'];
$lianying[$k]["supplier_name"] =$item['match_supplier_name'];
$lianying[$k]["id"] = $item['match_goods_id'];
$lianying[$k]["matching_id"] = $item["matching_id"];
}
}
if(!empty($err_msg)){
throw new BomException("",-1);
}
//清理用户以前的购物车 type=2 后台 extend_type=5 bom
$this->cleanBomShopCart($user_id);
if($ziying){
$bk1 = $this->zyOrder($user_id,$ziying,$extend,$err_msg);
}
if($lianying){
$bk2 = $this->lyOrder($user_id,$lianying,$extend,$err_msg);
}
$returnErrorMsg = "";
if(isset($bk1))
$returnErrorMsg .= $bk1 ? "自营下单成功:\n<br/>" : "自营下单失败:\n<br/>";
if(isset($bk2))
$returnErrorMsg .= $bk2 ? "联营下单成功:\n<br/>" : "联营下单失败:\n<br/>";
if(!empty($err_msg))
$returnErrorMsg .= implode("\n<br/>",$err_msg);
//dump($err_msg);
return ['errcode'=>0,"errmsg"=>$returnErrorMsg];
}catch(BomException $e){
array_push($err_msg,$e->getMessage());
return ['errcode'=>$e->getCode(),"errmsg"=>implode("\n",$err_msg)];
}catch(\Exception $e){
return ['errcode'=>-1,"errmsg"=>$e->getMessage()];
}
}
/*
* 创建联营订单
*/
protected function lyOrder($user_id,$lianying,$extend,&$err_msg){
//创建购物车
$lyShopCart = $this->createLYOrderToShopCart($user_id,$lianying,$extend,$err_msg);
// exit;
if(!empty($lyShopCart) && $lyShopCart['err_code'] == 0){//加入购物车成功
//获取联营购物车
$car_ids = $this->getShopCart($user_id,1);
// array_push($err_msg,$lyShopCart["err_msg"]);
if(!empty($car_ids)){
//创建订单 请求api创建联营订单
$addOrder = $this->createOrder($user_id,$car_ids,$extend,1);
if(!empty($addOrder) && $addOrder['err_code'] == 0){
//创建订单成功
return true;
}else{
if(is_array($addOrder) && !empty($addOrder)){
array_push($err_msg,sprintf("联营订单下单失败 原因:%s",$addOrder["err_msg"]));
}else{
array_push($err_msg,sprintf("联营订单下单失败 原因:%s","出现异常"));
}
}
}else{
array_push($err_msg,sprintf("%s","联营订单加入购物车失败,原因:没有找到该用户bom单购物车数据"));
}
}else{//bom加入购物车失败
if(is_array($lyShopCart) && !empty($lyShopCart)){
array_push($err_msg,sprintf("联营订单加入购物车失败 %s",$lyShopCart["err_msg"]));
}else{
array_push($err_msg,"联营订单加入购物车失败,原因:出现异常");
}
}
return false;
}
/*
* 联营添加购物车
*/
protected function createLYOrderToShopCart($user_id,$lianying,$extend){
$url = Config('website.addlyorder_url');
$data["bom_sn"] = $extend["bom_sn"];
$data['uid'] = intval($user_id) ? intval($user_id) : 0;
$data["type"] = 2;//1-前台,2-后台,3-后台批量添加
$data['delivery_place'] = $extend["delivery_type"];
$data['data'] = $lianying;
$data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
$response = json_decode(curlApi($url, $data, 'POST'), true);
return $response;
}
/*
* 创建自营订单
* 1,加入购物车
* 2,下单
*/
protected function zyOrder($user_id,$ziying,$extend,&$err_msg){
//请求 api接口 加入购物车
$addZYShopCart = $this->createZYOrderToShopCart($user_id,$ziying,$extend);
// exit;
if(!empty($addZYShopCart) && $addZYShopCart['err_code'] == 0){//加入购物车成功
//获取自营购物车
$car_ids = $this->getShopCart($user_id,3);
if(!empty($car_ids)){
//创建订单 请求api创建自营订单
$addzyOrder = $this->createOrder($user_id,$car_ids,$extend,2);
if(!empty($addzyOrder) && $addzyOrder['err_code'] == 0){
//创建订单成功
return true;
}else{
if(is_array($addzyOrder) && !empty($addzyOrder)){
array_push($err_msg,sprintf("自营订单下单失败 %s",$addzyOrder["err_msg"]));
}else{
array_push($err_msg,"自营订单下单失败,原因:出现异常");
}
}
}else{
array_push($err_msg,"自营订单加入购物车失败,原因:没有找到该用户bom单购物车数据");
}
}else{//bom加入购物车失败
if(is_array($addZYShopCart) && !empty($addZYShopCart)){
array_push($err_msg,sprintf("自营订单加入购物车失败 %s",$addZYShopCart["err_msg"]));
}else{
array_push($err_msg,"自营订单加入购物车失败,原因:出现异常");
}
}
return false;
}
/*
* 创建订单
*
*/
protected function createOrder($user_id,$car_ids,$extend,$type=2){
$url = Config('website.api_create_order');
$data['uid'] = intval($user_id) ? intval($user_id) : 0;
$data["type"] = $type;//订单类型:1.联营, 2.自营线上, 3.自营线下, 4.自营其他业务订单
$data["cart_id"] = implode(",",$car_ids);
$data['address_id'] = $extend["address_id"];
$data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
// dump(curlApi($url, $data, 'POST'));exit;
$response = json_decode(curlApi($url, $data, 'POST'), true);
return $response;
}
/*
* 获取到后台加入的自营的购物车商品
*/
protected function getShopCart($user_id=0,$type=3){
$goodsType = [];
if($type == 3){
//自营
$goodsType = [3];
}else{
//联营
$goodsType = [1,2];
}
$query = DB::connection("order")->table("lie_shopping_cart")->where(["user_id"=>$user_id,"status"=>1,"extend_type"=>5])
->whereIn("goods_type",$goodsType)->select("cart_id")->pluck("cart_id");
return $query;
}
/*
* 创建自营订单 到购物车
*/
protected function createZYOrderToShopCart($user_id,$ziying,$extend){
$url = Config('website.addzyorder_url');
$data['type'] = 2;//后台加入购物车
$data['delivery_place'] = $extend['delivery_type'];
$data["bom_sn"] = $extend["bom_sn"];
$data["data"] = array_merge($ziying);
$data['uid'] = intval($user_id) ? intval($user_id) : 0;
$data['k1'] = time();
$data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
$response = json_decode(curlApi($url, $data, 'POST'), true);
return $response;
}
protected function getAddress($user_id){
$address = DB::connection("order")->table("lie_user_address")->where(["user_id"=>$user_id])->select("address_id","is_default")->orderBy("address_id","desc")->get();
if(!$address){
throw new BomException("没有找到该用户对应的收货地址",-1);
}
$address_id = 0;
foreach($address as $k=>$item){
if($item->is_default == 1){
$address_id = $item->address_id;
break;
}
}
if($address_id){
return $address_id;
}
return $address[0]->address_id;
}
protected function getTax($user_id){
$tax = DB::connection("order")->table("lie_taxinfo")->where(["user_id"=>$user_id])->select("tax_id","tax_title","inv_type","is_default")
->orderBy("tax_id","desc")->get();
if(!tax_id){
return false;
}
$tax_id = 0;
foreach($tax as $k=>$item){
if($item->is_default == 1){
$tax_id = $item->tax_id;
break;
}
}
if($tax_id){
return $tax_id;
}
return $tax[0]->tax_id;
}
/*
* 清楚用户bom购物车
*/
protected function cleanBomShopCart($user_id){
if($user_id <= 0) return true;
DB::connection("order")->table("lie_shopping_cart")->where(["user_id"=>$user_id,"type"=>2,"extend_type"=>5])->delete();
}
public function bomReportCount($request){
try{
$is_kefu = $request->input("is_kefu",'all');
$bom_sn = $request->input("bom_sn",'');
$begin_time = $request->input("begin_time",'');
$end_time = $request->input("end_time",'');
$data['field1'] = "-";
$data['field2'] = "-";
$data['field3'] = "-";
$data['field4'] = "-";
$data['field5'] = "";
$data['field6'] = "-";
$data['field7'] = "-";
$data['field8'] = "-";
$data['field9'] = "-";
$data['field10'] = "-";
$data['field11'] = "-";
$bomModel = new BomModel;
$bomItemsModel = new BomItemModel();
$bomItemsMatchModel = new BomItemMatchModel();
//提交BOM单数量
$data['field1'] = $bomModel->SearchByBomSn($bom_sn)->SearchByUserNameOrKefu("",$is_kefu)->where("is_corder",1)->SearchByTime($begin_time,$end_time)->count("bom_id");
//BOM单数量
$data['field2'] = $bomModel->SearchByBomSn($bom_sn)->SearchByUserNameOrKefu("",$is_kefu)->SearchByTime($begin_time,$end_time)->count("bom_id");
//提交型号数
$data['field4'] = $bomItemsModel->countBomItems($is_kefu,$bom_sn,$begin_time,$end_time);
//下单型号数
$data['field5'] = $bomItemsMatchModel->countCOrderBomItems($is_kefu,$bom_sn,$begin_time,$end_time);
//提交BOM金额
$data['field7'] = $bomItemsMatchModel->bomAmount($is_kefu,$bom_sn,$begin_time,$end_time,0);
//下单BOM金额
$data['field8'] = $bomItemsMatchModel->bomAmount($is_kefu,$bom_sn,$begin_time,$end_time,1);
return ['errcode'=>0,"errmsg"=>"ok","data"=>$data];
}catch(BomException $e){
return ['errcode'=>$e->getCode(),"errmsg"=>$e->getMessage(),"data"=>[]];
}catch(\Exception $e){
return ['errcode'=>-1,"errmsg"=>$e->getMessage(),"data"=>[]];
}
}
}
\ No newline at end of file
......@@ -109,6 +109,18 @@ return [
'prefix' => 'lie_',
'strict' => false,
],
'bom' => [
'driver' => 'mysql',
'host' => env('DB_HOST_BOM', ''),
'database' => env('DB_DATABASE_BOM', ''),
'username' => env('DB_USERNAME_BOM', ''),
'password' => env('DB_PASSWORD_BOM', ''),
'port' => env('DB_PORT_BOM', 3306),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'lie_',
'strict' => false,
],
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
......
<?php
return [
'admin' => ['admin@ichunt.com'],
'login' => [
'login' => 'http://' . env('LOGIN_DOMAIN', '') . '/login',
'logout'=> 'http://' . env('LOGIN_DOMAIN', '') . '/logout',
'check' => 'http://' . env('LOGIN_DOMAIN', '') . '/api/checklogin',
'search'=> 'http://' . env('LOGIN_DOMAIN', '') . '/api/search',
],
'domain' => 'liexin.net',
// 订单系统
'order_url' => 'http://order.liexin.net',
// API项目
'api_domain' => 'http://api.liexin.com/',
'upload_key' => 'fh6y5t4rr351d2c3bryi', // 上传文件key
// 权限系统
'perm_url' => 'http://perm.liexin.net',
// 获取用户权限接口
'perm_api' => 'http://perm.liexin.net/api/perms/',
// 获取用户许可权限接口
'check_access_api' => 'http://perm.liexin.net/api/perms/access',
// 竞调账户配置显示时间
'vp_time_set' => '2018-05-01',
// 基石服务地址
'SERVICE_DOMAIN' => 'http://192.168.1.100',
//中间服务秘钥
'SERVICE_KEY' => 'j9q##VRhaXBEtznIEeDiR@1Hvy0sW3wp',
// 快递配置
'express_fee_key' => 'express_fee',
'express_fee' => [
'sz_inside' => 10,
'gd_inside' => 10,
'gd_outside' => 15,
],
// www站点
'main_url' => 'https://www.liexin.com/',
// 新增自营线下订单内部账号
'internal-account' => '15011111111',
// 新增用户入口
'add-user-url' => 'http://member.liexin.net/add',
// 编辑用户入口
'check-user-url' => 'http://member.liexin.net/list',
// 查询SKUID接口
// 'search-skuid' => 'http://footstone.liexin.net/webapi/sku_list',
// 'search-skuid' => 'http://www.liexin.com/v3/sku/list',
'search-skuid' => 'http://api.liexin.com/goods/detail',
// 新增SKU入口
'add-sku-url' => 'http://footstone.liexin.net/manage/addsku',
// 查询联营SKU入口
'search-sku-url-1' => 'http://footstone.liexin.net/manage/skulist',
// 查询自营SKU入口
'search-sku-url-2' => 'http://footstone.liexin.net/manage/GoodsList',
// 新增自营线上订单付款地址
'pay_online_url' => 'http://www.liexin.com/v3/pay/online?id=',
// 获取自营商品库存
'self-stock-url' => 'http://footstone.liexin.net/webapi/goods_details?sku_id=',
// 财务系统接口地址 (自营发票)
'finance-self-invoice-url' => 'http://192.168.1.97/webapi/checkOrderBillStatus',
// 支付地址
'pay_url' => 'https://www.liexin.com/v3/pay/online?id=',
// 订单微服务
'order_api_domain' => 'http://orderapi.liexin.com',
// crm
'crm_domain' => 'http://lcrm.liexin.net',
// 导出系统
'export_url' => 'http://export.liexin.com',
'export_joint_source_id' => 16,
'export_self_source_id' => 17,
];
<?php
return [
'admin' => ['admin@ichunt.com'],
'login' => [
'login' => 'http://' . env('LOGIN_DOMAIN', '') . '/login',
'logout'=> 'http://' . env('LOGIN_DOMAIN', '') . '/logout',
'check' => 'http://' . env('LOGIN_DOMAIN', '') . '/api/checklogin',
'search'=> 'http://' . env('LOGIN_DOMAIN', '') . '/api/search',
],
'domain' => 'liexin.net',
// 订单系统
'order_url' => 'http://order.liexin.net',
// API项目
'api_domain' => 'http://api.liexin.com/',
'upload_key' => 'fh6y5t4rr351d2c3bryi', // 上传文件key
// 权限系统
'perm_url' => 'http://perm.liexin.net',
// 获取用户权限接口
'perm_api' => 'http://perm.liexin.net/api/perms/',
// 获取用户许可权限接口
'check_access_api' => 'http://perm.liexin.net/api/perms/access',
// 竞调账户配置显示时间
'vp_time_set' => '2018-05-01',
// 基石服务地址
'SERVICE_DOMAIN' => 'http://192.168.1.100',
//中间服务秘钥
'SERVICE_KEY' => 'j9q##VRhaXBEtznIEeDiR@1Hvy0sW3wp',
// 快递配置
'express_fee_key' => 'express_fee',
'express_fee' => [
'sz_inside' => 10,
'gd_inside' => 10,
'gd_outside' => 15,
],
// www站点
'main_url' => 'https://www.liexin.com/',
// 新增自营线下订单内部账号
'internal-account' => '15011111111',
// 新增用户入口
'add-user-url' => 'http://member.liexin.net/add',
// 编辑用户入口
'check-user-url' => 'http://member.liexin.net/list',
// 查询SKUID接口
// 'search-skuid' => 'http://footstone.liexin.net/webapi/sku_list',
// 'search-skuid' => 'http://www.liexin.com/v3/sku/list',
'search-skuid' => 'http://api.liexin.com/goods/detail',
'search-skuid-finalInfo' => 'http://api.liexin.com/cart/bomOrderGetFinalGoods',
//自营订单添加购物车
'addzyorder_url' => 'http://api.liexin.com/cart/addBatch',
//联营加入购物车
'addlyorder_url' => 'http://api.liexin.com/cart/addBatchByOrderSystem',
//bom创建订单
'api_create_order' => 'http://api.liexin.com/order/create',
// 新增SKU入口
'add-sku-url' => 'http://footstone.liexin.net/manage/addsku',
// 查询联营SKU入口
'search-sku-url-1' => 'http://footstone.liexin.net/manage/skulist',
// 查询自营SKU入口
'search-sku-url-2' => 'http://footstone.liexin.net/manage/GoodsList',
// 新增自营线上订单付款地址
'pay_online_url' => 'http://www.liexin.com/v3/pay/online?id=',
// 获取自营商品库存
'self-stock-url' => 'http://footstone.liexin.net/webapi/goods_details?sku_id=',
// 财务系统接口地址 (自营发票)
'finance-self-invoice-url' => 'http://192.168.1.97/webapi/checkOrderBillStatus',
// 支付地址
'pay_url' => 'https://www.liexin.com/v3/pay/online?id=',
// 订单微服务
'order_api_domain' => 'http://orderapi.liexin.com',
// crm
'crm_domain' => 'http://lcrm.liexin.net',
// 导出系统
'export_url' => 'http://export.liexin.com',
'export_joint_source_id' => 16,
'export_self_source_id' => 17,
];
layui.use(['form', 'table', 'laydate'], function(){
var form = layui.form;
var table = layui.table;
var laydate = layui.laydate;
laydate.render({
elem: '#begin_time' //指定元素
});
laydate.render({
elem: '#end_time' //指定元素
});
var renderTable = function () {
table.render({
id: 'list'
,elem: '#list'
,url: '/ajax/bom/BomList' //数据接口
,method:'post'
,cellMinWidth: 80 //全局定义常规单元格的最小宽度
,page: true //开启分页
,cols: [[ //表头
{title: 'id',field: 'bom_id', fixed: 'left', width: 80}
,{field: 'add_time', title: '创建时间', width: 180}
,{field: 'bom_name', title: 'BOM名称', width: 160}
,{templet: '<div>{{d.bom_extend ? d.bom_extend.user_name : ""}}</div>', title: '会员账号', width: 180}
,{templet: '<div>{{d.bom_extend ? d.bom_extend.company_name : ""}}</div>', title: '公司名称', width: 160}
,{field:'bomMoney', title: 'BOM单金额', width: 130}
,{field: 'is_corder', title: '是否下单', templet: '#is_corder', width: 150}
,{field: '', title: '对应订单编号', width: 120,templet:"#bomCOrderSn"}
,{field: 'bomCOrderAmount', title: '下单金额', width: 150}
,{templet: '<div>{{d.bom_extend ? d.bom_extend.fcorder_time : ""}}</div>', title: '首次下单时间', width: 180}
,{templet: '<div>{{d.bom_extend ? d.bom_extend.kefu_name : ""}}</div>', title: '客服', width: 150}
,{field: 'status', title: '状态', templet: '#status', width: 150}
,{field: 'join_time', title: '操作',toolbar: '#action',width:130,fixed: 'right',}
]]
,limit: 10
,limits: [10, 20, 50,]
});
};
renderTable();
form.on('submit(load)', function(data) {
//执行重载
table.reload('list', {
page: {
curr: 1
}
,where: data.field
});
return false;
});
$('.add').click(function() {
layer.open({
area: ['400px', '200px'],
title: '新增客服',
type: 1,
content: $('#kefu-action'),
btn: ['确认', '取消'],
yes: function(index) {
var email = $('.kefu-email').val();
if (!email) {
layer.tips('请输入邮箱', $('.kefu-email'));
return false;
}
$.ajax({
url : '/api/ApiAddKefu',
type: 'post',
data: {email: email},
dataType: 'json',
success: function(resp) {
if (resp.errcode == 0) {
layer.close(index);
layer.msg(resp.errmsg);
renderTable(); // 重新加载table
return false;
}
layer.msg(resp.errmsg);
},
error: function(err) {
console.log(err)
}
})
layer.msg('新增客服中...', {icon: 16, time: 0, shade: 0.3}); // 阻止重复提交
return false;
},
cancel: function(index) {
layer.close(index);
}
})
$('.kefu-email').val('');
})
// tool操作
table.on('tool(kefu)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性lay-filter="对应的值"
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
var url = '';
var title = '';
var content = '';
var datax = {};
datax.id = data.id;
if(layEvent === 'edit') {
url = '/api/ApiEditKefu';
title = '编辑客服';
content = $('#kefu-action');
} else if (layEvent === 'del') {
url = '/api/ApiDelKefu';
title = '删除客服';
content = '<div style="margin: 40px;">确定删除该客服吗?</div>';
datax.status = data.status;
} else if (layEvent === 'top') {
url = '/api/ApiTopKefu';
title = '置顶客服';
content = '<div style="margin: 40px;">确定置顶该客服吗?</div>';
}
layer.open({
area: ['400px', '200px'],
title: title,
type: 1,
content: content,
btn: ['确认', '取消'],
yes: function(index) {
if (layEvent == 'edit') {
var email = $('.kefu-email').val();
if (!email) {
layer.tips('请输入邮箱', $('.kefu-email'));
return false;
}
datax.email = email;
}
$.ajax({
url : url,
type: 'post',
data: datax,
dataType: 'json',
success: function(resp) {
if (resp.errcode == 0) {
layer.close(index);
layer.msg(resp.errmsg);
renderTable(); // 重新加载table
return false;
}
layer.msg(resp.errmsg);
},
error: function(err) {
console.log(err)
}
})
layer.msg(title+'中...', {icon: 16, time: 0, shade: 0.3}); // 阻止重复提交
return false;
},
cancel: function(index) {
layer.close(index);
}
})
if (layEvent == 'edit') {
$('.kefu-email').val(data.email);
}
});
});
\ No newline at end of file
layui.use(['form', 'table', 'laydate'], function() {
var form = layui.form;
var table = layui.table;
var laydate = layui.laydate;
//时间选择器
laydate.render({
elem: '#begin_time' //指定元素
});
laydate.render({
elem: '#end_time' //指定元素
});
function initDataCount(datax){
$.post("/ajax/bom/bomReportCount",datax,function(res){
if(res.errcode == 0){
$.each(res.data,function(k,v){
$("#"+k).text(v);
})
}
})
}
initDataCount({});
$("#test1_button").click(function(){
var aa = $("#test1_form").serialize()
initDataCount(aa)
})
})
\ No newline at end of file
layui.use(['form', 'table', 'laydate'], function() {
var form = layui.form;
var table = layui.table;
var laydate = layui.laydate;
//转换静态表格
table.init('bomView', {
limit:10
,url: '/ajax/bom/BomView?bom_id='+bom_id //数据接口
,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
,defaultToolbar:[]
,method:'post'
,cellMinWidth: 80 //全局定义常规单元格的最小宽度
,page: true //开启分页
});
function renderTable(){
table.init('bomView', {
limit:10
,url: '/ajax/bom/BomView?bom_id='+bom_id //数据接口
,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
,defaultToolbar:[]
,method:'post'
,cellMinWidth: 80 //全局定义常规单元格的最小宽度
,page: true //开启分页
});
}
form.on('checkbox(checkall)', function (data) {
var child = $(data.elem).parents('.layui-tab-item').find('input[type="checkbox"]');
child.each(function (index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
//监听单元格编辑
table.on('edit(bomView)', function(obj){
var value = obj.value //得到修改后的值
,data = obj.data //得到所在行所有键值
,field = obj.field; //得到字段
if(field != "match_goods_id"){
obj.data.match_goods_id = 0;
obj.update(data) //修改当前行数据
}
});
function save_form_ajax(datax){
layer.open({
title: "保存bom单",
content: "你确定保存吗?",
btn: ['确认?', '取消'],
yes: function(index) {
layer.close(index);
$.ajax({
url : "/ajax/bom/saveBomInfo",
type: 'post',
data: datax,
success: function(resp) {
if (resp.errcode == 0) {
layer.msg(resp.errmsg);
renderTable(); // 重新加载table
}else{
layer.alert(resp.errmsg);
}
},
error: function(err) {
console.log(err)
}
})
layer.msg('请耐心等待....', {icon: 16, time: 5000, shade: 0.3})
return false;
},
cancel: function(index) {
layer.close(index);
}
})
}
function create_order_ajax(datax){
layer.open({
title: "创建bom订单",
content: "你确定下单吗?",
btn: ['确认?', '取消'],
yes: function(index) {
layer.close(index);
$.ajax({
url : "/ajax/bom/createBomOrder",
type: 'post',
data: datax,
success: function(resp) {
if (resp.errcode == 0) {
layer.alert(resp.errmsg);
//return
renderTable(); // 重新加载table
}else{
layer.alert(resp.errmsg);
}
},
error: function(err) {
console.log(err)
}
})
layer.msg('请耐心等待....', {icon: 16, time: 10000, shade: 0.3})
return false;
},
cancel: function(index) {
layer.close(index);
}
})
}
//头工具栏事件
table.on('toolbar(bomView)', function(obj){
var checkStatus = table.checkStatus("layui_table_bomView");
var data = checkStatus.data;
if(checkStatus.data.length <= 0){
layer.msg('请先选择需要保存的数据行', {icon: 16, time: 3000, shade: 0.3})
return
}
var datax = {}
datax.data = data
switch(obj.event){
case 'create_order':
create_order_ajax(datax);
break;
case 'save_form':
save_form_ajax(datax)
break;
};
});
})
\ No newline at end of file
<form class="layui-form layui-box" method="post">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">BOM名称</label>
<div class="layui-input-inline">
<input type="text" name="bom_name" placeholder="填写BOM名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">创建用户</label>
<div class="layui-input-inline">
<input type="text" name="username" placeholder="填写创建用户" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">创建日期:</label>
<div class="layui-input-inline">
<input type="text" name="begin_time" value="" autocomplete="off" placeholder="选择开始时间" class="layui-input" id="begin_time" readonly>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" name="end_time" value="" autocomplete="off" placeholder="选择结束时间" class="layui-input" id="end_time" readonly>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">是否下单</label>
<div class="layui-input-inline">
<select name="is_corder" lay-verify="" lay-search>
<option value="">全部</option>
<option value="1"></option>
<option value="0"></option>
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">客服</label>
<div class="layui-input-inline">
<select name="is_kefu" lay-verify="" lay-search>
<option value="all">全部</option>
<option value="1"></option>
<option value="0"></option>
</select>
</div>
</div>
<div class="layui-inline" style="text-align: center;">
<button lay-submit lay-filter="load" class="layui-btn" data-type="search">搜索</button>
<!-- <button type="button" class="layui-btn layui-btn-normal export">导出</button> -->
</div>
</div>
</form>
<table id="list" lay-filter="list"></table>
<script type="text/html" id="action">
{{--<a class="btn btn-xs btn-outline btn-success" href="/web/showTemplate?t_id=@{{ d.bom_id }}" target="_blank" lay-event="show">下载</a>--}}
<a class="btn btn-xs btn-outline btn-success" href="/web/BomView?bom_id=@{{ d.bom_id }}" target="_blank" lay-event="show">详情</a>
</script>
<script type="text/html" id="status">
@{{# if (d.status == 1) { }}
<div style="color:green;">正常</div>
@{{# } else { }}
<div style="color:#ccc;">删除</div>
@{{# } }}
</script>
<script type="text/html" id="is_corder">
@{{# if (d.is_corder == 1) { }}
<div style="color:green;">已下单</div>
@{{# } else { }}
<div style="color:#ccc;">未下单</div>
@{{# } }}
</script>
<script type="text/html" id="kefu_name">
@{{# d.bom_extend.kefu_name }}
</script>
<script type="text/html" id="bomCOrderSn">
@{{# if (d.bomCOrderSn) { }}
@{{ d.bomCOrderSn.join(",")}}
@{{# } }}
</script>
<div class="layui-col-md12" style="padding-bottom: 15px">
<h3>数据概况</h3>
<hr>
<form class="layui-form layui-box" id="test1_form" method="post">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">BOM单号</label>
<div class="layui-input-inline">
<input type="text" name="bom_sn" placeholder="填写BOM单号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">创建日期:</label>
<div class="layui-input-inline">
<input type="text" name="begin_time" value="" autocomplete="off" placeholder="选择开始时间" class="layui-input" id="begin_time" readonly>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" name="end_time" value="" autocomplete="off" placeholder="选择结束时间" class="layui-input" id="end_time" readonly>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">客服</label>
<div class="layui-input-inline">
<select name="is_kefu" lay-verify="" lay-search>
<option value="all">全部</option>
<option value="1"></option>
<option value="0"></option>
</select>
</div>
</div>
<div class="layui-inline" style="text-align: center;">
<a id="test1_button" class="layui-btn" >搜索</a>
<!-- <button type="button" class="layui-btn layui-btn-normal export">导出</button> -->
</div>
</div>
</form>
<div class="layui-card-body">
<table class="layui-table" id="dataCont">
<tr>
<th lay-data="">提交BOM单数量</th>
<th lay-data="">BOM单数量</th>
{{--<th lay-data="">BOM付款数量</th>--}}
<th lay-data="">提交型号数</th>
<th lay-data="">下单型号数</th>
{{--<th lay-data=>付款型号数</th>--}}
<th lay-data=>提交BOM金额</th>
<th lay-data=>下单BOM金额</th>
<th >无结果型号</th>
<th>询价型号数</th>
</tr>
<tr>
<th id="field1"></th>
<th id="field2"></th>
{{--<th id="field3"></th>--}}
<th id="field4"></th>
<th id="field5"></th>
{{--<th id="field6"></th>--}}
<th id="field7"></th>
<th id="field8"></th>
<th id="field10"></th>
<th id="field11"></th>
</tr>
</table>
</div>
</div>
{{--<div class="layui-card" style="">--}}
{{--<h3>用户数据</h3>--}}
{{--<hr>--}}
{{--<form class="layui-form layui-box" id="test5" method="post">--}}
{{--<div class="layui-form-item">--}}
{{--<div class="layui-inline">--}}
{{--<label class="layui-form-label">创建日期:</label>--}}
{{--<div class="layui-input-inline">--}}
{{--<input type="text" name="begin_time" value="" autocomplete="off" placeholder="选择开始时间" class="layui-input" id="begin_time" readonly>--}}
{{--</div>--}}
{{--<div class="layui-form-mid">-</div>--}}
{{--<div class="layui-input-inline">--}}
{{--<input type="text" name="end_time" value="" autocomplete="off" placeholder="选择结束时间" class="layui-input" id="end_time" readonly>--}}
{{--</div>--}}
{{--</div>--}}
{{--<div class="layui-inline">--}}
{{--<label class="layui-form-label">客服</label>--}}
{{--<div class="layui-input-inline">--}}
{{--<select name="is_kefu" lay-verify="" lay-search>--}}
{{--<option value="all">全部</option>--}}
{{--<option value="1"></option>--}}
{{--<option value="0"></option>--}}
{{--</select>--}}
{{--</div>--}}
{{--</div>--}}
{{--<div class="layui-inline" style="text-align: center;">--}}
{{--<button class="layui-btn" data-type="search">搜索</button>--}}
{{--<!-- <button type="button" class="layui-btn layui-btn-normal export">导出</button> -->--}}
{{--</div>--}}
{{--</div>--}}
{{--</form>--}}
{{--</div>--}}
<style>
::-webkit-scrollbar-track-piece {
-webkit-border-radius: 0
}
::-webkit-scrollbar {
width: 5px;
height: 10px
}
::-webkit-scrollbar-thumb {
height: 50px;
background-color: #b8b8b8;
-webkit-border-radius: 6px;
outline-offset: -2px;
filter: alpha(opacity = 50);
-moz-opacity: 0.5;
-khtml-opacity: 0.5;
opacity: 0.5
}
::-webkit-scrollbar-thumb:hover {
height: 50px;
background-color: #878987;
-webkit-border-radius: 6px;
}
</style>
<table class="layui-table" lay-filter="bomView" id="layui_table_bomView">
<thead>
<tr>
<th lay-data="{fixed: 'left',templet:'#checkbd'}"><input type="checkbox" >全选</th>
<th lay-data="{type:'numbers', width:80, sort: true,fixed: 'left'}">序号</th>
<th lay-data="{field:'goods_name', width:150}">需求型号</th>
<th lay-data="{field:'brand_name',width:140,}">品牌</th>
<th lay-data="{field:'number',width:120,}">需求数量</th>
<th lay-data="{field:'attrs',width:120,}">参数</th>
<th lay-data="{field: 'match_goods_id',width:150,edit:'text'}">skuID(可修改)</th>
<th lay-data="{field: 'match_goods_name',width:200,edit:'text'}">推荐型号(可修改)</th>
<th lay-data="{field: 'match_brand_name',width:200,edit:'text'}">推荐品牌(可修改)</th>
<th lay-data="{field:'match_number', width:130,edit:'text'}"><i class="layui-icon-edit"></i>推荐数量(可修改)</th>
<th lay-data="{field:'match_price',width:130,edit:'text'}">单价(可修改)</th>
<th lay-data="{field:'match_delivery',width:160,edit:'text'}">货期/天(可修改)</th>
<th lay-data="{field:'match_supplier_name',edit:'text',width:160}">供应商(可修改)</th>
<th lay-data="{field:'match_mpq'}">包装</th>
<th lay-data="{field:'match_moq'}">起订量</th>
<th lay-data="{field:'match_amount',width:100}">小计</th>
<th lay-data="{field:'is_corder',templet: '#match_ic_corder',width:100}">是否下单</th>
{{--<th lay-data="{field:'bom_match_extend',templet: '#match_extend_order_amount',width:150}">下单金额</th>--}}
<th lay-data="{field:'bom_match_extend',templet: '#match_extend_order_sn',width:150}">订单编号</th>
</tr>
</thead>
</table>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="save_form">保存</button>
<button class="layui-btn layui-btn-sm" lay-event="create_order">下单</button>
</div>
</script>
<script type="text/html" id="match_ic_corder">
@{{# if (d.is_corder == 1) { }}
<div style="color: #ff0000">下单</div>
@{{# }else{ }}
未下单
@{{# } }}
</script>
<script type="text/html" id="checkbd">
@{{# if (d.is_corder != 1) { }}
<input type="checkbox" name="layTableCheckbox" lay-skin="primary">
@{{# } }}
</script>
<script type="text/html" id="match_extend_order_amount">
@{{# if (d.bom_match_extend) { }}
@{{ d.bom_match_extend.order_amount }}
@{{# } }}
</script>
<script type="text/html" id="match_extend_order_sn">
@{{# if (d.bom_match_extend) { }}
@{{# if(d.bom_match_extend.order_id > 0){ }}
@{{# if(d.match_goods_type == 0){ }}
<a href="/details/@{{ d.bom_match_extend.order_id }}?tags=self">@{{ d.bom_match_extend.order_sn }}</a>
@{{# }else{ }}
<a href="/details/@{{ d.bom_match_extend.order_id }}">@{{ d.bom_match_extend.order_sn }}</a>
@{{# } }}
@{{# } }}
@{{# } }}
</script>
<script>
var bom_id = "{{$bom_id}}"
</script>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment