educode_sales 1.10.48 → 1.10.49

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/educode_sales/modules/easyeditor/easyeditor.css +130 -0
  3. data/app/assets/stylesheets/educode_sales/modules/easyeditor/fangge-style.css +4 -0
  4. data/app/controllers/educode_sales/application_controller.rb +12 -0
  5. data/app/controllers/educode_sales/business_courses_controller.rb +230 -0
  6. data/app/controllers/educode_sales/home_controller.rb +7 -0
  7. data/app/controllers/educode_sales/shixun_dectects_controller.rb +111 -0
  8. data/app/controllers/educode_sales/shixuns_controller.rb +157 -0
  9. data/app/controllers/educode_sales/subject_trends_controller.rb +937 -0
  10. data/app/controllers/educode_sales/subjects_controller.rb +202 -0
  11. data/app/helpers/educode_sales/application_helper.rb +8 -0
  12. data/app/helpers/educode_sales/business_courses_helper.rb +37 -0
  13. data/app/helpers/educode_sales/subject_helper.rb +29 -0
  14. data/app/models/educode_sales/business.rb +22 -0
  15. data/app/models/educode_sales/business_deliver_subject.rb +48 -0
  16. data/app/models/educode_sales/business_subject.rb +62 -0
  17. data/app/models/educode_sales/business_subject_shixun.rb +46 -0
  18. data/app/models/educode_sales/business_subject_staff.rb +35 -0
  19. data/app/models/educode_sales/permission.rb +2 -1
  20. data/app/models/educode_sales/shixun_dectect.rb +12 -0
  21. data/app/views/educode_sales/business_courses/edit.html.erb +148 -0
  22. data/app/views/educode_sales/business_courses/index.html.erb +312 -0
  23. data/app/views/educode_sales/business_courses/index.json.jbuilder +16 -0
  24. data/app/views/educode_sales/business_courses/list_shixuns.html.erb +224 -0
  25. data/app/views/educode_sales/business_courses/list_shixuns.json.jbuilder +17 -0
  26. data/app/views/educode_sales/business_courses/list_subjects.html.erb +217 -0
  27. data/app/views/educode_sales/business_courses/list_subjects.json.jbuilder +12 -0
  28. data/app/views/educode_sales/business_courses/new.html.erb +212 -0
  29. data/app/views/educode_sales/shixun_dectects/index.html.erb +466 -0
  30. data/app/views/educode_sales/shixun_dectects/index.json.jbuilder +22 -0
  31. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +60 -0
  32. data/app/views/educode_sales/shixuns/edit.html.erb +186 -0
  33. data/app/views/educode_sales/shixuns/index.html.erb +513 -0
  34. data/app/views/educode_sales/shixuns/index.json.jbuilder +22 -0
  35. data/app/views/educode_sales/shixuns/new.html.erb +251 -0
  36. data/app/views/educode_sales/subject_trends/trends.html.erb +1074 -0
  37. data/app/views/educode_sales/subjects/edit.html.erb +86 -0
  38. data/app/views/educode_sales/subjects/index.html.erb +247 -0
  39. data/app/views/educode_sales/subjects/index.json.jbuilder +16 -0
  40. data/app/views/educode_sales/subjects/list_shixuns.html.erb +228 -0
  41. data/app/views/educode_sales/subjects/list_shixuns.json.jbuilder +17 -0
  42. data/app/views/educode_sales/subjects/new.html.erb +254 -0
  43. data/app/views/layouts/educode_sales/application.html.erb +38 -0
  44. data/config/routes.rb +37 -0
  45. data/lib/educode_sales/version.rb +1 -1
  46. metadata +37 -1
