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.
- checksums.yaml +4 -4
- data/app/controllers/educode_sales/activities_controller.rb +72 -4
- data/app/controllers/educode_sales/businesses_controller.rb +82 -1
- data/app/models/educode_sales/activity.rb +17 -4
- data/app/models/educode_sales/activity_follow_up.rb +13 -0
- data/app/models/educode_sales/activity_staff.rb +1 -1
- data/app/models/educode_sales/business.rb +3 -0
- data/app/models/educode_sales/business_level.rb +11 -0
- data/app/models/educode_sales/business_watch.rb +6 -0
- data/app/views/educode_sales/activities/_follows.html.erb +208 -0
- data/app/views/educode_sales/activities/_index.html.erb +418 -0
- data/app/views/educode_sales/activities/edit.html.erb +99 -0
- data/app/views/educode_sales/activities/follow_ups.json.jbuilder +19 -0
- data/app/views/educode_sales/activities/index.html.erb +13 -349
- data/app/views/educode_sales/activities/index.json.jbuilder +9 -1
- data/app/views/educode_sales/activities/new.html.erb +80 -0
- data/app/views/educode_sales/activities/new_follow_up.html.erb +56 -0
- data/app/views/educode_sales/businesses/edit.html.erb +48 -6
- data/app/views/educode_sales/businesses/index.html.erb +10 -0
- data/app/views/educode_sales/businesses/no_permission.html.erb +2 -0
- data/app/views/educode_sales/idea_recycles/index.html.erb +9 -1
- data/app/views/educode_sales/ideas/edit.html.erb +22 -22
- data/app/views/educode_sales/ideas/index.html.erb +10 -1
- data/app/views/educode_sales/ideas/new.html.erb +12 -12
- data/config/routes.rb +3 -0
- data/db/migrate/20230329135141_create_educode_sales_business_watches.rb +17 -0
- data/db/migrate/20230330141213_create_educode_sales_activity_follow_ups.rb +25 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +15 -6
- 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
|
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
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
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
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|
94
|
+
<labeL class="layui-form-label">硬件规模(万):</labeL>
|
95
95
|
<div class="layui-input-block">
|
96
|
-
<input type="number" name="hardware" autocomplete="off"
|
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="
|
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="
|
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
|
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
|
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
|
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
|
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
|
94
|
+
<labeL class="layui-form-label">硬件规模(万):</labeL>
|
95
95
|
<div class="layui-input-block">
|
96
|
-
<input type="number" name="hardware" autocomplete="off"
|
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
@@ -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
|
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.
|
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-
|
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: []
|
Binary file
|