educode_sales 0.9.67 → 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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/activities_controller.rb +52 -38
  3. data/app/controllers/educode_sales/businesses_controller.rb +1 -1
  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 +4 -0
  10. data/app/models/educode_sales/assessments_setting.rb +2 -2
  11. data/app/models/educode_sales/business_info.rb +9 -0
  12. data/app/models/educode_sales/sale_plan.rb +3 -1
  13. data/app/models/educode_sales/staff.rb +2 -0
  14. data/app/views/educode_sales/activities/_follows.html.erb +50 -36
  15. data/app/views/educode_sales/activities/_index.html.erb +82 -9
  16. data/app/views/educode_sales/activities/edit.html.erb +25 -68
  17. data/app/views/educode_sales/activities/files.html.erb +157 -0
  18. data/app/views/educode_sales/activities/files.json.jbuilder +13 -0
  19. data/app/views/educode_sales/activities/follow_ups.json.jbuilder +1 -1
  20. data/app/views/educode_sales/activities/index.json.jbuilder +2 -2
  21. data/app/views/educode_sales/activities/new.html.erb +21 -60
  22. data/app/views/educode_sales/activities/upload_file.html.erb +43 -0
  23. data/app/views/educode_sales/businesses/get_export_data.json.jbuilder +3 -0
  24. data/app/views/educode_sales/businesses/new.html.erb +1 -1
  25. data/app/views/educode_sales/plans/_yearPlan.html.erb +234 -0
  26. data/app/views/educode_sales/plans/business_infos.json.jbuilder +23 -0
  27. data/app/views/educode_sales/plans/edit_bussiness_info.html.erb +79 -0
  28. data/app/views/educode_sales/plans/edit_bussiness_info_extra.html.erb +260 -0
  29. data/app/views/educode_sales/plans/edit_year_plan.html.erb +237 -0
  30. data/app/views/educode_sales/plans/index.html.erb +8 -0
  31. data/app/views/educode_sales/plans/new_year.html.erb +204 -0
  32. data/app/views/educode_sales/plans/plan_business_infos.json.jbuilder +42 -0
  33. data/app/views/educode_sales/plans/years_plan.json.jbuilder +17 -0
  34. data/app/views/educode_sales/recycles/_monthly.html.erb +1 -1
  35. data/app/views/educode_sales/recycles/_yearPlan.html.erb +118 -0
  36. data/app/views/educode_sales/recycles/index.html.erb +26 -22
  37. data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +0 -1
  38. data/app/views/educode_sales/recycles/yearPlan.json.jbuilder +14 -0
  39. data/config/routes.rb +19 -0
  40. data/db/migrate/20230330141213_create_educode_sales_activity_follow_ups.rb +6 -0
  41. data/db/migrate/20230405074036_add_year_to_sale_plans.rb +38 -0
  42. data/lib/educode_sales/version.rb +1 -1
  43. metadata +18 -3
@@ -1,5 +1,5 @@
1
1
  <div style="margin: 10px 10px 10px 10px">
2
- <form class="layui-form layui-form-pane" lay-filter="search_follows">
2
+ <form class="layui-form layui-form-pane">
3
3
  <div class="layui-form-item">
4
4
  <div class="layui-inline">
5
5
  <label class="layui-form-label">活动名称</label>
@@ -16,7 +16,7 @@
16
16
  <div class="layui-inline">
17
17
  <label class="layui-form-label">销售经理</label>
18
18
  <div class="layui-input-inline">
19
- <%= select_tag "sales_id", options_for_select(EducodeSales::Staff.all.map{|d| [d.user&.real_name, d.id]}), { include_blank: true } %>
19
+ <%= select_tag "sales_id", options_for_select(@staffs), { include_blank: true } %>
20
20
  </div>
21
21
  </div>
22
22
 
@@ -33,19 +33,10 @@
33
33
  <table class="layui-hide" id="activity_followp_table" style="min-height: 300px;" lay-filter="activity_followp_table"></table>
34
34
  </div>
35
35
  <script type="text/html" id="currentTableBar_follows">
