educode_sales 1.10.58 → 1.10.70

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/indexlogo.png +0 -0
  3. data/app/assets/javascripts/educode_sales/application.js +1 -0
  4. data/app/assets/javascripts/educode_sales/functions.js +24 -0
  5. data/app/controllers/educode_sales/application_controller.rb +11 -3
  6. data/app/controllers/educode_sales/business_courses_controller.rb +19 -8
  7. data/app/controllers/educode_sales/follow_ups_controller.rb +4 -0
  8. data/app/controllers/educode_sales/plans_controller.rb +718 -11
  9. data/app/controllers/educode_sales/shixuns_controller.rb +20 -10
  10. data/app/controllers/educode_sales/subjects_controller.rb +10 -6
  11. data/app/controllers/educode_sales/teacher_follows_controller.rb +4 -0
  12. data/app/controllers/educode_sales/teachers_controller.rb +3 -0
  13. data/app/models/educode_sales/business.rb +5 -5
  14. data/app/models/educode_sales/permission.rb +7 -0
  15. data/app/models/educode_sales/sales_target.rb +10 -0
  16. data/app/models/educode_sales/sales_target_history.rb +11 -0
  17. data/app/models/educode_sales/sales_target_log.rb +11 -0
  18. data/app/views/educode_sales/business_courses/index.html.erb +1 -1
  19. data/app/views/educode_sales/business_courses/new.html.erb +2 -2
  20. data/app/views/educode_sales/businesses/_follows.html.erb +107 -100
  21. data/app/views/educode_sales/businesses/index.html.erb +6 -3
  22. data/app/views/educode_sales/businesses/index.json.jbuilder +2 -2
  23. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -1
  24. data/app/views/educode_sales/contracts/_follows.html.erb +75 -69
  25. data/app/views/educode_sales/contracts/_list.html.erb +283 -249
  26. data/app/views/educode_sales/contracts/index.json.jbuilder +1 -1
  27. data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -1
  28. data/app/views/educode_sales/plans/_year_execute.html.erb +428 -0
  29. data/app/views/educode_sales/plans/_year_target.html.erb +792 -0
  30. data/app/views/educode_sales/plans/index.html.erb +105 -83
  31. data/app/views/educode_sales/plans/staff_year_business.html.erb +96 -0
  32. data/app/views/educode_sales/plans/staff_year_business.json.jbuilder +22 -0
  33. data/app/views/educode_sales/plans/staff_year_target.json.jbuilder +35 -0
  34. data/app/views/educode_sales/plans/staff_year_target_log.html.erb +62 -0
  35. data/app/views/educode_sales/plans/staff_year_target_log.json.jbuilder +34 -0
  36. data/app/views/educode_sales/plans/year_execute.js.erb +1 -0
  37. data/app/views/educode_sales/plans/year_target.js.erb +1 -0
  38. data/app/views/educode_sales/plans/year_target.json.jbuilder +48 -0
  39. data/app/views/educode_sales/plans/years_all_target.json.jbuilder +54 -0
  40. data/app/views/educode_sales/sales_details/_index.html.erb +6 -3
  41. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +40 -1
  42. data/app/views/educode_sales/shixuns/index.html.erb +106 -97
  43. data/app/views/educode_sales/shixuns/new.html.erb +2 -2
  44. data/app/views/educode_sales/staffs/index.json.jbuilder +1 -1
  45. data/app/views/educode_sales/subjects/index.html.erb +1 -1
  46. data/app/views/educode_sales/subjects/new.html.erb +2 -2
  47. data/app/views/educode_sales/teachers/_follows.html.erb +24 -17
  48. data/app/views/educode_sales/teachers/_index.html.erb +6 -0
  49. data/app/views/layouts/educode_sales/application.html.erb +7 -4
  50. data/config/environments/development.rb +16 -0
  51. data/config/routes.rb +14 -2
  52. data/db/migrate/20230729085359_create_educode_sales_sales_target_histories.rb +45 -0
  53. data/lib/educode_sales/version.rb +1 -1
  54. metadata +24 -8
  55. data/app/views/educode_sales/plans/_target_track.html.erb +0 -178
  56. data/app/views/educode_sales/plans/target_track.js.erb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 666b9ec9b763cfce87df4b2b6a2304625100ba52d94df0cd806fe36266062b3c
4
- data.tar.gz: 494c7222e60d7114c95cd6f213fd11bb5070e2b6f40d45bfdaa3fa880c7e4a0f
3
+ metadata.gz: d8e7d99a35f1c2905d166e4644cba3607d02f8dbc7a998b361b2c22955df75a0
4
+ data.tar.gz: 897fd624ffd57dbc1ea3da2de4a3e9c19c2fe979e425d46515fb44cea2533110
5
5
  SHA512:
6
- metadata.gz: 9cc7914ec32c5e3cda9fa353bf35ddba314450b75f7401d1063469ab4f10b117437a4a93392783ddd7049e21f6012b1faba947be5b05874fd4b235c327c553c4
7
- data.tar.gz: c5276a5f2d6ea22604cea8d6f81acb320f8e8ec7975138741e8e5ab6326f7f368f210a9b983fa0ab48688709de0053ad923a1043eab701b3ab19dac08910c1fc
6
+ metadata.gz: 2eaa9f36661e787d056d8f4d4a9445c90d7e4d12ada69e94233dd215ac6da96d477b065dc281c9a97f6267bc3ad8119c771f9d8ef86467992b97eafc3cfd04ac
7
+ data.tar.gz: '0974f6a51e7c44078b2c55a86bce052599a3cec4c40048359c7ffb2b97e91357cc8a291e6c82986beb938f5cb4fce8361c576b33fac14a672a98e61a79f5fe49'
@@ -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]