Browse Source

Merge branch 'sh/13'

sunhao 5 years ago
parent
commit
27327ed2e3

+ 1 - 0
app/Error.php

@@ -13,6 +13,7 @@ class Error
13 13
     public static $errCodes = [
14 14
 
15 15
         0 => "成功",
16
+        1001 => '未分配销售'
16 17
         
17 18
     ];
18 19
     /**

+ 201 - 7
app/Http/Controllers/Admin/TemplateController.php

@@ -11,8 +11,11 @@ use App\Admin;
11 11
 use Illuminate\Http\Request;
12 12
 use App\Templates;
13 13
 use App\TemplatesSalers;
14
+use App\TemplatesSource;
15
+use App\TemplatesSourceSalers;
14 16
 use App\AdminRole;
15 17
 use App\TemplatesLog;
18
+use App\TemplatesBackimg;
16 19
 use App\CustDetail;
17 20
 use App\Order;
18 21
 use App\Services\OssServices as oss;
@@ -147,7 +150,7 @@ class TemplateController extends Controller
147 150
      */
148 151
     public function assignSalers(Request $request)
149 152
     {
150
-        $t_id = (int)$request->input('id');
153
+        $s_id = (int)$request->input('id');
151 154
         $salers = $request->input('salers');
152 155
         $assign_type = (int)$request->input('assign_type');
153 156
 
@@ -178,7 +181,7 @@ class TemplateController extends Controller
178 181
         }
179 182
 
180 183
         //如果已经有 ,删除未选中
181
-        TemplatesSalers::where('t_id', $t_id)->whereNotIn('admin_id',$salers)->update(['is_del'=>1]);
184
+        TemplatesSourceSalers::where('s_id', $s_id)->whereNotIn('admin_id',$salers)->update(['is_del'=>1]);
182 185
         foreach( $salers as $k=>$admin_id ){
183 186
             if($assign_type == 1){
184 187
                 $weight = $weight_avg;
@@ -186,10 +189,10 @@ class TemplateController extends Controller
186 189
                 $weight = $weights[$k];
187 190
             }
188 191
 
189
-            TemplatesSalers::updateOrCreate( ['t_id'=>$t_id, 'admin_id'=>$admin_id], ['is_del'=>0, 'weight'=>$weight] );
192
+            TemplatesSourceSalers::updateOrCreate( ['s_id'=>$s_id, 'admin_id'=>$admin_id], ['is_del'=>0, 'weight'=>$weight] );
190 193
         }
191 194
 
192
-        exit('<script>parent.layer.msg("操作成功!",{icon:1,time:1000}); var index=parent.layer.getFrameIndex(window.name); parent.location.href="/admin/template/index";parent.layer.close(index);</script>');
195
+        exit('<script>parent.layer.msg("操作成功!",{icon:1,time:1000}); var index=parent.layer.getFrameIndex(window.name); parent.location.href="/admin/template/sourceindex";parent.layer.close(index);</script>');
193 196
     }
194 197
 
