educode_sales 0.9.66 → 0.9.68

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/activities_controller.rb +122 -40
  3. data/app/controllers/educode_sales/businesses_controller.rb +83 -2
  4. data/app/controllers/educode_sales/operation_plans_controller.rb +8 -4
  5. data/app/controllers/educode_sales/plans_controller.rb +173 -11
  6. data/app/controllers/educode_sales/recycles_controller.rb +11 -1
  7. data/app/controllers/educode_sales/teachers_controller.rb +4 -4
  8. data/app/controllers/educode_sales/upload_files_controller.rb +9 -2
  9. data/app/models/educode_sales/activity.rb +21 -4
  10. data/app/models/educode_sales/activity_follow_up.rb +13 -0
  11. data/app/models/educode_sales/activity_staff.rb +1 -1
  12. data/app/models/educode_sales/assessments_setting.rb +2 -2
  13. data/app/models/educode_sales/business.rb +3 -0
  14. data/app/models/educode_sales/business_info.rb +9 -0
  15. data/app/models/educode_sales/business_level.rb +11 -0
  16. data/app/models/educode_sales/business_watch.rb +6 -0
  17. data/app/models/educode_sales/sale_plan.rb +3 -1
  18. data/app/models/educode_sales/staff.rb +2 -0
  19. data/app/views/educode_sales/activities/_follows.html.erb +222 -0
  20. data/app/views/educode_sales/activities/_index.html.erb +491 -0
  21. data/app/views/educode_sales/activities/edit.html.erb +109 -53
  22. data/app/views/educode_sales/activities/files.html.erb +157 -0
  23. data/app/views/educode_sales/activities/files.json.jbuilder +13 -0
  24. data/app/views/educode_sales/activities/follow_ups.json.jbuilder +19 -0
  25. data/app/views/educode_sales/activities/index.html.erb +13 -349
  26. data/app/views/educode_sales/activities/index.json.jbuilder +11 -3
  27. data/app/views/educode_sales/activities/new.html.erb +87 -46
  28. data/app/views/educode_sales/activities/new_follow_up.html.erb +56 -0
  29. data/app/views/educode_sales/activities/upload_file.html.erb +43 -0
  30. data/app/views/educode_sales/businesses/edit.html.erb +48 -6
  31. data/app/views/educode_sales/businesses/get_export_data.json.jbuilder +3 -0
  32. data/app/views/educode_sales/businesses/index.html.erb +10 -0
  33. data/app/views/educode_sales/businesses/new.html.erb +1 -1
  34. data/app/views/educode_sales/businesses/no_permission.html.erb +2 -0
  35. data/app/views/educode_sales/plans/_yearPlan.html.erb +234 -0
  36. data/app/views/educode_sales/plans/business_infos.json.jbuilder +23 -0
  37. data/app/views/educode_sales/plans/edit_bussiness_info.html.erb +79 -0
  38. data/app/views/educode_sales/plans/edit_bussiness_info_extra.html.erb +260 -0
  39. data/app/views/educode_sales/plans/edit_year_plan.html.erb +237 -0
  40. data/app/views/educode_sales/plans/index.html.erb +8 -0
  41. data/app/views/educode_sales/plans/new_year.html.erb +204 -0
  42. data/app/views/educode_sales/plans/plan_business_infos.json.jbuilder +42 -0
  43. data/app/views/educode_sales/plans/years_plan.json.jbuilder +17 -0
  44. data/app/views/educode_sales/recycles/_monthly.html.erb +1 -1
  45. data/app/views/educode_sales/recycles/_yearPlan.html.erb +118 -0
  46. data/app/views/educode_sales/recycles/index.html.erb +26 -22
  47. data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +0 -1
  48. data/app/views/educode_sales/recycles/yearPlan.json.jbuilder +14 -0
  49. data/config/routes.rb +22 -0
  50. data/db/migrate/20230329135141_create_educode_sales_business_watches.rb +17 -0
  51. data/db/migrate/20230330141213_create_educode_sales_activity_follow_ups.rb +31 -0
  52. data/db/migrate/20230405074036_add_year_to_sale_plans.rb +38 -0
  53. data/lib/educode_sales/version.rb +1 -1
  54. metadata +31 -7
  55. data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -1,350 +1,14 @@
