educode_sales 0.9.68 → 0.9.70

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 (41) 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/extent/treeTable.js +235 -0
  4. data/app/controllers/educode_sales/customers_controller.rb +112 -0
  5. data/app/controllers/educode_sales/follow_ups_controller.rb +6 -0
  6. data/app/controllers/educode_sales/projects_controller.rb +423 -0
  7. data/app/controllers/educode_sales/roles_controller.rb +4 -1
  8. data/app/controllers/educode_sales/teachers_controller.rb +42 -14
  9. data/app/helpers/educode_sales/application_helper.rb +1 -0
  10. data/app/models/educode_sales/business.rb +21 -5
  11. data/app/models/educode_sales/business_history.rb +8 -0
  12. data/app/models/educode_sales/eco_staff.rb +6 -0
  13. data/app/models/educode_sales/permission.rb +2 -1
  14. data/app/models/educode_sales/project.rb +53 -0
  15. data/app/models/educode_sales/role_area.rb +2 -1
  16. data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
  17. data/app/views/educode_sales/businesses/index.html.erb +13 -0
  18. data/app/views/educode_sales/businesses/index.json.jbuilder +5 -1
  19. data/app/views/educode_sales/businesses/time_line.html.erb +10 -5
  20. data/app/views/educode_sales/customers/edit_major.html.erb +876 -0
  21. data/app/views/educode_sales/customers/list.html.erb +601 -0
  22. data/app/views/educode_sales/customers/list.json.jbuilder +33 -0
  23. data/app/views/educode_sales/follow_ups/index.json.jbuilder +2 -2
  24. data/app/views/educode_sales/projects/detail.html.erb +273 -0
  25. data/app/views/educode_sales/projects/edit.html.erb +246 -0
  26. data/app/views/educode_sales/projects/history.html.erb +41 -0
  27. data/app/views/educode_sales/projects/index.html.erb +718 -0
  28. data/app/views/educode_sales/projects/index.json.jbuilder +69 -0
  29. data/app/views/educode_sales/teachers/_index.html.erb +28 -1
  30. data/app/views/educode_sales/teachers/edit.html.erb +10 -3
  31. data/app/views/educode_sales/teachers/index.json.jbuilder +3 -0
  32. data/app/views/layouts/educode_sales/application.html.erb +25 -0
  33. data/config/routes.rb +12 -0
  34. data/db/migrate/20230412083510_add_p_staff_id_to_businesses.rb +20 -0
  35. data/db/migrate/20230412092000_create_business_histories.rb +10 -0
  36. data/db/migrate/20230413015619_add_permissions_to_projects.rb +11 -0
  37. data/db/migrate/20230413031029_add_pre_time_to_businesses.rb +5 -0
  38. data/db/migrate/20230414031409_add_major_educode_sales_customer_follows.rb +12 -0
  39. data/db/migrate/20230414035655_create_educode_sales_eco_staffs.rb +11 -0
  40. data/lib/educode_sales/version.rb +1 -1
  41. metadata +26 -6
