educode_sales 0.5.4 → 0.5.8
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/businesses_controller.rb +20 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +58 -1
- data/app/controllers/educode_sales/home_controller.rb +18 -2
- data/app/controllers/educode_sales/sale_trends_controller.rb +119 -84
- data/app/controllers/educode_sales/sales_controller.rb +3 -0
- data/app/controllers/educode_sales/teachers_controller.rb +41 -14
- data/app/controllers/educode_sales/upload_files_controller.rb +3 -3
- data/app/models/educode_sales/teacher.rb +2 -1
- data/app/models/educode_sales/teacher_assign_follow.rb +6 -0
- data/app/views/educode_sales/activities/index.html.erb +4 -5
- data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
- data/app/views/educode_sales/businesses/_follows.html.erb +255 -0
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +69 -6
- data/app/views/educode_sales/businesses/file.html.erb +2 -4
- data/app/views/educode_sales/businesses/index.html.erb +161 -66
- data/app/views/educode_sales/businesses/index.json.jbuilder +2 -1
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +70 -6
- data/app/views/educode_sales/businesses/show_follow.html.erb +9 -9
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +8 -0
- data/app/views/educode_sales/businesses/time_line.html.erb +1 -1
- data/app/views/educode_sales/follow_ups/index.json.jbuilder +20 -0
- data/app/views/educode_sales/home/sales_place.json.jbuilder +9 -0
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +6 -0
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +2 -0
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +6 -0
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +2 -0
- data/app/views/educode_sales/places/index.html.erb +14 -4
- data/app/views/educode_sales/places/index.json.jbuilder +7 -1
- data/app/views/educode_sales/plans/_monthPlan.html.erb +5 -0
- data/app/views/educode_sales/plans/_monthly.html.erb +1 -0
- data/app/views/educode_sales/plans/_weekPlan.html.erb +5 -0
- data/app/views/educode_sales/plans/_weekly.html.erb +1 -0
- data/app/views/educode_sales/recycles/index.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +54 -5
- data/app/views/educode_sales/sales/index.html.erb +18 -3
- data/app/views/educode_sales/sales/index.json.jbuilder +27 -14
- data/app/views/educode_sales/sales/operations.html.erb +4 -1
- data/app/views/educode_sales/teachers/course_list.json.jbuilder +1 -1
- data/app/views/educode_sales/teachers/edit.html.erb +53 -7
- data/app/views/educode_sales/teachers/index.html.erb +42 -3
- data/app/views/educode_sales/teachers/index.json.jbuilder +4 -1
- data/app/views/educode_sales/teachers/new.html.erb +55 -17
- data/config/routes.rb +1 -0
- data/db/migrate/20211201023750_create_educode_sales_teacher_assign_follows.rb +11 -0
- data/db/migrate/20211206054756_add_year_to_follow_ups.rb +5 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +8 -2
@@ -17,6 +17,11 @@
|
|
17
17
|
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
|
18
18
|
<% end %>
|
19
19
|
</script>
|
20
|
+
<script type="text/html" id="business_a">
|
21
|
+
<div class="layui-text">
|
22
|
+
<a href="/missions/businesses?place_id={{d.id}}">{{d.businesses_count}}</a>
|
23
|
+
</div>
|
24
|
+
</script>
|
20
25
|
|
21
26
|
<script type="text/html" id="showchance">
|
22
27
|
<a href="/missions/businesses" class="layui-table-link">{{ d.chance }}</a>
|
@@ -56,20 +61,25 @@
|
|
56
61
|
{
|
57
62
|
field: 'businesses_count',
|
58
63
|
width: 120,
|
59
|
-
totalRow:
|
60
|
-
|
64
|
+
totalRow: true,
|
65
|
+
sort: true,
|
66
|
+
title: '商机',
|
67
|
+
templet: "#business_a",
|
68
|
+
|
61
69
|
},
|
62
70
|
{
|
63
71
|
field: 'amount',
|
64
72
|
width: 120,
|
65
73
|
totalRow:true,
|
66
|
-
|
74
|
+
sort: true,
|
75
|
+
title: '中标金额'
|
67
76
|
},
|
68
77
|
{
|
69
78
|
field: 'return_mount',
|
70
79
|
width: 120,
|
71
80
|
totalRow:true,
|
72
|
-
|
81
|
+
sort: true,
|
82
|
+
title: '回款金额',
|
73
83
|
},
|
74
84
|
{
|
75
85
|
title: '操作',
|
@@ -1,3 +1,4 @@
|
|
1
|
+
all_businesses_count = 0
|
1
2
|
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
2
3
|
json.data do
|
3
4
|
json.array! @places do |d|
|
@@ -13,11 +14,16 @@ json.data do
|
|
13
14
|
else
|
14
15
|
json.area_id ''
|
15
16
|
end
|
16
|
-
|
17
|
+
business_count = EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").count
|
18
|
+
json.businesses_count business_count
|
19
|
+
all_businesses_count += business_count
|
17
20
|
json.amount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id} AND educode_sales_follow_ups.stage_id IN (?)", @stage_ids).sum(:profit_amount).round(2)
|
18
21
|
json.return_mount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").sum(:return_money).round(2)
|
19
22
|
end
|
20
23
|
end
|
21
24
|
|
25
|
+
json.totalRow do
|
26
|
+
json.businesses_count all_businesses_count.to_s
|
27
|
+
end
|
22
28
|
json.code 0
|
23
29
|
json.count @places.total_count
|
@@ -77,6 +77,10 @@
|
|
77
77
|
url: '/missions/plans?clazz=month',
|
78
78
|
toolbar: '#monthPlanToolbar',
|
79
79
|
defaultToolbar: ['filter'],
|
80
|
+
initSort: {
|
81
|
+
field: 'updated_at' //排序字段,对应 cols 设定的各字段名
|
82
|
+
,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
|
83
|
+
},
|
80
84
|
totalRow:true,
|
81
85
|
cols: [
|
82
86
|
[
|
@@ -115,6 +119,7 @@
|
|
115
119
|
field: 'content',
|
116
120
|
width: 300,
|
117
121
|
title: '计划内容',
|
122
|
+
templet:'<div><span title="{{d.content}}">{{d.content}}</span></div>'
|
118
123
|
},
|
119
124
|
{
|
120
125
|
field: 'follow_ups_count',
|
@@ -78,6 +78,10 @@
|
|
78
78
|
toolbar: '#weekPlanToolbar',
|
79
79
|
totalRow:true,
|
80
80
|
defaultToolbar: ['filter'],
|
81
|
+
initSort: {
|
82
|
+
field: 'updated_at' //排序字段,对应 cols 设定的各字段名
|
83
|
+
,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
|
84
|
+
},
|
81
85
|
cols: [
|
82
86
|
[
|
83
87
|
{
|
@@ -120,6 +124,7 @@
|
|
120
124
|
field: 'content',
|
121
125
|
width: 300,
|
122
126
|
title: '计划内容',
|
127
|
+
templet:'<div><span title="{{d.content}}">{{d.content}}</span></div>'
|
123
128
|
},
|
124
129
|
{
|
125
130
|
field: 'follow_ups_count',
|
@@ -101,7 +101,7 @@
|
|
101
101
|
<div class="panel layui-bg-number">
|
102
102
|
<div class="panel-body">
|
103
103
|
<div class="panel-title">
|
104
|
-
<h5
|
104
|
+
<h5>已中标(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
105
105
|
</div>
|
106
106
|
<div class="panel-content y-t-10">
|
107
107
|
<h1 class="no-margins"><%= @goal_amount %>万</h1>
|
@@ -114,7 +114,7 @@
|
|
114
114
|
<div class="panel layui-bg-number">
|
115
115
|
<div class="panel-body">
|
116
116
|
<div class="panel-title">
|
117
|
-
<h5
|
117
|
+
<h5>已签单(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
118
118
|
</div>
|
119
119
|
<div class="panel-content y-t-10">
|
120
120
|
<h1 class="no-margins"><%= @service_amount %>万</h1>
|
@@ -148,6 +148,32 @@
|
|
148
148
|
</div>
|
149
149
|
</div>
|
150
150
|
</div>
|
151
|
+
<div class="layui-col-xs3">
|
152
|
+
<div class="panel layui-bg-number">
|
153
|
+
<div class="panel-body">
|
154
|
+
<div class="panel-title">
|
155
|
+
<h5>已中标(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
156
|
+
</div>
|
157
|
+
<div class="panel-content y-t-10">
|
158
|
+
<h1 class="no-margins"><%= @actual_goal_amount %>万</h1>
|
159
|
+
</div>
|
160
|
+
</div>
|
161
|
+
</div>
|
162
|
+
</div>
|
163
|
+
|
164
|
+
<div class="layui-col-xs3">
|
165
|
+
<div class="panel layui-bg-number">
|
166
|
+
<div class="panel-body">
|
167
|
+
<div class="panel-title">
|
168
|
+
<h5>已签单(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
169
|
+
</div>
|
170
|
+
<div class="panel-content y-t-10">
|
171
|
+
<h1 class="no-margins"><%= @actual_service_amount %>万</h1>
|
172
|
+
</div>
|
173
|
+
</div>
|
174
|
+
</div>
|
175
|
+
</div>
|
176
|
+
|
151
177
|
<div class="layui-row layui-col-space30" >
|
152
178
|
<div class="layui-col-xs3">
|
153
179
|
<div class="panel layui-bg-number">
|
@@ -181,7 +207,7 @@
|
|
181
207
|
<div class="layui-inline m-t-10">
|
182
208
|
<label class="layui-form-label">视图</label>
|
183
209
|
<div class="layui-input-inline">
|
184
|
-
<%= select_tag "follow_count_range", options_for_select([['按天','day'],['按月','month'],['按年','year']],params[:follow_count_range]), {'lay-filter': 'follow_count'}%>
|
210
|
+
<%= select_tag "follow_count_range", options_for_select([['按天','day'],['按周','week'],['按月','month'],['按年','year']],params[:follow_count_range] || 'week'), {'lay-filter': 'follow_count'}%>
|
185
211
|
</div>
|
186
212
|
</div>
|
187
213
|
<div class="layui-inline">
|
@@ -189,7 +215,8 @@
|
|
189
215
|
<div class="layui-input-inline">
|
190
216
|
<input type="text" class="layui-input month layui-hide" id="date_month" name="date_month" placeholder=" - " value="<%=params[:date_month] %>" >
|
191
217
|
<input type="text" class="layui-input year layui-hide" id="date_year" name="date_year" placeholder=" - " value="<%=params[:date_year] %>">
|
192
|
-
<input type="text" class="layui-input
|
218
|
+
<input type="text" class="layui-input week " id="date_week" name="date_week" placeholder=" - " value="<%=params[:date_week].present? ? params[:date_week] : (Time.now - 30.days).beginning_of_week.to_s(:date) + ' - ' + Time.now.end_of_week.to_s(:date) %>">
|
219
|
+
<input type="text" class="layui-input day layui-hide" id="date" name="date" placeholder=" - " value="<%=params[:date] %>">
|
193
220
|
</div>
|
194
221
|
</div>
|
195
222
|
<div class="layui-inline">
|
@@ -214,6 +241,12 @@
|
|
214
241
|
<div style="margin: 10px 10px 10px 10px">
|
215
242
|
<form class="layui-form layui-form-pane" lay-filter="search_form">
|
216
243
|
<div class="layui-form-item">
|
244
|
+
<div class="layui-inline m-t-10">
|
245
|
+
<label class="layui-form-label">维度</label>
|
246
|
+
<div class="layui-input-inline">
|
247
|
+
<%= select_tag "count_type", options_for_select([['按合同额统计','actual_amount'],['按总额统计','total_amount']],params[:count_type]), {'lay-filter': 'count_type'}%>
|
248
|
+
</div>
|
249
|
+
</div>
|
217
250
|
<div class="layui-inline m-t-10">
|
218
251
|
<label class="layui-form-label">视图</label>
|
219
252
|
<div class="layui-input-inline">
|
@@ -275,15 +308,23 @@
|
|
275
308
|
if(follow_type == "day"){
|
276
309
|
$(".year").addClass('layui-hide')
|
277
310
|
$(".month").addClass('layui-hide')
|
311
|
+
$(".week").addClass('layui-hide')
|
278
312
|
$(".day").removeClass('layui-hide')
|
279
313
|
}else if(follow_type == "month"){
|
280
314
|
$(".year").addClass('layui-hide')
|
315
|
+
$(".week").addClass('layui-hide')
|
281
316
|
$(".month").removeClass('layui-hide')
|
282
317
|
$(".day").addClass('layui-hide')
|
318
|
+
}else if(follow_type == "week"){
|
319
|
+
$(".year").addClass('layui-hide')
|
320
|
+
$(".day").addClass('layui-hide')
|
321
|
+
$(".week").removeClass('layui-hide')
|
322
|
+
$(".month").addClass('layui-hide')
|
283
323
|
}else {
|
284
324
|
$(".year").removeClass('layui-hide')
|
285
325
|
$(".month").addClass('layui-hide')
|
286
326
|
$(".day").addClass('layui-hide')
|
327
|
+
$(".week").addClass('layui-hide')
|
287
328
|
}
|
288
329
|
|
289
330
|
if(goal_type == "year"){
|
@@ -330,7 +371,6 @@
|
|
330
371
|
range: true
|
331
372
|
});
|
332
373
|
laydate.render({
|
333
|
-
type: 'week',
|
334
374
|
elem: '#date_week',
|
335
375
|
range: true
|
336
376
|
});
|
@@ -367,15 +407,24 @@
|
|
367
407
|
if(value == "month"){
|
368
408
|
$(".year").addClass('layui-hide')
|
369
409
|
$(".day").addClass('layui-hide')
|
410
|
+
$(".week").addClass('layui-hide')
|
370
411
|
$(".month").removeClass('layui-hide')
|
371
412
|
}else if(value == "year"){
|
372
413
|
$(".month").addClass('layui-hide')
|
373
414
|
$(".day").addClass('layui-hide')
|
415
|
+
$(".week").addClass('layui-hide')
|
374
416
|
$(".year").removeClass('layui-hide')
|
417
|
+
}else if(value == "week"){
|
418
|
+
$(".month").addClass('layui-hide')
|
419
|
+
$(".day").addClass('layui-hide')
|
420
|
+
$(".week").removeClass('layui-hide')
|
421
|
+
$(".year").addClass('layui-hide')
|
375
422
|
}else {
|
376
423
|
$(".month").addClass('layui-hide')
|
377
424
|
$(".year").addClass('layui-hide')
|
378
425
|
$(".day").removeClass('layui-hide')
|
426
|
+
$(".week").addClass('layui-hide')
|
427
|
+
|
379
428
|
}
|
380
429
|
})
|
381
430
|
|
@@ -1,5 +1,12 @@
|
|
1
1
|
<div class="section">
|
2
|
-
<
|
2
|
+
<form class="layui-form" action="">
|
3
|
+
<span>销售人员列表</span>
|
4
|
+
<div style="float:right;">年度
|
5
|
+
<div class="layui-input-inline">
|
6
|
+
<%= select_tag "years", options_for_select(@years,@year), {'lay-filter': 'year' } %>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
</form>
|
3
10
|
<hr>
|
4
11
|
<table class="layui-hide" id="table" lay-filter="table" ></table>
|
5
12
|
</div>
|
@@ -40,11 +47,18 @@
|
|
40
47
|
</script>
|
41
48
|
<script>
|
42
49
|
layui.use('table', function () {
|
43
|
-
|
50
|
+
var form = layui.form,
|
51
|
+
table = layui.table;
|
52
|
+
|
53
|
+
form.on('select(year)', function(data){
|
54
|
+
console.log(data, )
|
55
|
+
year = data.value
|
56
|
+
window.location.href = "/missions/sales?year=" + data.value
|
57
|
+
})
|
44
58
|
|
45
59
|
table.render({
|
46
60
|
elem: '#table',
|
47
|
-
url: '/missions/sales',
|
61
|
+
url: '/missions/sales?year=<%= @year %>',
|
48
62
|
cellMinWidth: 80,
|
49
63
|
totalRow:true,
|
50
64
|
cols: [
|
@@ -60,6 +74,7 @@
|
|
60
74
|
}, {
|
61
75
|
field: 'area',
|
62
76
|
title: '负责区域',
|
77
|
+
templet:'<div><span title="{{d.area}}">{{d.area}}</span></div>'
|
63
78
|
}, {
|
64
79
|
field: 'business_a',
|
65
80
|
title: 'A类商机',
|
@@ -26,32 +26,45 @@ json.data do
|
|
26
26
|
else
|
27
27
|
json.area ''
|
28
28
|
end
|
29
|
-
|
30
|
-
|
29
|
+
if @year == "全部"
|
30
|
+
business_a = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @a_clazz&.id).count
|
31
|
+
business_b = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @b_clazz&.id).count
|
32
|
+
business_c = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @c_clazz&.id).count
|
33
|
+
business_d = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @d_clazz&.id).count
|
34
|
+
business_e = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @e_clazz&.id).count
|
35
|
+
business_o = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @o_clazz&.id).count
|
36
|
+
json.goal @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.stage_id in (?)", @x, @step_ids).sum(:total_amount).round(2)
|
37
|
+
json.return_money @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ?", @x).sum("educode_sales_businesses.return_money").round(2)
|
38
|
+
else
|
39
|
+
business_a = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @a_clazz&.id).where("educode_sales_follow_ups.year = ?", @year).count
|
40
|
+
business_b = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @b_clazz&.id).where("educode_sales_follow_ups.year = ?", @year).count
|
41
|
+
business_c = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @c_clazz&.id).where("educode_sales_follow_ups.year = ?", @year).count
|
42
|
+
business_d = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @d_clazz&.id).where("educode_sales_follow_ups.year = ?", @year).count
|
43
|
+
business_e = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @e_clazz&.id).where("educode_sales_follow_ups.year = ?", @year).count
|
44
|
+
business_o = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @o_clazz&.id).where("educode_sales_follow_ups.year = ?", @year).count
|
45
|
+
json.goal @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.stage_id in (?)", @x, @step_ids).where("educode_sales_follow_ups.year = ?", @year).sum(:total_amount).round(2)
|
46
|
+
json.return_money @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.year = ?", @year).sum("educode_sales_businesses.return_money").round(2)
|
47
|
+
end
|
48
|
+
|
31
49
|
json.business_a business_a
|
32
|
-
business_b = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @b_clazz&.id).count
|
33
|
-
businesses_b_count += business_b
|
34
50
|
json.business_b business_b
|
35
|
-
business_c = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @c_clazz&.id).count
|
36
|
-
businesses_c_count += business_c
|
37
51
|
json.business_c business_c
|
38
|
-
business_d = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @d_clazz&.id).count
|
39
|
-
businesses_d_count += business_d
|
40
52
|
json.business_d business_b
|
41
|
-
business_e = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @e_clazz&.id).count
|
42
|
-
businesses_e_count += business_e
|
43
53
|
json.business_e business_b
|
44
|
-
business_o = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @o_clazz&.id).count
|
45
|
-
businesses_o_count += business_o
|
46
54
|
json.business_o business_o
|
47
|
-
|
48
|
-
json.return_money @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ?", @x).sum("educode_sales_businesses.return_money").round(2)
|
55
|
+
|
49
56
|
json.a_clazz_id @a_clazz&.id
|
50
57
|
json.b_clazz_id @b_clazz&.id
|
51
58
|
json.c_clazz_id @c_clazz&.id
|
52
59
|
json.d_clazz_id @d_clazz&.id
|
53
60
|
json.e_clazz_id @e_clazz&.id
|
54
61
|
json.o_clazz_id @o_clazz&.id
|
62
|
+
businesses_a_count += business_a
|
63
|
+
businesses_b_count += business_b
|
64
|
+
businesses_c_count += business_c
|
65
|
+
businesses_d_count += business_d
|
66
|
+
businesses_e_count += business_e
|
67
|
+
businesses_o_count += business_o
|
55
68
|
end
|
56
69
|
end
|
57
70
|
|
@@ -46,18 +46,21 @@
|
|
46
46
|
}, {
|
47
47
|
field: 'area',
|
48
48
|
title: '负责区域',
|
49
|
+
templet:'<div><span title="{{d.area}}">{{d.area}}</span></div>'
|
49
50
|
}, {
|
50
51
|
field: 'schools',
|
51
52
|
title: '跟进学校',
|
52
53
|
templet: "#school",
|
53
54
|
totalRow:true,
|
55
|
+
sort: true,
|
54
56
|
width: 120
|
55
57
|
}, {
|
56
58
|
field: 'departments',
|
57
59
|
title: '跟进二级学院',
|
58
60
|
templet: "#xschool",
|
59
61
|
totalRow:true,
|
60
|
-
|
62
|
+
sort: true,
|
63
|
+
width: 170
|
61
64
|
},
|
62
65
|
]
|
63
66
|
],
|
@@ -9,36 +9,48 @@
|
|
9
9
|
</div>
|
10
10
|
</div>
|
11
11
|
<div class="layui-inline">
|
12
|
-
<label class="layui-form-label
|
12
|
+
<label class="layui-form-label ">职称</label>
|
13
13
|
<div class="layui-input-block">
|
14
14
|
<%= select_tag "professional_title", options_for_select(['教授', '研究员', '副教授', '副研究员', '讲师', '助理研究员', '助理教授'], @teacher.professional_title), { include_blank: true } %>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
<br>
|
18
18
|
<div class="layui-inline">
|
19
|
-
<label class="layui-form-label
|
19
|
+
<label class="layui-form-label ">职务</label>
|
20
20
|
<div class="layui-input-block">
|
21
|
-
<input type="text" name="job" autocomplete="off"
|
21
|
+
<input type="text" name="job" autocomplete="off"
|
22
22
|
class="layui-input" placeholder="请输入" value="<%= @teacher.job %>">
|
23
23
|
</div>
|
24
24
|
</div>
|
25
25
|
<div class="layui-inline">
|
26
|
-
<label class="layui-form-label
|
26
|
+
<label class="layui-form-label ">来源</label>
|
27
27
|
<div class="layui-input-block">
|
28
28
|
<%= select_tag "source_id", options_for_select(EducodeSales::Common.where(clazz: 'teacher_source').pluck(:name, :id), @teacher.source_id), { include_blank: true } %>
|
29
29
|
</div>
|
30
30
|
</div>
|
31
31
|
<br>
|
32
|
+
<div class="layui-inline">
|
33
|
+
<label class="layui-form-label ">微信号</label>
|
34
|
+
<div class="layui-input-block">
|
35
|
+
<input type="text" name="wechat" autocomplete="off"
|
36
|
+
class="layui-input" placeholder="请输入" value="<%= @teacher.wechat %>">
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<br>
|
32
40
|
<div class="layui-inline">
|
33
41
|
<label class="layui-form-label required">单位部门</label>
|
34
42
|
<div class="layui-input-block" id="add_department2" style="width: 400px"></div>
|
35
|
-
<!-- <input type="text" name="edit_school" autocomplete="off" lay-verify="required"-->
|
36
|
-
<!-- class="layui-input" placeholder="请输入" value="<%#= Department.find_by(id: @teacher.department_id).name %>-<%#= School.find_by(id: Department.find_by(id: @teacher.department_id).school_id).name %>">-->
|
37
43
|
</div>
|
38
44
|
<br>
|
45
|
+
<div class="layui-form-item">
|
46
|
+
<label class="layui-form-label">教研助理</label>
|
47
|
+
<div class="layui-input-inline">
|
48
|
+
<div id="edit_teacher_assist" style="width: 400px;"></div>
|
49
|
+
</div>
|
50
|
+
</div>
|
39
51
|
<div class="layui-inline">
|
40
52
|
<label class="layui-form-label">平台账号</label>
|
41
|
-
<div class="layui-input-block" id="user_search" style="width:
|
53
|
+
<div class="layui-input-block" id="user_search" style="width: 400px;"></div>
|
42
54
|
</div>
|
43
55
|
<div class="layui-form-item m-t-20">
|
44
56
|
<div class="layui-input-block">
|
@@ -60,6 +72,35 @@
|
|
60
72
|
|
61
73
|
form.render();
|
62
74
|
|
75
|
+
var edit_teacher_assist_list = xmSelect.render({
|
76
|
+
el: '#edit_teacher_assist',
|
77
|
+
remoteSearch: true,
|
78
|
+
clickClose: true,
|
79
|
+
delay: 1000,
|
80
|
+
paging: true,
|
81
|
+
pageRemote: true,
|
82
|
+
filterable: true,
|
83
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
84
|
+
$.ajax( '/missions/sales_staff?teacher_assist=true', {
|
85
|
+
method: 'get',
|
86
|
+
data: {
|
87
|
+
q: val,
|
88
|
+
page: pageIndex
|
89
|
+
},
|
90
|
+
dataType: 'json',
|
91
|
+
success: function (res) {
|
92
|
+
var data = res.data;
|
93
|
+
if (res.code == 0) {
|
94
|
+
cb(res.data, res.count);
|
95
|
+
} else {
|
96
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
97
|
+
}
|
98
|
+
}
|
99
|
+
})
|
100
|
+
}
|
101
|
+
})
|
102
|
+
edit_teacher_assist_list.setValue(gon.teacher_assist)
|
103
|
+
|
63
104
|
var add_department = selectInput.render({
|
64
105
|
elem: '#add_department2',
|
65
106
|
name: 'department', // 渲染的input的name值
|
@@ -125,6 +166,11 @@
|
|
125
166
|
if (department_id == '') {
|
126
167
|
return layer.alert("请选择单位部门")
|
127
168
|
}
|
169
|
+
var assign_follow = [];
|
170
|
+
edit_teacher_assist_list.getValue().forEach(function(d) {
|
171
|
+
assign_follow.push(d.value);
|
172
|
+
})
|
173
|
+
data.field.teacher_assist = assign_follow;
|
128
174
|
data.field.department_id = department_id;
|
129
175
|
data.field.user_id = user_id;
|
130
176
|
request.authPut("missions/teachers/"+ parent.id, data.field, function (res) {
|
@@ -38,6 +38,12 @@
|
|
38
38
|
<input type="text" class="layui-input" id="time" placeholder="请选择时间" autocomplete="off" name="regist_at">
|
39
39
|
</div>
|
40
40
|
</div>
|
41
|
+
<div class="layui-inline">
|
42
|
+
<label class="layui-form-label">注册状态</label>
|
43
|
+
<div class="layui-input-inline">
|
44
|
+
<%= select_tag "status", options_for_select([["已注册","1"],["未注册","0"]]), { include_blank: true } %>
|
45
|
+
</div>
|
46
|
+
</div>
|
41
47
|
<div class="layui-inline">
|
42
48
|
<label class="layui-form-label">区域</label>
|
43
49
|
<div class="layui-input-inline">
|
@@ -50,6 +56,12 @@
|
|
50
56
|
<input type="text" class="layui-input" id="date" name="date" autocomplete="off" placeholder=" - ">
|
51
57
|
</div>
|
52
58
|
</div>
|
59
|
+
<div class="layui-inline">
|
60
|
+
<label class="layui-form-label">教研助理</label>
|
61
|
+
<div class="layui-input-inline">
|
62
|
+
<%= select_tag "assist", options_for_select(@staffs, params[:assist]), { 'lay-filter': 'assist', include_blank: true } %>
|
63
|
+
</div>
|
64
|
+
</div>
|
53
65
|
|
54
66
|
<div class="layui-inline">
|
55
67
|
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
@@ -66,7 +78,7 @@
|
|
66
78
|
<span class="table-label">教师列表</span>
|
67
79
|
<% if can? :create, EducodeSales::Teacher %>
|
68
80
|
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="import">导入数据</button>
|
69
|
-
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"
|
81
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加老师</button>
|
70
82
|
<% end %>
|
71
83
|
<!-- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="search_new"> 搜索添加 -->
|
72
84
|
</button>
|
@@ -86,7 +98,7 @@
|
|
86
98
|
<%# if can? :destroy, EducodeSales::Teacher %>
|
87
99
|
<!-- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>-->
|
88
100
|
<%# end %>
|
89
|
-
<% if can? :
|
101
|
+
<% if can? :create, EducodeSales::TeacherFollow %>
|
90
102
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
91
103
|
<% end %>
|
92
104
|
<% if @more %>
|
@@ -148,6 +160,7 @@
|
|
148
160
|
width: 60,
|
149
161
|
title:'序号',type: 'numbers',
|
150
162
|
totalRowText:'合计',
|
163
|
+
|
151
164
|
},
|
152
165
|
{
|
153
166
|
field: 'name',
|
@@ -159,11 +172,15 @@
|
|
159
172
|
field: 'school',
|
160
173
|
width: 160,
|
161
174
|
title: '单位',
|
175
|
+
templet:'<div><span title="{{d.school}}">{{d.school}}</span></div>'
|
176
|
+
|
162
177
|
},
|
163
178
|
{
|
164
179
|
field: 'department',
|
165
180
|
width: 130,
|
166
|
-
title: '部门'
|
181
|
+
title: '部门',
|
182
|
+
templet:'<div><span title="{{d.department}}">{{d.department}}</span></div>'
|
183
|
+
|
167
184
|
},
|
168
185
|
{
|
169
186
|
field: 'professional_title',
|
@@ -230,6 +247,26 @@
|
|
230
247
|
width: 120,
|
231
248
|
title: '注册时间',
|
232
249
|
},
|
250
|
+
{
|
251
|
+
field: 'last_login_on',
|
252
|
+
width: 120,
|
253
|
+
title: '最近登录',
|
254
|
+
},
|
255
|
+
{
|
256
|
+
field: 'created_at',
|
257
|
+
width: 120,
|
258
|
+
title: '添加时间',
|
259
|
+
},
|
260
|
+
{
|
261
|
+
field: 'wechat',
|
262
|
+
width: 120,
|
263
|
+
title: '微信号',
|
264
|
+
},
|
265
|
+
{
|
266
|
+
field: 'teacher_assist',
|
267
|
+
width: 120,
|
268
|
+
title: '教研助理',
|
269
|
+
},
|
233
270
|
{
|
234
271
|
title: '操作',
|
235
272
|
minWidth: 170,
|
@@ -372,7 +409,9 @@
|
|
372
409
|
name: "",
|
373
410
|
professional_title: "",
|
374
411
|
regist_at: "",
|
412
|
+
status: "",
|
375
413
|
school: "",
|
414
|
+
assist: "",
|
376
415
|
teacher_source: ""
|
377
416
|
})
|
378
417
|
return false;
|
@@ -19,8 +19,11 @@ json.data do
|
|
19
19
|
json.actives d.actives
|
20
20
|
json.students d.students_count
|
21
21
|
json.regist_at d.user.present? ? d.user.created_on.to_s(:date) : ''
|
22
|
+
json.last_login_on (d.user.present? && d.user.last_login_on.present?) ? d.user.last_login_on.to_s(:date) : ''
|
22
23
|
json.teacher_used d.teacher_used
|
23
|
-
|
24
|
+
json.wechat d.wechat
|
25
|
+
json.created_at d.created_at.to_s(:date)
|
26
|
+
json.teacher_assist d.teacher_assign_follows.map{|t| t.staff.user.real_name}.join(',')
|
24
27
|
teacher_follows_count += d.teacher_follows_count
|
25
28
|
courses_counts += d.courses_count
|
26
29
|
end
|