educode_sales 0.9.73 → 0.9.74
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/contracts_controller.rb +309 -0
- data/app/controllers/educode_sales/follow_ups_controller.rb +1 -1
- data/app/controllers/educode_sales/home_controller.rb +7 -0
- data/app/controllers/educode_sales/ideas_controller.rb +146 -76
- data/app/controllers/educode_sales/roles_controller.rb +2 -1
- data/app/controllers/educode_sales/upload_files_controller.rb +3 -0
- data/app/models/educode_sales/assign_staff.rb +6 -0
- data/app/models/educode_sales/contract_date_list.rb +6 -0
- data/app/models/educode_sales/follow_up.rb +6 -0
- data/app/models/educode_sales/idea.rb +16 -5
- data/app/models/educode_sales/idea_follow.rb +11 -0
- data/app/models/educode_sales/permission.rb +2 -1
- data/app/models/educode_sales/role_area.rb +2 -1
- data/app/views/educode_sales/businesses/_contract_list.html.erb +160 -0
- data/app/views/educode_sales/contracts/_follows.html.erb +323 -0
- data/app/views/educode_sales/contracts/_list.html.erb +596 -0
- data/app/views/educode_sales/contracts/follow_ups.json.jbuilder +23 -0
- data/app/views/educode_sales/contracts/index.html.erb +50 -0
- data/app/views/educode_sales/contracts/index.json.jbuilder +74 -0
- data/app/views/educode_sales/contracts/list.js.erb +1 -0
- data/app/views/educode_sales/contracts/new_follow_up.html.erb +671 -0
- data/app/views/educode_sales/home/staff_business.json.jbuilder +9 -0
- data/app/views/educode_sales/idea_recycles/detail.html.erb +4 -4
- data/app/views/educode_sales/idea_recycles/index.html.erb +5 -5
- data/app/views/educode_sales/ideas/_follows.html.erb +258 -0
- data/app/views/educode_sales/ideas/_index.html.erb +544 -0
- data/app/views/educode_sales/ideas/detail.html.erb +7 -7
- data/app/views/educode_sales/ideas/edit.html.erb +77 -15
- data/app/views/educode_sales/ideas/files.html.erb +157 -0
- data/app/views/educode_sales/ideas/files.json.jbuilder +13 -0
- data/app/views/educode_sales/ideas/follow_ups.json.jbuilder +14 -0
- data/app/views/educode_sales/ideas/index.html.erb +12 -353
- data/app/views/educode_sales/ideas/index.json.jbuilder +7 -1
- data/app/views/educode_sales/ideas/new.html.erb +81 -25
- data/app/views/educode_sales/ideas/new_follow_up.html.erb +105 -0
- data/app/views/educode_sales/ideas/search_new.html.erb +1 -1
- data/app/views/educode_sales/ideas/show_schools.html.erb +84 -0
- data/app/views/educode_sales/ideas/show_schools.json.jbuilder +12 -0
- data/app/views/educode_sales/ideas/show_teachers.html.erb +372 -0
- data/app/views/educode_sales/ideas/upload_file.html.erb +43 -0
- data/app/views/educode_sales/projects/detail.html.erb +1 -1
- data/app/views/educode_sales/projects/edit.html.erb +1 -1
- data/app/views/educode_sales/roles/edit.html.erb +16 -0
- data/app/views/layouts/educode_sales/application.html.erb +5 -5
- data/config/routes.rb +19 -0
- data/db/migrate/20230227061043_create_educode_sales_ideas.rb +2 -2
- data/db/migrate/20230430023424_add_plan_signed_date_to_follow_ups.rb +21 -0
- data/db/migrate/20230430040332_create_educode_sales_contract_date_lists.rb +15 -0
- data/db/migrate/20230430104708_create_idea_follows.rb +25 -0
- data/db/migrate/20230430121335_add_permissions_for_ideas.rb +16 -0
- data/db/migrate/20230430134710_create_educode_sales_assign_staffs.rb +11 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +30 -2
@@ -28,7 +28,7 @@
|
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
<div class="layui-inline">
|
31
|
-
<label class="layui-form-label" style="width: 100px"
|
31
|
+
<label class="layui-form-label" style="width: 100px">单位联系人:</label>
|
32
32
|
<div class="layui-input-inline">
|
33
33
|
<%= idea.manager_name %>
|
34
34
|
</div>
|
@@ -47,14 +47,14 @@
|
|
47
47
|
</div>
|
48
48
|
</div>
|
49
49
|
<div class="layui-inline">
|
50
|
-
<label class="layui-form-label" style="width: 100px"
|
50
|
+
<label class="layui-form-label" style="width: 100px">方案经理:</label>
|
51
51
|
<div class="layui-input-inline">
|
52
52
|
<%= idea.staff&.user&.real_name %>
|
53
53
|
</div>
|
54
54
|
</div>
|
55
55
|
<br>
|
56
56
|
<div class="layui-inline">
|
57
|
-
<label class="layui-form-label" style="width: 100px"
|
57
|
+
<label class="layui-form-label" style="width: 100px">销售经理:</label>
|
58
58
|
<div class="layui-input-inline">
|
59
59
|
<%= idea.sale_staff&.user&.real_name %>
|
60
60
|
</div>
|
@@ -126,7 +126,7 @@
|
|
126
126
|
</div>
|
127
127
|
<br>
|
128
128
|
<div class="layui-inline">
|
129
|
-
<label class="layui-form-label" style="width: 100px"
|
129
|
+
<label class="layui-form-label" style="width: 100px">需求说明:</label>
|
130
130
|
<div class="layui-input-inline" style="width: 1000px">
|
131
131
|
<%= idea.content.to_s %>
|
132
132
|
</div>
|
@@ -8,13 +8,13 @@
|
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="layui-inline">
|
11
|
-
<label class="layui-form-label"
|
11
|
+
<label class="layui-form-label">申请人</label>
|
12
12
|
<div class="layui-input-inline">
|
13
13
|
<%= select_tag "creator_id", options_for_select(@creator_arr, ""), { include_blank: true } %>
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
<div class="layui-inline">
|
17
|
-
<label class="layui-form-label"
|
17
|
+
<label class="layui-form-label">方案经理</label>
|
18
18
|
<div class="layui-input-inline">
|
19
19
|
<%= select_tag "staff_id", options_for_select(@staff_arr, ""), { include_blank: true } %>
|
20
20
|
</div>
|
@@ -136,7 +136,7 @@
|
|
136
136
|
},
|
137
137
|
{
|
138
138
|
field: 'staff',
|
139
|
-
title: '
|
139
|
+
title: '方案经理',
|
140
140
|
width: 100
|
141
141
|
},
|
142
142
|
{
|
@@ -173,7 +173,7 @@
|
|
173
173
|
{
|
174
174
|
field: 'creator',
|
175
175
|
width: 100,
|
176
|
-
title: '
|
176
|
+
title: '申请人'
|
177
177
|
},
|
178
178
|
{
|
179
179
|
field: 'end_time',
|
@@ -193,7 +193,7 @@
|
|
193
193
|
{
|
194
194
|
field: 'content',
|
195
195
|
width: 200,
|
196
|
-
title: '
|
196
|
+
title: '需求说明'
|
197
197
|
},
|
198
198
|
{
|
199
199
|
field: 'deleter',
|
@@ -0,0 +1,258 @@
|
|
1
|
+
<div style="margin: 10px 10px 10px 10px">
|
2
|
+
<form class="layui-form layui-form-pane" lay-filter="search_follows_aa">
|
3
|
+
<div class="layui-form-item">
|
4
|
+
<div class="layui-inline">
|
5
|
+
<label class="layui-form-label">所属商机</label>
|
6
|
+
<div class="layui-input-inline">
|
7
|
+
<input type="text" name="search_name" class="layui-input">
|
8
|
+
</div>
|
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="search_school" class="layui-input">
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<div class="layui-inline">
|
17
|
+
<label class="layui-form-label">销售经理</label>
|
18
|
+
<div class="layui-input-inline">
|
19
|
+
<%= select_tag "search_sale_staff_id", options_for_select(@staff_arr, ""), { include_blank: true } %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<div class="layui-inline">
|
23
|
+
<label class="layui-form-label">方案经理</label>
|
24
|
+
<div class="layui-input-inline">
|
25
|
+
<%= select_tag "search_idea_staff", options_for_select(@staff_arr, ""), { include_blank: true } %>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<div class="layui-inline">
|
29
|
+
<label class="layui-form-label">跟进时间</label>
|
30
|
+
<div class="layui-input-inline">
|
31
|
+
<input type="text" class="layui-input" id="search_created_at" name="search_created_at" placeholder=" - " autocomplete="off">
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div class="layui-inline">
|
35
|
+
<label class="layui-form-label">最新进展</label>
|
36
|
+
<div class="layui-input-inline">
|
37
|
+
<input type="text" name="search_content" class="layui-input">
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="layui-inline">
|
42
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_follows_search_a">重置
|
43
|
+
</button>
|
44
|
+
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_follows_a">搜 索
|
45
|
+
</button>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</form>
|
49
|
+
</div>
|
50
|
+
<div class="">
|
51
|
+
<table class="layui-hide" id="activity_followp_table" style="min-height: 300px;" lay-filter="activity_followp_table"></table>
|
52
|
+
</div>
|
53
|
+
<script type="text/html" id="currentTableBar_follows">
|
54
|
+
<% if can? :advise, EducodeSales::Idea %>
|
55
|
+
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="advise">团队建议</a>
|
56
|
+
<% end %>
|
57
|
+
</script>
|
58
|
+
|
59
|
+
<script>
|
60
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
|
61
|
+
var $ = layui.jquery,
|
62
|
+
form = layui.form,
|
63
|
+
request = layui.request,
|
64
|
+
dropdown = layui.dropdown,
|
65
|
+
miniPage = layui.miniPage,
|
66
|
+
laydate = layui.laydate;
|
67
|
+
|
68
|
+
var table = layui.table;
|
69
|
+
table.render({
|
70
|
+
elem: '#activity_followp_table',
|
71
|
+
url: '/missions/ideas/follow_ups',
|
72
|
+
defaultToolbar: ['filter'],
|
73
|
+
initSort: {
|
74
|
+
field: 'created_at', type: 'desc'
|
75
|
+
},
|
76
|
+
cols: [
|
77
|
+
[
|
78
|
+
{
|
79
|
+
field: 'id',
|
80
|
+
width: 60,
|
81
|
+
title: '序号', type: 'numbers',
|
82
|
+
},
|
83
|
+
{
|
84
|
+
field: 'content',
|
85
|
+
title: '最新进展',
|
86
|
+
width: 300
|
87
|
+
},
|
88
|
+
{
|
89
|
+
width: 120,
|
90
|
+
title: '所属商机',
|
91
|
+
field: 'name'
|
92
|
+
},
|
93
|
+
{
|
94
|
+
field: 'school_name',
|
95
|
+
width: 150,
|
96
|
+
title: '单位',
|
97
|
+
},
|
98
|
+
{
|
99
|
+
field: 'money',
|
100
|
+
width: 150,
|
101
|
+
title: '预算',
|
102
|
+
},
|
103
|
+
{
|
104
|
+
field: 'status',
|
105
|
+
title: '状态',
|
106
|
+
width: 150,
|
107
|
+
},
|
108
|
+
{
|
109
|
+
field: 'advise',
|
110
|
+
width: 160,
|
111
|
+
title: '团队建议',
|
112
|
+
},
|
113
|
+
{
|
114
|
+
field: 'sale_staff',
|
115
|
+
width: 120,
|
116
|
+
title: '销售经理',
|
117
|
+
},
|
118
|
+
{
|
119
|
+
field: 'idea_staff',
|
120
|
+
width: 180,
|
121
|
+
title: '方案经理',
|
122
|
+
sort: true,
|
123
|
+
},
|
124
|
+
{
|
125
|
+
field: 'staff',
|
126
|
+
width: 300,
|
127
|
+
title: '跟进人'
|
128
|
+
},
|
129
|
+
{
|
130
|
+
field: 'created_at',
|
131
|
+
width: 300,
|
132
|
+
title: '跟进时间'
|
133
|
+
},
|
134
|
+
{
|
135
|
+
title: '操作',
|
136
|
+
width: 200,
|
137
|
+
toolbar: '#currentTableBar_follows',
|
138
|
+
align: "center",
|
139
|
+
fixed: 'right'
|
140
|
+
}
|
141
|
+
]
|
142
|
+
],
|
143
|
+
limit: 20,
|
144
|
+
page: true,
|
145
|
+
limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90]
|
146
|
+
});
|
147
|
+
|
148
|
+
var sort = {}, search = {};
|
149
|
+
table.on('sort(activity_followp_table)', function (obj) {
|
150
|
+
sort.field = obj.field;
|
151
|
+
sort.order = obj.type;
|
152
|
+
table.reload('activity_followp_table', {
|
153
|
+
initSort: obj,
|
154
|
+
where: {
|
155
|
+
sort: sort,
|
156
|
+
q: search
|
157
|
+
}
|
158
|
+
});
|
159
|
+
})
|
160
|
+
|
161
|
+
laydate.render({
|
162
|
+
elem: '#search_created_at',
|
163
|
+
range: true
|
164
|
+
});
|
165
|
+
|
166
|
+
// 监听搜索操作
|
167
|
+
form.on('submit(search_follows_a)', function (data) {
|
168
|
+
search = data.field
|
169
|
+
table.reload('activity_followp_table', {
|
170
|
+
page: {
|
171
|
+
curr: 1
|
172
|
+
},
|
173
|
+
where: {q: search, sort: sort}
|
174
|
+
}, 'data');
|
175
|
+
|
176
|
+
return false;
|
177
|
+
});
|
178
|
+
|
179
|
+
form.on('submit(reset_follows_search_a)', function (data) {
|
180
|
+
var field = data.field;
|
181
|
+
form.val('search_follows_aa', {
|
182
|
+
search_name: "",
|
183
|
+
search_created_at: "",
|
184
|
+
search_content: "",
|
185
|
+
search_status: "",
|
186
|
+
search_school_name: "",
|
187
|
+
search_money: "",
|
188
|
+
search_advise: "",
|
189
|
+
search_sale_staff: "",
|
190
|
+
search_idea_staff: "",
|
191
|
+
})
|
192
|
+
return false;
|
193
|
+
});
|
194
|
+
|
195
|
+
|
196
|
+
table.on('tool(activity_followp_table)', function (obj) {
|
197
|
+
var data = obj.data;
|
198
|
+
id = data.teacher_id;
|
199
|
+
if (obj.event === 'detail') { // 监听添加操作
|
200
|
+
content = miniPage.getHrefContent('/missions/teachers/show_follow?id=' + data.teacher_id);
|
201
|
+
openWH = miniPage.getOpenWidthHeight();
|
202
|
+
index = layer.open({
|
203
|
+
title: '跟进记录',
|
204
|
+
type: 1,
|
205
|
+
shade: 0.2,
|
206
|
+
maxmin: true,
|
207
|
+
shadeClose: true,
|
208
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
209
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
210
|
+
content: content
|
211
|
+
});
|
212
|
+
$(window).on("resize", function () {
|
213
|
+
layer.full(index);
|
214
|
+
});
|
215
|
+
} else if (obj.event == 'advise') {
|
216
|
+
layer.open({
|
217
|
+
title: '添加团队建议',
|
218
|
+
closeBtn: 0,
|
219
|
+
type: 1,
|
220
|
+
area: '400px;',
|
221
|
+
id: 'LAY_layuipro',
|
222
|
+
content: '<div class="layui-form" lay-filter="edit_project" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + data.advise + '</textarea></div>',
|
223
|
+
btn: ['保存', '取消'],
|
224
|
+
btn1: function (index, l) {
|
225
|
+
if (l.find("textarea").val().trim() == '') {
|
226
|
+
layer.msg('内容不能为空')
|
227
|
+
return false;
|
228
|
+
} else {
|
229
|
+
request.authPost("/missions/ideas/add_advise", {
|
230
|
+
content: l.find("textarea").val().trim(),
|
231
|
+
id: data.id
|
232
|
+
}, function (res) {
|
233
|
+
if (res.success == false) {
|
234
|
+
layer.alert(res.msg);
|
235
|
+
} else {
|
236
|
+
layer.close(index);
|
237
|
+
table.reload('activity_followp_table');
|
238
|
+
}
|
239
|
+
})
|
240
|
+
}
|
241
|
+
|
242
|
+
return false
|
243
|
+
},
|
244
|
+
btn2: function (index, l) {
|
245
|
+
layer.close(index)
|
246
|
+
}
|
247
|
+
});
|
248
|
+
}
|
249
|
+
});
|
250
|
+
|
251
|
+
});
|
252
|
+
</script>
|
253
|
+
<style>
|
254
|
+
.layui-table-tool-temp {
|
255
|
+
padding-right: 30px;
|
256
|
+
!important;
|
257
|
+
}
|
258
|
+
</style>
|