educode_sales 1.10.49 → 1.10.58

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/educode_sales/modules/easyeditor/easyeditor.css +1 -1
  3. data/app/controllers/educode_sales/application_controller.rb +10 -0
  4. data/app/controllers/educode_sales/business_courses_controller.rb +58 -33
  5. data/app/controllers/educode_sales/businesses_controller.rb +43 -7
  6. data/app/controllers/educode_sales/contracts_controller.rb +6 -0
  7. data/app/controllers/educode_sales/money_plan_records_controller.rb +6 -2
  8. data/app/controllers/educode_sales/money_plans_controller.rb +3 -0
  9. data/app/controllers/educode_sales/sale_trends_controller.rb +1 -1
  10. data/app/controllers/educode_sales/shixun_dectects_controller.rb +77 -16
  11. data/app/controllers/educode_sales/shixuns_controller.rb +65 -4
  12. data/app/controllers/educode_sales/subject_trends_controller.rb +99 -892
  13. data/app/controllers/educode_sales/subjects_controller.rb +29 -18
  14. data/app/helpers/educode_sales/application_helper.rb +3 -1
  15. data/app/helpers/educode_sales/business_courses_helper.rb +29 -6
  16. data/app/helpers/educode_sales/sale_trends_helper.rb +52 -52
  17. data/app/helpers/educode_sales/subject_helper.rb +5 -1
  18. data/app/models/educode_sales/business.rb +5 -5
  19. data/app/models/educode_sales/business_deliver_subject.rb +3 -2
  20. data/app/models/educode_sales/business_subject.rb +9 -3
  21. data/app/models/educode_sales/business_subject_shixun.rb +37 -8
  22. data/app/models/educode_sales/business_subject_staff.rb +1 -0
  23. data/app/views/educode_sales/business_courses/edit.html.erb +30 -4
  24. data/app/views/educode_sales/business_courses/index.html.erb +34 -12
  25. data/app/views/educode_sales/business_courses/index.json.jbuilder +2 -2
  26. data/app/views/educode_sales/business_courses/list_shixuns.html.erb +132 -64
  27. data/app/views/educode_sales/business_courses/list_shixuns.json.jbuilder +12 -6
  28. data/app/views/educode_sales/business_courses/list_subjects.html.erb +29 -34
  29. data/app/views/educode_sales/business_courses/list_subjects.json.jbuilder +7 -2
  30. data/app/views/educode_sales/business_courses/new.html.erb +45 -20
  31. data/app/views/educode_sales/businesses/index.html.erb +11 -9
  32. data/app/views/educode_sales/contracts/_list.html.erb +16 -1
  33. data/app/views/educode_sales/contracts/index.html.erb +5 -2
  34. data/app/views/educode_sales/contracts/list.js.erb +4 -1
  35. data/app/views/educode_sales/money_plan_records/_index.html.erb +21 -5
  36. data/app/views/educode_sales/money_plan_records/index.js.erb +4 -1
  37. data/app/views/educode_sales/money_plans/list.html.erb +6 -2
  38. data/app/views/educode_sales/sale_trends/_return_money_forecast.html.erb +1 -1
  39. data/app/views/educode_sales/sale_trends/_user_stat.html.erb +1 -1
  40. data/app/views/educode_sales/sale_trends/_visit_analysis.html.erb +1 -1
  41. data/app/views/educode_sales/sale_trends/return_money_forecast.js.erb +1 -1
  42. data/app/views/educode_sales/sale_trends/trends.html.erb +6 -6
  43. data/app/views/educode_sales/sale_trends/user_stat.js.erb +1 -1
  44. data/app/views/educode_sales/sale_trends/visit_analysis.js.erb +1 -1
  45. data/app/views/educode_sales/shixun_dectects/index.html.erb +97 -47
  46. data/app/views/educode_sales/shixun_dectects/index.json.jbuilder +4 -3
  47. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +1 -1
  48. data/app/views/educode_sales/shixuns/edit.html.erb +35 -13
  49. data/app/views/educode_sales/shixuns/index.html.erb +348 -138
  50. data/app/views/educode_sales/shixuns/index.json.jbuilder +9 -5
  51. data/app/views/educode_sales/shixuns/new.html.erb +22 -12
  52. data/app/views/educode_sales/subject_trends/trends.html.erb +177 -575
  53. data/app/views/educode_sales/subjects/edit.html.erb +4 -4
  54. data/app/views/educode_sales/subjects/index.html.erb +50 -12
  55. data/app/views/educode_sales/subjects/index.json.jbuilder +3 -3
  56. data/app/views/educode_sales/subjects/list_shixuns.html.erb +143 -17
  57. data/app/views/educode_sales/subjects/list_shixuns.json.jbuilder +9 -4
  58. data/app/views/educode_sales/subjects/new.html.erb +4 -4
  59. data/app/views/layouts/educode_sales/application.html.erb +1 -1
  60. data/lib/educode_sales/version.rb +1 -1
  61. metadata +6 -7
  62. data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -1,8 +1,15 @@
