educode_sales 0.9.65 → 0.9.67

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/activities_controller.rb +72 -4
  3. data/app/controllers/educode_sales/businesses_controller.rb +82 -1
  4. data/app/models/educode_sales/activity.rb +17 -4
  5. data/app/models/educode_sales/activity_follow_up.rb +13 -0
  6. data/app/models/educode_sales/activity_staff.rb +1 -1
  7. data/app/models/educode_sales/business.rb +3 -0
  8. data/app/models/educode_sales/business_level.rb +11 -0
  9. data/app/models/educode_sales/business_watch.rb +6 -0
  10. data/app/views/educode_sales/activities/_follows.html.erb +208 -0
  11. data/app/views/educode_sales/activities/_index.html.erb +418 -0
  12. data/app/views/educode_sales/activities/edit.html.erb +99 -0
  13. data/app/views/educode_sales/activities/follow_ups.json.jbuilder +19 -0
  14. data/app/views/educode_sales/activities/index.html.erb +13 -349
  15. data/app/views/educode_sales/activities/index.json.jbuilder +9 -1
  16. data/app/views/educode_sales/activities/new.html.erb +80 -0
  17. data/app/views/educode_sales/activities/new_follow_up.html.erb +56 -0
  18. data/app/views/educode_sales/businesses/edit.html.erb +48 -6
  19. data/app/views/educode_sales/businesses/index.html.erb +10 -0
  20. data/app/views/educode_sales/businesses/no_permission.html.erb +2 -0
  21. data/app/views/educode_sales/idea_recycles/index.html.erb +9 -1
  22. data/app/views/educode_sales/ideas/edit.html.erb +22 -22
  23. data/app/views/educode_sales/ideas/index.html.erb +10 -1
  24. data/app/views/educode_sales/ideas/new.html.erb +12 -12
  25. data/config/routes.rb +3 -0
  26. data/db/migrate/20230329135141_create_educode_sales_business_watches.rb +17 -0
  27. data/db/migrate/20230330141213_create_educode_sales_activity_follow_ups.rb +25 -0
  28. data/lib/educode_sales/version.rb +1 -1
  29. metadata +15 -6
  30. data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -55,30 +55,30 @@
55
55
  </div>
56
56
  </div>
57
57
  <div class="layui-col-md6">
58
- <labeL class="layui-form-label required">方案指派人:</labeL>
58
+ <labeL class="layui-form-label">方案指派人:</labeL>
59
59
  <div class="layui-input-block">
60
60
  <div id="new_staff_id"></div>
61
61
  </div>
62
62
  </div>
63
63
  </div>
64
- <div class="layui-row" style="padding-top: 15px">
65
- <div class="layui-col-md6">
66
- <labeL class="layui-form-label required">优先级:</labeL>
67
- <div class="layui-input-block">
68
- <%= select_tag "level", options_for_select(EducodeSales::Idea.levels.keys, @idea&.level), { 'lay-filter': 'level', include_blank: false } %>
64
+ <div class="layui-row" style="padding-top: 15px">
65
+ <div class="layui-col-md6">
66
+ <labeL class="layui-form-label">优先级:</labeL>
67
+ <div class="layui-input-block">
68
+ <%= select_tag "level", options_for_select(EducodeSales::Idea.levels.keys, @idea&.level), { 'lay-filter': 'level', include_blank: false } %>
69
+ </div>
69
70
  </div>
70
- </div>
71
- <div class="layui-col-md6">
72
- <labeL class="layui-form-label required">状态:</labeL>
73
- <div class="layui-input-block">
74
- <%= select_tag "status", options_for_select(EducodeSales::Idea.statuses.keys, @idea&.status), { 'lay-filter': 'status', include_blank: false } %>
71
+ <div class="layui-col-md6">
72
+ <labeL class="layui-form-label">状态:</labeL>
73
+ <div class="layui-input-block">
74
+ <%= select_tag "status", options_for_select(EducodeSales::Idea.statuses.keys, @idea&.status), { 'lay-filter': 'status', include_blank: false } %>
75
+ </div>
75
76
  </div>
76
77
  </div>
77
- </div>
78
- <div class="layui-row" style="padding-top: 15px">
79
- <div class="layui-col-md6">
80
- <labeL class="layui-form-label required">类型:</labeL>
81
- <div class="layui-input-block">
78
+ <div class="layui-row" style="padding-top: 15px">
79
+ <div class="layui-col-md6">
80
+ <labeL class="layui-form-label">类型:</labeL>
81
+ <div class="layui-input-block">
82
82
  <%= select_tag "types", options_for_select(EducodeSales::Idea.types.keys, @idea&.types), { 'lay-filter': 'types', include_blank: false } %>
83
83
  </div>
84
84
  </div>
@@ -91,15 +91,15 @@
91
91
  </div>
