educode_sales 0.1.5 → 0.2.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/assets/images/educode_sales/indexlogo.png +0 -0
- data/app/assets/stylesheets/educode_sales/app.css +24 -0
- data/app/assets/stylesheets/educode_sales/public.css +4 -0
- data/app/controllers/educode_sales/businesses_controller.rb +12 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +14 -1
- data/app/controllers/educode_sales/home_controller.rb +7 -7
- data/app/controllers/educode_sales/operation_plans_controller.rb +2 -2
- data/app/controllers/educode_sales/operation_reports_controller.rb +3 -3
- data/app/controllers/educode_sales/plans_controller.rb +2 -2
- data/app/controllers/educode_sales/staffs_controller.rb +3 -2
- data/app/controllers/educode_sales/teacher_follows_controller.rb +1 -0
- data/app/controllers/educode_sales/teachers_controller.rb +1 -0
- data/app/models/educode_sales/activity.rb +1 -1
- data/app/models/educode_sales/common.rb +4 -0
- data/app/models/educode_sales/follow_up.rb +1 -1
- data/app/models/educode_sales/staff.rb +3 -3
- data/app/models/educode_sales/teacher.rb +14 -4
- data/app/views/educode_sales/activities/index.html.erb +32 -18
- data/app/views/educode_sales/activities/show_teachers.html.erb +14 -12
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +1 -0
- data/app/views/educode_sales/businesses/edit_plan.html.erb +7 -2
- data/app/views/educode_sales/businesses/index.html.erb +18 -10
- data/app/views/educode_sales/businesses/index.json.jbuilder +3 -1
- data/app/views/educode_sales/businesses/new.html.erb +1 -1
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +12 -2
- data/app/views/educode_sales/businesses/show_follow.html.erb +24 -19
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/show_keys.html.erb +1 -1
- data/app/views/educode_sales/commons/edit.html.erb +1 -1
- data/app/views/educode_sales/commons/index.html.erb +2 -3
- data/app/views/educode_sales/home/index.html.erb +1 -1
- data/app/views/educode_sales/home/search_teacher.json.jbuilder +2 -2
- data/app/views/educode_sales/home/statistics.html.erb +1 -0
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +2 -3
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +2 -2
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +2 -3
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +2 -1
- data/app/views/educode_sales/operation_plans/edit_month.html.erb +4 -3
- data/app/views/educode_sales/operation_plans/edit_monthly.html.erb +3 -3
- data/app/views/educode_sales/operation_plans/edit_week.html.erb +4 -3
- data/app/views/educode_sales/operation_plans/edit_weekly.html.erb +3 -3
- data/app/views/educode_sales/operation_plans/new_month.html.erb +5 -4
- data/app/views/educode_sales/operation_plans/new_monthly.html.erb +3 -3
- data/app/views/educode_sales/operation_plans/new_week.html.erb +5 -4
- data/app/views/educode_sales/operation_plans/new_weekly.html.erb +3 -3
- data/app/views/educode_sales/operation_plans/show_monthly.html.erb +3 -3
- data/app/views/educode_sales/operation_plans/show_weekly.html.erb +3 -3
- data/app/views/educode_sales/operation_reports/audit.html.erb +3 -3
- data/app/views/educode_sales/operation_reports/edit.html.erb +4 -4
- data/app/views/educode_sales/operation_reports/show.html.erb +140 -28
- data/app/views/educode_sales/places/index.html.erb +6 -6
- data/app/views/educode_sales/plans/_monthPlan.html.erb +11 -7
- data/app/views/educode_sales/plans/_monthly.html.erb +2 -1
- data/app/views/educode_sales/plans/_weekPlan.html.erb +2 -1
- data/app/views/educode_sales/plans/_weekly.html.erb +2 -1
- data/app/views/educode_sales/plans/audit_weekly.html.erb +3 -3
- data/app/views/educode_sales/plans/edit_monthly.html.erb +3 -3
- data/app/views/educode_sales/plans/edit_week.html.erb +1 -1
- data/app/views/educode_sales/plans/edit_weekly.html.erb +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/plans/show_monthly.html.erb +3 -3
- data/app/views/educode_sales/plans/show_weekly.html.erb +1 -1
- data/app/views/educode_sales/roles/index.html.erb +2 -1
- data/app/views/educode_sales/sale_reports/audit.html.erb +2 -2
- data/app/views/educode_sales/sale_reports/edit.html.erb +4 -4
- data/app/views/educode_sales/sale_reports/show.html.erb +2 -2
- data/app/views/educode_sales/sale_trends/operations.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +1 -1
- data/app/views/educode_sales/sales/index.html.erb +12 -7
- data/app/views/educode_sales/sales/index.json.jbuilder +1 -1
- data/app/views/educode_sales/sales/operations.html.erb +7 -5
- data/app/views/educode_sales/sales/operations.json.jbuilder +3 -2
- data/app/views/educode_sales/sales/school.html.erb +1 -2
- data/app/views/educode_sales/sales/xschool.html.erb +1 -2
- data/app/views/educode_sales/staffs/follow_up_departments.json.jbuilder +1 -2
- data/app/views/educode_sales/staffs/follow_up_schools.json.jbuilder +1 -2
- data/app/views/educode_sales/staffs/index.html.erb +6 -8
- data/app/views/educode_sales/staffs/new.html.erb +1 -1
- data/app/views/educode_sales/teachers/add_courses.html.erb +3 -3
- data/app/views/educode_sales/teachers/add_event.html.erb +1 -1
- data/app/views/educode_sales/teachers/add_keys.html.erb +11 -5
- data/app/views/educode_sales/teachers/course_list.json.jbuilder +1 -0
- data/app/views/educode_sales/teachers/course_subject.json.jbuilder +1 -1
- data/app/views/educode_sales/teachers/index.html.erb +11 -9
- data/app/views/educode_sales/teachers/index.json.jbuilder +3 -2
- data/app/views/educode_sales/teachers/new.html.erb +3 -5
- data/app/views/educode_sales/teachers/new_follow_record.html.erb +1 -0
- data/app/views/educode_sales/teachers/search_new.html.erb +2 -2
- data/app/views/educode_sales/teachers/show_class.html.erb +7 -1
- data/app/views/educode_sales/teachers/show_follow.html.erb +11 -9
- data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -0
- data/app/views/layouts/educode_sales/application.html.erb +6 -9
- data/config/routes.rb +1 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 502c9e7e4d9ee833267a0437e118c4f91bc17cd6
|
4
|
+
data.tar.gz: 6b1cd1a51cc2aaa8de78ab2bb81cb251e7a015d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64df20ba0bfad8e1771a8b6b36a0dbcf12367ec372f1b63a5ca655655a8a0469bf9f5b82443f823332bc46d99288b21d5e815ff0e59dd3e910ccc313d15e2c38
|
7
|
+
data.tar.gz: be53e1e0259e68a32eb92fb7278494ec5029278cbb2b73473ca86f4d9b3a4808f6ddc92e96211c06e56ec57e141beae594009cb8d4c8cfd7b3716a10e501a339
|
Binary file
|
@@ -109,6 +109,7 @@
|
|
109
109
|
|
110
110
|
.welcome .layui-bg-number {
|
111
111
|
background-color: #F8F8F8;
|
112
|
+
height: 90px;
|
112
113
|
}
|
113
114
|
|
114
115
|
.welcome .layuimini-notice:hover {
|
@@ -254,4 +255,27 @@ td .layui-table-cell .layui-form-select {
|
|
254
255
|
|
255
256
|
.large-select .layui-form-select dl {
|
256
257
|
max-height: 220px;
|
258
|
+
}
|
259
|
+
|
260
|
+
.layui-form input::-webkit-input-placeholder,
|
261
|
+
.layui-form textarea::-webkit-input-placeholder {
|
262
|
+
color: #ccc;
|
263
|
+
}
|
264
|
+
|
265
|
+
.layui-form input:-moz-placeholder,
|
266
|
+
.layui-form textarea:-moz-placeholder {
|
267
|
+
/* Mozilla Firefox 4 to 18 */
|
268
|
+
color: #ccc;
|
269
|
+
}
|
270
|
+
|
271
|
+
.layui-form input::-moz-placeholder,
|
272
|
+
.layui-form textarea::-moz-placeholder {
|
273
|
+
/* Mozilla Firefox 19+ */
|
274
|
+
color: #ccc;
|
275
|
+
}
|
276
|
+
|
277
|
+
.layui-form input:-ms-input-placeholder,
|
278
|
+
.layui-form textarea:-ms-input-placeholder {
|
279
|
+
/* Internet Explorer 10+ */
|
280
|
+
color: #ccc;
|
257
281
|
}
|
@@ -7,7 +7,8 @@ module EducodeSales
|
|
7
7
|
authorize! :read, Business
|
8
8
|
respond_to do |format|
|
9
9
|
format.html do
|
10
|
-
|
10
|
+
common = Common.find_by(clazz: 'staff_type', name: '销售')
|
11
|
+
@staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id]}
|
11
12
|
end
|
12
13
|
format.json do
|
13
14
|
if @current_admin.is_admin?
|
@@ -115,6 +116,15 @@ module EducodeSales
|
|
115
116
|
end
|
116
117
|
end
|
117
118
|
|
119
|
+
def updateMoney
|
120
|
+
business = Business.find(params[:id])
|
121
|
+
if business.update(return_money: params[:return_money])
|
122
|
+
render_success
|
123
|
+
else
|
124
|
+
render_failure business
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
118
128
|
def destroy
|
119
129
|
business = Business.find(params[:id])
|
120
130
|
business.destroy
|
@@ -145,6 +155,7 @@ module EducodeSales
|
|
145
155
|
@follow_ups = @follow_ups.order("created_at desc")
|
146
156
|
end
|
147
157
|
@follow_ups = @follow_ups.page(params[:page]).per(params[:limit])
|
158
|
+
@latest = @follow_ups.order(created_at: :desc).first
|
148
159
|
end
|
149
160
|
end
|
150
161
|
end
|
@@ -9,6 +9,19 @@ module EducodeSales
|
|
9
9
|
follow_up.staff = @current_admin
|
10
10
|
follow_up.profit_amount = follow_up.actual_amount * (100-follow_up.divide_rate.to_i) * 0.01 if follow_up.actual_amount
|
11
11
|
if follow_up.save
|
12
|
+
if @business.last_follow_up.present?
|
13
|
+
@business.last_follow_up.key_person.each do |d|
|
14
|
+
key_person = d.dup
|
15
|
+
key_person.follow_up_id = follow_up.id
|
16
|
+
key_person.save
|
17
|
+
end
|
18
|
+
@business.last_follow_up.money_plans.each do |d|
|
19
|
+
money = d.dup
|
20
|
+
money.staff = @current_admin
|
21
|
+
money.follow_up_id = follow_up.id
|
22
|
+
money.save
|
23
|
+
end
|
24
|
+
end
|
12
25
|
@business.update(last_follow_up_id: follow_up.id)
|
13
26
|
render_success
|
14
27
|
else
|
@@ -21,7 +34,7 @@ module EducodeSales
|
|
21
34
|
business = follow_up.business
|
22
35
|
if follow_up.destroy
|
23
36
|
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))
|
37
|
+
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
38
|
end
|
26
39
|
render_success
|
27
40
|
else
|
@@ -12,28 +12,28 @@ module EducodeSales
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def search_users
|
15
|
-
@users = User.where("lastname like
|
15
|
+
@users = User.where("lastname like :q OR login like :q OR phone like :q or mail like :q", q: "%#{params[:q]}%").limit(20)
|
16
16
|
end
|
17
17
|
|
18
18
|
def search
|
19
19
|
if params[:type] == 'department'
|
20
|
-
@data = Department.where("name like ?", "%#{params[:q]}%").limit(
|
20
|
+
@data = Department.where("name like ?", "%#{params[:q]}%").limit(20)
|
21
21
|
unless @data.present?
|
22
|
-
@data = Department.joins(:school).where("schools.name like ?", "%#{params[:q]}%").limit(
|
22
|
+
@data = Department.joins(:school).where("schools.name like ?", "%#{params[:q]}%").limit(20)
|
23
23
|
end
|
24
24
|
elsif params[:type] == "school"
|
25
|
-
data = School.where("name like ? ", "%#{params[:q]}%").limit(
|
25
|
+
data = School.where("name like ? ", "%#{params[:q]}%").limit(20)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
def search_teacher
|
30
|
-
@data = Teacher.where("name like ? and is_key = false", "%#{params[:q]}%").limit(
|
30
|
+
@data = Teacher.where("name like ? and is_key = false", "%#{params[:q]}%").limit(20)
|
31
31
|
user_ids = @data.pluck(:user_id).compact.uniq
|
32
|
-
@data += User.joins(:user_extension).where.not(id: user_ids).where("identity='teacher'", user_ids).where("lastname like ?", "%#{params[:q]}%").limit(
|
32
|
+
@data += User.joins(:user_extension).where.not(id: user_ids).where("identity='teacher'", user_ids).where("lastname like ?", "%#{params[:q]}%").limit(20)
|
33
33
|
end
|
34
34
|
|
35
35
|
def search_edu_teacher
|
36
|
-
@data = User.joins(:user_extension).where("identity='teacher'").where("lastname like ? OR phone like ? OR mail like ?", "%#{params[:q]}%", "%#{params[:q]}%", "%#{params[:q]}%").limit(
|
36
|
+
@data = User.joins(:user_extension).where("identity='teacher'").where("lastname like ? OR phone like ? OR mail like ?", "%#{params[:q]}%", "%#{params[:q]}%", "%#{params[:q]}%").limit(20)
|
37
37
|
end
|
38
38
|
|
39
39
|
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")
|
@@ -71,18 +71,18 @@ module EducodeSales
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def destroy
|
74
|
-
sale_report =
|
74
|
+
sale_report = OperationReport.find(params[:id])
|
75
75
|
sale_report.destroy
|
76
76
|
render_success
|
77
77
|
end
|
78
78
|
|
79
79
|
def edit
|
80
|
-
@sale_report =
|
80
|
+
@sale_report = OperationReport.find(params[:id])
|
81
81
|
render layout: false
|
82
82
|
end
|
83
83
|
|
84
84
|
def update
|
85
|
-
sale_report =
|
85
|
+
sale_report = OperationReport.find(params[:id])
|
86
86
|
sale_report.content = params[:content]
|
87
87
|
if sale_report.save
|
88
88
|
render_success
|
@@ -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
|
|
@@ -67,13 +67,14 @@ 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[:limit])
|
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
|
+
@schools = EducodeSales::Teacher.joins(:follow_up, :department).where("educode_sales_teacher_follows.staff_id = #{staff.id}").group("school_id").select("school_id, max(educode_sales_teacher_follows.updated_at) AS updated_at")+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")
|
71
72
|
@count = EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{staff.id}").group("school_id").count
|
72
73
|
end
|
73
74
|
|
74
75
|
def follow_up_departments
|
75
76
|
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").
|
77
|
+
@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")+EducodeSales::Teacher.joins(:follow_up, [department: :school]).where("educode_sales_teacher_follows.staff_id = #{staff.id}").select("departments.name, schools.name AS school, educode_sales_teacher_follows.updated_at")
|
77
78
|
end
|
78
79
|
|
79
80
|
|
@@ -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
|
@@ -7,11 +7,11 @@ module EducodeSales
|
|
7
7
|
has_many :follow_ups, dependent: :restrict_with_exception
|
8
8
|
has_many :operation_plans, dependent: :restrict_with_exception
|
9
9
|
has_many :operation_reports, dependent: :restrict_with_exception
|
10
|
-
has_many :sale_reports, dependent: :
|
10
|
+
has_many :sale_reports, dependent: :destroy
|
11
11
|
has_many :follow_ups, dependent: :restrict_with_exception
|
12
12
|
has_many :teacher_follows, dependent: :restrict_with_exception
|
13
|
-
has_many :teachers, dependent: :
|
14
|
-
has_many :places, dependent: :
|
13
|
+
has_many :teachers, dependent: :destroy
|
14
|
+
has_many :places, dependent: :destroy
|
15
15
|
has_many :businesses
|
16
16
|
has_many :activities
|
17
17
|
has_many :sale_plans, dependent: :destroy
|
@@ -5,11 +5,12 @@ module EducodeSales
|
|
5
5
|
has_many :teacher_follows, dependent: :destroy
|
6
6
|
has_many :operation_plans, dependent: :destroy
|
7
7
|
has_many :course_subjects, dependent: :destroy
|
8
|
+
has_many :key_person, dependent: :destroy
|
8
9
|
belongs_to :department, optional: true
|
9
10
|
belongs_to :staff
|
10
11
|
belongs_to :user, optional: true
|
11
|
-
belongs_to :follow_up, counter_cache: true, optional: true
|
12
|
-
|
12
|
+
# belongs_to :follow_up, counter_cache: true, optional: true
|
13
|
+
belongs_to :follow_up, class_name: 'TeacherFollow', optional: true
|
13
14
|
validates :user_id, uniqueness: { allow_blank: true, message: '已存在老师列表'}
|
14
15
|
|
15
16
|
|
@@ -18,11 +19,20 @@ module EducodeSales
|
|
18
19
|
user_ids = User.joins(:user_extension).where(user_extensions: {department_id: self.department_id, identity: 0}).pluck(:id)
|
19
20
|
course_ids = CourseMember.where(role: "CREATOR", user_id: user_ids).pluck(:course_id)
|
20
21
|
if course_ids.present?
|
22
|
+
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")
|
23
|
+
course_members.present? ? course_members[0]['count'] : 0
|
21
24
|
else
|
22
25
|
0
|
23
26
|
end
|
24
|
-
|
25
|
-
|
27
|
+
else
|
28
|
+
0
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def students_count
|
33
|
+
if user_id.present?
|
34
|
+
course_ids = CourseMember.where.not(role: "STUDENT").where(user_id: user_id).pluck(:course_id)
|
35
|
+
CourseMember.where(course_id: course_ids, role: "STUDENT").count
|
26
36
|
else
|
27
37
|
0
|
28
38
|
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>
|
@@ -42,53 +42,45 @@
|
|
42
42
|
[
|
43
43
|
{
|
44
44
|
field: 'id',
|
45
|
-
title:
|
45
|
+
title:'序号',type: 'numbers',
|
46
46
|
width: 60
|
47
47
|
},
|
48
48
|
{
|
49
49
|
field: 'name',
|
50
|
-
width: 300,
|
51
50
|
title: '活动名称',
|
52
51
|
templet: '#teachers'
|
53
52
|
},
|
54
53
|
{
|
55
54
|
field: 'start_at',
|
56
|
-
width:
|
55
|
+
width: 200,
|
57
56
|
title: '时间',
|
58
57
|
sort: true,
|
59
58
|
},
|
60
59
|
{
|
61
60
|
field: 'days',
|
62
61
|
title: '天数',
|
63
|
-
width:
|
62
|
+
width: 200
|
64
63
|
},
|
65
64
|
{
|
66
65
|
field: 'teachers_count',
|
67
66
|
title: '教师数',
|
68
|
-
width:
|
67
|
+
width: 200,
|
69
68
|
templet: '#teachers_count'
|
70
69
|
},
|
71
|
-
// {
|
72
|
-
// field: 'return_rate',
|
73
|
-
// title: '回访率',
|
74
|
-
// },
|
75
|
-
// {
|
76
|
-
// field: 'course_rate',
|
77
|
-
// title: '建课率',
|
78
|
-
// },
|
79
70
|
{
|
80
71
|
field: 'students_count',
|
81
72
|
title: '学生数',
|
82
|
-
width:
|
73
|
+
width: 200
|
83
74
|
},
|
84
75
|
{
|
85
76
|
title: '操作',
|
86
|
-
|
77
|
+
width: 120,
|
87
78
|
toolbar: '#currentTableBar',
|
88
79
|
align: "center"
|
89
80
|
}
|
90
81
|
]
|
91
82
|
],
|
83
|
+
limit: 20,
|
92
84
|
page: true
|
93
85
|
});
|
94
86
|
|
@@ -160,9 +152,9 @@
|
|
160
152
|
})
|
161
153
|
});
|
162
154
|
} else if (obj.event === 'teachers') {
|
163
|
-
|
155
|
+
activity_id = obj.data.id
|
156
|
+
var content = miniPage.getHrefContent('/educode_sales/activities/show_teachers');
|
164
157
|
openWH = miniPage.getOpenWidthHeight();
|
165
|
-
activity_id = obj.data.id;
|
166
158
|
index = layer.open({
|
167
159
|
title: '活动列表/' + data.name,
|
168
160
|
type: 1,
|
@@ -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
|
+
index2 = 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
|
});
|
@@ -1,7 +1,6 @@
|
|
1
1
|
<script type="text/html" id="teacher_toolbar">
|
2
2
|
<div class="layui-btn-container">
|
3
3
|
<span class="table-label">教师列表</span>
|
4
|
-
<!-- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 手动添加</button> -->
|
5
4
|
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="search_new"> 添加
|
6
5
|
</button>
|
7
6
|
</div>
|
@@ -10,9 +9,6 @@
|
|
10
9
|
<table class="layui-hide" id="show_teachers_table" style="min-height: 300px;" lay-filter="teachers_table"></table>
|
11
10
|
</div>
|
12
11
|
<script type="text/html" id="show_teachersTableBar">
|
13
|
-
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addWeek">添加周计划</a>
|
14
|
-
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addMonth">添加月计划</a> -->
|
15
|
-
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a> -->
|
16
12
|
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
|
17
13
|
</script>
|
18
14
|
<script type="text/html" id="name">
|
@@ -63,7 +59,7 @@
|
|
63
59
|
{
|
64
60
|
field: 'id',
|
65
61
|
width: 120,
|
66
|
-
title:
|
62
|
+
title:'序号',type: 'numbers',
|
67
63
|
},
|
68
64
|
{
|
69
65
|
field: 'name',
|
@@ -247,10 +243,11 @@
|
|
247
243
|
});
|
248
244
|
return false;
|
249
245
|
} else if (obj.event === 'delete') {
|
246
|
+
console.log(data);
|
250
247
|
layer.confirm('确定删除' + data.name, function (index) {
|
251
|
-
request.delete('educode_sales/
|
248
|
+
request.delete('educode_sales/teachers/' + data.id, {}, function (res) {
|
252
249
|
layer.close(index);
|
253
|
-
table.reload("
|
250
|
+
table.reload("show_teachers_table")
|
254
251
|
})
|
255
252
|
});
|
256
253
|
} else if (obj.event === 'addWeek') {
|
@@ -288,7 +285,8 @@
|
|
288
285
|
});
|
289
286
|
|
290
287
|
} else if (obj.event === 'courses') {
|
291
|
-
|
288
|
+
teacher_id = data.id
|
289
|
+
content = miniPage.getHrefContent('/educode_sales/teachers/add_courses?id='+data.id);
|
292
290
|
openWH = miniPage.getOpenWidthHeight();
|
293
291
|
index = layer.open({
|
294
292
|
title: '课程方向',
|
@@ -298,12 +296,16 @@
|
|
298
296
|
shadeClose: true,
|
299
297
|
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
300
298
|
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
301
|
-
content: content
|
299
|
+
content: content,
|
300
|
+
success: function (layero, index) {
|
301
|
+
// 重新渲染弹层中的下拉选择框select
|
302
|
+
// form.render('select');
|
303
|
+
}
|
302
304
|
});
|
303
305
|
$(window).on("resize", function () {
|
304
|
-
|
306
|
+
layer.full(index);
|
305
307
|
});
|
306
|
-
}
|
308
|
+
}else if (obj.event === 'event') {
|
307
309
|
content = miniPage.getHrefContent('/educode_sales/teachers/add_event');
|
308
310
|
openWH = miniPage.getOpenWidthHeight();
|
309
311
|
teacher_id = obj.data.id
|
@@ -342,7 +344,7 @@
|
|
342
344
|
layer.full(index);
|
343
345
|
});
|
344
346
|
} else if (obj.event === 'follow') {
|
345
|
-
content = miniPage.getHrefContent('/educode_sales/teachers/show_follow');
|
347
|
+
content = miniPage.getHrefContent('/educode_sales/teachers/show_follow?id=' + data.id);
|
346
348
|
openWH = miniPage.getOpenWidthHeight();
|
347
349
|
index = layer.open({
|
348
350
|
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>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= Gon::Base.render_data %>
|
2
2
|
<div class="layuimini-main edit-table">
|
3
|
-
<div class="layui-form layuimini-form" lay-filter="teacher_form">
|
3
|
+
<div class="layui-form layuimini-form" lay-filter="teacher_form" id="show_plan_box">
|
4
4
|
<fieldset class="table-search-fieldset">
|
5
5
|
<legend>添加回款计划</legend>
|
6
6
|
<div class="layui-form-item">
|
@@ -56,10 +56,15 @@
|
|
56
56
|
</div>
|
57
57
|
</script>
|
58
58
|
<script type="text/html" id="return_money_tabar">
|
59
|
+
{{# if(parent.is_latest){ }}
|
59
60
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">保存</a>
|
60
61
|
<a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="delete">删除</a>
|
62
|
+
{{# } }}
|
61
63
|
</script>
|
62
64
|
<script>
|
65
|
+
if(!parent.is_latest){
|
66
|
+
document.getElementById("show_plan_box").style.display="none";//隐藏
|
67
|
+
}
|
63
68
|
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'laydate'], function () {
|
64
69
|
var form = layui.form,
|
65
70
|
layer = layui.layer,
|
@@ -97,7 +102,7 @@
|
|
97
102
|
[{
|
98
103
|
field: 'id',
|
99
104
|
width: 80,
|
100
|
-
title: '
|
105
|
+
title:'序号',type: 'numbers',
|
101
106
|
sort: true
|
102
107
|
}, {
|
103
108
|
field: 'date_at',
|