educode_sales 0.9.73 → 0.9.74
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/contracts_controller.rb +309 -0
- data/app/controllers/educode_sales/follow_ups_controller.rb +1 -1
- data/app/controllers/educode_sales/home_controller.rb +7 -0
- data/app/controllers/educode_sales/ideas_controller.rb +146 -76
- data/app/controllers/educode_sales/roles_controller.rb +2 -1
- data/app/controllers/educode_sales/upload_files_controller.rb +3 -0
- data/app/models/educode_sales/assign_staff.rb +6 -0
- data/app/models/educode_sales/contract_date_list.rb +6 -0
- data/app/models/educode_sales/follow_up.rb +6 -0
- data/app/models/educode_sales/idea.rb +16 -5
- data/app/models/educode_sales/idea_follow.rb +11 -0
- data/app/models/educode_sales/permission.rb +2 -1
- data/app/models/educode_sales/role_area.rb +2 -1
- data/app/views/educode_sales/businesses/_contract_list.html.erb +160 -0
- data/app/views/educode_sales/contracts/_follows.html.erb +323 -0
- data/app/views/educode_sales/contracts/_list.html.erb +596 -0
- data/app/views/educode_sales/contracts/follow_ups.json.jbuilder +23 -0
- data/app/views/educode_sales/contracts/index.html.erb +50 -0
- data/app/views/educode_sales/contracts/index.json.jbuilder +74 -0
- data/app/views/educode_sales/contracts/list.js.erb +1 -0
- data/app/views/educode_sales/contracts/new_follow_up.html.erb +671 -0
- data/app/views/educode_sales/home/staff_business.json.jbuilder +9 -0
- data/app/views/educode_sales/idea_recycles/detail.html.erb +4 -4
- data/app/views/educode_sales/idea_recycles/index.html.erb +5 -5
- data/app/views/educode_sales/ideas/_follows.html.erb +258 -0
- data/app/views/educode_sales/ideas/_index.html.erb +544 -0
- data/app/views/educode_sales/ideas/detail.html.erb +7 -7
- data/app/views/educode_sales/ideas/edit.html.erb +77 -15
- data/app/views/educode_sales/ideas/files.html.erb +157 -0
- data/app/views/educode_sales/ideas/files.json.jbuilder +13 -0
- data/app/views/educode_sales/ideas/follow_ups.json.jbuilder +14 -0
- data/app/views/educode_sales/ideas/index.html.erb +12 -353
- data/app/views/educode_sales/ideas/index.json.jbuilder +7 -1
- data/app/views/educode_sales/ideas/new.html.erb +81 -25
- data/app/views/educode_sales/ideas/new_follow_up.html.erb +105 -0
- data/app/views/educode_sales/ideas/search_new.html.erb +1 -1
- data/app/views/educode_sales/ideas/show_schools.html.erb +84 -0
- data/app/views/educode_sales/ideas/show_schools.json.jbuilder +12 -0
- data/app/views/educode_sales/ideas/show_teachers.html.erb +372 -0
- data/app/views/educode_sales/ideas/upload_file.html.erb +43 -0
- data/app/views/educode_sales/projects/detail.html.erb +1 -1
- data/app/views/educode_sales/projects/edit.html.erb +1 -1
- data/app/views/educode_sales/roles/edit.html.erb +16 -0
- data/app/views/layouts/educode_sales/application.html.erb +5 -5
- data/config/routes.rb +19 -0
- data/db/migrate/20230227061043_create_educode_sales_ideas.rb +2 -2
- data/db/migrate/20230430023424_add_plan_signed_date_to_follow_ups.rb +21 -0
- data/db/migrate/20230430040332_create_educode_sales_contract_date_lists.rb +15 -0
- data/db/migrate/20230430104708_create_idea_follows.rb +25 -0
- data/db/migrate/20230430121335_add_permissions_for_ideas.rb +16 -0
- data/db/migrate/20230430134710_create_educode_sales_assign_staffs.rb +11 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +30 -2
@@ -8,6 +8,10 @@ module EducodeSales
|
|
8
8
|
["混合云", 3]
|
9
9
|
]
|
10
10
|
|
11
|
+
InfoClazz = ['跟进信息', '建议信息', '评论信息', '审核信息']
|
12
|
+
|
13
|
+
enum funding_source: ['贷款资金', '财政资金', '自由资金']
|
14
|
+
|
11
15
|
include ::Deletable
|
12
16
|
belongs_to :business, counter_cache: true # counter_cache(自动计算 business对应follow_up表中对应的个数)
|
13
17
|
belongs_to :place, optional: true
|
@@ -19,6 +23,8 @@ module EducodeSales
|
|
19
23
|
belongs_to :stage, class_name: 'Common'
|
20
24
|
belongs_to :clazz, class_name: 'Common'
|
21
25
|
|
26
|
+
has_many :assign_staffs, as: :sourcable # 售后人员
|
27
|
+
|
22
28
|
|
23
29
|
default_scope -> {where(deleted_at: nil)}
|
24
30
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module EducodeSales
|
2
2
|
class Idea < ApplicationRecord
|
3
3
|
belongs_to :department, optional: true
|
4
|
+
belongs_to :business, optional: true
|
4
5
|
belongs_to :staff, optional: true
|
5
6
|
belongs_to :school, optional: true
|
6
7
|
belongs_to :attachment, optional: true
|
@@ -8,19 +9,25 @@ module EducodeSales
|
|
8
9
|
belongs_to :deleter, class_name: 'Staff', optional: true
|
9
10
|
belongs_to :sale_staff, class_name: 'Staff', optional: true
|
10
11
|
belongs_to :idea_staff, class_name: 'Staff', optional: true
|
12
|
+
has_many :idea_follows, dependent: :destroy
|
13
|
+
has_one :last_idea_follow, class_name: 'IdeaFollow'
|
11
14
|
|
12
15
|
has_many :idea_histories, dependent: :destroy
|
13
16
|
|
17
|
+
has_many :files, class_name: 'Attachment', as: :container, dependent: :destroy
|
18
|
+
|
14
19
|
scope :deleted, -> { where(is_deleted: true) }
|
15
20
|
scope :not_deleted, -> { where(is_deleted: false) }
|
16
21
|
|
17
22
|
enum level: %w[高 中 低]
|
18
23
|
enum status: %w[未完成 已完成]
|
19
|
-
enum types: %w[
|
24
|
+
enum types: %w[低定制 非定制 高定制 全定制]
|
20
25
|
enum model: %w[本地版 线上版 混合版]
|
26
|
+
enum idea_type: %w[售前 售后]
|
21
27
|
|
22
28
|
serialize :assist_staff_ids,Array
|
23
29
|
serialize :attachment_ids, Array
|
30
|
+
serialize :other_staff_ids, Array
|
24
31
|
|
25
32
|
# before_save :check_changes
|
26
33
|
|
@@ -32,6 +39,10 @@ module EducodeSales
|
|
32
39
|
Staff.where(id: self.assist_staff_ids)
|
33
40
|
end
|
34
41
|
|
42
|
+
def other_staffs
|
43
|
+
Staff.where(id: self.other_staff_ids)
|
44
|
+
end
|
45
|
+
|
35
46
|
def attachments
|
36
47
|
Attachment.where(id: self.attachment_ids)
|
37
48
|
end
|
@@ -68,7 +79,7 @@ module EducodeSales
|
|
68
79
|
when "staff_id"
|
69
80
|
old_value = Staff.find_by(id: old_value)&.user&.real_name
|
70
81
|
new_value = Staff.find_by(id: new_value)&.user&.real_name
|
71
|
-
"
|
82
|
+
"方案经理由“#{old_value}”变更为“#{new_value}”"
|
72
83
|
when "status"
|
73
84
|
"状态由“#{old_value}”变更为“#{new_value}”"
|
74
85
|
when "types"
|
@@ -84,13 +95,13 @@ module EducodeSales
|
|
84
95
|
when "end_time"
|
85
96
|
"截止时间由“#{old_value}”变更为“#{new_value}”"
|
86
97
|
when "content"
|
87
|
-
"
|
98
|
+
"需求说明由“#{old_value}”变更为“#{new_value}”"
|
88
99
|
when "department_id"
|
89
100
|
old_value = Department.find_by(id: old_value)&.name
|
90
101
|
new_value = Department.find_by(id: new_value)&.name
|
91
|
-
"
|
102
|
+
"部门由“#{old_value}”变更为“#{new_value}”"
|
92
103
|
when "manager_name"
|
93
|
-
"
|
104
|
+
"单位联系人由“#{old_value}”变更为“#{new_value}”"
|
94
105
|
when "manager_phone"
|
95
106
|
"负责人电话由“#{old_value}”变更为“#{new_value}”"
|
96
107
|
else
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module EducodeSales
|
2
|
+
class IdeaFollow < ApplicationRecord
|
3
|
+
belongs_to :idea, optional: true, counter_cache: true
|
4
|
+
belongs_to :staff, optional: true
|
5
|
+
belongs_to :sale_staff, class_name: "Staff", foreign_key: "sale_staff_id", optional: true
|
6
|
+
belongs_to :idea_staff, class_name: "Staff", foreign_key: "idea_staff_id", optional: true
|
7
|
+
belongs_to :school, optional: true
|
8
|
+
|
9
|
+
enum status: %w[未完成 已完成]
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,160 @@
|
|
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
|
+
<%=render 'follows' %>
|
9
|
+
</div>
|
10
|
+
<div class="layui-tab-item businesses_list_div">
|
11
|
+
<div class="min-height-table">
|
12
|
+
<div style="margin: 10px 10px 10px 10px">
|
13
|
+
<form class="layui-form layui-form-pane" lay-filter="search_form">
|
14
|
+
<div class="layui-form-item">
|
15
|
+
<div class="layui-inline">
|
16
|
+
<label class="layui-form-label">商机名称</label>
|
17
|
+
<div class="layui-input-inline">
|
18
|
+
<input type="text" name="name" class="layui-input" value="">
|
19
|
+
<input type="text" style="display: none" name="place_id" class="layui-input" value="<%=params[:place_id] %>">
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<div class="layui-inline">
|
23
|
+
<label class="layui-form-label">单位</label>
|
24
|
+
<div class="layui-input-inline">
|
25
|
+
<input type="text" name="department" value="<%=params[:school] %>" class="layui-input">
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<div class="layui-inline">
|
29
|
+
<label class="layui-form-label">最新跟进人</label>
|
30
|
+
<div class="layui-input-inline">
|
31
|
+
<div id="staffs_id" style="width: 190px;"></div>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div class="layui-inline">
|
35
|
+
<label class="layui-form-label">商机变化</label>
|
36
|
+
<div class="layui-input-inline">
|
37
|
+
<select name="clazz_changes">
|
38
|
+
<option value=""></option>
|
39
|
+
<option value="1">商机降级</option>
|
40
|
+
<option value="2">商机晋级</option>
|
41
|
+
<option value="3">商机降级 A-X</option>
|
42
|
+
<option value="4">商机降级 AB-X</option>
|
43
|
+
<option value="5">商机降级 ABC-X</option>
|
44
|
+
<option value="6">商机晋级 B-A</option>
|
45
|
+
<option value="7">商机晋级 BC-A</option>
|
46
|
+
<option value="8">商机晋级 BCD-A</option>
|
47
|
+
</select>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
51
|
+
<label class="layui-form-label">项目类型</label>
|
52
|
+
<div class="layui-input-inline">
|
53
|
+
<div id="business_type" style="width: 190px;"></div>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
57
|
+
<label class="layui-form-label">项目阶段</label>
|
58
|
+
<div class="layui-input-inline">
|
59
|
+
<div id="business_step" style="width: 190px;"></div>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
63
|
+
<label class="layui-form-label">渠道名称</label>
|
64
|
+
<div class="layui-input-inline">
|
65
|
+
<div id="index_place" style="width: 190px;"></div>
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
69
|
+
<label class="layui-form-label">区域</label>
|
70
|
+
<div class="layui-input-inline">
|
71
|
+
<%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
75
|
+
<label class="layui-form-label">所属年度</label>
|
76
|
+
<div class="layui-input-inline">
|
77
|
+
<%= select_tag "business_year", options_for_select((2015..Time.now.year).to_a.reverse, params[:business_year]), { include_blank: true } %>
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
81
|
+
<label class="layui-form-label">招标时间</label>
|
82
|
+
<div class="layui-input-inline">
|
83
|
+
<input type="text" class="layui-input" id="invitation_at" name="invitation_at" placeholder=" - " autocomplete="off">
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
87
|
+
<label class="layui-form-label">中标时间</label>
|
88
|
+
<div class="layui-input-inline">
|
89
|
+
<input type="text" class="layui-input" id="bidded_date" name="bidded_date" placeholder=" - " autocomplete="off">
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
93
|
+
<label class="layui-form-label">签单时间</label>
|
94
|
+
<div class="layui-input-inline">
|
95
|
+
<input type="text" class="layui-input" id="signed_date" name="signed_date" placeholder=" - " autocomplete="off">
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
99
|
+
<label class="layui-form-label">回款时间</label>
|
100
|
+
<div class="layui-input-inline">
|
101
|
+
<input type="text" class="layui-input" id="date_at" name="date_at" placeholder=" - " autocomplete="off">
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
105
|
+
<label class="layui-form-label">创建时间</label>
|
106
|
+
<div class="layui-input-inline">
|
107
|
+
<input type="text" class="layui-input" id="date" name="date" placeholder=" - " autocomplete="off">
|
108
|
+
</div>
|
109
|
+
</div>
|
110
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
111
|
+
<label class="layui-form-label">部署类型</label>
|
112
|
+
<div class="layui-input-inline">
|
113
|
+
<select name="o_business_deployment">
|
114
|
+
<option value=""></option>
|
115
|
+
<option value="1">公有云</option>
|
116
|
+
<option value="2">私有云</option>
|
117
|
+
<option value="3">混合云</option>
|
118
|
+
</select>
|
119
|
+
</div>
|
120
|
+
</div>
|
121
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
122
|
+
<label class="layui-form-label">商机等级</label>
|
123
|
+
<div class="layui-input-inline">
|
124
|
+
<select name="level_id">
|
125
|
+
<option value=""></option>
|
126
|
+
<option value="1">保密型</option>
|
127
|
+
<option value="2">战略型</option>
|
128
|
+
</select>
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
132
|
+
<label class="layui-form-label">销售经理</label>
|
133
|
+
<div class="layui-input-inline">
|
134
|
+
<div id="staff_manages" style="width: 190px;"></div>
|
135
|
+
</div>
|
136
|
+
</div>
|
137
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
138
|
+
<label class="layui-form-label">客户类型</label>
|
139
|
+
<div class="layui-input-inline">
|
140
|
+
<%= select_tag "property", options_for_select(SchoolTag.where(for_missions: true).pluck(:name, :id)), { include_blank: true } %>
|
141
|
+
</div>
|
142
|
+
</div>
|
143
|
+
<div class="layui-inline">
|
144
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
145
|
+
</button>
|
146
|
+
<button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">搜索
|
147
|
+
</button>
|
148
|
+
<a style="padding-left: 20px;color: #0000FF" href="javascript:;" type="submit" class="" lay-submit lay-filter="show_hide">高级搜索
|
149
|
+
</a>
|
150
|
+
</div>
|
151
|
+
</div>
|
152
|
+
</form>
|
153
|
+
</div>
|
154
|
+
<div id="businesses_table_wraper">
|
155
|
+
<table class="layui-hide" id="businesses_table" lay-filter="businesses_table"></table>
|
156
|
+
</div>
|
157
|
+
</div>
|
158
|
+
</div>
|
159
|
+
</div>
|
160
|
+
</div>
|
@@ -0,0 +1,323 @@
|
|
1
|
+
<div style="margin: 10px 10px 10px 10px">
|
2
|
+
<form class="layui-form layui-form-pane" lay-filter="search_follows">
|
3
|
+
<div class="layui-form-item">
|
4
|
+
<div class="layui-inline">
|
5
|
+
<label class="layui-form-label">商机名称</label>
|
6
|
+
<div class="layui-input-inline">
|
7
|
+
<input type="text" name="name" class="layui-input">
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="layui-inline">
|
11
|
+
<label class="layui-form-label">用户单位</label>
|
12
|
+
<div class="layui-input-inline">
|
13
|
+
<input type="text" name="department" class="layui-input">
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<div class="layui-inline">
|
17
|
+
<label class="layui-form-label">签约单位</label>
|
18
|
+
<div class="layui-input-inline">
|
19
|
+
<input type="text" name="signed_department" class="layui-input">
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<div class="layui-inline">
|
23
|
+
<label class="layui-form-label">销售经理</label>
|
24
|
+
<div class="layui-input-inline">
|
25
|
+
<%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true , "lay-search": "" } %>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<div class="layui-inline">
|
29
|
+
<label class="layui-form-label">信息类型</label>
|
30
|
+
<div class="layui-input-inline">
|
31
|
+
<%= select_tag "info_clazz", options_for_select(EducodeSales::FollowUp::InfoClazz), { include_blank: true } %>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div class="layui-inline">
|
35
|
+
<label class="layui-form-label">跟进时间</label>
|
36
|
+
<div class="layui-input-inline">
|
37
|
+
<input type="text" class="layui-input" id="follows_date" name="follows_date" autocomplete="off" placeholder=" - ">
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
<div class="layui-inline">
|
41
|
+
<label class="layui-form-label">最新进展</label>
|
42
|
+
<div class="layui-input-inline">
|
43
|
+
<input type="text" name="description" class="layui-input">
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<div class="layui-inline">
|
48
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_follows_search">重置
|
49
|
+
</button>
|
50
|
+
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_follows">搜 索
|
51
|
+
</button>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
</form>
|
55
|
+
</div>
|
56
|
+
<div class="">
|
57
|
+
<table class="layui-hide" id="contract_follows_table" style="min-height: 300px;" lay-filter="contract_follows_table"></table>
|
58
|
+
</div>
|
59
|
+
<script type="text/html" id="toolbarDemo_follows">
|
60
|
+
<div class="layui-btn-container">
|
61
|
+
<span class="table-label">跟进动态</span>
|
62
|
+
<a class="layui-btn layui-btn-normal layui-btn-sm" style="margin-left: 20px;" lay-event="report_day">日报</a>
|
63
|
+
</div>
|
64
|
+
</script>
|
65
|
+
<script type="text/html" id="currentTableBar_follows">
|
66
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">详情</a>
|
67
|
+
<% if can?(:advise, EducodeSales::Business) %>
|
68
|
+
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">团队建议</a>
|
69
|
+
<% end %>
|
70
|
+
</script>
|
71
|
+
<script type="text/html" id="business">
|
72
|
+
<a href="javascript:void(0);" lay-event="business" class="layui-table-link">{{ d.business }}</a>
|
73
|
+
</script>
|
74
|
+
<script type="text/html" id="school">
|
75
|
+
<a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">{{ d.school }}</a>
|
76
|
+
</script>
|
77
|
+
|
78
|
+
|
79
|
+
<script>
|
80
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
|
81
|
+
var $ = layui.jquery,
|
82
|
+
form = layui.form,
|
83
|
+
request = layui.request,
|
84
|
+
dropdown = layui.dropdown,
|
85
|
+
miniPage = layui.miniPage,
|
86
|
+
laydate = layui.laydate;
|
87
|
+
|
88
|
+
var laydate = layui.laydate;
|
89
|
+
|
90
|
+
laydate.render({
|
91
|
+
elem: '#follows_date',
|
92
|
+
range: true
|
93
|
+
});
|
94
|
+
|
95
|
+
table = layui.table;
|
96
|
+
table.render({
|
97
|
+
elem: '#contract_follows_table',
|
98
|
+
url: '/missions/contracts/follow_ups',
|
99
|
+
// where: {q: form.val('search_form')},
|
100
|
+
toolbar: '#toolbarDemo_follows',
|
101
|
+
defaultToolbar: ['filter'],
|
102
|
+
initSort: {
|
103
|
+
field: 'created_at' //排序字段,对应 cols 设定的各字段名
|
104
|
+
,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
|
105
|
+
},
|
106
|
+
cols: [
|
107
|
+
[
|
108
|
+
{
|
109
|
+
field: 'id',
|
110
|
+
width: 60,
|
111
|
+
title:'序号',type: 'numbers',
|
112
|
+
},
|
113
|
+
{
|
114
|
+
field: 'description',
|
115
|
+
title: '最新进展',
|
116
|
+
templet:'<div><span title="{{d.description}}">{{d.description}}</span></div>'
|
117
|
+
},
|
118
|
+
{
|
119
|
+
field: 'business',
|
120
|
+
width: 120,
|
121
|
+
title: '商机名称',
|
122
|
+
templet:'#business'
|
123
|
+
},
|
124
|
+
{
|
125
|
+
field: 'school',
|
126
|
+
width: 120,
|
127
|
+
title: '用户单位',
|
128
|
+
templet:'#school'
|
129
|
+
},
|
130
|
+
{
|
131
|
+
field: 'signed_department',
|
132
|
+
width: 120,
|
133
|
+
title: '签约单位',
|
134
|
+
templet:'#signed_department'
|
135
|
+
},
|
136
|
+
{
|
137
|
+
field: 'stage',
|
138
|
+
title: '阶段',
|
139
|
+
width: 90,
|
140
|
+
templet:'<div><span title="{{d.stage}}">{{d.stage}}</span></div>'
|
141
|
+
},
|
142
|
+
{
|
143
|
+
field: 'staff_manages',
|
144
|
+
width: 120,
|
145
|
+
title: '销售经理',
|
146
|
+
},
|
147
|
+
{
|
148
|
+
field: 'infoclazz',
|
149
|
+
width: 80,
|
150
|
+
title: '信息类型',
|
151
|
+
},
|
152
|
+
{
|
153
|
+
field: 'staff',
|
154
|
+
width: 90,
|
155
|
+
title: '跟进人',
|
156
|
+
},
|
157
|
+
{
|
158
|
+
field: 'created_at',
|
159
|
+
width: 120,
|
160
|
+
title: '跟进时间',
|
161
|
+
sort: true,
|
162
|
+
templet:'<div><span title="{{d.created_at}}">{{d.created_at}}</span></div>'
|
163
|
+
|
164
|
+
},
|
165
|
+
{
|
166
|
+
title: '操作',
|
167
|
+
width: 160,
|
168
|
+
toolbar: '#currentTableBar_follows',
|
169
|
+
align: "center",
|
170
|
+
fixed: 'right'
|
171
|
+
}
|
172
|
+
]
|
173
|
+
],
|
174
|
+
limit: 20,
|
175
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
176
|
+
page: true,
|
177
|
+
});
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
var sort = {}, search = {};
|
184
|
+
table.on('sort(contract_follows_table)', function (obj) {
|
185
|
+
sort.field = obj.field;
|
186
|
+
sort.order = obj.type;
|
187
|
+
table.reload('contract_follows_table', {
|
188
|
+
initSort: obj,
|
189
|
+
where: {
|
190
|
+
sort: sort,
|
191
|
+
q: search
|
192
|
+
}
|
193
|
+
});
|
194
|
+
})
|
195
|
+
|
196
|
+
// 监听搜索操作
|
197
|
+
form.on('submit(search_follows)', function (data) {
|
198
|
+
search = data.field
|
199
|
+
table.reload('contract_follows_table', {
|
200
|
+
page: {
|
201
|
+
curr: 1
|
202
|
+
},
|
203
|
+
where: {q: search, sort: sort}
|
204
|
+
}, 'data');
|
205
|
+
// table.reload('businesses_table', {
|
206
|
+
// page: {
|
207
|
+
// curr: 1
|
208
|
+
// },
|
209
|
+
// where: {q: search, sort: sort}
|
210
|
+
// }, 'data');
|
211
|
+
// form.val('search_form', {
|
212
|
+
// name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area , description: data.field.description
|
213
|
+
// })
|
214
|
+
return false;
|
215
|
+
});
|
216
|
+
|
217
|
+
form.on('submit(reset_follows_search)', function (data) {
|
218
|
+
var field = data.field;
|
219
|
+
form.val('search_follows', {
|
220
|
+
area: "",
|
221
|
+
follows_date: "",
|
222
|
+
name: "",
|
223
|
+
department: "",
|
224
|
+
description: "",
|
225
|
+
staff_id: ""
|
226
|
+
})
|
227
|
+
return false;
|
228
|
+
});
|
229
|
+
table.on('toolbar(contract_follows_table)', function(obj){
|
230
|
+
if (obj.event === 'report_day') {
|
231
|
+
content = miniPage.getHrefContent('/missions/businesses/daily_paper');
|
232
|
+
openWH = miniPage.getOpenWidthHeight();
|
233
|
+
index = layer.open({
|
234
|
+
title: '',
|
235
|
+
type: 1,
|
236
|
+
shade: 0.2,
|
237
|
+
// maxmin: true,
|
238
|
+
shadeClose: true,
|
239
|
+
area: ['600px', '600px'],
|
240
|
+
content: content
|
241
|
+
});
|
242
|
+
$(window).on("resize", function () {
|
243
|
+
layer.full(index);
|
244
|
+
});
|
245
|
+
}
|
246
|
+
})
|
247
|
+
table.on('tool(contract_follows_table)', function (obj) {
|
248
|
+
var data = obj.data;
|
249
|
+
id = data.id
|
250
|
+
if (obj.event === 'add_event') { // 监听添加操作
|
251
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + data.id);
|
252
|
+
var openWH = miniPage.getOpenWidthHeight();
|
253
|
+
show_index = layer.open({
|
254
|
+
title: '查看商机跟进记录',
|
255
|
+
type: 1,
|
256
|
+
shade: 0.2,
|
257
|
+
maxmin: true,
|
258
|
+
shadeClose: true,
|
259
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
260
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
261
|
+
content: content
|
262
|
+
});
|
263
|
+
$(window).on("resize", function () {
|
264
|
+
layer.full(index);
|
265
|
+
});
|
266
|
+
} else if (obj.event === 'business') {
|
267
|
+
business_id = data.business_id
|
268
|
+
business_name = data.business
|
269
|
+
content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + data.business_id);
|
270
|
+
openWH = miniPage.getOpenWidthHeight();
|
271
|
+
index = layer.open({
|
272
|
+
title: '商机列表/' + data.business + '的跟进记录',
|
273
|
+
type: 1,
|
274
|
+
shade: 0.2,
|
275
|
+
maxmin: true,
|
276
|
+
shadeClose: true,
|
277
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
278
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
279
|
+
content: content
|
280
|
+
});
|
281
|
+
$(window).on("resize", function () {
|
282
|
+
layer.full(index);
|
283
|
+
});
|
284
|
+
} else if (obj.event == 'add_advise') {
|
285
|
+
layer.open({
|
286
|
+
title: '添加团队建议',
|
287
|
+
closeBtn: 0,
|
288
|
+
type: 1,
|
289
|
+
area: '400px;',
|
290
|
+
id: 'LAY_layuipro',
|
291
|
+
content: '<div class="layui-form" lay-filter="edit_project" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + data.advise + '</textarea></div>' ,
|
292
|
+
btn: ['保存', '取消'],
|
293
|
+
btn1: function(index, l) {
|
294
|
+
if (l.find("textarea").val().trim() == '') {
|
295
|
+
layer.msg('内容不能为空')
|
296
|
+
return false;
|
297
|
+
} else {
|
298
|
+
request.authPut("/missions/follow_ups/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
|
299
|
+
if (res.success == false) {
|
300
|
+
layer.alert(res.msg);
|
301
|
+
} else {
|
302
|
+
layer.close(index);
|
303
|
+
table.reload('contract_follows_table');
|
304
|
+
}
|
305
|
+
})
|
306
|
+
}
|
307
|
+
|
308
|
+
return false
|
309
|
+
},
|
310
|
+
btn2: function(index, l) {
|
311
|
+
layer.close(index)
|
312
|
+
}
|
313
|
+
});
|
314
|
+
}
|
315
|
+
});
|
316
|
+
|
317
|
+
});
|
318
|
+
</script>
|
319
|
+
<style>
|
320
|
+
.layui-table-tool-temp{
|
321
|
+
padding-right: 30px; !important;
|
322
|
+
}
|
323
|
+
</style>
|