92
92
  <div class="layui-row" style="padding-top: 15px">
93
93
  <div class="layui-col-md6">
94
- <labeL class="layui-form-label required">硬件规模(万):</labeL>
94
+ <labeL class="layui-form-label">硬件规模(万):</labeL>
95
95
  <div class="layui-input-block">
96
- <input type="number" name="hardware" autocomplete="off" lay-verify="required" lay-reqtext="硬件规模不能为空" placeholder="请输入硬件规模" value="<%= @idea&.hardware %>" class="layui-input">
96
+ <input type="number" name="hardware" autocomplete="off" placeholder="请输入硬件规模" value="<%= @idea&.hardware %>" class="layui-input">
97
97
  </div>
98
98
  </div>
99
99
  <div class="layui-col-md6">
100
- <labeL class="layui-form-label">项目预算(万):</labeL>
100
+ <labeL class="layui-form-label required">项目预算(万):</labeL>
101
101
  <div class="layui-input-block">
102
- <input type="number" name="money" autocomplete="off" placeholder="请输入项目预算" value="<%= @idea&.money %>" class="layui-input">
102
+ <input type="number" name="money" autocomplete="off" lay-verify="required" lay-reqtext="项目预算不能为空" placeholder="请输入项目预算" value="<%= @idea&.money %>" class="layui-input">
103
103
  </div>
104
104
  </div>
105
105
  </div>
@@ -234,8 +234,8 @@
234
234
  autoRow: true,
235
235
  radio: true,
236
236
  delay: 1000,
237
- tips: '支持学校名称搜索,请至少输入一个字符',
238
- searchTips: '支持名称/省份搜索,请至少输入一个字符',
237
+ tips: '支持名称搜索,请至少输入一个字符',
238
+ searchTips: '支持名称搜索,请至少输入一个字符',
239
239
  paging: true,
240
240
  pageRemote: true,
241
241
  filterable: true,
@@ -92,6 +92,14 @@
92
92
  <a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="idea_recycle">移除</a>
93
93
  <% end %>
94
94
  </script>
