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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales//345/256/242/346/210/267/347/256/241/347/220/206.png +0 -0
  3. data/app/controllers/educode_sales/businesses_controller.rb +20 -1
  4. data/app/controllers/educode_sales/customer_extensions_controller.rb +17 -0
  5. data/app/controllers/educode_sales/customer_follows_controller.rb +41 -0
  6. data/app/controllers/educode_sales/customers_controller.rb +194 -0
  7. data/app/controllers/educode_sales/follow_ups_controller.rb +58 -1
  8. data/app/controllers/educode_sales/home_controller.rb +18 -2
  9. data/app/controllers/educode_sales/roles_controller.rb +4 -1
  10. data/app/controllers/educode_sales/sale_trends_controller.rb +19 -9
  11. data/app/controllers/educode_sales/sales_controller.rb +3 -0
  12. data/app/controllers/educode_sales/teachers_controller.rb +41 -14
  13. data/app/models/educode_sales/customer.rb +4 -0
  14. data/app/models/educode_sales/customer_extension.rb +7 -0
  15. data/app/models/educode_sales/customer_follow.rb +5 -0
  16. data/app/models/educode_sales/permission.rb +2 -1
  17. data/app/models/educode_sales/role_area.rb +1 -0
  18. data/app/models/educode_sales/teacher.rb +2 -1
  19. data/app/models/educode_sales/teacher_assign_follow.rb +6 -0
  20. data/app/views/educode_sales/activities/index.html.erb +4 -5
  21. data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
  22. data/app/views/educode_sales/businesses/_follows.html.erb +258 -0
  23. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +69 -6
  24. data/app/views/educode_sales/businesses/index.html.erb +155 -66
  25. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -1
  26. data/app/views/educode_sales/businesses/new.html.erb +3 -0
  27. data/app/views/educode_sales/businesses/new_follow_record.html.erb +70 -6
  28. data/app/views/educode_sales/businesses/show_follow.html.erb +15 -10
  29. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
  30. data/app/views/educode_sales/businesses/show_follow_record.html.erb +8 -0
  31. data/app/views/educode_sales/businesses/time_line.html.erb +1 -1
  32. data/app/views/educode_sales/customers/edit.html.erb +60 -0
  33. data/app/views/educode_sales/customers/edit_department.html.erb +52 -0
  34. data/app/views/educode_sales/customers/edit_follow_record.html.erb +50 -0
  35. data/app/views/educode_sales/customers/give.html.erb +51 -0
  36. data/app/views/educode_sales/customers/index.html.erb +485 -0
  37. data/app/views/educode_sales/customers/index.json.jbuilder +25 -0
  38. data/app/views/educode_sales/customers/new.html.erb +89 -0
  39. data/app/views/educode_sales/customers/new_department.html.erb +53 -0
  40. data/app/views/educode_sales/customers/new_follow_record.html.erb +54 -0
  41. data/app/views/educode_sales/customers/show_department.json.jbuilder +13 -0
  42. data/app/views/educode_sales/customers/show_follow.html.erb +439 -0
  43. data/app/views/educode_sales/customers/show_follow.json.jbuilder +13 -0
  44. data/app/views/educode_sales/customers/show_follow_record.html.erb +17 -0
  45. data/app/views/educode_sales/follow_ups/index.json.jbuilder +20 -0
  46. data/app/views/educode_sales/home/sales_place.json.jbuilder +9 -0
  47. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +6 -0
  48. data/app/views/educode_sales/operation_plans/_monthly.html.erb +2 -0
  49. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +6 -0
  50. data/app/views/educode_sales/operation_plans/_weekly.html.erb +2 -0
  51. data/app/views/educode_sales/places/index.json.jbuilder +1 -1
  52. data/app/views/educode_sales/plans/_monthPlan.html.erb +5 -0
  53. data/app/views/educode_sales/plans/_monthly.html.erb +1 -0
  54. data/app/views/educode_sales/plans/_weekPlan.html.erb +5 -0
  55. data/app/views/educode_sales/plans/_weekly.html.erb +1 -0
  56. data/app/views/educode_sales/recycles/index.html.erb +1 -1
  57. data/app/views/educode_sales/roles/edit.html.erb +8 -0
  58. data/app/views/educode_sales/sale_trends/trends.html.erb +2 -2
  59. data/app/views/educode_sales/sales/index.html.erb +58 -19
  60. data/app/views/educode_sales/sales/index.json.jbuilder +31 -16
  61. data/app/views/educode_sales/sales/operations.html.erb +4 -1
  62. data/app/views/educode_sales/teachers/course_list.json.jbuilder +1 -1
  63. data/app/views/educode_sales/teachers/edit.html.erb +53 -7
  64. data/app/views/educode_sales/teachers/index.html.erb +42 -3
  65. data/app/views/educode_sales/teachers/index.json.jbuilder +6 -3
  66. data/app/views/educode_sales/teachers/new.html.erb +55 -17
  67. data/app/views/educode_sales/teachers/show_follow.html.erb +10 -5
  68. data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -0
  69. data/app/views/layouts/educode_sales/application.html.erb +8 -1
  70. data/config/routes.rb +26 -0
  71. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +15 -0
  72. data/db/migrate/20211201023750_create_educode_sales_teacher_assign_follows.rb +11 -0
  73. data/db/migrate/20211206054756_add_year_to_follow_ups.rb +5 -0
  74. data/db/migrate/20211214100803_create_customer_extensions.rb +9 -0
  75. data/db/migrate/20211215025029_create_educode_sales_customer_follows.rb +12 -0
  76. data/lib/educode_sales/version.rb +1 -1
  77. metadata +30 -2
