educode_sales 1.10.49 → 1.10.58

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 (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
  }