educode_sales 0.5.6 → 0.6.0

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 (65) 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 -3
  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 +11 -11
  8. data/app/controllers/educode_sales/home_controller.rb +9 -4
  9. data/app/controllers/educode_sales/roles_controller.rb +4 -1
  10. data/app/controllers/educode_sales/sale_trends_controller.rb +18 -7
  11. data/app/controllers/educode_sales/sales_controller.rb +3 -0
  12. data/app/controllers/educode_sales/teachers_controller.rb +12 -6
  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/views/educode_sales/businesses/_follows.html.erb +43 -18
  19. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +21 -2
  20. data/app/views/educode_sales/businesses/index.html.erb +28 -7
  21. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -1
  22. data/app/views/educode_sales/businesses/new.html.erb +3 -0
  23. data/app/views/educode_sales/businesses/new_follow_record.html.erb +21 -2
  24. data/app/views/educode_sales/businesses/show_follow.html.erb +11 -6
  25. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
  26. data/app/views/educode_sales/businesses/show_follow_record.html.erb +8 -0
  27. data/app/views/educode_sales/customers/edit.html.erb +60 -0
  28. data/app/views/educode_sales/customers/edit_department.html.erb +54 -0
  29. data/app/views/educode_sales/customers/edit_follow_record.html.erb +50 -0
  30. data/app/views/educode_sales/customers/give.html.erb +51 -0
  31. data/app/views/educode_sales/customers/index.html.erb +492 -0
  32. data/app/views/educode_sales/customers/index.json.jbuilder +25 -0
  33. data/app/views/educode_sales/customers/new.html.erb +89 -0
  34. data/app/views/educode_sales/customers/new_department.html.erb +55 -0
  35. data/app/views/educode_sales/customers/new_follow_record.html.erb +54 -0
  36. data/app/views/educode_sales/customers/show_department.json.jbuilder +13 -0
  37. data/app/views/educode_sales/customers/show_follow.html.erb +439 -0
  38. data/app/views/educode_sales/customers/show_follow.json.jbuilder +13 -0
  39. data/app/views/educode_sales/customers/show_follow_record.html.erb +17 -0
  40. data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -0
  41. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +6 -0
  42. data/app/views/educode_sales/operation_plans/_monthly.html.erb +2 -0
  43. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +6 -0
  44. data/app/views/educode_sales/operation_plans/_weekly.html.erb +2 -0
  45. data/app/views/educode_sales/places/index.json.jbuilder +1 -1
  46. data/app/views/educode_sales/plans/_monthPlan.html.erb +5 -0
  47. data/app/views/educode_sales/plans/_monthly.html.erb +1 -0
  48. data/app/views/educode_sales/plans/_weekPlan.html.erb +5 -0
  49. data/app/views/educode_sales/plans/_weekly.html.erb +1 -0
  50. data/app/views/educode_sales/roles/edit.html.erb +8 -0
  51. data/app/views/educode_sales/sales/index.html.erb +70 -19
  52. data/app/views/educode_sales/sales/index.json.jbuilder +38 -16
  53. data/app/views/educode_sales/sales/operations.html.erb +2 -1
  54. data/app/views/educode_sales/teachers/index.html.erb +7 -2
  55. data/app/views/educode_sales/teachers/index.json.jbuilder +2 -2
  56. data/app/views/educode_sales/teachers/show_follow.html.erb +10 -5
  57. data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -0
  58. data/app/views/layouts/educode_sales/application.html.erb +8 -1
  59. data/config/routes.rb +25 -0
  60. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +15 -0
  61. data/db/migrate/20211206054756_add_year_to_follow_ups.rb +5 -0
  62. data/db/migrate/20211214100803_create_customer_extensions.rb +9 -0
  63. data/db/migrate/20211215025029_create_educode_sales_customer_follows.rb +12 -0
  64. data/lib/educode_sales/version.rb +1 -1
  65. metadata +25 -2
@@ -4,25 +4,25 @@
4
4
  <div class="layui-inline">
5
5
  <label class="layui-form-label">所属商机</label>
6
6
  <div class="layui-input-inline">
