educode_sales 0.9.59 → 0.9.61

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/activities_controller.rb +101 -2
  3. data/app/controllers/educode_sales/businesses_controller.rb +10 -0
  4. data/app/controllers/educode_sales/follow_ups_controller.rb +6 -0
  5. data/app/controllers/educode_sales/home_controller.rb +4 -0
  6. data/app/controllers/educode_sales/ideas_controller.rb +86 -1
  7. data/app/controllers/educode_sales/upload_files_controller.rb +1 -1
  8. data/app/models/educode_sales/activity.rb +8 -0
  9. data/app/models/educode_sales/activity_staff.rb +9 -0
  10. data/app/models/educode_sales/idea.rb +23 -10
  11. data/app/views/educode_sales/activities/edit.html.erb +96 -3
  12. data/app/views/educode_sales/activities/index.html.erb +86 -1
  13. data/app/views/educode_sales/activities/index.json.jbuilder +5 -0
  14. data/app/views/educode_sales/activities/new.html.erb +111 -16
  15. data/app/views/educode_sales/businesses/_follows.html.erb +34 -1
  16. data/app/views/educode_sales/businesses/index.html.erb +55 -20
  17. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  18. data/app/views/educode_sales/businesses/time_line.html.erb +30 -0
  19. data/app/views/educode_sales/home/search_edu_user.json.jbuilder +13 -0
  20. data/app/views/educode_sales/idea_recycles/detail.html.erb +25 -4
  21. data/app/views/educode_sales/idea_recycles/index.html.erb +3 -3
  22. data/app/views/educode_sales/idea_recycles/index.json.jbuilder +1 -1
  23. data/app/views/educode_sales/ideas/detail.html.erb +25 -4
  24. data/app/views/educode_sales/ideas/edit.html.erb +134 -27
  25. data/app/views/educode_sales/ideas/index.html.erb +3 -3
  26. data/app/views/educode_sales/ideas/index.json.jbuilder +4 -4
  27. data/app/views/educode_sales/ideas/new.html.erb +118 -15
  28. data/config/routes.rb +4 -0
  29. data/db/migrate/20230319050647_add_clazz_to_educode_sales_activities.rb +6 -0
  30. data/db/migrate/20230319105048_create_educode_sales_activity_staffs.rb +13 -0
  31. data/db/migrate/20230322034022_add_to_school_name_to_ideas.rb +17 -0
  32. data/lib/educode_sales/version.rb +1 -1
  33. metadata +11 -7
  34. data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -7,6 +7,54 @@
7
7
  <% end %>
8
8
  </div>
9
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>
55
+ </div>
56
+ </form>
57
+ </div>
10
58
  <div class="min-height-table">
11
59
  <table class="layui-hide" id="activities_table" lay-filter="activities_table"></table>
12
60
  </div>
@@ -46,14 +94,40 @@
46
94
  {
47
95
  field: 'id',
48
96
  title:'序号',type: 'numbers',
49
- totalRowText:'合计',
97
+ totalRowText:'合计',
50
98
  width: 60
51
99
  },
52
100
  {
53
101
  field: 'name',
54
102
  title: '活动名称',
103
+ width: 180,
55
104
  templet: '#teachers'
56
105
  },
106
+ {
107
+ field: 'clazz_id',
108
+ width: 120,
109
+ title: '会议类型'
110
+ },
111
+ {
112
+ field: 'staff',
113
+ width: 120,
114
+ title: '销售经理'
115
+ },
116
+ {
117
+ field: 'staff_manage',
118
+ width: 180,
119
+ title: '生态经理'
120
+ },
121
+ {
122
+ field: 'staff_assist',
123
+ width: 180,
124
+ title: '协助人员'
125
+ },
126
+ {
127
+ field: 'expert',
128
+ width: 180,
129
+ title: '报告专家'
130
+ },
57
131
  {
58
132
  field: 'start_at',
59
133
  width: 200,
@@ -103,6 +177,17 @@
103
177
  }
104
178
  });
105
179
  })
