educode_sales 0.5.4 → 0.5.8
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/businesses_controller.rb +20 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +58 -1
- data/app/controllers/educode_sales/home_controller.rb +18 -2
- data/app/controllers/educode_sales/sale_trends_controller.rb +119 -84
- data/app/controllers/educode_sales/sales_controller.rb +3 -0
- data/app/controllers/educode_sales/teachers_controller.rb +41 -14
- data/app/controllers/educode_sales/upload_files_controller.rb +3 -3
- data/app/models/educode_sales/teacher.rb +2 -1
- data/app/models/educode_sales/teacher_assign_follow.rb +6 -0
- data/app/views/educode_sales/activities/index.html.erb +4 -5
- data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
- data/app/views/educode_sales/businesses/_follows.html.erb +255 -0
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +69 -6
- data/app/views/educode_sales/businesses/file.html.erb +2 -4
- data/app/views/educode_sales/businesses/index.html.erb +161 -66
- data/app/views/educode_sales/businesses/index.json.jbuilder +2 -1
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +70 -6
- data/app/views/educode_sales/businesses/show_follow.html.erb +9 -9
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +8 -0
- data/app/views/educode_sales/businesses/time_line.html.erb +1 -1
- data/app/views/educode_sales/follow_ups/index.json.jbuilder +20 -0
- data/app/views/educode_sales/home/sales_place.json.jbuilder +9 -0
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +6 -0
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +2 -0
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +6 -0
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +2 -0
- data/app/views/educode_sales/places/index.html.erb +14 -4
- data/app/views/educode_sales/places/index.json.jbuilder +7 -1
- data/app/views/educode_sales/plans/_monthPlan.html.erb +5 -0
- data/app/views/educode_sales/plans/_monthly.html.erb +1 -0
- data/app/views/educode_sales/plans/_weekPlan.html.erb +5 -0
- data/app/views/educode_sales/plans/_weekly.html.erb +1 -0
- data/app/views/educode_sales/recycles/index.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +54 -5
- data/app/views/educode_sales/sales/index.html.erb +18 -3
- data/app/views/educode_sales/sales/index.json.jbuilder +27 -14
- data/app/views/educode_sales/sales/operations.html.erb +4 -1
- data/app/views/educode_sales/teachers/course_list.json.jbuilder +1 -1
- data/app/views/educode_sales/teachers/edit.html.erb +53 -7
- data/app/views/educode_sales/teachers/index.html.erb +42 -3
- data/app/views/educode_sales/teachers/index.json.jbuilder +4 -1
- data/app/views/educode_sales/teachers/new.html.erb +55 -17
- data/config/routes.rb +1 -0
- data/db/migrate/20211201023750_create_educode_sales_teacher_assign_follows.rb +11 -0
- data/db/migrate/20211206054756_add_year_to_follow_ups.rb +5 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +8 -2
@@ -1,66 +1,80 @@
|
|
1
|
-
<div class="
|
2
|
-
<
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
1
|
+
<div class="layui-tab" lay-filter="operation_tab">
|
2
|
+
<ul class="layui-tab-title">
|
3
|
+
<li class="layui-this follows_li">跟进动态</li>
|
4
|
+
<li class="businesses_list_li" >商机列表</li>
|
5
|
+
</ul>
|
6
|
+
<div class="layui-tab-content">
|
7
|
+
<div class="layui-tab-item follows_div layui-show">
|
8
|
+
<!-- 跟进动态-->
|
9
|
+
<%=render 'follows' %>
|
10
|
+
</div>
|
11
|
+
<div class="layui-tab-item businesses_list_div">
|
12
|
+
<!--商机列表-->
|
13
|
+
<div class="min-height-table">
|
14
|
+
<div style="margin: 10px 10px 10px 10px">
|
15
|
+
<form class="layui-form layui-form-pane" lay-filter="search_form">
|
16
|
+
<div class="layui-form-item">
|
17
|
+
<div class="layui-inline">
|
18
|
+
<label class="layui-form-label">商机名称</label>
|
19
|
+
<div class="layui-input-inline">
|
20
|
+
<input type="text" name="name" autocomplete="off" class="layui-input" value="<%=params[:name] %>">
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<div class="layui-inline">
|
24
|
+
<label class="layui-form-label">单位</label>
|
25
|
+
<div class="layui-input-inline">
|
26
|
+
<input type="text" name="department" autocomplete="off" class="layui-input">
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<div class="layui-inline">
|
30
|
+
<label class="layui-form-label">销售人员</label>
|
31
|
+
<div class="layui-input-inline">
|
32
|
+
<%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="layui-inline">
|
36
|
+
<label class="layui-form-label">项目类型</label>
|
37
|
+
<div class="layui-input-inline">
|
38
|
+
<%= select_tag "business_type", options_for_select(EducodeSales::Common.where(clazz: 'business_type').pluck(:name, :id), params[:clazz_id]), { 'lay-filter': 'clazz_id', include_blank: true } %>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
<div class="layui-inline">
|
42
|
+
<label class="layui-form-label">项目阶段</label>
|
43
|
+
<div class="layui-input-inline">
|
44
|
+
<%= select_tag "business_step", options_for_select(EducodeSales::Common.where(clazz: 'business_step').pluck(:name, :id)), { include_blank: true } %>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<div class="layui-inline">
|
48
|
+
<label class="layui-form-label">渠道名称</label>
|
49
|
+
<div class="layui-input-inline">
|
50
|
+
<div id="index_place" style="width: 190px;"></div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
<div class="layui-inline">
|
54
|
+
<label class="layui-form-label">区域</label>
|
55
|
+
<div class="layui-input-inline">
|
56
|
+
<%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
<div class="layui-inline">
|
60
|
+
<label class="layui-form-label">起止时间</label>
|
61
|
+
<div class="layui-input-inline">
|
62
|
+
<input type="text" class="layui-input" id="date" name="date" placeholder=" - ">
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
<div class="layui-inline">
|
66
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
67
|
+
</button>
|
68
|
+
<button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">搜索
|
69
|
+
</button>
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
</form>
|
58
73
|
</div>
|
74
|
+
<table class="layui-hide" id="businesses_table" lay-filter="businesses_table"></table>
|
59
75
|
</div>
|
60
|
-
</
|
76
|
+
</div>
|
61
77
|
</div>
|
62
|
-
|
63
|
-
<table class="layui-hide" id="businesses_table" lay-filter="businesses_table"></table>
|
64
78
|
</div>
|
65
79
|
<script type="text/html" id="bussinessBar">
|
66
80
|
<div class="layui-btn-container">
|
@@ -109,6 +123,59 @@
|
|
109
123
|
range: true
|
110
124
|
});
|
111
125
|
|
126
|
+
var is_show = <%=params[:name].present? || params[:clazz_id].present? %>
|
127
|
+
if(is_show){
|
128
|
+
$('.follows_li').removeClass('layui-this');
|
129
|
+
$('.follows_div').removeClass('layui-show');
|
130
|
+
$('.businesses_list_li').addClass('layui-this');
|
131
|
+
$('.businesses_list_div').addClass('layui-show');
|
132
|
+
}
|
133
|
+
|
134
|
+
var index_place_list = xmSelect.render({
|
135
|
+
el: '#index_place',
|
136
|
+
model: {
|
137
|
+
icon: 'hidden',
|
138
|
+
label: {
|
139
|
+
type: 'text',
|
140
|
+
text: {
|
141
|
+
//左边拼接的字符
|
142
|
+
left: '',
|
143
|
+
//右边拼接的字符
|
144
|
+
right: '',
|
145
|
+
//中间的分隔符
|
146
|
+
separator: ', ',
|
147
|
+
},
|
148
|
+
}
|
149
|
+
},
|
150
|
+
remoteSearch: true,
|
151
|
+
clickClose: true,
|
152
|
+
delay: 1000,
|
153
|
+
paging: true,
|
154
|
+
radio: true,
|
155
|
+
pageRemote: true,
|
156
|
+
filterable: true,
|
157
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
158
|
+
$.ajax( '/missions/sales_place', {
|
159
|
+
method: 'get',
|
160
|
+
data: {
|
161
|
+
q: val,
|
162
|
+
page: pageIndex
|
163
|
+
},
|
164
|
+
dataType: 'json',
|
165
|
+
success: function (res) {
|
166
|
+
var data = res.data;
|
167
|
+
if (res.code == 0) {
|
168
|
+
cb(res.data, res.count);
|
169
|
+
} else {
|
170
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
171
|
+
}
|
172
|
+
|
173
|
+
}
|
174
|
+
})
|
175
|
+
}
|
176
|
+
})
|
177
|
+
|
178
|
+
|
112
179
|
table = layui.table;
|
113
180
|
table.render({
|
114
181
|
elem: '#businesses_table',
|
@@ -128,17 +195,20 @@
|
|
128
195
|
{
|
129
196
|
field: 'name',
|
130
197
|
width: 170,
|
131
|
-
|
198
|
+
title: '名称',
|
199
|
+
templet:'<div><span title="{{d.name}}">{{d.name}}</span></div>'
|
132
200
|
},
|
133
201
|
{
|
134
202
|
field: 'school',
|
135
203
|
width: 150,
|
136
204
|
title: '单位',
|
205
|
+
templet:'<div><span title="{{d.school}}">{{d.school}}</span></div>'
|
137
206
|
},
|
138
207
|
{
|
139
208
|
field: 'department',
|
140
209
|
width: 150,
|
141
|
-
title: '部门'
|
210
|
+
title: '部门',
|
211
|
+
templet:'<div><span title="{{d.department}}">{{d.department}}</span></div>'
|
142
212
|
},
|
143
213
|
{
|
144
214
|
field: 'follow_ups_count',
|
@@ -156,7 +226,8 @@
|
|
156
226
|
{
|
157
227
|
field: 'clazz',
|
158
228
|
width: 80,
|
159
|
-
title: '类型'
|
229
|
+
title: '类型',
|
230
|
+
templet:'<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>'
|
160
231
|
},
|
161
232
|
{
|
162
233
|
field: 'stage',
|
@@ -194,6 +265,13 @@
|
|
194
265
|
totalRow: true,
|
195
266
|
sort: true
|
196
267
|
},
|
268
|
+
{
|
269
|
+
field: 'actual_amount',
|
270
|
+
width: 100,
|
271
|
+
title: '合同额',
|
272
|
+
totalRow: true,
|
273
|
+
sort: true
|
274
|
+
},
|
197
275
|
{
|
198
276
|
field: 'return_money',
|
199
277
|
width: 100,
|
@@ -203,8 +281,8 @@
|
|
203
281
|
},
|
204
282
|
{
|
205
283
|
field: 'place',
|
206
|
-
width:
|
207
|
-
title: '渠道'
|
284
|
+
width: 160,
|
285
|
+
title: '渠道',
|
208
286
|
},
|
209
287
|
{
|
210
288
|
field: 'source',
|
@@ -396,7 +474,8 @@
|
|
396
474
|
|
397
475
|
// 监听搜索操作
|
398
476
|
form.on('submit(search_bussiness)', function (data) {
|
399
|
-
|
477
|
+
data.field.place_id = index_place_list.getValue('valueStr');
|
478
|
+
search = data.field
|
400
479
|
console.log(search);
|
401
480
|
table.reload('businesses_table', {
|
402
481
|
page: {
|
@@ -404,6 +483,15 @@
|
|
404
483
|
},
|
405
484
|
where: {q: search, sort: sort}
|
406
485
|
}, 'data');
|
486
|
+
table.reload('teachers_table', {
|
487
|
+
page: {
|
488
|
+
curr: 1
|
489
|
+
},
|
490
|
+
where: {q: search, sort: sort}
|
491
|
+
}, 'data');
|
492
|
+
form.val('search_follows', {
|
493
|
+
name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area
|
494
|
+
})
|
407
495
|
|
408
496
|
return false;
|
409
497
|
});
|
@@ -619,4 +707,11 @@
|
|
619
707
|
.layui-table-tool-temp{
|
620
708
|
padding-right: 30px; !important;
|
621
709
|
}
|
710
|
+
.layui-table-fixed .layui-table-body {
|
711
|
+
height: auto!important;
|
712
|
+
}
|
713
|
+
.layui-table-fixed.layui-hide {
|
714
|
+
display: block!important;
|
715
|
+
}
|
716
|
+
|
622
717
|
</style>
|
@@ -10,13 +10,14 @@ json.data do
|
|
10
10
|
json.follow_up_id d.last_follow_up_id
|
11
11
|
# json.teachers_count d.follow_ups.sum(:key_people_count)
|
12
12
|
# json.teachers_count EducodeSales::FollowUp.order(created_at: :desc).find_by(business_id: d.id).present? ? EducodeSales::FollowUp.order(created_at: :desc).find_by(business_id: d.id).key_people_count : 0
|
13
|
-
json.clazz d.last_follow_up&.clazz&.name
|
13
|
+
json.clazz d.last_follow_up&.clazz&.name || ""
|
14
14
|
json.stage d.last_follow_up&.stage&.name
|
15
15
|
json.invitation_at d.last_follow_up&.invitation_at.to_s
|
16
16
|
json.reception_at d.last_follow_up&.reception_at.to_s
|
17
17
|
json.bidded_date d.last_follow_up&.bidded_date.to_s
|
18
18
|
json.signed_date d.last_follow_up&.signed_date.to_s
|
19
19
|
json.total_amount d.last_follow_up&.total_amount
|
20
|
+
json.actual_amount d.last_follow_up&.actual_amount
|
20
21
|
json.return_money d.return_money
|
21
22
|
json.place d.last_follow_up&.place&.name
|
22
23
|
json.last_follow_person d.last_follow_up.present? ? d.last_follow_up.staff.user.real_name : EducodeSales::Staff.find(d.staff_id).user.real_name
|
@@ -83,10 +83,10 @@
|
|
83
83
|
</div>
|
84
84
|
</div>
|
85
85
|
<br>
|
86
|
-
<div class="layui-inline">
|
86
|
+
<div class="layui-inline new_place_select">
|
87
87
|
<label class="layui-form-label">渠道</label>
|
88
|
-
<div class="layui-input-inline">
|
89
|
-
|
88
|
+
<div class="layui-input-inline" style="z-index: 101">
|
89
|
+
<div id="place" style="width: 190px;"></div>
|
90
90
|
</div>
|
91
91
|
</div>
|
92
92
|
<div class="layui-inline">
|
@@ -94,6 +94,15 @@
|
|
94
94
|
<div class="layui-input-inline">
|
95
95
|
<input name="divide_amount" class="layui-input" value="<%= @last_follow_up&.divide_amount%>">
|
96
96
|
</div>
|
97
|
+
</div>
|
98
|
+
<div class="layui-form-item">
|
99
|
+
<div class="layui-inline">
|
100
|
+
<label class="layui-form-label">所属年度</label>
|
101
|
+
<div class="layui-input-inline">
|
102
|
+
<input type="text" class="layui-input" name="year" autocomplete="off" id="year"
|
103
|
+
value="<%= @last_follow_up&.year%>"
|
104
|
+
placeholder="请选择年度"> </div>
|
105
|
+
</div>
|
97
106
|
</div>
|
98
107
|
<div class="layui-form-item">
|
99
108
|
<label class="layui-form-label">指定跟进人</label>
|
@@ -147,6 +156,10 @@
|
|
147
156
|
xmSelect = layui.xmSelect,
|
148
157
|
$ = layui.$;
|
149
158
|
|
159
|
+
laydate.render({
|
160
|
+
elem: '#year',
|
161
|
+
type: 'year'
|
162
|
+
})
|
150
163
|
laydate.render({
|
151
164
|
elem: '#invitation_at_add'
|
152
165
|
})
|
@@ -182,18 +195,63 @@
|
|
182
195
|
})
|
183
196
|
}
|
184
197
|
})
|
198
|
+
var place_list = xmSelect.render({
|
199
|
+
el: '#place',
|
200
|
+
remoteSearch: true,
|
201
|
+
model: {
|
202
|
+
icon: 'hidden',
|
203
|
+
label: {
|
204
|
+
type: 'text',
|
205
|
+
text: {
|
206
|
+
//左边拼接的字符
|
207
|
+
left: '',
|
208
|
+
//右边拼接的字符
|
209
|
+
right: '',
|
210
|
+
//中间的分隔符
|
211
|
+
separator: ', ',
|
212
|
+
},
|
213
|
+
}
|
214
|
+
},
|
215
|
+
clickClose: true,
|
216
|
+
delay: 1000,
|
217
|
+
paging: true,
|
218
|
+
radio: true,
|
219
|
+
pageRemote: true,
|
220
|
+
filterable: true,
|
221
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
222
|
+
$.ajax( '/missions/sales_place', {
|
223
|
+
method: 'get',
|
224
|
+
data: {
|
225
|
+
q: val,
|
226
|
+
page: pageIndex
|
227
|
+
},
|
228
|
+
dataType: 'json',
|
229
|
+
success: function (res) {
|
230
|
+
var data = res.data;
|
231
|
+
if (res.code == 0) {
|
232
|
+
cb(res.data, res.count);
|
233
|
+
} else {
|
234
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
235
|
+
}
|
236
|
+
|
237
|
+
}
|
238
|
+
})
|
239
|
+
}
|
240
|
+
})
|
185
241
|
|
186
242
|
sales_list.setValue(gon.sales);
|
243
|
+
place_list.setValue(gon.place);
|
187
244
|
form.render();
|
188
245
|
|
189
246
|
form.on('submit(add_follow_up)', function (data) {
|
190
|
-
|
247
|
+
var assign_follow = [];
|
191
248
|
sales_list.getValue().forEach(function(d) {
|
192
249
|
assign_follow.push(d.value);
|
193
250
|
})
|
194
251
|
data.field.assign_follow_up = assign_follow;
|
195
252
|
data.field.business_id = "<%= @business.id %>";
|
196
|
-
|
253
|
+
data.field.place_id = place_list.getValue('valueStr');
|
254
|
+
request.authPost("missions/follow_ups", data.field, function (res) {
|
197
255
|
if (res.success == false) {
|
198
256
|
layer.alert(res.msg)
|
199
257
|
} else {
|
@@ -201,6 +259,7 @@
|
|
201
259
|
parent.layer.close(parent.layer.getFrameIndex(window.name))
|
202
260
|
parent.table.reload('sale_plan_follow_table')
|
203
261
|
parent.table.reload('businesses_table')
|
262
|
+
parent.table.reload('teachers_table')
|
204
263
|
}
|
205
264
|
})
|
206
265
|
|
@@ -209,4 +268,9 @@
|
|
209
268
|
});
|
210
269
|
|
211
270
|
});
|
212
|
-
</script>
|
271
|
+
</script>
|
272
|
+
<style>
|
273
|
+
.new_place_select xm-select > .xm-body{
|
274
|
+
width: 300px; !important;
|
275
|
+
}
|
276
|
+
</style>
|
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
table.render({
|
76
76
|
elem: '#sale_plan_follow_table',
|
77
|
-
url: '/missions/businesses/show_follow?id=' + parent.
|
77
|
+
url: '/missions/businesses/show_follow?id=' + parent.business_id ,
|
78
78
|
toolbar: '#toolbarDemo_follow',
|
79
79
|
defaultToolbar: ['filter'],
|
80
80
|
cols: [
|
@@ -198,7 +198,7 @@
|
|
198
198
|
table.on('toolbar(sale_plan_follow_table)', function (obj) {
|
199
199
|
if (obj.event === 'add') { // 监听添加操作
|
200
200
|
business_id = parent.business_id
|
201
|
-
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.
|
201
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.business_id);
|
202
202
|
var openWH = miniPage.getOpenWidthHeight();
|
203
203
|
sale_plan_index = layer.open({
|
204
204
|
title: '添加商机跟进记录',
|
@@ -220,7 +220,7 @@
|
|
220
220
|
layer.closeAll()
|
221
221
|
business_id = parent.business_id
|
222
222
|
business_name = parent.business_name
|
223
|
-
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' +
|
223
|
+
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + parent.business_id);
|
224
224
|
var openWH = miniPage.getOpenWidthHeight();
|
225
225
|
sindex = layer.open({
|
226
226
|
title: '商机列表/'+ parent.business_name +'的跟进时间线',
|
@@ -248,6 +248,7 @@
|
|
248
248
|
layer.close(index);
|
249
249
|
table.reload("businesses_table");
|
250
250
|
table.reload("sale_plan_follow_table");
|
251
|
+
table.reload('teachers_table')
|
251
252
|
})
|
252
253
|
});
|
253
254
|
} else if (obj.event === 'show') { // 监听添加操作
|
@@ -335,34 +336,33 @@
|
|
335
336
|
// 未完成计划
|
336
337
|
table.render({
|
337
338
|
elem: '#unfinish_table',
|
338
|
-
url: '/missions/businesses/' + parent.
|
339
|
+
url: '/missions/businesses/' + parent.business_id + "/unfinish_plans",
|
339
340
|
toolbar: '#unfinish_table_tabar',
|
340
341
|
defaultToolbar: [],
|
341
342
|
cols: [
|
342
343
|
[
|
343
344
|
{
|
344
345
|
field: 'id',
|
345
|
-
width:
|
346
|
+
width: 60,
|
346
347
|
title:'序号',type: 'numbers',
|
347
348
|
},
|
348
349
|
{
|
349
350
|
field: 'staff',
|
350
|
-
width:
|
351
|
+
width: 100,
|
351
352
|
title: '姓名'
|
352
353
|
},
|
353
354
|
{
|
354
355
|
field: 'month',
|
355
|
-
width:
|
356
|
+
width: 100,
|
356
357
|
title: '月份',
|
357
358
|
},
|
358
359
|
{
|
359
360
|
field: 'weekly',
|
360
|
-
width:
|
361
|
+
width: 100,
|
361
362
|
title: '周次'
|
362
363
|
},
|
363
364
|
{
|
364
365
|
field: 'content',
|
365
|
-
width: 300,
|
366
366
|
title: '计划内容'
|
367
367
|
},
|
368
368
|
{
|
@@ -78,6 +78,14 @@
|
|
78
78
|
<%= @follow_up.divide_amount %>万
|
79
79
|
</div>
|
80
80
|
</div>
|
81
|
+
<div class="layui-form-item">
|
82
|
+
<div class="layui-inline">
|
83
|
+
<label class="layui-form-label">所属年度</label>
|
84
|
+
<div class="layui-input-inline">
|
85
|
+
<%= @follow_up&.year %>年
|
86
|
+
</div>
|
87
|
+
</div>
|
88
|
+
</div>
|
81
89
|
<div class="ayui-form-item">
|
82
90
|
<label class="layui-form-label" style="width: 85px;">指定跟进人:</label>
|
83
91
|
<div class="layui-input-inline">
|
@@ -43,7 +43,7 @@
|
|
43
43
|
function demo(){
|
44
44
|
layer.closeAll()
|
45
45
|
business_id = parent.business_id
|
46
|
-
var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' +
|
46
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + parent.business_id);
|
47
47
|
var openWH = miniPage.getOpenWidthHeight();
|
48
48
|
sindex = layer.open({
|
49
49
|
title: '商机列表/'+ parent.business_name +'的跟进记录',
|
@@ -0,0 +1,20 @@
|
|
1
|
+
json.data do
|
2
|
+
json.array! @follow_ups do |d|
|
3
|
+
json.id d.id
|
4
|
+
json.clazz d.clazz.name
|
5
|
+
json.stage d.stage.name
|
6
|
+
json.staff d.staff.user.real_name
|
7
|
+
json.description d.description
|
8
|
+
json.advise d.advise
|
9
|
+
json.school d.business.department.school.name
|
10
|
+
json.created_at d.created_at.to_s
|
11
|
+
json.business d.business.name
|
12
|
+
json.business_id d.business.id
|
13
|
+
teacher_ids = d.key_person.pluck(:teacher_id)
|
14
|
+
json.key_people EducodeSales::Teacher.where(id: teacher_ids).pluck(:name).join('、')
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
json.code 0
|
20
|
+
json.count @follow_ups.total_count
|
@@ -79,6 +79,10 @@
|
|
79
79
|
toolbar: '#monthPlanToolbar',
|
80
80
|
totalRow:true,
|
81
81
|
defaultToolbar: ['filter'],
|
82
|
+
initSort: {
|
83
|
+
field: 'updated_at' //排序字段,对应 cols 设定的各字段名
|
84
|
+
,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
|
85
|
+
},
|
82
86
|
cols: [
|
83
87
|
[
|
84
88
|
{
|
@@ -111,6 +115,8 @@
|
|
111
115
|
field: 'content',
|
112
116
|
width: 400,
|
113
117
|
title: '计划内容',
|
118
|
+
templet:'<div><span title="{{d.content}}">{{d.content}}</span></div>'
|
119
|
+
|
114
120
|
},
|
115
121
|
{
|
116
122
|
field: 'count',
|
@@ -80,6 +80,10 @@
|
|
80
80
|
toolbar: '#weekPlanToolbar',
|
81
81
|
totalRow:true,
|
82
82
|
defaultToolbar: ['filter'],
|
83
|
+
initSort: {
|
84
|
+
field: 'updated_at' //排序字段,对应 cols 设定的各字段名
|
85
|
+
,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
|
86
|
+
},
|
83
87
|
cols: [
|
84
88
|
[
|
85
89
|
{
|
@@ -122,6 +126,8 @@
|
|
122
126
|
field: 'content',
|
123
127
|
width: 300,
|
124
128
|
title: '计划内容',
|
129
|
+
templet:'<div><span title="{{d.content}}">{{d.content}}</span></div>'
|
130
|
+
|
125
131
|
},
|
126
132
|
{
|
127
133
|
field: 'count',
|