educode_sales 0.9.67 → 0.9.69

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/indexlogo.png +0 -0
  3. data/app/assets/javascripts/educode_sales/extent/treeTable.js +235 -0
  4. data/app/controllers/educode_sales/activities_controller.rb +52 -38
  5. data/app/controllers/educode_sales/businesses_controller.rb +1 -1
  6. data/app/controllers/educode_sales/customers_controller.rb +107 -0
  7. data/app/controllers/educode_sales/follow_ups_controller.rb +6 -0
  8. data/app/controllers/educode_sales/operation_plans_controller.rb +8 -4
  9. data/app/controllers/educode_sales/plans_controller.rb +173 -11
  10. data/app/controllers/educode_sales/projects_controller.rb +420 -0
  11. data/app/controllers/educode_sales/recycles_controller.rb +11 -1
  12. data/app/controllers/educode_sales/roles_controller.rb +4 -1
  13. data/app/controllers/educode_sales/teachers_controller.rb +42 -17
  14. data/app/controllers/educode_sales/upload_files_controller.rb +9 -2
  15. data/app/helpers/educode_sales/application_helper.rb +1 -0
  16. data/app/models/educode_sales/activity.rb +4 -0
  17. data/app/models/educode_sales/assessments_setting.rb +2 -2
  18. data/app/models/educode_sales/business.rb +21 -5
  19. data/app/models/educode_sales/business_history.rb +8 -0
  20. data/app/models/educode_sales/business_info.rb +9 -0
  21. data/app/models/educode_sales/permission.rb +2 -1
  22. data/app/models/educode_sales/project.rb +53 -0
  23. data/app/models/educode_sales/role_area.rb +2 -1
  24. data/app/models/educode_sales/sale_plan.rb +3 -1
  25. data/app/models/educode_sales/staff.rb +2 -0
  26. data/app/views/educode_sales/activities/_follows.html.erb +50 -36
  27. data/app/views/educode_sales/activities/_index.html.erb +82 -9
  28. data/app/views/educode_sales/activities/edit.html.erb +25 -68
  29. data/app/views/educode_sales/activities/files.html.erb +157 -0
  30. data/app/views/educode_sales/activities/files.json.jbuilder +13 -0
  31. data/app/views/educode_sales/activities/follow_ups.json.jbuilder +1 -1
  32. data/app/views/educode_sales/activities/index.json.jbuilder +2 -2
  33. data/app/views/educode_sales/activities/new.html.erb +21 -60
  34. data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
  35. data/app/views/educode_sales/activities/upload_file.html.erb +43 -0
  36. data/app/views/educode_sales/businesses/get_export_data.json.jbuilder +3 -0
  37. data/app/views/educode_sales/businesses/index.html.erb +5 -0
  38. data/app/views/educode_sales/businesses/index.json.jbuilder +3 -0
  39. data/app/views/educode_sales/businesses/new.html.erb +1 -1
  40. data/app/views/educode_sales/businesses/time_line.html.erb +9 -5
  41. data/app/views/educode_sales/customers/edit_major.html.erb +872 -0
  42. data/app/views/educode_sales/customers/list.html.erb +602 -0
  43. data/app/views/educode_sales/customers/list.json.jbuilder +33 -0
  44. data/app/views/educode_sales/follow_ups/index.json.jbuilder +2 -2
  45. data/app/views/educode_sales/plans/_yearPlan.html.erb +234 -0
  46. data/app/views/educode_sales/plans/business_infos.json.jbuilder +23 -0
  47. data/app/views/educode_sales/plans/edit_bussiness_info.html.erb +79 -0
  48. data/app/views/educode_sales/plans/edit_bussiness_info_extra.html.erb +260 -0
  49. data/app/views/educode_sales/plans/edit_year_plan.html.erb +237 -0
  50. data/app/views/educode_sales/plans/index.html.erb +8 -0
  51. data/app/views/educode_sales/plans/new_year.html.erb +204 -0
  52. data/app/views/educode_sales/plans/plan_business_infos.json.jbuilder +42 -0
  53. data/app/views/educode_sales/plans/years_plan.json.jbuilder +17 -0
  54. data/app/views/educode_sales/projects/detail.html.erb +269 -0
  55. data/app/views/educode_sales/projects/edit.html.erb +246 -0
  56. data/app/views/educode_sales/projects/history.html.erb +41 -0
  57. data/app/views/educode_sales/projects/index.html.erb +688 -0
  58. data/app/views/educode_sales/projects/index.json.jbuilder +69 -0
  59. data/app/views/educode_sales/recycles/_monthly.html.erb +1 -1
  60. data/app/views/educode_sales/recycles/_yearPlan.html.erb +118 -0
  61. data/app/views/educode_sales/recycles/index.html.erb +26 -22
  62. data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +0 -1
  63. data/app/views/educode_sales/recycles/yearPlan.json.jbuilder +14 -0
  64. data/app/views/educode_sales/teachers/_index.html.erb +17 -1
  65. data/app/views/educode_sales/teachers/index.json.jbuilder +2 -0
  66. data/app/views/layouts/educode_sales/application.html.erb +25 -0
  67. data/config/routes.rb +31 -0
  68. data/db/migrate/20230330141213_create_educode_sales_activity_follow_ups.rb +6 -0
  69. data/db/migrate/20230405074036_add_year_to_sale_plans.rb +38 -0
  70. data/db/migrate/20230411134203_add_realname_to_teacher.rb +5 -0
  71. data/db/migrate/20230412083510_add_p_staff_id_to_businesses.rb +20 -0
  72. data/db/migrate/20230412092000_create_business_histories.rb +10 -0
  73. data/db/migrate/20230413015619_add_permissions_to_projects.rb +11 -0
  74. data/db/migrate/20230413031029_add_pre_time_to_businesses.rb +5 -0
  75. data/lib/educode_sales/version.rb +1 -1
  76. metadata +38 -5
