educode_sales 1.10.59 → 1.10.71

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/educode_sales/application.js +1 -0
  3. data/app/assets/javascripts/educode_sales/functions.js +24 -0
  4. data/app/controllers/educode_sales/application_controller.rb +11 -3
  5. data/app/controllers/educode_sales/business_courses_controller.rb +19 -8
  6. data/app/controllers/educode_sales/follow_ups_controller.rb +4 -0
  7. data/app/controllers/educode_sales/plans_controller.rb +448 -124
  8. data/app/controllers/educode_sales/shixuns_controller.rb +20 -10
  9. data/app/controllers/educode_sales/subjects_controller.rb +10 -6
  10. data/app/controllers/educode_sales/teacher_follows_controller.rb +4 -0
  11. data/app/controllers/educode_sales/teachers_controller.rb +3 -0
  12. data/app/models/educode_sales/business.rb +5 -5
  13. data/app/models/educode_sales/sales_target.rb +10 -0
  14. data/app/models/educode_sales/sales_target_log.rb +11 -0
  15. data/app/views/educode_sales/business_courses/index.html.erb +1 -1
  16. data/app/views/educode_sales/business_courses/new.html.erb +2 -2
  17. data/app/views/educode_sales/businesses/_follows.html.erb +107 -100
  18. data/app/views/educode_sales/businesses/index.html.erb +6 -3
  19. data/app/views/educode_sales/businesses/index.json.jbuilder +2 -2
  20. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -1
  21. data/app/views/educode_sales/contracts/_follows.html.erb +75 -69
  22. data/app/views/educode_sales/contracts/_list.html.erb +283 -249
  23. data/app/views/educode_sales/contracts/index.json.jbuilder +1 -1
  24. data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -1
  25. data/app/views/educode_sales/plans/_year_execute.html.erb +294 -159
  26. data/app/views/educode_sales/plans/_year_target.html.erb +330 -215
  27. data/app/views/educode_sales/plans/index.html.erb +3 -4
  28. data/app/views/educode_sales/plans/staff_year_business.html.erb +96 -0
  29. data/app/views/educode_sales/plans/staff_year_business.json.jbuilder +22 -0
  30. data/app/views/educode_sales/plans/staff_year_target.json.jbuilder +35 -0
  31. data/app/views/educode_sales/plans/staff_year_target_log.html.erb +62 -0
  32. data/app/views/educode_sales/plans/staff_year_target_log.json.jbuilder +34 -0
  33. data/app/views/educode_sales/plans/years_all_target.json.jbuilder +5 -4
  34. data/app/views/educode_sales/sales_details/_index.html.erb +6 -3
  35. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +40 -1
  36. data/app/views/educode_sales/shixuns/index.html.erb +106 -97
  37. data/app/views/educode_sales/shixuns/new.html.erb +2 -2
  38. data/app/views/educode_sales/staffs/index.json.jbuilder +1 -1
  39. data/app/views/educode_sales/subjects/index.html.erb +1 -1
  40. data/app/views/educode_sales/subjects/new.html.erb +2 -2
  41. data/app/views/educode_sales/teachers/_follows.html.erb +24 -17
  42. data/app/views/educode_sales/teachers/_index.html.erb +6 -0
  43. data/app/views/layouts/educode_sales/application.html.erb +6 -3
  44. data/config/environments/development.rb +16 -0
  45. data/config/routes.rb +7 -0
  46. data/db/migrate/20230729085359_create_educode_sales_sales_target_histories.rb +1 -1
  47. data/lib/educode_sales/version.rb +1 -1
  48. metadata +11 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e79e3bb70dfa210936c30a10cbf201a4fda9065f8d6243f5404cb18e39f4a6c
4
- data.tar.gz: f57a3be46b0e597d85025e1bf97cfeb4851cc2a2f76fe6937692063cbb5a0fde
3
+ metadata.gz: 8bb3032484ff8a665cb7f216b4a99850b3cf4d4fa863dd533102458ab865b603
4
+ data.tar.gz: 14451a898ca11a00b18c19604c471bb7d14acca2c5fd30ff2db13202bd38cc4b
5
5
  SHA512:
6
- metadata.gz: c166871e6c22988d3811c17cd50c6cbea1aee2c4b76ac1b0c908a8c8accabe29dabb75154415a17ee9342291a501e9479a4016611676bef70a8778cba2c8a2d3
7
- data.tar.gz: a856cd0c13fae3647dc01acfb2ddcaf95e7c33a27f9075eaa951e723756491e7928b5c541a2988b683ffd7506a46708a81072bfd44204323cef0c6b1bb42a257
6
+ metadata.gz: a9c9a067531e4a5c6ea32d614206f962d042f5a876d0c0786bb654167f87e8a7dda940629aa63baaaf94be010bbbfb1a1ca3c1d1d4a321de41c3c7220574d1df
7
+ data.tar.gz: 2fc32f16d342cd16105de2faff7438fe16a6cf1496e2228fff2211ea4e99aa1b2bf35ec54265adfc5e5ddf8840c343f0a6114274ddad4b6f58e7721046808666
@@ -17,3 +17,4 @@
17
17
  //= require_tree ./extent
18
18
  //= require ./jquery.cxselect
19
19
  //= require ./table2excel
