添加客户管理(个人库)
This commit is contained in:
parent
a087800c0e
commit
00e281e4c6
|
|
@ -66,7 +66,7 @@ class AssignmentController extends Controller
|
|||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$user = Auth::user();
|
||||
$user = $request->user();
|
||||
$data = $request->all(['name','contact_name','contact_phone']);
|
||||
$dataInfo = [];
|
||||
$fields = CustomerField::query()->where('visiable','=',1)->get();
|
||||
|
|
@ -95,7 +95,10 @@ class AssignmentController extends Controller
|
|||
'created_user_nickname' => $user->nickname,
|
||||
'owner_user_id' => $user->id,
|
||||
'owner_user_nickname' => $user->nickname,
|
||||
'assignment_user_id' => $user->id,
|
||||
'assignment_user_nickname' => $user->nickname,
|
||||
'status' => 1,
|
||||
'status_time' => date('Y-m-d H:i:s'),
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,10 @@ namespace App\Http\Controllers\Crm;
|
|||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Customer;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\View;
|
||||
|
||||
class BusinessController extends Controller
|
||||
|
|
@ -27,6 +30,7 @@ class BusinessController extends Controller
|
|||
->when($data['contact_name'], function ($query) use ($data) {
|
||||
return $query->where('contact_name', $data['contact_name'] );
|
||||
})
|
||||
->where('owner_user_id','=',$request->user()->id)
|
||||
->where('status','=',2)
|
||||
->orderByDesc('id')
|
||||
->paginate($request->get('limit', 30));
|
||||
|
|
@ -35,4 +39,33 @@ class BusinessController extends Controller
|
|||
return View::make('crm.business.index');
|
||||
}
|
||||
|
||||
|
||||
public function to(Request $request)
|
||||
{
|
||||
$ids = $request->get('ids',[]);
|
||||
$user = User::where('id',$request->get('user_id'))->first();
|
||||
if ($user == null){
|
||||
return $this->error('请选择员工');
|
||||
}
|
||||
DB::beginTransaction();
|
||||
try{
|
||||
$data = [
|
||||
'owner_user_id' => $user->id,
|
||||
'owner_user_nickname' => $user->nickname,
|
||||
'owner_department_id' => $user->department_id??0,
|
||||
'assignment_user_id' => $request->user()->id,
|
||||
'assignment_user_nickname' => $request->user()->nickname,
|
||||
'status' => 3,
|
||||
'status_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
Customer::query()->whereIn('id',$ids)->update($data);
|
||||
DB::commit();
|
||||
return $this->success();
|
||||
}catch (\Exception $exception){
|
||||
DB::rollBack();
|
||||
Log::error('分配异常:'.$exception->getMessage());
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,14 +4,252 @@ namespace App\Http\Controllers\Crm;
|
|||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Customer;
|
||||
use App\Models\CustomerField;
|
||||
use App\Models\CustomerFieldValue;
|
||||
use App\Models\CustomerRemark;
|
||||
use App\Models\Node;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\View;
|
||||
|
||||
class CustomerController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
if ($request->ajax()){
|
||||
|
||||
}
|
||||
return View::make('crm.customer.index');
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return View::make('crm.customer.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$user = $request->user();
|
||||
$data = $request->all(['name','contact_name','contact_phone']);
|
||||
$dataInfo = [];
|
||||
$fields = CustomerField::query()->where('visiable','=',1)->get();
|
||||
foreach ($fields as $d){
|
||||
$items = [
|
||||
'customer_field_id' => $d->id,
|
||||
'data' => $request->get($d->field_key),
|
||||
];
|
||||
if ($d->field_type=='checkbox'){
|
||||
if (!empty($items['data'])){
|
||||
$items['data'] = implode(',',$items['data']);
|
||||
}else{
|
||||
$items['data'] = null;
|
||||
}
|
||||
}
|
||||
array_push($dataInfo,$items);
|
||||
}
|
||||
DB::beginTransaction();
|
||||
try{
|
||||
$customer_id = DB::table('customer')->insertGetId([
|
||||
'uuid' => uuid_generate(),
|
||||
'name' => $data['name'],
|
||||
'contact_name' => $data['contact_name'],
|
||||
'contact_phone' => $data['contact_phone'],
|
||||
'created_user_id' => $user->id,
|
||||
'created_user_nickname' => $user->nickname,
|
||||
'owner_user_id' => $user->id,
|
||||
'owner_user_nickname' => $user->nickname,
|
||||
'owner_department_id' => $user->department_id??0,
|
||||
'assignment_user_id' => $user->id,
|
||||
'assignment_user_nickname' => $user->nickname,
|
||||
'status' => 3,
|
||||
'status_time' => date('Y-m-d H:i:s'),
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
]);
|
||||
foreach ($dataInfo as $d){
|
||||
DB::table('customer_field_value')->insert([
|
||||
'customer_id' => $customer_id,
|
||||
'customer_field_id' => $d['customer_field_id'],
|
||||
'data' => $d['data'],
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
]);
|
||||
}
|
||||
DB::commit();
|
||||
return $this->success();
|
||||
}catch (\Exception $exception){
|
||||
DB::rollBack();
|
||||
Log::error('客户录入个人库异常:'.$exception->getMessage());
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$model = Customer::query()->findOrFail($id);
|
||||
$fields = CustomerField::query()
|
||||
->where('visiable',1)
|
||||
->orderBy('sort','asc')
|
||||
->get();
|
||||
$data = CustomerFieldValue::query()->where('customer_id','=',$model->id)->pluck('data','customer_field_id')->toArray();
|
||||
return View::make('crm.customer.edit',compact('model','fields','data'));
|
||||
}
|
||||
|
||||
|
||||
public function update(Request $request,$id)
|
||||
{
|
||||
$data = $request->all(['name','contact_name','contact_phone']);
|
||||
$dataInfo = [];
|
||||
$fields = CustomerField::query()->where('visiable','=',1)->get();
|
||||
foreach ($fields as $d){
|
||||
$items = [
|
||||
'customer_field_id' => $d->id,
|
||||
'data' => $request->get($d->field_key),
|
||||
];
|
||||
if ($d->field_type=='checkbox'){
|
||||
if (!empty($items['data'])){
|
||||
$items['data'] = implode(',',$items['data']);
|
||||
}else{
|
||||
$items['data'] = null;
|
||||
}
|
||||
}
|
||||
array_push($dataInfo,$items);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try{
|
||||
DB::table('customer')->where('id',$id)->update([
|
||||
'name' => $data['name'],
|
||||
'contact_name' => $data['contact_name'],
|
||||
'contact_phone' => $data['contact_phone'],
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
]);
|
||||
foreach ($dataInfo as $d){
|
||||
DB::table('customer_field_value')
|
||||
->where('customer_id','=',$id)
|
||||
->where('customer_field_id',$d['customer_field_id'])
|
||||
->update(['data'=>$d['data']]);
|
||||
}
|
||||
DB::commit();
|
||||
return $this->success();
|
||||
}catch (\Exception $exception){
|
||||
DB::rollBack();
|
||||
Log::error('更新个人库客户异常:'.$exception->getMessage());
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(Request $request)
|
||||
{
|
||||
$ids = $request->input('ids');
|
||||
try {
|
||||
Customer::query()->whereIn('id',$ids)->where('status','=',1)->delete();
|
||||
return $this->success();
|
||||
}catch (\Exception $exception){
|
||||
Log::error('删除个人库客户异常:'.$exception->getMessage());
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function transfer(Request $request)
|
||||
{
|
||||
$ids = $request->get('ids',[]);
|
||||
$user = User::where('id',$request->get('user_id'))->first();
|
||||
if ($user == null){
|
||||
return $this->error('请选择员工');
|
||||
}
|
||||
DB::beginTransaction();
|
||||
try{
|
||||
$data = [
|
||||
'owner_user_id' => $user->id,
|
||||
'owner_user_nickname' => $user->nickname,
|
||||
'owner_department_id' => $user->department_id??0,
|
||||
];
|
||||
Customer::query()->whereIn('id',$ids)->update($data);
|
||||
DB::commit();
|
||||
return $this->success();
|
||||
}catch (\Exception $exception){
|
||||
DB::rollBack();
|
||||
Log::error('移交异常:'.$exception->getMessage());
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function remove(Request $request)
|
||||
{
|
||||
$customer_ids = $request->input('customer_ids');
|
||||
if (!is_array($customer_ids) || empty($customer_ids)){
|
||||
return $this->error('请选择剔除项');
|
||||
}
|
||||
try {
|
||||
Customer::query()->whereIn('id',$customer_ids)->update([
|
||||
'status' => 5,
|
||||
'status_time' => date('Y-m-d H:i:s'),
|
||||
'owner_user_id' => 0,
|
||||
'owner_user_nickname' => null,
|
||||
'owner_department_id' => 9,
|
||||
]);
|
||||
return $this->success();
|
||||
}catch (\Exception $exception){
|
||||
Log::error('剔除客户异常:'.$exception->getMessage());
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function remark(Request $request,$id)
|
||||
{
|
||||
$customer = Customer::query()->where('id','=',$id)->first();
|
||||
$nodes = Node::query()->whereIn('type',[1,2])->orderBy('sort','asc')->get();
|
||||
|
||||
if ($request->ajax()){
|
||||
$data = $request->all(['node_id','content','next_follow_time']);
|
||||
$old_node_id = $customer->node_id;
|
||||
$old_node_name = null;
|
||||
$new_node_id = $data['node_id'];
|
||||
$new_node_name = null;
|
||||
foreach ($nodes as $node){
|
||||
if ($node->id == $old_node_id){
|
||||
$old_node_name = $node->name;
|
||||
}
|
||||
if ($node->id == $new_node_id){
|
||||
$new_node_name = $node->name;
|
||||
}
|
||||
}
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$customer->update([
|
||||
'node_id' => $new_node_id,
|
||||
'node_name' => $new_node_name,
|
||||
'follow_user_id' => $request->user()->id,
|
||||
'follow_user_nickname' => $request->user()->nickname,
|
||||
'next_follow_time' => $data['next_follow_time'],
|
||||
]);
|
||||
CustomerRemark::create([
|
||||
'customer_id' => $customer->id,
|
||||
'old_node_id' => $old_node_id,
|
||||
'old_node_name' => $old_node_name,
|
||||
'new_node_id' => $new_node_id,
|
||||
'new_node_name' => $new_node_name,
|
||||
'content' => $data['content'],
|
||||
'next_follow_time' => $data['next_follow_time'],
|
||||
'user_id' => $request->user()->id,
|
||||
'user_nickname' => $request->user()->nickname,
|
||||
]);
|
||||
DB::commit();
|
||||
return $this->success();
|
||||
}catch (\Exception $exception){
|
||||
DB::rollBack();
|
||||
Log::error('备注跟进客户异常:'.$exception->getMessage());
|
||||
return $this->error();
|
||||
}
|
||||
|
||||
}
|
||||
return View::make('crm.customer.remark',compact('customer','nodes'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Crm;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Customer;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\View;
|
||||
|
||||
class GrabController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
if ($request->ajax()){
|
||||
$data = $request->all(['name','contact_name','contact_phone']);
|
||||
$res = Customer::query()
|
||||
//客户名称
|
||||
->when($data['name'], function ($query) use ($data) {
|
||||
return $query->where('name', $data['name']);
|
||||
})
|
||||
//联系电话
|
||||
->when($data['contact_phone'], function ($query) use ($data) {
|
||||
return $query->where('contact_phone', $data['contact_phone']);
|
||||
})
|
||||
//联系人
|
||||
->when($data['contact_name'], function ($query) use ($data) {
|
||||
return $query->where('contact_name', $data['contact_name'] );
|
||||
})
|
||||
->where('department_id','=',$request->user()->department_id)
|
||||
->where('status','=',4)
|
||||
->orderByDesc('status_time')
|
||||
->paginate($request->get('limit', 30));
|
||||
return $this->success('ok',$res->items(),$res->total());
|
||||
}
|
||||
return View::make('crm.grab.index');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$customer_id = $request->input('customer_id');
|
||||
$model = Customer::query()
|
||||
->where('id','=',$customer_id)
|
||||
->where('status','=',4)
|
||||
->first();
|
||||
if ($model == null){
|
||||
return $this->error('很遗憾已被其它用户抢得');
|
||||
}
|
||||
try {
|
||||
$model->update([
|
||||
'owner_user_id' => $request->user()->id,
|
||||
'owner_user_nickname' => $request->user()->nickname,
|
||||
'status' => 3,
|
||||
'status_time' => date('Y-m-d H:i:s'),
|
||||
]);
|
||||
return $this->success('抢单成功,请在个人库里查看');
|
||||
}catch (\Exception $exception){
|
||||
Log::error('抢单异常:'.$exception->getMessage());
|
||||
return $this->error('抢单失败');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CustomerRemark extends Model
|
||||
{
|
||||
protected $table = 'customer_remark';
|
||||
protected $guarded = ['id'];
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CustomerRemark extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('customer_remark', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('customer_id')->comment('客户ID');
|
||||
$table->unsignedBigInteger('old_node_id')->default(0)->comment('原节点ID');
|
||||
$table->unsignedBigInteger('new_node_id')->default(0)->comment('新节点ID');
|
||||
$table->string('old_node_name')->nullable()->comment('原节点名称');
|
||||
$table->string('new_node_name')->nullable()->comment('新节点名称');
|
||||
$table->text('content')->nullable()->comment('备注跟进内容');
|
||||
$table->unsignedBigInteger('user_id')->default(0)->comment('备注跟进人ID');
|
||||
$table->string('user_nickname')->nullable()->comment('备注跟进人昵称');
|
||||
$table->dateTime('next_follow_time')->nullable()->comment('下次跟进时间');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('customer_remark');
|
||||
}
|
||||
}
|
||||
|
|
@ -148,6 +148,22 @@ class MenuTableSeeder extends Seeder
|
|||
'type' => 1,
|
||||
'permission_name' => 'crm.business',
|
||||
],
|
||||
[
|
||||
'name' => '部门抢单',
|
||||
'route' => 'crm.grab',
|
||||
'url' => null,
|
||||
'icon' => 'layui-icon-carousel',
|
||||
'type' => 1,
|
||||
'permission_name' => 'crm.grab',
|
||||
],
|
||||
[
|
||||
'name' => '客户管理',
|
||||
'route' => 'crm.customer',
|
||||
'url' => null,
|
||||
'icon' => 'layui-icon-reply-fill',
|
||||
'type' => 1,
|
||||
'permission_name' => 'crm.customer',
|
||||
],
|
||||
]
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -172,6 +172,30 @@ class UserTableSeeder extends Seeder
|
|||
['name' => 'crm.business.to', 'display_name' => '分配'],
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => 'crm.grab',
|
||||
'display_name' => '部门抢单',
|
||||
'child' => [
|
||||
['name' => 'crm.grab.store', 'display_name' => '抢单'],
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => 'crm.customer',
|
||||
'display_name' => '客户管理',
|
||||
'route' => 'crm.customer',
|
||||
'child' => [
|
||||
['name' => 'crm.customer.create', 'display_name' => '添加'],
|
||||
['name' => 'crm.customer.edit', 'display_name' => '编辑'],
|
||||
['name' => 'crm.customer.destroy', 'display_name' => '删除'],
|
||||
['name' => 'crm.customer.show', 'display_name' => '详情'],
|
||||
['name' => 'crm.customer.remark', 'display_name' => '备注跟进'],
|
||||
['name' => 'crm.customer.list_all', 'display_name' => '查看所有客户'],
|
||||
['name' => 'crm.customer.list_department', 'display_name' => '查看本部门客户'],
|
||||
['name' => 'crm.customer.order', 'display_name' => '下单'],
|
||||
['name' => 'crm.customer.transfer', 'display_name' => '移交'],
|
||||
['name' => 'crm.customer.remove', 'display_name' => '剔除'],
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -5,10 +5,7 @@
|
|||
<div class="layui-card-header layuiadmin-card-header-auto">
|
||||
<form class="layui-form" action="{{route("crm.business")}}">
|
||||
<div class="layui-btn-group">
|
||||
@can('crm.business.destroy')
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" id="listDelete">删除</button>
|
||||
@endcan
|
||||
<button type="button" lay-submit lay-filter="search" class="layui-btn layui-btn-sm" >搜索</button>
|
||||
<button type="button" lay-submit lay-filter="search" class="layui-btn layui-btn-sm" >搜索</button>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
@extends('base')
|
||||
|
||||
@section('content')
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form action="{{route('crm.customer.store')}}" method="post" class="layui-form">
|
||||
@include('common.customer_create',['fields'=>$fields])
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
@include('common.customer_js')
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
@extends('base')
|
||||
|
||||
@section('content')
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form action="{{route('crm.customer.update',['id'=>$model->id])}}" method="post" class="layui-form">
|
||||
@include('common.customer_edit',['model'=>$model,'fields'=>$fields,'data'=>$data])
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
@include('common.customer_js')
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
@extends('base')
|
||||
|
||||
@section('content')
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header layuiadmin-card-header-auto">
|
||||
<form class="layui-form" action="{{route("crm.customer")}}">
|
||||
<div class="layui-btn-group">
|
||||
@can('crm.customer.destroy')
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" id="listDelete">删除</button>
|
||||
@endcan
|
||||
@can('crm.customer.create')
|
||||
<a class="layui-btn layui-btn-sm" id="addBtn">添加</a>
|
||||
@endcan
|
||||
<button type="button" lay-submit lay-filter="search" class="layui-btn layui-btn-sm" >搜索</button>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">客户名称:</label>
|
||||
<div class="layui-input-block" style="width: 275px">
|
||||
<input type="text" name="name" placeholder="请输入名称" class="layui-input" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">联系人:</label>
|
||||
<div class="layui-input-block" style="width: 275px">
|
||||
<input type="text" name="contact_name" placeholder="请输入联系人" class="layui-input" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">联系电话:</label>
|
||||
<div class="layui-input-block" style="width: 275px">
|
||||
<input type="text" name="contact_phone" placeholder="请输入联系电话" class="layui-input" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@can('crm.customer.transfer')
|
||||
<form class="layui-form" action="{{route("crm.customer.transfer")}}">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">员工:</label>
|
||||
<div class="layui-input-block" style="width: 275px">
|
||||
@include('common.get_user')
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="layui-btn layui-btn-sm" lay-submit lay-filter="assignment_to" >移交</button>
|
||||
</div>
|
||||
</form>
|
||||
@endcan
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<table id="dataTable" lay-filter="dataTable"></table>
|
||||
<script type="text/html" id="options">
|
||||
<div class="layui-btn-group">
|
||||
@can('crm.customer.edit')
|
||||
<a class="layui-btn layui-btn-sm" lay-event="edit">编辑</a>
|
||||
@endcan
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
layui.use(['layer','table','form','laydate','upload'],function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var laydate = layui.laydate;
|
||||
var upload = layui.upload;
|
||||
//用户表格初始化
|
||||
var dataTable = table.render({
|
||||
elem: '#dataTable'
|
||||
,height: 'full-200'
|
||||
,url: "{{ route('crm.customer') }}" //数据接口
|
||||
,page: true //开启分页
|
||||
,cols: [[ //表头
|
||||
{checkbox: true}
|
||||
,{field: 'uuid', title: '客户编号'}
|
||||
,{field: 'name', title: '客户名称'}
|
||||
,{field: 'contact_name', title: '联系人'}
|
||||
,{field: 'contact_phone', title: '联系电话'}
|
||||
,{field: 'created_at', title: '录入时间'}
|
||||
,{fixed: 'right', width: 250, align:'center', toolbar: '#options', title:'操作'}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(dataTable)', function(obj){ //注:tool是工具条事件名,dataTable是table原始容器的属性 lay-filter="对应的值"
|
||||
var data = obj.data //获得当前行数据
|
||||
,layEvent = obj.event; //获得 lay-event 对应的值
|
||||
if(layEvent === 'edit'){
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "编辑",
|
||||
shadeClose: true,
|
||||
area: ["90%","90%"],
|
||||
content: '/crm/customer/'+data.id+'/edit',
|
||||
})
|
||||
}
|
||||
});
|
||||
$("#addBtn").click(function () {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "添加",
|
||||
shadeClose: true,
|
||||
area: ["90%","90%"],
|
||||
content: "{{route("crm.customer.create")}}",
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
//移交
|
||||
form.on('submit(assignment_to)', function (data) {
|
||||
var ids = [];
|
||||
var hasCheck = table.checkStatus('dataTable');
|
||||
var hasCheckData = hasCheck.data;
|
||||
if (hasCheckData.length > 0) {
|
||||
$.each(hasCheckData, function (index, element) {
|
||||
ids.push(element.id)
|
||||
})
|
||||
}
|
||||
if (ids.length === 0){
|
||||
layer.msg('请选择移交项', {icon: 2});
|
||||
return false
|
||||
}
|
||||
layer.confirm('确认移交吗?', function (index) {
|
||||
layer.close(index);
|
||||
let load = layer.load();
|
||||
$.post(data.form.action, {ids:ids,user_id:data.field.user_id}, function (res) {
|
||||
layer.close(load);
|
||||
let code = res.code
|
||||
layer.msg(res.msg, {time: 2000, icon: code == 0 ? 1 : 2}, function () {
|
||||
if (code === 0) {
|
||||
dataTable.reload()
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
return false;
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
@extends('base')
|
||||
|
||||
@section('content')
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header layuiadmin-card-header-auto">
|
||||
<form class="layui-form" action="{{route("crm.business")}}">
|
||||
<div class="layui-btn-group">
|
||||
<button type="button" lay-submit lay-filter="search" class="layui-btn layui-btn-sm" >搜索</button>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">客户名称:</label>
|
||||
<div class="layui-input-block" style="width: 275px">
|
||||
<input type="text" name="name" placeholder="请输入名称" class="layui-input" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">联系人:</label>
|
||||
<div class="layui-input-block" style="width: 275px">
|
||||
<input type="text" name="contact_name" placeholder="请输入联系人" class="layui-input" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">联系电话:</label>
|
||||
<div class="layui-input-block" style="width: 275px">
|
||||
<input type="text" name="contact_phone" placeholder="请输入联系电话" class="layui-input" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<table id="dataTable" lay-filter="dataTable"></table>
|
||||
<script type="text/html" id="options">
|
||||
<div class="layui-btn-group">
|
||||
@can('crm.grab.store')
|
||||
<a class="layui-btn layui-btn-sm" lay-event="store">抢单</a>
|
||||
@endcan
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
layui.use(['layer','table','form','laydate','upload'],function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var laydate = layui.laydate;
|
||||
var upload = layui.upload;
|
||||
//用户表格初始化
|
||||
var dataTable = table.render({
|
||||
elem: '#dataTable'
|
||||
,height: 'full-200'
|
||||
,url: "{{ route('crm.grab') }}" //数据接口
|
||||
,page: true //开启分页
|
||||
,cols: [[ //表头
|
||||
{checkbox: true}
|
||||
,{field: 'uuid', title: '客户编号'}
|
||||
,{field: 'name', title: '客户名称'}
|
||||
,{field: 'contact_name', title: '联系人'}
|
||||
,{field: 'contact_phone', title: '联系电话'}
|
||||
,{field: 'assignment_user_nickname', title: '分配人'}
|
||||
,{field: 'status_time', title: '分配时间'}
|
||||
,{field: 'created_at', title: '录入时间'}
|
||||
,{align:'center', toolbar: '#options', title:'操作'}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(dataTable)', function(obj){ //注:tool是工具条事件名,dataTable是table原始容器的属性 lay-filter="对应的值"
|
||||
var data = obj.data //获得当前行数据
|
||||
,layEvent = obj.event; //获得 lay-event 对应的值
|
||||
if(layEvent === 'store'){
|
||||
layer.confirm('确认抢单吗?',function (index) {
|
||||
layer.close(index);
|
||||
var load = layer.load()
|
||||
$.post('{{route('crm.grab.store')}}',{customer_id:data.id},function (res) {
|
||||
layer.close(load)
|
||||
layer.msg(res.msg,{time:2000,icon:res.code==0?1:2},function () {
|
||||
if (res.code==0){
|
||||
obj.del();
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -258,4 +258,34 @@ Route::group(['prefix'=>'crm','namespace'=>'Crm','middleware'=>['auth','permissi
|
|||
Route::post('business/to','BusinessController@to')->name('crm.business.to')->middleware('permission:crm.business.to');
|
||||
});
|
||||
|
||||
//部门抢单库
|
||||
Route::group([],function (){
|
||||
Route::get('grab','GrabController@index')->name('crm.grab')->middleware('permission:crm.grab');
|
||||
//抢单
|
||||
Route::post('grab/store','GrabController@store')->name('crm.grab.store')->middleware('permission:crm.grab.store');
|
||||
});
|
||||
|
||||
//客户管理
|
||||
Route::group([],function (){
|
||||
Route::get('customer','CustomerController@index')->name('crm.customer')->middleware('permission:crm.customer');
|
||||
//添加
|
||||
Route::get('customer/create','CustomerController@create')->name('crm.customer.create')->middleware('permission:crm.customer.create');
|
||||
Route::post('customer/store','CustomerController@store')->name('crm.customer.store')->middleware('permission:crm.customer.create');
|
||||
//编辑
|
||||
Route::get('customer/{id}/edit','CustomerController@edit')->name('crm.customer.edit')->middleware('permission:crm.customer.edit');
|
||||
Route::put('customer/{id}/update','CustomerController@update')->name('crm.customer.update')->middleware('permission:crm.customer.edit');
|
||||
//详情
|
||||
Route::get('customer/{id}/show','CustomerController@show')->name('crm.customer.show')->middleware('permission:crm.customer.show');
|
||||
//删除
|
||||
Route::delete('customer/destroy','CustomerController@destroy')->name('crm.customer.destroy')->middleware('permission:crm.customer.destroy');
|
||||
//剔除
|
||||
Route::post('customer/remove','CustomerController@remove')->name('crm.customer.remove')->middleware('permission:crm.customer.remove');
|
||||
//备注跟进
|
||||
Route::match(['get','post'],'customer/{id}/remark','CustomerController@remark')->name('crm.customer.remark')->middleware('permission:crm.customer.remark');
|
||||
//移交
|
||||
Route::post('customer/transfer','CustomerController@transfer')->name('crm.customer.transfer')->middleware('permission:crm.customer.transfer');
|
||||
//下单
|
||||
Route::post('customer/{id}/order','CustomerController@order')->name('crm.customer.order')->middleware('permission:crm.customer.order');
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue