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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/contracts_controller.rb +309 -0
  3. data/app/controllers/educode_sales/follow_ups_controller.rb +1 -1
  4. data/app/controllers/educode_sales/home_controller.rb +7 -0
  5. data/app/controllers/educode_sales/ideas_controller.rb +146 -76
  6. data/app/controllers/educode_sales/roles_controller.rb +2 -1
  7. data/app/controllers/educode_sales/upload_files_controller.rb +3 -0
  8. data/app/models/educode_sales/assign_staff.rb +6 -0
  9. data/app/models/educode_sales/contract_date_list.rb +6 -0
  10. data/app/models/educode_sales/follow_up.rb +6 -0
  11. data/app/models/educode_sales/idea.rb +16 -5
  12. data/app/models/educode_sales/idea_follow.rb +11 -0
  13. data/app/models/educode_sales/permission.rb +2 -1
  14. data/app/models/educode_sales/role_area.rb +2 -1
  15. data/app/views/educode_sales/businesses/_contract_list.html.erb +160 -0
  16. data/app/views/educode_sales/contracts/_follows.html.erb +323 -0
  17. data/app/views/educode_sales/contracts/_list.html.erb +596 -0
  18. data/app/views/educode_sales/contracts/follow_ups.json.jbuilder +23 -0
  19. data/app/views/educode_sales/contracts/index.html.erb +50 -0
  20. data/app/views/educode_sales/contracts/index.json.jbuilder +74 -0
  21. data/app/views/educode_sales/contracts/list.js.erb +1 -0
  22. data/app/views/educode_sales/contracts/new_follow_up.html.erb +671 -0
  23. data/app/views/educode_sales/home/staff_business.json.jbuilder +9 -0
  24. data/app/views/educode_sales/idea_recycles/detail.html.erb +4 -4
  25. data/app/views/educode_sales/idea_recycles/index.html.erb +5 -5
  26. data/app/views/educode_sales/ideas/_follows.html.erb +258 -0
  27. data/app/views/educode_sales/ideas/_index.html.erb +544 -0
  28. data/app/views/educode_sales/ideas/detail.html.erb +7 -7
  29. data/app/views/educode_sales/ideas/edit.html.erb +77 -15
  30. data/app/views/educode_sales/ideas/files.html.erb +157 -0
  31. data/app/views/educode_sales/ideas/files.json.jbuilder +13 -0
  32. data/app/views/educode_sales/ideas/follow_ups.json.jbuilder +14 -0
  33. data/app/views/educode_sales/ideas/index.html.erb +12 -353
  34. data/app/views/educode_sales/ideas/index.json.jbuilder +7 -1
  35. data/app/views/educode_sales/ideas/new.html.erb +81 -25
  36. data/app/views/educode_sales/ideas/new_follow_up.html.erb +105 -0
  37. data/app/views/educode_sales/ideas/search_new.html.erb +1 -1
  38. data/app/views/educode_sales/ideas/show_schools.html.erb +84 -0
  39. data/app/views/educode_sales/ideas/show_schools.json.jbuilder +12 -0
  40. data/app/views/educode_sales/ideas/show_teachers.html.erb +372 -0
  41. data/app/views/educode_sales/ideas/upload_file.html.erb +43 -0
  42. data/app/views/educode_sales/projects/detail.html.erb +1 -1
  43. data/app/views/educode_sales/projects/edit.html.erb +1 -1
  44. data/app/views/educode_sales/roles/edit.html.erb +16 -0
  45. data/app/views/layouts/educode_sales/application.html.erb +5 -5
  46. data/config/routes.rb +19 -0
  47. data/db/migrate/20230227061043_create_educode_sales_ideas.rb +2 -2
  48. data/db/migrate/20230430023424_add_plan_signed_date_to_follow_ups.rb +21 -0
  49. data/db/migrate/20230430040332_create_educode_sales_contract_date_lists.rb +15 -0
  50. data/db/migrate/20230430104708_create_idea_follows.rb +25 -0
  51. data/db/migrate/20230430121335_add_permissions_for_ideas.rb +16 -0
  52. data/db/migrate/20230430134710_create_educode_sales_assign_staffs.rb +11 -0
  53. data/lib/educode_sales/version.rb +1 -1
  54. metadata +30 -2
@@ -0,0 +1,6 @@
1
+ module EducodeSales
2
+ class ContractDateList < ApplicationRecord
3
+ belongs_to :follow_up
4
+ belongs_to :staff
5
+ end
6
+ end
@@ -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
- "方案指派人由“#{old_value}”变更为“#{new_value}”"
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
- "反馈情况由“#{old_value}”变更为“#{new_value}”"
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
- "院系/部门由“#{old_value}”变更为“#{new_value}”"
102
+ "部门由“#{old_value}”变更为“#{new_value}”"
92
103
  when "manager_name"
93
- "学校负责人由“#{old_value}”变更为“#{new_value}”"
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
@@ -15,7 +15,8 @@ module EducodeSales
15
15
  '回款管理': 'money_plan',
16
16
  '绩效考核': 'assessments_setting',
17
17
  '方案管理': 'idea',
18
- '项目管理': 'project'
18
+ '项目管理': 'project',
19
+ '合同管理': 'contract'
19
20
  }
20
21
  end
21
22
  end
@@ -12,7 +12,8 @@ module EducodeSales
12
12
  '回款管理': 'MoneyPlan',
13
13
  '绩效考核': 'AssessmentsSetting',
14
14
  '方案管理': 'Idea',
15
- '项目管理': 'Project'
15
+ '项目管理': 'Project',
16
+ '合同管理': 'Contract'
16
17
  }
17
18
  end
18
19
  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>