浏览代码

excel导出修改

wesley 6 年之前
父节点
当前提交
9e5d78417a

+ 38 - 14
app/Exports/ThreadsExport.php

xqd xqd xqd
@@ -9,9 +9,10 @@ class ThreadsExport implements FromCollection,WithHeadings
 {
     protected  $data;
 
-    public function __construct($data)
+    public function __construct($data,$field)
     {
         $this->data = $data;
+        $this->field = $field;
     }
 
     /**
@@ -20,17 +21,34 @@ class ThreadsExport implements FromCollection,WithHeadings
     public function collection()
     {
         $collection = [];
+
         foreach ($this->data as $item){
             $contact = $item->contact?$item->contact->phone:'暂无联系人信息';
-            $ower_name = $item->ower->real_name;
+            $qq = $item->contact?$item->contact->qq:'';
+            $email = $item->contact?$item->contact->email:'';
             $companyName = $item->company->companyName;
+            $ower_name = $item->ower->real_name;
             $companyWebsite = $item->company->website;
+            $legalPerson = $item->company->legalPerson;
             $regCapital = $item->company->regCapital;
+            $regAddr = $item->company->regAddr;
             $lastest = $item->latestProgress();
             $created_at = $item->created_at;
-            $collection[] = [
-                $contact,$ower_name, $companyName,$companyWebsite,$regCapital,$lastest,$created_at
-            ];
+
+            $base_coll = [$companyName,$contact];
+
+            if(substr_count($this->field,'qq')) array_push($base_coll,$qq);
+            if(substr_count($this->field,'email')) array_push($base_coll,$email);
+
+            if(substr_count($this->field,'ower_name')) array_push($base_coll,$ower_name);
+            if(substr_count($this->field,'website')) array_push($base_coll,$companyWebsite);
+            if(substr_count($this->field,'legalPerson')) array_push($base_coll,$legalPerson);
+            if(substr_count($this->field,'regCapital')) array_push($base_coll, $regCapital);
+            if(substr_count($this->field,'regAddr')) array_push($base_coll,$regAddr);
+            if(substr_count($this->field,'lastest')) array_push($base_coll, $lastest);
+            if(substr_count($this->field,'created_at')) array_push($base_coll,$created_at);
+
+            $collection[] = $base_coll;
         }
 
         return collect($collection);
@@ -38,14 +56,20 @@ class ThreadsExport implements FromCollection,WithHeadings
 
     public function headings(): array
     {
-        return [
-            '联系方式',
-            '线索拥有者',
-            '企业名字',
-            '企业网站',
-            '注册资本(万)',
-            '最新跟进',
-            '领取时间',
-        ];
+        $head = ['企业名称','联系方式'];
+        if(substr_count($this->field,'qq')) array_push($head,'QQ');
+        if(substr_count($this->field,'email')) array_push($head,'Email');
+
+        if(substr_count($this->field,'ower_name')) array_push($head,'线索拥有者');
+        if(substr_count($this->field,'website')) array_push($head,'企业网站');
+        if(substr_count($this->field,'legalPerson')) array_push($head,'法人');
+
+        if(substr_count($this->field,'regCapital')) array_push($head,'注册资本(万)');
+        if(substr_count($this->field,'regAddr')) array_push($head,'注册地址');
+
+        if(substr_count($this->field,'lastest')) array_push($head,'最新跟进');
+        if(substr_count($this->field,'created_at')) array_push($head,'领取时间');
+
+        return $head;
     }
 }

+ 30 - 26
app/Http/Controllers/Admin/User/ThreadsController.php

xqd xqd xqd xqd
@@ -41,37 +41,37 @@ class ThreadsController extends Controller
         $search = $request->all();
 
         $search['keyword'] = $request->input('keyword');
-        if(is_numeric($search['keyword'])){
+        if (is_numeric($search['keyword'])) {
             $list = UserThreadsModel::whereHas('contact', function ($query) use ($search) {
                 $query->where('phone', 'like', '%' . $search['keyword'] . '%');
-            })->where('ower_id',$user_id)->orderBy('updated_at','desc');
+            })->where('ower_id', $user_id)->orderBy('updated_at', 'desc');
 
-        }else{
+        } else {
             $list = UserThreadsModel::whereHas('company', function ($query) use ($search) {
                 $query->where('companyName', 'like', '%' . $search['keyword'] . '%')
                     ->orWhere('regNo', 'like', '%' . $search['keyword'] . '%');
-            })->where('ower_id',$user_id)->orderBy('updated_at','desc');
+            })->where('ower_id', $user_id)->orderBy('updated_at', 'desc');
         }
 
-        if(isset($search['process']) && $search['process'] ==1 ){
+        if (isset($search['process']) && $search['process'] == 1) {
             $list = $list->has('progress');
         }
 
-        if(isset($search['process']) && $search['process'] == 2){
-            $list = $list->has('progress','=',0);
+        if (isset($search['process']) && $search['process'] == 2) {
+            $list = $list->has('progress', '=', 0);
         }
 
         $allIds = $list->pluck('id');
-        $list =  $list->paginate(10);
+        $list = $list->paginate(10);
 
         if ($request->ajax()) {
-            $view = view('admin.user.threads.data', compact('list','allIds'))->render();
+            $view = view('admin.user.threads.data', compact('list', 'allIds'))->render();
 
             return response()->json(['html' => $view]);
 
         }
 
-        return view('admin.user.threads.index', compact('list','allIds'));
+        return view('admin.user.threads.index', compact('list', 'allIds'));
     }
 
 
@@ -87,8 +87,8 @@ class ThreadsController extends Controller
         $res = $this->repository->create($data);
 
         /*添加初始化跟进备注*/
-        if($request->get('remark')){
-            ThreadsProgressModel::create(['threads_id'=>$res->id,'remark'=>$request->get('remark')]);
+        if ($request->get('remark')) {
+            ThreadsProgressModel::create(['threads_id' => $res->id, 'remark' => $request->get('remark')]);
         }
 
         if ($res) {
@@ -152,18 +152,19 @@ class ThreadsController extends Controller
     /*
      * 添加到AI电话拨打列表
      * */
-    public function addCallList(Request $request){
-        $thread_ids =  $request->get('contact_ids');
+    public function addCallList(Request $request)
+    {
+        $thread_ids = $request->get('contact_ids');
         $ip = $request->get('ip');
 
-        foreach ($thread_ids as $thread_id){
+        foreach ($thread_ids as $thread_id) {
             $thread = $this->repository->find($thread_id);
-            if($thread->contact()->count()){
-                $phone =  $thread->contact->phone;
-                $hasAdd = CallListModel::where('phone',$phone)->where('sync',0)->count();
-                if(!$hasAdd){
-                    CallListModel::create(['phone'=>$phone,'sync'=>0,'ip'=>$ip]);
-                    ThreadsProgressModel::create(['threads_id'=>$thread->id,'remark'=>'添加到AI电话列表']);
+            if ($thread->contact()->count()) {
+                $phone = $thread->contact->phone;
+                $hasAdd = CallListModel::where('phone', $phone)->where('sync', 0)->count();
+                if (!$hasAdd) {
+                    CallListModel::create(['phone' => $phone, 'sync' => 0, 'ip' => $ip]);
+                    ThreadsProgressModel::create(['threads_id' => $thread->id, 'remark' => '添加到AI电话列表']);
                 }
 
             }
@@ -176,16 +177,19 @@ class ThreadsController extends Controller
      * @param Request $request
      * @return int|\Symfony\Component\HttpFoundation\BinaryFileResponse
      */
-    public function export_threads(Request $request){
+    public function export_threads(Request $request)
+    {
         $type =  $request->get('type');
         if($type){
             return 200;
         }
 
-        $thread_ids =  $request->get('threads_ids');
-        \Log::info($thread_ids);
-        $threads =  UserThreadsModel::whereIn('id',$thread_ids)->get();
+        $thread_ids = $request->get('threads_ids');
+
+        $threads = UserThreadsModel::whereIn('id', $thread_ids)->get();
+
+        $fileds =$request->get('check_fields');
 
-        return Excel::download(new ThreadsExport($threads),'我的线索.xlsx');
+        return Excel::download(new ThreadsExport($threads, $fileds), '我的线索.xlsx');
     }
 }

+ 182 - 14
resources/views/admin/user/threads/index.blade.php

xqd xqd xqd xqd xqd xqd xqd
@@ -20,9 +20,11 @@
                             <div class="col-sm-8 pull-right">
                                     <span class="btn btn-primary pull-right fa fa-phone"
                                           data-toggle="modal"
-                                          data-target="#myModal2">添加到电话列表</span>
-                                <span id="export_threads" class="btn btn-success pull-right fa fa-table"
-                                      style="display: none">导出到Excel</span>
+                                          data-target="#myModal2" style="display: none">添加到电话列表</span>
+
+                                <span class="btn btn-success pull-right fa fa-table"
+                                      style="display: none" data-toggle="modal"
+                                      data-target="#myModal1">导出到Excel</span>
                             </div>
                         @endif
                     </div>
@@ -108,6 +110,171 @@
             </small>
         </div>
 
+
+        <div class="modal inmodal" id="myModal1" tabindex="-1" role="dialog" aria-hidden="true">
+            <div class="modal-dialog">
+                <div class="modal-content animated flipInY">
+                    <div class="modal-header">
+                        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span
+                                    class="sr-only">Close</span></button>
+                        <h4 class="modal-title">选择要导出的字段</h4></div>
+                    <small class="font-bold">
+                        <div class="modal-body">
+                            <div class="ibox float-e-margins">
+                                <div class="ibox-content">
+
+                                    <div class="form-group">
+                                        <form action="" id="check-fields">
+                                            <div class="row">
+                                                <div class="col-sm-6">
+                                                    <h4 style="color: #ccc">联系方式:</h4>
+                                                </div>
+                                            </div>
+                                            <div class="row">
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="phone" disabled>
+                                                        <label>
+                                                            电话
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="email">
+                                                        <label>
+                                                            Email
+                                                        </label>
+                                                    </div>
+                                                </div>
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="qq">
+                                                        <label>
+                                                            qq
+                                                        </label>
+                                                    </div>
+                                                </div>
+                                            </div>
+
+                                            <div class="row">
+                                                <div class="col-sm-6">
+                                                    <h4 style="color: #ccc">其他字段:</h4>
+                                                </div>
+                                            </div>
+                                            <div class="row">
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="companyName" disabled>
+                                                        <label>
+                                                            企业名称
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="ower_name">
+                                                        <label>
+                                                            线索拥有者
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="website">
+                                                        <label>
+                                                            企业网址
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="legalPerson">
+                                                        <label>
+                                                            法人
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="regCapital">
+                                                        <label>
+                                                            注册资本
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="regAddr">
+                                                        <label>
+                                                            注册地址
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="lastest">
+                                                        <label>
+                                                            最新跟进
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                                <div class="col-sm-3">
+                                                    <div class="checkbox checkbox-success">
+                                                        <input class="check-fields" type="checkbox" checked="checked"
+                                                               name="created_at">
+                                                        <label>
+                                                            领取时间
+                                                        </label>
+                                                    </div>
+                                                </div>
+
+                                            </div>
+                                        </form>
+                                    </div>
+
+                                    <div class="form-group">
+                                        <label class="control-label col-sm-3">&nbsp;</label>
+                                        <div class="col-sm-9">
+                                            <input type="submit" class="btn btn-success" style="margin-right:20px;"
+                                                   id="export_threads">
+                                        </div>
+                                    </div>
+
+                                </div>
+                            </div>
+                        </div>
+                        <div class="modal-footer">
+                            <button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
+                        </div>
+                    </small>
+                </div>
+                <small class="font-bold">
+                </small>
+            </div>
+            <small class="font-bold">
+            </small>
+        </div>
+
     </div>
 @endsection
 
@@ -124,11 +291,11 @@
                 saveChecked($(this))
             });
             if (checkedIds.length) {
-                $('#addCallList').show();
-                $('#export_threads').show()
+                $('.fa-phone').show()
+                $('.fa-table').show()
             } else {
-                $('#addCallList').hide();
-                $('#export_threads').hide()
+                $('.fa-phone').hide()
+                $('.fa-table').hide()
             }
         });
 
@@ -141,7 +308,7 @@
             if (isChecked == true) {
                 $('.fa-phone').show()
                 checkedIds = [{{ $allIds }}][0]
-                $('#export_threads').show()
+                $('.fa-table').show()
                 $('#checkAll').prop('checked', true)
             } else {
                 $('.fa-phone').hide()
@@ -156,16 +323,16 @@
 
             if (checkedLength) {
                 $('#addCallList').show()
-                $('#export_threads').show()
+                $('.fa-table').show()
             } else {
                 $('#addCallList').hide()
-                $('#export_threads').hide()
+                $('.fa-table').hide()
             }
 
             if (items.length == checkedLength) {
                 $('#checkAll').prop('checked', true)
                 $('#addCallList').show()
-                $('#export_threads').show()
+                $('.fa-table').show()
             } else {
                 $('#checkAll').prop('checked', false)
             }
@@ -201,7 +368,7 @@
             })
 
             checkedLength = $('.contacts:checked').length
-            if(checkedLength == $boxes.length){
+            if (checkedLength == $boxes.length) {
                 $('#checkAll').prop('checked', true)
             }
 
@@ -235,14 +402,15 @@
         $('#export_threads').click(function () {
             threads_ids = checkedIds
             csrf_token = "{{ csrf_token() }}";
+            check_fields = $('#check-fields').serialize()
 
             $.ajax({
                 type: 'post',
                 url: '{{ U('User/Threads/export_threads') }}',
-                data: {threads_ids: threads_ids, type: 1, _token: csrf_token},
+                data: {threads_ids: threads_ids, type: 1, _token: csrf_token, check_fields: check_fields},
                 success: function (data) {
                     $.fileDownload("{{ U('User/Threads/export_threads') }}", {
-                        data: {threads_ids: threads_ids, _token: csrf_token},
+                        data: {threads_ids: threads_ids, _token: csrf_token, check_fields: check_fields},
                         prepareCallback: function (url) {
                             console.log("开始下载");
                         },