195 198
     /**
@@ -204,7 +207,7 @@ class TemplateController extends Controller
204 207
             $query->whereNotNull('qrcode')->where('qrcode', '<>', '');
205 208
         })->get();
206 209
         $adminList = json_decode(json_encode($adminList), true);
207
-        $assign_admin = TemplatesSalers::where('t_id', $id)->where('is_del', 0)->lists('weight', 'admin_id');
210
+        $assign_admin = TemplatesSourceSalers::where('s_id', $id)->where('is_del', 0)->lists('weight', 'admin_id');
208 211
 
209 212
         $team_info = DB::table('teams')->lists('name', 'id');
210 213
         foreach($adminList as &$admin){
@@ -396,8 +399,199 @@ class TemplateController extends Controller
396 399
         $indexKey = ['day','admin_name','pv_count','long_count','fan_add','click_rate','change_rate','new_reply','new_consult','old_consult'];
397 400
         $title = ['日期', '销售名', 'PV量', '长按次数', '加粉数', '点击率', '转化率', '新粉回复数', '新粉询价数', '老粉询价数'];
398 401
         $filename = 'xiaoshoudaofen_'.date('Y-m-d_H').'.xlsx';
399
-        return Order::export_excel($result, $filename, $indexKey, $title);
400
-       
402
+        return Order::export_excel($result, $filename, $indexKey, $title);  
403
+    }
404
+
405
+    /*
406
+     * @return \Illuminate\View\View
407
+     */
408
+    public function sourceindex(Request $request)
409
+    {
410
+        $page = (int)$request->input('page');
411
+        $pageSize = 20;
412
+        if($page<=0){
413
+            $page = 1;
414
+        }
415
+
416
+        $offset = ($page-1) * $pageSize;
417
+
418
+        $count = TemplatesSource::where('is_del',0)->count();
419
+        if ($count > 1) {
420
+            // 总页数
421
+            $pages = ceil($count/$pageSize);
422
+        }else{
423
+            // 总页数
424
+            $pages = 1;
425
+        }
426
+
427
+        $result = TemplatesSource::where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
428
+        $result = json_decode(json_encode($result),true);
429
+
430
+        foreach($result as $k=>&$v){
431
+            # 获取销售
432
+            $salers = TemplatesSourceSalers::select('templates_source_salers.*', 'admin.realname as admin_name')->leftJoin('admin', 'admin.id', '=', 'templates_source_salers.admin_id')->where('templates_source_salers.s_id', $v['id'])->where('templates_source_salers.is_del', 0)->get();
433
+            $v['salers'] = $salers;            
434
+            $v['salers_k'] = count($salers); 
435
+            # 获取模板图
436
+            $v['img'] = Templates::where('id', $v['t_id'])->pluck('img');
437
+        }
438
+
439
+        return view('template/sourceindex', ['result' =>$result,
440
+            'page'              =>$page,
441
+            'count'             =>$count,
442
+            'pages'             =>$pages,                   
443
+            ]);
444
+    }
445
+
446
+    /**
447
+     * @return \Illuminate\View\View
448
+     */
449
+    public function sourcecreate()
450
+    {
451
+        $templates = Templates::where('is_del', 0)->whereNotNull('url')->get();
452
+        $back_imgs = TemplatesBackimg::where('is_del', 0)->whereNotNull('back_img')->where('t_id', 1)->lists('back_img');
453
+        return view('template/sourcecreate', ['templates'=>$templates, 'back_imgs'=>$back_imgs]);
454
+    }
455
+
456
+    /**
457
+     * @param Request $request
458
+     * @return \Illuminate\Http\RedirectResponse
459
+     */
460
+    public function sourcestore(Request $request)
461
+    {
462
+        $this->validate($request, [
463
+            't_id' => 'required',           
464
+            'back_img' => 'required',           
465
+        ], [
466
+            't_id.required' => '模板不能为空',
467
+            'back_img.required' => '背景图不能为空',
468
+            
469
+        ]);
470
+        $template = new TemplatesSource();
471
+        $template->t_id = intval($request->input('t_id'));
472
+        $template->note = trim($request->input('note'));
473
+    
474
+        $template->back_img = trim($request->input('back_img'));
475
+        //图片上传 阿里云oss    
476
+        /*   
477
+        if ($request->hasFile('img') && $request->file('img')->isValid()) {
478
+            $file = $request->file('img');
479
+            $ossClient=new oss();
480
+            // 上传阿里云
481
+            $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His'));
482
+            $img=$file['oss-request-url'];
483
+            $template->back_img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img);
484
+            #保存背景图
485
+            TemplatesBackimg::insert(['back_img'=>$template->back_img]);
486
+        }
487
+        */
488
+
489
+        if($template->save()){
490
+            //生成连接
491
+            $template->url = $this->createSourceUrl($template->t_id, $template->id);
492
+            $template->save();
493
+        }
494
+
495
+        return redirect('/admin/template/sourceindex')->with('info', '添加模板成功');
496
+    }
497
+
498
+    /**
499
+     * @param $id
500
+     * @return \Illuminate\View\View
501
+     */
502
+    public function sourceedit($id)
503
+    {
504
+        $templates = Templates::where('is_del', 0)->whereNotNull('url')->get();      
505
+        $template = TemplatesSource::findOrFail($id);
506
+        $back_imgs = TemplatesBackimg::where('is_del', 0)->whereNotNull('back_img')->where('t_id', $template->t_id)->lists('back_img');
507
+        return view('template/sourceedit', ['template' => $template, 'id'=>$id, 'templates' => $templates, 'back_imgs'=>$back_imgs]);
508
+    }
509
+
510
+    /**
511
+     * @param Request $request
512
+     * @return \Illuminate\Http\RedirectResponse
513
+     */
514
+    public function sourceupdate(Request $request)
515
+    {
516
+        $id = (int)$request->input('id');
517
+        $this->validate($request, [
518
+            //'t_id' => 'required',           
519
+            'back_img' => 'required',           
520
+        ], [
521
+            //'t_id.required' => '模板不能为空',
522
+            'back_img.required' => '背景图不能为空',
523
+            
524
+        ]);
525
+
526
+        $template = TemplatesSource::findOrFail($id);
527
+        /*
528
+        $t_id = (int)$request->input('t_id');
529
+        if( $template->t_id != $t_id ){
530
+            //模板更改,生成新连接
531
+            $template->t_id = $t_id;
532
+            $template->url = $this->createSourceUrl($t_id, $template->id);
533
+        }
534
+        */
535
+        $template->note = trim($request->input('note'));
536
+        $template->back_img = trim($request->input('back_img'));
537
+        //图片上传 阿里云oss 
538
+        /*      
539
+        if ($request->hasFile('img') && $request->file('img')->isValid()) {
540
+            $file = $request->file('img');
541
+            $ossClient=new oss();
542
+            // 上传阿里云
543
+            $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His'));
544
+            $img=$file['oss-request-url'];
545
+            $template->back_img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img);
546
+            #保存背景图
547
+            TemplatesBackimg::insert(['back_img'=>$template->back_img]);
548
+        }
549
+        */
550
+
551
+        $template->save();
552
+        return redirect('/admin/template/sourceindex')->with('info', '修改成功');
553
+    }
554
+
555
+    public function createSourceUrl($t_id, $id){
556
+        $url = Templates::where('id', $t_id)->pluck('url');
557
+        if($url){
558
+            return $url . '?id='.$id;
559
+        }
560
+        return false;
561
+    }
562
+
563
+    public function uploadBack(Request $request){
564
+        $img = $request->input('img');
565
+        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $img, $res)) {
566
+            //获取图片类型
567
+            $type = $res[2];
568
+            // 临时文件
569
+            $tmpfname = tempnam("/image/", "FOO");
570
+            //保存图片
571
+            $handle = fopen($tmpfname, "w");
572
+            //阿里云oss上传的文件目录
573
+            if (fwrite($handle, base64_decode(str_replace($res[1], '', $img)))) 
574
+            {
575
+                $ossClient=new oss();
576
+                // 上传阿里云
577
+                $file = $ossClient->upload($type, $tmpfname, 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His'));
578
+                fclose($handle);
579
+                unlink($tmpfname);
580
+                $img=$file['oss-request-url'];
581
+                $back_img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img);
582
+                #保存背景图
583
+                $t_id = (int)$request->input('t_id');
584
+                $res = TemplatesBackimg::insert(['back_img'=>$back_img, 't_id'=>$t_id]);
585
+                exit($back_img);
586
+            }
587
+
588
+            exit('0');
589
+        }
590
+    }
591
+
592
+    public function getTempback($t_id){
593
+        $result = TemplatesBackimg::where('t_id', $t_id)->lists('back_img');
594
+        exit(json_encode($result));
401 595
     }
