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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/indexlogo.png +0 -0
  3. data/app/assets/stylesheets/educode_sales/app.css +24 -0
  4. data/app/assets/stylesheets/educode_sales/public.css +4 -0
  5. data/app/controllers/educode_sales/businesses_controller.rb +12 -1
  6. data/app/controllers/educode_sales/follow_ups_controller.rb +14 -1
  7. data/app/controllers/educode_sales/home_controller.rb +7 -7
  8. data/app/controllers/educode_sales/operation_plans_controller.rb +2 -2
  9. data/app/controllers/educode_sales/operation_reports_controller.rb +3 -3
  10. data/app/controllers/educode_sales/plans_controller.rb +2 -2
  11. data/app/controllers/educode_sales/staffs_controller.rb +3 -2
  12. data/app/controllers/educode_sales/teacher_follows_controller.rb +1 -0
  13. data/app/controllers/educode_sales/teachers_controller.rb +1 -0
  14. data/app/models/educode_sales/activity.rb +1 -1
  15. data/app/models/educode_sales/common.rb +4 -0
  16. data/app/models/educode_sales/follow_up.rb +1 -1
  17. data/app/models/educode_sales/staff.rb +3 -3
  18. data/app/models/educode_sales/teacher.rb +14 -4
  19. data/app/views/educode_sales/activities/index.html.erb +32 -18
  20. data/app/views/educode_sales/activities/show_teachers.html.erb +14 -12
  21. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +1 -0
  22. data/app/views/educode_sales/businesses/edit_plan.html.erb +7 -2
  23. data/app/views/educode_sales/businesses/index.html.erb +18 -10
  24. data/app/views/educode_sales/businesses/index.json.jbuilder +3 -1
  25. data/app/views/educode_sales/businesses/new.html.erb +1 -1
  26. data/app/views/educode_sales/businesses/new_follow_record.html.erb +12 -2
  27. data/app/views/educode_sales/businesses/show_follow.html.erb +24 -19
  28. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
  29. data/app/views/educode_sales/businesses/show_keys.html.erb +1 -1
  30. data/app/views/educode_sales/commons/edit.html.erb +1 -1
  31. data/app/views/educode_sales/commons/index.html.erb +2 -3
  32. data/app/views/educode_sales/home/index.html.erb +1 -1
  33. data/app/views/educode_sales/home/search_teacher.json.jbuilder +2 -2
  34. data/app/views/educode_sales/home/statistics.html.erb +1 -0
  35. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +2 -3
  36. data/app/views/educode_sales/operation_plans/_monthly.html.erb +2 -2
  37. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +2 -3
  38. data/app/views/educode_sales/operation_plans/_weekly.html.erb +2 -1
  39. data/app/views/educode_sales/operation_plans/edit_month.html.erb +4 -3
  40. data/app/views/educode_sales/operation_plans/edit_monthly.html.erb +3 -3
  41. data/app/views/educode_sales/operation_plans/edit_week.html.erb +4 -3
  42. data/app/views/educode_sales/operation_plans/edit_weekly.html.erb +3 -3
  43. data/app/views/educode_sales/operation_plans/new_month.html.erb +5 -4
  44. data/app/views/educode_sales/operation_plans/new_monthly.html.erb +3 -3
  45. data/app/views/educode_sales/operation_plans/new_week.html.erb +5 -4
  46. data/app/views/educode_sales/operation_plans/new_weekly.html.erb +3 -3
  47. data/app/views/educode_sales/operation_plans/show_monthly.html.erb +3 -3
  48. data/app/views/educode_sales/operation_plans/show_weekly.html.erb +3 -3
  49. data/app/views/educode_sales/operation_reports/audit.html.erb +3 -3
  50. data/app/views/educode_sales/operation_reports/edit.html.erb +4 -4
  51. data/app/views/educode_sales/operation_reports/show.html.erb +140 -28
  52. data/app/views/educode_sales/places/index.html.erb +6 -6
  53. data/app/views/educode_sales/plans/_monthPlan.html.erb +11 -7
  54. data/app/views/educode_sales/plans/_monthly.html.erb +2 -1
  55. data/app/views/educode_sales/plans/_weekPlan.html.erb +2 -1
  56. data/app/views/educode_sales/plans/_weekly.html.erb +2 -1
  57. data/app/views/educode_sales/plans/audit_weekly.html.erb +3 -3
  58. data/app/views/educode_sales/plans/edit_monthly.html.erb +3 -3
  59. data/app/views/educode_sales/plans/edit_week.html.erb +1 -1
  60. data/app/views/educode_sales/plans/edit_weekly.html.erb +1 -1
  61. data/app/views/educode_sales/plans/new_monthly.html.erb +1 -1
  62. data/app/views/educode_sales/plans/new_week.html.erb +3 -1
  63. data/app/views/educode_sales/plans/new_weekly.html.erb +2 -1
  64. data/app/views/educode_sales/plans/show_monthly.html.erb +3 -3
  65. data/app/views/educode_sales/plans/show_weekly.html.erb +1 -1
  66. data/app/views/educode_sales/roles/index.html.erb +2 -1
  67. data/app/views/educode_sales/sale_reports/audit.html.erb +2 -2
  68. data/app/views/educode_sales/sale_reports/edit.html.erb +4 -4
  69. data/app/views/educode_sales/sale_reports/show.html.erb +2 -2
  70. data/app/views/educode_sales/sale_trends/operations.html.erb +1 -1
  71. data/app/views/educode_sales/sale_trends/trends.html.erb +1 -1
  72. data/app/views/educode_sales/sales/index.html.erb +12 -7
  73. data/app/views/educode_sales/sales/index.json.jbuilder +1 -1
  74. data/app/views/educode_sales/sales/operations.html.erb +7 -5
  75. data/app/views/educode_sales/sales/operations.json.jbuilder +3 -2
  76. data/app/views/educode_sales/sales/school.html.erb +1 -2
  77. data/app/views/educode_sales/sales/xschool.html.erb +1 -2
  78. data/app/views/educode_sales/staffs/follow_up_departments.json.jbuilder +1 -2
  79. data/app/views/educode_sales/staffs/follow_up_schools.json.jbuilder +1 -2
  80. data/app/views/educode_sales/staffs/index.html.erb +6 -8
  81. data/app/views/educode_sales/staffs/new.html.erb +1 -1
  82. data/app/views/educode_sales/teachers/add_courses.html.erb +3 -3
  83. data/app/views/educode_sales/teachers/add_event.html.erb +1 -1
  84. data/app/views/educode_sales/teachers/add_keys.html.erb +11 -5
  85. data/app/views/educode_sales/teachers/course_list.json.jbuilder +1 -0
  86. data/app/views/educode_sales/teachers/course_subject.json.jbuilder +1 -1
  87. data/app/views/educode_sales/teachers/index.html.erb +11 -9
  88. data/app/views/educode_sales/teachers/index.json.jbuilder +3 -2
  89. data/app/views/educode_sales/teachers/new.html.erb +3 -5
  90. data/app/views/educode_sales/teachers/new_follow_record.html.erb +1 -0
  91. data/app/views/educode_sales/teachers/search_new.html.erb +2 -2
  92. data/app/views/educode_sales/teachers/show_class.html.erb +7 -1
  93. data/app/views/educode_sales/teachers/show_follow.html.erb +11 -9
  94. data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -0
  95. data/app/views/layouts/educode_sales/application.html.erb +6 -9
  96. data/config/routes.rb +1 -0
  97. data/lib/educode_sales/version.rb +1 -1
  98. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 701b98e32352e12147e3d299f1fc472104e79900