36
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="detail">详情</a>
36
+ <% if can? :advise, EducodeSales::ActivityFollowUp %>
37
+ <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="advise">团队建议</a>
38
+ <% end %>
37
39
  </script>
38
- <script type="text/html" id="teacher_name">
39
- {{# if (d.login) { }}
40
- <a href="<%= base_url%>/users/{{d.login}}" class="layui-table-link" target="_blank">{{ d.teacher }}</a>
41
- {{# } else {}}
42
- <a href="javascript:;" class="">{{ d.teacher }}</a>
43
- {{# }}}
44
- </script>
45
- <script type="text/html" id="school">
46
- <a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">{{ d.school }}</a>
47
- </script>
48
-
49
40
 
50
41
  <script>
51
42
  layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
@@ -56,20 +47,13 @@
56
47
  miniPage = layui.miniPage,
57
48
  laydate = layui.laydate;
58
49
 
59
- var laydate = layui.laydate;
60
-
61
- laydate.render({
62
- elem: '#follows_date',
63
- range: true
64
- });
65
-
66
- table = layui.table;
50
+ var table = layui.table;
67
51
  table.render({
68
52
  elem: '#activity_followp_table',
69
53
  url: '/missions/activities/follow_ups',
70
54
  defaultToolbar: ['filter'],
71
55
  initSort: {
72
- field: 'created_at' ,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
56
+ field: 'created_at' ,type: 'desc'
73
57
  },
74
58
  cols: [
75
59
  [
@@ -117,22 +101,22 @@
117
101
  {
118
102
  field: 'created_at',
119
103
  width: 180,
120
- title: '跟进时间',
104
+ title: '最新跟进时间',
121
105
  sort: true,
122
106
  },
123
107
  {
124
- field: 'advise',
125
- width: 120,
126
- title: '团队建议',
127
- templet:'<div><span title="{{d.advise}}">{{d.advise}}</span></div>'
108
+ field: 'advise',
109
+ width: 300,
110
+ title: '团队建议',
111
+ templet:'<div><span title="{{d.advise}}">{{d.advise}}</span></div>'
128
112
  },
129
- // {
130
- // title: '操作',
131
- // width: 80,
132
- // toolbar: '#currentTableBar_follows',
133
- // align: "center",
134
- // fixed: 'right'
135
- // }
113
+ {
114
+ title: '操作',
115
+ width: 200,
116
+ toolbar: '#currentTableBar_follows',
117
+ align: "center",
118
+ fixed: 'right'
119
+ }
136
120
  ]
137
121
  ],
138
122
  limit: 20,
@@ -196,6 +180,36 @@
196
180
  $(window).on("resize", function () {
197
181
  layer.full(index);
198
182
  });
183
+ } else if (obj.event == 'advise') {
184
+ layer.open({
185
+ title: '添加团队建议',
186
+ closeBtn: 0,
187
+ type: 1,
188
+ area: '400px;',
189
+ id: 'LAY_layuipro',
190
+ 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>' ,
191
+ btn: ['保存', '取消'],
192
+ btn1: function(index, l) {
193
+ if (l.find("textarea").val().trim() == '') {
194
+ layer.msg('内容不能为空')
195
+ return false;
196
+ } else {
197
+ request.authPost("/missions/activities/add_advise", {content: l.find("textarea").val().trim(), id: data.id}, function(res) {
198
+ if (res.success == false) {
199
+ layer.alert(res.msg);
200
+ } else {
201
+ layer.close(index);
202
+ table.reload('activity_followp_table');
203
+ }
204
+ })
205
+ }
206
+
207
+ return false
208
+ },
209
+ btn2: function(index, l) {
210
+ layer.close(index)
211
+ }
212
+ });
199
213
  }
200
214
  });
201
215
 
@@ -203,6 +217,6 @@
203
217
  </script>
204
218
  <style>
205
219
  .layui-table-tool-temp{
206
- padding-right: 30px; !important;
220
+ padding-right: 30px; !important;
207
221
  }
208
222
  </style>
@@ -8,7 +8,7 @@
8
8
  </div>
9
9
  </script>
10
10
  <div style="margin: 10px 10px 10px 10px">
11
- <form class="layui-form layui-form-pane" lay-filter="search_ideas">
11
+ <form class="layui-form layui-form-pane">
12
12
  <div class="layui-form-item">
13
13
  <div class="layui-inline ">
14
14
  <label class="layui-form-label">活动名称</label>
@@ -37,7 +37,7 @@
37
37
  <div class="layui-inline">
38
38
  <label class="layui-form-label">生态经理</label>
39
39
  <div class="layui-input-inline">
40
- <%= select_tag "manage", options_for_select(@staffs, ""), { include_blank: true } %>
40
+ <%= select_tag "manage", options_for_select(@staff_manage, ""), { include_blank: true } %>
41
41
  </div>
42
42
  </div>
43
43
  <div class="layui-inline">
@@ -67,11 +67,19 @@
67
67
 
68
68
  <script type="text/html" id="currentTableBar">
69
69
  <% if can? :create, EducodeSales::ActivityFollowUp %>
70
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
70
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进</a>
71
71
  <% end %>
72
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_plan">添加计划</a>
73
+ <% if can? :advise, EducodeSales::ActivityFollowUp %>
74
+ <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="advise">建议</a>
75
+ <% end %>
76
+
72
77
  <% if can? :update, EducodeSales::Activity %>
73
78
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
74
79
  <% end %>
80
+ <% if can? :show_file, EducodeSales::Activity %>
81
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="file">附件</a>
82
+ <% end %>
75
83
  <% if can? :destroy, EducodeSales::Activity %>
76
84
  <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
77
85
  <% end %>
@@ -174,11 +182,6 @@
174
182
  width: 180,
175
183
  title: '邀请专家'
176
184
  },
177
- {
178
- field: 'expert',
179
- width: 180,
180
- title: '报告专家'
181
- },
182
185
  {
183
186
  field: 'start_at',
184
187
  width: 200,
@@ -212,7 +215,7 @@
212
215
  },
213
216
  {
214
217
  title: '操作',
215
- width: 260,
218
+ width: 380,
216
219
  toolbar: '#currentTableBar',
217
220
  align: "center",
218
221
  fixed: 'right'
@@ -311,6 +314,26 @@
311
314
  layer.full(index);
312
315
  });
313
316
  return false;
317
+ } else if (obj.event === 'add_plan') {
318
+ var content = miniPage.getHrefContent('/missions/operation_plans/new_week');
319
+ var openWH = miniPage.getOpenWidthHeight();
320
+ new_weelPlan_index = layer.open({
321
+ title: '添加计划',
322
+ type: 1,
323
+ shade: 0.2,
324
+ maxmin: true,
325
+ shadeClose: true,
326
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
327
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
328
+ content: content,
329
+ success: function (layero, index) {
330
+ // 重新渲染弹层中的下拉选择框select
331
+ form.render('select');
332
+ }
333
+ });
334
+ $(window).on("resize", function () {
335
+ layer.full(index);
336
+ });
314
337
  } else if (obj.event === 'delete') {
315
338
  layer.confirm('确定删除' + data.name, function (index) {
316
339
  request.delete('missions/activities/' + data.id, {}, function (res) {
@@ -405,6 +428,56 @@
405
428
  $(window).on("resize", function () {
406
429
  layer.full(followup_index);
407
430
  });
431
+ } else if (obj.event == 'advise') {
432
+ layer.open({
433
+ title: '添加团队建议',
434
+ closeBtn: 0,
435
+ type: 1,
436
+ area: '400px;',
437
+ id: 'LAY_layuipro',
438
+ 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>' ,
439
+ btn: ['保存', '取消'],
440
+ btn1: function(index, l) {
441
+ if (l.find("textarea").val().trim() == '') {
442
+ layer.msg('内容不能为空')
443
+ return false;
444
+ } else {
445
+ request.authPut("/missions/activities/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
446
+ if (res.success == false) {
447
+ layer.alert(res.msg);
448
+ } else {
449
+ layer.close(index);
450
+ table.reload('activity_followp_table');
451
+ }
452
+ })
453
+ }
454
+
455
+ return false
456
+ },
457
+ btn2: function(index, l) {
458
+ layer.close(index)
459
+ }
460
+ });
461
+ } else if (obj.event == 'file') {
462
+ activity_id = data.id
463
+ var content = miniPage.getHrefContent('/missions/activities/' + data.id + "/files");
464
+ var openWH = miniPage.getOpenWidthHeight();
465
+ followup_index = layer.open({
466
+ title: '附件管理',
467
+ type: 1,
468
+ shade: 0.2,
469
+ maxmin: true,
470
+ shadeClose: true,
471
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
472
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
473
+ content: content,
474
+ success: function (layero, index) {
475
+ form.render('select');
476
+ }
477
+ });
478
+ $(window).on("resize", function () {
479
+ layer.full(followup_index);
480
+ });
408
481
  }
409
482
  });
410
483
 
@@ -4,88 +4,81 @@
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">
8
- <input type="text" name="name" required lay-verify="required"
9
- class="layui-input" value="<%= @activity.name %>">
7
+ <div class="layui-input-block" style="width: 200px;">
8
+ <input type="text" name="name" required lay-verify="required" class="layui-input" value="<%= @activity.name %>">
10
9
  </div>
11
10
  </div>
12
11
  <div class="layui-inline">
13
12
  <label class="layui-form-label required">活动类型</label>
14
- <div class="layui-input-block">
13
+ <div class="layui-input-block" style="width: 200px;">
15
14
  <%= select_tag "clazz_id", options_for_select(@clazz, @activity.clazz_id), { 'lay-filter': 'clazz_id', class: 'required' } %>
16
15
  </div>
17
16
  </div>
18
17
  <div class="layui-inline">
19
18
  <label class="layui-form-label required">活动状态</label>
20
- <div class="layui-input-block">
19
+ <div class="layui-input-block" style="width: 200px;">
21
20
  <%= select_tag "state_id", options_for_select(EducodeSales::Activity.state_ids.keys, @activity.state_id), { 'lay-filter': 'clazz_id', class: 'required' } %>
22
21
  </div>
23
22
  </div>
24
23
  <div class="layui-inline">
25
24
  <label class="layui-form-label required">活动时间</label>
26
- <div class="layui-input-block">
25
+ <div class="layui-input-block" style="width: 200px;">
27
26
  <input type="text" name="start_at" required lay-verify="required" class="layui-input" id="time" placeholder="请选择时间"
28
27
  value="<%= @activity.start_at&.to_s(:date) %>">
29
28
  </div>
30
29
  </div>
31
30
  <div class="layui-inline">
32
31
  <label class="layui-form-label required">活动天数</label>
33
- <div class="layui-input-block">
32
+ <div class="layui-input-block" style="width: 200px;">
34
33
  <input type="text" name="days" required lay-verify="required"
35
34
  class="layui-input" value="<%= @activity.days %>">
36
35
  </div>
37
36
  </div>
38
37
  <div class="layui-inline">
39
38
  <label class="layui-form-label">销售经理</label>
40
- <div class="layui-input-block">
39
+ <div class="layui-input-block" style="width: 200px;">
41
40
  <div id="sales_list" style="width: 163px;"></div>
42
41
  </div>
43
42
  </div>
44
43
  <div class="layui-inline">
45
44
  <label class="layui-form-label">生态经理</label>
46
- <div class="layui-input-block">
45
+ <div class="layui-input-block" style="width: 200px;">
47
46
  <div id="staff_manage_list" style="width: 163px;"></div>
48
47
  </div>
49
48
  </div>
50
- <div class="layui-inline">
51
- <label class="layui-form-label">协助人员</label>
52
- <div class="layui-input-block">
53
- <div id="staff_assist_list" style="width: 193px;"></div>
54
- </div>
55
- </div>
56
49
  <div class="layui-inline">
57
50
  <label class="layui-form-label">主办方</label>
58
- <div class="layui-input-block">
51
+ <div class="layui-input-block" style="width: 200px;">
59
52
  <input type="text" name="sponsor" class="layui-input" value="<%= @activity.sponsor %>">
60
53
  </div>
61
54
  </div>
62
55
  <div class="layui-inline">
63
56
  <label class="layui-form-label">联系人</label>
64
- <div class="layui-input-block">
57
+ <div class="layui-input-block" style="width: 200px;">
65
58
  <input type="text" name="linkman" class="layui-input" value="<%= @activity.linkman %>">
66
59
  </div>
67
60
  </div>
68
61
  <div class="layui-inline">
69
62
  <label class="layui-form-label">联系电话</label>
70
- <div class="layui-input-block">
63
+ <div class="layui-input-block" style="width: 200px;">
71
64
  <input type="text" name="phone" class="layui-input" value="<%= @activity.phone %>">
72
65
  </div>
73
66
  </div>
74
67
  <div class="layui-inline">
75
68
  <label class="layui-form-label">规模</label>
76
- <div class="layui-input-block">
69
+ <div class="layui-input-block" style="width: 200px;">
77
70
  <input type="text" name="scale" class="layui-input" value="<%= @activity.scale %>">
78
71
  </div>
79
72
  </div>
80
73
  <div class="layui-inline">
81
74
  <label class="layui-form-label">会议地点</label>
82
- <div class="layui-input-block">
75
+ <div class="layui-input-block" style="width: 200px;">
83
76
  <input type="text" name="address" class="layui-input" value="<%= @activity.address %>">
84
77
  </div>
85
78
  </div>
86
79
  <div class="layui-inline">
87
80
  <label class="layui-form-label">会议形式</label>
88
- <div class="layui-input-block">
81
+ <div class="layui-input-block" style="width: 200px;">
89
82
  <input type="text" name="meeting_form" class="layui-input" value="<%= @activity.meeting_form %>">
90
83
  </div>
91
84
  </div>
@@ -96,26 +89,13 @@
96
89
  </div>
97
90
  </div>
98
91
  <div class="layui-inline">
99
- <label class="layui-form-label">报告专家</label>
92
+ <label class="layui-form-label">协助人员</label>
100
93
  <div class="layui-input-block">
101
- <div id="expert_list" style="width: 600px;"></div>
94
+ <div id="staff_assist_list" style="width: 600px;"></div>
102
95
  </div>
103
96
  </div>
104
97
  </div>
105
98
  <div class="layui-form-item">
106
- <div class="layui-inline">
107
- <label class="layui-form-label">上传附件</label>
108
- <div class="layui-input-block">
109
- <%= hidden_field_tag 'attachment_id', @activity.attachment&.id %>
110
- <span id="attachment">
111
- <% if @activity.attachment %>
112
- <%= link_to @activity.attachment&.filename.to_s, "/missions/upload_files/download?id=#{@activity.attachment&.id}", target: '_blank' %>
113
- <a href="javascript:;" style="color:red;" id="delete">删除</a>
114
- <% end %>
115
- </span>
116
- <button type="button" class="layui-btn" id="upload_file">上传文件</button>
117
- </div>
118
- </div>
119
99
  <div class="layui-inline" style="padding-left: 30px">
120
100
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交
121
101
  </button>
@@ -159,17 +139,6 @@
159
139
  }
160
140
  })
