educode_sales 0.5.5 → 0.5.9
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/assets/images/educode_sales//345/256/242/346/210/267/347/256/241/347/220/206.png +0 -0
- data/app/controllers/educode_sales/businesses_controller.rb +20 -1
- data/app/controllers/educode_sales/customer_extensions_controller.rb +17 -0
- data/app/controllers/educode_sales/customer_follows_controller.rb +41 -0
- data/app/controllers/educode_sales/customers_controller.rb +194 -0
- 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/roles_controller.rb +4 -1
- data/app/controllers/educode_sales/sale_trends_controller.rb +19 -9
- data/app/controllers/educode_sales/sales_controller.rb +3 -0
- data/app/controllers/educode_sales/teachers_controller.rb +41 -14
- data/app/models/educode_sales/customer.rb +4 -0
- data/app/models/educode_sales/customer_extension.rb +7 -0
- data/app/models/educode_sales/customer_follow.rb +5 -0
- data/app/models/educode_sales/permission.rb +2 -1
- data/app/models/educode_sales/role_area.rb +1 -0
- 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 +258 -0
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +69 -6
- data/app/views/educode_sales/businesses/index.html.erb +155 -66
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -1
- data/app/views/educode_sales/businesses/new.html.erb +3 -0
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +70 -6
- data/app/views/educode_sales/businesses/show_follow.html.erb +15 -10
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
- 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/customers/edit.html.erb +60 -0
- data/app/views/educode_sales/customers/edit_department.html.erb +52 -0
- data/app/views/educode_sales/customers/edit_follow_record.html.erb +50 -0
- data/app/views/educode_sales/customers/give.html.erb +51 -0
- data/app/views/educode_sales/customers/index.html.erb +485 -0
- data/app/views/educode_sales/customers/index.json.jbuilder +25 -0
- data/app/views/educode_sales/customers/new.html.erb +89 -0
- data/app/views/educode_sales/customers/new_department.html.erb +53 -0
- data/app/views/educode_sales/customers/new_follow_record.html.erb +54 -0
- data/app/views/educode_sales/customers/show_department.json.jbuilder +13 -0
- data/app/views/educode_sales/customers/show_follow.html.erb +439 -0
- data/app/views/educode_sales/customers/show_follow.json.jbuilder +13 -0
- data/app/views/educode_sales/customers/show_follow_record.html.erb +17 -0
- 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.json.jbuilder +1 -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/roles/edit.html.erb +8 -0
- data/app/views/educode_sales/sale_trends/trends.html.erb +2 -2
- data/app/views/educode_sales/sales/index.html.erb +58 -19
- data/app/views/educode_sales/sales/index.json.jbuilder +31 -16
- 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 +6 -3
- data/app/views/educode_sales/teachers/new.html.erb +55 -17
- data/app/views/educode_sales/teachers/show_follow.html.erb +10 -5
- data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -0
- data/app/views/layouts/educode_sales/application.html.erb +8 -1
- data/config/routes.rb +26 -0
- data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +15 -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/db/migrate/20211214100803_create_customer_extensions.rb +9 -0
- data/db/migrate/20211215025029_create_educode_sales_customer_follows.rb +12 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +30 -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" value="<%=params[:school] %>" 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,60 @@
|
|
109
123
|
range: true
|
110
124
|
});
|
111
125
|
|
126
|
+
var is_show = <%=params[:name].present? || params[:clazz_id].present? || params[:place_id].present? || params[:school].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
|
+
index_place_list.setValue(gon.place)
|
178
|
+
|
179
|
+
|
112
180
|
table = layui.table;
|
113
181
|
table.render({
|
114
182
|
elem: '#businesses_table',
|
@@ -128,17 +196,20 @@
|
|
128
196
|
{
|
129
197
|
field: 'name',
|
130
198
|
width: 170,
|
131
|
-
|
199
|
+
title: '名称',
|
200
|
+
templet:'<div><span title="{{d.name}}">{{d.name}}</span></div>'
|
132
201
|
},
|
133
202
|
{
|
134
203
|
field: 'school',
|
135
204
|
width: 150,
|
136
205
|
title: '单位',
|
206
|
+
templet:'<div><span title="{{d.school}}">{{d.school}}</span></div>'
|
137
207
|
},
|
138
208
|
{
|
139
209
|
field: 'department',
|
140
210
|
width: 150,
|
141
|
-
title: '部门'
|
211
|
+
title: '部门',
|
212
|
+
templet:'<div><span title="{{d.department}}">{{d.department}}</span></div>'
|
142
213
|
},
|
143
214
|
{
|
144
215
|
field: 'follow_ups_count',
|
@@ -156,7 +227,8 @@
|
|
156
227
|
{
|
157
228
|
field: 'clazz',
|
158
229
|
width: 80,
|
159
|
-
title: '类型'
|
230
|
+
title: '类型',
|
231
|
+
templet:'<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>'
|
160
232
|
},
|
161
233
|
{
|
162
234
|
field: 'stage',
|
@@ -210,8 +282,8 @@
|
|
210
282
|
},
|
211
283
|
{
|
212
284
|
field: 'place',
|
213
|
-
width:
|
214
|
-
title: '渠道'
|
285
|
+
width: 160,
|
286
|
+
title: '渠道',
|
215
287
|
},
|
216
288
|
{
|
217
289
|
field: 'source',
|
@@ -403,7 +475,8 @@
|
|
403
475
|
|
404
476
|
// 监听搜索操作
|
405
477
|
form.on('submit(search_bussiness)', function (data) {
|
406
|
-
|
478
|
+
data.field.place_id = index_place_list.getValue('valueStr');
|
479
|
+
search = data.field
|
407
480
|
console.log(search);
|
408
481
|
table.reload('businesses_table', {
|
409
482
|
page: {
|
@@ -411,6 +484,15 @@
|
|
411
484
|
},
|
412
485
|
where: {q: search, sort: sort}
|
413
486
|
}, 'data');
|
487
|
+
table.reload('teachers_table', {
|
488
|
+
page: {
|
489
|
+
curr: 1
|
490
|
+
},
|
491
|
+
where: {q: search, sort: sort}
|
492
|
+
}, 'data');
|
493
|
+
form.val('search_follows', {
|
494
|
+
name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area
|
495
|
+
})
|
414
496
|
|
415
497
|
return false;
|
416
498
|
});
|
@@ -626,4 +708,11 @@
|
|
626
708
|
.layui-table-tool-temp{
|
627
709
|
padding-right: 30px; !important;
|
628
710
|
}
|
711
|
+
.layui-table-fixed .layui-table-body {
|
712
|
+
height: auto!important;
|
713
|
+
}
|
714
|
+
.layui-table-fixed.layui-hide {
|
715
|
+
display: block!important;
|
716
|
+
}
|
717
|
+
|
629
718
|
</style>
|
@@ -10,7 +10,7 @@ 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
|
@@ -10,6 +10,9 @@
|
|
10
10
|
<label class="layui-form-label required">单位部门</label>
|
11
11
|
<div class="layui-input-block" id="add_department" style="width: 300px;"></div>
|
12
12
|
</div>
|
13
|
+
<div class="layui-inline" >
|
14
|
+
<a href="/missions/customers" style=" color: #0000FF">添加单位/部门</a>
|
15
|
+
</div>
|
13
16
|
<br>
|
14
17
|
<div class="layui-inline" style="padding-top: 20px">
|
15
18
|
<label class="layui-form-label ">商机来源</label>
|
@@ -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 required">所属年度</label>
|
101
|
+
<div class="layui-input-inline">
|
102
|
+
<input type="text" class="layui-input" name="year" autocomplete="off" lay-verify="required" 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: [
|
@@ -117,6 +117,11 @@
|
|
117
117
|
title: '回款计划',
|
118
118
|
templet: '#edit_plan'
|
119
119
|
},
|
120
|
+
{
|
121
|
+
field: 'description',
|
122
|
+
width: 120,
|
123
|
+
title: '最新进展',
|
124
|
+
},
|
120
125
|
{
|
121
126
|
field: 'invitation_at',
|
122
127
|
width: 110,
|
@@ -160,7 +165,7 @@
|
|
160
165
|
|
161
166
|
{
|
162
167
|
field: 'place',
|
163
|
-
width:
|
168
|
+
width: 400,
|
164
169
|
title: '渠道',
|
165
170
|
},
|
166
171
|
{
|
@@ -198,7 +203,7 @@
|
|
198
203
|
table.on('toolbar(sale_plan_follow_table)', function (obj) {
|
199
204
|
if (obj.event === 'add') { // 监听添加操作
|
200
205
|
business_id = parent.business_id
|
201
|
-
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.
|
206
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.business_id);
|
202
207
|
var openWH = miniPage.getOpenWidthHeight();
|
203
208
|
sale_plan_index = layer.open({
|
204
209
|
title: '添加商机跟进记录',
|
@@ -220,7 +225,7 @@
|
|
220
225
|
layer.closeAll()
|
221
226
|
business_id = parent.business_id
|
222
227
|
business_name = parent.business_name
|
223
|
-
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' +
|
228
|
+
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + parent.business_id);
|
224
229
|
var openWH = miniPage.getOpenWidthHeight();
|
225
230
|
sindex = layer.open({
|
226
231
|
title: '商机列表/'+ parent.business_name +'的跟进时间线',
|
@@ -248,6 +253,7 @@
|
|
248
253
|
layer.close(index);
|
249
254
|
table.reload("businesses_table");
|
250
255
|
table.reload("sale_plan_follow_table");
|
256
|
+
table.reload('teachers_table')
|
251
257
|
})
|
252
258
|
});
|
253
259
|
} else if (obj.event === 'show') { // 监听添加操作
|
@@ -335,34 +341,33 @@
|
|
335
341
|
// 未完成计划
|
336
342
|
table.render({
|
337
343
|
elem: '#unfinish_table',
|
338
|
-
url: '/missions/businesses/' + parent.
|
344
|
+
url: '/missions/businesses/' + parent.business_id + "/unfinish_plans",
|
339
345
|
toolbar: '#unfinish_table_tabar',
|
340
346
|
defaultToolbar: [],
|
341
347
|
cols: [
|
342
348
|
[
|
343
349
|
{
|
344
350
|
field: 'id',
|
345
|
-
width:
|
351
|
+
width: 60,
|
346
352
|
title:'序号',type: 'numbers',
|
347
353
|
},
|
348
354
|
{
|
349
355
|
field: 'staff',
|
350
|
-
width:
|
356
|
+
width: 100,
|
351
357
|
title: '姓名'
|
352
358
|
},
|
353
359
|
{
|
354
360
|
field: 'month',
|
355
|
-
width:
|
361
|
+
width: 100,
|
356
362
|
title: '月份',
|
357
363
|
},
|
358
364
|
{
|
359
365
|
field: 'weekly',
|
360
|
-
width:
|
366
|
+
width: 100,
|
361
367
|
title: '周次'
|
362
368
|
},
|
363
369
|
{
|
364
370
|
field: 'content',
|
365
|
-
width: 300,
|
366
371
|
title: '计划内容'
|
367
372
|
},
|
368
373
|
{
|
@@ -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,60 @@
|
|
1
|
+
<%#= Gon::Base.render_data %>
|
2
|
+
<form class="layui-form " action="">
|
3
|
+
<div class="layui-form-item" style="padding: 25px">
|
4
|
+
<div class="layui-form-item">
|
5
|
+
<label class="layui-form-label required">负责区域</label>
|
6
|
+
<div class="layui-input-block">
|
7
|
+
<div id="area_edit" class="demo-transfer"></div>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="layui-inline" style="padding-left: 30px">
|
11
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="submits">提交
|
12
|
+
</button>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</form>
|
16
|
+
|
17
|
+
|
18
|
+
<script>
|
19
|
+
|
20
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
|
21
|
+
var form = layui.form,
|
22
|
+
layer = layui.layer,
|
23
|
+
table = layui.table,
|
24
|
+
transfer = layui.transfer,
|
25
|
+
laytpl = layui.laytpl,
|
26
|
+
request = layui.request,
|
27
|
+
$ = layui.$;
|
28
|
+
|
29
|
+
form.render();
|
30
|
+
|
31
|
+
// 当前弹出层,防止ID被覆盖
|
32
|
+
var parentIndex = layer.index;
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
//监听提交
|
38
|
+
form.on('submit(submits)', function (data) {
|
39
|
+
|
40
|
+
var area_ids = []
|
41
|
+
layui.each(transfer.getData('area_list'), function (i, v) {
|
42
|
+
area_ids.push(v.value)
|
43
|
+
})
|
44
|
+
if (area_ids.length == 0) {
|
45
|
+
layer.alert("请选择负责区域");
|
46
|
+
return false;
|
47
|
+
}
|
48
|
+
data.field['area_ids'] = area_ids;
|
49
|
+
request.authPut("missions/places/" + data.field.id, data.field, function (res) {
|
50
|
+
if (res.success == false) {
|
51
|
+
layer.alert(res.msg)
|
52
|
+
} else {
|
53
|
+
layer.closeAll();
|
54
|
+
table.reload('place')
|
55
|
+
}
|
56
|
+
})
|
57
|
+
return false;
|
58
|
+
});
|
59
|
+
});
|
60
|
+
</script>
|