4
- data.tar.gz: '09bf0ee2949ccfa809b77fae0fdee56cebc10941'
3
+ metadata.gz: 502c9e7e4d9ee833267a0437e118c4f91bc17cd6
4
+ data.tar.gz: 6b1cd1a51cc2aaa8de78ab2bb81cb251e7a015d4
5
5
  SHA512:
6
- metadata.gz: a69e25dab404aafef54c493263e10df1cf3541a687b5d1b56ff2fa630f7bdc7df70aef76eb968896499625f4a05579c94f1871991c99fd563821141195c14558
7
- data.tar.gz: c736a30571dfe038f29da56b9563b1ab62edf49cd33ec76024dca760d31e44bfbb7a4553f47cf40a67f9f0313b2566a19d51e1e37396c93575353733210c29be
6
+ metadata.gz: 64df20ba0bfad8e1771a8b6b36a0dbcf12367ec372f1b63a5ca655655a8a0469bf9f5b82443f823332bc46d99288b21d5e815ff0e59dd3e910ccc313d15e2c38
7
+ data.tar.gz: be53e1e0259e68a32eb92fb7278494ec5029278cbb2b73473ca86f4d9b3a4808f6ddc92e96211c06e56ec57e141beae594009cb8d4c8cfd7b3716a10e501a339
@@ -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
  }
