educode_sales 1.10.21 → 1.10.22
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/ideas_controller.rb +36 -10
- data/app/views/educode_sales/ideas/_index.html.erb +37 -1
- data/app/views/educode_sales/ideas/assign.html.erb +45 -0
- data/app/views/educode_sales/ideas/assign_sale_staff.html.erb +45 -0
- data/app/views/educode_sales/ideas/edit.html.erb +9 -9
- data/app/views/educode_sales/ideas/new.html.erb +9 -9
- data/config/routes.rb +4 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2b8c0d76ccb06751726aeef62b4b04f234424db8b848d62f086b530b1213d25
|
4
|
+
data.tar.gz: 88f36d9731d556cdfedd495e0ad198e90baeecf454352fc8faf17d9dd373c3a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99412e792e86479290e2d09a62aced8ae6bc6cd32d448450d9e0b4898d5df54358e683a70b94038eb37474ba663b6d1cbe9e4b24a8440dcef2e6ca17a3d19e06
|
7
|
+
data.tar.gz: cb3ba8ffa9e9cf91ade0cf3a74fe5e5fc13767d05a1dfa12180fb699abbb70cbc380469b55b11b0900a7c0930afd2ba395148f532c23f3fcba70f7794fca7913
|
@@ -3,7 +3,35 @@ require_dependency "educode_sales/application_controller"
|
|
3
3
|
module EducodeSales
|
4
4
|
class IdeasController < ApplicationController
|
5
5
|
|
6
|
-
before_action :find_idea, only: [:edit, :destroy, :detail, :history, :update]
|
6
|
+
before_action :find_idea, only: [:edit, :destroy, :detail, :history, :update, :assign, :assign_staff, :assign_sale_staff, :update_sale_staff]
|
7
|
+
|
8
|
+
def assign
|
9
|
+
selected_staff_ids = @idea.assist_staff_ids.map(&:to_i)
|
10
|
+
staffs = Staff.where.not(role_id: 11).includes(:user)
|
11
|
+
gon.ideas_staffs = staffs.map { |d| { name: d.user.real_name, value: d.id, selected: selected_staff_ids.include?(d.id) } }
|
12
|
+
render layout: false
|
13
|
+
end
|
14
|
+
|
15
|
+
# 指派协作人 assist_staff_ids协作人
|
16
|
+
def assign_staff
|
17
|
+
@idea.assist_staff_ids = params[:to_id].to_s.split(",")
|
18
|
+
@idea.save
|
19
|
+
render_success
|
20
|
+
end
|
21
|
+
|
22
|
+
def assign_sale_staff
|
23
|
+
selected_staff_ids = Array(@idea.staff_id)
|
24
|
+
staffs = Staff.where.not(role_id: 11).includes(:user)
|
25
|
+
gon.sales_staffs = staffs.map { |d| { name: d.user.real_name, value: d.id, selected: selected_staff_ids.include?(d.id) } }
|
26
|
+
render layout: false
|
27
|
+
end
|
28
|
+
|
29
|
+
# 指派方案经理 staff_id
|
30
|
+
def update_sale_staff
|
31
|
+
@idea.staff_id = params[:to_id]
|
32
|
+
@idea.save
|
33
|
+
render_success
|
34
|
+
end
|
7
35
|
|
8
36
|
def index
|
9
37
|
respond_to do |format|
|
@@ -24,16 +52,14 @@ module EducodeSales
|
|
24
52
|
level = @current_admin.role.role_areas.find_by(clazz: '方案管理').try(:level)
|
25
53
|
case level
|
26
54
|
when '自己'
|
27
|
-
|
28
|
-
# @businesses = Business.where("educode_sales_businesses.staff_id = ? OR educode_sales_businesses.id in (?)", @current_admin.id, business_ids)
|
29
|
-
idea_ids = Idea.all.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) }.map { |d| d.id }
|
55
|
+
idea_ids = Idea.all.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id) || d.staff_id == @current_admin.id }.map { |d| d.id }
|
30
56
|
@ideas = Idea.where("educode_sales_ideas.creator_id = ? OR educode_sales_ideas.id in (?)", @current_admin.id, idea_ids)
|
31
57
|
when '区域'
|
32
58
|
# 查看区域商机,需要排除掉其它人员手上的监管学校
|
33
59
|
other_staff_school_id = EducodeSales::StaffSchool.where.not(staff_id: @current_admin.id).where("school_id IN (SELECT school_id FROM educode_sales_staff_schools WHERE staff_id = #{@current_admin.id}) IS NOT TRUE").distinct.pluck :school_id
|
34
60
|
|
35
61
|
school_ids = School.where(province: @current_admin.areas.pluck(:name)).pluck(:id) + StaffSchool.where(staff_id: @current_admin.id).pluck(:school_id) - other_staff_school_id
|
36
|
-
idea_ids = Idea.all.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) }.map { |d| d.id }
|
62
|
+
idea_ids = Idea.all.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id) || d.staff_id == @current_admin.id }.map { |d| d.id }
|
37
63
|
@ideas = @ideas.joins(department: :school).where("schools.id in (?) OR educode_sales_ideas.creator_id = ? OR educode_sales_ideas.id in (?)", school_ids, @current_admin.id, idea_ids)
|
38
64
|
else
|
39
65
|
@ideas = @ideas
|
@@ -116,8 +142,8 @@ module EducodeSales
|
|
116
142
|
idea.department_id = idea.business&.department_id
|
117
143
|
end
|
118
144
|
idea.attachment_ids = attachment_ids
|
119
|
-
idea.assist_staff_ids = assist_staff_ids
|
120
|
-
idea.other_staff_ids = other_staff_ids
|
145
|
+
# idea.assist_staff_ids = assist_staff_ids
|
146
|
+
# idea.other_staff_ids = other_staff_ids
|
121
147
|
idea.save
|
122
148
|
render_success
|
123
149
|
end
|
@@ -134,11 +160,11 @@ module EducodeSales
|
|
134
160
|
@idea.assign_attributes(idea_params)
|
135
161
|
# @idea.school_id = Department.find_by_id(@idea.department_id)&.school_id
|
136
162
|
assist_staff_ids = Array(params[:assist_staff_ids].to_s.split(","))
|
137
|
-
@idea.assist_staff_ids = assist_staff_ids
|
163
|
+
# @idea.assist_staff_ids = assist_staff_ids
|
138
164
|
attachment_ids = Array(params[:attachment_ids].to_s.split(","))
|
139
165
|
@idea.attachment_ids = attachment_ids
|
140
166
|
other_staff_ids = Array(params[:other_staff_ids].to_s.split(","))
|
141
|
-
@idea.other_staff_ids = other_staff_ids
|
167
|
+
# @idea.other_staff_ids = other_staff_ids
|
142
168
|
if @idea.business_id.present?
|
143
169
|
@idea.school_id = @idea.business&.department&.school_id
|
144
170
|
@idea.department_id = @idea.business&.department_id
|
@@ -267,7 +293,7 @@ module EducodeSales
|
|
267
293
|
params.permit(:name, :level, :staff_id,
|
268
294
|
:status, :types, :model, :hardware, :project,
|
269
295
|
:money, :end_time, :content, :department_id, :school_id,
|
270
|
-
:manager_name, :manager_phone, :school_name, :department_name, :
|
296
|
+
:manager_name, :manager_phone, :school_name, :department_name, :attachment_id, :idea_type, :business_id)
|
271
297
|
end
|
272
298
|
|
273
299
|
def find_idea
|
@@ -102,6 +102,8 @@
|
|
102
102
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_recycle_s">恢复</a>
|
103
103
|
<% end %>
|
104
104
|
{{# }else{}}
|
105
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign">指派协作人</a>
|
106
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign_sale_staff">指派方案经理</a>
|
105
107
|
<% if can? :add_follow, EducodeSales::Idea %>
|
106
108
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-add_follow" lay-event="add_follows">添加跟进</a>
|
107
109
|
<% end %>
|
@@ -256,7 +258,7 @@
|
|
256
258
|
},
|
257
259
|
{
|
258
260
|
title: '操作',
|
259
|
-
minWidth:
|
261
|
+
minWidth: 700,
|
260
262
|
toolbar: '#currentTableBar',
|
261
263
|
align: "center",
|
262
264
|
fixed: 'right'
|
@@ -453,6 +455,40 @@
|
|
453
455
|
$(window).on("resize", function () {
|
454
456
|
layer.full(followup_index);
|
455
457
|
});
|
458
|
+
} else if (obj.event === 'assign') { //协作人
|
459
|
+
var content = miniPage.getHrefContent('/missions/ideas/' + id + '/assign');
|
460
|
+
var openWH = miniPage.getOpenWidthHeight();
|
461
|
+
var name = data.name;
|
462
|
+
sindex = layer.open({
|
463
|
+
title: '指派协作人',
|
464
|
+
type: 1,
|
465
|
+
shade: 0.2,
|
466
|
+
maxmin: true,
|
467
|
+
shadeClose: true,
|
468
|
+
area: ['600px', '300px'],
|
469
|
+
content: content
|
470
|
+
});
|
471
|
+
$(window).on("resize", function () {
|
472
|
+
layer.full(sindex);
|
473
|
+
});
|
474
|
+
return false;
|
475
|
+
} else if (obj.event === 'assign_sale_staff') { //指派方案经理
|
476
|
+
var content = miniPage.getHrefContent('/missions/ideas/' + id + '/assign_sale_staff');
|
477
|
+
var openWH = miniPage.getOpenWidthHeight();
|
478
|
+
var name = data.name;
|
479
|
+
sindex = layer.open({
|
480
|
+
title: "指派方案经理",
|
481
|
+
type: 1,
|
482
|
+
shade: 0.2,
|
483
|
+
maxmin: true,
|
484
|
+
shadeClose: true,
|
485
|
+
area: ['600px', '300px'],
|
486
|
+
content: content
|
487
|
+
});
|
488
|
+
$(window).on("resize", function () {
|
489
|
+
layer.full(sindex);
|
490
|
+
});
|
491
|
+
return false;
|
456
492
|
} else if (obj.event === 'idea_recycle') {
|
457
493
|
layer.confirm('确定删除' + data.name, function (index) {
|
458
494
|
request.delete('missions/ideas/' + id, {}, function (res) {
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
2
|
+
<div class="layui-form layuimini-form" style="padding:30px">
|
3
|
+
<div class="layui-form-item">
|
4
|
+
<label class="layui-form-label required">选择协作人:</label>
|
5
|
+
<div class="layui-input-block" style="width: 300px">
|
6
|
+
<div id="sales_staff_id"></div>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<hr>
|
10
|
+
<div class="layui-form-item">
|
11
|
+
<div class="layui-input-block">
|
12
|
+
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<script>
|
18
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput'], function () {
|
19
|
+
var form = layui.form,
|
20
|
+
layer = layui.layer,
|
21
|
+
table = layui.table,
|
22
|
+
laytpl = layui.laytpl,
|
23
|
+
request = layui.request,
|
24
|
+
$ = layui.$;
|
25
|
+
|
26
|
+
form.render();
|
27
|
+
staff_list_select = xmSelect.render({
|
28
|
+
el: '#sales_staff_id',
|
29
|
+
data: gon.ideas_staffs,
|
30
|
+
filterable: true,
|
31
|
+
radio: false,
|
32
|
+
})
|
33
|
+
var parentIndex = layer.index;
|
34
|
+
form.on('submit(saveBtn)', function (data) {
|
35
|
+
layer.confirm('确定指派协作人?', function (index) {
|
36
|
+
request.post('missions/ideas/' + parent.id + "/assign_staff", {to_id: staff_list_select.getValue('valueStr')}, function (res) {
|
37
|
+
layer.close(index);
|
38
|
+
layer.close(parentIndex)
|
39
|
+
parent.table.reload('ideas_table')
|
40
|
+
})
|
41
|
+
});
|
42
|
+
return false;
|
43
|
+
});
|
44
|
+
});
|
45
|
+
</script>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
2
|
+
<div class="layui-form layuimini-form" style="padding:30px">
|
3
|
+
<div class="layui-form-item">
|
4
|
+
<label class="layui-form-label required">选择方案经理:</label>
|
5
|
+
<div class="layui-input-block" style="width: 300px">
|
6
|
+
<div id="sales_id"></div>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<hr>
|
10
|
+
<div class="layui-form-item">
|
11
|
+
<div class="layui-input-block">
|
12
|
+
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<script>
|
18
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput'], function () {
|
19
|
+
var form = layui.form,
|
20
|
+
layer = layui.layer,
|
21
|
+
table = layui.table,
|
22
|
+
laytpl = layui.laytpl,
|
23
|
+
request = layui.request,
|
24
|
+
$ = layui.$;
|
25
|
+
|
26
|
+
form.render();
|
27
|
+
staff_list_select = xmSelect.render({
|
28
|
+
el: '#sales_id',
|
29
|
+
data: gon.sales_staffs,
|
30
|
+
filterable: true,
|
31
|
+
radio: true,
|
32
|
+
})
|
33
|
+
var parentIndex = layer.index;
|
34
|
+
form.on('submit(saveBtn)', function (data) {
|
35
|
+
layer.confirm('确定指派方案经理?', function (index) {
|
36
|
+
request.post('missions/ideas/' + parent.id + "/update_sale_staff", {to_id: staff_list_select.getValue('valueStr')}, function (res) {
|
37
|
+
layer.close(index);
|
38
|
+
layer.close(parentIndex)
|
39
|
+
parent.table.reload('ideas_table')
|
40
|
+
})
|
41
|
+
});
|
42
|
+
return false;
|
43
|
+
});
|
44
|
+
});
|
45
|
+
</script>
|
@@ -41,20 +41,20 @@
|
|
41
41
|
</div>
|
42
42
|
</div>
|
43
43
|
<div class="layui-col-md6">
|
44
|
-
<labeL class="layui-form-label"
|
44
|
+
<labeL class="layui-form-label required">项目名称:</labeL>
|
45
45
|
<div class="layui-input-block">
|
46
|
-
<div id="
|
46
|
+
<div id="business_id" style="width: 600px;"></div>
|
47
47
|
</div>
|
48
48
|
</div>
|
49
|
-
|
50
|
-
|
51
|
-
<div class="layui-col-md6">
|
52
|
-
<labeL class="layui-form-label required">项目名称:</labeL>
|
49
|
+
<div class="layui-col-md6" style="display: none">
|
50
|
+
<labeL class="layui-form-label">协作人:</labeL>
|
53
51
|
<div class="layui-input-block">
|
54
|
-
<div id="
|
52
|
+
<div id="assist_staff_ids"></div>
|
55
53
|
</div>
|
56
54
|
</div>
|
57
|
-
|
55
|
+
</div>
|
56
|
+
<div class="layui-row" style="padding-top: 15px;display: none">
|
57
|
+
<div class="layui-col-md6" style="display: none">
|
58
58
|
<labeL class="layui-form-label">方案经理:</labeL>
|
59
59
|
<div class="layui-input-block">
|
60
60
|
<div id="new_staff_id"></div>
|
@@ -96,7 +96,7 @@
|
|
96
96
|
<%= select_tag "idea_type", options_for_select(EducodeSales::Idea.idea_types.keys, @idea&.idea_type), { 'lay-filter': 'idea_type', include_blank: false } %>
|
97
97
|
</div>
|
98
98
|
</div>
|
99
|
-
<div class="layui-col-md6">
|
99
|
+
<div class="layui-col-md6" style="display: none">
|
100
100
|
<labeL class="layui-form-label">指派人:</labeL>
|
101
101
|
<div class="layui-input-block">
|
102
102
|
<div id="other_staff_ids"></div>
|
@@ -41,20 +41,20 @@
|
|
41
41
|
</div>
|
42
42
|
</div>
|
43
43
|
<div class="layui-col-md6">
|
44
|
-
<labeL class="layui-form-label"
|
44
|
+
<labeL class="layui-form-label required">项目名称:</labeL>
|
45
45
|
<div class="layui-input-block">
|
46
|
-
<div id="
|
46
|
+
<div id="business_id" style="width: 600px;"></div>
|
47
47
|
</div>
|
48
48
|
</div>
|
49
|
-
|
50
|
-
|
51
|
-
<div class="layui-col-md6">
|
52
|
-
<labeL class="layui-form-label required">项目名称:</labeL>
|
49
|
+
<div class="layui-col-md6" style="display: none">
|
50
|
+
<labeL class="layui-form-label">协作人:</labeL>
|
53
51
|
<div class="layui-input-block">
|
54
|
-
<div id="
|
52
|
+
<div id="assist_staff_ids"></div>
|
55
53
|
</div>
|
56
54
|
</div>
|
57
|
-
|
55
|
+
</div>
|
56
|
+
<div class="layui-row" style="padding-top: 15px;display: none">
|
57
|
+
<div class="layui-col-md6" style="display: none">
|
58
58
|
<labeL class="layui-form-label">方案经理:</labeL>
|
59
59
|
<div class="layui-input-block">
|
60
60
|
<div id="new_staff_id"></div>
|
@@ -96,7 +96,7 @@
|
|
96
96
|
<%= select_tag "idea_type", options_for_select(EducodeSales::Idea.idea_types.keys, @idea&.idea_type), { 'lay-filter': 'idea_type', include_blank: false } %>
|
97
97
|
</div>
|
98
98
|
</div>
|
99
|
-
<div class="layui-col-md6">
|
99
|
+
<div class="layui-col-md6" style="display: none">
|
100
100
|
<labeL class="layui-form-label">指派人:</labeL>
|
101
101
|
<div class="layui-input-block">
|
102
102
|
<div id="other_staff_ids"></div>
|
data/config/routes.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: educode_sales
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.10.
|
4
|
+
version: 1.10.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
@@ -418,6 +418,8 @@ files:
|
|
418
418
|
- app/views/educode_sales/ideas/add_courses.html.erb
|
419
419
|
- app/views/educode_sales/ideas/add_event.html.erb
|
420
420
|
- app/views/educode_sales/ideas/add_keys.html.erb
|
421
|
+
- app/views/educode_sales/ideas/assign.html.erb
|
422
|
+
- app/views/educode_sales/ideas/assign_sale_staff.html.erb
|
421
423
|
- app/views/educode_sales/ideas/course_list.json.jbuilder
|
422
424
|
- app/views/educode_sales/ideas/course_subject.json.jbuilder
|
423
425
|
- app/views/educode_sales/ideas/daily_paper.html.erb
|