1
- <script type="text/html" id="activity_toolbar">
2
- <div class="layui-btn-container">
3
- <span class="table-label">活动列表</span>
4
- <% if can? :create, EducodeSales::Activity %>
5
- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="import">导入数据</button>
6
- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加活动</button>
7
- <% end %>
8
- </div>
9
- </script>
10
- <div style="margin: 10px 10px 10px 10px">
11
- <form class="layui-form layui-form-pane" lay-filter="search_ideas">
12
- <div class="layui-form-item">
13
- <div class="layui-inline ">
14
- <label class="layui-form-label">活动名称</label>
15
- <div class="layui-input-inline">
16
- <input type="text" class="layui-input" name="name" autocomplete="off">
17
- </div>
18
- </div>
19
- <div class="layui-inline">
20
- <label class="layui-form-label">会议类型</label>
21
- <div class="layui-input-inline">
22
- <%= select_tag "clazz_id", options_for_select(['全国会议', '区域会议', '单校会议', '国赛', '省赛', '夏令营'], ""), { include_blank: true } %>
23
- </div>
24
- </div>
25
- <div class="layui-inline">
26
- <label class="layui-form-label">销售经理</label>
27
- <div class="layui-input-inline">
28
- <%= select_tag "staff_id", options_for_select(@staffs, ""), { include_blank: true } %>
29
- </div>
30
- </div>
31
- <div class="layui-inline">
32
- <label class="layui-form-label">生态经理</label>
33
- <div class="layui-input-inline">
34
- <%= select_tag "manage", options_for_select(@staffs, ""), { include_blank: true } %>
35
- </div>
36
- </div>
37
- <div class="layui-inline">
38
- <label class="layui-form-label">协助人员</label>
39
- <div class="layui-input-inline">
40
- <%= select_tag "assists", options_for_select(@staffs, ""), { include_blank: true } %>
41
- </div>
42
- </div>
43
- <div class="layui-inline">
44
- <label class="layui-form-label">报告专家</label>
45
- <div class="layui-input-inline">
46
- <input type="text" class="layui-input" name="expert" autocomplete="off">
47
- </div>
48
- </div>
49
- <div class="layui-inline">
50
- <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_activity_search">重置
51
- </button>
52
- <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_activity">搜 索
53
- </button>
54
- </div>
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 layui-show">
8
+ <%= render 'follows' %>
9
+ </div>
10
+ <div class="layui-tab-item follows_div">
11
+ <%= render 'index' %>
55
12
  </div>