20
+ //= require ./functions.js
@@ -0,0 +1,24 @@
1
+ layui.define(function(exports){
2
+ let functions = {
3
+ initTableColumnsFilter: function (tableId, cols) {
4
+ var local = layui.data('table-filter-' + tableId);
5
+ layui.each(cols, function(index, item) {
6
+ if (item.field !== 'undefined' && item.field in local) {
7
+ item.hide = local[item.field];
8
+ }
9
+ });
10
+ return cols;
11
+ },
12
+ observerTableColumnFilter: function (that) {
13
+ that.elem.next().on('mousedown', 'input[lay-filter="LAY_TABLE_TOOL_COLS"]+', function(){
14
+ var input = $(this).prev()[0];
15
+ layui.data ('table-filter-'+ that.id, {
16
+ key: input.name,
17
+ value: input.checked
18
+ });
19
+ });
20
+ }
21
+ // 其他公共方法...
22
+ };
23
+ exports('functions', functions);
24
+ });
@@ -5,11 +5,19 @@ module EducodeSales
5
5
  before_action :authenticate_request
6
6
 
7
7
 
8
- def is_commissioner_above?
9
- return true if @current_admin.is_admin?
10
- ["销售总监", "副总", "生态运营总监", "方案总监", "售后总监", "课程组总监"].include? @current_admin.role.name
8
+ def is_commissioner_above?(clazz_type="business")
9
+ return true if @current_admin.is_admin?
10
+ case clazz_type
11
+ when "business"
12
+ can?(:all_business, EducodeSales::BusinessDeliverSubject)
13
+ when "shixun"
14
+ can?(:all_shixun, EducodeSales::BusinessDeliverSubject)
15
+ when "subject"
16
+ can?(:all_subject, EducodeSales::BusinessDeliverSubject)
17
+ end
11
18
  end
12
19
 
20
+
13
21
  def subject_members
14
22
  common = Common.find_by(clazz: 'staff_type', name: '课程')
15
23
  @manages = Staff.joins(:user).where(job_type: common.id.to_i).where.not(role_id: 11).map { |d| {name: d.user.real_name, value: d.id}}
@@ -5,11 +5,20 @@ module EducodeSales
5
5
  # 商机交付课程
6
6
  class BusinessCoursesController < ApplicationController
7
7
  include BusinessCoursesHelper
8
- include? SubjectHelper
8
+ include SubjectHelper
9
9
  before_action :subject_members, :subject_url
10
+ before_action :have_permission?, only: %i(index new create edit)
11
+
12
+ # 查看cancancan Gem优化代码
13
+ def have_permission?
14
+ have_permission = can?(:business, EducodeSales::BusinessDeliverSubject) || can?(:all_business, EducodeSales::BusinessDeliverSubject)
15
+
16
+ have_permission || @current_admin.is_admin ? "" : authorize!(:business, BusinessDeliverSubject)
17
+ end
18
+
19
+
10
20
 
11
21
  def index
12
- authorize! :business, BusinessDeliverSubject
13
22
  respond_to do |format|
14
23
  format.html do
15
24
  end
@@ -50,7 +59,6 @@ module EducodeSales
50
59
  end
51
60
 
52
61
  def edit
53
- authorize! :business, BusinessDeliverSubject
54
62
  if params[:id]
55
63
  # 查询商机信息 和交付状态等
56
64
  @item = BusinessDeliverSubject.joins(:business)
@@ -73,7 +81,6 @@ module EducodeSales
73
81
  end
74
82
 
75
83
  def update
76
- authorize! :business, BusinessDeliverSubject
77
84
  # 开启事务
78
85
  ActiveRecord::Base.transaction do
79
86
  @business = BusinessDeliverSubject.find_by(id: params[:id])
@@ -108,7 +115,6 @@ module EducodeSales
108
115
  end
109
116
 
110
117
  def new
111
- authorize! :business, BusinessDeliverSubject
112
118
  staffs = Staff.where.not(role_id: 11).includes(:user)
113
119
  @businesses = Business
114
120
  # 要求只能是已签单的商机
@@ -118,7 +124,6 @@ module EducodeSales
118
124
  end
119
125
 
120
126
  def create
121
- authorize! :business, BusinessDeliverSubject
122
127
  # 开启事务
123
128
  ActiveRecord::Base.transaction do
124
129
  item = BusinessDeliverSubject.find_by(business_id: params[:business][:business_id])
@@ -149,10 +154,16 @@ module EducodeSales
149
154
  @businesses = Business.joins(:last_follow_up, :school)
150
155
  .where("educode_sales_businesses.name LIKE '%#{params[:q]}%' and educode_sales_follow_ups.stage_id = #{stage_id} ")
151
156
  .where("educode_sales_businesses.id not in (?) ", BusinessDeliverSubject.pluck(:business_id).map(&:to_i)) # todo 数组中包含nil会导致查询失败,无法找到数据
152
- .select("educode_sales_businesses.*, schools.name as s_name, schools.id as s_id")
153
157
 
158
+
159
+ common = Common.find_by(clazz: 'staff_type', name: '销售')
160
+ @staffs = Staff.find(current_user.id)
161
+ if @staffs.present? && common.id.to_i == @staffs.job_type.to_i
162
+ @businesses = @businesses.where(staff_id:current_user.id)
163
+ end
154
164
  @count = @businesses.count("educode_sales_businesses.id")
155
- @businesses = @businesses.page(params[:page]).per(10)
165
+ @businesses = @businesses.select("educode_sales_businesses.*, schools.name as s_name, schools.id as s_id")
166
+ .page(params[:page]).per(10)
156
167
  render json: {
157
168
  data: @businesses,
158
169
  code: 0
@@ -79,6 +79,10 @@ module EducodeSales
79
79
 
80
80
  end
81
81
 
82
+ if params[:q].present? && params[:q][:staff].present?
83
+ @follow_ups = @follow_ups.joins(business: [staff: :user]).where("CONCAT(users.lastname, users.firstname) like ?", "%#{params[:q][:staff]}%")
84
+ end
85
+
82
86
  @follow_ups = @follow_ups.includes(:staff, :clazz, :stage, key_person: :teacher, business: [department: :school])
83
87
 
84
88
  if params[:sort].present? && params[:sort][:field]