@@ -45,3 +45,7 @@
45
45
  padding: 10px 20px 5px 20px;
46
46
  color: #6b6b6b;
47
47
  }
48
+
49
+ input::placeholder {
50
+ font-size: 6px;
51
+ }
@@ -7,7 +7,8 @@ module EducodeSales
7
7
  authorize! :read, Business
8
8
  respond_to do |format|
9
9
  format.html do
10
- @staffs = Staff.joins(:user).map { |d| [d.user.real_name, d.id]}
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 ? OR login like ?", "%#{params[:q]}%", "%#{params[:q]}%").limit(10)
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(10)
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(10)
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(10)
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(10)
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(10)
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(10)
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 = @current_admin.operation_reports.find(params[:id])
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 = @current_admin.operation_reports.find(params[:id])
80
+ @sale_report = OperationReport.find(params[:id])
81
81
  render layout: false
82
82
  end
83
83
 
84
84
  def update
85
- sale_report = @current_admin.operation_reports.find(params[:id])
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").page(params[:page]).per(params[:limit])
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
 
@@ -15,6 +15,7 @@ module EducodeSales
15
15
  follow_up.courses_count = course_ids.size
16
16
  end
17
17
  if follow_up.save
18
+ @teacher.update(follow_up_id: follow_up.id)
18
19
  render_success
19
20
  else
20
21
  render_failure follow_up
@@ -207,6 +207,7 @@ module EducodeSales
207
207
  @follow_ups = @follow_ups.order("created_at desc")
208
208
  end
209
209
  @follow_ups = @follow_ups.page(params[:page]).per(params[:limit])
210
+ @latest = @follow_ups.order(created_at: :desc).first.created_at.to_s
210
211
  end
211
212
  end
212
213
  end
@@ -1,7 +1,7 @@
1
1
  module EducodeSales
2
2
  class Activity < ApplicationRecord
3
3
  belongs_to :staff
4
- has_many :activity_teachers
4
+ has_many :activity_teachers, dependent: :destroy
5
5
  has_many :teachers, through: :activity_teachers, dependent: :restrict_with_exception
6
6
  end
7
7
  end
@@ -29,5 +29,9 @@ module EducodeSales
29
29
  def self.key_attitude_name
30
30
  self.where(clazz: 'key_attitude').pluck(:id, :name).to_h
31
31
  end
32
+
33
+ def self.teacher_attitude_name
34
+ self.where(clazz: 'teacher_attitude').pluck(:id, :name).to_h
35
+ end
32
36
  end
33
37
  end
@@ -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: :restrict_with_exception
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: :restrict_with_exception
14
- has_many :places, dependent: :restrict_with_exception
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
- 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")
25
- course_members.present? ? course_members[0]['count'] : 0
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="teachers" class="layui-table-link">{{ d.teachers_count}}</a>
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: 180,
55
+ width: 200,
57
56
  title: '时间',
58
57
  sort: true,
59
58
  },
60
59
  {
61
60
  field: 'days',
62
61
  title: '天数',
63
- width: 80
62
+ width: 200
64
63
  },
65
64
  {
66
65
  field: 'teachers_count',
67
66
  title: '教师数',
68
- width: 100,
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: 100
73
+ width: 200
83
74
  },
84
75
  {
85
76
  title: '操作',
86
- minWidth: 150,
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
- var content = miniPage.getHrefContent('/educode_sales/activities/show_teachers');
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/businesses/' + data.id, {}, function (res) {
248
+ request.delete('educode_sales/teachers/' + data.id, {}, function (res) {
252
249
  layer.close(index);
253
- table.reload("teachers_table")
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
- content = miniPage.getHrefContent('/educode_sales/teachers/add_courses');
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
- layer.full(index);
306
+ layer.full(index);
305
307
  });
306
- } else if (obj.event === 'event') {
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: 'ID',
105
+ title:'序号',type: 'numbers',
101
106
  sort: true
102
107
  }, {
103
108
  field: 'date_at',