56
- </form>
57
- </div>
58
- <div class="min-height-table">
59
- <table class="layui-hide" id="activities_table" lay-filter="activities_table"></table>
60
- </div>
61
-
62
- <script type="text/html" id="currentTableBar">
63
- <% if can? :update, EducodeSales::Activity %>
64
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
65
- <% end %>
66
- <% if can? :destroy, EducodeSales::Activity %>
67
- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
68
- <% end %>
69
- </script>
70
-
71
- <script type="text/html" id="teachers">
72
- <a href="javascript:void(0);" lay-event="teachers" class="layui-table-link">{{ d.name}}</a>
73
- </script>
74
- <script type="text/html" id="teachers_count">
75
- <a href="javascript:void(0);" lay-event="teachers_count" class="layui-table-link">{{ d.teachers_count}}</a>
76
- </script>
77
- <script type="text/html" id="schools_count">
78
- <a href="javascript:void(0);" lay-event="schools_count" class="layui-table-link">{{ d.schools_count}}</a>
79
- </script>
80
- <script>
81
- layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
82
- var $ = layui.jquery,
83
- form = layui.form,
84
- table = layui.table,
85
- request = layui.request,
86
- miniPage = layui.miniPage;
87
-
88
- table.render({
89
- elem: '#activities_table',
90
- url: '/missions/activities',
91
- toolbar: '#activity_toolbar',
92
- totalRow:true,
93
- defaultToolbar: [],
94
- cols: [
95
- [
96
- {
97
- field: 'id',
98
- title:'序号',type: 'numbers',
99
- totalRowText:'合计',
100
- width: 60
101
- },
102
- {
103
- field: 'name',
104
- title: '活动名称',
105
- width: 180,
106
- templet: '#teachers'
107
- },
108
- {
109
- field: 'clazz_id',
110
- width: 120,
111
- title: '会议类型'
112
- },
113
- {
114
- field: 'staff',
115
- width: 120,
116
- title: '销售经理'
117
- },
118
- {
119
- field: 'staff_manage',
120
- width: 180,
121
- title: '生态经理'
122
- },
123
- {
124
- field: 'staff_assist',
125
- width: 180,
126
- title: '协助人员'
127
- },
128
- {
129
- field: 'expert',
130
- width: 180,
131
- title: '报告专家'
132
- },
133
- {
134
- field: 'start_at',
135
- width: 200,
136
- title: '时间',
137
- sort: true,
138
- },
139
- {
140
- field: 'days',
141
- title: '天数',
142
- width: 200
143
- },
144
- {
145
- field: 'schools_count',
146
- title: '学校数',
147
- width: 200,
148
- totalRow: true,
149
- templet: '#schools_count'
150
- },
151
- {
152
- field: 'teachers_count',
153
- title: '教师数',
154
- width: 200,
155
- totalRow:true,
156
- templet: '#teachers_count'
157
- },
158
- {
159
- field: 'students_count',
160
- title: '学生数',
161
- totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
162
- width: 200
163
- },
164
- {
165
- title: '操作',
166
- width: 120,
167
- fixed: 'right',
168
- toolbar: '#currentTableBar',
169
- align: "center"
170
- }
171
- ]
172
- ],
173
- limit: 20,
174
- limits: [10,15,20,30,40,50,60,70,80,90],
175
- page: true
176
- });
177
-
178
- var sort = {};
179
- table.on('sort(activities_table)', function (obj) {
180
- sort.field = obj.field;
181
- sort.order = obj.type;
182
- table.reload('activities_table', {
183
- initSort: obj,
184
- where: {
185
- sort: sort
186
- }
187
- });
188
- })
189
- // 监听搜索操作
190
- form.on('submit(search_activity)', function (data) {
191
- search = data.field
192
- table.reload('activities_table', {
193
- page: {
194
- curr: 1
195
- },
196
- where: {q: search, sort: sort}
197
- }, 'data');
198
- return false;
199
- });
200
- table.on('toolbar(activities_table)', function (obj) {
201
- if (obj.event === 'add') { // 监听添加操作
202
- var content = miniPage.getHrefContent('/missions/activities/new');
203
- var openWH = miniPage.getOpenWidthHeight();
204
- index = layer.open({
205
- title: '添加活动',
206
- type: 1,
207
- shade: 0.2,
208
- maxmin: true,
209
- shadeClose: true,
210
- area: [openWH[0] + 'px', openWH[1] + 'px'],
211
- offset: [openWH[2] + 'px', openWH[3] + 'px'],
212
- content: content,
213
- success: function (layero, index) {
214
- form.render('select');
215
- }
216
- });
217
- $(window).on("resize", function () {
218
- layer.full(index);
219
- });
220
- }
221
- else if (obj.event === 'import') { //
222
- var content = miniPage.getHrefContent('/missions/teachers/import');
223
- var openWH = miniPage.getOpenWidthHeight();
224
- import_index = layer.open({
225
- title: '导入数据',
226
- type: 1,
227
- shade: 0.2,
228
- shadeClose: true,
229
- area: ['200px', '100px'],
230
- offset: 'auto',
231
- closeBtn: 0,
232
- content: content,
233
- });
234
- $(window).on("resize", function () {
235
- layer.full(index);
236
- });
237
- }
238
- });
239
-
240
- table.on('tool(activities_table)', function (obj) {
241
- var data = obj.data;
242
- var id = data.id
243
- if (obj.event === 'edit') {
244
- var content = miniPage.getHrefContent('/missions/activities/' + id + '/edit');
245
- var openWH = miniPage.getOpenWidthHeight();
246
- var index = layer.open({
247
- title: '编辑',
248
- type: 1,
249
- shade: 0.2,
250
- maxmin: true,
251
- shadeClose: true,
252
- area: [openWH[0] + 'px', openWH[1] + 'px'],
253
- offset: [openWH[2] + 'px', openWH[3] + 'px'],
254
- content: content,
255
- success: function (layero, index) {
256
- console.log(data);
257
- // $("#name").val(data.name);
258
- // 重新渲染弹层中的下拉选择框select
259
- form.render('select');
260
- },
261
- });
262
- $(window).on("resize", function () {
263
- layer.full(index);
264
- });
265
- return false;
266
- } else if (obj.event === 'delete') {
267
- layer.confirm('确定删除' + data.name, function (index) {
268
- request.delete('missions/activities/' + data.id, {}, function (res) {
269
- layer.close(index);
270
- table.reload("activities_table")
271
- })
272
- });
273
- } else if (obj.event === 'teachers') {
274
- activity_id = obj.data.id
275
- var content = miniPage.getHrefContent('/missions/activities/show_teachers');
276
- openWH = miniPage.getOpenWidthHeight();
277
- index = layer.open({
278
- title: '活动列表/' + data.name,
279
- type: 1,
280
- shade: 0.2,
281
- maxmin: true,
282
- shadeClose: true,
283
- area: [openWH[0] + 'px', openWH[1] + 'px'],
284
- offset: [openWH[2] + 'px', openWH[3] + 'px'],
285
- content: content,
286
- success: function (layero, index) {
287
- form.render('select');
288
- },
289
- });
290
- $(window).on("resize", function () {
291
- layer.full(index);
292
- });
293
- return false;
294
- }
295
- else if (obj.event === 'teachers_count') {
296
- activity_id = obj.data.id;
297
- school_id = '';
298
- content = miniPage.getHrefContent('/missions/activities/show_teachers');
299
- openWH = miniPage.getOpenWidthHeight();
300
- index2 = layer.open({
301
- title: '活动列表/' + data.name,
302
- type: 1,
303
- shade: 0.2,
304
- maxmin: true,
305
- shadeClose: true,
306
- area: [openWH[0] + 'px', openWH[1] + 'px'],
307
- offset: [openWH[2] + 'px', openWH[3] + 'px'],
308
- content: content,
309
- success: function (layero, index) {
310
- form.render('select');
311
- },
312
- });
313
- $(window).on("resize", function () {
314
- layer.full(index);
315
- });
316
- return false;
317
- } else if (obj.event == 'schools_count') {
318
- activity_id = obj.data.id;
319
- activity_name = data.name;
320
- school_id = '';
321
- content = miniPage.getHrefContent('/missions/activities/' + obj.data.id +'/show_schools');
322
- openWH = miniPage.getOpenWidthHeight();
323
- index2 = layer.open({
324
- title: '活动列表/' + data.name,
325
- type: 1,
326
- shade: 0.2,
327
- maxmin: true,
328
- shadeClose: true,
329
- area: [openWH[0] + 'px', openWH[1] + 'px'],
330
- offset: [openWH[2] + 'px', openWH[3] + 'px'],
331
- content: content,
332
- success: function (layero, index) {
333
- form.render('select');
334
- },
335
- });
336
- $(window).on("resize", function () {
337
- layer.full(index);
338
- });
339
- return false;
340
- }
341
- });
342
-
343
- });
344
- </script>
345
- <style>
346
- .layui-table-tool-temp{
347
- padding-right: 30px; !important;
348
- }
349
-
350
- </style>
13
+ </div>
14
+ </div>
@@ -12,10 +12,18 @@ json.data do
12
12
  json.course_rate d.course_rate