7
- <input type="text" name="follows_business" autocomplete="off" class="layui-input">
7
+ <input type="text" name="name" autocomplete="off" class="layui-input">
8
8
  </div>
9
9
  </div>
10
10
  <div class="layui-inline">
11
11
  <label class="layui-form-label">单位</label>
12
12
  <div class="layui-input-inline">
13
- <input type="text" name="follows_department" autocomplete="off" class="layui-input">
13
+ <input type="text" name="department" autocomplete="off" class="layui-input">
14
14
  </div>
15
15
  </div>
16
16
  <div class="layui-inline">
17
17
  <label class="layui-form-label">销售人员</label>
18
18
  <div class="layui-input-inline">
19
- <%= select_tag "follows_staff_id", options_for_select(@staffs, params[:follows_staff_id]), { 'lay-filter': 'follows_staff_id', include_blank: true } %>
19
+ <%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
20
20
  </div>
21
21
  </div>
22
22
  <div class="layui-inline">
23
23
  <label class="layui-form-label">区域</label>
24
24
  <div class="layui-input-inline">
25
- <%= select_tag "follows_area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
25
+ <%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
26
26
  </div>
27
27
  </div>
28
28
  <div class="layui-inline">
@@ -80,6 +80,10 @@
80
80
  // where: {q: form.val('search_form')},
81
81
  toolbar: '#toolbarDemo_follows',
82
82
  defaultToolbar: ['filter'],
83
+ initSort: {
84
+ field: 'created_at' //排序字段,对应 cols 设定的各字段名
85
+ ,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
86
+ },
83
87
  cols: [
84
88
  [
85
89
  {
@@ -90,27 +94,43 @@
90
94
  {
91
95
  field: 'description',
92
96
  title: '最新进展',
97
+ templet:'<div><span title="{{d.description}}">{{d.description}}</span></div>'
93
98
  },
94
99
  {
95
100
  field: 'advise',
96
- width: 170,
101
+ width: 120,
97
102
  title: '团队建议',
103
+ templet:'<div><span title="{{d.advise}}">{{d.advise}}</span></div>'
98
104
  },
99
105
  {
100
106
  field: 'clazz',
101
107
  width: 80,
102
- title: '类型'
108
+ title: '类型',
109
+ templet:'<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>'
103
110
  },
104
111
  {
105
112
  field: 'stage',
106
113
  title: '阶段',
107
114
  width: 90,
115
+ templet:'<div><span title="{{d.stage}}">{{d.stage}}</span></div>'
108
116
  },
109
117
  {
110
118
  field: 'key_people',
111
119
  width: 90,
112
120
  title: '关键人',
113
-
121
+ templet:'<div><span title="{{d.key_people}}">{{d.key_people}}</span></div>'
122
+ },
123
+ {
124
+ field: 'business',
125
+ width: 120,
126
+ title: '所属商机',
127
+ templet:'#business'
128
+ },
129
+ {
130
+ field: 'school',
131
+ width: 120,
132
+ title: '单位',
133
+ templet:'<div><span title="{{d.school}}">{{d.school}}</span></div>'
114
134
  },
115
135
  {
116
136
  field: 'staff',
@@ -119,15 +139,11 @@
119
139
  },
120
140
  {
121
141
  field: 'created_at',
122
- width: 170,
142
+ width: 120,
123
143
  title: '跟进时间',
124
144
  sort: true,
125
- },
126
- {
127
- field: 'business',
128
- width: 150,
129
- title: '所属商机',
130
- templet:'#business'
145
+ templet:'<div><span title="{{d.created_at}}">{{d.created_at}}</span></div>'
146
+
131
147
  },
132
148
  {
133
149
  title: '操作',
@@ -169,17 +185,26 @@
169
185
  },
170
186
  where: {q: search, sort: sort}
171
187
  }, 'data');
188
+ table.reload('businesses_table', {
189
+ page: {
190
+ curr: 1
191
+ },
192
+ where: {q: search, sort: sort}
193
+ }, 'data');
194
+ form.val('search_form', {
195
+ name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area
196
+ })
172
197
  return false;
173
198
  });