1
1
  <!-- 图标 -->
2
2
  <style>
3
- .markdown_list img{
3
+ .markdown_list img {
4
4
  max-width: 700px;
5
5
  }
6
+
7
+ .layui-table-cell {
8
+ height: auto !important;
9
+ width: auto;
10
+ white-space: normal;
11
+ /*line-height: 28px;*/
12
+ }
6
13
  </style>
7
14
  <link rel="stylesheet" type="text/css" href="//at.alicdn.com/t/font_1531710_xb357ub1wmg.css"/>
8
15
  <style>
@@ -21,15 +28,23 @@
21
28
  <div>
22
29
  <form class="layui-form layui-form-pane" lay-filter="search_form">
23
30
  <div class="layui-inline show_item_contract inner_div">
24
- <label class="layui-form-label">项目级别</label>
31
+ <label class="layui-form-label">任务类型</label>
25
32
  <div class="layui-input-inline">
26
33
  <%= select_tag "category", options_for_select(
27
34
  [["全部", 0], ["管培", 1], ["全职", 2], ["专职", 3]], selected: 0
28
35
  ), { include_blank: true } %>
29
36
  </div>
30
37
  </div>
38
+ <div id="shixun_dectect_type_form" style="display: none" class="layui-inline show_item_contract inner_div">
39
+ <label class="layui-form-label">审核状态</label>
40
+ <div class="layui-input-inline">
41
+ <%= select_tag "dectect_type", options_for_select(
42
+ [["全部", 0], ["已通过", 1], ["已驳回", 2]], selected: 0
43
+ ), { include_blank: true } %>
44
+ </div>
45
+ </div>
31
46
  <div class="layui-inline borders inner_div">
32
- <label class="layui-form-label" style="width: 120px">实践项目名称</label>
47
+ <label class="layui-form-label" style="width: 130px">实践项目名称</label>
33
48
  <div class="layui-input-inline">
34
49
  <input type="text" class="layui-input" name="shixun_name">
35
50
  </div>
@@ -58,9 +73,7 @@
58
73
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit layui-bg-blue" lay-event="info">详情</a>
59
74
  {{# } }}
60
75
  </script>
61
- <script type="text/html" class="markdown">
62
- <a lay-event="examine">点击查看</a>
63
- </script>
76
+
64
77
  <script type="text/html" id="shixun_dectect_type">
65
78
  {{# if(d.dectect_type === 1){ }}
66
79
  <span style="color: green">已通过</span>
@@ -92,6 +105,13 @@
92
105
  <span>不重要不紧急</span>
93
106
  {{# } }}
94
107
  </script>
108
+ <script type="text/html" id="aherf">
109
+ {{# if(d.identifier !== null && d.identifier !== ''){ }}
110
+ <a target="_blank" style="color:deepskyblue" href="<%= @url %>/shixuns/{{= d.identifier}}/challenges">{{=d.shixun_name}}</a>
111
+ {{# } else { }}
112
+ <a style="color:deepskyblue">{{=d.shixun_name}}</a>
113
+ {{# } }}
114
+ </script>
95
115
  <script type="text/html" id="show_state">
96
116
  {{# if(d.shixun_status === 1){ }}
97
117
  <span>待建设</span>
@@ -111,6 +131,26 @@
111
131
  </script>
112
132
  <script src="/markdown/marked.min.js" type="text/javascript" charset="utf-8"></script>
113
133
  <script>
134
+ function extractFirstTenCharsAndImage(markdownText) {
135
+ let firstTenChars = '';
136
+ let imageTag = '';
137
+ // 行内图片的正则表达式
138
+ const inlineImageRegex = /!\[.*?\]\((.*?)\)/g;
139
+ // 处理行内图片
140
+ markdownText = markdownText.replace(inlineImageRegex, (_, imagePath) => {
141
+ // 如果匹配到行内图片,则生成图片标签,并将匹配的图片部分替换为空字符串
142
+ imageTag = `<img style="max-height: 100px" src="${imagePath}" />`;
143
+ return '';
144
+ });
145
+ // 去除Markdown格式,只保留纯文本内容
146
+ const pureText = markdownText.replace(/(^|\n)(\d+\.|)\s*/g, '$1').trim();
147
+ // 获取前十个字符
148
+ firstTenChars = pureText.substring(0, 10);
149
+ // 输出结果
150
+ return `<div lay-event="show_markdown"><p>${firstTenChars}</p> ${imageTag}</div>`
151
+ }
152
+
153
+
114
154
  layui.config({
115
155
  base: '/markdown/mods/' //存放layui拓展模块的目录位置
116
156
  }).use(['form', 'table', 'miniPage', 'element', 'laydate', 'dropdown', 'easyeditor'], function () {
@@ -129,7 +169,6 @@
129
169
  minWidth: 60,
130
170
  title: '序号',
131
171
  type: 'numbers',
132
- fixed: 'left',
133
172
  align: 'center'
134
173
  },
135
174
  {
@@ -146,10 +185,10 @@
146
185
 
147
186
  },
148
187
  {
149
- field: 'shixun_name',
150
188
  title: '实践项目名称',
151
189
  minWidth: 200,
152
- align: 'center'
190
+ align: 'center',
191
+ templet: "#aherf"
153
192
  },
154
193
  {
155
194
  field: 'shixun_producer',
@@ -174,7 +213,6 @@
174
213
  field: 'deliver_date',
175
214
  title: '交付时间',
176
215
  width: 180,
177
- templet: `<span>{{=new Date(d.deliver_date).toLocaleString('zh-CN')}}</span>`,
178
216
  align: 'center'
179
217
  },
180
218
  {
@@ -195,7 +233,6 @@
195
233
  width: 200,
196
234
  toolbar: '#shixun_table_bar',
197
235
  align: "center",
198
- fixed: 'right'
199
236
  }
200
237
  ]
201
238
  ]
@@ -216,7 +253,8 @@
216
253
  // 监听搜索操作
217
254
  form.on('submit(search_contract)', function (data) {
218
255
  search = data.field
219
- console.log(search)
256
+ var index = localStorage.getItem("index")
257
+ search.index = index
220
258
  table.reload('shixun_dectects_table', {
221
259
  page: {
222
260
  curr: 1
@@ -225,7 +263,23 @@
225
263
  }, 'data');
226
264
  return false;
227
265
  });
228
-
266
+ // 重置
267
+ form.on('submit(reset_business_search)', function (data) {
268
+ var index = localStorage.getItem("index")
269
+ table.reload('shixun_dectects_table', {
270
+ page: {
271
+ curr: 1
272
+ },
273
+ where: {
274
+ q: {
275
+ index: index
276
+ }
277
+ }
278
+ }, 'data');
279
+ $(".layui-form")[0].reset();
280
+ form.render()
281
+ return false;
282
+ });
229
283
 
230
284
  table.on('tool(shixun_dectects_table)', function (obj) {
231
285
  var data = obj.data;
@@ -262,7 +316,7 @@
262
316
  type: 1,
263
317
  shade: 0.2,
264
318
  maxmin: true,
265
- shadeClose: true,
319
+ shadeClose: false,
266
320
  area: ['900px', '550px'],
267
321
  // offset: [openWH[2] + 'px', openWH[3] + 'px'],
268
322
  content: content
@@ -301,38 +355,26 @@
301
355
  elem: ".markdown_list"
302
356
  });
303
357
  return false
304
- } else if (obj.event === "examine") {
305
- var text = `<div class="layui-timeline" style="margin: 40px"><div class="layui-timeline-item">
306
- <i class="layui-icon layui-timeline-axis"></i>
307
- <div class="layui-timeline-content layui-text">
308
-
309
- <p>
310
- 审核状态:驳回
311
- </p>
312
- <p>
313
- 拒绝原因:
314
- <div class="markdown_list" >` + data.content + `</div>
315
- </p>
316
- </div>
317
- </div></div>`
318
-
319
- layer.open({
320
- type: 1,
321
- title: '审核反馈',
322
- area: ['900px', '500px'], // 宽高
323
- content: text,
324
- move: '#ID-test-layer-move'
325
- });
326
- easyeditor.render({
327
- elem: ".markdown_list"
328
- });
358
+ } else if (obj.event === 'show_markdown') {
359
+ if (data.content !== '--') {
360
+ var text = `<div class="markdown_list" style="margin: 50px" >` + data.content + `</div>`
361
+ layer.open({
362
+ type: 1,
363
+ title: '审核反馈',
364
+ area: ['900px', '700px'], // 宽高
365
+ content: text,
366
+ move: '#ID-test-layer-move'
367
+ });
368
+ easyeditor.render({
369
+ elem: ".markdown_list"
370
+ });
371
+ }
329
372
  }
330
373
 
331
374
  });
332
375
 
333
376
  form.on('submit(shixun_dectects_table)', function (data) {
334
377
  search = data.field
335
- console.log(search)
336
378
  table.reload('table', {
337
379
  page: {
338
380
  curr: 1
@@ -341,13 +383,16 @@
341
383
  }, 'data');
342
384
  return false;
343
385
  });
344
-
386
+ $("#shixun_dectect_type_form").hide()
345
387
  //控制顶部的待审核 和已审核
346
388
  for (let i = 1; i <= 2; i++) {
347
389
 
348
390
  if (i !== 2) {
349
391
  $("#index_" + i).click(function () {
392
+ $(".layui-form")[0].reset();
393
+ $("#shixun_dectect_type_form").hide()
350
394
  data.index = i
395
+ localStorage.setItem("index", i)
351
396
  table.reload('shixun_dectects_table', {
352
397
  page: {
353
398
  curr: 1
@@ -358,6 +403,9 @@
358
403
  });
359
404
  } else {
360
405
  $("#index_" + i).click(function () {
406
+ $(".layui-form")[0].reset();
407
+ $("#shixun_dectect_type_form").show()
408
+ localStorage.setItem("index", i)
361
409
  var arr = [
362
410
  [
363
411
  {
@@ -365,7 +413,6 @@
365
413
  minWidth: 60,
366
414
  title: '序号',
367
415
  type: 'numbers',
368
- fixed: 'left',
369
416
  align: 'center'
370
417
  },
371
418
  {
@@ -382,10 +429,10 @@
382
429
 
383
430
  },
384
431
  {
385
- field: 'shixun_name',
386
432
  title: '实践项目名称',
387
433
  minWidth: 200,
388
- align: 'center'
434
+ align: 'center',
435
+ templet: "#aherf"
389
436
  },
390
437
  {
391
438
  field: 'shixun_manages',
@@ -410,7 +457,6 @@
410
457
  field: 'deliver_date',
411
458
  title: '交付时间',
412
459
  width: 180,
413
- templet: `<span>{{=new Date(d.deliver_date).toLocaleString('zh-CN')}}</span>`,
414
460
  align: 'center'
415
461
  },
416
462
  {
@@ -427,7 +473,12 @@
427
473
  },
428
474
  {
429
475
  title: '审核反馈',
430
- templet: ".markdown",
476
+ templet: (d) => {
477
+ if (d.dectect_type === 2) {
478
+ return extractFirstTenCharsAndImage(d.content)
479
+ }
480
+ return ''
481
+ },
431
482
  align: 'center',
432
483
  minWidth: 100,
433
484
  },
@@ -436,7 +487,6 @@
436
487
  width: 200,
437
488
  toolbar: '#shixun_dectect_type',
438
489
  align: "center",
439
- fixed: 'right'
440
490
  }
441
491
  ]
442
492
  ]
@@ -6,15 +6,16 @@ json.data do
6
6
  json.shixun_producer d.shixun_producer
7
7
  json.shixun_staff d.shixun_staff
8
8
  json.type d.shixun_type
9
- json.deliver_date d.deliver_date
10
- json.deliver_money d.deliver_money
9
+ json.deliver_date handled_time_data @times["#{d.id}"]
10
+ json.deliver_money handled_data d.deliver_money
11
11
  json.category d.category
12
- json.school_name d.school_name
12
+ json.school_name handled_data d.shixun_school
13
13
  json.shixun_name d.shixun_name
14
14
  json.shixun_status d.shixun_status
15
15
  json.real_name d.real_name
16
16
  json.dectect_type d.dectect_type
17
17
  json.level d.level
18
+ json.identifier d.identifier
18
19
  json.id d.id
19
20
  end
20
21
  end
@@ -23,7 +23,7 @@
23
23
  easyeditor.init({
24
24
  elem: '.editor' //textarea 元素class
25
25
  , uploadUrl: '/api/attachments/' //图片上传地址
26
- , uploadSize: '' //限制的上传大小 单位kb 默认 1024k
26
+ , uploadSize: '1024 * 10' //限制的上传大小 单位kb 默认 1024k
27
27
 
28
28
  });
29
29
  form.on('submit(saveBtn)', function (data) {
@@ -11,8 +11,8 @@
11
11
  <label class="layui-form-label">任务类型:<span style="color: red"> *</span></label>
12
12
  <div class="layui-input-block">
13
13
  <%= select_tag "category", options_for_select(
14
- [["全部", 0], ["管培", 1], ["全职", 2], ["专职", 3]],selected:@item.category
15
- ), { include_blank: true } %>
14
+ [ ["管培", 1], ["全职", 2], ["专职", 3]],selected:@item.category
15
+ ), {"lay-filter":"Add_company", include_blank: true } %>
16
16
  </div>
17
17
  </div>
18
18
  <div>
@@ -37,30 +37,40 @@
37
37
  <div>
38
38
  <label class="layui-form-label">项目状态:<span style="color: red"> *</span></label>
39
39
  <div class="layui-input-block">
40
- <%= select_tag "status", options_for_select(
41
- [["全部", 0], ["待建设", 1], ["已签协议", 2], ["建设中", 3],
42
- ["审核中", 4], ["返修中", 5], ["已内部发布", 6], ["已公开发布", 7]], @item.shixun_status
43
- ), { include_blank: true } %>
40
+ <% if @item.shixun_status == 4 || @item.shixun_status == 5%>
41
+ <%= select_tag "status", options_for_select(
42
+ [["审核中", 4], ["返修中", 5]], @item.shixun_status
43
+ ), { include_blank: true ,disabled: true} %>
44
+ <% elsif @last_dectect == 'refused' %>
45
+ <%= select_tag "status", options_for_select(
46
+ [["已内部发布", 6], ["已公开发布", 7],["已付费用",8]], @item.shixun_status
47
+ ), { include_blank: true} %>
48
+ <% else @last_dectect == ''%>
49
+ <%= select_tag "status", options_for_select(
50
+ [ ["待建设", 1], ["建设中", 3]], @item.shixun_status
51
+ ), { include_blank: true } %>
52
+ <% end%>
53
+
44
54
  </div>
45
55
  </div>
46
56
  </div>
47
57
 
48
58
  <div class="layui-form-item">
49
- <label class="layui-form-label" style="width: 90px">项目制作人:<span style="color: red"> *</span></label>
59
+ <label class="layui-form-label" style="width: 96px">项目制作人:<span style="color: red"> *</span></label>
50
60
  <div class="layui-input-block">
51
- <div id="producer_id" style="width: 50%;"></div>
61
+ <div id="producer_id" style="width: 49%;margin-left: 10px"></div>
52
62
  </div>
53
63
  </div>
54
64
  <div class="layui-form-item">
55
- <label class="layui-form-label" style="width: 100px">制作完成时间:<span style="color: red"> *</span></label>
56
- <div class="layui-input-block">
65
+ <label class="layui-form-label" style="width: 120px">制作完成时间:<span style="color: red"> *</span></label>
66
+ <div class="layui-input-block" style="width: 89%">
57
67
  <input type="text" class="layui-input" name="time"
58
68
  id="ID-laydate-demo" placeholder="yyyy-MM-dd"
59
- value="<%=@item.deliver_date %>"
69
+ value="<%=@item.deliver_date.blank? ? "" : @item.deliver_date.strftime("%Y-%m-%d") %>"
60
70
  style="width: 49%;">
61
71
  </div>
62
72
  </div>
63
- <div class="layui-form-item">
73
+ <div class="layui-form-item" id="money">
64
74
  <label class="layui-form-label">交付金额:<span style="color: red"> *</span></label>
65
75
  <div class="layui-input-block">
66
76
  <input type="number" class="layui-input" value="<%=@item.deliver_money %>" name="money" style="width: 50%;" >
@@ -122,6 +132,18 @@
122
132
  producer_id.setValue(<%=@producer_list %>)
123
133
  <% end %>
124
134
 
135
+ <% if @item.category != 3 %>
136
+ $("#money").hide()
137
+ <% end %>
138
+ form.on('select(Add_company)', function (data) {
139
+ {
140
+ if(data.value === '3'){
141
+ $("#money").show()
142
+ }else{
143
+ $("#money").hide()
144
+ }
145
+ }
146
+ });
125
147
  function isNull(str){
126
148
  return str === "" || str === null
127
149
  }
@@ -140,7 +162,7 @@
140
162
  layer.msg('课程组长未选择');
141
163
  return false
142
164
  }
143
- if(isNull(new_data.money)){
165
+ if(new_data.category === '3' && isNull(new_data.money)){
144
166
  layer.msg('交付金额未选择');
145
167
  return false
146
168
  }