13
13
  json.start_at d.start_at ? d.start_at.to_s(:date) : ''
14
14
  json.clazz_id d.clazz_id
15
- json.staff d.staff&.user&.real_name
15
+ json.staff d.sales&.user&.real_name || d.staff&.user&.real_name
16
16
  json.staff_manage d.manages.map { |d| d.staff.user.real_name}.uniq.join("、")
17
- json.staff_assist d.assists.map { |d| d.staff.user.real_name}.uniq.join("、")
18
- json.expert d.experts.pluck(:name).join("、")
17
+ json.staff_assist d.assists.pluck(:name).join("、")
18
+ json.invitations d.invitations.pluck(:name).join("、")
19
+ json.sponsor d.sponsor
20
+ json.linkman d.linkman
21
+ json.phone d.phone
22
+ json.scale d.scale
23
+ json.address d.address
24
+ json.meeting_form d.meeting_form
25
+ json.state_id d.state_id
26
+ json.advise d.last_follow_up&.advise || ''
19
27
 
20
28
  json.schools_count EducodeSales::ActivityTeacher.joins(teacher: :department).where(activity_id: d.id).select("distinct(school_id)").count
21
29
  schools_count += EducodeSales::ActivityTeacher.joins(teacher: :department).where(activity_id: d.id).select("distinct(school_id)").count
