educode_sales 0.9.73 → 0.9.74

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/contracts_controller.rb +309 -0
  3. data/app/controllers/educode_sales/follow_ups_controller.rb +1 -1
  4. data/app/controllers/educode_sales/home_controller.rb +7 -0
  5. data/app/controllers/educode_sales/ideas_controller.rb +146 -76
  6. data/app/controllers/educode_sales/roles_controller.rb +2 -1
  7. data/app/controllers/educode_sales/upload_files_controller.rb +3 -0
  8. data/app/models/educode_sales/assign_staff.rb +6 -0
  9. data/app/models/educode_sales/contract_date_list.rb +6 -0
  10. data/app/models/educode_sales/follow_up.rb +6 -0
  11. data/app/models/educode_sales/idea.rb +16 -5
  12. data/app/models/educode_sales/idea_follow.rb +11 -0
  13. data/app/models/educode_sales/permission.rb +2 -1
  14. data/app/models/educode_sales/role_area.rb +2 -1
  15. data/app/views/educode_sales/businesses/_contract_list.html.erb +160 -0
  16. data/app/views/educode_sales/contracts/_follows.html.erb +323 -0
  17. data/app/views/educode_sales/contracts/_list.html.erb +596 -0
  18. data/app/views/educode_sales/contracts/follow_ups.json.jbuilder +23 -0
  19. data/app/views/educode_sales/contracts/index.html.erb +50 -0
  20. data/app/views/educode_sales/contracts/index.json.jbuilder +74 -0
  21. data/app/views/educode_sales/contracts/list.js.erb +1 -0
  22. data/app/views/educode_sales/contracts/new_follow_up.html.erb +671 -0
  23. data/app/views/educode_sales/home/staff_business.json.jbuilder +9 -0
  24. data/app/views/educode_sales/idea_recycles/detail.html.erb +4 -4
  25. data/app/views/educode_sales/idea_recycles/index.html.erb +5 -5
  26. data/app/views/educode_sales/ideas/_follows.html.erb +258 -0
  27. data/app/views/educode_sales/ideas/_index.html.erb +544 -0
  28. data/app/views/educode_sales/ideas/detail.html.erb +7 -7
  29. data/app/views/educode_sales/ideas/edit.html.erb +77 -15
  30. data/app/views/educode_sales/ideas/files.html.erb +157 -0
  31. data/app/views/educode_sales/ideas/files.json.jbuilder +13 -0
  32. data/app/views/educode_sales/ideas/follow_ups.json.jbuilder +14 -0
  33. data/app/views/educode_sales/ideas/index.html.erb +12 -353
  34. data/app/views/educode_sales/ideas/index.json.jbuilder +7 -1
  35. data/app/views/educode_sales/ideas/new.html.erb +81 -25
  36. data/app/views/educode_sales/ideas/new_follow_up.html.erb +105 -0
  37. data/app/views/educode_sales/ideas/search_new.html.erb +1 -1
  38. data/app/views/educode_sales/ideas/show_schools.html.erb +84 -0
  39. data/app/views/educode_sales/ideas/show_schools.json.jbuilder +12 -0
  40. data/app/views/educode_sales/ideas/show_teachers.html.erb +372 -0
  41. data/app/views/educode_sales/ideas/upload_file.html.erb +43 -0
  42. data/app/views/educode_sales/projects/detail.html.erb +1 -1
  43. data/app/views/educode_sales/projects/edit.html.erb +1 -1
  44. data/app/views/educode_sales/roles/edit.html.erb +16 -0
  45. data/app/views/layouts/educode_sales/application.html.erb +5 -5
  46. data/config/routes.rb +19 -0
  47. data/db/migrate/20230227061043_create_educode_sales_ideas.rb +2 -2
  48. data/db/migrate/20230430023424_add_plan_signed_date_to_follow_ups.rb +21 -0
  49. data/db/migrate/20230430040332_create_educode_sales_contract_date_lists.rb +15 -0
  50. data/db/migrate/20230430104708_create_idea_follows.rb +25 -0
  51. data/db/migrate/20230430121335_add_permissions_for_ideas.rb +16 -0
  52. data/db/migrate/20230430134710_create_educode_sales_assign_staffs.rb +11 -0
  53. data/lib/educode_sales/version.rb +1 -1
  54. metadata +30 -2
