educode_sales 1.10.48 → 1.10.49

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da45d6ae994d92a3ef3274e654b591e9165ba976e765e2c8e09b786f7f0b5c05
4
- data.tar.gz: fe907bc45b55f7dbe5b454eb785693302f460622576a7a14cde80efc9cf3d293
3
+ metadata.gz: 2d727604aed61afc7d3df20bbfdb069c2c14d10a205e6a95c6b16af0171f2363
4
+ data.tar.gz: 0353401db95554ddff072354913db810537640035ded808cf3bac648dbfc9fb5
5
5
  SHA512:
6
- metadata.gz: 8dc1ac6fd68d7a04df6f28d39a74f565701600b25348c60a6586f3b8027f63b796132489e6f0dd37e4a896ee9241f44c5764ec5f4fb2e740b38033060c0ff10f
7
- data.tar.gz: b3b6130b8e98a8b5bdd05281af4f7faf27e690725de86337fec94abf974b8be798f8a451ed4f549affbe8e548bd66bd485b3f177a80b70e57f74f59c49459fe1
6
+ metadata.gz: b8adacfd640268d7b7e0cd88b6ad1687caaf143e83e75d6025e433ad42f7b09723e6c8d3b7bfdca71fc4af362bf1ab862d8a252b023cd545eae4e88bdcc0fcad
7
+ data.tar.gz: 8ba9309c8d723f146a3ae7493451b61a404721ccd0d82ea0896246c5f92a4112a78b6272a2cabb7b01cf50ab1e20491d409e5d9fc18e1bec5ead12ac2a4ec83c
@@ -0,0 +1,130 @@
1
+
2
+ /* 全局 */
3
+ html,body{overflow-x: hidden;font-size: 16px;line-height: 1.6;}
4
+ /* html body{margin-top: 61px;} */
5
+ html{background-color: #F2F2F2;}
6
+
7
+ i{font-style: normal;}
8
+ /* 图标 */
9
+ @font-face {font-family: "layui-icon-fly";
10
+ src: url('../../../../fonts/iconfont.eot?t=1512007250695'); /* IE9*/
11
+ src: url('../../../../fonts/iconfont.eot?t=1512007250695#iefix') format('embedded-opentype'), /* IE6-IE8 */
12
+ url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
13
+ url('../../../../fonts/iconfont.ttf?t=1512007250695') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
14
+ url('../../../../fonts/iconfont.svg?t=1512007250695#iconfont') format('svg'); /* iOS 4.1- */
15
+ }
16
+
17
+ .iconfont {
18
+ font-family:"layui-icon-fly" !important;
19
+ font-size:16px;
20
+ font-style:normal;
21
+ -webkit-font-smoothing: antialiased;
22
+ -webkit-text-stroke-width: 0.2px;
23
+ -moz-osx-font-smoothing: grayscale;
24
+ }
25
+
26
+
27
+ /* 辅助 */
28
+ a:hover{color: #009688; transition: all .3s;}
29
+ /* pre{padding: 10px 15px; margin: 10px 0; font-size: 12px; border-left: 6px solid #009688; background-color: #f8f8f8; font-family: Courier New; overflow: auto;} */
30
+
31
+ .layui-container{padding: 0;}
32
+ .fly-main{width: 1079px; min-height: 600px; margin: 0 auto 15px;}
33
+ .layui-badge{height: 20px; line-height: 20px; border-radius: 2px;}
34
+
35
+ .fly-link{color: #01AAED;}
36
+ .fly-link:hover{color: #5FB878;}
37
+ .fly-grey{color: #999;}
38
+
39
+ .fly-msg, .fly-error{padding: 10px 15px; line-height: 24px;}
40
+ .fly-msg{background-color:#F8F8F8; color:#666;}
41
+ .fly-msg a{color:#4F99CF}
42
+ .fly-editbox{position: relative;}
43
+
44
+ .fly-marginTop{margin-top: 15px;}
45
+ .fly-mid{display: inline-block; height: 10px; width: 1px; margin: 0 10px; vertical-align: middle; background-color: #e2e2e2;}
46
+ .fly-right{position: absolute; right: 15px; top: 0;}
47
+
48
+ /* 过度 */
49
+ .fly-loading{position: absolute; top: 50%; left: 50%; margin: -12px 0 0 -15px; font-size: 30px; color: #c2c2c2;}
50
+
51
+ /* 简易编辑器 */
52
+ .fly-edit{position:relative; display: block; top: 0; left:0; padding:0 10px; border: 1px solid #e6e6e6; border-radius: 2px 2px 0 0; background-color: #FBFBFB;}
53
+ .fly-edit span{cursor:pointer; padding:0 10px; line-height: 38px;color:#1E9FFF;font-size: 18px;}
54
+ .fly-edit span i{position: relative; padding-right: 6px; font-size: 18px;}
55
+ .fly-edit span:hover{color: #009E94;}
56
+ .layui-textarea{height: 270px;}
57
+ /* markdown样式 */
58
+ .easyeditor-content p{
59
+ padding: 5px 0;
60
+ }
61
+
62
+ .easyeditor-content ul,
63
+ .easyeditor-content ol {
64
+ padding: 10px 15px;
65
+ }
66
+ .easyeditor-content ul:first-child,
67
+ .easyeditor-content ol:first-child {
68
+ margin-top: 0;
69
+ }
70
+ .easyeditor-content ul:last-child,
71
+ .easyeditor-content ol:last-child {
72
+ margin-bottom: 0;
73
+ }
74
+ .easyeditor-content ul li{margin-top: 5px;}
75
+ .easyeditor-content>ol li{list-style: decimal;margin-top: 5px;}
76
+ .easyeditor-content li{list-style: disc;}
77
+
78
+ .layui-table th{text-align: center;}
79
+
80
+ .easyeditor-content hr {
81
+ height: 2px;
82
+ padding: 0;
83
+ margin: 16px 0;
84
+ background-color: #e7e7e7;
85
+ border: 0 none;
86
+ overflow: hidden;
87
+ box-sizing: content-box;
88
+ }
89
+ /* 标题样式 */
90
+ .easyeditor-content > h1,
91
+ .easyeditor-content > h2,
92
+ .easyeditor-content > h3,
93
+ .easyeditor-content > h4,
94
+ .easyeditor-content > h5,
95
+ .easyeditor-content > h6 {
96
+ position: relative;
97
+ margin-top: 1rem;
98
+ margin-bottom: 1rem;
99
+ font-weight: bold;
100
+ line-height: 1.4;
101
+ cursor: text;
102
+ }
103
+
104
+
105
+ /* 单行列表 */
106
+ .fly-list-one .fly-panel-title{margin-bottom: 5px;}
107
+ .fly-list-one dd{margin: 0 15px; line-height: 26px; white-space: nowrap; overflow: hidden; list-style: decimal-leading-zero inside; *list-style-type: decimal inside; color: #009E94;}
108
+ .fly-list-one dd a,
109
+ .fly-list-one dd span{display: inline-block; *display: inline; *zoom: 1; vertical-align: top; font-style: normal}
110
+ .fly-list-one dd a{max-width: 85%; margin-right: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px;}
111
+ .fly-list-one dd span{font-size: 12px; color: #ccc;}
112
+ .fly-list-one dd:last-child{padding-bottom: 5px;}
113
+
114
+ /* 面板 */
115
+ .easyeditor-panel{margin-bottom: 15px; margin-top: 15px; background-color: #fff; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);}
116
+ .easyeditor-panel[pad20]{padding: 20px;}
117
+ .easyeditor-panel-title{position: relative; height: 50px; line-height: 50px; padding: 0 15px; border-bottom: 1px dotted #E9E9E9; color: #333; border-radius: 2px 2px 0 0; font-size: 14px;}
118
+ .easyeditor-panel-main{padding: 10px 15px;}
119
+ .easyeditor-panel-border{border: 1px solid #e6e6e6; box-shadow: none;}
120
+ .easyeditor-panel-border .easyeditor-panel-title{border-bottom: 1px solid #e6e6e6;}
121
+
122
+ /* Detail页 */
123
+ .detail-box{padding: 20px;}
124
+
125
+ body .layui-edit-face{ border:none; background:none;}
126
+ body .layui-edit-face .layui-layer-content{padding:0; background-color:#fff; color:#666; box-shadow:none}
127
+ .layui-edit-face .layui-layer-TipsG{display:none;}
128
+ .layui-edit-face ul{position:relative; width:372px; padding:10px; border:1px solid #D9D9D9; background-color:#fff; box-shadow: 0 0 20px rgba(0,0,0,.2);}
129
+ .layui-edit-face ul li{cursor: pointer; float: left; border: 1px solid #e8e8e8; height: 22px; width: 26px; overflow: hidden; margin: -1px 0 0 -1px; padding: 4px 2px; text-align: center;}
130
+ .layui-edit-face ul li:hover{position: relative; z-index: 2; border: 1px solid #eb7350; background: #fff9ec;}
@@ -0,0 +1,4 @@
1
+ .fly-edit span{cursor:pointer; padding:0 10px; line-height: 38px; height: 38px;width: 30px;color:#1E9FFF;font-size: 18px;border-right: 1px solid #e6e6e6;display: inline-block;text-align: center;}
2
+ .fly-right span:first-child{border-left: 1px solid #e6e6e6;}
3
+ .fly-right span:last-child{border-right: 0}
4
+ .fly-edit span:hover{color: #009E94;background-color: #f2f2f2;}
@@ -1,8 +1,20 @@
1
1
  module EducodeSales
2
2
  class ApplicationController < ActionController::Base
3
+ include ApplicationHelper
3
4
  protect_from_forgery with: :exception
4
5
  before_action :authenticate_request
5
6
 
7
+
8
+ def subject_members
9
+ common = Common.find_by(clazz: 'staff_type', name: '课程')
10
+ @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}}
11
+ end
12
+
13
+ def subject_staffs
14
+ common = Common.find_by(clazz: 'staff_type', name: '销售')
15
+ @staffs = Staff.joins(:user).where(job_type: common.id).where.not(role_id: 11).map { |d| { value: d.id, name: d.name } }
16
+ end
17
+
6
18
  def render_success
7
19
  render json: { success: true }
8
20
  end
@@ -0,0 +1,230 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EducodeSales
4
+
5
+ # 商机交付课程
6
+ class BusinessCoursesController < ApplicationController
7
+ include BusinessCoursesHelper
8
+ before_action :subject_members
9
+
10
+ def index
11
+ authorize! :business, BusinessDeliverSubject
12
+ respond_to do |format|
13
+ format.html do
14
+ end
15
+ format.json do
16
+ @business_deliver = BusinessDeliverSubject.joins(business: [:school, :staff, :last_follow_up])
17
+
18
+ # 查询条件 交付状态 state == 0 代表全部
19
+ if params[:q] && params[:q][:state].present? && params[:q][:state] != '0'
20
+ @business_deliver = @business_deliver.where("educode_sales_business_deliver_subjects.status = :status", status: params[:q][:state])
21
+ end
22
+ # 查询条件 商机id
23
+ if params[:q] && params[:q][:name].present?
24
+ @business_deliver = @business_deliver.where("educode_sales_businesses.name like '%#{params[:q][: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_deliver = @business_deliver.where("educode_sales_follow_ups.reception_at BETWEEN '#{start_time}' AND '#{end_time}' ")
31
+ end
32
+ # 分页查询
33
+ @business_deliver = @business_deliver.includes(business: [:school, :staff], business_subjects: :subject) \
34
+ .page(params[:page])
35
+ .per(params[:limit])
36
+ end
37
+ end
38
+ end
39
+
40
+ def edit
41
+ authorize! :business, BusinessDeliverSubject
42
+ if params[:id]
43
+ # 查询商机信息 和交付状态等
44
+ @item = BusinessDeliverSubject.joins(:business)
45
+ .select("educode_sales_businesses.name,
46
+ educode_sales_business_deliver_subjects.status,
47
+ educode_sales_business_deliver_subjects.id")
48
+ .find(params[:id])
49
+ # 查询课程是否已经有实践课程
50
+ @subjects = @item.business_subjects.pluck(:subject_id)
51
+ @subjects = Subject.where(id: @subjects).map { |item| { value: item[:id], name: item[:name] } }
52
+ gon.staffs = @manages
53
+
54
+ @value_list = BusinessSubjectStaff.where(container_type: BusinessSubjectStaff::CONTAINER_TYPES::BUSSINESS,
55
+ container_id: params[:id])
56
+ .select(:staff_id)
57
+ .map { |item| item[:staff_id] }
58
+
59
+ render layout: false
60
+ end
61
+ end
62
+
63
+ def update
64
+ authorize! :business, BusinessDeliverSubject
65
+ # 开启事务
66
+ ActiveRecord::Base.transaction do
67
+ @business = BusinessDeliverSubject.find_by(id: params[:id])
68
+ # 修改状态
69
+ if !@business.blank?
70
+ @business.update(params.require(:business).permit(:status))
71
+
72
+ old_subject_ids = @business.business_subjects.pluck(:subject_id)
73
+ new_subject_ids = params[:business][:subject_ids].split(',').map(&:to_i)
74
+
75
+ del_arr = old_subject_ids - new_subject_ids
76
+ # 需要新增的科目id
77
+ add_arr = new_subject_ids - old_subject_ids
78
+
79
+ @business.business_subjects.where(subject_id: del_arr).update_all(business_id: nil, business_deliver_subject_id: nil)
80
+
81
+ @business.add_subjects(add_arr)
82
+
83
+ @business.manages.destroy_all
84
+
85
+ BusinessSubjectStaff.bulk_insert(:staff_id, :container_id, :container_type, :created_at, :updated_at, :category) do |d|
86
+ params[:business][:manage_id].split(",").each do |m|
87
+ d.add [m.to_i, @business.id, BusinessSubjectStaff::CONTAINER_TYPES::BUSSINESS, Time.now, Time.now, BusinessSubjectStaff::CATEGORY_TYPES::BUSINESS_MANAGE]
88
+ end
89
+ end
90
+
91
+ render_success
92
+ else
93
+ render_failure("操作失败")
94
+ end
95
+ end
96
+ end
97
+
98
+ def new
99
+ authorize! :business, BusinessDeliverSubject
100
+ staffs = Staff.where.not(role_id: 11).includes(:user)
101
+ @businesses = Business
102
+ # 要求只能是已签单的商机
103
+ gon.stage_id = Common.where(clazz: '商机阶段', name: ['已签单']).pluck(:id)[0]
104
+ gon.staffs = @manages
105
+ render layout: false
106
+ end
107
+
108
+ def create
109
+ authorize! :business, BusinessDeliverSubject
110
+ # 开启事务
111
+ ActiveRecord::Base.transaction do
112
+ item = BusinessDeliverSubject.find_by(business_id: params[:business][:business_id])
113
+ # 判断是否存在 不存在进入下一步
114
+
115
+ if item.blank?
116
+ add_item = BusinessDeliverSubject.new(business_params)
117
+
118
+ add_item.add_subjects(params[:business][:subject_ids].split(",")) if add_item.save! && !params[:business][:subject_ids].blank?
119
+
120
+ BusinessSubjectStaff.bulk_insert(:staff_id, :container_id, :container_type, :created_at, :updated_at, :category) do |d|
121
+ params[:business][:manage_id].split(",").each do |m|
122
+ d.add [m.to_i, add_item.id, BusinessSubjectStaff::CONTAINER_TYPES::BUSSINESS, Time.now, Time.now, BusinessSubjectStaff::CATEGORY_TYPES::BUSINESS_MANAGE ]
123
+ end
124
+ end
125
+
126
+ render_success
127
+ else
128
+ render_failure("操作失败")
129
+ end
130
+ end
131
+ end
132
+
133
+ def select_business
134
+ respond_to do |format|
135
+ format.json do
136
+ stage_id = Common.where(clazz: '商机阶段', name: ['已签单']).pluck(:id).join(",")
137
+ @businesses = Business.joins(:last_follow_up, :school)
138
+ .where("educode_sales_businesses.NAME LIKE '%#{params[:q]}%' and educode_sales_follow_ups.stage_id IN (#{stage_id}) ")
139
+ .where("educode_sales_businesses.id not in (?) ", BusinessDeliverSubject.pluck(:business_id).map(&:to_i) ) # todo 数组中包含nil会导致查询失败,无法找到数据
140
+ .select("educode_sales_businesses.*, schools.name as s_name, schools.id as s_id")
141
+ .page(params[:page])
142
+ .distinct
143
+ .per(10)
144
+ render json: {
145
+ data: @businesses,
146
+ code: 0,
147
+ count: @businesses.total_count / 10
148
+ }
149
+ end
150
+ end
151
+
152
+ end
153
+
154
+ def list_shixuns
155
+ respond_to do |format|
156
+ format.html do
157
+ render layout: false
158
+ end
159
+ format.json do
160
+ business_deliver = BusinessDeliverSubject.find_by(id: params[:id])
161
+
162
+ shixuns = BusinessSubjectShixun.joins(:shixun, business_subject: [business_deliver_subject: :business]).where("educode_sales_business_deliver_subjects.id = #{business_deliver.id }")
163
+
164
+ @count = shixuns.count
165
+
166
+ @shixuns = shixuns.select("educode_sales_business_subject_shixuns.*, shixuns.name s_name, shixuns.identifier s_identifier")
167
+ .page(params[:page]).per(params[:limit])
168
+ end
169
+ end
170
+ end
171
+
172
+
173
+ def list_subjects # todo 接口该为 list_subjects
174
+ respond_to do |format|
175
+ format.html do
176
+ render layout: false
177
+ end
178
+ format.json do
179
+ # 商机交付课程id
180
+ bussiness_deliver_id = params[:id].to_i
181
+
182
+ # subject.status => :0 编辑中 1 审核中 2 发布
183
+ # public: 2: 公开
184
+ # todo 响应参数中: 交付时间 交付单位 销售 课程经理 全部来自商机交付课程中数据 => (bussiness_deliver)
185
+ subjects = Subject.joins("INNER JOIN educode_sales_business_subjects bs ON subjects.id = bs.subject_id
186
+ INNER JOIN educode_sales_business_deliver_subjects e_s_b_d_s ON bs.business_deliver_subject_id = e_s_b_d_s.id and e_s_b_d_s.id = #{bussiness_deliver_id}
187
+ LEFT JOIN stage_shixuns ss ON ss.subject_id = subjects.id
188
+ LEFT JOIN shixuns s ON s.id = ss.item_id")
189
+ # todo 搜索 subjects.where("subjects.字段 = x") # 不需要单位搜索
190
+
191
+ # 搜索条件
192
+ if params[:q].present? && params[:q][:name].present?
193
+ subjects = subjects.where("subjects.name like '%#{params[:q][:name]}%'")
194
+ end
195
+ if params[:q].present? && params[:q][:p_state].present?
196
+ status = params[:q][:p_state].to_i
197
+ if status < 3
198
+ subjects = subjects.where("subjects.status = #{params[:q][:p_state]}")
199
+ else
200
+ subjects = subjects.where("subjects.public = 2")
201
+ end
202
+ end
203
+ @subjects = subjects.group("subjects.id").select("subjects.identifier, subjects.status status, subjects.name name, subjects.id, subjects.public").page(params[:page]).per(params[:limit])
204
+ p @subjects.map { |d| d.shixuns_completed_progress }
205
+ @url = "https://test.educoder.net/paths/"
206
+ end
207
+ end
208
+
209
+ end
210
+
211
+ def subjects
212
+ respond_to do |format|
213
+ format.json do
214
+ @subjects = Subject.unhidden.where.not(id: BusinessSubject.joins(:business).pluck(:subject_id)).where("name like '%#{params[:q]}%' ").page(params[:page]).per(10)
215
+ render json: {
216
+ data: @subjects.map { |item| { value: item[:id], name: item[:name] } },
217
+ code: 0,
218
+ count: @subjects.total_count / 10
219
+ }
220
+ end
221
+ end
222
+ end
223
+
224
+ def business_params
225
+ params.require(:business).permit(:status, :business_id)
226
+ end
227
+
228
+ end
229
+
230
+ end
@@ -74,6 +74,13 @@ module EducodeSales
74
74
  @schools = Business.all
75
75
  if params[:q].present?
76
76
  @schools = @schools.where("name like :q ", q: "%#{params[:q]}%").page(params[:page]).per(10)
77
+ # 商机搜索为空时 去搜索学校名 如果搜索到学校名 则返回学校id相关的商机
78
+ if @schools.empty?
79
+ @schools = Business.joins(:school)
80
+ .where("schools.name LIKE :q", q: "%#{params[:q]}%")
81
+ .page(params[:page])
82
+ .per(10)
83
+ end
77
84
  end
78
85
  end
79
86
 
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ # 实践项目管理
4
+ module EducodeSales
5
+ class ShixunDectectsController < ApplicationController
6
+ before_action :subject_members
7
+
8
+ def index
9
+ respond_to do |format|
10
+ format.html do
11
+ end
12
+ format.json do
13
+ # 默认显示为待审核的
14
+ index = 1
15
+ if params[:q].present? && params[:q][:index].present?
16
+ index = params[:q][:index].to_i
17
+ end
18
+ @shixun_dectects = BusinessSubjectShixun.joins(:shixun)
19
+ .left_joins(:school)
20
+ .joins(last_dectect: [reviewed_staff: :user])
21
+
22
+ if params[:q].present? && params[:q][:category].present? && params[:q][:category].to_i != 0
23
+ @shixun_dectects = @shixun_dectects.where(category: params[:q][:category])
24
+ end
25
+ if params[:q].present? && params[:q][:shixun_name].present?
26
+ @shixun_dectects = @shixun_dectects.where("shixuns.name like '%#{params[:q][:shixun_name]}%'")
27
+ end
28
+
29
+ case index
30
+ when 1 # 显示待审核的 和审核被打回的
31
+ @shixun_dectects = @shixun_dectects.where("dectect_type != 1")
32
+
33
+ when 2 # 显示已审核的
34
+ @shixun_dectects = @shixun_dectects.where("dectect_type = 1 or dectect_type = 2")
35
+ else
36
+ render_failure("操作失败,index只能为1,2")
37
+ end
38
+ @shixun_dectects = @shixun_dectects.select("educode_sales_business_subject_shixuns.*,
39
+ schools.name as school_name,
40
+ shixuns.name as shixun_name,
41
+ CONCAT(users.lastname, users.firstname) as real_name,
42
+ educode_sales_shixun_dectects.dectect_type,
43
+ educode_sales_shixun_dectects.content")
44
+ .page(params[:page])
45
+ .per(params[:limit])
46
+ end
47
+ end
48
+
49
+ end
50
+
51
+ # 审核提交
52
+ def submit
53
+ respond_to do |format|
54
+ format.json do
55
+ ActiveRecord::Base.transaction do
56
+ @shixuns = ShixunDectect.find_by(business_subject_shixun_id: params[:id])
57
+ if @shixuns.blank?
58
+ @shixuns = ShixunDectect.create!(business_subject_shixun_id: params[:id],
59
+ reviewed_id: current_user.id,
60
+ dectect_type: 0)
61
+ BusinessSubjectShixun.find(params[:id]).update(shixun_dectect_id: @shixuns.id)
62
+ render_success
63
+ else
64
+ render_failure("已经提交过了")
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ # 通过审核
72
+ def examine
73
+ ActiveRecord::Base.transaction do
74
+ if params[:id].present? && params[:type].present?
75
+ business_subject_shixun = BusinessSubjectShixun.find(params[:id])
76
+ if business_subject_shixun.present?
77
+ shixun_dectect = ShixunDectect.create!(reviewed_id: current_user.id,
78
+ date: Time.now,
79
+ content: params[:content].gsub(/\r\n?/, "\n").strip,
80
+ business_subject_shixun_id: params[:id],
81
+ dectect_type: params[:type].to_i)
82
+ business_subject_shixun.update(shixun_dectect_id: shixun_dectect.id,shixun_status:5)
83
+ end
84
+ render_success
85
+ else
86
+ render_failure("操作失败")
87
+ end
88
+ end
89
+ end
90
+
91
+ # 审核拒绝通过
92
+
93
+ def edit
94
+ render layout: false
95
+ end
96
+
97
+ def update
98
+ end
99
+
100
+ def new
101
+ render layout: false
102
+ end
103
+
104
+ def create
105
+ end
106
+
107
+ def markdown
108
+ render layout: false
109
+ end
110
+ end
111
+ end