educode_sales 0.1.2 → 0.1.7
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/assets/stylesheets/educode_sales/app.css +3 -1
- data/app/controllers/educode_sales/activities_controller.rb +1 -1
- data/app/controllers/educode_sales/businesses_controller.rb +14 -9
- data/app/controllers/educode_sales/commons_controller.rb +1 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +6 -2
- data/app/controllers/educode_sales/operation_plans_controller.rb +11 -11
- data/app/controllers/educode_sales/operation_reports_controller.rb +2 -2
- data/app/controllers/educode_sales/places_controller.rb +3 -5
- data/app/controllers/educode_sales/plans_controller.rb +7 -7
- data/app/controllers/educode_sales/roles_controller.rb +12 -1
- data/app/controllers/educode_sales/sale_reports_controller.rb +2 -2
- data/app/controllers/educode_sales/sales_controller.rb +2 -2
- data/app/controllers/educode_sales/sessions_controller.rb +1 -0
- data/app/controllers/educode_sales/staffs_controller.rb +3 -3
- data/app/controllers/educode_sales/teacher_follows_controller.rb +2 -2
- data/app/controllers/educode_sales/teachers_controller.rb +5 -5
- data/app/models/educode_sales/common.rb +4 -0
- data/app/models/educode_sales/follow_up.rb +1 -1
- data/app/models/educode_sales/money_plan.rb +3 -3
- data/app/models/educode_sales/operation_plan.rb +2 -0
- data/app/models/educode_sales/place.rb +1 -0
- data/app/models/educode_sales/sale_plan.rb +2 -0
- data/app/models/educode_sales/teacher.rb +11 -2
- data/app/views/educode_sales/activities/index.html.erb +1 -9
- data/app/views/educode_sales/activities/index.json.jbuilder +1 -1
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +3 -2
- data/app/views/educode_sales/businesses/edit_plan.html.erb +9 -5
- data/app/views/educode_sales/businesses/index.html.erb +1 -1
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/show_follow.html.erb +1 -0
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -1
- data/app/views/educode_sales/businesses/unfinish_plans.json.jbuilder +1 -1
- data/app/views/educode_sales/commons/index.json.jbuilder +1 -1
- data/app/views/educode_sales/follow_ups/money_plans.json.jbuilder +1 -1
- data/app/views/educode_sales/follow_ups/teachers.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +5 -4
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +4 -4
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +9 -4
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +4 -5
- data/app/views/educode_sales/operation_plans/edit_month.html.erb +3 -1
- data/app/views/educode_sales/operation_plans/index.html.erb +35 -5
- data/app/views/educode_sales/operation_plans/index.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_plans/my_month.json.jbuilder +2 -2
- data/app/views/educode_sales/operation_plans/my_week.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_plans/new_month.html.erb +3 -1
- data/app/views/educode_sales/operation_plans/new_monthly.html.erb +136 -30
- data/app/views/educode_sales/operation_plans/new_week.html.erb +4 -3
- data/app/views/educode_sales/operation_plans/new_weekly.html.erb +173 -81
- data/app/views/educode_sales/operation_reports/audit.html.erb +1 -1
- data/app/views/educode_sales/operation_reports/edit.html.erb +1 -1
- data/app/views/educode_sales/operation_reports/index.json.jbuilder +2 -1
- data/app/views/educode_sales/operation_reports/plans.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_reports/show.html.erb +1 -1
- data/app/views/educode_sales/places/index.json.jbuilder +2 -2
- data/app/views/educode_sales/plans/_monthPlan.html.erb +10 -7
- data/app/views/educode_sales/plans/_monthly.html.erb +2 -2
- data/app/views/educode_sales/plans/_weekPlan.html.erb +7 -2
- data/app/views/educode_sales/plans/_weekly.html.erb +2 -2
- data/app/views/educode_sales/plans/edit_week.html.erb +1 -1
- data/app/views/educode_sales/plans/index.json.jbuilder +1 -1
- data/app/views/educode_sales/plans/my_month.json.jbuilder +2 -2
- data/app/views/educode_sales/plans/my_week.json.jbuilder +1 -1
- data/app/views/educode_sales/plans/new_monthly.html.erb +1 -1
- data/app/views/educode_sales/plans/new_week.html.erb +3 -1
- data/app/views/educode_sales/plans/new_weekly.html.erb +2 -1
- data/app/views/educode_sales/roles/index.html.erb +33 -2
- data/app/views/educode_sales/roles/index.json.jbuilder +1 -1
- data/app/views/educode_sales/sale_reports/audit.html.erb +1 -1
- data/app/views/educode_sales/sale_reports/edit.html.erb +1 -1
- data/app/views/educode_sales/sale_reports/index.json.jbuilder +2 -2
- data/app/views/educode_sales/sale_reports/plans.json.jbuilder +1 -1
- data/app/views/educode_sales/sale_reports/show.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +1 -1
- data/app/views/educode_sales/sales/index.json.jbuilder +1 -1
- data/app/views/educode_sales/sales/operations.json.jbuilder +1 -1
- data/app/views/educode_sales/staffs/edit.html.erb +1 -1
- data/app/views/educode_sales/staffs/follow_up_departments.json.jbuilder +1 -1
- data/app/views/educode_sales/staffs/index.json.jbuilder +1 -1
- data/app/views/educode_sales/teachers/edit.html.erb +1 -1
- data/app/views/educode_sales/teachers/index.html.erb +3 -3
- data/app/views/educode_sales/teachers/index.json.jbuilder +3 -2
- data/app/views/educode_sales/teachers/new_follow_record.html.erb +2 -0
- data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -1
- data/app/views/educode_sales/teachers/unfinish_plans.json.jbuilder +1 -1
- data/config/routes.rb +1 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +2 -2
@@ -73,7 +73,7 @@ module EducodeSales
|
|
73
73
|
@teachers = @teachers.where("created_at > ? AND created_at < ?", date[0], date[1])
|
74
74
|
end
|
75
75
|
|
76
|
-
@teachers = @teachers.page(params[:page]).per(params[:
|
76
|
+
@teachers = @teachers.order("created_at desc").page(params[:page]).per(params[:limit])
|
77
77
|
|
78
78
|
end
|
79
79
|
end
|
@@ -144,7 +144,7 @@ module EducodeSales
|
|
144
144
|
|
145
145
|
def unfinish_plans
|
146
146
|
load_teacher
|
147
|
-
@plans = @teacher.operation_plans.where.not(finish_rate: 100).page(params[:page]).per(params[:
|
147
|
+
@plans = @teacher.operation_plans.where.not(finish_rate: 100).page(params[:page]).per(params[:limit])
|
148
148
|
end
|
149
149
|
|
150
150
|
def course_subject
|
@@ -206,7 +206,7 @@ module EducodeSales
|
|
206
206
|
else
|
207
207
|
@follow_ups = @follow_ups.order("created_at desc")
|
208
208
|
end
|
209
|
-
@follow_ups = @follow_ups.page(params[:page]).per(params[:
|
209
|
+
@follow_ups = @follow_ups.page(params[:page]).per(params[:limit])
|
210
210
|
end
|
211
211
|
end
|
212
212
|
end
|
@@ -244,7 +244,7 @@ module EducodeSales
|
|
244
244
|
def course_list
|
245
245
|
user = User.find_by(id: params[:user_id])
|
246
246
|
if user
|
247
|
-
@courses = Course.joins(:course_members).where(course_members: {user_id: user.id}).page(params[:page]).per(params[:
|
247
|
+
@courses = Course.joins(:course_members).where(course_members: {user_id: user.id}).page(params[:page]).per(params[:limit])
|
248
248
|
else
|
249
249
|
@courses = Course.none
|
250
250
|
end
|
@@ -253,7 +253,7 @@ module EducodeSales
|
|
253
253
|
|
254
254
|
def activities
|
255
255
|
teacher = Teacher.find(params[:id])
|
256
|
-
@activities = teacher.activities.page(params[:page]).per(params[:
|
256
|
+
@activities = teacher.activities.page(params[:page]).per(params[:limit])
|
257
257
|
end
|
258
258
|
|
259
259
|
private
|
@@ -2,7 +2,7 @@ module EducodeSales
|
|
2
2
|
class FollowUp < ApplicationRecord
|
3
3
|
belongs_to :business, counter_cache: true
|
4
4
|
belongs_to :place, optional: true
|
5
|
-
has_many :money_plans
|
5
|
+
has_many :money_plans, dependent: :destroy
|
6
6
|
has_many :key_person
|
7
7
|
has_many :teachers, through: :key_person
|
8
8
|
belongs_to :staff
|
@@ -12,10 +12,10 @@ module EducodeSales
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def update_return_money
|
15
|
-
if
|
15
|
+
if follow_up.business.last_follow_up_id == self.follow_up_id
|
16
|
+
follow_up.business.update(return_money: MoneyPlan.where(clazz: '已完成', follow_up_id: self.follow_up_id).sum(:amount))
|
17
|
+
else
|
16
18
|
follow_up.update(return_money: follow_up.money_plans.where(clazz: '已完成').sum(:amount))
|
17
|
-
all_follow_ups_ids = follow_up.business.follow_ups.pluck(:id)
|
18
|
-
follow_up.business.update(return_money: EducodeSales::MoneyPlan.where(clazz: '已完成', follow_up_id: all_follow_ups_ids).sum(:amount))
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -18,11 +18,20 @@ module EducodeSales
|
|
18
18
|
user_ids = User.joins(:user_extension).where(user_extensions: {department_id: self.department_id, identity: 0}).pluck(:id)
|
19
19
|
course_ids = CourseMember.where(role: "CREATOR", user_id: user_ids).pluck(:course_id)
|
20
20
|
if course_ids.present?
|
21
|
+
course_members = CourseMember.joins(course: :practice_homework_shixuns).where(course_id: course_ids).group("course_id").having("COUNT(homework_commons_shixuns.id) > 100 AND COUNT(course_members.user_id) > 30").select("COUNT(*) AS count")
|
22
|
+
course_members.present? ? course_members[0]['count'] : 0
|
21
23
|
else
|
22
24
|
0
|
23
25
|
end
|
24
|
-
|
25
|
-
|
26
|
+
else
|
27
|
+
0
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def students_count
|
32
|
+
if user_id.present?
|
33
|
+
course_ids = CourseMember.where.not(role: "STUDENT").where(user_id: user_id).pluck(:course_id)
|
34
|
+
CourseMember.where(course_id: course_ids, role: "STUDENT").count
|
26
35
|
else
|
27
36
|
0
|
28
37
|
end
|
@@ -60,7 +60,7 @@
|
|
60
60
|
{
|
61
61
|
field: 'days',
|
62
62
|
title: '天数',
|
63
|
-
width:
|
63
|
+
width: 100
|
64
64
|
},
|
65
65
|
{
|
66
66
|
field: 'teachers_count',
|
@@ -68,14 +68,6 @@
|
|
68
68
|
width: 100,
|
69
69
|
templet: '#teachers_count'
|
70
70
|
},
|
71
|
-
// {
|
72
|
-
// field: 'return_rate',
|
73
|
-
// title: '回访率',
|
74
|
-
// },
|
75
|
-
// {
|
76
|
-
// field: 'course_rate',
|
77
|
-
// title: '建课率',
|
78
|
-
// },
|
79
71
|
{
|
80
72
|
field: 'students_count',
|
81
73
|
title: '学生数',
|
@@ -17,7 +17,7 @@
|
|
17
17
|
<div class="layui-inline">
|
18
18
|
<label class="layui-form-label required">项目类型</label>
|
19
19
|
<div class="layui-input-inline">
|
20
|
-
<%= select_tag "clazz_id", options_for_select(@clazz, @follow_up.
|
20
|
+
<%= select_tag "clazz_id", options_for_select(@clazz, @follow_up.clazz_id), class: 'required' %>
|
21
21
|
</div>
|
22
22
|
</div>
|
23
23
|
<div class="layui-inline">
|
@@ -51,7 +51,7 @@
|
|
51
51
|
<div class="layui-inline">
|
52
52
|
<label class="layui-form-label">实额</label>
|
53
53
|
<div class="layui-input-inline">
|
54
|
-
<input name="actual_amount" type="number" class="layui-input" value="<%= @follow_up.
|
54
|
+
<input name="actual_amount" type="number" class="layui-input" value="<%= @follow_up.actual_amount %>">
|
55
55
|
</div>
|
56
56
|
</div>
|
57
57
|
<br>
|
@@ -66,6 +66,7 @@
|
|
66
66
|
<div class="layui-input-inline">
|
67
67
|
<input name="divide_rate" class="layui-input" value="<%= @follow_up.divide_rate%>">
|
68
68
|
</div>
|
69
|
+
<span style="margin-top: 10px; float:left;">%</span>
|
69
70
|
</div>
|
70
71
|
<div class="layui-form-item layui-form-text">
|
71
72
|
<label class="layui-form-label required">自我小结</label>
|
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
<script type="text/html" id="return_money_select">
|
41
41
|
<div class="layui-input-block table-select">
|
42
|
-
<select name="
|
42
|
+
<select name="clazz" lay-filter="return_money_select">
|
43
43
|
{{# layui.each(['未完成', '已完成'], function(i, data) { }}
|
44
44
|
{{# if (data == d.clazz) { }}
|
45
45
|
<option value="{{data}}" selected="{{d.clazz}}">{{data}}</option>
|
@@ -81,9 +81,10 @@
|
|
81
81
|
if (res.success == false) {
|
82
82
|
layer.alert(res.msg)
|
83
83
|
} else {
|
84
|
-
layer.close(parent.plan_index);
|
84
|
+
// layer.close(parent.plan_index);
|
85
85
|
parent.table.reload('sale_plan_follow_table');
|
86
86
|
parent.table.reload('businesses_table');
|
87
|
+
table.reload('return_money_list');
|
87
88
|
}
|
88
89
|
})
|
89
90
|
return false;
|
@@ -146,7 +147,7 @@
|
|
146
147
|
|
147
148
|
table.on('tool(return_money_list)', function (obj) {
|
148
149
|
var data = obj.data;
|
149
|
-
data.clazz = clazz;
|
150
|
+
data.clazz = clazz ? clazz : obj.data.clazz;
|
150
151
|
data.plan_id = obj.data.id
|
151
152
|
if (obj.event === 'edit') {
|
152
153
|
request.authPut('educode_sales/follow_ups/' + parent.follow_up_id + "/update_money", data,
|
@@ -154,16 +155,19 @@
|
|
154
155
|
if (res.success) {
|
155
156
|
layer.alert('保存成功');
|
156
157
|
table.reload('return_money_list');
|
158
|
+
table.reload("sale_plan_follow_table");
|
159
|
+
table.reload("businesses_table");
|
157
160
|
} else {
|
158
161
|
layer.alert(res.msg);
|
159
162
|
}
|
160
|
-
|
161
163
|
})
|
162
164
|
} else if (obj.event == 'delete') {
|
163
165
|
layer.confirm('确定删除回款金额为' + data.amount + "的计划", function (index) {
|
164
166
|
request.delete('educode_sales/follow_ups/' + parent.follow_up_id + "/delete_money?plan_id=" + data.id, {}, function (res) {
|
165
167
|
layer.close(index);
|
166
|
-
table.reload("return_money_list")
|
168
|
+
table.reload("return_money_list");
|
169
|
+
table.reload("sale_plan_follow_table");
|
170
|
+
table.reload("businesses_table");
|
167
171
|
})
|
168
172
|
});
|
169
173
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
</div>
|
8
8
|
</script>
|
9
9
|
<!--搜索-->
|
10
|
+
<div class="layuimini-main min-height-table" id="o_month_table_wraper">
|
10
11
|
<form class="layui-form layui-form-pane" lay-filter="month_plan_form_filter">
|
11
12
|
<div class="layui-form-item">
|
12
13
|
<div class="layui-inline">
|
@@ -36,7 +37,7 @@
|
|
36
37
|
</div>
|
37
38
|
</form>
|
38
39
|
<table class="layui-hide" id="monthPlanTable" lay-filter="currentTableFilter3"></table>
|
39
|
-
|
40
|
+
</div>
|
40
41
|
<script type="text/html" id="currentTableBar">
|
41
42
|
<% if can? :read, EducodeSales::OperationPlan %>
|
42
43
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="show">查看</a>
|
@@ -181,7 +182,7 @@
|
|
181
182
|
console.log("a");
|
182
183
|
var content = miniPage.getHrefContent('/educode_sales/operation_plans/new_month');
|
183
184
|
var openWH = miniPage.getOpenWidthHeight();
|
184
|
-
|
185
|
+
monthPlanIndex = layer.open({
|
185
186
|
title: '添加计划',
|
186
187
|
type: 1,
|
187
188
|
shade: 0.2,
|
@@ -236,7 +237,7 @@
|
|
236
237
|
} else if (obj.event === 'edit') {
|
237
238
|
content = miniPage.getHrefContent('/educode_sales/operation_plans/edit_month?id='+data.id);
|
238
239
|
openWH = miniPage.getOpenWidthHeight();
|
239
|
-
|
240
|
+
indexOfmonthPlan = layer.open({
|
240
241
|
title: '编辑',
|
241
242
|
type: 1,
|
242
243
|
shade: 0.2,
|
@@ -258,7 +259,7 @@
|
|
258
259
|
content = miniPage.getHrefContent('/educode_sales/teachers/show_follow?id=' + data.teacher_id);
|
259
260
|
openWH = miniPage.getOpenWidthHeight();
|
260
261
|
index = layer.open({
|
261
|
-
title: '
|
262
|
+
title: data.teacher_name + '/跟进记录',
|
262
263
|
type: 1,
|
263
264
|
shade: 0.2,
|
264
265
|
maxmin: true,
|
@@ -7,7 +7,7 @@
|
|
7
7
|
</div>
|
8
8
|
</script>
|
9
9
|
<!--搜索-->
|
10
|
-
<div class="layuimini-main
|
10
|
+
<div class="layuimini-main min-height-table" id="o_monthly_table_wraper">
|
11
11
|
|
12
12
|
<form class="layui-form layui-form-pane" lay-filter="monthly_form_filter">
|
13
13
|
<div class="layui-form-item">
|
@@ -139,7 +139,7 @@
|
|
139
139
|
}
|
140
140
|
]
|
141
141
|
], done: function (res) {
|
142
|
-
$("#
|
142
|
+
$("#o_monthly_table_wraper .star1").each(function (i) {
|
143
143
|
rate.render({
|
144
144
|
elem: this,
|
145
145
|
value: res.data[i].level1_score,
|
@@ -147,7 +147,7 @@
|
|
147
147
|
readonly: true
|
148
148
|
});
|
149
149
|
})
|
150
|
-
$("#
|
150
|
+
$("#o_monthly_table_wraper .star2").each(function (i) {
|
151
151
|
rate.render({
|
152
152
|
elem: this,
|
153
153
|
value: res.data[i].level2_score,
|
@@ -155,7 +155,7 @@
|
|
155
155
|
readonly: true
|
156
156
|
});
|
157
157
|
})
|
158
|
-
$("#
|
158
|
+
$("#o_monthly_table_wraper .star3").each(function (i) {
|
159
159
|
rate.render({
|
160
160
|
elem: this,
|
161
161
|
value: res.data[i].level3_score,
|
@@ -7,8 +7,8 @@
|
|
7
7
|
</div>
|
8
8
|
</script>
|
9
9
|
<!--搜索-->
|
10
|
-
<div class="layuimini-main
|
11
|
-
<div class="layui-form layui-form-pane
|
10
|
+
<div class="layuimini-main min-height-table" id="o_week_table_wraper">
|
11
|
+
<div class="layui-form layui-form-pane" lay-filter="week_plan_form_filter">
|
12
12
|
<div class="layui-form-item">
|
13
13
|
<div class="layui-inline">
|
14
14
|
<label class="layui-form-label">人员</label>
|
@@ -106,6 +106,11 @@
|
|
106
106
|
width: 190,
|
107
107
|
title: '部门'
|
108
108
|
},
|
109
|
+
{
|
110
|
+
field: 'month',
|
111
|
+
width: 100,
|
112
|
+
title: '月份',
|
113
|
+
},
|
109
114
|
{
|
110
115
|
field: 'week',
|
111
116
|
width: 100,
|
@@ -187,7 +192,7 @@
|
|
187
192
|
if (obj.event === 'add') { // 监听添加操作
|
188
193
|
var content = miniPage.getHrefContent('/educode_sales/operation_plans/new_week');
|
189
194
|
var openWH = miniPage.getOpenWidthHeight();
|
190
|
-
|
195
|
+
new_weelPlan_index = layer.open({
|
191
196
|
title: '添加计划',
|
192
197
|
type: 1,
|
193
198
|
shade: 0.2,
|
@@ -276,7 +281,7 @@
|
|
276
281
|
content = miniPage.getHrefContent('/educode_sales/teachers/show_follow?id=' + data.teacher_id);
|
277
282
|
openWH = miniPage.getOpenWidthHeight();
|
278
283
|
index = layer.open({
|
279
|
-
title: '
|
284
|
+
title: data.teacher_name + '/跟进记录',
|
280
285
|
type: 1,
|
281
286
|
shade: 0.2,
|
282
287
|
maxmin: true,
|
@@ -7,8 +7,7 @@
|
|
7
7
|
</div>
|
8
8
|
</script>
|
9
9
|
<!--搜索-->
|
10
|
-
<div class="layuimini-main
|
11
|
-
|
10
|
+
<div class="layuimini-main min-height-table" id="o_sales_weelky_table">
|
12
11
|
<form class="layui-form layui-form-pane" lay-filter="weekly_plan_form_filter">
|
13
12
|
<div class="layui-form-item">
|
14
13
|
<div class="layui-inline">
|
@@ -141,7 +140,7 @@
|
|
141
140
|
}
|
142
141
|
]
|
143
142
|
], done: function (res) {
|
144
|
-
$("#
|
143
|
+
$("#o_sales_weelky_table .star1").each(function (i) {
|
145
144
|
rate.render({
|
146
145
|
elem: this,
|
147
146
|
value: res.data[i].level1_score,
|
@@ -149,7 +148,7 @@
|
|
149
148
|
readonly: true
|
150
149
|
});
|
151
150
|
})
|
152
|
-
$("#
|
151
|
+
$("#o_sales_weelky_table .star2").each(function (i) {
|
153
152
|
rate.render({
|
154
153
|
elem: this,
|
155
154
|
value: res.data[i].level2_score,
|
@@ -157,7 +156,7 @@
|
|
157
156
|
readonly: true
|
158
157
|
});
|
159
158
|
})
|
160
|
-
$("#
|
159
|
+
$("#o_sales_weelky_table .star3").each(function (i) {
|
161
160
|
rate.render({
|
162
161
|
elem: this,
|
163
162
|
value: res.data[i].level3_score,
|