@@ -0,0 +1,544 @@
1
+ <div style="margin: 10px 10px 10px 10px">
2
+ <form class="layui-form layui-form-pane" lay-filter="search_ideas">
3
+ <div class="layui-form-item">
4
+ <div class="layui-inline ">
5
+ <label class="layui-form-label">创建时间</label>
6
+ <div class="layui-input-inline">
7
+ <input type="text" class="layui-input" id="created_at" name="created_at" placeholder=" - " autocomplete="off">
8
+ </div>
9
+ </div>
10
+ <div class="layui-inline">
11
+ <label class="layui-form-label">申请人</label>
12
+ <div class="layui-input-inline">
13
+ <%= select_tag "creator_id", options_for_select(@creator_arr, ""), { include_blank: true } %>
14
+ </div>
15
+ </div>
16
+ <div class="layui-inline">
17
+ <label class="layui-form-label">方案经理</label>
18
+ <div class="layui-input-inline">
19
+ <%= select_tag "staff_id", options_for_select(@staff_arr, ""), { include_blank: true } %>
20
+ </div>
21
+ </div>
22
+ <div class="layui-inline">
23
+ <label class="layui-form-label">销售经理</label>
24
+ <div class="layui-input-inline">
25
+ <%= select_tag "search_sale_staff_id", options_for_select(@sale_staff_arr, ""), { include_blank: true } %>
26
+ </div>
27
+ </div>
28
+ <div class="layui-inline">
29
+ <label class="layui-form-label">状态</label>
30
+ <div class="layui-input-inline">
31
+ <%= select_tag "status", options_for_select(EducodeSales::Idea.statuses.keys, ""), { include_blank: true } %>
32
+ </div>
33
+ </div>
34
+ <div class="layui-inline">
35
+ <label class="layui-form-label">定制类型</label>
36
+ <div class="layui-input-inline">
37
+ <%= select_tag "types", options_for_select(EducodeSales::Idea.types.keys, ""), { include_blank: true } %>
38
+ </div>
39
+ </div>
40
+ <div class="layui-inline">
41
+ <label class="layui-form-label">部署模式</label>
42
+ <div class="layui-input-inline">
43
+ <%= select_tag "model", options_for_select(EducodeSales::Idea.models.keys, ""), { include_blank: true } %>
44
+ </div>
45
+ </div>
46
+ <div class="layui-inline">
47
+ <label class="layui-form-label">历史合作</label>
48
+ <div class="layui-input-inline">
49
+ <%= select_tag "history_type", options_for_select([["无", 0], ["有", 1]], ""), { include_blank: true } %>
50
+ </div>
51
+ </div>
52
+ <div class="layui-inline">
53
+ <label class="layui-form-label">优先级</label>
54
+ <div class="layui-input-inline">
55
+ <%= select_tag "level", options_for_select(EducodeSales::Idea.levels.keys, ""), { include_blank: true } %>
56
+ </div>
57
+ </div>
58
+ <div class="layui-inline">
59
+ <label class="layui-form-label">项目名称</label>
60
+ <div class="layui-input-inline">
61
+ <input type="text" class="layui-input" id="name" name="name" placeholder=" - " autocomplete="off">
62
+ </div>
63
+ </div>
64
+ <div class="layui-inline">
65
+ <label class="layui-form-label">单位</label>
66
+ <div class="layui-input-inline">
67
+ <input type="text" class="layui-input" id="school" name="school" placeholder=" - " autocomplete="off">
68
+ </div>
69
+ </div>
70
+
71
+ <div class="layui-inline">
72
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
73
+ </button>
74
+ <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_ideas">搜 索
75
+ </button>
76
+ </div>
77
+ </div>
78
+ </form>
79
+ </div>
80
+
81
+ <script type="text/html" id="toolbarDemo">
82
+ <div class="layui-btn-container">
83
+ <span class="table-label">方案列表</span>
84
+ <% if can? :create, EducodeSales::Idea %>
85
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加方案申请</button>
86
+ <% end %>
87
+ <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right project_list-btn" lay-event="project_list">
88
+ 方案列表
89
+ </button>
90
+ <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right my-btn" lay-event="mine">
91
+ 方案回收站
92
+ </button>
93
+ </div>
94
+ </script>
95
+ <div class="">
96
+ <table class="layui-hide" id="ideas_table" style="min-height: 300px;" lay-filter="ideas_table"></table>
97
+ </div>
98
+ <script type="text/html" id="currentTableBar">
99
+ {{# if(d.is_deleted){}}
100
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a>
101
+ <% if can? :recycle, EducodeSales::Idea %>
102
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_recycle_s">恢复</a>
103
+ <% end %>
104
+ {{# }else{}}
105
+ <% if can? :add_follow, EducodeSales::Idea %>
106
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-add_follow" lay-event="add_follows">添加跟进</a>
107
+ <% end %>
108
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a>
109
+ <% if can? :update, EducodeSales::Idea %>
110
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_edit">编辑</a>
111
+ <% end %>
112
+ <% if can? :destroy, EducodeSales::Idea %>
113
+ <a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="idea_recycle">移除</a>
114
+ <% end %>
115
+ <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">团队建议</a>
116
+ <% if can? :show_file, EducodeSales::Idea %>
117
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="file">附件</a>
118
+ <% end %>
119
+ {{# }}}
120
+
121
+
122
+ </script>
123
+ <script type="text/html" id="statusTpl">
124
+ {{# if(d.status === '已完成'){ }}
125
+ <span style="color: #22bf18;">{{ d.status }}</span>
126
+ {{# } else { }}
127
+ <span style="color: #e60505;">{{ d.status }}</span>
128
+ {{# } }}
129
+ </script>
130
+
131
+ <script>
132
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
133
+ var $ = layui.jquery,
134
+ form = layui.form,
135
+ request = layui.request,
136
+ dropdown = layui.dropdown,
137
+ miniPage = layui.miniPage,
138
+ laydate = layui.laydate;
139
+
140
+ var laydate = layui.laydate;
141
+
142
+ laydate.render({
143
+ elem: '#created_at',
144
+ range: true
145
+ });
146
+
147
+ cols_table = [
148
+ [
149
+ {
150
+ field: 'school',
151
+ width: 160,
152
+ title: '单位名称'
153
+ },
154
+ {
155
+ field: 'name',
156
+ width: 160,
157
+ title: '项目名称'
158
+ },
159
+ {
160
+ field: 'level',
161
+ width: 100,
162
+ title: '优先级'
163
+ },
164
+ {
165
+ field: 'staff',
166
+ title: '方案经理',
167
+ width: 100
168
+ },
169
+ {
170
+ field: 'sale_staff',
171
+ title: '销售经理',
172
+ width: 100
173
+ },
174
+ {
175
+ field: 'status',
176
+ width: 100,
177
+ title: '状态',
178
+ templet: '#statusTpl'
179
+ },
180
+ {
181
+ field: 'types',
182
+ width: 100,
183
+ title: '定制类型',
184
+ },
185
+ {
186
+ field: 'idea_type',
187
+ width: 100,
188
+ title: '方案类型',
189
+ },
190
+ {
191
+ field: 'idea_follows_count',
192
+ width: 100,
193
+ title: '跟进',
194
+ },
195
+ {
196
+ field: 'f_staff',
197
+ width: 100,
198
+ title: '跟进人',
199
+ },
200
+ {
201
+ field: 'f_last_time',
202
+ width: 150,
203
+ title: '最新跟进时间',
204
+ },
205
+ {
206
+ field: 'model',
207
+ width: 100,
208
+ title: '部署模式',
209
+ },
210
+ {
211
+ field: 'hardware',
212
+ width: 150,
213
+ title: '硬件规模(万)'
214
+ },
215
+ {
216
+ field: 'project',
217
+ width: 150,
218
+ title: '并发规模(人)'
219
+ },
220
+ {
221
+ field: 'money',
222
+ width: 150,
223
+ title: '项目预算(万)'
224
+ },
225
+ {
226
+ field: 'creator',
227
+ width: 100,
228
+ title: '申请人'
229
+ },
230
+ {
231
+ field: 'end_time',
232
+ width: 200,
233
+ title: '截止时间'
234
+ },
235
+ {
236
+ field: 'history_type',
237
+ width: 150,
238
+ title: '历史合作'
239
+ },
240
+ {
241
+ field: 'created_at',
242
+ width: 150,
243
+ title: '创建时间'
244
+ },
245
+ {
246
+ field: 'end_time',
247
+ width: 150,
248
+ title: '完成时间'
249
+ },
250
+ {
251
+ field: 'content',
252
+ width: 200,
253
+ title: '需求说明'
254
+ },
255
+ {
256
+ title: '操作',
257
+ minWidth: 500,
258
+ toolbar: '#currentTableBar',
259
+ align: "center",
260
+ fixed: 'right'
261
+ }
262
+ ]
263
+ ]
264
+
265
+ table = layui.table;
266
+ table.render({
267
+ elem: '#ideas_table',
268
+ url: '/missions/ideas',
269
+ where: {q: form.val('search_form')},
270
+ toolbar: '#toolbarDemo',
271
+ totalRow: true,
272
+ defaultToolbar: ['filter'],
273
+ cols: cols_table,
274
+ limit: 20,
275
+ limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
276
+ page: true,
277
+ done: function (res) {
278
+ }
279
+ });
280
+
281
+ function deleteBusiness(id, name) {
282
+ layer.confirm('确定删除' + name, function (index) {
283
+ request.delete('missions/ideas/' + id, {}, function (res) {
284
+ layer.close(index);
285
+ table.reload("ideas_table")
286
+ })
287
+ });
288
+ }
289
+
290
+ var sort = {}, search = {};
291
+ table.on('sort(ideas_table)', function (obj) {
292
+ sort.field = obj.field;
293
+ sort.order = obj.type;
294
+ table.reload('ideas_table', {
295
+ initSort: obj,
296
+ where: {
297
+ sort: sort,
298
+ q: search
299
+ }
300
+ });
301
+ })
302
+
303
+ // 监听搜索操作
304
+ form.on('submit(search_ideas)', function (data) {
305
+ search = data.field
306
+ table.reload('ideas_table', {
307
+ page: {
308
+ curr: 1
309
+ },
310
+ where: {q: search, sort: sort}
311
+ }, 'data');
312
+ return false;
313
+ });
314
+
315
+ form.on('submit(reset_business_search)', function (data) {
316
+ var field = data.field;
317
+ form.val('search_ideas', {
318
+ created_at: "",
319
+ creator_id: "",
320
+ staff_id: "",
321
+ name: "",
322
+ school: "",
323
+ status: "",
324
+ model: "",
325
+ types: "",
326
+ level: "",
327
+ history_type: ""
328
+ })
329
+ return false;
330
+ });
331
+ // form.on('submit(show_hide)', function (data) {
332
+ // $(".show_item").toggle()
333
+ // return false;
334
+ // });
335
+ /**
336
+ * toolbar事件监听
337
+ */
338
+ table.on('toolbar(ideas_table)', function (obj) {
339
+ if (obj.event === 'add') { // 手动添加
340
+ var content = miniPage.getHrefContent('/missions/ideas/new');
341
+ var openWH = miniPage.getOpenWidthHeight();
342
+ add_idea_index = layer.open({
343
+ title: '新建',
344
+ type: 1,
345
+ shade: 0.2,
346
+ maxmin: true,
347
+ shadeClose: true,
348
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
349
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
350
+ content: content,
351
+ });
352
+ $(window).on("resize", function () {
353
+ layer.full(index);
354
+ });
355
+ } else if (obj.event === 'mine') {
356
+ table.reload('ideas_table', {
357
+ url: '/missions/ideas?is_deleted=true',
358
+ cols: cols_table,
359
+ page: {
360
+ curr: 1
361
+ },
362
+ where: {q: search, sort: sort}
363
+ }, 'data');
364
+ form.val('search_form', {
365
+ name: '',
366
+ department: '',
367
+ bidded_date: '',
368
+ signed_date: '',
369
+ search_p_actual_money_time: '',
370
+ p_stage: '',
371
+ p_state: '',
372
+ p_special: '',
373
+ p_difficulty: '',
374
+ o_business_deployment: '',
375
+ p_staff_id: '',
376
+ p_sale_staff_id: ''
377
+ })
378
+ $(".my-btn").addClass("selected-btn");
379
+ return false;
380
+ } else if (obj.event === 'project_list') {
381
+ // search = {"clazz": "me"}
382
+ // business_type_list.setValue([])
383
+ table.reload('ideas_table', {
384
+ url: '/missions/ideas',
385
+ cols: cols_table,
386
+ page: {
387
+ curr: 1
388
+ },
389
+ where: {q: search, sort: sort}
390
+ }, 'data');
391
+ form.val('search_form', {
392
+ name: '',
393
+ department: '',
394
+ bidded_date: '',
395
+ signed_date: '',
396
+ search_p_actual_money_time: '',
397
+ p_stage: '',
398
+ p_state: '',
399
+ p_special: '',
400
+ p_difficulty: '',
401
+ o_business_deployment: '',
402
+ p_staff_id: '',
403
+ p_sale_staff_id: ''
404
+ })
405
+ $(".project_list-btn").addClass("selected-btn");
406
+ return false;
407
+ }
408
+ });
409
+
410
+ //监听表格复选框选择
411
+ // table.on('checkbox(ideas_table)', function (obj) {
412
+ // console.log(obj)
413
+ // });
414
+
415
+ table.on('tool(ideas_table)', function (obj) {
416
+ var data = obj.data;
417
+ id = data.id
418
+ if (obj.event === 'add_event') { // 监听添加操作
419
+ var content = miniPage.getHrefContent('/missions/ideas/detail?id=' + data.id);
420
+ var openWH = miniPage.getOpenWidthHeight();
421
+ show_index = layer.open({
422
+ title: '详情',
423
+ type: 1,
424
+ shade: 0.2,
425
+ maxmin: true,
426
+ shadeClose: true,
427
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
428
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
429
+ content: content
430
+ });
431
+ $(window).on("resize", function () {
432
+ layer.full(show_index);
433
+ });
434
+ } else if (obj.event === 'add_follows') { // 监听添加操作
435
+ idea_id = data.id
436
+ var content = miniPage.getHrefContent('/missions/ideas/new_follow_up?id=' + data.id);
437
+ var openWH = miniPage.getOpenWidthHeight();
438
+ followup_index = layer.open({
439
+ title: '添加跟进记录',
440
+ type: 1,
441
+ shade: 0.2,
442
+ maxmin: true,
443
+ shadeClose: true,
444
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
445
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
446
+ content: content,
447
+ success: function (layero, index) {
448
+ form.render('select');
449
+ }
450
+ });
451
+ $(window).on("resize", function () {
452
+ layer.full(followup_index);
453
+ });
454
+ } else if (obj.event === 'idea_recycle') {
455
+ layer.confirm('确定删除' + data.name, function (index) {
456
+ request.delete('missions/ideas/' + id, {}, function (res) {
457
+ layer.close(index);
458
+ table.reload("ideas_table")
459
+ })
460
+ });
461
+ } else if (obj.event == 'file') {
462
+ idea_id = data.id
463
+ var content = miniPage.getHrefContent('/missions/ideas/' + 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
+ });
481
+ } else if (obj.event === 'idea_recycle_s') {
482
+ layer.confirm('确定恢复' + data.name, function (index) {
483
+ request.delete('missions/idea_recycles/' + id, {}, function (res) {
484
+ layer.close(index);
485
+ table.reload("ideas_table")
486
+ })
487
+ });
488
+ } else if (obj.event == 'add_advise') {
489
+ layer.open({
490
+ title: '添加团队建议',
491
+ closeBtn: 0,
492
+ type: 1,
493
+ area: '400px;',
494
+ id: 'LAY_layuipro',
495
+ 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>',
496
+ btn: ['保存', '取消'],
497
+ btn1: function (index, l) {
498
+ if (l.find("textarea").val().trim() == '') {
499
+ layer.msg('内容不能为空')
500
+ return false;
501
+ } else {
502
+ request.authPut("/missions/ideas/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function (res) {
503
+ if (res.success == false) {
504
+ layer.alert(res.msg);
505
+ } else {
506
+ layer.close(index);
507
+ table.reload("ideas_table")
508
+ }
509
+ })
510
+ }
511
+
512
+ return false
513
+ },
514
+ btn2: function (index, l) {
515
+ layer.close(index)
516
+ }
517
+ });
518
+ } else if (obj.event === 'idea_edit') { // 监听添加操作
519
+ var content = miniPage.getHrefContent('/missions/ideas/' + id + '/edit');
520
+ var openWH = miniPage.getOpenWidthHeight();
521
+ edit_index = layer.open({
522
+ title: '编辑',
523
+ type: 1,
524
+ shade: 0.2,
525
+ maxmin: true,
526
+ shadeClose: true,
527
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
528
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
529
+ content: content
530
+ });
531
+ $(window).on("resize", function () {
532
+ layer.full(edit_index);
533
+ });
534
+ }
535
+ });
536
+
537
+ });
538
+ </script>
539
+ <style>
540
+ .layui-table-tool-temp {
541
+ padding-right: 30px;
542
+ !important;
543
+ }
544
+ </style>
@@ -16,19 +16,19 @@
16
16
  </div>
17
17
  <br>
18
18
  <div class="layui-inline">
19
- <label class="layui-form-label" style="width: 100px">学校/单位:</label>
19
+ <label class="layui-form-label" style="width: 100px">单位:</label>
20
20
  <div class="layui-input-inline">
21
21
  <%= idea.school&.name %>
22
22
  </div>
23
23
  </div>
24
24
  <div class="layui-inline">
25
- <label class="layui-form-label" style="width: 100px">院系/部门:</label>
25
+ <label class="layui-form-label" style="width: 100px">部门:</label>
26
26
  <div class="layui-input-inline">
27
27
  <%= idea.department&.name %>
28
28
  </div>
29
29
  </div>
30
30
  <div class="layui-inline">
31
- <label class="layui-form-label" style="width: 100px">学校负责人:</label>
31
+ <label class="layui-form-label" style="width: 100px">单位联系人:</label>
32
32
  <div class="layui-input-inline">
33
33
  <%= idea.manager_name %>
34
34
  </div>
@@ -47,14 +47,14 @@
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
56
  <div class="layui-inline">
57
- <label class="layui-form-label" style="width: 100px">销售负责人:</label>
57
+ <label class="layui-form-label" style="width: 100px">销售经理:</label>
58
58
  <div class="layui-input-inline">
59
59
  <%= idea.sale_staff&.user&.real_name %>
60
60
  </div>
@@ -87,7 +87,7 @@
87
87
  </div>
88
88
  </div>
89
89
  <div class="layui-inline">
90
- <label class="layui-form-label" style="width: 100px">类型:</label>
90
+ <label class="layui-form-label" style="width: 100px">定制类型:</label>
91
91
  <div class="layui-input-inline">
92
92
  <%= idea.types %>
93
93
  </div>
@@ -126,7 +126,7 @@
126
126
  </div>
127
127
  <br>
128
128
  <div class="layui-inline">
129
- <label class="layui-form-label" style="width: 100px">反馈情况:</label>
129
+ <label class="layui-form-label" style="width: 100px">需求说明:</label>
130
130
  <div class="layui-input-inline" style="width: 1000px">
131
131
  <%= idea.content.to_s %>
132
132
  </div>