@@ -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
@@ -6,7 +6,7 @@ json.data do
6
6
  json.info_id d.info_id
7
7
  json.clazz_id d.activity.clazz_id
8
8
  json.staff d.activity.sales&.user&.real_name || d.activity.staff&.user&.real_name
9
- json.staff_manage d.activity.manages.map { |d| d.activity.staff.user.real_name}.uniq.join("、")
9
+ json.staff_manage d.activity.manages.map { |d| d.staff.user.real_name}.uniq.join("、")
10
10
  json.follow_up d.staff.user.real_name
11
11
  json.created_at d.created_at.to_s
12
12
  json.state_id d.activity.state_id
@@ -14,8 +14,7 @@ json.data do
14
14
  json.clazz_id d.clazz_id
15
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("、")
19
18
  json.invitations d.invitations.pluck(:name).join("、")
20
19
  json.sponsor d.sponsor
21
20
  json.linkman d.linkman
@@ -24,6 +23,7 @@ json.data do
24
23
  json.address d.address
25
24
  json.meeting_form d.meeting_form
26
25
  json.state_id d.state_id
26
+ json.advise d.last_follow_up&.advise || ''
27
27
 
28
28
  json.schools_count EducodeSales::ActivityTeacher.joins(teacher: :department).where(activity_id: d.id).select("distinct(school_id)").count
29
29
  schools_count += EducodeSales::ActivityTeacher.joins(teacher: :department).where(activity_id: d.id).select("distinct(school_id)").count
@@ -4,79 +4,73 @@
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
17
  <div class="layui-inline">
18
18
  <label class="layui-form-label required">活动状态</label>
19
- <div class="layui-input-block">
19
+ <div class="layui-input-block" style="width: 200px;">
20
20
  <%= select_tag "state_id", options_for_select(EducodeSales::Activity.state_ids.keys), { 'lay-filter': 'clazz_id', class: 'required' } %>
21
21
  </div>
22
22
  </div>
23
23
  <div class="layui-inline">
24
24
  <label class="layui-form-label required">活动时间</label>
25
- <div class="layui-input-block">
25
+ <div class="layui-input-block" style="width: 200px;">
26
26
  <input type="text" name="start_at" autocomplete="off" required lay-verify="required" class="layui-input" id="new_time" placeholder="请选择时间">