180
+ // 监听搜索操作
181
+ form.on('submit(search_activity)', function (data) {
182
+ search = data.field
183
+ table.reload('activities_table', {
184
+ page: {
185
+ curr: 1
186
+ },
187
+ where: {q: search, sort: sort}
188
+ }, 'data');
189
+ return false;
190
+ });
106
191
  table.on('toolbar(activities_table)', function (obj) {
107
192
  if (obj.event === 'add') { // 监听添加操作
108
193
  var content = miniPage.getHrefContent('/missions/activities/new');
@@ -10,6 +10,11 @@ json.data do
10
10
  json.students_count d.students_count || 0
11
11
  json.course_rate d.course_rate
12
12
  json.start_at d.start_at ? d.start_at.to_s(:date) : ''
13
+ json.clazz_id d.clazz_id
14
+ json.staff d.staff&.user&.real_name
15
+ json.staff_manage d.manages.map { |d| d.staff.user.real_name}.uniq.join("、")
16
+ json.staff_assist d.assists.map { |d| d.staff.user.real_name}.uniq.join("、")
17
+ json.expert d.experts.pluck(:name).join("、")
13
18
  end
14
19
  end
15
20
 
@@ -1,12 +1,17 @@
1
- <%#= Gon::Base.render_data %>
1
+ <%= Gon::Base.render_data %>
2
2
  <div class="layuimini-main">
3
- <form class="layui-form layuimini-form" action="">
4
- <div class="layui-form-item" style="padding: 25px">
3
+ <div class="layui-form layuimini-form">
4
+ <div class="layui-form-item">
5
5
  <div class="layui-inline">
6
6
  <label class="layui-form-label required">活动名称</label>
7
7
  <div class="layui-input-block">
8
- <input type="text" name="name" required lay-verify="required" placeholder="请输入"
9
- class="layui-input" id="inputFocus">
8
+ <input type="text" name="name" required lay-verify="required" placeholder="请输入" class="layui-input" id="inputFocus">
9
+ </div>
10
+ </div>
11
+ <div class="layui-inline">
12
+ <label class="layui-form-label required">活动类型</label>
13
+ <div class="layui-input-block">
14
+ <%= select_tag "clazz_id", options_for_select(@clazz), { 'lay-filter': 'clazz_id', class: 'required' } %>
10
15
  </div>
11
16
  </div>
12
17
  <div class="layui-inline">
@@ -18,22 +23,49 @@
18
23
  <div class="layui-inline">
19
24
  <label class="layui-form-label required">活动天数</label>
20
25
  <div class="layui-input-block">
21
- <input type="text" name="days" required lay-verify="required"
22
- class="layui-input">
26
+ <input type="text" name="days" required lay-verify="required" class="layui-input">
27
+ </div>
28
+ </div>
29
+ <div class="layui-inline">
30
+ <label class="layui-form-label">生态经理</label>
31
+ <div class="layui-input-block">
32
+ <div id="staff_manage_list" style="width: 163px;"></div>
33
+ </div>
34
+ </div>
35
+ <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>
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="expert_list" style="width: 600px;"></div>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ <div class="layui-form-item">
49
+ <div class="layui-inline">
50
+ <label class="layui-form-label">上传附件</label>
51
+ <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>
23
56
  </div>
24
57
  </div>
25
58
  <div class="layui-inline" style="padding-left: 30px">
26
- <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交
27
- </button>
59
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交 </button>
28
60
  </div>
29
61
  </div>
30
- </form>
62
+ </div>
31
63
  </div>
32
64
 
33
65
  <script>
34
66
  document.getElementById("inputFocus").focus();
35
67
 
36
- layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
68
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer', 'xmSelect'], function () {
37
69
  var form = layui.form,
38
70
  layer = layui.layer,
39
71
  table = layui.table,
@@ -41,6 +73,9 @@
41
73
  laytpl = layui.laytpl,
42
74
  request = layui.request,
43
75
  laydate = layui.laydate,
76
+ xmSelect = layui.xmSelect,
77
+ upload = layui.upload,
78
+ selectInput = layui.selectInput
44
79
  $ = layui.$;
45
80
 
46
81
  //常规用法
@@ -48,7 +83,55 @@
48
83
  elem: '#new_time'
49
84
  });
50
85
 
86
+ var staff_manage = xmSelect.render({
87
+ el: '#staff_manage_list',
88
+ data: gon.staff_manage,
89
+ filterable: true,
90
+ })
91
+
92
+ var staff_assist = xmSelect.render({
93
+ el: '#staff_assist_list',
94
+ data: gon.staff_manage,
95
+ filterable: true,
96
+ })
97
+ var expert = xmSelect.render({
98
+ el: '#expert_list',
99
+ filterable: true,
100
+ name: 'expert_ids',
101
+ remoteSearch: true,
102
+ remoteMethod: function(val, cb, show){
103
+ if(!val){
104
+ return cb([]);
105
+ }
106
+ request.get('missions/search_edu_user?q=' + val, {}, function (res) {
107
+ if (res.data.length == 0) {
108
+ cb([{value: val, name: val}])
109
+ } else {
110
+ cb(res.data);
111
+ }
112
+
113
+ })
114
+ },
115
+ data: []
116
+ })
51
117
 
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
+ })
52
135
  form.render();