174
199
 
175
200
  form.on('submit(reset_follows_search)', function (data) {
176
201
  var field = data.field;
177
202
  form.val('search_follows', {
178
- follows_area: "",
203
+ area: "",
179
204
  follows_date: "",
180
- follows_business: "",
181
- follows_department: "",
182
- follows_staff_id: ""
205
+ name: "",
206
+ department: "",
207
+ staff_id: ""
183
208
  })
184
209
  return false;
185
210
  });
@@ -77,7 +77,7 @@
77
77
  </div>
78
78
  </div>
79
79
  <br>
80
- <div class="layui-inline">
80
+ <div class="layui-inline place_select">
81
81
  <label class="layui-form-label">渠道</label>
82
82
  <div class="layui-input-inline" style="z-index: 101">
83
83
  <div id="edit_place" style="width: 190px;"></div>
@@ -89,6 +89,15 @@
89
89
  <input name="divide_amount" class="layui-input" value="<%= @follow_up.divide_amount%>">
90
90
  </div>
91
91
  </div>
92
+ <div class="layui-form-item">
93
+ <div class="layui-inline">
94
+ <label class="layui-form-label required">所属年度</label>
95
+ <div class="layui-input-inline">
96
+ <input type="text" class="layui-input" name="year" lay-verify="required" autocomplete="off" id="edit_year"
97
+ value="<%= @follow_up&.year%>"
98
+ placeholder="请选择年度"> </div>
99
+ </div>
100
+ </div>
92
101
  <div class="layui-form-item">
93
102
  <label class="layui-form-label">指定跟进人</label>
94
103
  <div class="layui-input-inline">
@@ -141,6 +150,10 @@
141
150
  laydate.render({
142
151
  elem: '#invitation_at_edit'
143
152
  })
153
+ laydate.render({
154
+ elem: '#edit_year',
155
+ type: 'year'
156
+ })
144
157
 
145
158
  laydate.render({
146
159
  elem: '#reception_at_edit'
@@ -234,6 +247,7 @@
234
247
  parent.layer.close(parent.layer.getFrameIndex(window.name))
235
248
  parent.table.reload('sale_plan_follow_table')
236
249
  parent.table.reload('businesses_table')
250
+ parent.table.reload('teachers_table')
237
251
  }
238
252
  })
239
253
 
@@ -242,4 +256,9 @@
242
256
  });
243
257
 
244
258
  });
245
- </script>
259
+ </script>
260
+ <style>
261
+ .place_select xm-select > .xm-body{
262
+ width: 300px; !important;
263
+ }
264
+ </style>
@@ -23,7 +23,7 @@
23
23
  <div class="layui-inline">
24
24
  <label class="layui-form-label">单位</label>
25
25
  <div class="layui-input-inline">
26
- <input type="text" name="department" autocomplete="off" class="layui-input">
26
+ <input type="text" name="department" autocomplete="off" value="<%=params[:school] %>" class="layui-input">
27
27
  </div>
28
28
  </div>
29
29
  <div class="layui-inline">
@@ -38,7 +38,7 @@
38
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
39
  </div>
40
40
  </div>
41
- <div class="layui-inline m-t-10">
41
+ <div class="layui-inline">
42
42
  <label class="layui-form-label">项目阶段</label>
43
43
  <div class="layui-input-inline">
44
44
  <%= select_tag "business_step", options_for_select(EducodeSales::Common.where(clazz: 'business_step').pluck(:name, :id)), { include_blank: true } %>
@@ -123,7 +123,7 @@
123
123
  range: true
124
124
  });
125
125
 
126
- var is_show = <%=params[:name].present? || params[:clazz_id].present? %>
126
+ var is_show = <%=params[:name].present? || params[:clazz_id].present? || params[:place_id].present? || params[:school].present? %>
127
127
  if(is_show){
128
128
  $('.follows_li').removeClass('layui-this');
129
129
  $('.follows_div').removeClass('layui-show');
@@ -174,6 +174,7 @@
174
174
  })
175
175
  }
176
176
  })