27
27
  </div>
28
28
  </div>
29
29
  <div class="layui-inline">
30
30
  <label class="layui-form-label required">活动天数</label>
31
- <div class="layui-input-block">
31
+ <div class="layui-input-block" style="width: 200px;">
32
32
  <input type="text" name="days" required lay-verify="required" class="layui-input">
33
33
  </div>
34
34
  </div>
35
35
  <div class="layui-inline">
36
36
  <label class="layui-form-label">生态经理</label>
37
37
  <div class="layui-input-block">
38
- <div id="staff_manage_list" style="width: 163px;"></div>
39
- </div>
40
- </div>
41
- <div class="layui-inline">
42
- <label class="layui-form-label">协助人员</label>
43
- <div class="layui-input-block">
44
- <div id="staff_assist_list" style="width: 193px;"></div>
38
+ <div id="staff_manage_list" style="width: 200px;"></div>
45
39
  </div>
46
40
  </div>
47
41
  <div class="layui-inline">
48
42
  <label class="layui-form-label">主办方</label>
49
- <div class="layui-input-block">
43
+ <div class="layui-input-block" style="width: 200px;">
50
44
  <input type="text" name="sponsor" class="layui-input">
51
45
  </div>
52
46
  </div>
53
47
  <div class="layui-inline">
54
48
  <label class="layui-form-label">联系人</label>
55
- <div class="layui-input-block">
49
+ <div class="layui-input-block" style="width: 200px;">
56
50
  <input type="text" name="linkman" class="layui-input">
57
51
  </div>
58
52
  </div>
59
53
  <div class="layui-inline">
60
54
  <label class="layui-form-label">联系电话</label>
61
- <div class="layui-input-block">
55
+ <div class="layui-input-block" style="width: 200px;">
62
56
  <input type="text" name="phone" class="layui-input">
63
57
  </div>
64
58
  </div>
65
59
  <div class="layui-inline">
66
60
  <label class="layui-form-label">规模</label>
67
- <div class="layui-input-block">
61
+ <div class="layui-input-block" style="width: 200px;">
68
62
  <input type="text" name="scale" class="layui-input">
69
63
  </div>
70
64
  </div>
71
65
  <div class="layui-inline">
72
66
  <label class="layui-form-label">会议地点</label>
73
- <div class="layui-input-block">
67
+ <div class="layui-input-block" style="width: 200px;">
74
68
  <input type="text" name="address" class="layui-input">
75
69
  </div>
76
70
  </div>
77
71
  <div class="layui-inline">
78
72
  <label class="layui-form-label">会议形式</label>
79
- <div class="layui-input-block">
73
+ <div class="layui-input-block" style="width: 200px;">
80
74
  <input type="text" name="meeting_form" class="layui-input">
81
75
  </div>
82
76
  </div>
@@ -87,22 +81,13 @@
87
81
  </div>
88
82
  </div>
89
83
  <div class="layui-inline">
90
- <label class="layui-form-label">报告专家</label>
84
+ <label class="layui-form-label">协助人员</label>
91
85
  <div class="layui-input-block">
92
- <div id="expert_list" style="width: 600px;"></div>
86
+ <div id="staff_assist_list" style="width: 600px;"></div>
93
87
  </div>
94
88
  </div>
95
89
  </div>
96
90
  <div class="layui-form-item">
97
- <div class="layui-inline">
98
- <label class="layui-form-label">上传附件</label>
99
- <div class="layui-input-block">
100
- <%= hidden_field_tag 'attachment_id' %>
101
- <span id="attachment">
102
- </span>
103
- <button type="button" class="layui-btn" id="upload_file">上传文件</button>
104
- </div>
105
- </div>
106
91
  <div class="layui-inline" style="padding-left: 30px">
107
92
  <button class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交 </button>
108
93
  </div>
@@ -136,16 +121,10 @@
136
121
  data: gon.staff_manage,
137
122
  filterable: true,
138
123
  })