@@ -0,0 +1,69 @@
1
+ follow_up_ids = EducodeSales::AssignFollowUp.where(staff_id: @current_admin.id).pluck(:follow_up_id)
2
+ follow_count = 0
3
+ json.data do
4
+ json.array! @businesses do |d|
5
+ json.(d, :p_stage, :p_difficulty, :p_special, :p_status, :p_staff_id, :p_sale_staff_id, :p_course_time, :p_platform_time, :p_deploy_time, :p_accept_time, :p_pre_money_time, :p_actual_money_time, :p_money, :p_content, :p_deleted_at, :p_deleter_id)
6
+ json.p_staff d.p_staff&.user&.real_name
7
+ json.p_sale_staff d.p_sale_staff&.user&.real_name
8
+ json.p_deleter d.p_deleter&.user&.real_name
9
+ bidded_date = d.last_follow_up&.bidded_date
10
+ stage = d.last_follow_up&.stage&.name
11
+
12
+ json.p_state (bidded_date.present? && Time.now > bidded_date + 1.month && d.p_stage.blank? && stage == '已中标') || (d.p_pre_money_time.present? && Time.now > d.p_pre_money_time && d.p_actual_money_time.blank?) || (d.p_pre_accept_time.present? && Time.now > d.p_pre_accept_time && d.p_accept_time.blank?) ? "延期" : "正常"
13
+ json.id d.id
14
+ json.number d.number
15
+ json.name d.name
16
+ json.department d.department&.name
17
+ json.school d.department&.school&.name
18
+ json.school_id d.department&.school_id
19
+ follow_ups_count = d['follow_ups_counts'] || 0
20
+ json.follow_ups_count follow_ups_count
21
+ follow_count += follow_ups_count
22
+ json.follow_up_id d.last_follow_up_id
23
+ json.clazz d.clazz&.name || ""
24
+ json.clazz_changed d.last_follow_up&.clazz_changed || false
25
+ json.stage d.last_follow_up&.stage&.name
26
+ json.invitation_at d.last_follow_up&.invitation_at.to_s
27
+ json.reception_at d.last_follow_up&.reception_at.to_s
28
+ json.bidded_date d.last_follow_up&.bidded_date.to_s
29
+ json.signed_date d.last_follow_up&.signed_date.to_s
30
+ json.o_business_deployment EducodeSales::FollowUp::BUSINESS_DEPLOYMENT[1..-1].to_h.invert[d.last_follow_up&.o_business_deployment]
31
+ json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
32
+ json.created_at d.created_at.to_s
33
+ json.no_followup_days (d['latest_time'] ? DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d['latest_time'].strftime("%Y-%m-%d")) : DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d.created_at.strftime("%Y-%m-%d"))).to_i
34
+ json.staff_manages 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
35
+ json.divide_rate d.divide_rate
36
+ json.divide_money d.divide_amount.to_f.round(2)
37
+ json.budget_amount d.budget_amount.to_f.round(2) #d.follow_ups.where(stage_id: @budget_stage_ids).order("created_at desc").first&.total_amount&.round(2) || 0
38
+ json.area d.department&.school&.province
39
+ if d.department&.school
40
+ json.property d.department.school.school_tags.where(for_missions: true).pluck(:name).join("、")
41
+ else
42
+ json.property ''
43
+ end
44
+ json.sale_way d.last_follow_up&.place&.name.present? ? '渠道' : '直销'
45
+ json.year d.last_follow_up&.year.to_s
46
+ json.total_amount d.last_follow_up&.total_amount.to_f.round(2)
47
+ json.actual_amount d.last_follow_up&.actual_amount.to_f.round(2)
48
+ json.return_money d.return_money
49
+ json.wait_return_money d.wait_return_money.to_f.round(2)
50
+ json.return_money_days d.last_follow_up&.reception_at.present? && d.last_follow_up.money_plans.where(clazz: '实际回款').present? ? (d.last_follow_up.money_plans.where(clazz: '实际回款').order(created_at: :asc).first.date_at.to_s(:date).to_date - d.last_follow_up&.reception_at).to_i : ''
51
+ json.place d.last_follow_up&.place&.name
52
+ json.last_follow_person d.last_follow_up.present? ? d.last_follow_up.staff&.user&.real_name : d.staff&.user&.real_name
53
+ json.source d.source
54
+ json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
55
+ json.current_staff_id @current_admin.id
56
+ json.staff_id d.staff_id
57
+ json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : ''
58
+ json.self_flag (d.staff_id == @current_admin.id) || (d.last_follow_up_id.in? follow_up_ids)
59
+ json.followed d.users.pluck(:user_id).include?(@current_admin.user.id) ? 1 : 0 # d.users.where(user_id:@current_admin.user.id).first ? 1 : 0
60
+ json.is_deleted @is_deleted
61
+ end
62
+ end
63
+
64
+ json.totalRow do
65
+ json.follow_ups_count follow_count.to_i.to_s
66
+ end
67
+ json.code 0
68
+ json.count @businesses.total_count
69
+ json.msg 'succcess'
@@ -7,6 +7,12 @@
7
7
  <input type="text" name="name" class="layui-input">
