educode_sales 0.7.7 → 0.8.1
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.
- checksums.yaml +4 -4
- data/app/controllers/educode_sales/application_controller.rb +24 -0
- data/app/controllers/educode_sales/assessments_controller.rb +151 -285
- data/app/controllers/educode_sales/businesses_controller.rb +68 -2
- data/app/controllers/educode_sales/customers_controller.rb +0 -3
- data/app/helpers/educode_sales/application_helper.rb +3 -3
- data/app/models/educode_sales/business.rb +8 -0
- data/app/models/educode_sales/business_relation_ship.rb +6 -0
- data/app/models/educode_sales/customer_follow.rb +1 -0
- data/app/models/educode_sales/filter.rb +18 -0
- data/app/models/educode_sales/follow_up.rb +2 -0
- data/app/models/educode_sales/role_area.rb +1 -1
- data/app/views/educode_sales/assessments/_progress.html.erb +7 -4
- data/app/views/educode_sales/assessments/_setup.html.erb +115 -13
- data/app/views/educode_sales/assessments/edit.html.erb +47 -54
- data/app/views/educode_sales/assessments/index.html.erb +1 -2
- data/app/views/educode_sales/assessments/index.json.jbuilder +1 -1
- data/app/views/educode_sales/assessments/new.html.erb +148 -111
- data/app/views/educode_sales/assessments/progress.json.jbuilder +2 -198
- data/app/views/educode_sales/businesses/following_businesses.jbuilder +44 -0
- data/app/views/educode_sales/businesses/index.html.erb +175 -27
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +1 -1
- data/app/views/educode_sales/plans/edit_month.html.erb +1 -1
- data/app/views/layouts/educode_sales/application.html.erb +2 -2
- data/config/routes.rb +4 -0
- data/db/migrate/20220419103842_add_column_timestamps_to_assessments_settings.rb +9 -0
- data/db/migrate/20220420071909_create_educode_sales_business_relation_ships.rb +10 -0
- data/db/migrate/20220507020149_create_filter.rb +10 -0
- data/db/migrate/20220507091959_change_educode_sales_filter_column_length.rb +5 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +9 -2
@@ -0,0 +1,44 @@
|
|
1
|
+
follow_up_ids = EducodeSales::AssignFollowUp.where(staff_id: @current_admin.id).pluck(:follow_up_id)
|
2
|
+
follow_count = 0
|
3
|
+
json.data do
|
4
|
+
json.array! @businesses do |d|
|
5
|
+
json.id d.id
|
6
|
+
json.name d.name
|
7
|
+
json.department d.department.name
|
8
|
+
json.school d.department.school.name
|
9
|
+
json.school_id d.department.school.id
|
10
|
+
follow_ups_count = d.follow_ups.where(deleted_at: nil).size
|
11
|
+
json.follow_ups_count follow_ups_count
|
12
|
+
follow_count += follow_ups_count
|
13
|
+
json.follow_up_id d.last_follow_up_id
|
14
|
+
json.clazz d.last_follow_up&.clazz&.name || ""
|
15
|
+
json.stage d.last_follow_up&.stage&.name
|
16
|
+
json.invitation_at d.last_follow_up&.invitation_at.to_s
|
17
|
+
json.reception_at d.last_follow_up&.reception_at.to_s
|
18
|
+
json.bidded_date d.last_follow_up&.bidded_date.to_s
|
19
|
+
json.signed_date d.last_follow_up&.signed_date.to_s
|
20
|
+
json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
|
21
|
+
json.year d.last_follow_up&.year.to_s
|
22
|
+
json.total_amount d.last_follow_up&.total_amount
|
23
|
+
json.actual_amount d.last_follow_up&.actual_amount
|
24
|
+
json.return_money d.return_money
|
25
|
+
json.wait_return_money d.wait_return_money.to_f.round(2)
|
26
|
+
json.return_money_days d.last_follow_up&.reception_at.present? && d.last_follow_up.money_plans.where(clazz: '实际回款').present? ? (d.last_follow_up.money_plans.where(clazz: '实际回款').order(created_at: :asc).first.date_at.to_s(:date).to_date - d.last_follow_up&.reception_at).to_i : ''
|
27
|
+
json.place d.last_follow_up&.place&.name
|
28
|
+
json.last_follow_person d.last_follow_up.present? ? d.last_follow_up.staff.user.real_name : EducodeSales::Staff.find(d.staff_id).user.real_name
|
29
|
+
json.source d.source
|
30
|
+
json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
|
31
|
+
json.current_staff_id @current_admin.id
|
32
|
+
json.staff_id d.staff_id
|
33
|
+
json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : ''
|
34
|
+
json.self_flag (d.staff_id == @current_admin.id) || (d.last_follow_up_id.in? follow_up_ids)
|
35
|
+
json.followed d.users.where(user_id:@current_admin.user.id).first ? 1 : 0
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
json.totalRow do
|
40
|
+
json.follow_ups_count follow_count.to_i.to_s
|
41
|
+
end
|
42
|
+
json.code 0
|
43
|
+
json.count @businesses.size
|
44
|
+
json.msg 'succcess'
|
@@ -100,6 +100,7 @@
|
|
100
100
|
<% if can? :create, EducodeSales::Business %>
|
101
101
|
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加商机</button>
|
102
102
|
<% end %>
|
103
|
+
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="followes"> 我的关注</button>
|
103
104
|
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="mine"> 我的商机</button>
|
104
105
|
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="all"> 全部商机</button>
|
105
106
|
</div>
|
@@ -138,9 +139,14 @@
|
|
138
139
|
{{# }}}
|
139
140
|
<% end %>
|
140
141
|
<% if @more %>
|
141
|
-
|
142
|
+
{{# if(d.followed==0){}}
|
143
|
+
<a class="layui-btn-xs data-count-edit more-btn more-btn1" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
144
|
+
{{# }else{}}
|
145
|
+
<a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
146
|
+
{{# }}}
|
142
147
|
<% end %>
|
143
148
|
</script>
|
149
|
+
|
144
150
|
<script type="text/html" id="show_keys">
|
145
151
|
<a href="javascript:void(0);" lay-event="show_keys" class="layui-table-link">{{ d.teachers_count }}</a>
|
146
152
|
</script>
|
@@ -151,10 +157,13 @@
|
|
151
157
|
<a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">{{ d.school
|
152
158
|
}}</a>
|
153
159
|
</script>
|
160
|
+
<script type="text/html" id="follows">
|
161
|
+
<a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">kkkkk</a>
|
162
|
+
</script>
|
154
163
|
|
155
164
|
|
156
165
|
<script>
|
157
|
-
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown'], function () {
|
166
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown','laytpl'], function () {
|
158
167
|
var $ = layui.jquery,
|
159
168
|
form = layui.form,
|
160
169
|
request = layui.request,
|
@@ -252,8 +261,8 @@
|
|
252
261
|
elem: '#businesses_table',
|
253
262
|
url: '/missions/businesses',
|
254
263
|
where: {q: data},
|
255
|
-
defaultToolbar: ['filter'],
|
256
264
|
toolbar: '#bussinessBar',
|
265
|
+
defaultToolbar: ['filter'],
|
257
266
|
title: '商机数据表',
|
258
267
|
totalRow: true,//开启合并行
|
259
268
|
cols: [
|
@@ -270,19 +279,22 @@
|
|
270
279
|
width: 170,
|
271
280
|
title: '商机名称',
|
272
281
|
templet: '<div><span title="{{d.name}}">{{d.name}}</span></div>',
|
273
|
-
fixed: 'left'
|
282
|
+
fixed: 'left',
|
283
|
+
hide: gon.business_filter.name
|
274
284
|
},
|
275
285
|
{
|
276
286
|
field: 'school',
|
277
287
|
width: 150,
|
278
288
|
title: '单位',
|
279
|
-
templet: '#school_name'
|
289
|
+
templet: '#school_name',
|
290
|
+
hide: gon.business_filter.school
|
280
291
|
},
|
281
292
|
{
|
282
293
|
field: 'department',
|
283
294
|
width: 150,
|
284
295
|
title: '部门',
|
285
|
-
templet: '<div><span title="{{d.department}}">{{d.department}}</span></div>'
|
296
|
+
templet: '<div><span title="{{d.department}}">{{d.department}}</span></div>',
|
297
|
+
hide: gon.business_filter.department
|
286
298
|
},
|
287
299
|
{
|
288
300
|
field: 'follow_ups_count',
|
@@ -290,6 +302,7 @@
|
|
290
302
|
width: 60,
|
291
303
|
templet: '#show_follow',
|
292
304
|
totalRow: true,
|
305
|
+
hide: gon.business_filter.name
|
293
306
|
},
|
294
307
|
// {
|
295
308
|
// field: 'teachers_count',
|
@@ -301,109 +314,142 @@
|
|
301
314
|
field: 'clazz',
|
302
315
|
width: 80,
|
303
316
|
title: '类型',
|
304
|
-
templet: '<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>'
|
317
|
+
templet: '<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>',
|
318
|
+
hide: gon.business_filter.name
|
305
319
|
},
|
306
320
|
{
|
307
321
|
field: 'stage',
|
308
322
|
width: 90,
|
309
|
-
title: '阶段'
|
323
|
+
title: '阶段',
|
324
|
+
hide: gon.business_filter.name
|
310
325
|
},
|
311
326
|
{
|
312
327
|
field: 'source',
|
313
328
|
width: 90,
|
314
|
-
title: '商机来源'
|
329
|
+
title: '商机来源',
|
330
|
+
hide: gon.business_filter.source
|
315
331
|
},
|
316
332
|
{
|
317
333
|
field: 'last_follow_person',
|
318
334
|
width: 100,
|
319
|
-
title: '最新跟进人'
|
335
|
+
title: '最新跟进人',
|
336
|
+
hide: gon.business_filter.last_follow_person
|
320
337
|
},
|
321
338
|
{
|
322
339
|
field: 'latest_time',
|
323
340
|
width: 200,
|
324
341
|
title: '最新跟进时间',
|
325
|
-
sort: true
|
342
|
+
sort: true,
|
343
|
+
hide: gon.business_filter.latest_time
|
326
344
|
},
|
327
345
|
{
|
328
346
|
field: 'invitation_at',
|
329
347
|
width: 105,
|
330
348
|
title: '招标时间',
|
331
|
-
sort: true
|
349
|
+
sort: true,
|
350
|
+
hide: gon.business_filter.invitation_at
|
332
351
|
},
|
333
352
|
{
|
334
353
|
field: 'bidded_date',
|
335
354
|
width: 105,
|
336
355
|
title: '中标时间',
|
337
|
-
sort: true
|
356
|
+
sort: true,
|
357
|
+
hide: gon.business_filter.bidded_date
|
338
358
|
},
|
339
359
|
{
|
340
360
|
field: 'signed_date',
|
341
361
|
width: 105,
|
342
362
|
title: '签单时间',
|
343
|
-
sort: true
|
363
|
+
sort: true,
|
364
|
+
hide: gon.business_filter.signed_date
|
344
365
|
},
|
345
366
|
{
|
346
367
|
field: 'reception_at',
|
347
368
|
width: 105,
|
348
369
|
title: '验收时间',
|
349
|
-
sort: true
|
370
|
+
sort: true,
|
371
|
+
hide: gon.business_filter.reception_at
|
350
372
|
},
|
351
373
|
{
|
352
374
|
field: 'service_end_time',
|
353
375
|
width: 200,
|
354
376
|
title: '服务期',
|
355
|
-
sort: true
|
377
|
+
sort: true,
|
378
|
+
hide: gon.business_filter.service_end_time
|
356
379
|
},
|
357
380
|
{
|
358
381
|
field: 'total_amount',
|
359
382
|
width: 100,
|
360
383
|
title: '总额',
|
361
384
|
totalRow: true,
|
362
|
-
sort: true
|
385
|
+
sort: true,
|
386
|
+
hide: gon.business_filter.total_amount
|
363
387
|
},
|
364
388
|
{
|
365
389
|
field: 'actual_amount',
|
366
390
|
width: 100,
|
367
391
|
title: '合同额',
|
368
392
|
totalRow: true,
|
369
|
-
sort: true
|
393
|
+
sort: true,
|
394
|
+
hide: gon.business_filter.actual_amount
|
370
395
|
},
|
371
396
|
{
|
372
397
|
field: 'return_money',
|
373
398
|
width: 100,
|
374
399
|
title: '回款',
|
375
400
|
sort: true,
|
376
|
-
totalRow: true
|
401
|
+
totalRow: true,
|
402
|
+
hide: gon.business_filter.return_money
|
377
403
|
},
|
378
404
|
{
|
379
405
|
field: 'wait_return_money',
|
380
406
|
width: 100,
|
381
407
|
title: '待回款',
|
382
408
|
sort: true,
|
383
|
-
totalRow: true
|
409
|
+
totalRow: true,
|
410
|
+
hide: gon.business_filter.wait_return_money
|
384
411
|
},
|
385
412
|
{
|
386
413
|
field: 'return_money_days',
|
387
414
|
width: 150,
|
388
415
|
title: '首次回款周期(天)',
|
416
|
+
hide: gon.business_filter.return_money_days
|
389
417
|
},
|
390
418
|
{
|
391
419
|
field: 'place',
|
392
420
|
width: 160,
|
393
421
|
title: '渠道',
|
422
|
+
hide: gon.business_filter.place
|
394
423
|
},
|
395
424
|
{
|
396
425
|
field: 'year',
|
397
426
|
width: 105,
|
398
427
|
title: '所属年度',
|
399
|
-
sort: true
|
428
|
+
sort: true,
|
429
|
+
hide: gon.business_filter.year
|
400
430
|
},
|
431
|
+
{
|
432
|
+
field: 'followed',
|
433
|
+
templet:function(d){
|
434
|
+
if (d.followed==1){
|
435
|
+
|
436
|
+
return '<i class="layui-icon" style="color: goldenrod"></i> '
|
437
|
+
}
|
438
|
+
|
439
|
+
else return ''
|
440
|
+
},
|
441
|
+
width: 105,
|
442
|
+
title: '关注',
|
443
|
+
align: "center",
|
444
|
+
hide: gon.business_filter.followed
|
445
|
+
|
446
|
+
},
|
401
447
|
{
|
402
448
|
title: '操作',
|
403
449
|
minWidth: 220,
|
404
450
|
toolbar: '#currentTableBar',
|
405
451
|
align: "center",
|
406
|
-
fixed: 'right'
|
452
|
+
fixed: 'right',
|
407
453
|
}
|
408
454
|
]
|
409
455
|
],
|
@@ -422,15 +468,18 @@
|
|
422
468
|
});
|
423
469
|
|
424
470
|
var dropmenu = gon.menus;
|
471
|
+
var dropmenu2=JSON.parse(JSON.stringify(dropmenu));
|
425
472
|
var export_dropmenu = gon.export_menus;
|
473
|
+
dropmenu2[dropmenu2.findIndex(function (elem){return elem.title.includes("关注")})].title="取消关注";
|
426
474
|
|
427
475
|
drowpdwonRender = function() {
|
428
476
|
dropdown.render({
|
429
|
-
elem: '.more-
|
430
|
-
data: dropmenu,
|
477
|
+
elem: '.more-btn1',
|
478
|
+
data: dropmenu,//dropmenu,
|
431
479
|
click: function(data, othis){
|
432
480
|
var elem = $(this.elem);
|
433
481
|
id = elem.data('id');
|
482
|
+
|
434
483
|
switch (data.event) {
|
435
484
|
case 'week':
|
436
485
|
week(id);
|
@@ -450,9 +499,44 @@
|
|
450
499
|
case 'delete':
|
451
500
|
deleteBusiness(id, elem.data('name'));
|
452
501
|
break;
|
502
|
+
case 'following':
|
503
|
+
following(id);
|
504
|
+
break;
|
453
505
|
}
|
454
506
|
}
|
455
507
|
});
|
508
|
+
dropdown.render({
|
509
|
+
elem: '.more-btn2',
|
510
|
+
data: dropmenu2,//dropmenu,
|
511
|
+
click: function(data, othis){
|
512
|
+
var elem = $(this.elem);
|
513
|
+
id = elem.data('id');
|
514
|
+
|
515
|
+
switch (data.event) {
|
516
|
+
case 'week':
|
517
|
+
week(id);
|
518
|
+
break;
|
519
|
+
case 'month':
|
520
|
+
month(id);
|
521
|
+
break;
|
522
|
+
case 'edit':
|
523
|
+
edit(id);
|
524
|
+
break;
|
525
|
+
case 'file':
|
526
|
+
file(id, elem.data('name'));
|
527
|
+
break;
|
528
|
+
case 'time_line':
|
529
|
+
time_line(id, elem.data('name'));
|
530
|
+
break;
|
531
|
+
case 'delete':
|
532
|
+
deleteBusiness(id, elem.data('name'));
|
533
|
+
break;
|
534
|
+
case 'following':
|
535
|
+
following(id);
|
536
|
+
break;
|
537
|
+
}
|
538
|
+
}
|
539
|
+
});
|
456
540
|
}
|
457
541
|
|
458
542
|
export_drowpdwonRender = function() {
|
@@ -585,6 +669,41 @@
|
|
585
669
|
layer.full(sindex);
|
586
670
|
});
|
587
671
|
}
|
672
|
+
function following(id) {
|
673
|
+
$.ajax({
|
674
|
+
type: "get",
|
675
|
+
dataType: "json",
|
676
|
+
url: '/missions/businesses/followed',
|
677
|
+
data: {business_id:id},
|
678
|
+
success: function (data) {
|
679
|
+
layer.open({
|
680
|
+
title:'关注',
|
681
|
+
content:data.msg,
|
682
|
+
btn: ['确认', '取消'],
|
683
|
+
yes:function (){
|
684
|
+
$.ajax({
|
685
|
+
type: "post",
|
686
|
+
dataType: "json",
|
687
|
+
url: '/missions/businesses/following',
|
688
|
+
data: {business_id:id},
|
689
|
+
success: function (da) {
|
690
|
+
|
691
|
+
layer.msg(da.msg,{icon: da.code==200? 1:2})
|
692
|
+
table.reload("businesses_table")
|
693
|
+
|
694
|
+
},
|
695
|
+
error:function (da){
|
696
|
+
alert('请求错误')
|
697
|
+
}
|
698
|
+
});
|
699
|
+
}
|
700
|
+
})
|
701
|
+
},
|
702
|
+
error:function (data){
|
703
|
+
alert('请求错误')
|
704
|
+
}
|
705
|
+
});
|
706
|
+
}
|
588
707
|
|
589
708
|
function edit(id) {
|
590
709
|
var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
|
@@ -662,7 +781,7 @@
|
|
662
781
|
layer.confirm('确定删除' + name, function (index) {
|
663
782
|
request.delete('missions/businesses/' + id, {}, function (res) {
|
664
783
|
layer.close(index);
|
665
|
-
table.reload("businesses_table")
|
784
|
+
table.reload("businesses_table",{url: '/missions/businesses'})
|
666
785
|
})
|
667
786
|
});
|
668
787
|
}
|
@@ -674,6 +793,7 @@
|
|
674
793
|
sort.field = obj.field;
|
675
794
|
sort.order = obj.type;
|
676
795
|
table.reload('businesses_table', {
|
796
|
+
url: '/missions/businesses',
|
677
797
|
initSort: obj,
|
678
798
|
where: {
|
679
799
|
sort: sort,
|
@@ -698,12 +818,14 @@
|
|
698
818
|
search = data.field
|
699
819
|
console.log(search);
|
700
820
|
table.reload('businesses_table', {
|
821
|
+
url: '/missions/businesses',
|
701
822
|
page: {
|
702
823
|
curr: 1
|
703
824
|
},
|
704
825
|
where: {q: search, sort: sort}
|
705
826
|
}, 'data');
|
706
827
|
table.reload('teachers_table', {
|
828
|
+
url: '/missions/businesses',
|
707
829
|
page: {
|
708
830
|
curr: 1
|
709
831
|
},
|
@@ -734,6 +856,17 @@
|
|
734
856
|
});
|
735
857
|
|
736
858
|
table.on('toolbar(businesses_table)', function (obj) {
|
859
|
+
switch (obj.event) {
|
860
|
+
case 'LAYTABLE_COLS':
|
861
|
+
layui.form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj) {
|
862
|
+
var value = obj.elem.checked
|
863
|
+
var name = obj.elem.attributes[1].value
|
864
|
+
console.log(obj.elem.attributes.name);
|
865
|
+
request.get('missions/filter?type=businesses_list&name='+name+'&hidden='+value,{},function (res){})
|
866
|
+
});
|
867
|
+
}
|
868
|
+
|
869
|
+
|
737
870
|
if (obj.event === 'add') { // 监听添加操作
|
738
871
|
var content = miniPage.getHrefContent('/missions/businesses/new');
|
739
872
|
var openWH = miniPage.getOpenWidthHeight();
|
@@ -753,6 +886,21 @@
|
|
753
886
|
} else if (obj.event === 'all') {
|
754
887
|
search = {"all":"1"}
|
755
888
|
table.reload('businesses_table', {
|
889
|
+
url: '/missions/businesses',
|
890
|
+
page: {
|
891
|
+
curr: 1
|
892
|
+
},
|
893
|
+
where: {q: search, sort: sort}
|
894
|
+
}, 'data');
|
895
|
+
form.val('search_form', {
|
896
|
+
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
897
|
+
place_id: '', date: '', area: ''
|
898
|
+
})
|
899
|
+
return false;
|
900
|
+
} else if (obj.event === 'followes') {
|
901
|
+
search = {"all":"1"}
|
902
|
+
table.reload('businesses_table', {
|
903
|
+
url: '/missions/businesses/following_businesses',
|
756
904
|
page: {
|
757
905
|
curr: 1
|
758
906
|
},
|
@@ -767,6 +915,7 @@
|
|
767
915
|
else if (obj.event === 'mine') {
|
768
916
|
search = {"mine":"1"}
|
769
917
|
table.reload('businesses_table', {
|
918
|
+
url: '/missions/businesses',
|
770
919
|
page: {
|
771
920
|
curr: 1
|
772
921
|
},
|
@@ -829,7 +978,7 @@
|
|
829
978
|
layer.confirm('确定删除' + data.name, function (index) {
|
830
979
|
request.delete('missions/businesses/' + data.id, {}, function (res) {
|
831
980
|
layer.close(index);
|
832
|
-
table.reload("businesses_table")
|
981
|
+
table.reload("businesses_table",{url: '/missions/businesses',})
|
833
982
|
})
|
834
983
|
});
|
835
984
|
}else if (obj.event === 'add_follow') { // 监听添加操作
|
@@ -929,7 +1078,6 @@
|
|
929
1078
|
});
|
930
1079
|
}
|
931
1080
|
});
|
932
|
-
|
933
1081
|
});
|
934
1082
|
</script>
|
935
1083
|
<style>
|
@@ -32,6 +32,7 @@ json.data do
|
|
32
32
|
json.staff_id d.staff_id
|
33
33
|
json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : ''
|
34
34
|
json.self_flag (d.staff_id == @current_admin.id) || (d.last_follow_up_id.in? follow_up_ids)
|
35
|
+
json.followed d.users.where(user_id:@current_admin.user.id).first ? 1 : 0
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
@@ -71,7 +71,7 @@
|
|
71
71
|
<div class="layui-inline service_show layui-hide">
|
72
72
|
<label class="layui-form-label required">服务期</label>
|
73
73
|
<div class="layui-input-inline">
|
74
|
-
<input type="text" class="layui-input required" id="service_time" name="service_time" placeholder=" - " autocomplete="off" value
|
74
|
+
<input type="text" class="layui-input required" id="service_time" name="service_time" placeholder=" - " autocomplete="off" value="<%= (@last_follow_up&.service_start_time.present? && @last_follow_up&.service_end_time.present?) ? (@last_follow_up.service_start_time.to_s + " - " + @last_follow_up.service_end_time.to_s) : '' %>">
|
75
75
|
</div>
|
76
76
|
</div>
|
77
77
|
<br class="service_show layui-hide">
|
@@ -31,7 +31,7 @@
|
|
31
31
|
</li>
|
32
32
|
</ul>
|
33
33
|
<ul class="layui-nav layui-layout-right">
|
34
|
-
<li class="layui-nav-item
|
34
|
+
<li class="layui-nav-item layui-show-md-inline-block" id="logout">
|
35
35
|
<a href="javascript:;">
|
36
36
|
<%= image_tag "/images/#{url_to_avatar(@current_admin.user)}", class: 'layui-nav-img' %>
|
37
37
|
<%= @current_admin.user.real_name %>
|
@@ -81,7 +81,7 @@
|
|
81
81
|
<dd><a href="/missions/plans" class="<%= current?('layui-this', plans_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/6.销售计划.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>销售计划</a></dd>
|
82
82
|
<% end %>
|
83
83
|
<% if can?(:show, EducodeSales::AssessmentsSetting) || can?(:show_result, EducodeSales::AssessmentsSetting) %>
|
84
|
-
|
84
|
+
<dd><a href="/missions/assessments" class="<%= current?('layui-this', assessments_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/assessment.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>绩效考核</a></dd>
|
85
85
|
<% end %>
|
86
86
|
<% if can? :sales, EducodeSales::Staff %>
|
87
87
|
<dd><a href="/missions/sales" class="<%= current?('layui-this', sales_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/3.销售分工.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>销售分工</a>
|
data/config/routes.rb
CHANGED
@@ -13,6 +13,7 @@ EducodeSales::Engine.routes.draw do
|
|
13
13
|
get :sales_staff, to: "home#sales_staff"
|
14
14
|
get :sales_place, to: "home#sales_place"
|
15
15
|
get :staff_schools, to: "home#staff_schools"
|
16
|
+
get :filter, to: "application#filter"
|
16
17
|
|
17
18
|
|
18
19
|
resources :sessions do
|
@@ -85,6 +86,7 @@ EducodeSales::Engine.routes.draw do
|
|
85
86
|
|
86
87
|
resources :businesses do
|
87
88
|
collection do
|
89
|
+
post :following
|
88
90
|
get :export_records
|
89
91
|
post :get_export_data
|
90
92
|
get :add_export_records
|
@@ -98,6 +100,8 @@ EducodeSales::Engine.routes.draw do
|
|
98
100
|
get :file
|
99
101
|
get :time_line
|
100
102
|
get :upload_file
|
103
|
+
get :following_businesses
|
104
|
+
get :followed
|
101
105
|
end
|
102
106
|
|
103
107
|
member do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: educode_sales
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -186,12 +186,14 @@ files:
|
|
186
186
|
- app/models/educode_sales/assign_follow_up.rb
|
187
187
|
- app/models/educode_sales/business.rb
|
188
188
|
- app/models/educode_sales/business_export_record.rb
|
189
|
+
- app/models/educode_sales/business_relation_ship.rb
|
189
190
|
- app/models/educode_sales/common.rb
|
190
191
|
- app/models/educode_sales/course_subject.rb
|
191
192
|
- app/models/educode_sales/customer.rb
|
192
193
|
- app/models/educode_sales/customer_add.rb
|
193
194
|
- app/models/educode_sales/customer_extension.rb
|
194
195
|
- app/models/educode_sales/customer_follow.rb
|
196
|
+
- app/models/educode_sales/filter.rb
|
195
197
|
- app/models/educode_sales/follow_up.rb
|
196
198
|
- app/models/educode_sales/key_person.rb
|
197
199
|
- app/models/educode_sales/market_area.rb
|
@@ -235,6 +237,7 @@ files:
|
|
235
237
|
- app/views/educode_sales/businesses/export_records.html.erb
|
236
238
|
- app/views/educode_sales/businesses/export_records.json.jbuilder
|
237
239
|
- app/views/educode_sales/businesses/file.html.erb
|
240
|
+
- app/views/educode_sales/businesses/following_businesses.jbuilder
|
238
241
|
- app/views/educode_sales/businesses/get_export_data.json.jbuilder
|
239
242
|
- app/views/educode_sales/businesses/index.html.erb
|
240
243
|
- app/views/educode_sales/businesses/index.json.jbuilder
|
@@ -449,6 +452,10 @@ files:
|
|
449
452
|
- db/migrate/20220411021641_add_new_column_assessments_settings.rb
|
450
453
|
- db/migrate/20220413090940_add_september_progress_to_assessment_settings.rb
|
451
454
|
- db/migrate/20220418033025_add_staff_id_to_sets.rb
|
455
|
+
- db/migrate/20220419103842_add_column_timestamps_to_assessments_settings.rb
|
456
|
+
- db/migrate/20220420071909_create_educode_sales_business_relation_ships.rb
|
457
|
+
- db/migrate/20220507020149_create_filter.rb
|
458
|
+
- db/migrate/20220507091959_change_educode_sales_filter_column_length.rb
|
452
459
|
- lib/educode_sales.rb
|
453
460
|
- lib/educode_sales/engine.rb
|
454
461
|
- lib/educode_sales/version.rb
|