53
136
 
54
137
  // 当前弹出层,防止ID被覆盖
@@ -69,15 +152,27 @@
69
152
 
70
153
  //监听提交
71
154
  form.on('submit(data-reset-btn)', function (data) {
155
+ 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) {
159
+ if (typeof(d.value) == 'number') {
160
+ expertids.push([d.value, d.name]);
161
+ } else {
162
+ expertids.push(['', d.name]);
163
+
164
+ }
165
+ })
166
+ data.field.expert_ids = expertids;
72
167
  request.authPost("missions/activities", data.field, function (res) {
73
168
  if (res.success === false) {
74
- layer.alert(res.msg)
169
+ layer.alert(res.msg)
75
170
  } else {
76
- layer.closeAll(); //关闭所有层
77
- table.reload('activities_table')
171
+ layer.closeAll(); //关闭所有层
172
+ table.reload('activities_table')
78
173
  }
79
174
  })
80
- return false;
81
- });
175
+ return false;
176
+ });
82
177
  });
83
178
  </script>
@@ -58,6 +58,9 @@
58
58
  </script>
59
59
  <script type="text/html" id="currentTableBar_follows">
60
60
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">详情</a>
61
+ <% if can?(:advise, EducodeSales::Business) %>
62
+ <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">团队建议</a>
63
+ <% end %>
61
64
  </script>
62
65
  <script type="text/html" id="business">
63
66
  <a href="javascript:void(0);" lay-event="business" class="layui-table-link">{{ d.business }}</a>
@@ -163,7 +166,7 @@
163
166
  },
164
167
  {
165
168
  title: '操作',
166
- width: 80,
169
+ width: 160,
167
170
  toolbar: '#currentTableBar_follows',
168
171
  align: "center",
169
172
  fixed: 'right'
@@ -280,6 +283,36 @@
280
283
  $(window).on("resize", function () {
281
284
  layer.full(index);
282
285
  });
286
+ } else if (obj.event == 'add_advise') {
287
+ layer.open({
288
+ title: '添加团队建议',
289
+ closeBtn: 0,
290
+ type: 1,
291
+ area: '400px;',
292
+ id: 'LAY_layuipro',
293
+ 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>' ,
294
+ btn: ['保存', '取消'],
295
+ btn1: function(index, l) {
296
+ if (l.find("textarea").val().trim() == '') {
297
+ layer.msg('内容不能为空')
298
+ return false;
299
+ } else {
300
+ request.authPut("/missions/follow_ups/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
301
+ if (res.success == false) {
302
+ layer.alert(res.msg);
303
+ } else {
304
+ layer.close(index);
305
+ table.reload('teachers_table');
306
+ }
307
+ })
308
+ }
309
+
310
+ return false
311
+ },
312
+ btn2: function(index, l) {
313
+ layer.close(index)
314
+ }
315
+ });
283
316
  }
284
317
  });
285
318
 
@@ -172,31 +172,35 @@
172
172
  </script>
173
173
  <script type="text/html" id="currentTableBar">
174
174
  <%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business) %>