8
8
  </div>
9
9
  </div>
10
+ <div class="layui-inline">
11
+ <label class="layui-form-label">真实姓名</label>
12
+ <div class="layui-input-inline">
13
+ <input type="text" name="realname" class="layui-input">
14
+ </div>
15
+ </div>
10
16
  <div class="layui-inline">
11
17
  <label class="layui-form-label">单位</label>
12
18
  <div class="layui-input-inline">
@@ -19,6 +25,18 @@
19
25
  <%= select_tag "professional_title", options_for_select(['教授', '研究员', '副教授', '副研究员', '讲师', '助理研究员', '助理教授'], @person&.professional_title), { include_blank: true } %>
20
26
  </div>
21
27
  </div>
28
+ <div class="layui-inline">
29
+ <label class="layui-form-label">生态经理</label>
30
+ <div class="layui-input-inline">
31
+ <%= select_tag "staff_manage", options_for_select(@staff_manage), { 'lay-filter': 'staff_manage', include_blank: true } %>
32
+ </div>
33
+ </div>
34
+ <div class="layui-inline">
35
+ <label class="layui-form-label">最新跟进人</label>
36
+ <div class="layui-input-inline">
37
+ <%= select_tag "staff_id", options_for_select(@follow_upers), { 'lay-filter': 'staff_id', include_blank: true } %>
38
+ </div>
39
+ </div>
22
40
  <div class="layui-inline show_item" style="display:none;">
23
41
  <label class="layui-form-label">导流来源</label>
24
42
  <div class="layui-input-inline">
@@ -166,6 +184,11 @@
166
184
  fixed: 'left',
167
185
  templet: "#name"
168
186
  },
187
+ {
188
+ field: 'realname',
189
+ width: 100,
190
+ title: '真实姓名',
191
+ },
169
192
  {
170
193
  field: 'school',
171
194
  width: 160,
@@ -183,7 +206,11 @@
183
206
  width: 130,
184
207
  title: '部门',
185
208
  templet:'<div><span title="{{d.department}}">{{d.department}}</span></div>'
186
-
209
+ },
210
+ {
211
+ field: 'majors',
212
+ width: 160,
213
+ title: '专业',
187
214
  },