95
+ <script type="text/html" id="statusTpl">
96
+ {{# if(d.status === '已完成'){ }}
97
+ <span style="color: #22bf18;">{{ d.status }}</span>
98
+ {{# } else { }}
99
+ <span style="color: #e60505;">{{ d.status }}</span>
100
+ {{# } }}
101
+ </script>
102
+
95
103
  <script>
96
104
  layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
97
105
  var $ = layui.jquery,
@@ -141,7 +149,8 @@
141
149
  {
142
150
  field: 'status',
143
151
  width: 100,
144
- title: '状态'
152
+ title: '状态',
153
+ templet: '#statusTpl'
145
154
  },
146
155
  {
147
156
  field: 'types',
@@ -23,13 +23,13 @@
23
23
  <div class="layui-col-md6">
24
24
  <labeL class="layui-form-label">学校负责人:</labeL>
25
25
  <div class="layui-input-block">
26
- <input type="text" name="manager_name" autocomplete="off" placeholder="请输入学校/单位名称" value="<%= @idea&.manager_name %>" class="layui-input">
26
+ <input type="text" name="manager_name" autocomplete="off" placeholder="请输入学校负责人" value="<%= @idea&.manager_name %>" class="layui-input">
27
27
  </div>
28
28
  </div>
29
29
  <div class="layui-col-md6">
30
30
  <labeL class="layui-form-label">负责人电话:</labeL>
31
31
  <div class="layui-input-block">
32
- <input type="text" name="manager_phone" autocomplete="off" placeholder="请输入院系/部门名称" value="<%= @idea&.manager_phone %>" class="layui-input">
32
+ <input type="text" name="manager_phone" autocomplete="off" placeholder="请输入负责人电话" value="<%= @idea&.manager_phone %>" class="layui-input">
33
33
  </div>
34
34
  </div>
35
35
  </div>
@@ -55,7 +55,7 @@
55
55
  </div>
56
56
  </div>
57
57
  <div class="layui-col-md6">
58
- <labeL class="layui-form-label required">方案指派人:</labeL>
58
+ <labeL class="layui-form-label">方案指派人:</labeL>
59
59
  <div class="layui-input-block">
60
60
  <div id="new_staff_id"></div>
61
61
  </div>
@@ -63,13 +63,13 @@
63
63
  </div>
64
64
  <div class="layui-row" style="padding-top: 15px">
65
65
  <div class="layui-col-md6">
66
- <labeL class="layui-form-label required">优先级:</labeL>
66
+ <labeL class="layui-form-label">优先级:</labeL>
67
67
  <div class="layui-input-block">
68
68
  <%= select_tag "level", options_for_select(EducodeSales::Idea.levels.keys, @idea&.level), { 'lay-filter': 'level', include_blank: false } %>
69
69
  </div>
70
70
  </div>
71
71
  <div class="layui-col-md6">
72
- <labeL class="layui-form-label required">状态:</labeL>
72
+ <labeL class="layui-form-label">状态:</labeL>
73
73
  <div class="layui-input-block">
74
74
  <%= select_tag "status", options_for_select(EducodeSales::Idea.statuses.keys, @idea&.status), { 'lay-filter': 'status', include_blank: false } %>
75
75
  </div>
@@ -77,7 +77,7 @@
77
77
  </div>
78
78
  <div class="layui-row" style="padding-top: 15px">
79
79
  <div class="layui-col-md6">
80
- <labeL class="layui-form-label required">类型:</labeL>
80
+ <labeL class="layui-form-label">类型:</labeL>
81
81
  <div class="layui-input-block">
82
82
  <%= select_tag "types", options_for_select(EducodeSales::Idea.types.keys, @idea&.types), { 'lay-filter': 'types', include_blank: false } %>
83
83
  </div>
@@ -91,15 +91,15 @@
91
91
  </div>
92
92
  <div class="layui-row" style="padding-top: 15px">
93
93
  <div class="layui-col-md6">
94
- <labeL class="layui-form-label required">硬件规模(万):</labeL>
94
+ <labeL class="layui-form-label">硬件规模(万):</labeL>
95
95
  <div class="layui-input-block">
96
- <input type="number" name="hardware" autocomplete="off" lay-verify="required" lay-reqtext="硬件规模不能为空" placeholder="请输入硬件规模" value="<%= @idea&.hardware %>" class="layui-input">
96
+ <input type="number" name="hardware" autocomplete="off" placeholder="请输入硬件规模" value="<%= @idea&.hardware %>" class="layui-input">
97
97
  </div>
98
98
  </div>
99
99
  <div class="layui-col-md6">
100
- <labeL class="layui-form-label">项目预算(万):</labeL>
100
+ <labeL class="layui-form-label required">项目预算(万):</labeL>
101
101
  <div class="layui-input-block">
102
- <input type="number" name="money" autocomplete="off" placeholder="请输入项目预算" value="<%= @idea&.money %>" class="layui-input">
102
+ <input type="number" name="money" autocomplete="off" lay-verify="required" lay-reqtext="项目预算不能为空" placeholder="请输入项目预算" value="<%= @idea&.money %>" class="layui-input">
103
103
  </div>
104
104
  </div>
105
105
  </div>
@@ -240,8 +240,8 @@
240
240
  autoRow: true,
241
241
  radio: true,
242
242
  delay: 1000,
243
- tips: '支持学校名称搜索,请至少输入一个字符',
244
- searchTips: '支持名称/省份搜索,请至少输入一个字符',
243
+ tips: '支持名称搜索,请至少输入一个字符',
244
+ searchTips: '支持名称搜索,请至少输入一个字符',
245
245
  paging: true,
246
246
  pageRemote: true,
247
247
  filterable: true,
data/config/routes.rb CHANGED
@@ -265,9 +265,12 @@ EducodeSales::Engine.routes.draw do
265
265
  resources :activities do
266
266
  collection do
267
267
  get :show_teachers
268
+ get :new_follow_up
269
+ get :follow_ups
268
270
  end
269
271
  member do
270
272
  get :show_schools
273
+ post :follow_up
271
274
  end
272
275
  end
273
276
 
@@ -0,0 +1,17 @@
1
+ class CreateEducodeSalesBusinessWatches < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_business_watches do |t|
4
+ t.references :business
5
+ t.references :staff
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ create_table :educode_sales_business_levels do |t|
11
+ t.references :business
12
+ t.integer :level_id
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ class CreateEducodeSalesActivityFollowUps < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_activity_follow_ups do |t|
4
+ t.references :activity
5
+ t.references :staff
6
+ t.text :description
7
+ t.integer :info_id
8
+ t.text :advise
9
+
10
+ t.timestamps
11
+ end
12
+ add_column :educode_sales_activities, :state_id, :integer, comment: '状态'
13
+ add_column :educode_sales_activities, :sponsor, :string, comment: '主办方'
14
+ add_column :educode_sales_activities, :linkman, :string, comment: '联系人'
15
+ add_column :educode_sales_activities, :phone, :string, comment: '联系电话'
16
+ add_column :educode_sales_activities, :scale, :string, comment: '规模'
17
+ add_column :educode_sales_activities, :address, :string, comment: '会议地点'
18
+ add_column :educode_sales_activities, :meeting_form, :string, comment: '会议形式'
19
+ add_column :educode_sales_activities, :last_follow_up_id, :integer, comment: '最新跟进'
20
+
21
+ EducodeSales::Permission.find_or_create_by(name: '添加跟进记录', subject: 'ActivityFollowUp', action: 'create', clazz: 'activity')
22
+ EducodeSales::Permission.find_or_create_by(name: '团队建议', subject: 'ActivityFollowUp', action: 'advise', clazz: 'activity')
23
+ # EducodeSales::Permission.find_or_create_by(name: '附件', subject: 'ActivityFollowUp', action: 'upload', clazz: 'activity')
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.65'
2
+ VERSION = '0.9.67'
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.65
4
+ version: 0.9.67
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-03-27 00:00:00.000000000 Z
11
+ date: 2023-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -105,7 +105,6 @@ 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
109
108
  - app/assets/images/educode_sales/loading-0.gif
110
109
  - app/assets/images/educode_sales/loading-1.gif
111
110
  - app/assets/images/educode_sales/loading-2.gif
@@ -188,6 +187,7 @@ files:
188
187
  - app/models/ability.rb
189
188
  - app/models/concerns/deletable.rb
190
189
  - app/models/educode_sales/activity.rb
190
+ - app/models/educode_sales/activity_follow_up.rb
191
191
  - app/models/educode_sales/activity_staff.rb
192
192
  - app/models/educode_sales/activity_teacher.rb
193
193
  - app/models/educode_sales/application_record.rb
@@ -196,8 +196,10 @@ files:
196
196
  - app/models/educode_sales/business.rb
197
197
  - app/models/educode_sales/business_clazz_change.rb
198
198
  - app/models/educode_sales/business_export_record.rb
199
+ - app/models/educode_sales/business_level.rb
199
200
  - app/models/educode_sales/business_number_record.rb
200
201
  - app/models/educode_sales/business_relation_ship.rb
202
+ - app/models/educode_sales/business_watch.rb
201
203
  - app/models/educode_sales/common.rb
202
204
  - app/models/educode_sales/course_subject.rb
203
205
  - app/models/educode_sales/customer.rb
@@ -233,10 +235,14 @@ files:
233
235
  - app/models/educode_sales/teacher.rb
234
236
  - app/models/educode_sales/teacher_assign_follow.rb
235
237
  - app/models/educode_sales/teacher_follow.rb
238
+ - app/views/educode_sales/activities/_follows.html.erb
239
+ - app/views/educode_sales/activities/_index.html.erb
236
240
  - app/views/educode_sales/activities/edit.html.erb
241
+ - app/views/educode_sales/activities/follow_ups.json.jbuilder
237
242
  - app/views/educode_sales/activities/index.html.erb
238
243
  - app/views/educode_sales/activities/index.json.jbuilder
239
244
  - app/views/educode_sales/activities/new.html.erb
245
+ - app/views/educode_sales/activities/new_follow_up.html.erb
240
246
  - app/views/educode_sales/activities/show_schools.html.erb
241
247
  - app/views/educode_sales/activities/show_schools.json.jbuilder
242
248
  - app/views/educode_sales/activities/show_teachers.html.erb
@@ -267,6 +273,7 @@ files:
267
273
  - app/views/educode_sales/businesses/index.json.jbuilder
268
274
  - app/views/educode_sales/businesses/new.html.erb
269
275
  - app/views/educode_sales/businesses/new_follow_record.html.erb
276
+ - app/views/educode_sales/businesses/no_permission.html.erb
270
277
  - app/views/educode_sales/businesses/search.json.jbuilder
271
278
  - app/views/educode_sales/businesses/show_follow.html.erb
272
279
  - app/views/educode_sales/businesses/show_follow.json.jbuilder
@@ -569,6 +576,8 @@ files:
569
576
  - db/migrate/20230319105048_create_educode_sales_activity_staffs.rb
570
577
  - db/migrate/20230322034022_add_to_school_name_to_ideas.rb
571
578
  - db/migrate/20230327021033_add_attachment_ids_to_ideas.rb
579
+ - db/migrate/20230329135141_create_educode_sales_business_watches.rb
580
+ - db/migrate/20230330141213_create_educode_sales_activity_follow_ups.rb
572
581
  - lib/educode_sales.rb
573
582
  - lib/educode_sales/engine.rb
574
583
  - lib/educode_sales/version.rb
@@ -577,7 +586,7 @@ homepage: https://www.educoder.net
577
586
  licenses:
578
587
  - MIT
579
588
  metadata: {}
580
- post_install_message:
589
+ post_install_message:
581
590
  rdoc_options: []
582
591
  require_paths:
583
592
  - lib
@@ -593,7 +602,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
593
602
  version: '0'
594
603
  requirements: []
595
604
  rubygems_version: 3.0.9
596
- signing_key:
605
+ signing_key:
597
606
  specification_version: 4
598
607
  summary: Summary of EducodeSales.
599
608
  test_files: []