161
141
 
162
- upload.render({
163
- elem: '#upload_file',
164
- url: '/missions/upload_files',
165
- auto: true,
166
- accept: 'file',
167
- done: function (res) {
168
- layer.msg('上传成功');
169
- $("#attachment_id").val(res.attachment_id);
170
- document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
171
- }
172
- });
173
142
 
174
143
  var staff_manage = xmSelect.render({
175
144
  el: '#staff_manage_list',
@@ -184,17 +153,11 @@
184
153
  filterable: true,
185
154
  })
186
155
 
187
-
188
156
 
189
157
  var staff_assist = xmSelect.render({
190
- el: '#staff_assist_list',
191
- data: gon.assists,
192
- filterable: true,
193
- })
194
- var expert = xmSelect.render({
195
- el: '#expert_list',
158
+ el: '#staff_assist_list',
196
159
  filterable: true,
197
- name: 'expert_ids',
160
+ name: 'staff_assist_id',
198
161
  remoteSearch: true,
199
162
  remoteMethod: function(val, cb, show){
200
163
  if(!val){
@@ -208,13 +171,13 @@
208
171
  }
209
172
  })
210
173
  },
211
- data: gon.experts
174
+ data: gon.assistss
212
175
  })
213
176
 
214
177
  var invitation_select = xmSelect.render({
215
178
  el: '#invitation_list',
216
179
  filterable: true,
217
- name: 'expert_ids',
180
+ name: 'invitation_ids',
218
181
  remoteSearch: true,
219
182
  remoteMethod: function(val, cb, show){
220
183
  if(!val){
@@ -231,21 +194,15 @@
231
194
  data: gon.invitation_list
232
195
  })
233
196
 
234
- $(body).on("click", "#delete", function() {
235
- document.getElementById("attachment").innerHTML = "";
236
- $("#attachment_id").val('');
237
- })
238
-
239
197
  //监听提交
240
198
  form.on('submit(data-reset-btn)', function (data) {
241
199
  data.field.staff_manage_id = staff_manage.getValue('value');
242
- data.field.staff_assist_id = staff_assist.getValue('value');
243
- var expertids = [];
244
- expert.getValue().forEach(function(d) {
200
+ var staff_assist_id = [];
201
+ staff_assist.getValue().forEach(function(d) {
245
202
  if (typeof(d.value) == 'number') {
246
- expertids.push([d.value, d.name]);
203
+ staff_assist_id.push([d.value, d.name]);
247
204
  } else {
248
- expertids.push(['', d.name]);
205
+ staff_assist_id.push(['', d.name]);
249
206
  }
250
207
  })
251
208
  var invitation_ids = [];
@@ -258,7 +215,7 @@
258
215
  }
259
216
  })
260
217
  data.field.invitation_ids = invitation_ids;
261
- data.field.expert_ids = expertids;
218
+ data.field.staff_assist_id = staff_assist_id;
262
219
  request.authPut("missions/activities/" + <%= @activity.id %>, data.field, function (res) {
263
220
  if (res.success === false) {
264
221
  layer.alert(res.msg)
@@ -0,0 +1,157 @@
1
+ <%= Gon::Base.render_data %>
2
+ <script type="text/html" id="toolbarDemo">
3
+ <div class="layui-btn-container">
4
+ <span class="table-label">附件信息</span>
5
+ <% if can? :upload_file, EducodeSales::Activity %>
6
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="upload_file">上传文件</button>
7
+ <% end %>
8
+ </div>
9
+ </script>
10
+
11
+ <table class="layui-hide" id="file" lay-filter="file"></table>
12
+
13
+ <script type="text/html" id="currentTableBar_file">
14
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="preview">预览</a>
15
+ <% if can? :download_file, EducodeSales::Activity %>
16
+ <a href="/missions/upload_files/download?id={{d.id}}" class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="download">下载</a>
17
+ <% end %>
18
+ <% if can? :delete_file, EducodeSales::Activity %>
19
+ <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
20
+ <% end %>
21
+ </script>
22
+
23
+ <script type="text/html" id="showchance">
24
+ <a href="/missions/businesses" class="layui-table-link">{{ d.chance }}</a>
25
+ </script>
26
+
27
+ <script>
28
+ layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
29
+ var $ = layui.jquery,
30
+ form = layui.form,
31
+ table = layui.table,
32
+ request = layui.request,
33
+ upload = layui.upload;
34
+ miniPage = layui.miniPage;
35
+
36
+
37
+ var activity_id = parent.activity_id;
38
+ table.render({
39
+ elem: '#file',
40
+ url: '/missions/activities/' + activity_id +'/files',
41
+ toolbar: '#toolbarDemo',
42
+ defaultToolbar: [],
43
+ cols: [
44
+ [
45
+ {
46
+ field: 'id',
47
+ width: 80,
48
+ title:'序号',type: 'numbers',
49
+ },
50
+ {
51
+ field: 'name',
52
+ title: '文件名'
53
+ },
54
+ {
55
+ field: 'size',
56
+ width: 100,
57
+ title: '文件大小',
58
+ },
59
+ {
60
+ field: 'created_on',
61
+ width: 200,
62
+ title: '上传时间',
63
+ sort: true
64
+ },
65
+ {
66
+ field: 'upload_person',
67
+ width: 80,
68
+ totalRow:true,
69
+ title: '上传人',
70
+ },
71
+ {
72
+ title: '操作',
73
+ width: 200,
74
+ toolbar: '#currentTableBar_file',
75
+ align: "center"
76
+ }
77
+ ]
78
+ ],
79
+ limit: 20,
80
+ limits: [10,15,20,30,40,50,60,70,80,90],
81
+ page: true
82
+ });
83
+
84
+
85
+ var sort = {};
86
+ table.on('sort(file)', function (obj) {
87
+ sort.field = obj.field;
88
+ sort.order = obj.type;
89
+ table.reload('file', {
90
+ initSort: obj,
91
+ where: {
92
+ sort: sort
93
+ }
94
+ });
95
+ })
96
+
97
+
98
+ table.on('toolbar(file)', function (obj) {
99
+ if (obj.event === 'upload_file') { //
100
+ activity_id = parent.activity_id;
101
+ var content = miniPage.getHrefContent('/missions/activities/upload_file');
102
+ var openWH = miniPage.getOpenWidthHeight();
103
+ import_index = layer.open({
104
+ title: '上传文件',
105
+ type: 1,
106
+ shade: 0.2,
107
+ shadeClose: true,
108
+ area: ['200px', '100px'],
109
+ offset: 'auto',
110
+ closeBtn: 0,
111
+ content: content,
112
+ });
113
+ $(window).on("resize", function () {
114
+ layer.full(index);
115
+ });
116
+ }
117
+ });
118
+
119
+
120
+ table.on('tool(file)', function (obj) {
121
+ var data = obj.data;
122
+ var id = data.id
123
+ name = data.disk_filename
124
+ folder = gon.folder
125
+ if (obj.event === 'preview') {
126
+ if (data.content_type.split("/")[0] === "image"){
127
+ layer.photos({
128
+ photos: { "data": [{"src": '/files/educode_sales/' + name}] }
129
+ ,anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
130
+ });
131
+ }else if (data.content_type.split("/")[1] === "pdf"){
132
+ var pdf = '/files/educode_sales/' + name;
133
+ var openWH = miniPage.getOpenWidthHeight();
134
+ layer.open({
135
+ title: data.name,
136
+ type: 2,
137
+ area: ['1000px', '750px'],
138
+ fixed: false, //不固定
139
+ maxmin: true,
140
+ content: pdf
141
+ });
142
+ }else{
143
+ layer.msg("附件不支持预览,请下载查看!")
144
+ }
145
+ return false;
146
+ }else if (obj.event === 'delete') {
147
+ layer.confirm('确定删除' + data.name, function (index) {
148
+ request.delete('missions/upload_files/' + data.id + '?disk_filename=' + data.disk_filename, {}, function (res) {
149
+ layer.close(index);
150
+ table.reload("file")
151
+ })
152
+ });
153
+ }
154
+ });
155
+
156
+ });
157
+ </script>
@@ -0,0 +1,13 @@
1
+ json.data do
2
+ json.array! @files do |d|
3
+ json.id d.id
4
+ json.name d.filename
5
+ json.size d.filesize < 1000000 ? (d.filesize.to_f / 1000).round(2).to_s + 'KB' : (d.filesize.to_f / 1000000).round(2).to_s + 'MB'
6
+ json.created_on d.created_on.to_s
7
+ json.upload_person d.author.real_name
8
+ json.disk_filename d.disk_filename
9
+ json.content_type d.content_type
10
+ end
11
+ end
12
+ json.code 0
13
+ json.count @files.total_count