@@ -1,66 +1,80 @@
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" autocomplete="off" class="layui-input" value="<%=params[:name] %>">
9
- </div>
10
- </div>
11
- <div class="layui-inline">
12
- <label class="layui-form-label">单位</label>
13
- <div class="layui-input-inline">
14
- <input type="text" name="department" autocomplete="off" class="layui-input">
15
- </div>
16
- </div>
17
- <div class="layui-inline">
18
- <label class="layui-form-label">销售人员</label>
19
- <div class="layui-input-inline">
20
- <%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
21
- </div>
22
- </div>
23
- <div class="layui-inline">
24
- <label class="layui-form-label">项目类型</label>
25
- <div class="layui-input-inline">
26
- <%= 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 } %>
27
- </div>
28
- </div>
29
- <div class="layui-inline m-t-10">
30
- <label class="layui-form-label">项目阶段</label>
31
- <div class="layui-input-inline">
32
- <%= select_tag "business_step", options_for_select(EducodeSales::Common.where(clazz: 'business_step').pluck(:name, :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 "place_id", options_for_select(EducodeSales::Place.pluck(:name, :id),params[:place_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 "area", options_for_select(EducodeSales::Common.where(clazz: 'area').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
- <input type="text" class="layui-input" id="date" name="date" placeholder=" - ">
51
- </div>
52
- </div>
53
- <div class="layui-inline">
54
- <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
55
- </button>
56
- <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">搜索
57
- </button>
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
- </form>
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
- title: '名称'
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: 80,
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
- search = data.field
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
- <%= select_tag "place_id", options_for_select(@places, @last_follow_up&.place_id), include_blank: true %>
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
- var assign_follow = [];
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
- request.authPost("missions/follow_ups", data.field, function (res) {
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.id ,
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: 200,
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.id);
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=' + 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.id + "/unfinish_plans",
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: 80,
351
+ width: 60,
346
352
  title:'序号',type: 'numbers',
347
353
  },
348
354
  {
349
355
  field: 'staff',
350
- width: 140,
356
+ width: 100,
351
357
  title: '姓名'
352
358
  },
353
359
  {
354
360
  field: 'month',
355
- width: 120,
361
+ width: 100,
356
362
  title: '月份',
357
363
  },
358
364
  {
359
365
  field: 'weekly',
360
- width: 120,
366
+ width: 100,
361
367
  title: '周次'
362
368
  },
363
369
  {
364
370
  field: 'content',
365
- width: 300,
366
371
  title: '计划内容'
367
372
  },
368
373
  {
@@ -18,6 +18,7 @@ json.data do
18
18
  json.money d.money_plans.where(clazz: 1).sum(:amount).round(2)
19
19
  json.is_latest d.id == @latest&.id
20
20
  json.flag d.created_at.present? ? (Time.now - d.created_at).to_f/3600 < 24 : false
21
+ json.description d.description
21
22
  end
22
23
  end
23
24
 
@@ -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=' + 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>