@@ -4,57 +4,90 @@
4
4
  <div class="layui-form-item">
5
5
  <div class="layui-inline">
6
6
  <label class="layui-form-label required">活动名称</label>
7
- <div class="layui-input-block">
7
+ <div class="layui-input-block" style="width: 200px;">
8
8
  <input type="text" name="name" required lay-verify="required" placeholder="请输入" class="layui-input" id="inputFocus">
9
9
  </div>
10
10
  </div>
11
11
  <div class="layui-inline">
12
12
  <label class="layui-form-label required">活动类型</label>
13
- <div class="layui-input-block">
13
+ <div class="layui-input-block" style="width: 200px;">
14
14
  <%= select_tag "clazz_id", options_for_select(@clazz), { 'lay-filter': 'clazz_id', class: 'required' } %>
15
15
  </div>
16
16
  </div>
17
+ <div class="layui-inline">
18
+ <label class="layui-form-label required">活动状态</label>
19
+ <div class="layui-input-block" style="width: 200px;">
20
+ <%= select_tag "state_id", options_for_select(EducodeSales::Activity.state_ids.keys), { 'lay-filter': 'clazz_id', class: 'required' } %>
21
+ </div>
22
+ </div>
17
23
  <div class="layui-inline">
18
24
  <label class="layui-form-label required">活动时间</label>
19
- <div class="layui-input-block">
25
+ <div class="layui-input-block" style="width: 200px;">
20
26
  <input type="text" name="start_at" autocomplete="off" required lay-verify="required" class="layui-input" id="new_time" placeholder="请选择时间">
21
27
  </div>
22
28
  </div>
23
29
  <div class="layui-inline">
24
30
  <label class="layui-form-label required">活动天数</label>
25
- <div class="layui-input-block">
31
+ <div class="layui-input-block" style="width: 200px;">
26
32
  <input type="text" name="days" required lay-verify="required" class="layui-input">
27
33
  </div>
28
34
  </div>
29
35
  <div class="layui-inline">
30
36
  <label class="layui-form-label">生态经理</label>
31
37
  <div class="layui-input-block">
32
- <div id="staff_manage_list" style="width: 163px;"></div>
38
+ <div id="staff_manage_list" style="width: 200px;"></div>
33
39
  </div>
34
40
  </div>
35
41
  <div class="layui-inline">
36
- <label class="layui-form-label">协助人员</label>
37
- <div class="layui-input-block">
38
- <div id="staff_assist_list" style="width: 193px;"></div>
42
+ <label class="layui-form-label">主办方</label>
43
+ <div class="layui-input-block" style="width: 200px;">
44
+ <input type="text" name="sponsor" class="layui-input">
39
45
  </div>
