educode_sales 0.9.55 → 0.9.56
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/assessments_controller.rb +12 -5
- data/app/controllers/educode_sales/businesses_controller.rb +19 -3
- data/app/models/educode_sales/assessments_setting.rb +29 -13
- data/app/views/educode_sales/assessments/_finished.html.erb +6 -6
- data/app/views/educode_sales/assessments/_setup.html.erb +294 -66
- data/app/views/educode_sales/assessments/edit.html.erb +233 -121
- data/app/views/educode_sales/assessments/index.json.jbuilder +22 -1
- data/app/views/educode_sales/assessments/new.html.erb +259 -105
- data/app/views/educode_sales/businesses/_contract.html.erb +1007 -0
- data/app/views/educode_sales/businesses/get_export_data.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/index.html.erb +58 -8
- data/app/views/educode_sales/businesses/index.json.jbuilder +2 -1
- data/app/views/educode_sales/teachers/_index.html.erb +1 -1
- data/app/views/educode_sales/teachers/edit.html.erb +0 -7
- data/app/views/educode_sales/teachers/index.json.jbuilder +2 -2
- data/app/views/educode_sales/teachers/new.html.erb +0 -6
- data/db/migrate/20230306131055_add_score_to_assessments_settings.rb +26 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +8 -7
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -0,0 +1,1007 @@
|
|
1
|
+
<div class="min-height-table">
|
2
|
+
<div style="margin: 10px 10px 10px 10px">
|
3
|
+
<form class="layui-form layui-form-pane" lay-filter="search_form">
|
4
|
+
<div class="layui-form-item">
|
5
|
+
<div class="layui-inline">
|
6
|
+
<label class="layui-form-label">商机名称</label>
|
7
|
+
<div class="layui-input-inline">
|
8
|
+
<input type="text" name="name" class="layui-input" value="">
|
9
|
+
<input type="text" style="display: none" name="place_id" class="layui-input" value="<%=params[:place_id] %>">
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="layui-inline">
|
13
|
+
<label class="layui-form-label">单位</label>
|
14
|
+
<div class="layui-input-inline">
|
15
|
+
<input type="text" name="department" value="<%=params[:school] %>" class="layui-input">
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<div class="layui-inline">
|
19
|
+
<label class="layui-form-label">最新跟进人</label>
|
20
|
+
<div class="layui-input-inline">
|
21
|
+
<div id="contract_staffs_id" style="width: 190px;"></div>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
<div class="layui-inline">
|
25
|
+
<label class="layui-form-label">商机变化</label>
|
26
|
+
<div class="layui-input-inline">
|
27
|
+
<select name="clazz_changes">
|
28
|
+
<option value=""></option>
|
29
|
+
<option value="1">商机降级</option>
|
30
|
+
<option value="2">商机晋级</option>
|
31
|
+
<option value="3">商机降级 A-X</option>
|
32
|
+
<option value="4">商机降级 AB-X</option>
|
33
|
+
<option value="5">商机降级 ABC-X</option>
|
34
|
+
<option value="6">商机晋级 B-A</option>
|
35
|
+
<option value="7">商机晋级 BC-A</option>
|
36
|
+
<option value="8">商机晋级 BCD-A</option>
|
37
|
+
</select>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
41
|
+
<label class="layui-form-label">项目类型</label>
|
42
|
+
<div class="layui-input-inline">
|
43
|
+
<div id="contract_business_type" style="width: 190px;"></div>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
47
|
+
<label class="layui-form-label">项目阶段</label>
|
48
|
+
<div class="layui-input-inline">
|
49
|
+
<div id="contract_business_step" style="width: 190px;"></div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
53
|
+
<label class="layui-form-label">渠道名称</label>
|
54
|
+
<div class="layui-input-inline">
|
55
|
+
<div id="contract_index_place" style="width: 190px;"></div>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
59
|
+
<label class="layui-form-label">区域</label>
|
60
|
+
<div class="layui-input-inline">
|
61
|
+
<%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
65
|
+
<label class="layui-form-label">所属年度</label>
|
66
|
+
<div class="layui-input-inline">
|
67
|
+
<%= select_tag "business_year", options_for_select((2015..Time.now.year).to_a.reverse, params[:business_year]), { include_blank: true } %>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
71
|
+
<label class="layui-form-label">招标时间</label>
|
72
|
+
<div class="layui-input-inline">
|
73
|
+
<input type="text" class="layui-input" id="invitation_at" name="invitation_at" placeholder=" - " autocomplete="off">
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
77
|
+
<label class="layui-form-label">中标时间</label>
|
78
|
+
<div class="layui-input-inline">
|
79
|
+
<input type="text" class="layui-input" id="bidded_date" name="bidded_date" placeholder=" - " autocomplete="off">
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
83
|
+
<label class="layui-form-label">签单时间</label>
|
84
|
+
<div class="layui-input-inline">
|
85
|
+
<input type="text" class="layui-input" id="signed_date" name="signed_date" placeholder=" - " autocomplete="off">
|
86
|
+
</div>
|
87
|
+
</div>
|
88
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
89
|
+
<label class="layui-form-label">回款时间</label>
|
90
|
+
<div class="layui-input-inline">
|
91
|
+
<input type="text" class="layui-input" id="date_at" name="date_at" placeholder=" - " autocomplete="off">
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
95
|
+
<label class="layui-form-label">创建时间</label>
|
96
|
+
<div class="layui-input-inline">
|
97
|
+
<input type="text" class="layui-input" id="date" name="date" placeholder=" - " autocomplete="off">
|
98
|
+
</div>
|
99
|
+
</div>
|
100
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
101
|
+
<label class="layui-form-label">部署类型</label>
|
102
|
+
<div class="layui-input-inline">
|
103
|
+
<select name="o_business_deployment">
|
104
|
+
<option value=""></option>
|
105
|
+
<option value="1">公有云</option>
|
106
|
+
<option value="2">私有云</option>
|
107
|
+
<option value="3">混合云</option>
|
108
|
+
</select>
|
109
|
+
</div>
|
110
|
+
</div>
|
111
|
+
<div class="layui-inline">
|
112
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
113
|
+
</button>
|
114
|
+
<button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness_contract">搜索
|
115
|
+
</button>
|
116
|
+
<a style="padding-left: 20px;color: #0000FF" href="javascript:;" type="submit" class="" lay-submit lay-filter="show_hide_contract">高级搜索
|
117
|
+
</a>
|
118
|
+
</div>
|
119
|
+
</div>
|
120
|
+
</form>
|
121
|
+
</div>
|
122
|
+
<div id="contact_table_wraper">
|
123
|
+
<table class="layui-hide" id="contact_table" lay-filter="contact_table"></table>
|
124
|
+
</div>
|
125
|
+
</div>
|
126
|
+
|
127
|
+
|
128
|
+
<script>
|
129
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown','laytpl'], function () {
|
130
|
+
var $ = layui.jquery,
|
131
|
+
form = layui.form,
|
132
|
+
request = layui.request,
|
133
|
+
miniPage = layui.miniPage,
|
134
|
+
dropdown = layui.dropdown,
|
135
|
+
laydate = layui.laydate;
|
136
|
+
var openWH = miniPage.getOpenWidthHeight();
|
137
|
+
laydate.render({
|
138
|
+
elem: '#date',
|
139
|
+
range: true
|
140
|
+
});
|
141
|
+
laydate.render({
|
142
|
+
elem: '#invitation_at',
|
143
|
+
range: true
|
144
|
+
});
|
145
|
+
|
146
|
+
laydate.render({
|
147
|
+
elem: '#bidded_date',
|
148
|
+
range: true,
|
149
|
+
value: gon.bidded_date
|
150
|
+
});
|
151
|
+
laydate.render({
|
152
|
+
elem: '#signed_date',
|
153
|
+
range: true,
|
154
|
+
value: gon.signed_date
|
155
|
+
});
|
156
|
+
|
157
|
+
laydate.render({
|
158
|
+
elem: '#date_at',
|
159
|
+
range: true,
|
160
|
+
value: gon.date_at
|
161
|
+
});
|
162
|
+
|
163
|
+
|
164
|
+
var business_type_list = xmSelect.render({
|
165
|
+
el: '#contract_business_type',
|
166
|
+
data: gon.business_type
|
167
|
+
})
|
168
|
+
|
169
|
+
var staff_list = xmSelect.render({
|
170
|
+
el: '#contract_staffs_id',
|
171
|
+
data: gon.staffs,
|
172
|
+
filterable: true,
|
173
|
+
radio: true,
|
174
|
+
})
|
175
|
+
|
176
|
+
var business_step_list = xmSelect.render({
|
177
|
+
el: '#contract_business_step',
|
178
|
+
data: gon.business_step
|
179
|
+
})
|
180
|
+
var index_place_list = xmSelect.render({
|
181
|
+
el: '#contract_index_place',
|
182
|
+
model: {
|
183
|
+
icon: 'hidden',
|
184
|
+
label: {
|
185
|
+
type: 'text',
|
186
|
+
text: {
|
187
|
+
//左边拼接的字符
|
188
|
+
left: '',
|
189
|
+
//右边拼接的字符
|
190
|
+
right: '',
|
191
|
+
//中间的分隔符
|
192
|
+
separator: ', ',
|
193
|
+
},
|
194
|
+
}
|
195
|
+
},
|
196
|
+
remoteSearch: true,
|
197
|
+
clickClose: true,
|
198
|
+
delay: 1000,
|
199
|
+
paging: true,
|
200
|
+
radio: true,
|
201
|
+
pageRemote: true,
|
202
|
+
filterable: true,
|
203
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
204
|
+
$.ajax( '/missions/sales_place', {
|
205
|
+
method: 'get',
|
206
|
+
data: {
|
207
|
+
q: val,
|
208
|
+
page: pageIndex
|
209
|
+
},
|
210
|
+
dataType: 'json',
|
211
|
+
success: function (res) {
|
212
|
+
var data = res.data;
|
213
|
+
if (res.code == 0) {
|
214
|
+
cb(res.data, res.count);
|
215
|
+
} else {
|
216
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
217
|
+
}
|
218
|
+
}
|
219
|
+
})
|
220
|
+
}
|
221
|
+
})
|
222
|
+
index_place_list.setValue(gon.place)
|
223
|
+
|
224
|
+
var data = form.val("search_form");
|
225
|
+
data.business_year = gon.business_year;
|
226
|
+
data.business_type = business_type_list.getValue('valueStr')
|
227
|
+
data.business_step = business_step_list.getValue('valueStr');
|
228
|
+
data.staff_id = staff_list.getValue('valueStr');
|
229
|
+
data.contract = 'contract';
|
230
|
+
|
231
|
+
table = layui.table;
|
232
|
+
var cols_table = [
|
233
|
+
[
|
234
|
+
{
|
235
|
+
field: 'id',
|
236
|
+
width: 60,
|
237
|
+
title: '序号', type: 'numbers',
|
238
|
+
totalRowText: '合计',
|
239
|
+
fixed: "left"
|
240
|
+
},
|
241
|
+
{
|
242
|
+
field: 'number',
|
243
|
+
width: 120,
|
244
|
+
title: '编号',
|
245
|
+
fixed: 'left',
|
246
|
+
hide: gon.filter.number
|
247
|
+
},
|
248
|
+
{
|
249
|
+
field: 'name',
|
250
|
+
width: 170,
|
251
|
+
title: '商机名称',
|
252
|
+
templet: '<div><a href="javascript:void(0);" class="layui-table-link" lay-event="show_business"><span title="{{d.name}}">{{d.name}}</span></a></div>',
|
253
|
+
fixed: 'left',
|
254
|
+
hide: gon.filter.name
|
255
|
+
},
|
256
|
+
{
|
257
|
+
field: 'area',
|
258
|
+
width: 100,
|
259
|
+
title: '地域',
|
260
|
+
hide: gon.filter.area
|
261
|
+
},
|
262
|
+
{
|
263
|
+
field: 'school',
|
264
|
+
width: 150,
|
265
|
+
title: '单位',
|
266
|
+
templet: '#school_name',
|
267
|
+
hide: gon.filter.school
|
268
|
+
},
|
269
|
+
{
|
270
|
+
field: 'property',
|
271
|
+
width: 150,
|
272
|
+
title: '客户类型',
|
273
|
+
hide: gon.filter.property
|
274
|
+
},
|
275
|
+
{
|
276
|
+
field: 'department',
|
277
|
+
width: 150,
|
278
|
+
title: '部门',
|
279
|
+
templet: '<div><span title="{{d.department}}">{{d.department}}</span></div>',
|
280
|
+
hide: gon.filter.department
|
281
|
+
},
|
282
|
+
{
|
283
|
+
field: 'follow_ups_count',
|
284
|
+
title: '跟进',
|
285
|
+
width: 60,
|
286
|
+
templet: '#show_follow',
|
287
|
+
totalRow: true,
|
288
|
+
hide: gon.filter.follow_ups_count
|
289
|
+
},
|
290
|
+
{
|
291
|
+
field: 'clazz',
|
292
|
+
width: 80,
|
293
|
+
title: '类型',
|
294
|
+
templet: "<div><span title='{{d.clazz}}' class='changed-{{d.clazz_changed}}'>{{d.clazz}}</span></div>",
|
295
|
+
hide: gon.filter.clazz
|
296
|
+
},
|
297
|
+
{
|
298
|
+
field: 'stage',
|
299
|
+
width: 90,
|
300
|
+
title: '阶段',
|
301
|
+
hide: gon.filter.stage
|
302
|
+
},
|
303
|
+
{
|
304
|
+
field: 'staff_manages',
|
305
|
+
width: 150,
|
306
|
+
title: '销售经理',
|
307
|
+
hide: gon.filter.staff_manages
|
308
|
+
},
|
309
|
+
{
|
310
|
+
field: 'source',
|
311
|
+
width: 90,
|
312
|
+
title: '商机来源',
|
313
|
+
hide: gon.filter.source
|
314
|
+
},
|
315
|
+
{
|
316
|
+
field: 'last_follow_person',
|
317
|
+
width: 100,
|
318
|
+
title: '最新跟进人',
|
319
|
+
hide: gon.filter.last_follow_person
|
320
|
+
},
|
321
|
+
{
|
322
|
+
field: 'no_followup_days',
|
323
|
+
width: 100,
|
324
|
+
title: '无跟进天数',
|
325
|
+
hide: gon.filter.no_followup_days
|
326
|
+
},
|
327
|
+
{
|
328
|
+
field: 'created_at',
|
329
|
+
width: 200,
|
330
|
+
title: '商机创建时间',
|
331
|
+
sort: true,
|
332
|
+
hide: gon.filter.created_at
|
333
|
+
},
|
334
|
+
{
|
335
|
+
field: 'latest_time',
|
336
|
+
width: 200,
|
337
|
+
title: '最新跟进时间',
|
338
|
+
sort: true,
|
339
|
+
hide: gon.filter.latest_time
|
340
|
+
},
|
341
|
+
{
|
342
|
+
field: 'invitation_at',
|
343
|
+
width: 105,
|
344
|
+
title: '招标时间',
|
345
|
+
sort: true,
|
346
|
+
hide: gon.filter.invitation_at
|
347
|
+
},
|
348
|
+
{
|
349
|
+
field: 'bidded_date',
|
350
|
+
width: 105,
|
351
|
+
title: '中标时间',
|
352
|
+
sort: true,
|
353
|
+
hide: gon.filter.bidded_date
|
354
|
+
},
|
355
|
+
{
|
356
|
+
field: 'signed_date',
|
357
|
+
width: 105,
|
358
|
+
title: '签单时间',
|
359
|
+
sort: true,
|
360
|
+
hide: gon.filter.signed_date
|
361
|
+
},
|
362
|
+
{
|
363
|
+
field: 'reception_at',
|
364
|
+
width: 105,
|
365
|
+
title: '验收时间',
|
366
|
+
sort: true,
|
367
|
+
hide: gon.filter.reception_at
|
368
|
+
},
|
369
|
+
{
|
370
|
+
field: 'service_end_time',
|
371
|
+
width: 200,
|
372
|
+
title: '服务期',
|
373
|
+
sort: true,
|
374
|
+
hide: gon.filter.service_end_time
|
375
|
+
},
|
376
|
+
{
|
377
|
+
field: 'o_business_deployment',
|
378
|
+
width: 150,
|
379
|
+
title: '部署类型',
|
380
|
+
sort: true,
|
381
|
+
hide: gon.filter.o_business_deployment
|
382
|
+
},
|
383
|
+
{
|
384
|
+
field: 'budget_amount',
|
385
|
+
width: 105,
|
386
|
+
title: '预算金额',
|
387
|
+
totalRow: true,
|
388
|
+
sort: true,
|
389
|
+
hide: gon.filter.budget_amount
|
390
|
+
},
|
391
|
+
{
|
392
|
+
field: 'total_amount',
|
393
|
+
width: 100,
|
394
|
+
title: '中标额',
|
395
|
+
totalRow: true,
|
396
|
+
sort: true,
|
397
|
+
hide: gon.filter.total_amount
|
398
|
+
},
|
399
|
+
{
|
400
|
+
field: 'actual_amount',
|
401
|
+
width: 100,
|
402
|
+
title: '合同额',
|
403
|
+
totalRow: true,
|
404
|
+
sort: true,
|
405
|
+
hide: gon.filter.actual_amount
|
406
|
+
},
|
407
|
+
{
|
408
|
+
field: 'return_money',
|
409
|
+
width: 100,
|
410
|
+
title: '回款',
|
411
|
+
sort: true,
|
412
|
+
totalRow: true,
|
413
|
+
hide: gon.filter.return_money
|
414
|
+
},
|
415
|
+
{
|
416
|
+
field: 'wait_return_money',
|
417
|
+
width: 100,
|
418
|
+
title: '待回款',
|
419
|
+
sort: true,
|
420
|
+
totalRow: true,
|
421
|
+
hide: gon.filter.wait_return_money
|
422
|
+
},
|
423
|
+
{
|
424
|
+
field: 'return_money_days',
|
425
|
+
width: 150,
|
426
|
+
title: '首次回款周期(天)',
|
427
|
+
hide: gon.filter.return_money_days
|
428
|
+
},
|
429
|
+
{
|
430
|
+
field: 'divide_rate',
|
431
|
+
width: 160,
|
432
|
+
title: '渠道分成比例',
|
433
|
+
sort: true,
|
434
|
+
hide: gon.filter.divide_rate
|
435
|
+
},
|
436
|
+
{
|
437
|
+
field: 'divide_money',
|
438
|
+
width: 160,
|
439
|
+
title: '渠道分成金额',
|
440
|
+
sort: true,
|
441
|
+
hide: gon.filter.divide_money
|
442
|
+
},
|
443
|
+
{
|
444
|
+
field: 'place',
|
445
|
+
width: 160,
|
446
|
+
title: '渠道',
|
447
|
+
hide: gon.filter.place
|
448
|
+
},
|
449
|
+
{
|
450
|
+
field: 'sale_way',
|
451
|
+
width: 160,
|
452
|
+
title: '销售方式',
|
453
|
+
hide: gon.filter.sale_way
|
454
|
+
},
|
455
|
+
{
|
456
|
+
field: 'year',
|
457
|
+
width: 105,
|
458
|
+
title: '所属年度',
|
459
|
+
sort: true,
|
460
|
+
hide: gon.filter.year
|
461
|
+
},
|
462
|
+
{
|
463
|
+
field: 'followed',
|
464
|
+
templet:function(d){
|
465
|
+
if (d.followed==1){
|
466
|
+
return '<i class="layui-icon" style="color: goldenrod"></i> '
|
467
|
+
}
|
468
|
+
else return ''
|
469
|
+
},
|
470
|
+
width: 105,
|
471
|
+
title: '关注',
|
472
|
+
align: "center",
|
473
|
+
hide: gon.filter.followed
|
474
|
+
|
475
|
+
},
|
476
|
+
// {
|
477
|
+
// title: '操作',
|
478
|
+
// minWidth: 220,
|
479
|
+
// toolbar: '#currentTableBar',
|
480
|
+
// align: "center",
|
481
|
+
// fixed: 'right'
|
482
|
+
// }
|
483
|
+
]
|
484
|
+
]
|
485
|
+
|
486
|
+
var business_table = table.render({
|
487
|
+
elem: '#contact_table',
|
488
|
+
url: '/missions/businesses',
|
489
|
+
autoSort: false,
|
490
|
+
where: {q: data},
|
491
|
+
defaultToolbar: ['filter'],
|
492
|
+
title: '商机数据表',
|
493
|
+
totalRow: true,//开启合并行
|
494
|
+
cols: cols_table,
|
495
|
+
|
496
|
+
limit: 20,
|
497
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
498
|
+
page: true,
|
499
|
+
skin: 'line',
|
500
|
+
done: function (res, curr, coun) {
|
501
|
+
exportData=res.data;
|
502
|
+
drowpdwonRender();
|
503
|
+
export_drowpdwonRender();
|
504
|
+
}
|
505
|
+
});
|
506
|
+
|
507
|
+
var dropmenu = gon.menus;
|
508
|
+
var dropmenu2=JSON.parse(JSON.stringify(dropmenu));
|
509
|
+
var export_dropmenu = gon.export_menus;
|
510
|
+
dropmenu2[dropmenu2.findIndex(function (elem)
|
511
|
+
{return elem.title.includes("关注")})].title="取消关注";
|
512
|
+
|
513
|
+
drowpdwonRender = function() {
|
514
|
+
dropdown.render({
|
515
|
+
elem: '.more-btn1',
|
516
|
+
data: dropmenu,//dropmenu,
|
517
|
+
click: function(data, othis){
|
518
|
+
var elem = $(this.elem);
|
519
|
+
id = elem.data('id');
|
520
|
+
|
521
|
+
switch (data.event) {
|
522
|
+
case 'week':
|
523
|
+
week(id);
|
524
|
+
break;
|
525
|
+
case 'month':
|
526
|
+
month(id);
|
527
|
+
break;
|
528
|
+
case 'edit':
|
529
|
+
edit(id);
|
530
|
+
break;
|
531
|
+
case 'file':
|
532
|
+
file(id, elem.data('name'));
|
533
|
+
break;
|
534
|
+
case 'time_line':
|
535
|
+
time_line(id, elem.data('name'));
|
536
|
+
break;
|
537
|
+
case 'delete':
|
538
|
+
deleteBusiness(id, elem.data('name'));
|
539
|
+
break;
|
540
|
+
case 'following':
|
541
|
+
following(id);
|
542
|
+
break;
|
543
|
+
}
|
544
|
+
}
|
545
|
+
});
|
546
|
+
dropdown.render({
|
547
|
+
elem: '.more-btn2',
|
548
|
+
data: dropmenu2,//dropmenu,
|
549
|
+
click: function(data, othis){
|
550
|
+
var elem = $(this.elem);
|
551
|
+
id = elem.data('id');
|
552
|
+
|
553
|
+
switch (data.event) {
|
554
|
+
case 'week':
|
555
|
+
week(id);
|
556
|
+
break;
|
557
|
+
case 'month':
|
558
|
+
month(id);
|
559
|
+
break;
|
560
|
+
case 'edit':
|
561
|
+
edit(id);
|
562
|
+
break;
|
563
|
+
case 'file':
|
564
|
+
file(id, elem.data('name'));
|
565
|
+
break;
|
566
|
+
case 'time_line':
|
567
|
+
time_line(id, elem.data('name'));
|
568
|
+
break;
|
569
|
+
case 'delete':
|
570
|
+
deleteBusiness(id, elem.data('name'));
|
571
|
+
break;
|
572
|
+
case 'following':
|
573
|
+
following(id);
|
574
|
+
break;
|
575
|
+
}
|
576
|
+
}
|
577
|
+
});
|
578
|
+
}
|
579
|
+
|
580
|
+
export_drowpdwonRender = function() {
|
581
|
+
dropdown.render({
|
582
|
+
elem: '.export_more-btn',
|
583
|
+
data: export_dropmenu,
|
584
|
+
click: function(data, othis){
|
585
|
+
var elem = $(this.elem);
|
586
|
+
id = elem.data('id');
|
587
|
+
switch (data.event) {
|
588
|
+
case 'export_csv':
|
589
|
+
export_bussiness('csv')
|
590
|
+
break;
|
591
|
+
case 'export_excel':
|
592
|
+
export_bussiness('xls')
|
593
|
+
break;
|
594
|
+
case 'export_records':
|
595
|
+
export_records();
|
596
|
+
break;
|
597
|
+
}
|
598
|
+
}
|
599
|
+
});
|
600
|
+
}
|
601
|
+
function export_bussiness(type) {
|
602
|
+
var data = form.val("search_form");
|
603
|
+
var business_type = [];
|
604
|
+
business_type_list.getValue().forEach(function(d) {
|
605
|
+
business_type.push(d.value);
|
606
|
+
})
|
607
|
+
var business_step = [];
|
608
|
+
business_step_list.getValue().forEach(function(d) {
|
609
|
+
business_step.push(d.value);
|
610
|
+
})
|
611
|
+
data.place_id = index_place_list.getValue('valueStr');
|
612
|
+
data.business_type = business_type.toString();
|
613
|
+
data.business_step = business_step.toString();
|
614
|
+
data.staff_id = staff_list.getValue('valueStr');
|
615
|
+
layer.load(0, {});
|
616
|
+
request.authPost("/missions/businesses/get_export_data", {
|
617
|
+
name: data.name,
|
618
|
+
area: data.area,
|
619
|
+
business_step: data.business_step,
|
620
|
+
business_type: data.business_type,
|
621
|
+
date: data.date,
|
622
|
+
department: data.department,
|
623
|
+
invitation_at: data.invitation_at,
|
624
|
+
place_id: data.place_id,
|
625
|
+
select: data.select,
|
626
|
+
staff_id: data.staff_id,
|
627
|
+
signed_date: data.signed_date,
|
628
|
+
date_at: data.date_at,
|
629
|
+
bidded_date: data.bidded_date,
|
630
|
+
business_year: data.business_year,
|
631
|
+
year: data.year,
|
632
|
+
mine: search['clazz'] == 'me' ? true : '',
|
633
|
+
is_follow: search['clazz'] == 'followes' ? true : '',
|
634
|
+
}, function (res) {
|
635
|
+
data = res.data
|
636
|
+
table.exportFile(business_table.config.id,data, type);
|
637
|
+
layer.closeAll('loading');
|
638
|
+
request.get('/missions/businesses/add_export_records?type=' + type, {}, function (res) {
|
639
|
+
})
|
640
|
+
})
|
641
|
+
|
642
|
+
}
|
643
|
+
|
644
|
+
|
645
|
+
function export_records() {
|
646
|
+
var content = miniPage.getHrefContent('/missions/businesses/export_records')
|
647
|
+
var openWH = miniPage.getOpenWidthHeight();
|
648
|
+
sindex = layer.open({
|
649
|
+
title: '·',
|
650
|
+
type: 1,
|
651
|
+
shade: 0.2,
|
652
|
+
maxmin: true,
|
653
|
+
shadeClose: true,
|
654
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
655
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
656
|
+
content: content
|
657
|
+
});
|
658
|
+
$(window).on("resize", function () {
|
659
|
+
layer.full(sindex);
|
660
|
+
});
|
661
|
+
}
|
662
|
+
|
663
|
+
function week(id) {
|
664
|
+
var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + id);
|
665
|
+
var openWH = miniPage.getOpenWidthHeight();
|
666
|
+
|
667
|
+
sindex = layer.open({
|
668
|
+
title: '添加周计划',
|
669
|
+
type: 1,
|
670
|
+
shade: 0.2,
|
671
|
+
maxmin: true,
|
672
|
+
shadeClose: true,
|
673
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
674
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
675
|
+
content: content
|
676
|
+
});
|
677
|
+
$(window).on("resize", function () {
|
678
|
+
layer.full(sindex);
|
679
|
+
});
|
680
|
+
}
|
681
|
+
function following(id) {
|
682
|
+
$.ajax({
|
683
|
+
type: "get",
|
684
|
+
dataType: "json",
|
685
|
+
url: '/missions/businesses/followed',
|
686
|
+
data: {business_id:id},
|
687
|
+
success: function (data) {
|
688
|
+
layer.open({
|
689
|
+
title:'关注',
|
690
|
+
content:data.msg,
|
691
|
+
btn: ['确认', '取消'],
|
692
|
+
yes:function (){
|
693
|
+
$.ajax({
|
694
|
+
type: "post",
|
695
|
+
dataType: "json",
|
696
|
+
url: '/missions/businesses/following',
|
697
|
+
data: {business_id:id},
|
698
|
+
success: function (da) {
|
699
|
+
layer.msg(da.msg,{icon: da.code==200? 1:2})
|
700
|
+
table.reload("contact_table")
|
701
|
+
},
|
702
|
+
error:function (da){
|
703
|
+
alert('请求错误')
|
704
|
+
}
|
705
|
+
});
|
706
|
+
}
|
707
|
+
})
|
708
|
+
},
|
709
|
+
error:function (data){
|
710
|
+
alert('请求错误')
|
711
|
+
}
|
712
|
+
});
|
713
|
+
}
|
714
|
+
|
715
|
+
function edit(id) {
|
716
|
+
var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
|
717
|
+
var openWH = miniPage.getOpenWidthHeight();
|
718
|
+
sindex = layer.open({
|
719
|
+
title: '编辑',
|
720
|
+
type: 1,
|
721
|
+
shade: 0.2,
|
722
|
+
maxmin: true,
|
723
|
+
shadeClose: true,
|
724
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
725
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
726
|
+
content: content
|
727
|
+
});
|
728
|
+
$(window).on("resize", function () {
|
729
|
+
layer.full(sindex);
|
730
|
+
});
|
731
|
+
}
|
732
|
+
function time_line(id,name) {
|
733
|
+
business_id = id
|
734
|
+
business_name = name;
|
735
|
+
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + id);
|
736
|
+
var openWH = miniPage.getOpenWidthHeight();
|
737
|
+
sindex = layer.open({
|
738
|
+
title: '商机列表/'+name+'的跟进时间线',
|
739
|
+
type: 1,
|
740
|
+
shade: 0.2,
|
741
|
+
maxmin: true,
|
742
|
+
shadeClose: true,
|
743
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
744
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
745
|
+
content: content
|
746
|
+
});
|
747
|
+
$(window).on("resize", function () {
|
748
|
+
layer.full(sindex);
|
749
|
+
});
|
750
|
+
}
|
751
|
+
function file(id, name) {
|
752
|
+
id = id
|
753
|
+
var content = miniPage.getHrefContent('/missions/businesses/file?business_id=' + id);
|
754
|
+
var openWH = miniPage.getOpenWidthHeight();
|
755
|
+
sindex = layer.open({
|
756
|
+
title: '商机列表/'+name+'的附件信息',
|
757
|
+
type: 1,
|
758
|
+
shade: 0.2,
|
759
|
+
// maxmin: true,
|
760
|
+
shadeClose: true,
|
761
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
762
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
763
|
+
content: content
|
764
|
+
});
|
765
|
+
$(window).on("resize", function () {
|
766
|
+
// layer.full(sindex);
|
767
|
+
});
|
768
|
+
}
|
769
|
+
|
770
|
+
function month(id) {
|
771
|
+
var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + id);
|
772
|
+
var openWH = miniPage.getOpenWidthHeight();
|
773
|
+
sindex = layer.open({
|
774
|
+
title: '添加月计划',
|
775
|
+
type: 1,
|
776
|
+
shade: 0.2,
|
777
|
+
maxmin: true,
|
778
|
+
shadeClose: true,
|
779
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
780
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
781
|
+
content: content
|
782
|
+
});
|
783
|
+
$(window).on("resize", function () {
|
784
|
+
layer.full(sindex);
|
785
|
+
});
|
786
|
+
}
|
787
|
+
|
788
|
+
function deleteBusiness(id, name) {
|
789
|
+
layer.confirm('确定删除' + name, function (index) {
|
790
|
+
request.delete('missions/businesses/' + id, {}, function (res) {
|
791
|
+
layer.close(index);
|
792
|
+
table.reload("contact_table",{url: '/missions/businesses'})
|
793
|
+
})
|
794
|
+
});
|
795
|
+
}
|
796
|
+
|
797
|
+
|
798
|
+
|
799
|
+
var sort = {}, search = data;
|
800
|
+
|
801
|
+
table.on('sort(contact_table)', function (obj) {
|
802
|
+
var data = form.val("search_form");
|
803
|
+
sort.field = obj.field;
|
804
|
+
sort.order = obj.type;
|
805
|
+
table.reload('contact_table', {
|
806
|
+
url: '/missions/businesses',
|
807
|
+
initSort: obj,
|
808
|
+
where: {
|
809
|
+
sort: sort,
|
810
|
+
q: search
|
811
|
+
}
|
812
|
+
});
|
813
|
+
})
|
814
|
+
|
815
|
+
// 监听搜索操作
|
816
|
+
form.on('submit(search_bussiness_contract)', function (data) {
|
817
|
+
var business_type = [];
|
818
|
+
business_type_list.getValue().forEach(function(d) {
|
819
|
+
business_type.push(d.value);
|
820
|
+
})
|
821
|
+
var business_step = [];
|
822
|
+
business_step_list.getValue().forEach(function(d) {
|
823
|
+
business_step.push(d.value);
|
824
|
+
})
|
825
|
+
data.field.place_id = index_place_list.getValue('valueStr');
|
826
|
+
data.field.staff_id = staff_list.getValue('valueStr');
|
827
|
+
data.field.business_type = business_type.toString();
|
828
|
+
data.field.business_step = business_step.toString();
|
829
|
+
data.field.contract = 'contract';
|
830
|
+
|
831
|
+
if (search['clazz']) {
|
832
|
+
data.field['clazz'] = search['clazz']
|
833
|
+
}
|
834
|
+
search = data.field
|
835
|
+
table.reload('contact_table', {
|
836
|
+
url: '/missions/businesses',
|
837
|
+
page: {
|
838
|
+
curr: 1
|
839
|
+
},
|
840
|
+
where: {q: search, sort: sort}
|
841
|
+
}, 'data');
|
842
|
+
|
843
|
+
return false;
|
844
|
+
});
|
845
|
+
|
846
|
+
form.on('submit(show_hide_contract)', function (data) {
|
847
|
+
$(".show_item_contract").toggle()
|
848
|
+
return false;
|
849
|
+
});
|
850
|
+
|
851
|
+
form.on('submit(reset_business_search)', function (data) {
|
852
|
+
var field = data.field;
|
853
|
+
form.val('search_form', {
|
854
|
+
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
855
|
+
place_id: '', date: '', area: '', invitation_at: '', business_year: '', number: ''
|
856
|
+
})
|
857
|
+
business_type_list.setValue([])
|
858
|
+
business_step_list.setValue([])
|
859
|
+
index_place_list.setValue([])
|
860
|
+
staff_list.setValue([])
|
861
|
+
|
862
|
+
return false;
|
863
|
+
});
|
864
|
+
|
865
|
+
table.on('tool(contact_table)', function (obj) {
|
866
|
+
var data = obj.data;
|
867
|
+
id = data.id
|
868
|
+
if (obj.event === 'add_event') { // 监听添加操作
|
869
|
+
business_id = data.id
|
870
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + data.id);
|
871
|
+
var openWH = miniPage.getOpenWidthHeight();
|
872
|
+
sale_plan_index = layer.open({
|
873
|
+
title: '添加商机跟进记录',
|
874
|
+
type: 1,
|
875
|
+
shade: 0.2,
|
876
|
+
maxmin: true,
|
877
|
+
shadeClose: true,
|
878
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
879
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
880
|
+
content: content,
|
881
|
+
success: function (layero, index) {
|
882
|
+
form.render('select');
|
883
|
+
}
|
884
|
+
});
|
885
|
+
$(window).on("resize", function () {
|
886
|
+
layer.full(sale_plan_index);
|
887
|
+
});
|
888
|
+
} else if (obj.event === 'edit') {
|
889
|
+
var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
|
890
|
+
var openWH = miniPage.getOpenWidthHeight();
|
891
|
+
sindex = layer.open({
|
892
|
+
title: '编辑',
|
893
|
+
type: 1,
|
894
|
+
shade: 0.2,
|
895
|
+
maxmin: true,
|
896
|
+
shadeClose: true,
|
897
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
898
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
899
|
+
content: content
|
900
|
+
});
|
901
|
+
$(window).on("resize", function () {
|
902
|
+
layer.full(sindex);
|
903
|
+
});
|
904
|
+
return false;
|
905
|
+
} else if (obj.event === 'delete') {
|
906
|
+
layer.confirm('确定删除' + data.name, function (index) {
|
907
|
+
request.delete('missions/businesses/' + data.id, {}, function (res) {
|
908
|
+
layer.close(index);
|
909
|
+
table.reload("businesses_table",{url: '/missions/businesses',})
|
910
|
+
})
|
911
|
+
});
|
912
|
+
}else if (obj.event === 'add_follow') { // 监听添加操作
|
913
|
+
business_id = parent.business_id
|
914
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
|
915
|
+
var openWH = miniPage.getOpenWidthHeight();
|
916
|
+
sale_plan_index = layer.open({
|
917
|
+
title: '添加商机跟进记录',
|
918
|
+
type: 1,
|
919
|
+
shade: 0.2,
|
920
|
+
maxmin: true,
|
921
|
+
shadeClose: true,
|
922
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
923
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
924
|
+
content: content,
|
925
|
+
success: function (layero, index) {
|
926
|
+
form.render('select');
|
927
|
+
}
|
928
|
+
});
|
929
|
+
$(window).on("resize", function () {
|
930
|
+
layer.full(index);
|
931
|
+
});
|
932
|
+
}else if (obj.event === 'addWeek') {
|
933
|
+
var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + obj.data.id);
|
934
|
+
var openWH = miniPage.getOpenWidthHeight();
|
935
|
+
|
936
|
+
sindex = layer.open({
|
937
|
+
title: '添加周计划',
|
938
|
+
type: 1,
|
939
|
+
shade: 0.2,
|
940
|
+
maxmin: true,
|
941
|
+
shadeClose: true,
|
942
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
943
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
944
|
+
content: content
|
945
|
+
});
|
946
|
+
$(window).on("resize", function () {
|
947
|
+
layer.full(sindex);
|
948
|
+
});
|
949
|
+
} else if (obj.event === 'addMonth') {
|
950
|
+
var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + obj.data.id);
|
951
|
+
var openWH = miniPage.getOpenWidthHeight();
|
952
|
+
sindex = layer.open({
|
953
|
+
title: '添加月计划',
|
954
|
+
type: 1,
|
955
|
+
shade: 0.2,
|
956
|
+
maxmin: true,
|
957
|
+
shadeClose: true,
|
958
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
959
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
960
|
+
content: content
|
961
|
+
});
|
962
|
+
$(window).on("resize", function () {
|
963
|
+
layer.full(sindex);
|
964
|
+
});
|
965
|
+
|
966
|
+
} else if (obj.event === 'show_keys') {
|
967
|
+
business_id = obj.data.id
|
968
|
+
follow_up_id = obj.data.follow_up_id;
|
969
|
+
content = miniPage.getHrefContent('/missions/businesses/show_keys');
|
970
|
+
openWH = miniPage.getOpenWidthHeight();
|
971
|
+
index = layer.open({
|
972
|
+
title: '关键人',
|
973
|
+
type: 1,
|
974
|
+
shade: 0.2,
|
975
|
+
maxmin: true,
|
976
|
+
shadeClose: true,
|
977
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
978
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
979
|
+
content: content,
|
980
|
+
success: function (layero, index) {
|
981
|
+
}
|
982
|
+
});
|
983
|
+
$(window).on("resize", function () {
|
984
|
+
layer.full(index);
|
985
|
+
});
|
986
|
+
} else if (obj.event === 'show_follow') {
|
987
|
+
time_line(obj.data.id, obj.data.name);
|
988
|
+
} else if (obj.event == 'show_business') {
|
989
|
+
time_line(obj.data.id, obj.data.name)
|
990
|
+
}
|
991
|
+
});
|
992
|
+
|
993
|
+
|
994
|
+
});
|
995
|
+
</script>
|
996
|
+
<style>
|
997
|
+
.layui-table-tool-temp{
|
998
|
+
padding-right: 30px; !important;
|
999
|
+
}
|
1000
|
+
.layui-table-fixed .layui-table-body {
|
1001
|
+
height: auto!important;
|
1002
|
+
}
|
1003
|
+
.layui-table-fixed.layui-hide {
|
1004
|
+
display: block!important;
|
1005
|
+
}
|
1006
|
+
|
1007
|
+
</style>
|