@@ -0,0 +1,202 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EducodeSales
4
+ include SubjectHelper
5
+
6
+ # 实践课程管理
7
+ class SubjectsController < ApplicationController
8
+ before_action :subject_members
9
+
10
+ def index
11
+ authorize! :subject, BusinessDeliverSubject
12
+ respond_to do |format|
13
+ format.html do
14
+ end
15
+ format.json do
16
+ # d.last_follow_up&.assign_follow_ups.present? ? (d.last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : d.staff&.user&.real_name
17
+ business_subject = BusinessSubject.joins(:subject).left_joins(business_deliver_subject: [:manages, business: [:last_follow_up]])
18
+ if params[:q] && params[:q][:shixun].present?
19
+ business_subject = business_subject.joins("INNER JOIN educode_sales_business_subject_shixuns ON educode_sales_business_subject_shixuns.business_subject_id = educode_sales_business_subjects.id")
20
+ .where("educode_sales_business_subject_shixuns.name like '%#{params[:q][:shixun]}%'")
21
+ end
22
+ # 查询条件 实践课程名称
23
+ if params[:q] && params[:q][:subjects_name].present?
24
+ business_subject = business_subject.where("subjects.name like '%#{params[:q][:subjects_name]}%'")
25
+ end
26
+ # 查询条件 时间
27
+ if params[:q] && params[:q][:time].present?
28
+ start_time = params[:q][:time].split(" - ")[0]
29
+ end_time = params[:q][:time].split(" - ")[-1]
30
+ business_subject = business_subject.where("educode_sales_business_subjects.deliver_date BETWEEN '#{start_time}' AND '#{end_time}' OR
31
+ educode_sales_follow_ups.reception_at BETWEEN'#{start_time}' AND '#{end_time}'")
32
+ end
33
+
34
+ business_subject_schools = {}
35
+ business_subject_manges = {}
36
+ business_subject_staffs = {}
37
+ BusinessSubject.includes(:school, :manages, :subject, :staffs, business_deliver_subject: [:manages, business: [:school, last_follow_up: :assign_follow_ups] ]).each do |d|
38
+ b_d_s = d.business_deliver_subject
39
+
40
+ b_d_s.present? ? business_subject_schools.merge!({ "#{d.id}": d.business.school_name }) : business_subject_schools.merge!({"#{d.id}": d.school_name })
41
+ b_d_s.present? ? business_subject_manges.merge!({ "#{d.id}": b_d_s.subject_manages}) : business_subject_manges.merge!({"#{d.id}": d.manges_name })
42
+ b_d_s.present? ? business_subject_staffs.merge!({ "#{d.id}": d.business.staff_name }) : business_subject_staffs.merge!({"#{d.id}": "--" }) # 先暂时处理
43
+
44
+ end
45
+ @business_subject_schools = business_subject_schools.stringify_keys
46
+ @business_subject_staffs = business_subject_staffs.stringify_keys
47
+ @business_subject_manges = business_subject_manges.stringify_keys
48
+
49
+ business_subject = business_subject.select("subjects.name s_name,
50
+ subjects.status status,
51
+ subjects.public public,
52
+ educode_sales_business_subjects.id,
53
+ IFNULL(educode_sales_follow_ups.reception_at, educode_sales_business_subjects.deliver_date) deliver_date,
54
+ IFNULL(educode_sales_businesses.name, '--' ) b_name
55
+ ")
56
+ @count = business_subject.count("educode_sales_business_subjects.id")
57
+ @business_subject = business_subject.page(params[:page]).per(params[:limit])
58
+
59
+ end
60
+ end
61
+ end
62
+
63
+ def new
64
+ authorize! :subject, BusinessDeliverSubject
65
+ # staffs = Staff.where.not(role_id: 11).includes(:user)
66
+ gon.staffs = @manages
67
+ render layout: false
68
+ end
69
+
70
+ def edit
71
+ authorize! :subject, BusinessDeliverSubject
72
+ if params[:id]
73
+ business_subject = BusinessSubject.find(params[:id])
74
+ @item = business_subject.subject
75
+ @select = @item.shixuns.map { |item| { value: item.id, name: item.name } }
76
+ @id = business_subject.id
77
+ @school_id = business_subject.school_id
78
+ @default_select = BusinessSubjectShixun.where("business_subject_id = #{params[:id]}")
79
+ .select(:shixun_id)
80
+ .map { |item| item.shixun_id }
81
+ render layout: false
82
+ end
83
+ end
84
+
85
+ def create
86
+ authorize! :subject, BusinessDeliverSubject
87
+ # 开启事务
88
+ ActiveRecord::Base.transaction do
89
+ subject = Subject.where.not(id: BusinessSubject.pluck(:subject_id) ).find_by(id: params[:subject_id])
90
+ if subject.present?
91
+ attr = {
92
+ deliver_date: params[:deliver_date],
93
+ school_id: params[:school_id],
94
+ subject_id: subject.id
95
+ }
96
+ new_object = BusinessSubject.create(attr)
97
+
98
+ subject.add_subject_shixuns(params[:shixun_ids].split(',').map(&:to_i))
99
+
100
+
101
+ BusinessSubjectStaff.bulk_insert(:staff_id, :container_id, :container_type, :created_at, :updated_at, :category) do |d|
102
+ params[:manage_id].split(",").each do |m|
103
+ d.add [m.to_i, new_object.id, BusinessSubjectStaff::CONTAINER_TYPES::SUBJECT, Time.now, Time.now, BusinessSubjectStaff::CATEGORY_TYPES::SUBJECT_MANAGE ]
104
+ end
105
+ params[:sale_id].split(",").each do |s|
106
+ d.add [s.to_i, new_object.id, BusinessSubjectStaff::CONTAINER_TYPES::SUBJECT, Time.now, Time.now, BusinessSubjectStaff::CATEGORY_TYPES::SUBJECT_STAFF ]
107
+ end
108
+ end
109
+
110
+ render_success
111
+ else
112
+ render_failure("操作失败")
113
+ end
114
+ end
115
+ end
116
+
117
+ def update
118
+ authorize! :subject, BusinessDeliverSubject
119
+ # 开启事务
120
+ ActiveRecord::Base.transaction do
121
+ business_subject = BusinessSubject.find_by(id: params[:id])
122
+
123
+ if business_subject
124
+ new_shixun_ids = params[:shixun_ids].split(',').map(&:to_i)
125
+ old_shixun_ids = business_subject.business_subject_shixuns.pluck(:shixun_id)
126
+
127
+ # 需要删除的科目id
128
+ change_shixuns = old_shixun_ids - new_shixun_ids
129
+ add_shixuns = new_shixun_ids - old_shixun_ids
130
+
131
+ # 取消关联
132
+ business_subject.business_subject_shixuns.where(shixun_id: change_shixuns).update_all(business_subject_id: nil)
133
+
134
+ # 创建关联
135
+ business_subject.add_subject_shixuns(add_shixuns)
136
+
137
+ render_success
138
+ else
139
+ render_failure("操作失败")
140
+ end
141
+
142
+ end
143
+ end
144
+
145
+ def shixun_list
146
+ respond_to do |format|
147
+ format.json do
148
+ @list = Shixun.unhidden.where.not(id: BusinessSubjectShixun.joins(:business_subject).pluck(:shixun_id) ) # 1先创建实践项目下,通过实践课程无法选该实践项目
149
+ if params[:q].present?
150
+ @list = @list.where("name like '%#{params[:q]}%'").page(params[:page]).per(10)
151
+ end
152
+ if params[:subject_id].present?
153
+ @list = @list.joins(:stage_shixuns).where("subject_id = #{params[:subject_id]}")
154
+ end
155
+ render json: {
156
+ data: @list.map { |item| { value: item[:id], name: item[:name] } },
157
+ code: 0
158
+ }
159
+ end
160
+ end
161
+ end
162
+
163
+ def search_subjects
164
+ respond_to do |format|
165
+ format.json do
166
+ @subjects = Subject.unhidden.where.not(id: BusinessSubject.pluck(:subject_id)).where("name like '%#{params[:q]}%' ").page(params[:page]).per(10)
167
+ render json: {
168
+ data: @subjects.map { |item| { value: item[:id], name: item[:name] } },
169
+ code: 0,
170
+ count: @subjects.total_count / 10
171
+ }
172
+ end
173
+ end
174
+ end
175
+
176
+ def list_shixuns
177
+ if params[:id].present?
178
+ @shixuns = BusinessSubjectShixun.where("business_subject_id = #{params[:id]}")
179
+ .joins(:shixun)
180
+ if params[:q].present? && params[:q][:shixun_name].present?
181
+ @shixuns = @shixuns.where("shixuns.name like '%#{params[:q][:shixun_name]}%'")
182
+ end
183
+ if params[:q].present? && params[:q][:level].present? && params[:q][:level].to_i != 0
184
+ @shixuns = @shixuns.where(level: params[:q][:level])
185
+ end
186
+ # 项目状态 0 全部
187
+ if params[:q].present? && params[:q][:status].present? && params[:q][:status].to_i != 0
188
+ @shixuns = @shixuns.where(shixun_status: params[:q][:status])
189
+ end
190
+ if params[:q].present? && params[:q][:category].present? && params[:q][:category].to_i != 0
191
+ @shixuns = @shixuns.where(category: params[:q][:category])
192
+ end
193
+ @shixuns = @shixuns.select("educode_sales_business_subject_shixuns.*,
194
+ shixuns.name as shixun_name")
195
+ .page(params[:page])
196
+ .per(params[:limit])
197
+ end
198
+ render layout: false
199
+ end
200
+
201
+ end
202
+ end
@@ -9,6 +9,14 @@ module EducodeSales
9
9
  end
10
10
  end
11
11
 
12
+ def handled_data(item)
13
+ item.blank? ? "--" : item
14
+ end
15
+
16
+ def handled_time_data(item)
17
+ item.blank? ? "--" : item.strftime("%Y-%m-%d")
18
+ end
19
+
12
20
  def url_to_avatar(source)
13
21
  return "" if source.blank?
14
22
  if File.exist?(disk_filename(source&.class, source&.id)) && File.file?(disk_filename(source&.class, source&.id))
@@ -0,0 +1,37 @@
1
+ module EducodeSales
2
+ module BusinessCoursesHelper
3
+
4
+ def real_shixun_type(type)
5
+ case type.to_i
6
+ when 1
7
+ "管培"
8
+ when 2
9
+ "专职"
10
+ when 3
11
+ "全职"
12
+ else
13
+ "管培"
14
+ end
15
+ end
16
+
17
+
18
+ def real_shixun_level(level)
19
+ case level.to_i
20
+ when 1
21
+ "不明确"
22
+ when 2
23
+ "重要紧急"
24
+ when 3
25
+ "建设重要不紧急中"
26
+ when 4
27
+ "不重要紧急"
28
+ when 5
29
+ "不重要不紧急"
30
+ else
31
+ "不明确"
32
+ end
33
+ end
34
+
35
+
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ module EducodeSales
2
+ module SubjectHelper
3
+
4
+
5
+ def school_name(item)
6
+ item.business ? item.business.school.name : item.school_name
7
+ end
8
+
9
+ # def deliver_date(item)
10
+ # item.business ? item.business.p_course_time : item.deliver_date.strftime("%Y-%m-%d")
11
+ # end
12
+
13
+
14
+ # def b_name(item)
15
+ # item.business ? item.business.name : ''
16
+ # end
17
+
18
+ def staffs(item)
19
+ item.business ? item.business.staff.name : item.staffs_name
20
+ end
21
+
22
+ def manges(item)
23
+ item.business ? item.business.business_deliver_subjects.take.subject_manages : item.manges_name
24
+ end
25
+
26
+
27
+
28
+ end
29
+ end
@@ -18,6 +18,7 @@ module EducodeSales
18
18
  has_many :business_levels, dependent: :destroy
19
19
  has_many :business_watches, dependent: :destroy
20
20
  has_many :business_histories, dependent: :destroy
21
+ has_many :business_deliver_subjects, dependent: :destroy # 商机交付课程
21
22
  has_many :money_plans
22
23
 
23
24
  has_one :invoice_apply
@@ -35,6 +36,7 @@ module EducodeSales
35
36
  # 关联关注
36
37
  has_many :users, :class_name => 'EducodeSales::BusinessRelationShip', foreign_key: 'business_id', :dependent => :destroy
37
38
 
39
+ after_update :change_diliver
38
40
  # 每次查询时 默认的查询条件
39
41
  default_scope -> { where(deleted_at: nil) }
40
42
 
@@ -75,6 +77,26 @@ module EducodeSales
75
77
  '应收款' => ['已中标','已签单','已验收','回款中', '服务中','已结束']
76
78
  }[type]
77
79
  end
80
+
81
+
82
+ # 创建商机交付课程数据
83
+ def change_diliver
84
+
85
+ if previous_changes["last_follow_up_id"].present?
86
+ last_clazz_id = previous_changes["last_follow_up_id"][-1]
87
+ common_type = FollowUp.find_by(id: last_clazz_id)&.stage&.name == "已中标"
88
+ BusinessDeliverSubject.find_or_create_by(business_id: self.id) if common_type
89
+ end
90
+ end
91
+
92
+ def school_name
93
+ department&.school&.name || "--"
94
+ end
95
+
96
+ def staff_name
97
+ last_follow_up&.assign_follow_ups.present? ? (last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : staff&.user&.real_name
98
+ end
99
+
78
100
  end
79
101
 
80
102
  end
@@ -0,0 +1,48 @@
1
+ module EducodeSales
2
+ class BusinessDeliverSubject < ApplicationRecord
3
+ belongs_to :business
4
+ has_many :business_subjects, dependent: :destroy
5
+ has_many :subjects ,through: :business_subjects
6
+ has_many :manages, as: :container, dependent: :destroy, class_name: "EducodeSales::BusinessSubjectStaff"
7
+
8
+
9
+ # constructed:待建设, signed: 已签协议,construction: 建设中,completed: 已完成,delivered: 已交付, accepted: 已验收
10
+ enum status: { constructed:1, signed:2, construction: 3, completed:4, delivered: 5, accepted: 6 }
11
+
12
+ # 实践课程完成统计
13
+ def subject_competed_count
14
+ all_count = subjects.count
15
+ completed_count = subjects.where("subjects.status = 2 and subjects.public = 2").count
16
+
17
+ " #{completed_count} / #{all_count} "
18
+ end
19
+
20
+ # 实训项目完成进度
21
+ def shixun_competed_count
22
+ " #{subjects.joins(:shixuns).where("shixuns.status =2 and shixuns.public = 2").count} / #{subjects.joins(:shixuns).count} "
23
+ end
24
+
25
+ # 课程经理
26
+ def subject_manages
27
+ manages.joins(staff: :user).pluck("CONCAT(users.lastname, users.firstname) ").join(",") || "--"
28
+ end
29
+
30
+
31
+ def delvier_date
32
+ business.last_follow_up&.reception_at
33
+ end
34
+
35
+ def add_subjects(subject_ids = [])
36
+ subjects = Subject.where.not(id: BusinessSubject.joins(:business_deliver_subject).pluck(:subject_id)).unhidden # 1先创建实践项目下,通过实践课程无法选该实践项目
37
+ subject_ids.each do |item|
38
+ now_subject = subjects.find_by(id: item)
39
+ if now_subject.present?
40
+ add_item = BusinessSubject.find_or_create_by(subject_id: item)
41
+ add_item.update(business: business, business_deliver_subject_id: id)
42
+ end
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ end
@@ -0,0 +1,62 @@
1
+ module EducodeSales
2
+ class BusinessSubject < ApplicationRecord
3
+ belongs_to :business, optional: true
4
+ belongs_to :business_deliver_subject, optional: true
5
+ belongs_to :school, optional: true
6
+ belongs_to :subject, optional: true
7
+ has_many :business_subject_shixuns
8
+ has_many :staffs, ->{subject_staffs}, as: :container, dependent: :destroy, class_name: "EducodeSales::BusinessSubjectStaff"
9
+ has_many :manages, ->{subject_manges}, as: :container, dependent: :destroy, class_name: "EducodeSales::BusinessSubjectStaff"
10
+
11
+
12
+
13
+ # 销售名称
14
+ def staffs_name
15
+ staffs.joins(staff: :user).pluck("CONCAT(users.lastname, users.firstname) ").join(",")
16
+ end
17
+
18
+ # 课程经理名称
19
+ def manges_name
20
+ manages.joins(staff: :user).pluck("CONCAT(users.lastname, users.firstname) ").join(",")
21
+ end
22
+
23
+ # 实训完成统计
24
+ def shixun_compeled_count
25
+ " #{business_subject_shixuns.joins(:shixun).where("shixuns.status=2 and shixuns.public = 2").count} / #{business_subject_shixuns.count}"
26
+ end
27
+
28
+ def school_name
29
+ school.try(:name)
30
+ end
31
+
32
+ # def deliver_date
33
+ # business ? business.last_follow_up.try(:reception_at)&.strftime("%Y-%m-%d") || "--" : deliver_date.strftime("%Y-%m-%d")
34
+ # end
35
+
36
+
37
+ # def b_name
38
+ # business ? business.name : '--'
39
+ # end
40
+
41
+ def staffs
42
+ business ? business.staff&.name : staffs_name
43
+ end
44
+
45
+ def manges
46
+ business_deliver_subject ? business_deliver_subject.subject_manages : manges_name
47
+ end
48
+
49
+
50
+ def add_subject_shixuns(shixun_ids=[]) # 1先创建实践项目下,通过实践课程无法选该实践项目
51
+ shixuns = Shixun.where.not(id: BusinessSubjectShixun.joins(:business_subject).pluck(:shixun_id)).unhidden # 1先创建实践项目下,通过实践课程无法选该实践项目
52
+ shixun_ids.each do |item|
53
+ now_shixun = shixuns.find_by(id: item)
54
+ if now_shixun.present?
55
+ add_item = BusinessSubjectShixun.create_with(name: now_shixun.name).find_or_create_by(shixun_id: item)
56
+ add_item.update(business_subject_id: self.id )
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ end
@@ -0,0 +1,46 @@
1
+ module EducodeSales
2
+ class BusinessSubjectShixun < ApplicationRecord
3
+
4
+ belongs_to :business_subject, optional: true
5
+ belongs_to :school, optional: true
6
+ belongs_to :shixun, optional: true
7
+ has_many :staffs, as: :container, dependent: :destroy, class_name: "EducodeSales::BusinessSubjectStaff"
8
+ belongs_to :last_dectect, foreign_key: :shixun_dectect_id, class_name: "EducodeSales::ShixunDectect", optional: true
9
+
10
+ module CATEGORY_TYPE
11
+ TRAINING = 1 # 管培
12
+ WORKER = 2 # 全职
13
+ PLURALIST = 3 # 兼职
14
+ end
15
+
16
+ # 项目状态: 待建设(constructed) 已签协议(signed) 建设中(construction) 审核中(review),返修中(repair) 已内部公开(public), 已公开发布(published) 已经付费(paid)
17
+ # enum status: { constructed: 1, signed: 2, construction: 3, review: 4, repair: 5, public: 6, published: 7,paid: 8}
18
+
19
+ def shixun_manages
20
+ staffs.joins(staff: :user).where(category:BusinessSubjectStaff::CATEGORY_TYPES::SHIXUN_MANAGE).pluck("CONCAT(users.lastname, users.firstname) ").join(",")
21
+ end
22
+ def shixun_producer
23
+ staffs.joins(staff: :user).where(category:BusinessSubjectStaff::CATEGORY_TYPES::SHIXUN_PRODUCER).pluck("CONCAT(users.lastname, users.firstname) ").join(",")
24
+ end
25
+ def shixun_staff
26
+ return business_subject.manges unless business_subject.nil?
27
+ staffs.joins(staff: :user).where(category:BusinessSubjectStaff::CATEGORY_TYPES::SHIXUN_STAFF).pluck("CONCAT(users.lastname, users.firstname) ").join(",")
28
+ end
29
+
30
+
31
+ # 查询审核历史和审核人
32
+ def audit_history
33
+ ShixunDectect.joins("join educode_sales_staffs on educode_sales_staffs.id = educode_sales_shixun_dectects.reviewed_id
34
+ join users on users.id = educode_sales_staffs.user_id")
35
+ .where(business_subject_shixun_id:id)
36
+ .where("dectect_type != 0")
37
+ .select("educode_sales_shixun_dectects.*,
38
+ CONCAT(users.lastname, users.firstname) as examine_name")
39
+ .all
40
+ end
41
+ # def school_name
42
+ # business_subject ? business_subject.school_name : school.name
43
+ # end
44
+ end
45
+
46
+ end
@@ -0,0 +1,35 @@
1
+ module EducodeSales
2
+ class BusinessSubjectStaff < ApplicationRecord
3
+
4
+ belongs_to :staff
5
+ belongs_to :container, polymorphic: true, optional: true, touch: true
6
+
7
+
8
+ # 类型
9
+ enum container_type: { "EducodeSales::BusinessDeliverSubject": 1, "EducodeSales::BusinessSubject": 2, "EducodeSales::BusinessSubjectShixun": 3 }
10
+
11
+
12
+ # # 项目状态: 待建设(constructed) 已签协议(signed) 建设中(construction) 审核中(review),返修中(repair) 已内部公开(public), 已公开发布(published) 已经付费(paid)
13
+ # enum category_type: { constructed: 1, signed: 2, construction: 3, review: 4, repair: 5, public: 6, published: 7,paid: 8 }
14
+
15
+ module CONTAINER_TYPES
16
+ BUSSINESS = 1
17
+ SUBJECT = 2
18
+ SHIXUN = 3
19
+ end
20
+
21
+ module CATEGORY_TYPES
22
+ BUSINESS_MANAGE = 1 # 商机交付课程: 课程经理
23
+ SUBJECT_MANAGE = 2 # 实践课程管理: 课程经理
24
+ SUBJECT_STAFF = 3 # 实践课程管理: 销售
25
+ SHIXUN_MANAGE = 4 # 实训项目管理: 课程组长
26
+ SHIXUN_PRODUCER = 5 # 实训项目管理: 制作人
27
+ SHIXUN_STAFF = 6 # 实训项目管理: 销售
28
+ end
29
+
30
+ scope :subject_staffs, ->{where(category: CATEGORY_TYPES::SUBJECT_STAFF)}
31
+ scope :subject_manges, ->{where(category: CATEGORY_TYPES::SUBJECT_MANAGE)}
32
+
33
+ end
34
+
35
+ end
@@ -17,7 +17,8 @@ module EducodeSales
17
17
  '方案管理': 'idea',
18
18
  '项目管理': 'project',
19
19
  '合同管理': 'contract',
20
- '产品目录': 'product_category'
20
+ '产品目录': 'product_category',
21
+ '课程管理': 'business_courses'
21
22
  }
22
23
  end
23
24
  end
@@ -0,0 +1,12 @@
1
+ module EducodeSales
2
+ class ShixunDectect < ApplicationRecord
3
+
4
+ belongs_to :business_subject_shixun
5
+ belongs_to :reviewed_staff, foreign_key: :reviewed_id, class_name: "EducodeSales::Staff"
6
+
7
+ # 状态: refused: 拒绝, agreed: 同意 review 审核中
8
+ enum dectect_type: {review:0, refused: 1, agreed: 2}
9
+
10
+ end
11
+
12
+ end