177
+ index_place_list.setValue(gon.place)
177
178
 
178
179
 
179
180
  table = layui.table;
@@ -195,17 +196,20 @@
195
196
  {
196
197
  field: 'name',
197
198
  width: 170,
198
- title: '名称'
199
+ title: '名称',
200
+ templet:'<div><span title="{{d.name}}">{{d.name}}</span></div>'
199
201
  },
200
202
  {
201
203
  field: 'school',
202
204
  width: 150,
203
205
  title: '单位',
206
+ templet:'<div><span title="{{d.school}}">{{d.school}}</span></div>'
204
207
  },
205
208
  {
206
209
  field: 'department',
207
210
  width: 150,
208
- title: '部门'
211
+ title: '部门',
212
+ templet:'<div><span title="{{d.department}}">{{d.department}}</span></div>'
209
213
  },
210
214
  {
211
215
  field: 'follow_ups_count',
@@ -223,7 +227,8 @@
223
227
  {
224
228
  field: 'clazz',
225
229
  width: 80,
226
- title: '类型'
230
+ title: '类型',
231
+ templet:'<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>'
227
232
  },
228
233
  {
229
234
  field: 'stage',
@@ -278,7 +283,7 @@
278
283
  {
279
284
  field: 'place',
280
285
  width: 160,
281
- title: '渠道'
286
+ title: '渠道',
282
287
  },
283
288
  {
284
289
  field: 'source',
@@ -479,6 +484,15 @@
479
484
  },
480
485
  where: {q: search, sort: sort}
481
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
+ })
482
496
 
483
497
  return false;
484
498
  });
@@ -694,4 +708,11 @@
694
708
  .layui-table-tool-temp{
695
709
  padding-right: 30px; !important;
696
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
+
697
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,7 +83,7 @@
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
88
  <div class="layui-input-inline" style="z-index: 101">
89
89
  <div id="place" style="width: 190px;"></div>
@@ -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
  })
@@ -246,6 +259,7 @@
246
259
  parent.layer.close(parent.layer.getFrameIndex(window.name))
247
260
  parent.table.reload('sale_plan_follow_table')
248
261
  parent.table.reload('businesses_table')
262
+ parent.table.reload('teachers_table')
249
263
  }
250
264
  })
251
265
 
@@ -254,4 +268,9 @@
254
268
  });
255
269
 
256
270
  });
