educode_sales 0.9.59 → 0.9.61
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 +101 -2
- data/app/controllers/educode_sales/businesses_controller.rb +10 -0
- data/app/controllers/educode_sales/follow_ups_controller.rb +6 -0
- data/app/controllers/educode_sales/home_controller.rb +4 -0
- data/app/controllers/educode_sales/ideas_controller.rb +86 -1
- data/app/controllers/educode_sales/upload_files_controller.rb +1 -1
- data/app/models/educode_sales/activity.rb +8 -0
- data/app/models/educode_sales/activity_staff.rb +9 -0
- data/app/models/educode_sales/idea.rb +23 -10
- data/app/views/educode_sales/activities/edit.html.erb +96 -3
- data/app/views/educode_sales/activities/index.html.erb +86 -1
- data/app/views/educode_sales/activities/index.json.jbuilder +5 -0
- data/app/views/educode_sales/activities/new.html.erb +111 -16
- data/app/views/educode_sales/businesses/_follows.html.erb +34 -1
- data/app/views/educode_sales/businesses/index.html.erb +55 -20
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/time_line.html.erb +30 -0
- data/app/views/educode_sales/home/search_edu_user.json.jbuilder +13 -0
- data/app/views/educode_sales/idea_recycles/detail.html.erb +25 -4
- data/app/views/educode_sales/idea_recycles/index.html.erb +3 -3
- data/app/views/educode_sales/idea_recycles/index.json.jbuilder +1 -1
- data/app/views/educode_sales/ideas/detail.html.erb +25 -4
- data/app/views/educode_sales/ideas/edit.html.erb +134 -27
- data/app/views/educode_sales/ideas/index.html.erb +3 -3
- data/app/views/educode_sales/ideas/index.json.jbuilder +4 -4
- data/app/views/educode_sales/ideas/new.html.erb +118 -15
- data/config/routes.rb +4 -0
- data/db/migrate/20230319050647_add_clazz_to_educode_sales_activities.rb +6 -0
- data/db/migrate/20230319105048_create_educode_sales_activity_staffs.rb +13 -0
- data/db/migrate/20230322034022_add_to_school_name_to_ideas.rb +17 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +11 -7
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -7,6 +7,54 @@
|
|
7
7
|
<% end %>
|
8
8
|
</div>
|
9
9
|
</script>
|
10
|
+
<div style="margin: 10px 10px 10px 10px">
|
11
|
+
<form class="layui-form layui-form-pane" lay-filter="search_ideas">
|
12
|
+
<div class="layui-form-item">
|
13
|
+
<div class="layui-inline ">
|
14
|
+
<label class="layui-form-label">活动名称</label>
|
15
|
+
<div class="layui-input-inline">
|
16
|
+
<input type="text" class="layui-input" name="name" autocomplete="off">
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<div class="layui-inline">
|
20
|
+
<label class="layui-form-label">会议类型</label>
|
21
|
+
<div class="layui-input-inline">
|
22
|
+
<%= select_tag "clazz_id", options_for_select(['全国会议', '区域会议', '单校会议', '国赛', '省赛', '夏令营'], ""), { include_blank: true } %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<div class="layui-inline">
|
26
|
+
<label class="layui-form-label">销售经理</label>
|
27
|
+
<div class="layui-input-inline">
|
28
|
+
<%= select_tag "staff_id", options_for_select(@staffs, ""), { include_blank: true } %>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
<div class="layui-inline">
|
32
|
+
<label class="layui-form-label">生态经理</label>
|
33
|
+
<div class="layui-input-inline">
|
34
|
+
<%= select_tag "manage", options_for_select(@staffs, ""), { include_blank: true } %>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
<div class="layui-inline">
|
38
|
+
<label class="layui-form-label">协助人员</label>
|
39
|
+
<div class="layui-input-inline">
|
40
|
+
<%= select_tag "assists", options_for_select(@staffs, ""), { include_blank: true } %>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
<div class="layui-inline">
|
44
|
+
<label class="layui-form-label">报告专家</label>
|
45
|
+
<div class="layui-input-inline">
|
46
|
+
<input type="text" class="layui-input" name="expert" autocomplete="off">
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
<div class="layui-inline">
|
50
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_activity_search">重置
|
51
|
+
</button>
|
52
|
+
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_activity">搜 索
|
53
|
+
</button>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</form>
|
57
|
+
</div>
|
10
58
|
<div class="min-height-table">
|
11
59
|
<table class="layui-hide" id="activities_table" lay-filter="activities_table"></table>
|
12
60
|
</div>
|
@@ -46,14 +94,40 @@
|
|
46
94
|
{
|
47
95
|
field: 'id',
|
48
96
|
title:'序号',type: 'numbers',
|
49
|
-
|
97
|
+
totalRowText:'合计',
|
50
98
|
width: 60
|
51
99
|
},
|
52
100
|
{
|
53
101
|
field: 'name',
|
54
102
|
title: '活动名称',
|
103
|
+
width: 180,
|
55
104
|
templet: '#teachers'
|
56
105
|
},
|
106
|
+
{
|
107
|
+
field: 'clazz_id',
|
108
|
+
width: 120,
|
109
|
+
title: '会议类型'
|
110
|
+
},
|
111
|
+
{
|
112
|
+
field: 'staff',
|
113
|
+
width: 120,
|
114
|
+
title: '销售经理'
|
115
|
+
},
|
116
|
+
{
|
117
|
+
field: 'staff_manage',
|
118
|
+
width: 180,
|
119
|
+
title: '生态经理'
|
120
|
+
},
|
121
|
+
{
|
122
|
+
field: 'staff_assist',
|
123
|
+
width: 180,
|
124
|
+
title: '协助人员'
|
125
|
+
},
|
126
|
+
{
|
127
|
+
field: 'expert',
|
128
|
+
width: 180,
|
129
|
+
title: '报告专家'
|
130
|
+
},
|
57
131
|
{
|
58
132
|
field: 'start_at',
|
59
133
|
width: 200,
|
@@ -103,6 +177,17 @@
|
|
103
177
|
}
|
104
178
|
});
|
105
179
|
})
|
180
|
+
// 监听搜索操作
|
181
|
+
form.on('submit(search_activity)', function (data) {
|
182
|
+
search = data.field
|
183
|
+
table.reload('activities_table', {
|
184
|
+
page: {
|
185
|
+
curr: 1
|
186
|
+
},
|
187
|
+
where: {q: search, sort: sort}
|
188
|
+
}, 'data');
|
189
|
+
return false;
|
190
|
+
});
|
106
191
|
table.on('toolbar(activities_table)', function (obj) {
|
107
192
|
if (obj.event === 'add') { // 监听添加操作
|
108
193
|
var content = miniPage.getHrefContent('/missions/activities/new');
|
@@ -10,6 +10,11 @@ json.data do
|
|
10
10
|
json.students_count d.students_count || 0
|
11
11
|
json.course_rate d.course_rate
|
12
12
|
json.start_at d.start_at ? d.start_at.to_s(:date) : ''
|
13
|
+
json.clazz_id d.clazz_id
|
14
|
+
json.staff d.staff&.user&.real_name
|
15
|
+
json.staff_manage d.manages.map { |d| d.staff.user.real_name}.uniq.join("、")
|
16
|
+
json.staff_assist d.assists.map { |d| d.staff.user.real_name}.uniq.join("、")
|
17
|
+
json.expert d.experts.pluck(:name).join("、")
|
13
18
|
end
|
14
19
|
end
|
15
20
|
|
@@ -1,12 +1,17 @@
|
|
1
|
-
|
1
|
+
<%= Gon::Base.render_data %>
|
2
2
|
<div class="layuimini-main">
|
3
|
-
<
|
4
|
-
<div class="layui-form-item"
|
3
|
+
<div class="layui-form layuimini-form">
|
4
|
+
<div class="layui-form-item">
|
5
5
|
<div class="layui-inline">
|
6
6
|
<label class="layui-form-label required">活动名称</label>
|
7
7
|
<div class="layui-input-block">
|
8
|
-
<input type="text" name="name" required lay-verify="required" placeholder="请输入"
|
9
|
-
|
8
|
+
<input type="text" name="name" required lay-verify="required" placeholder="请输入" class="layui-input" id="inputFocus">
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
<div class="layui-inline">
|
12
|
+
<label class="layui-form-label required">活动类型</label>
|
13
|
+
<div class="layui-input-block">
|
14
|
+
<%= select_tag "clazz_id", options_for_select(@clazz), { 'lay-filter': 'clazz_id', class: 'required' } %>
|
10
15
|
</div>
|
11
16
|
</div>
|
12
17
|
<div class="layui-inline">
|
@@ -18,22 +23,49 @@
|
|
18
23
|
<div class="layui-inline">
|
19
24
|
<label class="layui-form-label required">活动天数</label>
|
20
25
|
<div class="layui-input-block">
|
21
|
-
<input type="text" name="days" required lay-verify="required"
|
22
|
-
|
26
|
+
<input type="text" name="days" required lay-verify="required" class="layui-input">
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<div class="layui-inline">
|
30
|
+
<label class="layui-form-label">生态经理</label>
|
31
|
+
<div class="layui-input-block">
|
32
|
+
<div id="staff_manage_list" style="width: 163px;"></div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="layui-inline">
|
36
|
+
<label class="layui-form-label">协助人员</label>
|
37
|
+
<div class="layui-input-block">
|
38
|
+
<div id="staff_assist_list" style="width: 193px;"></div>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
<div class="layui-inline">
|
42
|
+
<label class="layui-form-label">报告专家</label>
|
43
|
+
<div class="layui-input-block">
|
44
|
+
<div id="expert_list" style="width: 600px;"></div>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
<div class="layui-form-item">
|
49
|
+
<div class="layui-inline">
|
50
|
+
<label class="layui-form-label">上传附件</label>
|
51
|
+
<div class="layui-input-block">
|
52
|
+
<%= hidden_field_tag 'attachment_id' %>
|
53
|
+
<span id="attachment">
|
54
|
+
</span>
|
55
|
+
<button type="button" class="layui-btn" id="upload_file">上传文件</button>
|
23
56
|
</div>
|
24
57
|
</div>
|
25
58
|
<div class="layui-inline" style="padding-left: 30px">
|
26
|
-
<button
|
27
|
-
</button>
|
59
|
+
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交 </button>
|
28
60
|
</div>
|
29
61
|
</div>
|
30
|
-
</
|
62
|
+
</div>
|
31
63
|
</div>
|
32
64
|
|
33
65
|
<script>
|
34
66
|
document.getElementById("inputFocus").focus();
|
35
67
|
|
36
|
-
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
|
68
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer', 'xmSelect'], function () {
|
37
69
|
var form = layui.form,
|
38
70
|
layer = layui.layer,
|
39
71
|
table = layui.table,
|
@@ -41,6 +73,9 @@
|
|
41
73
|
laytpl = layui.laytpl,
|
42
74
|
request = layui.request,
|
43
75
|
laydate = layui.laydate,
|
76
|
+
xmSelect = layui.xmSelect,
|
77
|
+
upload = layui.upload,
|
78
|
+
selectInput = layui.selectInput
|
44
79
|
$ = layui.$;
|
45
80
|
|
46
81
|
//常规用法
|
@@ -48,7 +83,55 @@
|
|
48
83
|
elem: '#new_time'
|
49
84
|
});
|
50
85
|
|
86
|
+
var staff_manage = xmSelect.render({
|
87
|
+
el: '#staff_manage_list',
|
88
|
+
data: gon.staff_manage,
|
89
|
+
filterable: true,
|
90
|
+
})
|
91
|
+
|
92
|
+
var staff_assist = xmSelect.render({
|
93
|
+
el: '#staff_assist_list',
|
94
|
+
data: gon.staff_manage,
|
95
|
+
filterable: true,
|
96
|
+
})
|
97
|
+
var expert = xmSelect.render({
|
98
|
+
el: '#expert_list',
|
99
|
+
filterable: true,
|
100
|
+
name: 'expert_ids',
|
101
|
+
remoteSearch: true,
|
102
|
+
remoteMethod: function(val, cb, show){
|
103
|
+
if(!val){
|
104
|
+
return cb([]);
|
105
|
+
}
|
106
|
+
request.get('missions/search_edu_user?q=' + val, {}, function (res) {
|
107
|
+
if (res.data.length == 0) {
|
108
|
+
cb([{value: val, name: val}])
|
109
|
+
} else {
|
110
|
+
cb(res.data);
|
111
|
+
}
|
112
|
+
|
113
|
+
})
|
114
|
+
},
|
115
|
+
data: []
|
116
|
+
})
|
51
117
|
|
118
|
+
|
119
|
+
upload.render({
|
120
|
+
elem: '#upload_file',
|
121
|
+
url: '/missions/upload_files',
|
122
|
+
auto: true,
|
123
|
+
accept: 'file',
|
124
|
+
done: function (res) {
|
125
|
+
layer.msg('上传成功');
|
126
|
+
$("#attachment_id").val(res.attachment_id);
|
127
|
+
document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
|
128
|
+
}
|
129
|
+
});
|
130
|
+
|
131
|
+
$(body).on("click", "#delete", function() {
|
132
|
+
document.getElementById("attachment").innerHTML = "";
|
133
|
+
$("#attachment_id").val('');
|
134
|
+
})
|
52
135
|
form.render();
|
53
136
|
|
54
137
|
// 当前弹出层,防止ID被覆盖
|
@@ -69,15 +152,27 @@
|
|
69
152
|
|
70
153
|
//监听提交
|
71
154
|
form.on('submit(data-reset-btn)', function (data) {
|
155
|
+
data.field.staff_manage_id = staff_manage.getValue('value');
|
156
|
+
data.field.staff_assist_id = staff_assist.getValue('value');
|
157
|
+
var expertids = [];
|
158
|
+
expert.getValue().forEach(function(d) {
|
159
|
+
if (typeof(d.value) == 'number') {
|
160
|
+
expertids.push([d.value, d.name]);
|
161
|
+
} else {
|
162
|
+
expertids.push(['', d.name]);
|
163
|
+
|
164
|
+
}
|
165
|
+
})
|
166
|
+
data.field.expert_ids = expertids;
|
72
167
|
request.authPost("missions/activities", data.field, function (res) {
|
73
168
|
if (res.success === false) {
|
74
|
-
|
169
|
+
layer.alert(res.msg)
|
75
170
|
} else {
|
76
|
-
|
77
|
-
|
171
|
+
layer.closeAll(); //关闭所有层
|
172
|
+
table.reload('activities_table')
|
78
173
|
}
|
79
174
|
})
|
80
|
-
|
81
|
-
|
175
|
+
return false;
|
176
|
+
});
|
82
177
|
});
|
83
178
|
</script>
|
@@ -58,6 +58,9 @@
|
|
58
58
|
</script>
|
59
59
|
<script type="text/html" id="currentTableBar_follows">
|
60
60
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">详情</a>
|
61
|
+
<% if can?(:advise, EducodeSales::Business) %>
|
62
|
+
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">团队建议</a>
|
63
|
+
<% end %>
|
61
64
|
</script>
|
62
65
|
<script type="text/html" id="business">
|
63
66
|
<a href="javascript:void(0);" lay-event="business" class="layui-table-link">{{ d.business }}</a>
|
@@ -163,7 +166,7 @@
|
|
163
166
|
},
|
164
167
|
{
|
165
168
|
title: '操作',
|
166
|
-
width:
|
169
|
+
width: 160,
|
167
170
|
toolbar: '#currentTableBar_follows',
|
168
171
|
align: "center",
|
169
172
|
fixed: 'right'
|
@@ -280,6 +283,36 @@
|
|
280
283
|
$(window).on("resize", function () {
|
281
284
|
layer.full(index);
|
282
285
|
});
|
286
|
+
} else if (obj.event == 'add_advise') {
|
287
|
+
layer.open({
|
288
|
+
title: '添加团队建议',
|
289
|
+
closeBtn: 0,
|
290
|
+
type: 1,
|
291
|
+
area: '400px;',
|
292
|
+
id: 'LAY_layuipro',
|
293
|
+
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>' ,
|
294
|
+
btn: ['保存', '取消'],
|
295
|
+
btn1: function(index, l) {
|
296
|
+
if (l.find("textarea").val().trim() == '') {
|
297
|
+
layer.msg('内容不能为空')
|
298
|
+
return false;
|
299
|
+
} else {
|
300
|
+
request.authPut("/missions/follow_ups/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
|
301
|
+
if (res.success == false) {
|
302
|
+
layer.alert(res.msg);
|
303
|
+
} else {
|
304
|
+
layer.close(index);
|
305
|
+
table.reload('teachers_table');
|
306
|
+
}
|
307
|
+
})
|
308
|
+
}
|
309
|
+
|
310
|
+
return false
|
311
|
+
},
|
312
|
+
btn2: function(index, l) {
|
313
|
+
layer.close(index)
|
314
|
+
}
|
315
|
+
});
|
283
316
|
}
|
284
317
|
});
|
285
318
|
|
@@ -172,31 +172,35 @@
|
|
172
172
|
</script>
|
173
173
|
<script type="text/html" id="currentTableBar">
|
174
174
|
<%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business) %>
|
175
|
-
<% if can? :add_follow, EducodeSales::Business %>
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
<% end %>
|
183
|
-
|
175
|
+
<% if can? :add_follow, EducodeSales::Business %>
|
176
|
+
<% if @current_admin.is_admin %>
|
177
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
178
|
+
<% else %>
|
179
|
+
{{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
|
180
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
181
|
+
{{# }}}
|
182
|
+
<% end %>
|
183
|
+
<% end %>
|
184
184
|
<% end %>
|
185
185
|
<%if !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business)%>
|
186
186
|
{{# if (d.self_flag) {}}
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
<% end %>
|
187
|
+
<% if @current_admin.is_admin %>
|
188
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
189
|
+
<% else %>
|
190
|
+
{{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
|
191
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
192
|
+
{{# }}}
|
193
|
+
<% end %>
|
194
194
|
{{# }}}
|
195
195
|
<% end %>
|
196
|
-
<%if can?(:
|
197
|
-
|
198
|
-
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
196
|
+
<% if can?(:advise, EducodeSales::Business) %>
|
197
|
+
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">建议</a>
|
199
198
|
<% end %>
|
199
|
+
|
200
|
+
<%if can?(:update, EducodeSales::Business)%>
|
201
|
+
<%unless !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
|
202
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
203
|
+
<% end %>
|
200
204
|
<% end %>
|
201
205
|
<%if !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
|
202
206
|
{{# if (d.self_flag) {}}
|
@@ -210,6 +214,7 @@
|
|
210
214
|
<a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
211
215
|
{{# }}}
|
212
216
|
<% end %>
|
217
|
+
|
213
218
|
</script>
|
214
219
|
|
215
220
|
<script type="text/html" id="show_keys">
|
@@ -603,7 +608,7 @@
|
|
603
608
|
},
|
604
609
|
{
|
605
610
|
title: '操作',
|
606
|
-
minWidth:
|
611
|
+
minWidth: 270,
|
607
612
|
toolbar: '#currentTableBar',
|
608
613
|
align: "center",
|
609
614
|
fixed: 'right'
|
@@ -1379,6 +1384,36 @@
|
|
1379
1384
|
,cancel: function(){
|
1380
1385
|
}
|
1381
1386
|
});
|
1387
|
+
} else if (obj.event == 'add_advise') {
|
1388
|
+
layer.open({
|
1389
|
+
title: '添加团队建议',
|
1390
|
+
closeBtn: 0,
|
1391
|
+
type: 1,
|
1392
|
+
area: '400px;',
|
1393
|
+
id: 'LAY_layuipro',
|
1394
|
+
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>' ,
|
1395
|
+
btn: ['保存', '取消'],
|
1396
|
+
btn1: function(index, l) {
|
1397
|
+
if (l.find("textarea").val().trim() == '') {
|
1398
|
+
layer.msg('内容不能为空')
|
1399
|
+
return false;
|
1400
|
+
} else {
|
1401
|
+
request.authPut("/missions/businesses/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
|
1402
|
+
if (res.success == false) {
|
1403
|
+
layer.alert(res.msg);
|
1404
|
+
} else {
|
1405
|
+
layer.close(index);
|
1406
|
+
table.reload("businesses_table",{url: '/missions/businesses', cols: cols_table})
|
1407
|
+
}
|
1408
|
+
})
|
1409
|
+
}
|
1410
|
+
|
1411
|
+
return false
|
1412
|
+
},
|
1413
|
+
btn2: function(index, l) {
|
1414
|
+
layer.close(index)
|
1415
|
+
}
|
1416
|
+
});
|
1382
1417
|
}
|
1383
1418
|
drowpdwonRender()
|
1384
1419
|
});
|
@@ -20,6 +20,7 @@ json.data do
|
|
20
20
|
json.reception_at d.last_follow_up&.reception_at.to_s
|
21
21
|
json.bidded_date d.last_follow_up&.bidded_date.to_s
|
22
22
|
json.signed_date d.last_follow_up&.signed_date.to_s
|
23
|
+
json.advise d.last_follow_up&.advise.to_s
|
23
24
|
json.o_business_deployment EducodeSales::FollowUp::BUSINESS_DEPLOYMENT[1..-1].to_h.invert[d.last_follow_up&.o_business_deployment]
|
24
25
|
json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
|
25
26
|
json.created_at d.created_at.to_s
|
@@ -23,6 +23,8 @@
|
|
23
23
|
<% if f.id == @latest&.id && (f.created_at.present? ? (Time.now - f.created_at).to_f/3600 < 24 : false) %>
|
24
24
|
<a href="javascript:;" class="add_key" data-is_latest="<%= f.id == @latest&.id %>" data-id=<%= f.id %> data-flag="<%= f.created_at.present? ? (Time.now - f.created_at).to_f/3600 < 24 : false %>">添加关键人</a>
|
25
25
|
<% end %>
|
26
|
+
<br/>
|
27
|
+
评论: <span></span> <a href="javascript:;" class="add_comment" data-id=<%= f.id %>>评论</a>
|
26
28
|
</p>
|
27
29
|
</div>
|
28
30
|
</li>
|
@@ -68,6 +70,34 @@
|
|
68
70
|
layer.full(keyindex);
|
69
71
|
});
|
70
72
|
})
|
73
|
+
$(".add_comment").on("click", function(e) {
|
74
|
+
var data = e.currentTarget.dataset;
|
75
|
+
follow_up_id = data.id;
|
76
|
+
var content = e.currentTarget.previousElementSibling.innerHTML;
|
77
|
+
layer.open({
|
78
|
+
title: '评论',
|
79
|
+
closeBtn: 0,
|
80
|
+
type: 1,
|
81
|
+
area: '400px;',
|
82
|
+
id: 'LAY_layuipro_new',
|
83
|
+
content: '<div class="layui-form" lay-filter="comment" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + content + '</textarea></div>' ,
|
84
|
+
btn: ['保存', '取消'],
|
85
|
+
btn1: function(index, l) {
|
86
|
+
if (l.find("textarea").val().trim() == '') {
|
87
|
+
layer.msg('内容不能为空')
|
88
|
+
return false;
|
89
|
+
} else {
|
90
|
+
e.currentTarget.previousElementSibling.innerHTML = l.find("textarea").val().trim();
|
91
|
+
layer.close(index);
|
92
|
+
}
|
93
|
+
return false
|
94
|
+
},
|
95
|
+
btn2: function(index, l) {
|
96
|
+
layer.close(index)
|
97
|
+
},
|
98
|
+
});
|
99
|
+
|
100
|
+
})
|
71
101
|
function demo(){
|
72
102
|
layer.closeAll()
|
73
103
|
business_id = parent.business_id
|
@@ -0,0 +1,13 @@
|
|
1
|
+
json.data do
|
2
|
+
json.array! @data do |d|
|
3
|
+
json.value d.id
|
4
|
+
if d.department_id.present?
|
5
|
+
json.name "#{d.real_name}--(#{d.user_extension.department&.school&.name})[头歌]"
|
6
|
+
else
|
7
|
+
json.name "#{d.real_name}[头歌]"
|
8
|
+
json.extras ""
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
json.code 0
|
13
|
+
json.msg 'succcess'
|
@@ -18,13 +18,13 @@
|
|
18
18
|
<div class="layui-inline">
|
19
19
|
<label class="layui-form-label" style="width: 100px">学校/单位:</label>
|
20
20
|
<div class="layui-input-inline">
|
21
|
-
<%= idea.
|
21
|
+
<%= idea.school_name %>
|
22
22
|
</div>
|
23
23
|
</div>
|
24
24
|
<div class="layui-inline">
|
25
25
|
<label class="layui-form-label" style="width: 100px">院系/部门:</label>
|
26
26
|
<div class="layui-input-inline">
|
27
|
-
<%= idea.
|
27
|
+
<%= idea.department_name %>
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
<div class="layui-inline">
|
@@ -47,12 +47,33 @@
|
|
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
|
+
<div class="layui-inline">
|
57
|
+
<label class="layui-form-label" style="width: 100px">销售负责人:</label>
|
58
|
+
<div class="layui-input-inline">
|
59
|
+
<%= idea.sale_staff&.user&.real_name %>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
<div class="layui-inline">
|
63
|
+
<label class="layui-form-label" style="width: 100px">协作者:</label>
|
64
|
+
<div class="layui-input-inline">
|
65
|
+
<%= idea.assist_staffs.map { |d| d&.user&.real_name }.reject(&:blank?).join("、") %>
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
<div class="layui-inline">
|
69
|
+
<label class="layui-form-label" style="width: 100px">方案材料:</label>
|
70
|
+
<div class="layui-input-inline">
|
71
|
+
<%= link_to "/missions/upload_files/download?id=#{idea.attachment_id}", target: '_blank' do %>
|
72
|
+
<%= idea.attachment&.filename.to_s %>
|
73
|
+
<% end %>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
<br>
|
56
77
|
<div class="layui-inline">
|
57
78
|
<label class="layui-form-label" style="width: 100px">优先级:</label>
|
58
79
|
<div class="layui-input-inline">
|
@@ -92,7 +113,7 @@
|
|
92
113
|
</div>
|
93
114
|
<br>
|
94
115
|
<div class="layui-inline">
|
95
|
-
<label class="layui-form-label" style="width: 100px"
|
116
|
+
<label class="layui-form-label" style="width: 100px">并发规模(人):</label>
|
96
117
|
<div class="layui-input-inline">
|
97
118
|
<%= idea.project.to_i %>
|
98
119
|
</div>
|
@@ -14,7 +14,7 @@
|
|
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>
|
@@ -129,7 +129,7 @@
|
|
129
129
|
},
|
130
130
|
{
|
131
131
|
field: 'staff',
|
132
|
-
title: '
|
132
|
+
title: '方案指派人',
|
133
133
|
width: 100
|
134
134
|
},
|
135
135
|
{
|
@@ -155,7 +155,7 @@
|
|
155
155
|
{
|
156
156
|
field: 'project',
|
157
157
|
width: 150,
|
158
|
-
title: '
|
158
|
+
title: '并发规模(人)'
|
159
159
|
},
|
160
160
|
{
|
161
161
|
field: 'money',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
json.data do
|
2
2
|
json.array! @ideas do |d|
|
3
3
|
json.(d, :id, :name, :level, :status, :types, :model, :content)
|
4
|
-
json.school d.
|
4
|
+
json.school d.school_name
|
5
5
|
json.staff d.staff&.user&.real_name
|
6
6
|
json.hardware d.hardware.to_f.round(2)
|
7
7
|
json.project d.project.to_i
|