diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index b603fb14..9004e48f 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -10,6 +10,7 @@ use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Redis; +use Illuminate\Support\Facades\Storage; class ApiController extends Controller { @@ -18,18 +19,18 @@ class ApiController extends Controller $role_id = $request->input('role_id'); $role = null; $checkedIds = []; - if ($role_id){ - $role = Role::query()->where('id',$role_id)->first(); + if ($role_id) { + $role = Role::query()->where('id', $role_id)->first(); } $permissions = Permission::query()->orderByDesc('id')->get(); - foreach ($permissions as $permission){ - if ($role != null){ - if ($role->hasPermissionTo($permission)){ - array_push($checkedIds,$permission->id); + foreach ($permissions as $permission) { + if ($role != null) { + if ($role->hasPermissionTo($permission)) { + array_push($checkedIds, $permission->id); } } } - return $this->success('ok',['trees' => $permissions,'checkedId'=>$checkedIds]); + return $this->success('ok', ['trees' => $permissions, 'checkedId' => $checkedIds]); } public function getRoleByUserId(Request $request) @@ -37,18 +38,18 @@ class ApiController extends Controller $data = []; $user_id = $request->input('user_id'); $user = null; - if ($user_id){ - $user = User::query()->where('id',$user_id)->first(); + if ($user_id) { + $user = User::query()->where('id', $user_id)->first(); } $roles = Role::query()->orderByDesc('id')->get(); - foreach ($roles as $role){ - array_push($data,[ + foreach ($roles as $role) { + array_push($data, [ 'name' => $role->display_name, 'value' => $role->id, 'selected' => $user != null && $user->hasRole($role), ]); } - return $this->success('ok',$data); + return $this->success('ok', $data); } public function getDepartmentByUserId(Request $request) @@ -56,16 +57,16 @@ class ApiController extends Controller $data = []; $user_id = $request->input('user_id'); $user = null; - if ($user_id){ - $user = User::query()->where('id',$user_id)->first(); + if ($user_id) { + $user = User::query()->where('id', $user_id)->first(); } $departments = Department::query()->orderByDesc('id')->get(); - foreach ($departments as $d){ + foreach ($departments as $d) { $d->value = $d->id; $d->selected = $user != null && $user->department_id == $d->id; } $data = recursive($departments); - return $this->success('ok',$data); + return $this->success('ok', $data); } /** @@ -79,11 +80,11 @@ class ApiController extends Controller $user_id = $request->input('user_id'); $callee = $request->input('callee'); $user_data = $request->input('user_data'); - $user = User::query()->with('sip')->where('id','=',$user_id)->first(); - if ($user->sip == null){ + $user = User::query()->with('sip')->where('id', '=', $user_id)->first(); + if ($user->sip == null) { return $this->error('用户未分配外呼号'); } - if ($user->sip->status != 1){ + if ($user->sip->status != 1) { return $this->error('用户外呼号未在线'); } try { @@ -100,15 +101,55 @@ class ApiController extends Controller 'user_data' => $user_data, 'gateway_id' => $user->sip->gateway_id ?? 0, ]); - Redis::rpush(config('freeswitch.redis_key.dial'),$cdr->uuid); - return $this->success('呼叫成功',[ + Redis::rpush(config('freeswitch.redis_key.dial'), $cdr->uuid); + return $this->success('呼叫成功', [ 'uuid' => $cdr->uuid, 'call_time' => date('Y-m-d H:i:s'), ]); - }catch (\Exception $exception){ - Log::error('呼叫异常:'.$exception->getMessage()); + } catch (\Exception $exception) { + Log::error('呼叫异常:' . $exception->getMessage()); return $this->error('呼叫失败'); } } + + //文件上传 + public function upload(Request $request) + { + //上传文件最大大小,单位M + $maxSize = 10; + //支持的上传图片类型 + $allowed_extensions = ["png", "jpg", "gif", "xlsx", "xls"]; + + $file = $request->file('file'); + + //检查文件是否上传完成 + if ($file->isValid()) { + //检测图片类型 + $ext = $file->getClientOriginalExtension(); + if (!in_array(strtolower($ext), $allowed_extensions)) { + return $this->success("请上传" . implode(",", $allowed_extensions) . "格式的图片"); + } + //检测图片大小 + if ($file->getSize() > $maxSize * 1024 * 1024) { + return $this->success("图片大小限制" . $maxSize . "M"); + } + } else { + return $this->error('文件不完整'); + } + $newFile = date('Y/m/d/') . uuid_generate() . "." . $file->getClientOriginalExtension(); + $disk = Storage::disk('uploads'); + $res = $disk->put($newFile, file_get_contents($file->getRealPath())); + if ($res) { + $data = [ + 'data' => $newFile, + 'url' => '/uploads/' . $newFile, + ]; + return $this->success('上传成功', $data); + } else { + Log::error('文件上传异常:' . $file->getErrorMessage()); + $this->error('上传失败'); + } + } + } diff --git a/app/Http/Controllers/Crm/AssignmentController.php b/app/Http/Controllers/Crm/AssignmentController.php index 655deaa9..47855163 100644 --- a/app/Http/Controllers/Crm/AssignmentController.php +++ b/app/Http/Controllers/Crm/AssignmentController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Crm; use App\Http\Controllers\Controller; use App\Models\CustomerField; use App\Models\Customer; +use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -18,16 +19,17 @@ class AssignmentController extends Controller * @param Request $request * @return \Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ - public function assignment(Request $request) + public function index(Request $request) { + $users = User::query()->get(); if ($request->ajax()){ $res = Customer::query() ->where('status','=',1) - ->orderByDesc() + ->orderByDesc('id') ->paginate($request->get('limit', 30)); return $this->success('ok',$res->items(),$res->total()); } - return View::make('crm.assignment.index'); + return View::make('crm.assignment.index',compact('users')); } diff --git a/app/Http/Controllers/Crm/CustomerFieldController.php b/app/Http/Controllers/Crm/CustomerFieldController.php index 464ba681..a323ea37 100644 --- a/app/Http/Controllers/Crm/CustomerFieldController.php +++ b/app/Http/Controllers/Crm/CustomerFieldController.php @@ -18,6 +18,7 @@ class CustomerFieldController extends Controller if ($request->ajax()){ $res = CustomerField::query() ->orderBy('sort','asc') + ->orderBy('id','desc') ->paginate($request->get('limit', 30)); return $this->success('ok',$res->items(),$res->total()); } @@ -49,7 +50,7 @@ class CustomerFieldController extends Controller public function edit($id) { $model = CustomerField::findOrFail($id); - return View::make('crm.customer_field.create',compact('model')); + return View::make('crm.customer_field.edit',compact('model')); } public function update(Request $request,$id) diff --git a/app/Http/Controllers/System/UserController.php b/app/Http/Controllers/System/UserController.php index 874267e5..08ef106e 100644 --- a/app/Http/Controllers/System/UserController.php +++ b/app/Http/Controllers/System/UserController.php @@ -160,7 +160,7 @@ class UserController extends Controller return $this->error(); } } - return View::make('user.changeMyPassword'); + return View::make('system.user.changeMyPassword'); } } diff --git a/config/filesystems.php b/config/filesystems.php index 220c0104..e82b473d 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -65,6 +65,11 @@ return [ 'endpoint' => env('AWS_ENDPOINT'), ], + 'uploads' => [ + 'driver' => 'local', + 'root' => public_path('uploads'), + ], + ], ]; diff --git a/config/freeswitch.php b/config/freeswitch.php index f5a92bfa..699e2e70 100644 --- a/config/freeswitch.php +++ b/config/freeswitch.php @@ -71,7 +71,8 @@ return [ 'radio' => '单选', 'checkbox' => '多选', 'select' => '下拉选择', - 'image' => '图片上传', + 'image' => '单图片上传', + 'images' => '多图片上传', 'textarea' => '文本框', ], diff --git a/database/seeds/MenuTableSeeder.php b/database/seeds/MenuTableSeeder.php index a38a55ad..4d94e295 100644 --- a/database/seeds/MenuTableSeeder.php +++ b/database/seeds/MenuTableSeeder.php @@ -132,6 +132,14 @@ class MenuTableSeeder extends Seeder 'type' => 1, 'permission_name' => 'crm.customer_field', ], + [ + 'name' => '分配库', + 'route' => 'crm.assignment', + 'url' => null, + 'icon' => 'layui-icon-transfer', + 'type' => 1, + 'permission_name' => 'crm.assignment', + ], ] ], ]; diff --git a/database/seeds/UserTableSeeder.php b/database/seeds/UserTableSeeder.php index 5428830b..58b5e5d4 100644 --- a/database/seeds/UserTableSeeder.php +++ b/database/seeds/UserTableSeeder.php @@ -154,6 +154,17 @@ class UserTableSeeder extends Seeder ['name' => 'crm.customer_field.destroy', 'display_name' => '删除'], ] ], + [ + 'name' => 'crm.assignment', + 'display_name' => '分配库', + 'child' => [ + ['name' => 'crm.assignment.create', 'display_name' => '添加'], + ['name' => 'crm.assignment.edit', 'display_name' => '编辑'], + ['name' => 'crm.assignment.import', 'display_name' => '导入'], + ['name' => 'crm.assignment.to', 'display_name' => '分配'], + ['name' => 'crm.assignment.destroy', 'display_name' => '删除'], + ] + ], ], ], ]; diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index da9cfe3b..2d170878 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -89,6 +89,15 @@ return false; }) + //搜索 + form.on('submit(search)',function(data) { + layui.table.reload('dataTable',{ + where: data.field, + page: {curr:1} + }); + return false; + }); + window.newTab = function (url, tit) { if (top.layui.index) { top.layui.index.openTabsPage(url, tit) diff --git a/resources/views/crm/assignment/_js.blade.php b/resources/views/crm/assignment/_js.blade.php index 952f014e..ffd9d0f9 100644 --- a/resources/views/crm/assignment/_js.blade.php +++ b/resources/views/crm/assignment/_js.blade.php @@ -8,18 +8,6 @@ var upload = layui.upload; var laydate = layui.laydate; - form.on('submit(go)',function (data) { - var load = layer.load(); - $.post(data.form.action,data.field,function (res) { - layer.close(load); - layer.msg(res.msg,{icon:res.code==0?1:2},function () { - if (res.code==0){ - location.reload(); - } - }) - }); - return false; - }) //图片 $(".uploadPic").each(function (index,elem) { diff --git a/resources/views/crm/assignment/create.blade.php b/resources/views/crm/assignment/create.blade.php index 7bbd0db1..857b0cfa 100644 --- a/resources/views/crm/assignment/create.blade.php +++ b/resources/views/crm/assignment/create.blade.php @@ -1,103 +1,118 @@ -@extends('admin.base') +@extends('base') @section('content')