139
-
140
124
  var staff_assist = xmSelect.render({
141
- el: '#staff_assist_list',
142
- data: gon.staff_manage,
143
- filterable: true,
144
- })
145
- var expert = xmSelect.render({
146
- el: '#expert_list',
125
+ el: '#staff_assist_list',
147
126
  filterable: true,
148
- name: 'expert_ids',
127
+ name: 'staff_assist_id',
149
128
  remoteSearch: true,
150
129
  remoteMethod: function(val, cb, show){
151
130
  if(!val){
@@ -184,23 +163,6 @@
184
163
  data: []
185
164
  })
186
165
 
187
-
188
- upload.render({
189
- elem: '#upload_file',
190
- url: '/missions/upload_files',
191
- auto: true,
192
- accept: 'file',
193
- done: function (res) {
194
- layer.msg('上传成功');
195
- $("#attachment_id").val(res.attachment_id);
196
- document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
197
- }
198
- });
199
-
200
- $(body).on("click", "#delete", function() {
201
- document.getElementById("attachment").innerHTML = "";
202
- $("#attachment_id").val('');
203
- })
204
166
  form.render();
205
167
 
206
168
  // 当前弹出层,防止ID被覆盖
@@ -222,13 +184,12 @@
222
184
  //监听提交
223
185
  form.on('submit(data-reset-btn)', function (data) {
224
186
  data.field.staff_manage_id = staff_manage.getValue('value');
225
- data.field.staff_assist_id = staff_assist.getValue('value');
226
- var expertids = [];
227
- expert.getValue().forEach(function(d) {
187
+ var staff_assist_id = [];
188
+ staff_assist.getValue().forEach(function(d) {
228
189
  if (typeof(d.value) == 'number') {
229
- expertids.push([d.value, d.name]);
190
+ staff_assist_id.push([d.value, d.name]);
230
191
  } else {
231
- expertids.push(['', d.name]);
192
+ staff_assist_id.push(['', d.name]);
232
193
 
233
194
  }
234
195
  })
@@ -243,7 +204,7 @@
243
204
  }
244
205
  })
245
206
  data.field.invitation_ids = invitation_ids;
246
- data.field.expert_ids = expertids;
207
+ data.field.staff_assist_id = staff_assist_id;
247
208
  request.authPost("missions/activities", data.field, function (res) {
248
209
  if (res.success === false) {
249
210
  layer.alert(res.msg)
@@ -65,7 +65,7 @@
65
65
  {
66
66
  field: 'name',
67
67
  width: 90,
68
- title: '姓名',
68
+ title: '用户名',
69
69
  templet: "#name"
70
70
  },
71
71
  {
@@ -0,0 +1,43 @@
1
+ <div style="padding-left: 50px">
2
+ <button type="button" class="layui-btn" id="get_file"><i class="layui-icon"></i>选择文件</button>
3
+ </div>
4
+ <script>
5
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput'], function () {
6
+ var form = layui.form,
7
+ layer = layui.layer,
8
+ table = layui.table,
9
+ laytpl = layui.laytpl,
10
+ upload = layui.upload,
11
+ request = layui.request,
12
+ $ = layui.$;
13
+ selectInput = layui.selectInput;
14
+
15
+ form.render();
16
+
17
+ //指定允许上传的文件类型
18
+ var activity_id = parent.activity_id
19
+ var renderObj = upload.render({
20
+ elem: '#get_file'
21
+ ,url: '/missions/upload_files?activity_id='+activity_id //此处配置你自己的上传接口即可
22
+ ,accept: 'file' //普通文件
23
+ ,headers: {
24
+ 'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
25
+ }
26
+ ,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
27
+ layer.load(); //上传loading
28
+ }
29
+ ,done: function(res){
30
+ layer.msg('导入成功');
31
+ table.reload('file');
32
+ layer.closeAll('loading'); //关闭loading
33
+ layer.close(parent.import_index)
34
+ }
35
+ ,error: function(index, upload){
36
+ table.reload('file');
37
+ layer.closeAll('loading'); //关闭loading
38
+ layer.alert('导入失败,请检查文件格式')
39
+ layer.close(parent.import_index)
40
+ }
41
+ });
42
+ });
43
+ </script>