educode_sales 0.4.6 → 0.5.0
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 +74 -2
- data/app/controllers/educode_sales/follow_ups_controller.rb +1 -1
- data/app/controllers/educode_sales/home_controller.rb +4 -0
- data/app/controllers/educode_sales/operation_plans_controller.rb +16 -4
- data/app/controllers/educode_sales/operation_reports_controller.rb +6 -0
- data/app/controllers/educode_sales/operations_controller.rb +1 -1
- data/app/controllers/educode_sales/plans_controller.rb +29 -13
- data/app/controllers/educode_sales/sale_reports_controller.rb +6 -0
- data/app/controllers/educode_sales/sale_trends_controller.rb +8 -7
- data/app/controllers/educode_sales/sales_controller.rb +2 -2
- data/app/controllers/educode_sales/upload_files_controller.rb +105 -0
- data/app/models/educode_sales/common.rb +4 -0
- data/app/models/educode_sales/sale_plan.rb +1 -0
- data/app/views/educode_sales/activities/show_teachers.html.erb +16 -16
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +15 -0
- data/app/views/educode_sales/businesses/file.html.erb +154 -0
- data/app/views/educode_sales/businesses/index.html.erb +62 -10
- data/app/views/educode_sales/businesses/index.json.jbuilder +3 -1
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +17 -0
- data/app/views/educode_sales/businesses/show_follow.html.erb +49 -12
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +3 -0
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +80 -2
- data/app/views/educode_sales/businesses/time_line.html.erb +62 -0
- data/app/views/educode_sales/businesses/upload_file.html.erb +43 -0
- data/app/views/educode_sales/home/search_operation_teacher.json.jbuilder +12 -0
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +7 -7
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +8 -8
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +8 -8
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +9 -9
- data/app/views/educode_sales/operation_plans/edit_month.html.erb +6 -6
- data/app/views/educode_sales/operation_plans/edit_week.html.erb +7 -7
- data/app/views/educode_sales/operation_plans/new_month.html.erb +50 -4
- data/app/views/educode_sales/operation_plans/new_monthly.html.erb +12 -0
- data/app/views/educode_sales/operation_plans/new_week.html.erb +48 -5
- data/app/views/educode_sales/operation_plans/new_weekly.html.erb +12 -0
- data/app/views/educode_sales/operation_reports/audit.html.erb +22 -10
- data/app/views/educode_sales/operation_reports/edit.html.erb +22 -10
- data/app/views/educode_sales/operation_reports/show.html.erb +22 -10
- data/app/views/educode_sales/plans/_monthPlan.html.erb +8 -8
- data/app/views/educode_sales/plans/_monthly.html.erb +7 -7
- data/app/views/educode_sales/plans/_weekPlan.html.erb +7 -7
- data/app/views/educode_sales/plans/_weekly.html.erb +8 -8
- data/app/views/educode_sales/plans/edit_month.html.erb +7 -7
- data/app/views/educode_sales/plans/edit_week.html.erb +8 -8
- data/app/views/educode_sales/plans/new_month.html.erb +2 -2
- data/app/views/educode_sales/plans/new_monthly.html.erb +18 -6
- data/app/views/educode_sales/plans/new_week.html.erb +3 -3
- data/app/views/educode_sales/plans/new_weekly.html.erb +19 -7
- data/app/views/educode_sales/sale_reports/audit.html.erb +20 -8
- data/app/views/educode_sales/sale_reports/edit.html.erb +20 -8
- data/app/views/educode_sales/sale_reports/show.html.erb +15 -3
- data/app/views/educode_sales/sale_trends/trends.html.erb +6 -6
- data/app/views/educode_sales/teachers/index.html.erb +2 -2
- data/app/views/educode_sales/teachers/show_follow.html.erb +10 -4
- data/app/views/educode_sales/upload_files/index.json.jbuilder +13 -0
- data/app/views/layouts/educode_sales/application.html.erb +4 -1
- data/config/routes.rb +13 -0
- data/db/migrate/20211102085743_add_bidded_date_educode_sales_follow_ups.rb +6 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +9 -2
@@ -41,6 +41,21 @@
|
|
41
41
|
id="invitation_at_edit" placeholder="请选择日期">
|
42
42
|
</div>
|
43
43
|
</div>
|
44
|
+
<div class="layui-inline">
|
45
|
+
<label class="layui-form-label">中标时间</label>
|
46
|
+
<div class="layui-input-inline">
|
47
|
+
<input type="text" class="layui-input" value="<%= @follow_up.bidded_date %>" name="bidded_date"
|
48
|
+
id="invitation_at_edit" placeholder="请选择日期">
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
<br>
|
52
|
+
<div class="layui-inline">
|
53
|
+
<label class="layui-form-label">签单时间</label>
|
54
|
+
<div class="layui-input-inline">
|
55
|
+
<input type="text" class="layui-input" value="<%= @follow_up.signed_date %>" name="signed_date"
|
56
|
+
id="invitation_at_edit" placeholder="请选择日期">
|
57
|
+
</div>
|
58
|
+
</div>
|
44
59
|
<div class="layui-inline">
|
45
60
|
<label class="layui-form-label">验收时间</label>
|
46
61
|
<div class="layui-input-inline">
|
@@ -0,0 +1,154 @@
|
|
1
|
+
<script type="text/html" id="toolbarDemo">
|
2
|
+
<div class="layui-btn-container">
|
3
|
+
<span class="table-label">附件信息</span>
|
4
|
+
<%# if can? :create, EducodeSales::file %>
|
5
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="upload_file">上传文件</button>
|
6
|
+
<%# end %>
|
7
|
+
</div>
|
8
|
+
</script>
|
9
|
+
|
10
|
+
<table class="layui-hide" id="file" lay-filter="file"></table>
|
11
|
+
|
12
|
+
<script type="text/html" id="currentTableBar_file">
|
13
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="preview">预览</a>
|
14
|
+
<a href="/missions/upload_files/download?id={{d.id}}" class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="download">下载</a>
|
15
|
+
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
|
16
|
+
</script>
|
17
|
+
|
18
|
+
<script type="text/html" id="showchance">
|
19
|
+
<a href="/missions/businesses" class="layui-table-link">{{ d.chance }}</a>
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script>
|
23
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
|
24
|
+
var $ = layui.jquery,
|
25
|
+
form = layui.form,
|
26
|
+
table = layui.table,
|
27
|
+
request = layui.request,
|
28
|
+
upload = layui.upload;
|
29
|
+
miniPage = layui.miniPage;
|
30
|
+
|
31
|
+
|
32
|
+
var business_id = parent.id
|
33
|
+
table.render({
|
34
|
+
elem: '#file',
|
35
|
+
url: '/missions/upload_files?business_id='+business_id,
|
36
|
+
toolbar: '#toolbarDemo',
|
37
|
+
defaultToolbar: [],
|
38
|
+
cols: [
|
39
|
+
[
|
40
|
+
{
|
41
|
+
field: 'id',
|
42
|
+
width: 80,
|
43
|
+
title:'序号',type: 'numbers',
|
44
|
+
},
|
45
|
+
{
|
46
|
+
field: 'name',
|
47
|
+
title: '文件名'
|
48
|
+
},
|
49
|
+
{
|
50
|
+
field: 'size',
|
51
|
+
width: 100,
|
52
|
+
title: '文件大小',
|
53
|
+
},
|
54
|
+
{
|
55
|
+
field: 'created_on',
|
56
|
+
width: 200,
|
57
|
+
title: '上传时间',
|
58
|
+
sort: true
|
59
|
+
},
|
60
|
+
{
|
61
|
+
field: 'upload_person',
|
62
|
+
width: 80,
|
63
|
+
totalRow:true,
|
64
|
+
title: '上传人',
|
65
|
+
},
|
66
|
+
{
|
67
|
+
title: '操作',
|
68
|
+
width: 200,
|
69
|
+
toolbar: '#currentTableBar_file',
|
70
|
+
align: "center"
|
71
|
+
}
|
72
|
+
]
|
73
|
+
],
|
74
|
+
limit: 20,
|
75
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
76
|
+
page: true
|
77
|
+
});
|
78
|
+
|
79
|
+
|
80
|
+
var sort = {};
|
81
|
+
table.on('sort(file)', function (obj) {
|
82
|
+
sort.field = obj.field;
|
83
|
+
sort.order = obj.type;
|
84
|
+
table.reload('file', {
|
85
|
+
initSort: obj,
|
86
|
+
where: {
|
87
|
+
sort: sort
|
88
|
+
}
|
89
|
+
});
|
90
|
+
})
|
91
|
+
|
92
|
+
|
93
|
+
table.on('toolbar(file)', function (obj) {
|
94
|
+
if (obj.event === 'upload_file') { //
|
95
|
+
id =parent.id
|
96
|
+
var content = miniPage.getHrefContent('/missions/businesses/upload_file');
|
97
|
+
var openWH = miniPage.getOpenWidthHeight();
|
98
|
+
import_index = layer.open({
|
99
|
+
title: '上传文件',
|
100
|
+
type: 1,
|
101
|
+
shade: 0.2,
|
102
|
+
shadeClose: true,
|
103
|
+
area: ['200px', '100px'],
|
104
|
+
offset: 'auto',
|
105
|
+
closeBtn: 0,
|
106
|
+
content: content,
|
107
|
+
});
|
108
|
+
$(window).on("resize", function () {
|
109
|
+
layer.full(index);
|
110
|
+
});
|
111
|
+
}
|
112
|
+
});
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
table.on('tool(file)', function (obj) {
|
117
|
+
var data = obj.data;
|
118
|
+
var id = data.id
|
119
|
+
name = data.disk_filename
|
120
|
+
if (obj.event === 'preview') {
|
121
|
+
if (data.content_type.split("/")[0] === "image"){
|
122
|
+
// var img = "<img src='/images/" + name + "' />";
|
123
|
+
layer.photos({
|
124
|
+
photos: { "data": [{"src": '/images/'+name}] }
|
125
|
+
,anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
|
126
|
+
});
|
127
|
+
}else if (data.content_type.split("/")[1] === "pdf"){
|
128
|
+
var pdf = '/images/' + name;
|
129
|
+
console.log(pdf);
|
130
|
+
var openWH = miniPage.getOpenWidthHeight();
|
131
|
+
layer.open({
|
132
|
+
title: data.name,
|
133
|
+
type: 2,
|
134
|
+
area: ['1000px', '750px'],
|
135
|
+
fixed: false, //不固定
|
136
|
+
maxmin: true,
|
137
|
+
content: pdf
|
138
|
+
});
|
139
|
+
}else{
|
140
|
+
layer.msg("附件不支持预览,请下载查看!")
|
141
|
+
}
|
142
|
+
return false;
|
143
|
+
}else if (obj.event === 'delete') {
|
144
|
+
layer.confirm('确定删除' + data.name, function (index) {
|
145
|
+
request.delete('missions/upload_files/' + data.id + '?disk_filename=' + data.disk_filename, {}, function (res) {
|
146
|
+
layer.close(index);
|
147
|
+
table.reload("file")
|
148
|
+
})
|
149
|
+
});
|
150
|
+
}
|
151
|
+
});
|
152
|
+
|
153
|
+
});
|
154
|
+
</script>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<div class="layui-inline">
|
6
6
|
<label class="layui-form-label">商机名称</label>
|
7
7
|
<div class="layui-input-inline">
|
8
|
-
<input type="text" name="name" autocomplete="off" class="layui-input">
|
8
|
+
<input type="text" name="name" autocomplete="off" class="layui-input" value="<%=params[:name] %>">
|
9
9
|
</div>
|
10
10
|
</div>
|
11
11
|
<div class="layui-inline">
|
@@ -114,9 +114,9 @@
|
|
114
114
|
elem: '#businesses_table',
|
115
115
|
url: '/missions/businesses',
|
116
116
|
where: {q: form.val('search_form')},
|
117
|
+
defaultToolbar: ['filter'],
|
117
118
|
toolbar: '#bussinessBar',
|
118
119
|
totalRow: true,//开启合并行
|
119
|
-
defaultToolbar: [],
|
120
120
|
cols: [
|
121
121
|
[
|
122
122
|
{
|
@@ -132,18 +132,18 @@
|
|
132
132
|
},
|
133
133
|
{
|
134
134
|
field: 'school',
|
135
|
-
width:
|
135
|
+
width: 150,
|
136
136
|
title: '单位',
|
137
137
|
},
|
138
138
|
{
|
139
139
|
field: 'department',
|
140
|
-
width:
|
140
|
+
width: 150,
|
141
141
|
title: '部门'
|
142
142
|
},
|
143
143
|
{
|
144
144
|
field: 'follow_ups_count',
|
145
145
|
title: '跟进',
|
146
|
-
width:
|
146
|
+
width: 60,
|
147
147
|
templet: '#show_follow',
|
148
148
|
totalRow: true,
|
149
149
|
},
|
@@ -155,12 +155,12 @@
|
|
155
155
|
// },
|
156
156
|
{
|
157
157
|
field: 'clazz',
|
158
|
-
width:
|
158
|
+
width: 80,
|
159
159
|
title: '类型'
|
160
160
|
},
|
161
161
|
{
|
162
162
|
field: 'stage',
|
163
|
-
width:
|
163
|
+
width: 90,
|
164
164
|
title: '阶段'
|
165
165
|
},
|
166
166
|
{
|
@@ -169,6 +169,16 @@
|
|
169
169
|
title: '招标时间',
|
170
170
|
sort: true
|
171
171
|
},
|
172
|
+
{
|
173
|
+
field: 'bidded_date',
|
174
|
+
width: 105,
|
175
|
+
title: '中标时间',
|
176
|
+
},
|
177
|
+
{
|
178
|
+
field: 'signed_date',
|
179
|
+
width: 105,
|
180
|
+
title: '签单时间',
|
181
|
+
},
|
172
182
|
{
|
173
183
|
field: 'reception_at',
|
174
184
|
width: 105,
|
@@ -191,17 +201,17 @@
|
|
191
201
|
},
|
192
202
|
{
|
193
203
|
field: 'place',
|
194
|
-
width:
|
204
|
+
width: 80,
|
195
205
|
title: '渠道'
|
196
206
|
},
|
197
207
|
{
|
198
208
|
field: 'source',
|
199
|
-
width:
|
209
|
+
width: 90,
|
200
210
|
title: '商机来源'
|
201
211
|
},
|
202
212
|
{
|
203
213
|
field: 'last_follow_person',
|
204
|
-
width:
|
214
|
+
width: 100,
|
205
215
|
title: '最新跟进人'
|
206
216
|
},
|
207
217
|
{
|
@@ -248,6 +258,12 @@
|
|
248
258
|
case 'edit':
|
249
259
|
edit(id);
|
250
260
|
break;
|
261
|
+
case 'file':
|
262
|
+
file(id, elem.data('name'));
|
263
|
+
break;
|
264
|
+
case 'time_line':
|
265
|
+
time_line(id, elem.data('name'));
|
266
|
+
break;
|
251
267
|
case 'delete':
|
252
268
|
deleteBusiness(id, elem.data('name'));
|
253
269
|
break;
|
@@ -292,6 +308,41 @@
|
|
292
308
|
layer.full(sindex);
|
293
309
|
});
|
294
310
|
}
|
311
|
+
function time_line(id,name) {
|
312
|
+
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + id);
|
313
|
+
var openWH = miniPage.getOpenWidthHeight();
|
314
|
+
sindex = layer.open({
|
315
|
+
title: '商机列表/'+name+'的跟进时间线',
|
316
|
+
type: 1,
|
317
|
+
shade: 0.2,
|
318
|
+
maxmin: true,
|
319
|
+
shadeClose: true,
|
320
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
321
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
322
|
+
content: content
|
323
|
+
});
|
324
|
+
$(window).on("resize", function () {
|
325
|
+
layer.full(sindex);
|
326
|
+
});
|
327
|
+
}
|
328
|
+
function file(id, name) {
|
329
|
+
id = id
|
330
|
+
var content = miniPage.getHrefContent('/missions/businesses/file?business_id=' + id);
|
331
|
+
var openWH = miniPage.getOpenWidthHeight();
|
332
|
+
sindex = layer.open({
|
333
|
+
title: '商机列表/'+name+'的附件信息',
|
334
|
+
type: 1,
|
335
|
+
shade: 0.2,
|
336
|
+
// maxmin: true,
|
337
|
+
shadeClose: true,
|
338
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
339
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
340
|
+
content: content
|
341
|
+
});
|
342
|
+
$(window).on("resize", function () {
|
343
|
+
// layer.full(sindex);
|
344
|
+
});
|
345
|
+
}
|
295
346
|
|
296
347
|
function month(id) {
|
297
348
|
var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + id);
|
@@ -533,6 +584,7 @@
|
|
533
584
|
});
|
534
585
|
} else if (obj.event === 'show_follow') {
|
535
586
|
business_id = obj.data.id
|
587
|
+
business_name = data.name
|
536
588
|
content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + id);
|
537
589
|
openWH = miniPage.getOpenWidthHeight();
|
538
590
|
index = layer.open({
|
@@ -14,6 +14,8 @@ json.data do
|
|
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
|
+
json.bidded_date d.last_follow_up&.bidded_date.to_s
|
18
|
+
json.signed_date d.last_follow_up&.signed_date.to_s
|
17
19
|
json.total_amount d.last_follow_up&.total_amount
|
18
20
|
json.return_money d.return_money
|
19
21
|
json.place d.last_follow_up&.place&.name
|
@@ -22,7 +24,7 @@ json.data do
|
|
22
24
|
json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
|
23
25
|
json.current_staff_id @current_admin.id
|
24
26
|
json.staff_id d.staff_id
|
25
|
-
json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s :
|
27
|
+
json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : d.created_at.to_s
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
@@ -42,6 +42,23 @@
|
|
42
42
|
placeholder="请选择日期">
|
43
43
|
</div>
|
44
44
|
</div>
|
45
|
+
<div class="layui-inline">
|
46
|
+
<label class="layui-form-label">中标时间</label>
|
47
|
+
<div class="layui-input-inline">
|
48
|
+
<input type="text" class="layui-input" name="bidded_date" autocomplete="off" id="invitation_at_add"
|
49
|
+
value="<%= @last_follow_up&.bidded_date%>"
|
50
|
+
placeholder="请选择日期">
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
<br>
|
54
|
+
<div class="layui-inline">
|
55
|
+
<label class="layui-form-label">签单时间</label>
|
56
|
+
<div class="layui-input-inline">
|
57
|
+
<input type="text" class="layui-input" name="signed_date" autocomplete="off" id="invitation_at_add"
|
58
|
+
value="<%= @last_follow_up&.signed_date%>"
|
59
|
+
placeholder="请选择日期">
|
60
|
+
</div>
|
61
|
+
</div>
|
45
62
|
<div class="layui-inline">
|
46
63
|
<label class="layui-form-label">验收时间</label>
|
47
64
|
<div class="layui-input-inline">
|
@@ -1,6 +1,8 @@
|
|
1
1
|
<script type="text/html" id="toolbarDemo_follow">
|
2
2
|
<div class="layui-btn-container">
|
3
3
|
<span class="table-label">跟进记录</span>
|
4
|
+
<span class="table-label" style="padding-left: 200px">温馨提示:仅可以在24小时之内,编辑/删除最新的跟进记录</span>
|
5
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="time_line"> 时间线视图>></button>
|
4
6
|
<% if can? :add_follow, EducodeSales::Business %>
|
5
7
|
<% if @current_admin.is_admin %>
|
6
8
|
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加跟进记录</button>
|
@@ -11,14 +13,16 @@
|
|
11
13
|
</div>
|
12
14
|
</script>
|
13
15
|
<div class="edit-table">
|
14
|
-
<
|
16
|
+
<div class="z-index">
|
17
|
+
<table class="layui-hide" id="sale_plan_follow_table" lay-filter="sale_plan_follow_table"></table>
|
18
|
+
</div>
|
15
19
|
<table class="layui-hide" id="unfinish_table" lay-filter="unfinish_table" style="min-height: 300px;"></table>
|
16
20
|
</div>
|
17
21
|
<script type="text/html" id="currentTableBar_follow">
|
18
22
|
<% if can? :follow, EducodeSales::Business %>
|
19
23
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="show">查看</a>
|
20
24
|
<% end %>
|
21
|
-
{{# if(d.is_latest){ }}
|
25
|
+
{{# if(d.is_latest && d.flag){ }}
|
22
26
|
<% if can? :update_follow, EducodeSales::Business %>
|
23
27
|
<% if @current_admin.is_admin %>
|
24
28
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
@@ -72,7 +76,7 @@
|
|
72
76
|
elem: '#sale_plan_follow_table',
|
73
77
|
url: '/missions/businesses/show_follow?id=' + parent.id ,
|
74
78
|
toolbar: '#toolbarDemo_follow',
|
75
|
-
defaultToolbar: [],
|
79
|
+
defaultToolbar: ['filter'],
|
76
80
|
cols: [
|
77
81
|
[
|
78
82
|
{
|
@@ -107,11 +111,27 @@
|
|
107
111
|
title: '关键人',
|
108
112
|
templet: '#add_keys'
|
109
113
|
},
|
114
|
+
{
|
115
|
+
field: 'money_plans_count',
|
116
|
+
width: 120,
|
117
|
+
title: '回款计划',
|
118
|
+
templet: '#edit_plan'
|
119
|
+
},
|
110
120
|
{
|
111
121
|
field: 'invitation_at',
|
112
122
|
width: 110,
|
113
123
|
title: '招标时间',
|
114
124
|
},
|
125
|
+
{
|
126
|
+
field: 'bidded_date',
|
127
|
+
width: 110,
|
128
|
+
title: '中标时间',
|
129
|
+
},
|
130
|
+
{
|
131
|
+
field: 'signed_date',
|
132
|
+
width: 110,
|
133
|
+
title: '签单时间',
|
134
|
+
},
|
115
135
|
{
|
116
136
|
field: 'reception_at',
|
117
137
|
width: 110,
|
@@ -137,12 +157,7 @@
|
|
137
157
|
width: 100,
|
138
158
|
title: '已回款',
|
139
159
|
},
|
140
|
-
|
141
|
-
field: 'money_plans_count',
|
142
|
-
width: 120,
|
143
|
-
title: '回款计划',
|
144
|
-
templet: '#edit_plan'
|
145
|
-
},
|
160
|
+
|
146
161
|
{
|
147
162
|
field: 'place',
|
148
163
|
width: 200,
|
@@ -201,6 +216,25 @@
|
|
201
216
|
$(window).on("resize", function () {
|
202
217
|
layer.full(index);
|
203
218
|
});
|
219
|
+
} else if (obj.event === 'time_line') { // 监听添加操作
|
220
|
+
layer.closeAll()
|
221
|
+
business_id = parent.business_id
|
222
|
+
business_name = parent.business_name
|
223
|
+
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + id);
|
224
|
+
var openWH = miniPage.getOpenWidthHeight();
|
225
|
+
sindex = layer.open({
|
226
|
+
title: '商机列表/'+ parent.business_name +'的跟进时间线',
|
227
|
+
type: 1,
|
228
|
+
shade: 0.2,
|
229
|
+
maxmin: true,
|
230
|
+
shadeClose: true,
|
231
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
232
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
233
|
+
content: content
|
234
|
+
});
|
235
|
+
$(window).on("resize", function () {
|
236
|
+
layer.full(sindex);
|
237
|
+
});
|
204
238
|
}
|
205
239
|
});
|
206
240
|
|
@@ -219,7 +253,7 @@
|
|
219
253
|
} else if (obj.event === 'show') { // 监听添加操作
|
220
254
|
var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + data.id);
|
221
255
|
var openWH = miniPage.getOpenWidthHeight();
|
222
|
-
|
256
|
+
show_index = layer.open({
|
223
257
|
title: '查看商机跟进记录',
|
224
258
|
type: 1,
|
225
259
|
shade: 0.2,
|
@@ -495,5 +529,8 @@
|
|
495
529
|
|
496
530
|
});
|
497
531
|
</script>
|
498
|
-
|
499
|
-
|
532
|
+
<style>
|
533
|
+
.z-index .layui-table-tool{
|
534
|
+
z-index: 10000; !important;
|
535
|
+
}
|
536
|
+
</style>
|
@@ -7,6 +7,8 @@ json.data do
|
|
7
7
|
json.teachers_count d.key_people_count
|
8
8
|
json.invitation_at d.invitation_at&.to_s(:date)
|
9
9
|
json.reception_at d.reception_at&.to_s(:date)
|
10
|
+
json.bidded_date d.bidded_date&.to_s(:date)
|
11
|
+
json.signed_date d.signed_date&.to_s(:date)
|
10
12
|
json.total_amount d.total_amount
|
11
13
|
json.actual_amount d.actual_amount
|
12
14
|
json.divide_amount d.divide_amount ? d.divide_amount : ""
|
@@ -15,6 +17,7 @@ json.data do
|
|
15
17
|
json.money_plans_count d.money_plans_count
|
16
18
|
json.money d.money_plans.where(clazz: 1).sum(:amount).round(2)
|
17
19
|
json.is_latest d.id == @latest&.id
|
20
|
+
json.flag d.created_at.present? ? (Time.now - d.created_at).to_f/3600 < 24 : false
|
18
21
|
end
|
19
22
|
end
|
20
23
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<h1 class="text-center m-t-20"><%= @follow_up.business.name %></h1>
|
2
2
|
<form class="layui-form form-value">
|
3
|
-
<div class="layui-form-item" style="padding: 25px">
|
3
|
+
<div class="layui-form-item" style="padding: 10px 25px 0;">
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label">单位:</label>
|
6
6
|
<div class="layui-input-inline">
|
@@ -33,6 +33,19 @@
|
|
33
33
|
<%= @follow_up.invitation_at.to_s %>
|
34
34
|
</div>
|
35
35
|
</div>
|
36
|
+
<div class="layui-inline">
|
37
|
+
<label class="layui-form-label">中标时间:</label>
|
38
|
+
<div class="layui-input-inline">
|
39
|
+
<%= @follow_up.bidded_date.to_s %>
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
<br>
|
43
|
+
<div class="layui-inline">
|
44
|
+
<label class="layui-form-label">签单时间:</label>
|
45
|
+
<div class="layui-input-inline">
|
46
|
+
<%= @follow_up.signed_date.to_s %>
|
47
|
+
</div>
|
48
|
+
</div>
|
36
49
|
<div class="layui-inline">
|
37
50
|
<label class="layui-form-label">验收时间:</label>
|
38
51
|
<div class="layui-input-inline">
|
@@ -96,4 +109,69 @@
|
|
96
109
|
</div>
|
97
110
|
</div>
|
98
111
|
</div>
|
99
|
-
</form>
|
112
|
+
</form>
|
113
|
+
<div style=" text-align:center;">
|
114
|
+
<div class="layui-btn-group">
|
115
|
+
|
116
|
+
<%if @pre_id != 0 %>
|
117
|
+
<button type="button" class="layui-btn" onclick="pre_follow()">上一条</button>
|
118
|
+
<%else %>
|
119
|
+
<button type="button" class="layui-btn layui-btn-disabled layui-btn-radius">上一条</button>
|
120
|
+
<%end %>
|
121
|
+
|
122
|
+
<%if @next_id != 0 %>
|
123
|
+
<button type="button" class="layui-btn" onclick="next_follow()">下一条</button>
|
124
|
+
<%else %>
|
125
|
+
<button type="button" class="layui-btn layui-btn-disabled layui-btn-radius">下一条</button>
|
126
|
+
<%end %>
|
127
|
+
|
128
|
+
</div>
|
129
|
+
</div>
|
130
|
+
|
131
|
+
<script type="text/javascript" charset="utf-8">
|
132
|
+
|
133
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
|
134
|
+
var $ = layui.jquery,
|
135
|
+
form = layui.form,
|
136
|
+
table = layui.table,
|
137
|
+
request = layui.request,
|
138
|
+
miniPage = layui.miniPage;
|
139
|
+
|
140
|
+
});
|
141
|
+
function pre_follow(){
|
142
|
+
layer.close(parent.show_index)
|
143
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + <%=@pre_id %>);
|
144
|
+
var openWH = miniPage.getOpenWidthHeight();
|
145
|
+
show_index = layer.open({
|
146
|
+
title: '查看商机跟进记录',
|
147
|
+
type: 1,
|
148
|
+
shade: 0.2,
|
149
|
+
maxmin: true,
|
150
|
+
shadeClose: true,
|
151
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
152
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
153
|
+
content: content
|
154
|
+
});
|
155
|
+
$(window).on("resize", function () {
|
156
|
+
layer.full(index);
|
157
|
+
});
|
158
|
+
}
|
159
|
+
function next_follow(){
|
160
|
+
layer.close(parent.show_index)
|
161
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + <%=@next_id %>);
|
162
|
+
var openWH = miniPage.getOpenWidthHeight();
|
163
|
+
show_index = layer.open({
|
164
|
+
title: '查看商机跟进记录',
|
165
|
+
type: 1,
|
166
|
+
shade: 0.2,
|
167
|
+
maxmin: true,
|
168
|
+
shadeClose: true,
|
169
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
170
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
171
|
+
content: content
|
172
|
+
});
|
173
|
+
$(window).on("resize", function () {
|
174
|
+
layer.full(index);
|
175
|
+
});
|
176
|
+
}
|
177
|
+
</script>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<div class="layui-btn-container" style="padding-right: 200px;padding-top: 10px">
|
2
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" onclick="demo()" >跟进记录列表>></button>
|
3
|
+
</div>
|
4
|
+
<div style="padding: 50px">
|
5
|
+
<ul class="layui-timeline">
|
6
|
+
<%if @follow_ups.present? %>
|
7
|
+
<%@follow_ups.each do |f| %>
|
8
|
+
<li class="layui-timeline-item">
|
9
|
+
<i class="layui-icon layui-timeline-axis"></i>
|
10
|
+
<div class="layui-timeline-content layui-text">
|
11
|
+
<h3 class="layui-timeline-title"><%=f.created_at %>---<%=f.staff.user.real_name %></h3>
|
12
|
+
<p>
|
13
|
+
最新进展:<%=f.description %>
|
14
|
+
<br>
|
15
|
+
团队建议:<%=f.advise %>
|
16
|
+
<br>
|
17
|
+
项目类型:<%=f.clazz.name %>
|
18
|
+
<br>
|
19
|
+
项目阶段:<%=f.stage.name %>
|
20
|
+
<br>
|
21
|
+
关键人:<% teacher_ids = f.key_person.present? ? f.key_person.pluck(:teacher_id) : [] %>
|
22
|
+
<%= EducodeSales::Teacher.where(id: teacher_ids).pluck(:name).join("、") %>
|
23
|
+
</p>
|
24
|
+
</div>
|
25
|
+
</li>
|
26
|
+
<%end %>
|
27
|
+
<%else %>
|
28
|
+
<h1 class="layui-timeline-title" style="text-align: center">暂无跟进记录</h1>
|
29
|
+
<%end %>
|
30
|
+
</ul>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<script type="text/javascript" charset="utf-8">
|
34
|
+
|
35
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
|
36
|
+
var $ = layui.jquery,
|
37
|
+
form = layui.form,
|
38
|
+
table = layui.table,
|
39
|
+
request = layui.request,
|
40
|
+
miniPage = layui.miniPage;
|
41
|
+
|
42
|
+
});
|
43
|
+
function demo(){
|
44
|
+
layer.closeAll()
|
45
|
+
business_id = parent.business_id
|
46
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + id);
|
47
|
+
var openWH = miniPage.getOpenWidthHeight();
|
48
|
+
sindex = layer.open({
|
49
|
+
title: '商机列表/'+ parent.business_name +'的跟进记录',
|
50
|
+
type: 1,
|
51
|
+
shade: 0.2,
|
52
|
+
maxmin: true,
|
53
|
+
shadeClose: true,
|
54
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
55
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
56
|
+
content: content
|
57
|
+
});
|
58
|
+
$(window).on("resize", function () {
|
59
|
+
layer.full(sindex);
|
60
|
+
});
|
61
|
+
}
|
62
|
+
</script>
|