educode_sales 0.9.55 → 0.9.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1007 @@
1
+ <div class="min-height-table">
2
+ <div style="margin: 10px 10px 10px 10px">
3
+ <form class="layui-form layui-form-pane" lay-filter="search_form">
4
+ <div class="layui-form-item">
5
+ <div class="layui-inline">
6
+ <label class="layui-form-label">商机名称</label>
7
+ <div class="layui-input-inline">
8
+ <input type="text" name="name" class="layui-input" value="">
9
+ <input type="text" style="display: none" name="place_id" class="layui-input" value="<%=params[:place_id] %>">
10
+ </div>
11
+ </div>
12
+ <div class="layui-inline">
13
+ <label class="layui-form-label">单位</label>
14
+ <div class="layui-input-inline">
15
+ <input type="text" name="department" value="<%=params[:school] %>" class="layui-input">
16
+ </div>
17
+ </div>
18
+ <div class="layui-inline">
19
+ <label class="layui-form-label">最新跟进人</label>
20
+ <div class="layui-input-inline">
21
+ <div id="contract_staffs_id" style="width: 190px;"></div>
22
+ </div>
23
+ </div>
24
+ <div class="layui-inline">
25
+ <label class="layui-form-label">商机变化</label>
26
+ <div class="layui-input-inline">
27
+ <select name="clazz_changes">
28
+ <option value=""></option>
29
+ <option value="1">商机降级</option>
30
+ <option value="2">商机晋级</option>
31
+ <option value="3">商机降级 A-X</option>
32
+ <option value="4">商机降级 AB-X</option>
33
+ <option value="5">商机降级 ABC-X</option>
34
+ <option value="6">商机晋级 B-A</option>
35
+ <option value="7">商机晋级 BC-A</option>
36
+ <option value="8">商机晋级 BCD-A</option>
37
+ </select>
38
+ </div>
39
+ </div>
40
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
41
+ <label class="layui-form-label">项目类型</label>
42
+ <div class="layui-input-inline">
43
+ <div id="contract_business_type" style="width: 190px;"></div>
44
+ </div>
45
+ </div>
46
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
47
+ <label class="layui-form-label">项目阶段</label>
48
+ <div class="layui-input-inline">
49
+ <div id="contract_business_step" style="width: 190px;"></div>
50
+ </div>
51
+ </div>
52
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
53
+ <label class="layui-form-label">渠道名称</label>
54
+ <div class="layui-input-inline">
55
+ <div id="contract_index_place" style="width: 190px;"></div>
56
+ </div>
57
+ </div>
58
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
59
+ <label class="layui-form-label">区域</label>
60
+ <div class="layui-input-inline">
61
+ <%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
62
+ </div>
63
+ </div>
64
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
65
+ <label class="layui-form-label">所属年度</label>
66
+ <div class="layui-input-inline">
67
+ <%= select_tag "business_year", options_for_select((2015..Time.now.year).to_a.reverse, params[:business_year]), { include_blank: true } %>
68
+ </div>
69
+ </div>
70
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
71
+ <label class="layui-form-label">招标时间</label>
72
+ <div class="layui-input-inline">
73
+ <input type="text" class="layui-input" id="invitation_at" name="invitation_at" placeholder=" - " autocomplete="off">
74
+ </div>
75
+ </div>
76
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
77
+ <label class="layui-form-label">中标时间</label>
78
+ <div class="layui-input-inline">
79
+ <input type="text" class="layui-input" id="bidded_date" name="bidded_date" placeholder=" - " autocomplete="off">
80
+ </div>
81
+ </div>
82
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
83
+ <label class="layui-form-label">签单时间</label>
84
+ <div class="layui-input-inline">
85
+ <input type="text" class="layui-input" id="signed_date" name="signed_date" placeholder=" - " autocomplete="off">
86
+ </div>
87
+ </div>
88
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
89
+ <label class="layui-form-label">回款时间</label>
90
+ <div class="layui-input-inline">
91
+ <input type="text" class="layui-input" id="date_at" name="date_at" placeholder=" - " autocomplete="off">
92
+ </div>
93
+ </div>
94
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
95
+ <label class="layui-form-label">创建时间</label>
96
+ <div class="layui-input-inline">
97
+ <input type="text" class="layui-input" id="date" name="date" placeholder=" - " autocomplete="off">
98
+ </div>
99
+ </div>
100
+ <div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
101
+ <label class="layui-form-label">部署类型</label>
102
+ <div class="layui-input-inline">
103
+ <select name="o_business_deployment">
104
+ <option value=""></option>
105
+ <option value="1">公有云</option>
106
+ <option value="2">私有云</option>
107
+ <option value="3">混合云</option>
108
+ </select>
109
+ </div>
110
+ </div>
111
+ <div class="layui-inline">
112
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
113
+ </button>
114
+ <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness_contract">搜索
115
+ </button>
116
+ <a style="padding-left: 20px;color: #0000FF" href="javascript:;" type="submit" class="" lay-submit lay-filter="show_hide_contract">高级搜索
117
+ </a>
118
+ </div>
119
+ </div>
120
+ </form>
121
+ </div>
122
+ <div id="contact_table_wraper">
123
+ <table class="layui-hide" id="contact_table" lay-filter="contact_table"></table>
124
+ </div>
125
+ </div>
126
+
127
+
128
+ <script>
129
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown','laytpl'], function () {
130
+ var $ = layui.jquery,
131
+ form = layui.form,
132
+ request = layui.request,
133
+ miniPage = layui.miniPage,
134
+ dropdown = layui.dropdown,
135
+ laydate = layui.laydate;
136
+ var openWH = miniPage.getOpenWidthHeight();
137
+ laydate.render({
138
+ elem: '#date',
139
+ range: true
140
+ });
141
+ laydate.render({
142
+ elem: '#invitation_at',
143
+ range: true
144
+ });
145
+
146
+ laydate.render({
147
+ elem: '#bidded_date',
148
+ range: true,
149
+ value: gon.bidded_date
150
+ });
151
+ laydate.render({
152
+ elem: '#signed_date',
153
+ range: true,
154
+ value: gon.signed_date
155
+ });
156
+
157
+ laydate.render({
158
+ elem: '#date_at',
159
+ range: true,
160
+ value: gon.date_at
161
+ });
162
+
163
+
164
+ var business_type_list = xmSelect.render({
165
+ el: '#contract_business_type',
166
+ data: gon.business_type
167
+ })
168
+
169
+ var staff_list = xmSelect.render({
170
+ el: '#contract_staffs_id',
171
+ data: gon.staffs,
172
+ filterable: true,
173
+ radio: true,
174
+ })
175
+
176
+ var business_step_list = xmSelect.render({
177
+ el: '#contract_business_step',
178
+ data: gon.business_step
179
+ })
180
+ var index_place_list = xmSelect.render({
181
+ el: '#contract_index_place',
182
+ model: {
183
+ icon: 'hidden',
184
+ label: {
185
+ type: 'text',
186
+ text: {
187
+ //左边拼接的字符
188
+ left: '',
189
+ //右边拼接的字符
190
+ right: '',
191
+ //中间的分隔符
192
+ separator: ', ',
193
+ },
194
+ }
195
+ },
196
+ remoteSearch: true,
197
+ clickClose: true,
198
+ delay: 1000,
199
+ paging: true,
200
+ radio: true,
201
+ pageRemote: true,
202
+ filterable: true,
203
+ remoteMethod: function (val, cb, show, pageIndex) {
204
+ $.ajax( '/missions/sales_place', {
205
+ method: 'get',
206
+ data: {
207
+ q: val,
208
+ page: pageIndex
209
+ },
210
+ dataType: 'json',
211
+ success: function (res) {
212
+ var data = res.data;
213
+ if (res.code == 0) {
214
+ cb(res.data, res.count);
215
+ } else {
216
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
217
+ }
218
+ }
219
+ })
220
+ }
221
+ })
222
+ index_place_list.setValue(gon.place)
223
+
224
+ var data = form.val("search_form");
225
+ data.business_year = gon.business_year;
226
+ data.business_type = business_type_list.getValue('valueStr')
227
+ data.business_step = business_step_list.getValue('valueStr');
228
+ data.staff_id = staff_list.getValue('valueStr');
229
+ data.contract = 'contract';
230
+
231
+ table = layui.table;
232
+ var cols_table = [
233
+ [
234
+ {
235
+ field: 'id',
236
+ width: 60,
237
+ title: '序号', type: 'numbers',
238
+ totalRowText: '合计',
239
+ fixed: "left"
240
+ },
241
+ {
242
+ field: 'number',
243
+ width: 120,
244
+ title: '编号',
245
+ fixed: 'left',
246
+ hide: gon.filter.number
247
+ },
248
+ {
249
+ field: 'name',
250
+ width: 170,
251
+ title: '商机名称',
252
+ templet: '<div><a href="javascript:void(0);" class="layui-table-link" lay-event="show_business"><span title="{{d.name}}">{{d.name}}</span></a></div>',
253
+ fixed: 'left',
254
+ hide: gon.filter.name
255
+ },
256
+ {
257
+ field: 'area',
258
+ width: 100,
259
+ title: '地域',
260
+ hide: gon.filter.area
261
+ },
262
+ {
263
+ field: 'school',
264
+ width: 150,
265
+ title: '单位',
266
+ templet: '#school_name',
267
+ hide: gon.filter.school
268
+ },
269
+ {
270
+ field: 'property',
271
+ width: 150,
272
+ title: '客户类型',
273
+ hide: gon.filter.property
274
+ },
275
+ {
276
+ field: 'department',
277
+ width: 150,
278
+ title: '部门',
279
+ templet: '<div><span title="{{d.department}}">{{d.department}}</span></div>',
280
+ hide: gon.filter.department
281
+ },
282
+ {
283
+ field: 'follow_ups_count',
284
+ title: '跟进',
285
+ width: 60,
286
+ templet: '#show_follow',
287
+ totalRow: true,
288
+ hide: gon.filter.follow_ups_count
289
+ },
290
+ {
291
+ field: 'clazz',
292
+ width: 80,
293
+ title: '类型',
294
+ templet: "<div><span title='{{d.clazz}}' class='changed-{{d.clazz_changed}}'>{{d.clazz}}</span></div>",
295
+ hide: gon.filter.clazz
296
+ },
297
+ {
298
+ field: 'stage',
299
+ width: 90,
300
+ title: '阶段',
301
+ hide: gon.filter.stage
302
+ },
303
+ {
304
+ field: 'staff_manages',
305
+ width: 150,
306
+ title: '销售经理',
307
+ hide: gon.filter.staff_manages
308
+ },
309
+ {
310
+ field: 'source',
311
+ width: 90,
312
+ title: '商机来源',
313
+ hide: gon.filter.source
314
+ },
315
+ {
316
+ field: 'last_follow_person',
317
+ width: 100,
318
+ title: '最新跟进人',
319
+ hide: gon.filter.last_follow_person
320
+ },
321
+ {
322
+ field: 'no_followup_days',
323
+ width: 100,
324
+ title: '无跟进天数',
325
+ hide: gon.filter.no_followup_days
326
+ },
327
+ {
328
+ field: 'created_at',
329
+ width: 200,
330
+ title: '商机创建时间',
331
+ sort: true,
332
+ hide: gon.filter.created_at
333
+ },
334
+ {
335
+ field: 'latest_time',
336
+ width: 200,
337
+ title: '最新跟进时间',
338
+ sort: true,
339
+ hide: gon.filter.latest_time
340
+ },
341
+ {
342
+ field: 'invitation_at',
343
+ width: 105,
344
+ title: '招标时间',
345
+ sort: true,
346
+ hide: gon.filter.invitation_at
347
+ },
348
+ {
349
+ field: 'bidded_date',
350
+ width: 105,
351
+ title: '中标时间',
352
+ sort: true,
353
+ hide: gon.filter.bidded_date
354
+ },
355
+ {
356
+ field: 'signed_date',
357
+ width: 105,
358
+ title: '签单时间',
359
+ sort: true,
360
+ hide: gon.filter.signed_date
361
+ },
362
+ {
363
+ field: 'reception_at',
364
+ width: 105,
365
+ title: '验收时间',
366
+ sort: true,
367
+ hide: gon.filter.reception_at
368
+ },
369
+ {
370
+ field: 'service_end_time',
371
+ width: 200,
372
+ title: '服务期',
373
+ sort: true,
374
+ hide: gon.filter.service_end_time
375
+ },
376
+ {
377
+ field: 'o_business_deployment',
378
+ width: 150,
379
+ title: '部署类型',
380
+ sort: true,
381
+ hide: gon.filter.o_business_deployment
382
+ },
383
+ {
384
+ field: 'budget_amount',
385
+ width: 105,
386
+ title: '预算金额',
387
+ totalRow: true,
388
+ sort: true,
389
+ hide: gon.filter.budget_amount
390
+ },
391
+ {
392
+ field: 'total_amount',
393
+ width: 100,
394
+ title: '中标额',
395
+ totalRow: true,
396
+ sort: true,
397
+ hide: gon.filter.total_amount
398
+ },
399
+ {
400
+ field: 'actual_amount',
401
+ width: 100,
402
+ title: '合同额',
403
+ totalRow: true,
404
+ sort: true,
405
+ hide: gon.filter.actual_amount
406
+ },
407
+ {
408
+ field: 'return_money',
409
+ width: 100,
410
+ title: '回款',
411
+ sort: true,
412
+ totalRow: true,
413
+ hide: gon.filter.return_money
414
+ },
415
+ {
416
+ field: 'wait_return_money',
417
+ width: 100,
418
+ title: '待回款',
419
+ sort: true,
420
+ totalRow: true,
421
+ hide: gon.filter.wait_return_money
422
+ },
423
+ {
424
+ field: 'return_money_days',
425
+ width: 150,
426
+ title: '首次回款周期(天)',
427
+ hide: gon.filter.return_money_days
428
+ },
429
+ {
430
+ field: 'divide_rate',
431
+ width: 160,
432
+ title: '渠道分成比例',
433
+ sort: true,
434
+ hide: gon.filter.divide_rate
435
+ },
436
+ {
437
+ field: 'divide_money',
438
+ width: 160,
439
+ title: '渠道分成金额',
440
+ sort: true,
441
+ hide: gon.filter.divide_money
442
+ },
443
+ {
444
+ field: 'place',
445
+ width: 160,
446
+ title: '渠道',
447
+ hide: gon.filter.place
448
+ },
449
+ {
450
+ field: 'sale_way',
451
+ width: 160,
452
+ title: '销售方式',
453
+ hide: gon.filter.sale_way
454
+ },
455
+ {
456
+ field: 'year',
457
+ width: 105,
458
+ title: '所属年度',
459
+ sort: true,
460
+ hide: gon.filter.year
461
+ },
462
+ {
463
+ field: 'followed',
464
+ templet:function(d){
465
+ if (d.followed==1){
466
+ return '<i class="layui-icon" style="color: goldenrod">&#xe658;</i> '
467
+ }
468
+ else return ''
469
+ },
470
+ width: 105,
471
+ title: '关注',
472
+ align: "center",
473
+ hide: gon.filter.followed
474
+
475
+ },
476
+ // {
477
+ // title: '操作',
478
+ // minWidth: 220,
479
+ // toolbar: '#currentTableBar',
480
+ // align: "center",
481
+ // fixed: 'right'
482
+ // }
483
+ ]
484
+ ]
485
+
486
+ var business_table = table.render({
487
+ elem: '#contact_table',
488
+ url: '/missions/businesses',
489
+ autoSort: false,
490
+ where: {q: data},
491
+ defaultToolbar: ['filter'],
492
+ title: '商机数据表',
493
+ totalRow: true,//开启合并行
494
+ cols: cols_table,
495
+
496
+ limit: 20,
497
+ limits: [10,15,20,30,40,50,60,70,80,90],
498
+ page: true,
499
+ skin: 'line',
500
+ done: function (res, curr, coun) {
501
+ exportData=res.data;
502
+ drowpdwonRender();
503
+ export_drowpdwonRender();
504
+ }
505
+ });
506
+
507
+ var dropmenu = gon.menus;
508
+ var dropmenu2=JSON.parse(JSON.stringify(dropmenu));
509
+ var export_dropmenu = gon.export_menus;
510
+ dropmenu2[dropmenu2.findIndex(function (elem)
511
+ {return elem.title.includes("关注")})].title="取消关注";
512
+
513
+ drowpdwonRender = function() {
514
+ dropdown.render({
515
+ elem: '.more-btn1',
516
+ data: dropmenu,//dropmenu,
517
+ click: function(data, othis){
518
+ var elem = $(this.elem);
519
+ id = elem.data('id');
520
+
521
+ switch (data.event) {
522
+ case 'week':
523
+ week(id);
524
+ break;
525
+ case 'month':
526
+ month(id);
527
+ break;
528
+ case 'edit':
529
+ edit(id);
530
+ break;
531
+ case 'file':
532
+ file(id, elem.data('name'));
533
+ break;
534
+ case 'time_line':
535
+ time_line(id, elem.data('name'));
536
+ break;
537
+ case 'delete':
538
+ deleteBusiness(id, elem.data('name'));
539
+ break;
540
+ case 'following':
541
+ following(id);
542
+ break;
543
+ }
544
+ }
545
+ });
546
+ dropdown.render({
547
+ elem: '.more-btn2',
548
+ data: dropmenu2,//dropmenu,
549
+ click: function(data, othis){
550
+ var elem = $(this.elem);
551
+ id = elem.data('id');
552
+
553
+ switch (data.event) {
554
+ case 'week':
555
+ week(id);
556
+ break;
557
+ case 'month':
558
+ month(id);
559
+ break;
560
+ case 'edit':
561
+ edit(id);
562
+ break;
563
+ case 'file':
564
+ file(id, elem.data('name'));
565
+ break;
566
+ case 'time_line':
567
+ time_line(id, elem.data('name'));
568
+ break;
569
+ case 'delete':
570
+ deleteBusiness(id, elem.data('name'));
571
+ break;
572
+ case 'following':
573
+ following(id);
574
+ break;
575
+ }
576
+ }
577
+ });
578
+ }
579
+
580
+ export_drowpdwonRender = function() {
581
+ dropdown.render({
582
+ elem: '.export_more-btn',
583
+ data: export_dropmenu,
584
+ click: function(data, othis){
585
+ var elem = $(this.elem);
586
+ id = elem.data('id');
587
+ switch (data.event) {
588
+ case 'export_csv':
589
+ export_bussiness('csv')
590
+ break;
591
+ case 'export_excel':
592
+ export_bussiness('xls')
593
+ break;
594
+ case 'export_records':
595
+ export_records();
596
+ break;
597
+ }
598
+ }
599
+ });
600
+ }
601
+ function export_bussiness(type) {
602
+ var data = form.val("search_form");
603
+ var business_type = [];
604
+ business_type_list.getValue().forEach(function(d) {
605
+ business_type.push(d.value);
606
+ })
607
+ var business_step = [];
608
+ business_step_list.getValue().forEach(function(d) {
609
+ business_step.push(d.value);
610
+ })
611
+ data.place_id = index_place_list.getValue('valueStr');
612
+ data.business_type = business_type.toString();
613
+ data.business_step = business_step.toString();
614
+ data.staff_id = staff_list.getValue('valueStr');
615
+ layer.load(0, {});
616
+ request.authPost("/missions/businesses/get_export_data", {
617
+ name: data.name,
618
+ area: data.area,
619
+ business_step: data.business_step,
620
+ business_type: data.business_type,
621
+ date: data.date,
622
+ department: data.department,
623
+ invitation_at: data.invitation_at,
624
+ place_id: data.place_id,
625
+ select: data.select,
626
+ staff_id: data.staff_id,
627
+ signed_date: data.signed_date,
628
+ date_at: data.date_at,
629
+ bidded_date: data.bidded_date,
630
+ business_year: data.business_year,
631
+ year: data.year,
632
+ mine: search['clazz'] == 'me' ? true : '',
633
+ is_follow: search['clazz'] == 'followes' ? true : '',
634
+ }, function (res) {
635
+ data = res.data
636
+ table.exportFile(business_table.config.id,data, type);
637
+ layer.closeAll('loading');
638
+ request.get('/missions/businesses/add_export_records?type=' + type, {}, function (res) {
639
+ })
640
+ })
641
+
642
+ }
643
+
644
+
645
+ function export_records() {
646
+ var content = miniPage.getHrefContent('/missions/businesses/export_records')
647
+ var openWH = miniPage.getOpenWidthHeight();
648
+ sindex = layer.open({
649
+ title: '·',
650
+ type: 1,
651
+ shade: 0.2,
652
+ maxmin: true,
653
+ shadeClose: true,
654
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
655
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
656
+ content: content
657
+ });
658
+ $(window).on("resize", function () {
659
+ layer.full(sindex);
660
+ });
661
+ }
662
+
663
+ function week(id) {
664
+ var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + id);
665
+ var openWH = miniPage.getOpenWidthHeight();
666
+
667
+ sindex = layer.open({
668
+ title: '添加周计划',
669
+ type: 1,
670
+ shade: 0.2,
671
+ maxmin: true,
672
+ shadeClose: true,
673
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
674
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
675
+ content: content
676
+ });
677
+ $(window).on("resize", function () {
678
+ layer.full(sindex);
679
+ });
680
+ }
681
+ function following(id) {
682
+ $.ajax({
683
+ type: "get",
684
+ dataType: "json",
685
+ url: '/missions/businesses/followed',
686
+ data: {business_id:id},
687
+ success: function (data) {
688
+ layer.open({
689
+ title:'关注',
690
+ content:data.msg,
691
+ btn: ['确认', '取消'],
692
+ yes:function (){
693
+ $.ajax({
694
+ type: "post",
695
+ dataType: "json",
696
+ url: '/missions/businesses/following',
697
+ data: {business_id:id},
698
+ success: function (da) {
699
+ layer.msg(da.msg,{icon: da.code==200? 1:2})
700
+ table.reload("contact_table")
701
+ },
702
+ error:function (da){
703
+ alert('请求错误')
704
+ }
705
+ });
706
+ }
707
+ })
708
+ },
709
+ error:function (data){
710
+ alert('请求错误')
711
+ }
712
+ });
713
+ }
714
+
715
+ function edit(id) {
716
+ var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
717
+ var openWH = miniPage.getOpenWidthHeight();
718
+ sindex = layer.open({
719
+ title: '编辑',
720
+ type: 1,
721
+ shade: 0.2,
722
+ maxmin: true,
723
+ shadeClose: true,
724
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
725
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
726
+ content: content
727
+ });
728
+ $(window).on("resize", function () {
729
+ layer.full(sindex);
730
+ });
731
+ }
732
+ function time_line(id,name) {
733
+ business_id = id
734
+ business_name = name;
735
+ var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + id);
736
+ var openWH = miniPage.getOpenWidthHeight();
737
+ sindex = layer.open({
738
+ title: '商机列表/'+name+'的跟进时间线',
739
+ type: 1,
740
+ shade: 0.2,
741
+ maxmin: true,
742
+ shadeClose: true,
743
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
744
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
745
+ content: content
746
+ });
747
+ $(window).on("resize", function () {
748
+ layer.full(sindex);
749
+ });
750
+ }
751
+ function file(id, name) {
752
+ id = id
753
+ var content = miniPage.getHrefContent('/missions/businesses/file?business_id=' + id);
754
+ var openWH = miniPage.getOpenWidthHeight();
755
+ sindex = layer.open({
756
+ title: '商机列表/'+name+'的附件信息',
757
+ type: 1,
758
+ shade: 0.2,
759
+ // maxmin: true,
760
+ shadeClose: true,
761
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
762
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
763
+ content: content
764
+ });
765
+ $(window).on("resize", function () {
766
+ // layer.full(sindex);
767
+ });
768
+ }
769
+
770
+ function month(id) {
771
+ var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + id);
772
+ var openWH = miniPage.getOpenWidthHeight();
773
+ sindex = layer.open({
774
+ title: '添加月计划',
775
+ type: 1,
776
+ shade: 0.2,
777
+ maxmin: true,
778
+ shadeClose: true,
779
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
780
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
781
+ content: content
782
+ });
783
+ $(window).on("resize", function () {
784
+ layer.full(sindex);
785
+ });
786
+ }
787
+
788
+ function deleteBusiness(id, name) {
789
+ layer.confirm('确定删除' + name, function (index) {
790
+ request.delete('missions/businesses/' + id, {}, function (res) {
791
+ layer.close(index);
792
+ table.reload("contact_table",{url: '/missions/businesses'})
793
+ })
794
+ });
795
+ }
796
+
797
+
798
+
799
+ var sort = {}, search = data;
800
+
801
+ table.on('sort(contact_table)', function (obj) {
802
+ var data = form.val("search_form");
803
+ sort.field = obj.field;
804
+ sort.order = obj.type;
805
+ table.reload('contact_table', {
806
+ url: '/missions/businesses',
807
+ initSort: obj,
808
+ where: {
809
+ sort: sort,
810
+ q: search
811
+ }
812
+ });
813
+ })
814
+
815
+ // 监听搜索操作
816
+ form.on('submit(search_bussiness_contract)', function (data) {
817
+ var business_type = [];
818
+ business_type_list.getValue().forEach(function(d) {
819
+ business_type.push(d.value);
820
+ })
821
+ var business_step = [];
822
+ business_step_list.getValue().forEach(function(d) {
823
+ business_step.push(d.value);
824
+ })
825
+ data.field.place_id = index_place_list.getValue('valueStr');
826
+ data.field.staff_id = staff_list.getValue('valueStr');
827
+ data.field.business_type = business_type.toString();
828
+ data.field.business_step = business_step.toString();
829
+ data.field.contract = 'contract';
830
+
831
+ if (search['clazz']) {
832
+ data.field['clazz'] = search['clazz']
833
+ }
834
+ search = data.field
835
+ table.reload('contact_table', {
836
+ url: '/missions/businesses',
837
+ page: {
838
+ curr: 1
839
+ },
840
+ where: {q: search, sort: sort}
841
+ }, 'data');
842
+
843
+ return false;
844
+ });
845
+
846
+ form.on('submit(show_hide_contract)', function (data) {
847
+ $(".show_item_contract").toggle()
848
+ return false;
849
+ });
850
+
851
+ form.on('submit(reset_business_search)', function (data) {
852
+ var field = data.field;
853
+ form.val('search_form', {
854
+ name: '', department: '', staff_id: '', business_type: '', business_step: '',
855
+ place_id: '', date: '', area: '', invitation_at: '', business_year: '', number: ''
856
+ })
857
+ business_type_list.setValue([])
858
+ business_step_list.setValue([])
859
+ index_place_list.setValue([])
860
+ staff_list.setValue([])
861
+
862
+ return false;
863
+ });
864
+
865
+ table.on('tool(contact_table)', function (obj) {
866
+ var data = obj.data;
867
+ id = data.id
868
+ if (obj.event === 'add_event') { // 监听添加操作
869
+ business_id = data.id
870
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + data.id);
871
+ var openWH = miniPage.getOpenWidthHeight();
872
+ sale_plan_index = layer.open({
873
+ title: '添加商机跟进记录',
874
+ type: 1,
875
+ shade: 0.2,
876
+ maxmin: true,
877
+ shadeClose: true,
878
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
879
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
880
+ content: content,
881
+ success: function (layero, index) {
882
+ form.render('select');
883
+ }
884
+ });
885
+ $(window).on("resize", function () {
886
+ layer.full(sale_plan_index);
887
+ });
888
+ } else if (obj.event === 'edit') {
889
+ var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
890
+ var openWH = miniPage.getOpenWidthHeight();
891
+ sindex = layer.open({
892
+ title: '编辑',
893
+ type: 1,
894
+ shade: 0.2,
895
+ maxmin: true,
896
+ shadeClose: true,
897
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
898
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
899
+ content: content
900
+ });
901
+ $(window).on("resize", function () {
902
+ layer.full(sindex);
903
+ });
904
+ return false;
905
+ } else if (obj.event === 'delete') {
906
+ layer.confirm('确定删除' + data.name, function (index) {
907
+ request.delete('missions/businesses/' + data.id, {}, function (res) {
908
+ layer.close(index);
909
+ table.reload("businesses_table",{url: '/missions/businesses',})
910
+ })
911
+ });
912
+ }else if (obj.event === 'add_follow') { // 监听添加操作
913
+ business_id = parent.business_id
914
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
915
+ var openWH = miniPage.getOpenWidthHeight();
916
+ sale_plan_index = layer.open({
917
+ title: '添加商机跟进记录',
918
+ type: 1,
919
+ shade: 0.2,
920
+ maxmin: true,
921
+ shadeClose: true,
922
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
923
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
924
+ content: content,
925
+ success: function (layero, index) {
926
+ form.render('select');
927
+ }
928
+ });
929
+ $(window).on("resize", function () {
930
+ layer.full(index);
931
+ });
932
+ }else if (obj.event === 'addWeek') {
933
+ var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + obj.data.id);
934
+ var openWH = miniPage.getOpenWidthHeight();
935
+
936
+ sindex = layer.open({
937
+ title: '添加周计划',
938
+ type: 1,
939
+ shade: 0.2,
940
+ maxmin: true,
941
+ shadeClose: true,
942
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
943
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
944
+ content: content
945
+ });
946
+ $(window).on("resize", function () {
947
+ layer.full(sindex);
948
+ });
949
+ } else if (obj.event === 'addMonth') {
950
+ var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + obj.data.id);
951
+ var openWH = miniPage.getOpenWidthHeight();
952
+ sindex = layer.open({
953
+ title: '添加月计划',
954
+ type: 1,
955
+ shade: 0.2,
956
+ maxmin: true,
957
+ shadeClose: true,
958
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
959
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
960
+ content: content
961
+ });
962
+ $(window).on("resize", function () {
963
+ layer.full(sindex);
964
+ });
965
+
966
+ } else if (obj.event === 'show_keys') {
967
+ business_id = obj.data.id
968
+ follow_up_id = obj.data.follow_up_id;
969
+ content = miniPage.getHrefContent('/missions/businesses/show_keys');
970
+ openWH = miniPage.getOpenWidthHeight();
971
+ index = layer.open({
972
+ title: '关键人',
973
+ type: 1,
974
+ shade: 0.2,
975
+ maxmin: true,
976
+ shadeClose: true,
977
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
978
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
979
+ content: content,
980
+ success: function (layero, index) {
981
+ }
982
+ });
983
+ $(window).on("resize", function () {
984
+ layer.full(index);
985
+ });
986
+ } else if (obj.event === 'show_follow') {
987
+ time_line(obj.data.id, obj.data.name);
988
+ } else if (obj.event == 'show_business') {
989
+ time_line(obj.data.id, obj.data.name)
990
+ }
991
+ });
992
+
993
+
994
+ });
995
+ </script>
996
+ <style>
997
+ .layui-table-tool-temp{
998
+ padding-right: 30px; !important;
999
+ }
1000
+ .layui-table-fixed .layui-table-body {
1001
+ height: auto!important;
1002
+ }
1003
+ .layui-table-fixed.layui-hide {
1004
+ display: block!important;
1005
+ }
1006
+
1007
+ </style>