40
46
  </div>
41
47
  <div class="layui-inline">
42
- <label class="layui-form-label">报告专家</label>
48
+ <label class="layui-form-label">联系人</label>
49
+ <div class="layui-input-block" style="width: 200px;">
50
+ <input type="text" name="linkman" class="layui-input">
51
+ </div>
52
+ </div>
53
+ <div class="layui-inline">
54
+ <label class="layui-form-label">联系电话</label>
55
+ <div class="layui-input-block" style="width: 200px;">
56
+ <input type="text" name="phone" class="layui-input">
57
+ </div>
58
+ </div>
59
+ <div class="layui-inline">
60
+ <label class="layui-form-label">规模</label>
61
+ <div class="layui-input-block" style="width: 200px;">
62
+ <input type="text" name="scale" class="layui-input">
63
+ </div>
64
+ </div>
65
+ <div class="layui-inline">
66
+ <label class="layui-form-label">会议地点</label>
67
+ <div class="layui-input-block" style="width: 200px;">
68
+ <input type="text" name="address" class="layui-input">
69
+ </div>
70
+ </div>
71
+ <div class="layui-inline">
72
+ <label class="layui-form-label">会议形式</label>
73
+ <div class="layui-input-block" style="width: 200px;">
74
+ <input type="text" name="meeting_form" class="layui-input">
75
+ </div>
76
+ </div>
77
+ <div class="layui-inline">
78
+ <label class="layui-form-label">邀请专家</label>
43
79
  <div class="layui-input-block">
44
- <div id="expert_list" style="width: 600px;"></div>
80
+ <div id="invitation_list" style="width: 600px;"></div>
45
81
  </div>
46
82
  </div>
47
- </div>
48
- <div class="layui-form-item">
49
83
  <div class="layui-inline">
50
- <label class="layui-form-label">上传附件</label>
84
+ <label class="layui-form-label">协助人员</label>
51
85
  <div class="layui-input-block">
52
- <%= hidden_field_tag 'attachment_id' %>
53
- <span id="attachment">
54
- </span>
55
- <button type="button" class="layui-btn" id="upload_file">上传文件</button>
86
+ <div id="staff_assist_list" style="width: 600px;"></div>
56
87
  </div>
57
88
  </div>
89
+ </div>
90
+ <div class="layui-form-item">
58
91
  <div class="layui-inline" style="padding-left: 30px">
59
92
  <button class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交 </button>
60
93
  </div>
@@ -88,16 +121,31 @@
88
121
  data: gon.staff_manage,
89
122
  filterable: true,
90
123
  })
91
-
92
124
  var staff_assist = xmSelect.render({
93
- el: '#staff_assist_list',
94
- data: gon.staff_manage,
125
+ el: '#staff_assist_list',
95
126
  filterable: true,
127
+ name: 'staff_assist_id',
128
+ remoteSearch: true,
129
+ remoteMethod: function(val, cb, show){
130
+ if(!val){
131
+ return cb([]);
132
+ }
133
+ request.get('missions/search_edu_user?q=' + val, {}, function (res) {
134
+ if (res.data.length == 0) {
135
+ cb([{value: val, name: val}])
136
+ } else {
137
+ cb(res.data);
138
+ }
139
+
140
+ })
141
+ },
142
+ data: []
96
143
  })