257
- </script>
271
+ </script>
272
+ <style>
273
+ .new_place_select xm-select > .xm-body{
274
+ width: 300px; !important;
275
+ }
276
+ </style>
@@ -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
  {
@@ -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') { // 监听添加操作
@@ -342,27 +348,26 @@
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">
@@ -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>
@@ -0,0 +1,54 @@
1
+ <div class="layuimini-main">
2
+ <form class="layui-form layuimini-form" action="">
3
+ <div class="layui-form-item" style="padding: 25px">
4
+ <div class="layui-form-item" style="padding: 25px">
5
+ <div class="layui-inline">
6
+ <label class="layui-form-label required">部门名称</label>
7
+ <div class="layui-input-block" style="width: 300px;">
8
+ <input type="text" name="department_name" required lay-verify="required" autocomplete="off" placeholder="请输入"
9
+ class="layui-input" id="inputFocus" value="<%=@department.name %>">
10
+ </div>
11
+ </div>
12
+ </div>
13
+ <div class="layui-form-item" style="padding-left: 130px">
14
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-edit">提交
15
+ </button>
16
+ </div>
17
+ </div>
18
+ </form>
19
+ </div>
20
+
21
+ <script>
22
+
23
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
24
+ var form = layui.form,
25
+ layer = layui.layer,
26
+ table = layui.table,
27
+ transfer = layui.transfer,
28
+ laytpl = layui.laytpl,
29
+ request = layui.request,
30
+ laydate = layui.laydate,
31
+ $ = layui.$;
32
+
33
+
34
+
35
+ form.render();
36
+
37
+ // 当前弹出层,防止ID被覆盖
38
+ var parentIndex = layer.index;
39
+
40
+
41
+ //监听提交
42
+ form.on('submit(data-edit)', function (data) {
43
+ request.authPut("missions/customers/"+ parent.department_id +"/update_department", data.field, function (res) {
44
+ if (res.success === false) {
45
+ layer.alert(res.msg)
46
+ } else {
47
+ layer.close(parent.edit_index1);
48
+ table.reload('sale_plan_follow_table')
49
+ }
50
+ })
51
+ return false;
52
+ });
53
+ });
54
+ </script>
@@ -0,0 +1,50 @@
1
+ <h1 class="text-center" style="padding: 25px"><%=@school.name %></h1>
2
+ <form class="layui-form layuimini-form " action="">
3
+ <div class="layui-form-item layui-form-text" style="padding-right: 30px">
4
+ <label class="layui-form-label required">跟进内容</label>
5
+ <div class="layui-input-block">
6
+ <textarea name="content" placeholder="请输入跟进内容" lay-verify="required" style="height: 200px" class="layui-textarea" ><%=@follow_up.content %></textarea>
7
+ </div>
8
+ </div>
9
+ <div class="layui-form-item ">
10
+ <label class="layui-form-label">跟进部门</label>
11
+ <div class="layui-input-inline" style="width: 300px;">
12
+ <%= select_tag "department_id",options_for_select(@school.departments.pluck(:name, :id),@follow_up.department_id)%>
13
+ </div>
14
+ </div>
15
+ <div class="layui-form-item " style="padding-left: 110px">
16
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit_follow_up">提交
17
+ </button>
18
+ </div>
19
+ </form>
20
+ <script>
21
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
22
+ var form = layui.form,
23
+ layer = layui.layer,
24
+ table = layui.table,
25
+ laytpl = layui.laytpl,
26
+ request = layui.request,
27
+ laydate = layui.laydate,
28
+ $ = layui.$;
29
+
30
+
31
+ form.render();
32
+
33
+ form.on('submit(edit_follow_up)', function (data) {
34
+ request.authPut("missions/customer_follows/<%= @follow_up.id%>", data.field, function (res) {
35
+ if (res.success == false) {
36
+ layer.alert(res.msg)
37
+ } else {
38
+ layer.close(parent.editFollowIndex);
39
+ parent.layer.close(parent.layer.getFrameIndex(window.name))
40
+ parent.table.reload('customers_table')
41
+ parent.table.reload('unfinish_table')
42
+ }
43
+ })
44
+
45
+
46
+ return false;
47
+ });
48
+
49
+ });
50
+ </script>
@@ -0,0 +1,51 @@
1
+ <%= Gon::Base.render_data %>
2
+ <form class="layui-form " action="">
3
+ <div class="layui-form-item" style="padding: 25px">
4
+ <div class="layui-inline">
5
+ <label class="layui-form-label required">负责人</label>
6
+ <div class="layui-input-block">
7
+ <%= select_tag "staff_id", options_for_select(@staffs), { include_blank: true } %>
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="data-reset-btn">提交
12
+ </button>
13
+ </div>
14
+ </div>
15
+ </form>
16
+
17
+
18
+ <script>
19
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
20
+ var form = layui.form,
21
+ layer = layui.layer,
22
+ table = layui.table,
23
+ transfer = layui.transfer,
24
+ laytpl = layui.laytpl,
25
+ request = layui.request,
26
+ $ = layui.$;
27
+
28
+ form.render();
29
+
30
+ // 当前弹出层,防止ID被覆盖
31
+ var parentIndex = layer.index;
32
+
33
+
34
+
35
+ //监听提交
36
+ form.on('submit(data-reset-btn)', function (data) {
37
+ var school_ids = parent.ids
38
+ data.field['school_ids'] = school_ids;
39
+ console.log(data.field);
40
+ request.authPost("missions/customer_extensions", data.field, function (res) {
41
+ if (res.success === false) {
42
+ layer.alert(res.msg)
43
+ } else {
44
+ layer.closeAll(); //关闭所有层
45
+ table.reload('customers_table')
46
+ }
47
+ })
48
+ return false;
49
+ });
50
+ });
51
+ </script>