educode_sales 0.1.4 → 0.2.0
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 +1 -0
- data/app/controllers/educode_sales/activities_controller.rb +1 -1
- data/app/controllers/educode_sales/businesses_controller.rb +3 -4
- data/app/controllers/educode_sales/commons_controller.rb +1 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +3 -3
- data/app/controllers/educode_sales/operation_plans_controller.rb +5 -5
- data/app/controllers/educode_sales/operation_reports_controller.rb +2 -2
- data/app/controllers/educode_sales/places_controller.rb +1 -1
- data/app/controllers/educode_sales/plans_controller.rb +6 -6
- data/app/controllers/educode_sales/roles_controller.rb +1 -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/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/teacher.rb +11 -2
- data/app/views/educode_sales/activities/index.html.erb +24 -10
- data/app/views/educode_sales/activities/index.json.jbuilder +1 -1
- data/app/views/educode_sales/activities/show_teachers.html.erb +13 -7
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +1 -0
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -1
- 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/edit_month.html.erb +4 -3
- data/app/views/educode_sales/operation_plans/edit_week.html.erb +4 -3
- data/app/views/educode_sales/operation_plans/index.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_plans/my_month.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_plans/my_week.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_plans/new_month.html.erb +4 -3
- data/app/views/educode_sales/operation_plans/new_monthly.html.erb +1 -1
- data/app/views/educode_sales/operation_plans/new_week.html.erb +4 -3
- data/app/views/educode_sales/operation_plans/new_weekly.html.erb +1 -1
- 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 +1 -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 +1 -1
- data/app/views/educode_sales/plans/_monthPlan.html.erb +9 -6
- 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 +1 -1
- 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.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 +1 -1
- 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 +2 -2
- 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/course_list.json.jbuilder +1 -0
- data/app/views/educode_sales/teachers/index.html.erb +3 -3
- data/app/views/educode_sales/teachers/index.json.jbuilder +4 -3
- data/app/views/educode_sales/teachers/new.html.erb +3 -5
- data/app/views/educode_sales/teachers/show_class.html.erb +6 -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/lib/educode_sales/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32ccbb45cc443858202f0e53c3f30a5545100930
|
4
|
+
data.tar.gz: 1fa4454eb41cf3c2a554859251d5484e487aa9ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f4bdf23a11199467f92acb3dd4f2eac20c2500130bc5838eb69bf85984f42b2399f5d6854bf8afb20e7b85fedea6e1557e8b4cc8a0191fec627faa75a4cf8e8
|
7
|
+
data.tar.gz: bc4ae21970c1e12ab3ad7ec78b053fb1a90d431a8a6cbe0022e53f36befc6a25ea7e6fbcc5ace7b1c4f43761f8f3936e9519448b295cb0a4fe3b4d38eacc4e4d
|
@@ -64,7 +64,6 @@ module EducodeSales
|
|
64
64
|
@businesses = @businesses.where("created_at > ? AND created_at < ?", date[0], date[1])
|
65
65
|
end
|
66
66
|
|
67
|
-
@businesses = @businesses.page(params[:page]).per(params[:per_page])
|
68
67
|
|
69
68
|
if params[:sort].present? && params[:sort][:field]
|
70
69
|
@businesses = @businesses.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
@@ -80,7 +79,7 @@ module EducodeSales
|
|
80
79
|
last_follow.reception_at,
|
81
80
|
last_follow.total_amount").joins("
|
82
81
|
LEFT JOIN educode_sales_follow_ups AS last_follow ON educode_sales_businesses.last_follow_up_id = last_follow.id
|
83
|
-
").page(params[:page]).per(params[:
|
82
|
+
").page(params[:page]).per(params[:limit])
|
84
83
|
end
|
85
84
|
end
|
86
85
|
end
|
@@ -145,7 +144,7 @@ module EducodeSales
|
|
145
144
|
else
|
146
145
|
@follow_ups = @follow_ups.order("created_at desc")
|
147
146
|
end
|
148
|
-
@follow_ups = @follow_ups.page(params[:page]).per(params[:
|
147
|
+
@follow_ups = @follow_ups.page(params[:page]).per(params[:limit])
|
149
148
|
end
|
150
149
|
end
|
151
150
|
end
|
@@ -162,7 +161,7 @@ module EducodeSales
|
|
162
161
|
|
163
162
|
def unfinish_plans
|
164
163
|
load_business
|
165
|
-
@plans = @business.sale_plans.where.not(finish_rate: 100).page(params[:page]).per(params[:
|
164
|
+
@plans = @business.sale_plans.where.not(finish_rate: 100).page(params[:page]).per(params[:limit])
|
166
165
|
end
|
167
166
|
|
168
167
|
def show_follow_record
|
@@ -21,7 +21,7 @@ module EducodeSales
|
|
21
21
|
business = follow_up.business
|
22
22
|
if follow_up.destroy
|
23
23
|
if follow_up.id == business.last_follow_up_id
|
24
|
-
business.update(last_follow_up: follow_ups.last, return_money: MoneyPlan.where(clazz: '已完成', follow_up_id: follow_ups.last&.id).sum(:amount))
|
24
|
+
business.update(last_follow_up: business.follow_ups.last, return_money: MoneyPlan.where(clazz: '已完成', follow_up_id: business.follow_ups.last&.id).sum(:amount))
|
25
25
|
end
|
26
26
|
render_success
|
27
27
|
else
|
@@ -43,7 +43,7 @@ module EducodeSales
|
|
43
43
|
def teachers
|
44
44
|
follow_up = FollowUp.find_by(id: params[:id])
|
45
45
|
if follow_up.present?
|
46
|
-
@teachers = follow_up.key_person.includes(:teacher).page(params[:page]).per(params[:
|
46
|
+
@teachers = follow_up.key_person.includes(:teacher).page(params[:page]).per(params[:limit])
|
47
47
|
else
|
48
48
|
@teachers = FollowUp.none
|
49
49
|
end
|
@@ -51,7 +51,7 @@ module EducodeSales
|
|
51
51
|
|
52
52
|
def money_plans
|
53
53
|
follow_up = FollowUp.find_by(id: params[:id])
|
54
|
-
@money_plans = follow_up.money_plans.page(params[:page]).per(params[:
|
54
|
+
@money_plans = follow_up.money_plans.page(params[:page]).per(params[:limit])
|
55
55
|
end
|
56
56
|
|
57
57
|
def add_money
|
@@ -46,7 +46,7 @@ module EducodeSales
|
|
46
46
|
else
|
47
47
|
@sale_plans = @sale_plans.order("updated_at desc")
|
48
48
|
end
|
49
|
-
@sale_plans = @sale_plans.page(params[:page]).per(params[:
|
49
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
@@ -117,7 +117,7 @@ module EducodeSales
|
|
117
117
|
|
118
118
|
def edit_week
|
119
119
|
@teacher = Teacher.find_by(id: params[:teacher_id])
|
120
|
-
@teachers = @current_admin.teachers.pluck(:name, :id)
|
120
|
+
@teachers = @current_admin.teachers.where(is_key: 0).pluck(:name, :id)
|
121
121
|
@sale_plan = OperationPlan.find(params[:id])
|
122
122
|
if @sale_plan.weekly.present?
|
123
123
|
week = Time.now.strftime('%W').to_i
|
@@ -145,7 +145,7 @@ module EducodeSales
|
|
145
145
|
|
146
146
|
def edit_month
|
147
147
|
@teacher = Teacher.find_by(id: params[:teacher_id])
|
148
|
-
@teachers = @current_admin.teachers.pluck(:name, :id)
|
148
|
+
@teachers = @current_admin.teachers.where(is_key: 0).pluck(:name, :id)
|
149
149
|
@sale_plan = OperationPlan.find(params[:id])
|
150
150
|
@months = [Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]
|
151
151
|
@months << @sale_plan.month.strftime("%Y-%m")
|
@@ -166,7 +166,7 @@ module EducodeSales
|
|
166
166
|
else
|
167
167
|
@sale_plans = @sale_plans.order("updated_at desc")
|
168
168
|
end
|
169
|
-
@sale_plans = @sale_plans.page(params[:page]).per(params[:
|
169
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
|
170
170
|
end
|
171
171
|
|
172
172
|
def my_month
|
@@ -176,7 +176,7 @@ module EducodeSales
|
|
176
176
|
else
|
177
177
|
@sale_plans = @sale_plans.order("updated_at desc")
|
178
178
|
end
|
179
|
-
@sale_plans = @sale_plans.page(params[:page]).per(params[:
|
179
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
|
180
180
|
end
|
181
181
|
|
182
182
|
def update
|
@@ -42,7 +42,7 @@ module EducodeSales
|
|
42
42
|
else
|
43
43
|
@sale_reports = @sale_reports.order("updated_at desc")
|
44
44
|
end
|
45
|
-
@sale_reports = @sale_reports.page(params[:page]).per(params[:
|
45
|
+
@sale_reports = @sale_reports.page(params[:page]).per(params[:limit])
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -118,7 +118,7 @@ module EducodeSales
|
|
118
118
|
|
119
119
|
def plans
|
120
120
|
sale_report = OperationReport.find(params[:id])
|
121
|
-
@sale_plans = OperationPlan.where(staff_id: sale_report.staff_id, month: sale_report.month, weekly: sale_report.weekly).order("updated_at desc").page(params[:page]).per(params[:
|
121
|
+
@sale_plans = OperationPlan.where(staff_id: sale_report.staff_id, month: sale_report.month, weekly: sale_report.weekly).order("updated_at desc").page(params[:page]).per(params[:limit])
|
122
122
|
end
|
123
123
|
|
124
124
|
private
|
@@ -8,7 +8,7 @@ module EducodeSales
|
|
8
8
|
format.html do
|
9
9
|
end
|
10
10
|
format.json do
|
11
|
-
@places = Place.page(params[:page]).per(params[:
|
11
|
+
@places = Place.page(params[:page]).per(params[:limit])
|
12
12
|
@stage_ids = Common.where(clazz: '商机阶段', name: ['已中标','已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
|
13
13
|
end
|
14
14
|
end
|
@@ -47,7 +47,7 @@ module EducodeSales
|
|
47
47
|
@sale_plans = @sale_plans.order("updated_at desc")
|
48
48
|
end
|
49
49
|
|
50
|
-
@sale_plans = @sale_plans.page(params[:page]).per(params[:
|
50
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
@@ -86,7 +86,7 @@ module EducodeSales
|
|
86
86
|
sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i, staff_id: @current_admin.id)
|
87
87
|
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
88
88
|
@departments_count = sale_plans.joins(:business).count("distinct(department_id)")
|
89
|
-
@total_amount = sale_plans.joins(business: :last_follow_up).sum("total_amount")
|
89
|
+
@total_amount = sale_plans.joins(business: :last_follow_up).distinct.sum("total_amount")
|
90
90
|
render layout: false
|
91
91
|
end
|
92
92
|
|
@@ -100,7 +100,7 @@ module EducodeSales
|
|
100
100
|
sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
|
101
101
|
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
102
102
|
@departments_count = sale_plans.joins(:business).count("distinct(department_id)")
|
103
|
-
@total_amount = sale_plans.joins(business: :last_follow_up).sum("total_amount")
|
103
|
+
@total_amount = sale_plans.joins(business: :last_follow_up).distinct.sum("total_amount")
|
104
104
|
render layout: false
|
105
105
|
end
|
106
106
|
|
@@ -187,7 +187,7 @@ module EducodeSales
|
|
187
187
|
else
|
188
188
|
@sale_plans = @sale_plans.order("updated_at desc")
|
189
189
|
end
|
190
|
-
@sale_plans = @sale_plans.page(params[:page]).per(params[:
|
190
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
|
191
191
|
end
|
192
192
|
|
193
193
|
def my_month
|
@@ -197,13 +197,13 @@ module EducodeSales
|
|
197
197
|
else
|
198
198
|
@sale_plans = @sale_plans.order("updated_at desc")
|
199
199
|
end
|
200
|
-
@sale_plans = @sale_plans.page(params[:page]).per(params[:
|
200
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
|
201
201
|
end
|
202
202
|
|
203
203
|
private
|
204
204
|
|
205
205
|
def plan_params
|
206
|
-
params.permit(:month, :weekly, :content, :finish_rate)
|
206
|
+
params.permit(:month, :weekly, :content, :finish_rate, :business_id)
|
207
207
|
end
|
208
208
|
|
209
209
|
end
|
@@ -75,7 +75,7 @@ module EducodeSales
|
|
75
75
|
else
|
76
76
|
@sale_reports = @sale_reports.order("updated_at desc")
|
77
77
|
end
|
78
|
-
@sale_reports = @sale_reports.page(params[:page]).per(params[:
|
78
|
+
@sale_reports = @sale_reports.page(params[:page]).per(params[:limit])
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -123,7 +123,7 @@ module EducodeSales
|
|
123
123
|
|
124
124
|
def plans
|
125
125
|
sale_report = SaleReport.find(params[:id])
|
126
|
-
@sale_plans = SalePlan.where(staff_id: sale_report.staff_id, month: sale_report.month, weekly: sale_report.weekly).order("updated_at desc").page(params[:page]).per(params[:
|
126
|
+
@sale_plans = SalePlan.where(staff_id: sale_report.staff_id, month: sale_report.month, weekly: sale_report.weekly).order("updated_at desc").page(params[:page]).per(params[:limit])
|
127
127
|
end
|
128
128
|
|
129
129
|
private
|
@@ -16,7 +16,7 @@ module EducodeSales
|
|
16
16
|
@b_clazz = Common.find_by(clazz: 'business_type', name: 'B类')
|
17
17
|
@step_ids = Common.where(name: %w(已中标 已签单 已验收 回款中 服务中 已结束), clazz: 'business_step').pluck(:id)
|
18
18
|
|
19
|
-
@staffs = Staff.where(job_type: common.id).page(params[:page]).per(params[:
|
19
|
+
@staffs = Staff.where(job_type: common.id).page(params[:page]).per(params[:limit])
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -44,7 +44,7 @@ module EducodeSales
|
|
44
44
|
end
|
45
45
|
format.json do
|
46
46
|
common_id = Common.where(clazz: 'staff_type', name: ['销售', '运营']).pluck(:id)
|
47
|
-
@staffs = Staff.where(job_type: common_id).page(params[:page]).per(params[:
|
47
|
+
@staffs = Staff.where(job_type: common_id).page(params[:page]).per(params[:limit])
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -8,7 +8,7 @@ module EducodeSales
|
|
8
8
|
format.html do
|
9
9
|
end
|
10
10
|
format.json do
|
11
|
-
@staffs = Staff.where(is_admin: false).page(params[:page]).per(params[:
|
11
|
+
@staffs = Staff.where(is_admin: false).page(params[:page]).per(params[:limit])
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -67,13 +67,13 @@ module EducodeSales
|
|
67
67
|
|
68
68
|
def follow_up_schools
|
69
69
|
staff = Staff.find(params[:id])
|
70
|
-
@schools = EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{staff.id}").group("school_id").select("school_id, max(educode_sales_follow_ups.updated_at) AS updated_at").page(params[:page]).per(params[:
|
70
|
+
@schools = EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{staff.id}").group("school_id").select("school_id, max(educode_sales_follow_ups.updated_at) AS updated_at").page(params[:page]).per(params[:limit])
|
71
71
|
@count = EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{staff.id}").group("school_id").count
|
72
72
|
end
|
73
73
|
|
74
74
|
def follow_up_departments
|
75
75
|
staff = Staff.find(params[:id])
|
76
|
-
@schools = EducodeSales::Business.joins(:last_follow_up, [department: :school]).where("educode_sales_follow_ups.staff_id = #{staff.id}").select("departments.name, schools.name AS school, educode_sales_follow_ups.updated_at").page(params[:page]).per(params[:
|
76
|
+
@schools = EducodeSales::Business.joins(:last_follow_up, [department: :school]).where("educode_sales_follow_ups.staff_id = #{staff.id}").select("departments.name, schools.name AS school, educode_sales_follow_ups.updated_at").page(params[:page]).per(params[:limit])
|
77
77
|
end
|
78
78
|
|
79
79
|
|
@@ -44,7 +44,7 @@ module EducodeSales
|
|
44
44
|
# def teachers
|
45
45
|
# follow_up = @current_admin.follow_ups.find_by(id: params[:id])
|
46
46
|
# if follow_up.present?
|
47
|
-
# @teachers = follow_up.key_person.includes(:teacher).page(params[:page]).per(params[:
|
47
|
+
# @teachers = follow_up.key_person.includes(:teacher).page(params[:page]).per(params[:limit])
|
48
48
|
# else
|
49
49
|
# @teachers = FollowUp.none
|
50
50
|
# end
|
@@ -52,7 +52,7 @@ module EducodeSales
|
|
52
52
|
#
|
53
53
|
# def money_plans
|
54
54
|
# follow_up = @current_admin.follow_ups.find_by(id: params[:id])
|
55
|
-
# @money_plans = follow_up.money_plans.page(params[:page]).per(params[:
|
55
|
+
# @money_plans = follow_up.money_plans.page(params[:page]).per(params[:limit])
|
56
56
|
# end
|
57
57
|
#
|
58
58
|
# def add_money
|
@@ -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.order("created_at desc").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
|
@@ -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
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<a href="javascript:void(0);" lay-event="teachers" class="layui-table-link">{{ d.name}}</a>
|
23
23
|
</script>
|
24
24
|
<script type="text/html" id="teachers_count">
|
25
|
-
<a href="javascript:void(0);" lay-event="
|
25
|
+
<a href="javascript:void(0);" lay-event="teachers_count" class="layui-table-link">{{ d.teachers_count}}</a>
|
26
26
|
</script>
|
27
27
|
|
28
28
|
<script>
|
@@ -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: '学生数',
|
@@ -181,6 +173,28 @@
|
|
181
173
|
});
|
182
174
|
return false;
|
183
175
|
}
|
176
|
+
else if (obj.event === 'teachers_count') {
|
177
|
+
activity_id = obj.data.id;
|
178
|
+
content = miniPage.getHrefContent('/educode_sales/activities/show_teachers');
|
179
|
+
openWH = miniPage.getOpenWidthHeight();
|
180
|
+
index = layer.open({
|
181
|
+
title: '活动列表/' + data.name,
|
182
|
+
type: 1,
|
183
|
+
shade: 0.2,
|
184
|
+
maxmin: true,
|
185
|
+
shadeClose: true,
|
186
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
187
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
188
|
+
content: content,
|
189
|
+
success: function (layero, index) {
|
190
|
+
form.render('select');
|
191
|
+
},
|
192
|
+
});
|
193
|
+
$(window).on("resize", function () {
|
194
|
+
layer.full(index);
|
195
|
+
});
|
196
|
+
return false;
|
197
|
+
}
|
184
198
|
});
|
185
199
|
|
186
200
|
});
|
@@ -247,10 +247,11 @@
|
|
247
247
|
});
|
248
248
|
return false;
|
249
249
|
} else if (obj.event === 'delete') {
|
250
|
+
console.log(data);
|
250
251
|
layer.confirm('确定删除' + data.name, function (index) {
|
251
|
-
request.delete('educode_sales/
|
252
|
+
request.delete('educode_sales/teachers/' + data.id, {}, function (res) {
|
252
253
|
layer.close(index);
|
253
|
-
table.reload("
|
254
|
+
table.reload("show_teachers_table")
|
254
255
|
})
|
255
256
|
});
|
256
257
|
} else if (obj.event === 'addWeek') {
|
@@ -288,7 +289,8 @@
|
|
288
289
|
});
|
289
290
|
|
290
291
|
} else if (obj.event === 'courses') {
|
291
|
-
|
292
|
+
teacher_id = data.id
|
293
|
+
content = miniPage.getHrefContent('/educode_sales/teachers/add_courses?id='+data.id);
|
292
294
|
openWH = miniPage.getOpenWidthHeight();
|
293
295
|
index = layer.open({
|
294
296
|
title: '课程方向',
|
@@ -298,12 +300,16 @@
|
|
298
300
|
shadeClose: true,
|
299
301
|
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
300
302
|
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
301
|
-
content: content
|
303
|
+
content: content,
|
304
|
+
success: function (layero, index) {
|
305
|
+
// 重新渲染弹层中的下拉选择框select
|
306
|
+
// form.render('select');
|
307
|
+
}
|
302
308
|
});
|
303
309
|
$(window).on("resize", function () {
|
304
|
-
|
310
|
+
layer.full(index);
|
305
311
|
});
|
306
|
-
}
|
312
|
+
}else if (obj.event === 'event') {
|
307
313
|
content = miniPage.getHrefContent('/educode_sales/teachers/add_event');
|
308
314
|
openWH = miniPage.getOpenWidthHeight();
|
309
315
|
teacher_id = obj.data.id
|
@@ -342,7 +348,7 @@
|
|
342
348
|
layer.full(index);
|
343
349
|
});
|
344
350
|
} else if (obj.event === 'follow') {
|
345
|
-
content = miniPage.getHrefContent('/educode_sales/teachers/show_follow');
|
351
|
+
content = miniPage.getHrefContent('/educode_sales/teachers/show_follow?id=' + data.id);
|
346
352
|
openWH = miniPage.getOpenWidthHeight();
|
347
353
|
index = layer.open({
|
348
354
|
title: '跟进记录',
|
@@ -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>
|
@@ -31,9 +31,10 @@
|
|
31
31
|
<%= select_tag "finish_rate", options_for_select(@finish_rates, @sale_plan.finish_rate) %>
|
32
32
|
</div>
|
33
33
|
</div>
|
34
|
-
<div class="layui-
|
35
|
-
<
|
36
|
-
|
34
|
+
<div class="layui-form-item m-t-20">
|
35
|
+
<div class="layui-input-block">
|
36
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="update_sale_plan">提交</button>
|
37
|
+
</div>
|
37
38
|
</div>
|
38
39
|
</div>
|
39
40
|
</form>
|
@@ -39,9 +39,10 @@
|
|
39
39
|
<%= select_tag "finish_rate", options_for_select(@finish_rates, @sale_plan.finish_rate) %>
|
40
40
|
</div>
|
41
41
|
</div>
|
42
|
-
<div class="layui-
|
43
|
-
<
|
44
|
-
|
42
|
+
<div class="layui-form-item m-t-20">
|
43
|
+
<div class="layui-input-block">
|
44
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="update_sale_plan">提交</button>
|
45
|
+
</div>
|
45
46
|
</div>
|
46
47
|
</div>
|
47
48
|
</form>
|
@@ -39,9 +39,10 @@
|
|
39
39
|
</select>
|
40
40
|
</div>
|
41
41
|
</div>
|
42
|
-
<div class="layui-
|
43
|
-
<
|
44
|
-
|
42
|
+
<div class="layui-form-item m-t-20">
|
43
|
+
<div class="layui-input-block">
|
44
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="add_month_plan">提交</button>
|
45
|
+
</div>
|
45
46
|
</div>
|
46
47
|
</div>
|
47
48
|
</div>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="layui-form-item">
|
9
9
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
10
10
|
<label>完成率:</label>
|
11
|
-
<span><%= @rate
|
11
|
+
<span><%= @rate %>%</span>
|
12
12
|
<%= hidden_field_tag 'finish_rate', @rate, {id: 'monthly_rate_hide'} %>
|
13
13
|
</div>
|
14
14
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
@@ -46,9 +46,10 @@
|
|
46
46
|
</select>
|
47
47
|
</div>
|
48
48
|
</div>
|
49
|
-
<div class="layui-
|
50
|
-
<
|
51
|
-
|
49
|
+
<div class="layui-form-item m-t-20">
|
50
|
+
<div class="layui-input-block">
|
51
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="add_week_plan">提交</button>
|
52
|
+
</div>
|
52
53
|
</div>
|
53
54
|
</div>
|
54
55
|
</div>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="layui-form-item">
|
9
9
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
10
10
|
<label>完成率:</label>
|
11
|
-
<span><%= @rate
|
11
|
+
<span><%= @rate %>%</span>
|
12
12
|
<%= hidden_field_tag 'finish_rate', @rate, {id: 'weekly_rate_hide'} %>
|
13
13
|
</div>
|
14
14
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="layui-form-item">
|
3
3
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
4
4
|
<label>完成率:</label>
|
5
|
-
<span><%= @sale_report.finish_rate
|
5
|
+
<span><%= @sale_report.finish_rate %>%</span>
|
6
6
|
<%= hidden_field_tag :id, @sale_report.id, {id: 'sale_report_audito'} %>
|
7
7
|
</div>
|
8
8
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="layui-form-item">
|
9
9
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
10
10
|
<label>完成率:</label>
|
11
|
-
<span><%= @sale_report.finish_rate
|
11
|
+
<span><%= @sale_report.finish_rate %>%</span>
|
12
12
|
</div>
|
13
13
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
14
14
|
<label style="margin-left: 100px">运营教师:</label>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="layui-form-item">
|
3
3
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
4
4
|
<label>完成率:</label>
|
5
|
-
<span><%= @sale_report.finish_rate
|
5
|
+
<span><%= @sale_report.finish_rate %>%</span>
|
6
6
|
</div>
|
7
7
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
8
8
|
<label style="margin-left: 100px">运营教师:</label>
|
@@ -201,12 +201,7 @@
|
|
201
201
|
|
202
202
|
table.on('tool(monthPlanTable)', function (obj) {
|
203
203
|
var data = obj.data;
|
204
|
-
if (obj.event === '
|
205
|
-
layer.confirm('真的删除行么', function (index) {
|
206
|
-
obj.del();
|
207
|
-
layer.close(index);
|
208
|
-
});
|
209
|
-
} else if (obj.event === 'show') {
|
204
|
+
if (obj.event === 'show') {
|
210
205
|
content = miniPage.getHrefContent('/educode_sales/plans/show_month?id=' + data.id);
|
211
206
|
openWH = miniPage.getOpenWidthHeight();
|
212
207
|
index = layer.open({
|
@@ -259,6 +254,14 @@
|
|
259
254
|
$(window).on("resize", function () {
|
260
255
|
layer.full(index);
|
261
256
|
});
|
257
|
+
} else if (obj.event === 'delete') {
|
258
|
+
layer.confirm('确定删除' + data.id, function (index) {
|
259
|
+
console.log("aaaaa");
|
260
|
+
request.delete('educode_sales/plans/' + data.id, {}, function (res) {
|
261
|
+
layer.close(index);
|
262
|
+
table.reload("monthPlanTable")
|
263
|
+
})
|
264
|
+
});
|
262
265
|
}
|
263
266
|
});
|
264
267
|
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<div class="layui-form-item">
|
11
11
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
12
12
|
<label>完成率:</label>
|
13
|
-
<span><%= @rate
|
13
|
+
<span><%= @rate %>%</span>
|
14
14
|
<%= hidden_field_tag 'finish_rate', @rate, {id: 'monthly_rate_hide'} %>
|
15
15
|
</div>
|
16
16
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="layui-form-item">
|
9
9
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
10
10
|
<label>完成率:</label>
|
11
|
-
<span><%= @rate
|
11
|
+
<span><%= @rate %>%</span>
|
12
12
|
<%= hidden_field_tag 'finish_rate', @rate, {id: 'weekly_rate_hide'} %>
|
13
13
|
</div>
|
14
14
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
@@ -97,6 +97,7 @@
|
|
97
97
|
layer.close(parent.sindex);
|
98
98
|
parent.layer.close(parent.layer.getFrameIndex(window.name))
|
99
99
|
parent.table.reload('newWeeklyTable');
|
100
|
+
table.reload('weeklyTable');
|
100
101
|
layer.alert('添加成功')
|
101
102
|
}
|
102
103
|
})
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="layui-form-item">
|
3
3
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
4
4
|
<label>完成率:</label>
|
5
|
-
<span><%= @sale_report.finish_rate
|
5
|
+
<span><%= @sale_report.finish_rate %>%</span>
|
6
6
|
<%= hidden_field_tag :id, @sale_report.id, {id: 'sale_report_audito'} %>
|
7
7
|
</div>
|
8
8
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="layui-form-item">
|
9
9
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
10
10
|
<label>完成率:</label>
|
11
|
-
<span><%= @sale_report.finish_rate
|
11
|
+
<span><%= @sale_report.finish_rate %>%</span>
|
12
12
|
</div>
|
13
13
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
14
14
|
<label style="margin-left: 100px">覆盖客户:</label>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="layui-form-item">
|
3
3
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
4
4
|
<label>完成率:</label>
|
5
|
-
<span><%= @sale_report.finish_rate
|
5
|
+
<span><%= @sale_report.finish_rate %>%</span>
|
6
6
|
</div>
|
7
7
|
<div class="layui-inline" style="margin:18px; font-weight: bold">
|
8
8
|
<label style="margin-left: 100px">覆盖客户:</label>
|
@@ -6,9 +6,9 @@ json.data do
|
|
6
6
|
json.job_type EducodeSales::Common.job_type_name[d.job_type]
|
7
7
|
json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
|
8
8
|
json.departments EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.staff_id = #{d.id}").select("COUNT(educode_sales_follow_ups.staff_id) AS count")[0]&.send('count') || 0
|
9
|
-
json.schools EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{d.id}").
|
9
|
+
json.schools EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{d.id}").select("COUNT(distinct(departments.school_id)) AS count")[0]['count']
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
json.code 0
|
14
|
-
json.count @staffs.
|
14
|
+
json.count @staffs.total_count
|
@@ -146,12 +146,12 @@
|
|
146
146
|
},
|
147
147
|
{
|
148
148
|
field: 'school',
|
149
|
-
width:
|
149
|
+
width: 250,
|
150
150
|
title: '单位',
|
151
151
|
},
|
152
152
|
{
|
153
153
|
field: 'department',
|
154
|
-
width:
|
154
|
+
width: 250,
|
155
155
|
title: '部门'
|
156
156
|
},
|
157
157
|
{
|
@@ -260,7 +260,7 @@
|
|
260
260
|
form.val('search_teachers', {
|
261
261
|
area: "",
|
262
262
|
date: "",
|
263
|
-
|
263
|
+
attitude: "",
|
264
264
|
name: "",
|
265
265
|
professional_title: "",
|
266
266
|
regist_at: "",
|
@@ -12,14 +12,15 @@ json.data do
|
|
12
12
|
json.teacher_follows_count d.teacher_follows_count
|
13
13
|
json.activities_count d.activity_teachers_count
|
14
14
|
json.source EducodeSales::Common.teacher_source_name[d.source_id]
|
15
|
-
|
15
|
+
# a_id = EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).present? ? EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id : 73
|
16
|
+
json.attitude EducodeSales::TeacherFollow.find_by(teacher_id: d.id).present? ? EducodeSales::Common.find(EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id).name : ''
|
16
17
|
json.courses_count d.user_id ? Course.joins(:course_members).where(course_members: {user_id: d.user_id}).count : 0
|
17
18
|
json.actives d.actives
|
18
|
-
json.students d.
|
19
|
+
json.students d.students_count
|
19
20
|
json.regist_at d.regist_at ? d.regist_at.to_s(:date) : ''
|
20
21
|
json.teacher_used d.teacher_used_of_department
|
21
22
|
end
|
22
23
|
end
|
23
24
|
json.code 0
|
24
|
-
json.count @teachers.
|
25
|
+
json.count @teachers.total_count
|
25
26
|
json.msg 'succcess'
|
@@ -152,13 +152,11 @@
|
|
152
152
|
if (res.success == false) {
|
153
153
|
layer.alert(res.msg)
|
154
154
|
} else {
|
155
|
-
|
156
|
-
if (parent.activity_id) {
|
155
|
+
layer.closeAll();
|
157
156
|
table.reload('show_teachers_table');
|
158
|
-
|
157
|
+
table.reload('activities_table');
|
159
158
|
table.reload('teachers_table');
|
160
|
-
|
161
|
-
|
159
|
+
|
162
160
|
}
|
163
161
|
})
|
164
162
|
return false;
|
@@ -1,4 +1,8 @@
|
|
1
1
|
|
2
|
+
<script type="text/html" id="class_name">
|
3
|
+
<a href="https://test-data.educoder.net/classrooms/{{d.id}}" class="layui-table-link" target="_blank">{{ d.name }}</a>
|
4
|
+
</script>
|
5
|
+
|
2
6
|
<table class="layui-hide" id="class_T" lay-filter="classFilter"></table>
|
3
7
|
<script>
|
4
8
|
layui.use(['form', 'table'], function () {
|
@@ -20,6 +24,8 @@
|
|
20
24
|
field: 'name',
|
21
25
|
width: 150,
|
22
26
|
title: '课程名称',
|
27
|
+
templet: "#class_name"
|
28
|
+
|
23
29
|
},
|
24
30
|
{
|
25
31
|
field: 'teachers',
|
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|