188
215
  {
189
216
  field: 'professional_title',
@@ -4,17 +4,24 @@
4
4
  <div class="layui-inline">
5
5
  <label class="layui-form-label required">姓名</label>
6
6
  <div class="layui-input-block">
7
- <input type="text" name="name" autocomplete="off" lay-verify="required"
7
+ <input type="text" name="name" autocomplete="off" lay-verify="required" style="width: 198px"
8
8
  class="layui-input" placeholder="请输入" value="<%= @teacher.name %>">
9
9
  </div>
10
10
  </div>
11
+ <div class="layui-inline">
12
+ <label class="layui-form-label ">真实姓名</label>
13
+ <div class="layui-input-block">
14
+ <input type="text" name="realname" autocomplete="off" lay-verify="required" class="layui-input" placeholder="请输入" value="<%= @teacher.realname %>">
15
+ </div>
16
+ </div>
17
+ <br>
11
18
  <div class="layui-inline">
12
19
  <label class="layui-form-label ">职称</label>
13
20
  <div class="layui-input-block">
14
21
  <%= select_tag "professional_title", options_for_select(['教授', '研究员', '副教授', '副研究员', '讲师', '助理研究员', '助理教授'], @teacher.professional_title), { include_blank: true } %>
15
22
  </div>
16
23
  </div>
17
- <br>
24
+
18
25
  <div class="layui-inline">
19
26
  <label class="layui-form-label ">职务</label>
20
27
  <div class="layui-input-block">
@@ -22,13 +29,13 @@
22
29
  class="layui-input" placeholder="请输入" value="<%= @teacher.job %>">
23
30
  </div>
24
31
  </div>
32
+ <br>
25
33
  <div class="layui-inline">
26
34
  <label class="layui-form-label ">来源</label>
27
35
  <div class="layui-input-block">
28
36
  <%= select_tag "source_id", options_for_select(EducodeSales::Common.where(clazz: 'teacher_source').pluck(:name, :id), @teacher.source_id), { include_blank: true } %>
29
37
  </div>
30
38
  </div>
31
- <br>
32
39
  <div class="layui-inline">
33
40
  <label class="layui-form-label ">微信号</label>
34
41
  <div class="layui-input-block">
@@ -27,6 +27,8 @@ json.data do
27
27
 
28
28
  json.staff_manage @staff_manages[d.department&.school&.province]&.join(",")
29
29
 
30
+ json.majors d.department&.department_majors&.pluck(:name).present? ? d.department&.department_majors&.pluck(:name).join(",") : ""
31
+
30
32
  json.follow_person d.follow_up&.staff&.user&.real_name || ''
31
33
  json.created_on d.user.present? ? d.user.created_on.to_s(:date) : ''
32
34
  json.last_login_on (d.user.present? && d.user.last_login_on.present?) ? d.user.last_login_on.to_s(:date) : ''
@@ -36,6 +38,7 @@ json.data do
36
38
  json.teacher_assist d.teacher_assign_follows.map{|t| t.staff.user.real_name}.join(',')
37
39
  teacher_follows_count += d.teacher_follows_count
38
40
  courses_counts += d.courses_count
41
+ json.realname d.realname
39
42
  end
40
43
  end
41
44
 
@@ -92,6 +92,16 @@
92
92
  <% end %>
93
93
  </dl>
94
94
  </li>
95
+ <% if can? :read, EducodeSales::Customer %>
96
+ <li class="layui-nav-item layui-nav-itemed menu-li">
97
+ <a class="" href="javascript:;"><b><%= image_tag "educode_sales/客户管理.png", size: "15" %>
98
+ <i style="padding-right: 25px"></i>客户管理</b></a>
99
+ <dl class="layui-nav-child">
100
+ <dd><a href="/missions/customers/list" class="<%= current?('layui-this', list_customers_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/客户管理.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>客户管理</a>
101
+ </dd>
102
+ </dl>
103
+ </li>
104
+ <% end %>
95
105
  <li class="layui-nav-item layui-nav-itemed menu-li">
96
106
  <a class="" href="javascript:;"><b><%= image_tag "educode_sales/7.运营活动.png", size: "15" %>
97
107
  <i style="font-size: 25px; padding-right: 25px"></i>运营活动</b></a>
@@ -145,6 +155,21 @@
145
155
  </li>
146
156
  <% end %>
147
157
 
158
+ <% if can?(:read, EducodeSales::Project) %>
159
+ <li class="layui-nav-item layui-nav-itemed menu-li">
160
+ <a class="" href="javascript:;"><b><%= image_tag "educode_sales/5.渠道管理.png", size: "15" %>
161
+ <i style="font-size: 25px; padding-right: 25px"></i>项目管理</b></a>
162
+ <dl class="layui-nav-child">
163
+ <dd>
164
+ <a href="/missions/projects" class="<%= current?('layui-this', projects_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/7.运营活动.png", size: "15" %>
165
+ <i style="font-size: 25px; padding-right: 15px"></i>项目交付管理</a></dd>
166
+ <!-- <dd>-->
167
+ <!-- <a href="/missions/idea_recycles" class="<%#= current?('layui-this', idea_recycles_path) %>"><i style="padding-right: 35px"></i><%#= image_tag "educode_sales/回收站.png", size: "15" %>-->
168
+ <!-- <i style="font-size: 25px; padding-right: 15px"></i>方案回收站</a></dd>-->
169
+ </dl>
170
+ </li>
171
+ <% end %>
172
+
148
173
  <% if @current_admin.is_admin || @current_admin.code == 'userbe' %>
149
174
  <li class="layui-nav-item layui-nav-itemed menu-li">
150
175
  <a class="" href="javascript:;"><b><%= image_tag "educode_sales/13.系统设置.png", size: "15" %>
data/config/routes.rb CHANGED
@@ -44,6 +44,7 @@ EducodeSales::Engine.routes.draw do
44
44
  post :batch_update_school_tags
45
45
  get :majors
46
46
  get :new_major
47
+ get :list
47
48
  end
48
49
 
49
50
  member do
@@ -54,6 +55,7 @@ EducodeSales::Engine.routes.draw do
54
55
  post :major
55
56
  put :update_major
56
57
  delete :delete_major
58
+ get :edit_major
57
59
  end
58
60
  end
59
61
 
@@ -84,6 +86,7 @@ EducodeSales::Engine.routes.draw do
84
86
  put :update_money
85
87
  delete :delete_money
86
88
  put :update_advise
89
+ put :comment
87
90
  end
88
91
  end
89
92
 
@@ -260,6 +263,15 @@ EducodeSales::Engine.routes.draw do
260
263
  end
261
264
  end
262
265
 
266
+ resources :projects do
267
+ collection do
268
+ get :detail
269
+ get :history
270
+ post :recycle
271
+ end
272
+ member do
273
+ end
274
+ end
263
275
  resources :ideas do
264
276
  collection do
265
277
  get :detail
@@ -0,0 +1,20 @@
1
+ class AddPStaffIdToBusinesses < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_businesses, :p_stage, :integer, comment: '项目阶段'
4
+ add_column :educode_sales_businesses, :p_difficulty, :integer, comment: '项目难度'
5
+ add_column :educode_sales_businesses, :p_special, :integer, comment: '定制'
6
+ add_column :educode_sales_businesses, :p_status, :integer, comment: '交付'
7
+ add_column :educode_sales_businesses, :p_staff_id, :integer, comment: '指派人'
8
+ add_column :educode_sales_businesses, :p_sale_staff_id, :integer, comment: '销售经理'
9
+ add_column :educode_sales_businesses, :p_course_time, :date, comment: '课程交付时间'
10
+ add_column :educode_sales_businesses, :p_platform_time, :date, comment: '平台交付时间'
11
+ add_column :educode_sales_businesses, :p_deploy_time, :date, comment: '现场部署时间'
12
+ add_column :educode_sales_businesses, :p_accept_time, :date, comment: '实际验收时间'
13
+ add_column :educode_sales_businesses, :p_pre_money_time, :date, comment: '拟定回款时间'
14
+ add_column :educode_sales_businesses, :p_actual_money_time, :date, comment: '实际回款时间'
15
+ add_column :educode_sales_businesses, :p_money, :float, default: 0, comment: '回款'
16
+ add_column :educode_sales_businesses, :p_content, :text, comment: '问题备注'
17
+ add_column :educode_sales_businesses, :p_deleted_at, :datetime, comment: '删除时间'
18
+ add_column :educode_sales_businesses, :p_deleter_id, :integer, comment: '删除人'
19
+ end
20
+ end
@@ -0,0 +1,10 @@
1
+ class CreateBusinessHistories < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_business_histories do |t|
4
+ t.references :business, index: true
5
+ t.references :staff, index: true
6
+ t.text :content
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ class AddPermissionsToProjects < ActiveRecord::Migration[5.2]
2
+ def change
3
+ last_position = EducodeSales::Permission.all.order(position: :asc).last&.position.to_i
4
+ EducodeSales::Permission.create(name: '查看项目', subject: 'Project', action: 'read', clazz: 'project', position: last_position + 1)
5
+ # EducodeSales::Permission.create(name: '添加项目', subject: 'Project', action: 'create', clazz: 'project', position: last_position + 2)
6
+ EducodeSales::Permission.create(name: '编辑项目', subject: 'Project', action: 'update', clazz: 'project', position: last_position + 3)
7
+ EducodeSales::Permission.create(name: '移除项目', subject: 'Project', action: 'destroy', clazz: 'project', position: last_position + 4)
8
+ EducodeSales::Permission.create(name: '恢复项目', subject: 'Project', action: 'recycle', clazz: 'project', position: last_position + 5)
9
+ EducodeSales::Permission.create(name: '查看历史记录', subject: 'Project', action: 'read_history', clazz: 'project', position: last_position + 6)
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddPreTimeToBusinesses < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_businesses, :p_pre_accept_time, :date, comment: '拟定验收时间'
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ class AddMajorEducodeSalesCustomerFollows < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_customer_follows, :major_id, :integer
4
+ add_column :educode_sales_businesses, :major_id, :integer
5
+ add_column :educode_sales_teachers, :realname, :string
6
+
7
+ add_column :educode_sales_customer_adds, :department_id, :integer
8
+ add_column :educode_sales_customer_adds, :major_id, :integer
9
+ add_column :educode_sales_customer_adds, :sale_id, :integer, comment: '销售经理'
10
+ add_column :educode_sales_customer_adds, :contact_way, :string, comment: '联系方式'
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ class CreateEducodeSalesEcoStaffs < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_eco_staffs do |t|
4
+ t.references :staff, index: true
5
+ t.string :sourcable_type
6
+ t.integer :sourcable_id
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.68'
2
+ VERSION = '0.9.70'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: educode_sales
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.68
4
+ version: 0.9.70
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-07 00:00:00.000000000 Z
11
+ date: 2023-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -105,6 +105,7 @@ files:
105
105
  - app/assets/images/educode_sales/icon-login.png
106
106
  - app/assets/images/educode_sales/icon.png
107
107
  - app/assets/images/educode_sales/indexLogo.png
108
+ - app/assets/images/educode_sales/indexlogo.png
108
109
  - app/assets/images/educode_sales/loading-0.gif
109
110
  - app/assets/images/educode_sales/loading-1.gif
110
111
  - app/assets/images/educode_sales/loading-2.gif
@@ -119,6 +120,7 @@ files:
119
120
  - app/assets/javascripts/educode_sales/extent/miniPage.js
120
121
  - app/assets/javascripts/educode_sales/extent/request.js
121
122
  - app/assets/javascripts/educode_sales/extent/select_input.js
123
+ - app/assets/javascripts/educode_sales/extent/treeTable.js
122
124
  - app/assets/javascripts/educode_sales/extent/xm-select.js
123
125
  - app/assets/javascripts/educode_sales/jquery.cxselect.js
124
126
  - app/assets/javascripts/educode_sales/layui.js
@@ -162,6 +164,7 @@ files:
162
164
  - app/controllers/educode_sales/operations_controller.rb
163
165
  - app/controllers/educode_sales/places_controller.rb
164
166
  - app/controllers/educode_sales/plans_controller.rb
167
+ - app/controllers/educode_sales/projects_controller.rb
165
168
  - app/controllers/educode_sales/recycles_controller.rb
166
169
  - app/controllers/educode_sales/results_controller.rb
167
170
  - app/controllers/educode_sales/roles_controller.rb
@@ -196,6 +199,7 @@ files:
196
199
  - app/models/educode_sales/business.rb
197
200
  - app/models/educode_sales/business_clazz_change.rb
198
201
  - app/models/educode_sales/business_export_record.rb
202
+ - app/models/educode_sales/business_history.rb
199
203
  - app/models/educode_sales/business_info.rb
200
204
  - app/models/educode_sales/business_level.rb
201
205
  - app/models/educode_sales/business_number_record.rb
@@ -207,6 +211,7 @@ files:
207
211
  - app/models/educode_sales/customer_add.rb
208
212
  - app/models/educode_sales/customer_extension.rb
209
213
  - app/models/educode_sales/customer_follow.rb
214
+ - app/models/educode_sales/eco_staff.rb
210
215
  - app/models/educode_sales/filter.rb
211
216
  - app/models/educode_sales/follow_up.rb
212
217
  - app/models/educode_sales/idea.rb
@@ -221,6 +226,7 @@ files:
221
226
  - app/models/educode_sales/permission.rb
222
227
  - app/models/educode_sales/place.rb
223
228
  - app/models/educode_sales/place_area.rb
229
+ - app/models/educode_sales/project.rb
224
230
  - app/models/educode_sales/recycle.rb
225
231
  - app/models/educode_sales/result.rb
226
232
  - app/models/educode_sales/role.rb
@@ -294,9 +300,12 @@ files:
294
300
  - app/views/educode_sales/customers/edit.html.erb
295
301
  - app/views/educode_sales/customers/edit_department.html.erb
296
302
  - app/views/educode_sales/customers/edit_follow_record.html.erb
303
+ - app/views/educode_sales/customers/edit_major.html.erb
297
304
  - app/views/educode_sales/customers/give.html.erb
298
305
  - app/views/educode_sales/customers/index.html.erb
299
306
  - app/views/educode_sales/customers/index.json.jbuilder
307
+ - app/views/educode_sales/customers/list.html.erb
308
+ - app/views/educode_sales/customers/list.json.jbuilder
300
309
  - app/views/educode_sales/customers/majors.json.jbuilder
301
310
  - app/views/educode_sales/customers/new.html.erb
302
311
  - app/views/educode_sales/customers/new_department.html.erb
@@ -431,6 +440,11 @@ files:
431
440
  - app/views/educode_sales/plans/show_week.html.erb
432
441
  - app/views/educode_sales/plans/show_weekly.html.erb
433
442
  - app/views/educode_sales/plans/years_plan.json.jbuilder
443
+ - app/views/educode_sales/projects/detail.html.erb
444
+ - app/views/educode_sales/projects/edit.html.erb
445
+ - app/views/educode_sales/projects/history.html.erb
446
+ - app/views/educode_sales/projects/index.html.erb
447
+ - app/views/educode_sales/projects/index.json.jbuilder
434
448
  - app/views/educode_sales/recycles/_business.html.erb
435
449
  - app/views/educode_sales/recycles/_monthPlan.html.erb
436
450
  - app/views/educode_sales/recycles/_monthly.html.erb
@@ -593,6 +607,12 @@ files:
593
607
  - db/migrate/20230329135141_create_educode_sales_business_watches.rb
594
608
  - db/migrate/20230330141213_create_educode_sales_activity_follow_ups.rb
595
609
  - db/migrate/20230405074036_add_year_to_sale_plans.rb
610
+ - db/migrate/20230412083510_add_p_staff_id_to_businesses.rb
611
+ - db/migrate/20230412092000_create_business_histories.rb
612
+ - db/migrate/20230413015619_add_permissions_to_projects.rb
613
+ - db/migrate/20230413031029_add_pre_time_to_businesses.rb
614
+ - db/migrate/20230414031409_add_major_educode_sales_customer_follows.rb
615
+ - db/migrate/20230414035655_create_educode_sales_eco_staffs.rb
596
616
  - lib/educode_sales.rb
597
617
  - lib/educode_sales/engine.rb
598
618
  - lib/educode_sales/version.rb
@@ -601,7 +621,7 @@ homepage: https://www.educoder.net
601
621
  licenses:
602
622
  - MIT
603
623
  metadata: {}
604
- post_install_message:
624
+ post_install_message:
605
625
  rdoc_options: []
606
626
  require_paths:
607
627
  - lib
@@ -616,8 +636,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
616
636
  - !ruby/object:Gem::Version
617
637
  version: '0'
618
638
  requirements: []
619
- rubygems_version: 3.0.0
620
- signing_key:
639
+ rubygems_version: 3.0.9
640
+ signing_key:
621
641
  specification_version: 4
622
642
  summary: Summary of EducodeSales.
623
643
  test_files: []