175
- <% if can? :add_follow, EducodeSales::Business %>
176
- <% if @current_admin.is_admin %>
177
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
178
- <% else %>
179
- {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
180
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
181
- {{# }}}
182
- <% end %>
183
- <% end %>
175
+ <% if can? :add_follow, EducodeSales::Business %>
176
+ <% if @current_admin.is_admin %>
177
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
178
+ <% else %>
179
+ {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
180
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
181
+ {{# }}}
182
+ <% end %>
183
+ <% end %>
184
184
  <% end %>
185
185
  <%if !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business)%>
186
186
  {{# if (d.self_flag) {}}
187
- <% if @current_admin.is_admin %>
188
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
189
- <% else %>
190
- {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
191
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
192
- {{# }}}
193
- <% end %>
187
+ <% if @current_admin.is_admin %>
188
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
189
+ <% else %>
190
+ {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
191
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
192
+ {{# }}}
193
+ <% end %>
194
194
  {{# }}}
195
195
  <% end %>
196
- <%if can?(:update, EducodeSales::Business)%>
197
- <%unless !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
198
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
196
+ <% if can?(:advise, EducodeSales::Business) %>
197
+ <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">建议</a>
199
198
  <% end %>
199
+
200
+ <%if can?(:update, EducodeSales::Business)%>
201
+ <%unless !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
202
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
203
+ <% end %>
200
204
  <% end %>
201
205
  <%if !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
202
206
  {{# if (d.self_flag) {}}
@@ -210,6 +214,7 @@
210
214
  <a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
211
215
  {{# }}}
212
216
  <% end %>
217
+
213
218
  </script>
214
219
 
215
220
  <script type="text/html" id="show_keys">
@@ -603,7 +608,7 @@
603
608
  },
604
609
  {
605
610
  title: '操作',
606
- minWidth: 220,
611
+ minWidth: 270,
607
612
  toolbar: '#currentTableBar',
608
613
  align: "center",
609
614
  fixed: 'right'
@@ -1379,6 +1384,36 @@
1379
1384
  ,cancel: function(){
1380
1385
  }
1381
1386
  });
1387
+ } else if (obj.event == 'add_advise') {
1388
+ layer.open({
1389
+ title: '添加团队建议',
1390
+ closeBtn: 0,
1391
+ type: 1,
1392
+ area: '400px;',
1393
+ id: 'LAY_layuipro',
1394
+ 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>' ,
1395
+ btn: ['保存', '取消'],
1396
+ btn1: function(index, l) {
1397
+ if (l.find("textarea").val().trim() == '') {
1398
+ layer.msg('内容不能为空')
1399
+ return false;
1400
+ } else {
1401
+ request.authPut("/missions/businesses/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
1402
+ if (res.success == false) {
1403
+ layer.alert(res.msg);
1404
+ } else {
1405
+ layer.close(index);
1406
+ table.reload("businesses_table",{url: '/missions/businesses', cols: cols_table})
1407
+ }
1408
+ })
1409
+ }
1410
+
1411
+ return false
1412
+ },
1413
+ btn2: function(index, l) {
1414
+ layer.close(index)
1415
+ }
1416
+ });
1382
1417
  }
1383
1418
  drowpdwonRender()
1384
1419
  });
@@ -20,6 +20,7 @@ json.data do
20
20
  json.reception_at d.last_follow_up&.reception_at.to_s
21
21
  json.bidded_date d.last_follow_up&.bidded_date.to_s
22
22
  json.signed_date d.last_follow_up&.signed_date.to_s
23
+ json.advise d.last_follow_up&.advise.to_s
23
24
  json.o_business_deployment EducodeSales::FollowUp::BUSINESS_DEPLOYMENT[1..-1].to_h.invert[d.last_follow_up&.o_business_deployment]
24
25
  json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
25
26
  json.created_at d.created_at.to_s
@@ -23,6 +23,8 @@
23
23
  <% if f.id == @latest&.id && (f.created_at.present? ? (Time.now - f.created_at).to_f/3600 < 24 : false) %>
24
24
  <a href="javascript:;" class="add_key" data-is_latest="<%= f.id == @latest&.id %>" data-id=<%= f.id %> data-flag="<%= f.created_at.present? ? (Time.now - f.created_at).to_f/3600 < 24 : false %>">添加关键人</a>
25
25
  <% end %>
26
+ <br/>
27
+ 评论: <span></span> <a href="javascript:;" class="add_comment" data-id=<%= f.id %>>评论</a>
26
28
  </p>
27
29
  </div>
28
30
  </li>
@@ -68,6 +70,34 @@
68
70
  layer.full(keyindex);
69
71
  });
70
72
  })
73
+ $(".add_comment").on("click", function(e) {
74
+ var data = e.currentTarget.dataset;
75
+ follow_up_id = data.id;
76
+ var content = e.currentTarget.previousElementSibling.innerHTML;
77
+ layer.open({
78
+ title: '评论',
79
+ closeBtn: 0,
80
+ type: 1,
81
+ area: '400px;',
82
+ id: 'LAY_layuipro_new',
83
+ content: '<div class="layui-form" lay-filter="comment" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + content + '</textarea></div>' ,
84
+ btn: ['保存', '取消'],
85
+ btn1: function(index, l) {
86
+ if (l.find("textarea").val().trim() == '') {
87
+ layer.msg('内容不能为空')
88
+ return false;
89
+ } else {
90
+ e.currentTarget.previousElementSibling.innerHTML = l.find("textarea").val().trim();
91
+ layer.close(index);
92
+ }
93
+ return false
94
+ },
95
+ btn2: function(index, l) {
96
+ layer.close(index)
97
+ },
98
+ });
99
+
100
+ })
71
101
  function demo(){
72
102
  layer.closeAll()
73
103
  business_id = parent.business_id
@@ -0,0 +1,13 @@
1
+ json.data do
2
+ json.array! @data do |d|
3
+ json.value d.id
4
+ if d.department_id.present?
5
+ json.name "#{d.real_name}--(#{d.user_extension.department&.school&.name})[头歌]"
6
+ else
7
+ json.name "#{d.real_name}[头歌]"
8
+ json.extras ""
9
+ end
10
+ end
11
+ end
12
+ json.code 0
13
+ json.msg 'succcess'
@@ -18,13 +18,13 @@
18
18
  <div class="layui-inline">
19
19
  <label class="layui-form-label" style="width: 100px">学校/单位:</label>
20
20
  <div class="layui-input-inline">
21
- <%= idea.school&.name %>
21
+ <%= idea.school_name %>
22
22
  </div>
23
23
  </div>
24
24
  <div class="layui-inline">
25
25
  <label class="layui-form-label" style="width: 100px">院系/部门:</label>
26
26
  <div class="layui-input-inline">
27
- <%= idea.department&.name %>
27
+ <%= idea.department_name %>
28
28
  </div>
29
29
  </div>
30
30
  <div class="layui-inline">
@@ -47,12 +47,33 @@
47
47
  </div>
48
48
  </div>
49
49
  <div class="layui-inline">
50
- <label class="layui-form-label" style="width: 100px">指派人:</label>
50
+ <label class="layui-form-label" style="width: 100px">方案指派人:</label>
51
51
  <div class="layui-input-inline">
52
52
  <%= idea.staff&.user&.real_name %>
53
53
  </div>
54
54
  </div>
55
55
  <br>
56
+ <div class="layui-inline">
57
+ <label class="layui-form-label" style="width: 100px">销售负责人:</label>
58
+ <div class="layui-input-inline">
59
+ <%= idea.sale_staff&.user&.real_name %>
60
+ </div>
61
+ </div>
62
+ <div class="layui-inline">
63
+ <label class="layui-form-label" style="width: 100px">协作者:</label>
64
+ <div class="layui-input-inline">
65
+ <%= idea.assist_staffs.map { |d| d&.user&.real_name }.reject(&:blank?).join("、") %>
66
+ </div>
67
+ </div>
68
+ <div class="layui-inline">
69
+ <label class="layui-form-label" style="width: 100px">方案材料:</label>
70
+ <div class="layui-input-inline">
71
+ <%= link_to "/missions/upload_files/download?id=#{idea.attachment_id}", target: '_blank' do %>
72
+ <%= idea.attachment&.filename.to_s %>
73
+ <% end %>
74
+ </div>
75
+ </div>
76
+ <br>
56
77
  <div class="layui-inline">
57
78
  <label class="layui-form-label" style="width: 100px">优先级:</label>
58
79
  <div class="layui-input-inline">
@@ -92,7 +113,7 @@
92
113
  </div>
93
114
  <br>
94
115
  <div class="layui-inline">
95
- <label class="layui-form-label" style="width: 100px">项目规模(人):</label>
116
+ <label class="layui-form-label" style="width: 100px">并发规模(人):</label>
96
117
  <div class="layui-input-inline">
97
118
  <%= idea.project.to_i %>
98
119
  </div>
@@ -14,7 +14,7 @@
14
14
  </div>
15
15
  </div>
16
16
  <div class="layui-inline">
17
- <label class="layui-form-label">指派人</label>
17
+ <label class="layui-form-label">方案指派人</label>
18
18
  <div class="layui-input-inline">
19
19
  <%= select_tag "staff_id", options_for_select(@staff_arr, ""), { include_blank: true } %>
20
20
  </div>
@@ -129,7 +129,7 @@
129
129
  },
130
130
  {
131
131
  field: 'staff',
132
- title: '指派人',
132
+ title: '方案指派人',
133
133
  width: 100
134
134
  },
135
135
  {
@@ -155,7 +155,7 @@
155
155
  {
156
156
  field: 'project',
157
157
  width: 150,
158
- title: '项目规模(人)'
158
+ title: '并发规模(人)'
159
159
  },
160
160
  {
161
161
  field: 'money',
@@ -1,7 +1,7 @@
1
1
  json.data do
2
2
  json.array! @ideas do |d|
3
3
  json.(d, :id, :name, :level, :status, :types, :model, :content)
4
- json.school d.school&.name
4
+ json.school d.school_name
5
5
  json.staff d.staff&.user&.real_name
6
6
  json.hardware d.hardware.to_f.round(2)
7
7
  json.project d.project.to_i