97
- var expert = xmSelect.render({
98
- el: '#expert_list',
144
+
145
+ var invitation_select = xmSelect.render({
146
+ el: '#invitation_list',
99
147
  filterable: true,
100
- name: 'expert_ids',
148
+ name: 'invitation_list',
101
149
  remoteSearch: true,
102
150
  remoteMethod: function(val, cb, show){
103
151
  if(!val){
@@ -115,23 +163,6 @@
115
163
  data: []
116
164
  })
117
165
 
118
-
119
- upload.render({
120
- elem: '#upload_file',
121
- url: '/missions/upload_files',
122
- auto: true,
123
- accept: 'file',
124
- done: function (res) {
125
- layer.msg('上传成功');
126
- $("#attachment_id").val(res.attachment_id);
127
- document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
128
- }
129
- });
130
-
131
- $(body).on("click", "#delete", function() {
132
- document.getElementById("attachment").innerHTML = "";
133
- $("#attachment_id").val('');
134
- })
135
166
  form.render();
136
167
 
137
168
  // 当前弹出层,防止ID被覆盖
@@ -153,17 +184,27 @@
153
184
  //监听提交
154
185
  form.on('submit(data-reset-btn)', function (data) {
155
186
  data.field.staff_manage_id = staff_manage.getValue('value');
156
- data.field.staff_assist_id = staff_assist.getValue('value');
157
- var expertids = [];
158
- expert.getValue().forEach(function(d) {
187
+ var staff_assist_id = [];
188
+ staff_assist.getValue().forEach(function(d) {
189
+ if (typeof(d.value) == 'number') {
190
+ staff_assist_id.push([d.value, d.name]);
191
+ } else {
192
+ staff_assist_id.push(['', d.name]);
193
+
194
+ }
195
+ })
196
+
197
+ var invitation_ids = [];
198
+ invitation_select.getValue().forEach(function(d) {
159
199
  if (typeof(d.value) == 'number') {
160
- expertids.push([d.value, d.name]);
200
+ invitation_ids.push([d.value, d.name]);
161
201
  } else {
162
- expertids.push(['', d.name]);
202
+ invitation_ids.push(['', d.name]);
163
203
 
164
204
  }
165
205
  })
166
- data.field.expert_ids = expertids;
206
+ data.field.invitation_ids = invitation_ids;
207
+ data.field.staff_assist_id = staff_assist_id;
167
208
  request.authPost("missions/activities", data.field, function (res) {
168
209
  if (res.success === false) {
169
210
  layer.alert(res.msg)
@@ -0,0 +1,56 @@
1
+ <form class="layui-form " action="">
2
+ <div class="layui-form-item" style="padding: 25px">
3
+ <div class="layui-inline">
4
+ <label class="layui-form-label">信息类型</label>
5
+ <div class="layui-input-inline">
6
+ <%= select_tag "info_id",options_for_select(EducodeSales::ActivityFollowUp.info_ids.keys)%>
7
+ </div>
8
+ </div>
9
+ <br>
10
+ <div class="layui-form-item layui-form-text">
11
+ <label class="layui-form-label">最新进展</label>
12
+ <div class="layui-input-block">
13
+ <textarea name="description" placeholder="填写最新进展:" class="layui-textarea"></textarea>
14
+ </div>
15
+ </div>
16
+ <div class="layui-inline" style="padding-left: 50px">
17
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="add_follow_up">提交
18
+ </button>
19
+ </div>
20
+ </div>
21
+ </form>
22
+
23
+
24
+
25
+
26
+ <script>
27
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
28
+ var form = layui.form,
29
+ layer = layui.layer,
30
+ table = layui.table,
31
+ laytpl = layui.laytpl,
32
+ request = layui.request,
33
+ laydate = layui.laydate,
34
+ $ = layui.$;
35
+
36
+ form.render();
37
+
38
+ form.on('submit(add_follow_up)', function (data) {
39
+ data.field.activity_id = "<%= @activity.id %>";
40
+ request.authPost("missions/activities/" + data.field.activity_id + "/follow_up", data.field, function (res) {
41
+ if (res.success == false) {
42
+ layer.alert(res.msg)
43
+ } else {
44
+ layer.close(parent.followup_index);
45
+ parent.layer.close(parent.layer.getFrameIndex(window.name))
46
+ table.reload('activity_followp_table');
47
+ table.reload('activities_table')
48
+ }
49
+ })
50
+
51
+
52
+ return false;
53
+ });
54
+
55
+ });
56
+ </script>