402 596
 
403 597
 

+ 11 - 4
app/Http/Controllers/Api/TemplateController.php

@@ -13,7 +13,9 @@ use App\Http\Controllers\Controller;
13 13
 use Illuminate\Http\Request;
14 14
 use App\Log;
15 15
 use App\Templates;
16
+use App\TemplatesSource;
16 17
 use App\TemplatesSalers;
18
+use App\TemplatesSourceSalers;
17 19
 use App\Admin;
18 20
 use App\TemplatesLog;
19 21
 use Illuminate\Support\Facades\Hash;
@@ -26,7 +28,12 @@ class TemplateController extends Controller {
26 28
     public function salerQrcode(Request $request){
27 29
         $t_id = (int)$request->input('t_id');
28 30
         if(!$t_id) $t_id = 1;
29
-        $result = TemplatesSalers::where('t_id', $t_id)->where('is_del', 0)->where('weight','>',0)->orderBy('weight', 'asc')->lists('weight', 'admin_id');
31
+        //获取背景图
32
+        $back_img = TemplatesSource::where('id', $t_id)->pluck('back_img');
33
+        $result = TemplatesSourceSalers::where('s_id', $t_id)->where('is_del', 0)->where('weight','>',0)->orderBy('weight', 'asc')->lists('weight', 'admin_id');
34
+        if(empty($result)){
35
+            return self::returnValue([],1001);
36
+        }
30 37
         $saler_id = null;
31 38
         $rand = 0;
32 39
         //获取最大随机值
@@ -48,7 +55,7 @@ class TemplateController extends Controller {
48 55
             //记录行为
49 56
             $log = array();
50 57
             $log['t_id'] = $t_id;
51
-            $log['t_url'] = Templates::where('id', $t_id)->pluck('url');
58
+            $log['t_url'] = TemplatesSource::where('id', $t_id)->pluck('url');
52 59
             $log['admin_id'] = $saler_id;
53 60
             $log['ip'] = $ip;
54 61
             TemplatesLog::insert($log);
@@ -56,7 +63,7 @@ class TemplateController extends Controller {
56 63
 
57 64
         $qrcode = Admin::where('id', $saler_id)->pluck('qrcode');
58 65
         $qrcodes = Admin::whereIn('id', $saler_ids)->lists('qrcode');
59
-        return self::returnValue(['qrcode'=>$qrcode, 'ip'=>$ip, 'saler_id'=>$saler_id, 'qrcodes'=>$qrcodes]);
66
+        return self::returnValue(['qrcode'=>$qrcode, 'ip'=>$ip, 'saler_id'=>$saler_id, 'qrcodes'=>$qrcodes, 'back_img'=>$back_img]);
60 67
     }
61 68
 
62 69
      /**
@@ -93,7 +100,7 @@ class TemplateController extends Controller {
93 100
             //记录行为
94 101
             $log = array();
95 102
             $log['t_id'] = $t_id;
96
-            $log['t_url'] = Templates::where('id', $t_id)->pluck('url');
103
+            $log['t_url'] = TemplatesSource::where('id', $t_id)->pluck('url');
97 104
             $log['admin_id'] = $saler_id;
98 105
             $log['ip'] = $ip;
99 106
             $log['type'] = 2; //长按

+ 10 - 0
app/Http/routes.php

@@ -206,6 +206,16 @@ Route::group(['prefix' => 'admin'], function(){
206 206
         //销售模板引流每日报表
207 207
         Route::get('template/templateLogReport',   'Admin\TemplateController@templateLogReport');
208 208
         Route::get('template/templateLogReport_export',   'Admin\TemplateController@templateLogReport_export');
209
+
210
+        Route::get('template/sourceindex',   'Admin\TemplateController@sourceindex');
211
+        Route::get('template/sourcecreate',    'Admin\TemplateController@sourcecreate');
212
+        Route::post('template/sourcestore',    'Admin\TemplateController@sourcestore');
213
+        Route::get('template/sourceedit/{id}', 'Admin\TemplateController@sourceedit');
214
+        Route::post('template/sourceupdate',   'Admin\TemplateController@sourceupdate');
215
+        Route::get('template/sourcedelete/{id}',   'Admin\TemplateController@sourcedel');
216
+        Route::post('template/uploadBack/',   'Admin\TemplateController@uploadBack');
217
+        Route::get('template/getTempback/{id}',   'Admin\TemplateController@getTempback');
218
+
209 219
     });
210 220
     
211 221
 });

+ 17 - 0
app/TemplatesBackimg.php

@@ -0,0 +1,17 @@
1
+<?php
2
+/**
3
+ * Created by PhpStorm.
4
+ * User: Administrator
5
+ * Date: 2017/12/5
6
+ * Time: 15:07
7
+ */
8
+
9
+namespace App;
10
+use Illuminate\Database\Eloquent\Model;
11
+
12
+class TemplatesBackimg extends Model
13
+{
14
+    public $timestamps = false;
15
+    protected $table = "templates_backimg";
16
+   
17
+}

+ 17 - 0
app/TemplatesSource.php

@@ -0,0 +1,17 @@
1
+<?php
2
+/**
3
+ * Created by PhpStorm.
4
+ * User: Administrator
5
+ * Date: 2017/12/5
6
+ * Time: 15:07
7
+ */
8
+
9
+namespace App;
10
+use Illuminate\Database\Eloquent\Model;
11
+
12
+class TemplatesSource extends Model
13
+{
14
+    public $timestamps = false;
15
+    protected $table = "templates_source";
16
+   
17
+}

+ 18 - 0
app/TemplatesSourceSalers.php

@@ -0,0 +1,18 @@
1
+<?php
2
+/**
3
+ * Created by PhpStorm.
4
+ * User: Administrator
5
+ * Date: 2017/12/5
6
+ * Time: 15:07
7
+ */
8
+
9
+namespace App;
10
+use Illuminate\Database\Eloquent\Model;
11
+
12
+class TemplatesSourceSalers extends Model
13
+{
14
+    public $timestamps = false;
15
+    protected $table = "templates_source_salers";
16
+    protected $fillable = ['t_id', 'admin_id', 'weight', 'is_del', 's_id'];
17
+   
18
+}

+ 1 - 0
resources/views/admin/index.blade.php

@@ -41,6 +41,7 @@
41 41
                 <dd>
42 42
                     <ul>
43 43
                         <li @if(!isset($res['template/manage'])) style="display:none;list-style-type:none;" @endif><a data-href="{{url('admin/template/index')}}" data-title="模板列表" href="javascript:void(0)">模板列表</a></li>
44
+                        <li @if(!isset($res['template/manage'])) style="display:none;list-style-type:none;" @endif><a data-href="{{url('admin/template/sourceindex')}}" data-title="渠道列表" href="javascript:void(0)">渠道列表</a></li>
44 45
                         <li @if(!isset($res['template/manage'])) style="display:none;list-style-type:none;" @endif><a data-href="{{url('admin/template/logindex')}}" data-title="模板点击日志" href="javascript:void(0)">模板点击日志</a></li>                      
45 46
                         
46 47
                     </ul>

+ 1 - 9
resources/views/template/index.blade.php

@@ -17,7 +17,6 @@
17 17
                     <th width="10%">模板链接</th>
18 18
                     <th width="10%">模板描述</th>
19 19
                     <th width="8%">模板样式图</th>
20
-                    <th width="8%">正在使用的销售</th>
21 20
                     <th width="10%">操作</th>
22 21
                 </tr>
23 22
                 </thead>
@@ -30,16 +29,9 @@
30 29
                         <td class="text-c">{{$a['url']}}</td>
31 30
                         <td class="text-c">{{$a['note']}}</td>
32 31
                         <td class="text-c"><img style="width:100px;" src="{{$a['img']}}" /></td>
33
-                        <td class="text-c">
34
-                            @if($a['salers'])
35
-                                @foreach($a['salers'] as $k=>$saler)
36
-                                    {{$saler['admin_name']}} @if( $k < $a['salers_k']-1), @endif
37
-                                @endforeach
38
-                            @endif
39
-                        </td>
40 32
                         <td class="f-14 product-brand-manage">
41 33
                             <a style="text-decoration:none" onClick='templateedit("编辑","{{$a['id']}}")' href="javascript:;" title="编辑"><span class="btn btn-primary radius">编辑模板</span></a>
42
-                            <a style="text-decoration:none" onClick='assign("分配销售","{{$a['id']}}")' href="javascript:;" title="分配销售"><span class="btn btn-primary radius">分配销售</span></a>
34
+                            <!--a style="text-decoration:none" onClick='assign("分配销售","{{$a['id']}}")' href="javascript:;" title="分配销售"><span class="btn btn-primary radius">分配销售</span></a-->
43 35
                             <!--a style="text-decoration:none" class="ml-5" onClick="templatedel(this, '{{$a["id"]}}')" href="javascript:;" title="删除"><span class="btn btn-danger radius">删除</span></a-->
44 36
                         </td>
45 37
                     </tr>

+ 208 - 0
resources/views/template/sourcecreate.blade.php

@@ -0,0 +1,208 @@
1
+@extends('admin/master')
2
+@section('content')
3
+<style>
4
+    .templates_ul{
5
+
6
+    }
7
+    .templates_li{
8
+        float: left;
9
+        width: 25%;
10
+        margin-bottom: 35px;
11
+    }
12
+    .templates_li .templates_img{
13
+        width: 100px;
14
+        height: 177px;
15
+        margin: auto;
16
+        margin-bottom: 10px;
17
+    }
18
+    .add_div{
19
+        width: 100px;
20
+        height: 177px;
21
+        border: 1px solid #ccc;
22
+        font-size: 47px;
23
+        color: #ccc;
24
+        text-align: center;
25
+        border-radius: 5px;
26
+        line-height: 177px;
27
+        cursor: pointer;
28
+        position: relative;
29
+    }
30
+    .add_div .add_img_input{
31
+        position: absolute;
32
+        width: 100%;
33
+        height: 100%;
34
+        left: 0;
35
+        top: 0;
36
+        opacity: 0;
37
+    }
38
+    .add_img_title{
39
+        width: 100px;
40
+        text-align: center;
41
+        padding: 8px 0;
42
+    }
43
+    .clear::after {
44
+        content: ".";
45
+        clear: both;
46
+        display: block;
47
+        overflow: hidden;
48
+        font-size: 0;
49
+        height: 0;
50
+    }
51
+    .clear {
52
+        zoom: 1;
53
+    }
54
+</style>
55
+    <body>
56
+    @if(count($errors) > 0)
57
+        <div class="Huialert Huialert-info" id="error">
58
+            @foreach($errors->all() as $error)
59
+                <li>{{$error}}</li>
60
+            @endforeach
61
+        </div>
62
+    @endif
63
+    <div class="page-container">
64
+        <form action="/admin/template/sourcestore" method="post" class="form form-horizontal" enctype="multipart/form-data">
65
+            <input type="hidden" name="_token" value="{{ csrf_token() }}" />
66
+            <div class="row cl">
67
+                <label class="form-label col-xs-4 col-sm-2">
68
+                    选择模板:</label>
69
+                <div class="formControls col-xs-6 col-sm-7">
70
+                    @if($templates)
71
+                    <ul class="templates_ul clear">
72
+                        @foreach($templates as $item)
73
+                        <li class="templates_li">
74
+                            <img class="templates_img" src="{{$item['img']}}"/>
75
+                            <div>
76
+                                <input type="radio" id="templates_{{$item['id']}}" value="{{$item['id']}}" @if(old('t_id') == $item['id']) checked @elseif($item['id'] == 1) checked @else  @endif name="t_id">
77
+                                <label for="templates_{{$item['id']}}">{{$item['note']}}</label>
78
+                            </div>
79
+                        </li>
80
+                        @endforeach
81
+                    </ul>
82
+                    @endif
83
+                </div>
84
+            </div>
85
+            <div class="row cl">
86
+                <label class="form-label col-xs-4 col-sm-2">
87
+                    选择背景图:</label>
88
+                <div class="formControls col-xs-6 col-sm-7">
89
+                    <ul class="templates_ul clear" id="img_ul">
90
+                        @if($back_imgs)
91
+                        @foreach($back_imgs as $k=>$back_img)
92
+                        <li class="templates_li">
93
+                            <img class="templates_img" src="{{$back_img}}"/>
94
+                            <div>
95
+                                <input type="radio" id="bgImg{{$k}}" value="{{$back_img}}" @if(old('back_img') == $back_img) checked @endif name="back_img">
96
+                                <label for="bgImg{{$k}}">背景图{{$k+1}}</label>
97
+                            </div>
98
+                        </li>
99
+                        @endforeach
100
+                        @endif
101
+                        <li id='upload_img' class="templates_li">
102
+                            <div class="add_div">
103
+                                <span>+</span>
104
+                                <input type="file" id="ImgInput" multiple name="img" class="add_img_input" onChange="changeImgID()">
105
+                            </div>
106
+                            <div class="add_img_title">上传新背景图</div>
107
+                        </li>
108
+                        
109
+                    </ul>                   
110
+                </div>
111
+            </div>
112
+
113
+            <div class="row cl">
114
+                <label class="form-label col-xs-4 col-sm-2">
115
+                    渠道备注:</label>
116
+                <div class="formControls col-xs-6 col-sm-7">
117
+                    <input type="text" class="input-text" value="{{old('note')}}" placeholder="" name="note">
118
+                </div>
119
+            </div>
120
+            
121
+            <div class="row cl">
122
+                <div class="col-9 col-offset-2">
123
+
124
+                    <button class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">&nbsp;&nbsp;提交&nbsp;&nbsp;</button>&nbsp;
125
+                    <button class="btn btn-default" type="reset" onclick="return_index();">&nbsp;&nbsp;返回&nbsp;&nbsp;</button>&nbsp;
126
+                    {{--<a href="javascript:void(0)" class="btn btn-default radius" onclick="redirect('{{url('/admin/admin/all')}}')">返回并查看结果</a>--}}
127
+                    <font color='red'>(*提交后自动生成推广链接)</font>
128
+                </div>
129
+
130
+            </div>
131
+        </form>
132
+    </div>
133
+    <!--_footer 作为公共模版分离出去-->
134
+    <script type="text/javascript" src="/admin/lib/jquery/1.9.1/jquery.min.js"></script>
135
+    <script type="text/javascript" src="/admin/lib/layer/2.4/layer.js"></script>
136
+    <script type="text/javascript" src="/admin/static/h-ui/js/H-ui.min.js"></script>
137
+    <script type="text/javascript" src="/admin/static/h-ui.admin/js/H-ui.admin.js"></script>
138
+    <!--/_footer 作为公共模版分离出去-->
139
+
140
+    <!--请在下方写此页面业务相关的脚本-->
141
+    <script type="text/javascript">
142
+        $(function(){
143
+            setTimeout("$('#error').hide()",3000);
144
+            getTback();
145
+
146
+            $('input[type=radio][name=t_id]').change(function () {
147
+                getTback();
148
+            })
149
+        });
150
+        /*返回*/
151
+        function return_index(){
152
+            location.href='/admin/template/sourceindex';
153
+        }
154
+
155
+        function changeImgID(html) {
156
+             //获取读取我文件的File对象
157
+            var selectedFile = '';
158
+            var _token = "{{ csrf_token() }}";
159
+            selectedFile = document.getElementById('ImgInput').files[0];
160
+             var reader = new FileReader();
161
+             reader.readAsDataURL(selectedFile);
162
+             reader.onload = function () {
163
+                 //当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可
164
+                 var t_id = $("input[type='radio'][name='t_id']:checked").val();
165
+                 $.ajax({
166
+                    url:'/admin/template/uploadBack',
167
+                    type:'post',
168
+                    data:{img:this.result,_token:_token,t_id:t_id},
169
+                    success:function(pic_url){
170
+                        if(pic_url == '0'){
171
+                            alert(pic_url)
172
+                            return false;
173
+                        }
174
+                        var str = "<li class=\"templates_li\"><img class=\"templates_img\" src=\""+ pic_url +"\"\/><div><input type=\"radio\" id=\"bgImg\" value=\""+pic_url+"\" name=\"back_img\" checked><label for=\"bgImg\">背景图</label><\/div><\/li>";
175
+
176
+                        $("#upload_img").before(str);
177
+                    },
178
+
179
+                })
180
+             }
181
+
182
+        }
183
+
184
+        function getTback(){
185
+            var t_id = $("input[type='radio'][name='t_id']:checked").val();
186
+            if(t_id>0){
187
+                $.ajax({
188
+                    url:'/admin/template/getTempback/'+t_id,
189
+                    type:'get',
190
+                    dataType:'json',
191
+                    success:function(data){ 
192
+                        var str = '';
193
+                        for (var i = 0, l = data.length; i < l; i++) {
194
+                            var back_img = data[i];
195
+                            var str = str+ "<li class=\"templates_li\"><img class=\"templates_img\" src=\""+back_img+"\"\/><div><input type=\"radio\" id=\"bgImg"+i+"\" value=\""+back_img+"\" name=\"back_img\"><label for=\"bgImg"+i+"\">背景图" + (i+1) +"<\/label><\/div><\/li>";
196
+                        }
197
+                        str += "<li id='upload_img' class='templates_li'><div class='add_div'><span>+</span><input type='file' id='ImgInput' multiple name='img' class='add_img_input' onChange='changeImgID()'><\/div><div class='add_img_title'>上传新背景图<\/div><\/li>";
198
+
199
+                        $("#img_ul").html(str);
200
+                    },
201
+
202
+                })
203
+            }
204
+        }
205
+
206
+    </script>
207
+    </body>
208
+@endsection

+ 181 - 0
resources/views/template/sourceedit.blade.php

@@ -0,0 +1,181 @@
1
+@extends('admin/master')
2
+@section('content')
3
+<style>
4
+    .templates_ul{
5
+
6
+    }
7
+    .templates_li{
8
+        float: left;
9
+        width: 25%;
10
+        margin-bottom: 35px;
11
+    }
12
+    .templates_li .templates_img{
13
+        width: 100px;
14
+        height: 177px;
15
+        margin: auto;
16
+        margin-bottom: 10px;
17
+    }
18
+    .add_div{
19
+        width: 100px;
20
+        height: 177px;
21
+        border: 1px solid #ccc;
22
+        font-size: 47px;
23
+        color: #ccc;
24
+        text-align: center;
25
+        border-radius: 5px;
26
+        line-height: 177px;
27
+        cursor: pointer;
28
+        position: relative;
29
+    }
30
+    .add_div .add_img_input{
31
+        position: absolute;
32
+        width: 100%;
33
+        height: 100%;
34
+        left: 0;
35
+        top: 0;
36
+        opacity: 0;
37
+    }
38
+    .add_img_title{
39
+        width: 100px;
40
+        text-align: center;
41
+        padding: 8px 0;
42
+    }
43
+    .clear::after {
44
+        content: ".";
45
+        clear: both;
46
+        display: block;
47
+        overflow: hidden;
48
+        font-size: 0;
49
+        height: 0;
50
+    }
51
+    .clear {
52
+        zoom: 1;
53
+    }
54
+</style>
55
+    <body>
56
+    @if(count($errors) > 0)
57
+        <div class="Huialert Huialert-info" id="error">
58
+            @foreach($errors->all() as $error)
59
+                <li>{{$error}}</li>
60
+            @endforeach
61
+        </div>
62
+    @endif
63
+    <div class="page-container">
64
+        <form action="/admin/template/sourceupdate" method="post" class="form form-horizontal" enctype="multipart/form-data">
65
+            <input type="hidden" name="_token" value="{{ csrf_token() }}" />
66
+            <input type="hidden" name="id" value="{{$id}}" />
67
+            <div class="row cl">
68
+                <label class="form-label col-xs-4 col-sm-2">
69
+                    已选模板:</label>
70
+                <div class="formControls col-xs-6 col-sm-7">
71
+                    @if($templates)
72
+                    <ul class="templates_ul clear">
73
+                        @foreach($templates as $item)
74
+                        @if($template['t_id'] == $item['id'])
75
+                        <li class="templates_li">
76
+                            <img class="templates_img" src="{{$item['img']}}"/>
77
+                            <div>
78
+                                <label for="templates_{{$item['id']}}">{{$item['note']}}</label>
79
+                            </div>
80
+                        </li>
81
+                        @endif
82
+                        @endforeach
83
+                    </ul>
84
+                    @endif
85
+                </div>
86
+            </div>
87
+            <div class="row cl">
88
+                <label class="form-label col-xs-4 col-sm-2">
89
+                    选择背景图:</label>
90
+                <div class="formControls col-xs-6 col-sm-7">
91
+                    @if($back_imgs)
92
+                    <ul class="templates_ul clear">
93
+                        @foreach($back_imgs as $k=>$back_img)
94
+                        <li class="templates_li">
95
+                            <img class="templates_img" src="{{$back_img}}"/>
96
+                            <div>
97
+                                <input type="radio" id="bgImg{{$k}}" value="{{$back_img}}" @if($template['back_img'] == $back_img) checked @endif name="back_img">
98
+                                <label for="bgImg{{$k}}">背景图{{$k+1}}</label>
99
+                            </div>
100
+                        </li>
101
+                        @endforeach
102
+
103
+                        <li id='upload_img' class="templates_li">
104
+                            <div class="add_div">
105
+                                <span>+</span>
106
+                                <input type="file" id="ImgInput" multiple name="img" class="add_img_input" onChange="changeImgID()">
107
+                            </div>
108
+                            <div class="add_img_title">上传新背景图</div>
109
+
110
+                        </li>
111
+                    </ul>
112
+                    @endif
113
+                </div>
114
+            </div>
115
+
116
+            <div class="row cl">
117
+                <label class="form-label col-xs-4 col-sm-2">
118
+                    渠道备注:</label>
119
+                <div class="formControls col-xs-6 col-sm-7">
120
+                    <input type="text" class="input-text" value="{{$template['note']}}" placeholder="" name="note">
121
+                </div>
122
+            </div>
123
+            
124
+            <div class="row cl">
125
+                <div class="col-9 col-offset-2">
126
+                    <button class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">&nbsp;&nbsp;修改&nbsp;&nbsp;</button>&nbsp;
127
+                    <button class="btn btn-default" type="reset" onclick="return_index();">&nbsp;&nbsp;返回&nbsp;&nbsp;</button>&nbsp;
128
+                    {{--<a href="javascript:void(0)" class="btn btn-default radius" onclick="redirect('{{url('/admin/admin/all')}}')">返回并查看结果</a>--}}
129
+                </div>
130
+            </div>
131
+        </form>
132
+    </div>
133
+    <!--_footer 作为公共模版分离出去-->
134
+    <script type="text/javascript" src="/admin/lib/jquery/1.9.1/jquery.min.js"></script>
135
+    <script type="text/javascript" src="/admin/lib/layer/2.4/layer.js"></script>
136
+    <script type="text/javascript" src="/admin/static/h-ui/js/H-ui.min.js"></script>
137
+    <script type="text/javascript" src="/admin/static/h-ui.admin/js/H-ui.admin.js"></script>
138
+    <!--/_footer 作为公共模版分离出去-->
139
+
140
+    <!--请在下方写此页面业务相关的脚本-->
141
+    <script type="text/javascript">
142
+        $(function(){
143
+            setTimeout("$('#error').hide()",3000);
144
+        });
145
+        /*返回*/
146
+        function return_index(){
147
+            location.href='/admin/template/sourceindex';
148
+        }
149
+
150
+        function changeImgID(html) {
151
+             //获取读取我文件的File对象
152
+            var selectedFile = '';
153
+            var _token = "{{ csrf_token() }}";
154
+            var t_id = "{{$template['t_id']}}";
155
+            selectedFile = document.getElementById('ImgInput').files[0];
156
+             var reader = new FileReader();
157
+             reader.readAsDataURL(selectedFile);
158
+             reader.onload = function () {
159
+                 //当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可
160
+                 $.ajax({
161
+                    url:'/admin/template/uploadBack',
162
+                    type:'post',
163
+                    data:{img:this.result,_token:_token,t_id:t_id},
164
+                    success:function(pic_url){
165
+                        if(pic_url == '0'){
166
+                            alert(pic_url)
167
+                            return false;
168
+                        }
169
+                        var str = "<li class=\"templates_li\"><img class=\"templates_img\" src=\""+ pic_url +"\"\/><div><input type=\"radio\" id=\"bgImg\" value=\""+pic_url+"\" name=\"back_img\" checked><label for=\"bgImg\">背景图</label><\/div><\/li>";
170
+
171
+                        $("#upload_img").before(str);
172
+                    },
173
+
174
+                })
175
+             }
176
+
177
+        }
178
+       
179
+    </script>
180
+    </body>
181
+@endsection

+ 121 - 0
resources/views/template/sourceindex.blade.php

@@ -0,0 +1,121 @@
1
+@extends('admin/master')
2
+@section('content')
3
+    <body>
4
+    @if(session('info'))
5
+        <div class="Huialert Huialert-info" onclick="$(this).remove()" id="info">
6
+            {{session('info')}}
7
+        </div>
8
+    @endif
9
+    <div class="page-container">
10
+        <div class="cl pd-5 bg-1 bk-gray mt-20"> <span class="l"> <a class="btn btn-primary radius" onclick="templateadd('新增')" href="javascript:;"><i class="Hui-iconfont">&#xe600;</i> 新增渠道</a></span> </div>
11
+        <div class="mt-20">
12
+            <table class="table table-border table-bordered table-bg table-hover table-sort">
13
+                <thead>
14
+                <tr class="text-c">
15
+                    {{--<th width="25"><input type="checkbox" name="" value=""></th>--}}
16
+                    <th width="5%">渠道ID</th>
17
+                    <th width="10%">模板示例图</th>
18
+                    <th width="10%">销售名称</th>
19
+                    <th width="8%">渠道备注</th>
20
+                    <th width="8%">推广链接</th>
21
+                    <th width="8%">背景图</th>
22
+                    <th width="8%">生成时间</th>
23
+                    <th width="10%">操作</th>
24
+                </tr>
25
+                </thead>
26
+                <tbody>
27
+                @if($result)
28
+                @foreach($result as $a)
29
+                    <tr class="text-c">
30
+                        {{--<td><input name="" type="checkbox" value=""></td>--}}
31
+                        <td class="text-c">{{$a['id']}}</td>
32
+                        <td class="text-c"><img style="width:100px;" src="{{$a['img']}}" /></td>
33
+                        <td class="text-c">
34
+                            @if($a['salers'])
35
+                                @foreach($a['salers'] as $k=>$saler)
36
+                                    {{$saler['admin_name']}} @if( $k < $a['salers_k']-1), @endif
37
+                                @endforeach
38
+                            @endif
39
+                        </td>
40
+                        <td class="text-c">{{$a['note']}}</td>
41
+                        <td class="text-c">{{$a['url']}}</td>
42
+                        <td class="text-c"><img style="width:100px;" src="{{$a['back_img']}}" /></td>
43
+                        <td class="text-c">{{$a['create_time']}}</td>
44
+                        
45
+                        <td class="f-14 product-brand-manage">
46
+                            <a style="text-decoration:none" onClick='templateedit("编辑","{{$a['id']}}")' href="javascript:;" title="编辑"><span class="btn btn-primary radius">编辑</span></a>
47
+                            <a style="text-decoration:none" onClick='assign("分配销售","{{$a['id']}}")' href="javascript:;" title="分配销售"><span class="btn btn-primary radius">分配销售</span></a>
48
+                            <!--a style="text-decoration:none" class="ml-5" onClick="templatedel(this, '{{$a["id"]}}')" href="javascript:;" title="删除"><span class="btn btn-danger radius">删除</span></a-->
49
+                        </td>
50
+                    </tr>
51
+                @endforeach
52
+                @endif
53
+                </tbody>
54
+            </table>
55
+        </div>
56
+        <div id="page" class="page_div"></div>
57
+    </div>
58
+
59
+    <!--_footer 作为公共模版分离出去-->
60
+    <script type="text/javascript" src="/admin/lib/jquery/1.9.1/jquery.min.js"></script>
61
+    <script type="text/javascript" src="/admin/lib/layer/2.4/layer.js"></script>
62
+    <script type="text/javascript" src="/admin/static/h-ui/js/H-ui.min.js"></script>
63
+    <script type="text/javascript" src="/admin/static/h-ui.admin/js/H-ui.admin.js"></script>
64
+    <script type="text/javascript" src="/admin/lib/page/paging.js"></script>
65
+    <!--/_footer 作为公共模版分离出去-->
66
+    <!--/_footer 作为公共模版分离出去-->
67
+
68
+    <script type="text/javascript">
69
+        $(function(){
70
+            setTimeout("$('#info').hide()",3000);
71
+        });
72
+        /*管理员-添加*/
73
+        function templateadd(title){
74
+            location.href = '/admin/template/sourcecreate';
75
+        }
76
+        /*管理员-编辑*/
77
+        function templateedit(title,id){
78
+            location.href = "/admin/template/sourceedit/"+id;
79
+        }
80
+        function assign(title,id){
81
+
82
+            layer.open({
83
+                type: 2,
84
+                shade: false,
85
+                area: ['400px', '60%'], //宽高
86
+                title: "分配销售", //不显示标题
87
+                content: 'getAssigns?id='+id //捕获的元素,注意:最好该指定的元素要存放在body最外层
88
+            });
89
+        }
90
+        /*管理员-删除*/
91
+        function templatedel(obj,id){
92
+            layer.confirm('确认要删除吗?',function(index){                
93
+                $.ajax({
94
+                    type: 'GET',
95
+                    url: '/admin/template/delete/'+id,
96
+                    dataType: 'json',
97
+                    success: function(data){
98
+                        if(data == 1){
99
+                            $(obj).parents("tr").remove();
100
+                           layer.msg('已删除!',{icon:1,time:1000});
101
+                        }
102
+                    }
103
+                });
104
+            });
105
+        }
106
+
107
+        /*分页*/
108
+            
109
+        $("#page").paging({ 
110
+            pageNo:{{$page}},
111
+            totalPage: {{$pages}},
112
+            totalSize: {{$count}},
113
+            callback: function(num) {
114
+                location.href='sourceindex?page='+num;
115
+            }
116
+        })
117
+
118
+    </script>
119
+    </body>
120
+
121
+@endsection