educode_sales 1.10.48 → 1.10.58

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/educode_sales/modules/easyeditor/easyeditor.css +130 -0
  3. data/app/assets/stylesheets/educode_sales/modules/easyeditor/fangge-style.css +4 -0
  4. data/app/controllers/educode_sales/application_controller.rb +22 -0
  5. data/app/controllers/educode_sales/business_courses_controller.rb +255 -0
  6. data/app/controllers/educode_sales/businesses_controller.rb +43 -7
  7. data/app/controllers/educode_sales/contracts_controller.rb +6 -0
  8. data/app/controllers/educode_sales/home_controller.rb +7 -0
  9. data/app/controllers/educode_sales/money_plan_records_controller.rb +6 -2
  10. data/app/controllers/educode_sales/money_plans_controller.rb +3 -0
  11. data/app/controllers/educode_sales/sale_trends_controller.rb +1 -1
  12. data/app/controllers/educode_sales/shixun_dectects_controller.rb +172 -0
  13. data/app/controllers/educode_sales/shixuns_controller.rb +218 -0
  14. data/app/controllers/educode_sales/subject_trends_controller.rb +144 -0
  15. data/app/controllers/educode_sales/subjects_controller.rb +213 -0
  16. data/app/helpers/educode_sales/application_helper.rb +10 -0
  17. data/app/helpers/educode_sales/business_courses_helper.rb +60 -0
  18. data/app/helpers/educode_sales/sale_trends_helper.rb +52 -52
  19. data/app/helpers/educode_sales/subject_helper.rb +33 -0
  20. data/app/models/educode_sales/business.rb +22 -0
  21. data/app/models/educode_sales/business_deliver_subject.rb +49 -0
  22. data/app/models/educode_sales/business_subject.rb +68 -0
  23. data/app/models/educode_sales/business_subject_shixun.rb +75 -0
  24. data/app/models/educode_sales/business_subject_staff.rb +36 -0
  25. data/app/models/educode_sales/permission.rb +2 -1
  26. data/app/models/educode_sales/shixun_dectect.rb +12 -0
  27. data/app/views/educode_sales/business_courses/edit.html.erb +174 -0
  28. data/app/views/educode_sales/business_courses/index.html.erb +334 -0
  29. data/app/views/educode_sales/business_courses/index.json.jbuilder +16 -0
  30. data/app/views/educode_sales/business_courses/list_shixuns.html.erb +292 -0
  31. data/app/views/educode_sales/business_courses/list_shixuns.json.jbuilder +23 -0
  32. data/app/views/educode_sales/business_courses/list_subjects.html.erb +212 -0
  33. data/app/views/educode_sales/business_courses/list_subjects.json.jbuilder +17 -0
  34. data/app/views/educode_sales/business_courses/new.html.erb +237 -0
  35. data/app/views/educode_sales/businesses/index.html.erb +11 -9
  36. data/app/views/educode_sales/contracts/_list.html.erb +16 -1
  37. data/app/views/educode_sales/contracts/index.html.erb +5 -2
  38. data/app/views/educode_sales/contracts/list.js.erb +4 -1
  39. data/app/views/educode_sales/money_plan_records/_index.html.erb +21 -5
  40. data/app/views/educode_sales/money_plan_records/index.js.erb +4 -1
  41. data/app/views/educode_sales/money_plans/list.html.erb +6 -2
  42. data/app/views/educode_sales/sale_trends/_return_money_forecast.html.erb +1 -1
  43. data/app/views/educode_sales/sale_trends/_user_stat.html.erb +1 -1
  44. data/app/views/educode_sales/sale_trends/_visit_analysis.html.erb +1 -1
  45. data/app/views/educode_sales/sale_trends/return_money_forecast.js.erb +1 -1
  46. data/app/views/educode_sales/sale_trends/trends.html.erb +6 -6
  47. data/app/views/educode_sales/sale_trends/user_stat.js.erb +1 -1
  48. data/app/views/educode_sales/sale_trends/visit_analysis.js.erb +1 -1
  49. data/app/views/educode_sales/shixun_dectects/index.html.erb +516 -0
  50. data/app/views/educode_sales/shixun_dectects/index.json.jbuilder +23 -0
  51. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +60 -0
  52. data/app/views/educode_sales/shixuns/edit.html.erb +208 -0
  53. data/app/views/educode_sales/shixuns/index.html.erb +723 -0
  54. data/app/views/educode_sales/shixuns/index.json.jbuilder +26 -0
  55. data/app/views/educode_sales/shixuns/new.html.erb +261 -0
  56. data/app/views/educode_sales/subject_trends/trends.html.erb +676 -0
  57. data/app/views/educode_sales/subjects/edit.html.erb +86 -0
  58. data/app/views/educode_sales/subjects/index.html.erb +285 -0
  59. data/app/views/educode_sales/subjects/index.json.jbuilder +16 -0
  60. data/app/views/educode_sales/subjects/list_shixuns.html.erb +354 -0
  61. data/app/views/educode_sales/subjects/list_shixuns.json.jbuilder +22 -0
  62. data/app/views/educode_sales/subjects/new.html.erb +254 -0
  63. data/app/views/layouts/educode_sales/application.html.erb +38 -0
  64. data/config/routes.rb +37 -0
  65. data/lib/educode_sales/version.rb +1 -1
  66. metadata +42 -7
  67. data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -0,0 +1,354 @@
1
+ <style>
2
+ .markdown_list img {
3
+ max-width: 700px;
4
+ }
5
+ .layui-table-cell{
6
+ height: auto !important;
7
+ width: auto;
8
+ white-space: normal;
9
+ /*line-height: 28px;*/
10
+ }
11
+ </style>
12
+ <div class="min-height-table" style="margin: 20px">
13
+ <div>
14
+ <form class="layui-form layui-form-pane" lay-filter="search_form">
15
+ <div class="layui-inline show_item_contract borders">
16
+ <label class="layui-form-label">任务类型</label>
17
+ <div class="layui-input-inline">
18
+ <%= select_tag "category", options_for_select(
19
+ [["全部", 0], ["管培", 1], ["全职", 2], ["专职", 3]]
20
+ ), { include_blank: true } %>
21
+ </div>
22
+ </div>
23
+ <div class="layui-inline show_item_contract">
24
+ <label class="layui-form-label">项目级别</label>
25
+ <div class="layui-input-inline">
26
+ <%= select_tag "level", options_for_select(
27
+ [["全部", 0], ["不明确", 1], ["重要紧急", 2], ["重要不紧急", 3],
28
+ ["不重要紧急", 4], ["不重要不紧急", 5]], selected: 0
29
+ ), { include_blank: true } %>
30
+ </div>
31
+ </div>
32
+ <div class="layui-inline show_item_contract borders">
33
+ <label class="layui-form-label">项目状态</label>
34
+ <div class="layui-input-inline">
35
+ <%= select_tag "status", options_for_select(
36
+ [["全部", 0], ["待建设", 1], ["已签协议", 2], ["建设中", 3],
37
+ ["审核中", 4], ["返修中", 5], ["已内部发布", 6], ["已公开发布", 7],
38
+ ["已付费用",8],["审核通过",9]], selected: 0
39
+ ), { include_blank: true } %>
40
+ </div>
41
+ </div>
42
+
43
+ <br>
44
+ <div class="layui-inline borders">
45
+ <label class="layui-form-label" style="width: 130px">实践项目名称</label>
46
+ <div class="layui-input-inline">
47
+ <input type="text" name="shixun_name" class="layui-input">
48
+ </div>
49
+ </div>
50
+ <div class="layui-inline borders">
51
+ <button type="reset" class="layui-btn layui-btn-primary" id="list_shixuns_search_reset" lay-submit lay-filter="reset_business_search">重置
52
+ </button>
53
+ <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_shixun_contract">搜索
54
+ </button>
55
+ </div>
56
+ </form>
57
+ </div>
58
+
59
+ <div id="contact_table_wraper">
60
+ <table class="layui-hide" id="shixun_table" lay-filter="shixun_table"></table>
61
+ </div>
62
+
63
+ </div>
64
+
65
+ <script type="text/html" id="shixun_name_link">
66
+ <a target='_blank' style='color: #1E9FFF' href='<%=@url %>/shixuns/{{=d.identifier}}/challenges'>{{=d.name}}</a>
67
+ </script>
68
+ <script type="text/html" id="show_state">
69
+ {{# if(d.shixun_status === 1){ }}
70
+ <span>待建设</span>
71
+ {{# } else if(d.shixun_status === 2){ }}
72
+ <span>已签协议</span>
73
+ {{# } else if(d.shixun_status === 3){ }}
74
+ <span>建设中</span>
75
+ {{# } else if(d.shixun_status === 4){ }}
76
+ <span>审核中</span>
77
+ {{# } else if(d.shixun_status === 5){ }}
78
+ <span>返修中</span>
79
+ {{# } else if(d.shixun_status === 6){ }}
80
+ <span>已内部发布</span>
81
+ {{# } else if(d.shixun_status === 7){ }}
82
+ <span>已公开发布</span>
83
+ {{# } else if(d.shixun_status === 8){ }}
84
+ <span>已付费用</span>
85
+ {{# } else if(d.shixun_status === 9){ }}
86
+ <span>审核通过</span>
87
+ {{# } }}
88
+ </script>
89
+ <script type="text/html" id="show_level">
90
+ {{# if(d.level === 1){ }}
91
+ <span>不明确</span>
92
+ {{# } else if(d.level === 2){ }}
93
+ <span>重要紧急</span>
94
+ {{# } else if(d.level === 3){ }}
95
+ <span>重要不紧急</span>
96
+ {{# } else if(d.level === 4){ }}
97
+ <span>不重要紧急</span>
98
+ {{# } else if(d.level === 5){ }}
99
+ <span>不重要不紧急</span>
100
+ {{# } }}
101
+ </script>
102
+
103
+
104
+ <script type="text/html" id="show_type">
105
+ {{# if(d.category === 1){ }}
106
+ <span>管培</span>
107
+ {{# } else if(d.category === 2){ }}
108
+ <span>全职</span>
109
+ {{# } else if(d.category === 3){ }}
110
+ <span>专职</span>
111
+ {{# } }}
112
+ </script>
113
+ <script type="text/html" id="shixun_table_bar">
114
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
115
+ {{# if(d.shixun_status === 3 || d.shixun_status === 5){ }}
116
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="examine">提交审核</a>
117
+ {{# } else { }}
118
+ <a class="layui-btn layui-btn-disabled layui-btn-xs data-count-edit">提交审核</a>
119
+ {{# } }}
120
+ </script>
121
+ <script type="text/html" id="link_shixun">
122
+ <a target='_blank' style='color: #1E9FFF' href='<%=@url %>/shixuns/{{=d.identifier}}'>{{=d.name}}</a>
123
+ </script>
124
+ <script src="/markdown/marked.min.js" type="text/javascript" charset="utf-8"></script>
125
+ <script>
126
+ function extractFirstTenCharsAndImage(markdownText) {
127
+ let firstTenChars = '';
128
+ let imageTag = '';
129
+ // 行内图片的正则表达式
130
+ const inlineImageRegex = /!\[.*?\]\((.*?)\)/g;
131
+ // 处理行内图片
132
+ markdownText = markdownText.replace(inlineImageRegex, (_, imagePath) => {
133
+ // 如果匹配到行内图片,则生成图片标签,并将匹配的图片部分替换为空字符串
134
+ imageTag = `<img style="max-height: 100px" src="${imagePath}" />`;
135
+ return '';
136
+ });
137
+ // 去除Markdown格式,只保留纯文本内容
138
+ const pureText = markdownText.replace(/(^|\n)(\d+\.|)\s*/g, '$1').trim();
139
+ // 获取前十个字符
140
+ firstTenChars = pureText.substring(0, 10);
141
+ // 输出结果
142
+ return `<div lay-event="show_markdown"><p>${firstTenChars}</p> ${imageTag}</div>`
143
+ }
144
+ layui.config({
145
+ base: '/markdown/mods/' //存放layui拓展模块的目录位置
146
+ }).use(['form', 'table', 'miniPage', 'element', 'laydate', 'dropdown','easyeditor'], function () {
147
+ var laydate = layui.laydate,
148
+ form = layui.form,
149
+ table = layui.table,
150
+ easyeditor= layui.easyeditor,
151
+ miniPage = layui.miniPage
152
+
153
+
154
+ laydate.render({
155
+ elem: '#ID-laydate-demo',
156
+ range:true
157
+ });
158
+
159
+ var data = form.val("search_form");
160
+ var cols_table = [
161
+ [
162
+ {
163
+ field: 'id',
164
+ width: 60,
165
+ title: '序号', type: 'numbers',
166
+ align: 'center'
167
+ },
168
+ {
169
+ field: 'category',
170
+ title: '任务类型',
171
+ width: 150,
172
+ align: 'center',
173
+ templet: '#show_type'
174
+ },
175
+ {
176
+ field: 'name',
177
+ title: '实践项目名称',
178
+ width: 150,
179
+ align: 'center',
180
+ templet: '#shixun_name_link'
181
+
182
+ },
183
+ {
184
+ field: 'level',
185
+ title: '项目级别',
186
+ width: 150,
187
+ align: 'center',
188
+ templet: '#show_level'
189
+ },
190
+ {
191
+ field: 'deliver_date',
192
+ title: '制作完成时间',
193
+ width: 150,
194
+ align: 'center'
195
+ },
196
+ {
197
+ field: 'state',
198
+ title: '项目状态',
199
+ width: 150,
200
+ templet: '#show_state',
201
+ align: 'center'
202
+ },
203
+ {
204
+ field: 'commit_dectect_time',
205
+ title: '提交审核时间',
206
+ width: 150,
207
+ align: 'center'
208
+ },
209
+ {
210
+ title: '审核反馈',
211
+ width: 150,
212
+ align: 'center',
213
+ templet: (d)=>{
214
+ if(d.dectect_feedback){
215
+ return extractFirstTenCharsAndImage(d.dectect_feedback)
216
+ }
217
+ return ''
218
+ },
219
+ },
220
+ {
221
+ field: 'shixun_producer',
222
+ title: '项目制作人',
223
+ width: 150,
224
+ align: 'center'
225
+ },
226
+ {
227
+ field: 'shixun_manages',
228
+ title: '课程负责人',
229
+ width: 150,
230
+ align: 'center'
231
+ },
232
+ {
233
+ field: 'max_manage',
234
+ title: '课程组主管',
235
+ width: 150,
236
+ align: 'center'
237
+ },
238
+ {
239
+ title: '操作',
240
+ width: 150,
241
+ align: 'center',
242
+ templet: "#shixun_table_bar"
243
+ }
244
+ ]
245
+ ]
246
+
247
+ var id = localStorage.getItem("link_shixuns_id")
248
+ var shixun_table = table.render({
249
+ elem: '#shixun_table',
250
+ url: '/missions/subjects/list_shixuns?id='+id,
251
+ autoSort: false,
252
+ where: {q: data},
253
+ title: '实践项目列表',
254
+ cols: cols_table,
255
+ limit: 10,
256
+ limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
257
+ page: true,
258
+ skin: 'line'
259
+ });
260
+ // 重置
261
+ form.on('submit(reset_business_search)', function (data) {
262
+ table.reload('shixun_table', {
263
+ page: {
264
+ curr: 1
265
+ },
266
+ where: {q: {}}
267
+ }, 'data');
268
+ document.getElementById('list_shixuns_search_reset').reset();
269
+ form.render()
270
+ return false;
271
+ });
272
+
273
+ table.on('tool(shixun_table)', function (obj) {
274
+ var data = obj.data;
275
+ console.log(data)
276
+ // 编辑按钮监听
277
+ if (obj.event === 'edit') {
278
+ var content = miniPage.getHrefContent('/missions/shixuns/' + data.id + '/edit');
279
+ var openWH = miniPage.getOpenWidthHeight();
280
+
281
+ var edit = layer.open({
282
+ title: '编辑实践项目',
283
+ type: 1,
284
+ shade: 0.2,
285
+ maxmin: true,
286
+ shadeClose: false,
287
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
288
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
289
+ content: content
290
+ });
291
+ $(window).on("resize", function () {
292
+ });
293
+ return false;
294
+ } else if (obj.event === 'examine') {
295
+ var status = data.shixun_status
296
+ console.log(status)
297
+ if (status != 3 && status != 5) {
298
+ layer.confirm("当前状态无法提交审核")
299
+ return false
300
+ }
301
+
302
+ $.ajax('/missions/shixun_dectects/submit', {
303
+ method: 'POST',
304
+ data: data,
305
+ dataType: 'json',
306
+ success: function (res) {
307
+ var data = res.data;
308
+ console.log(res)
309
+ if (res.success) {
310
+ layer.msg("提交成功")
311
+ }
312
+ },
313
+ error: (res) => {
314
+ layer.msg("已经提交过了")
315
+ }
316
+ })
317
+ return false
318
+ }else if(obj.event === 'show_markdown'){
319
+ if(data.content !== '--'){
320
+ var text = `<div class="markdown_list" style="margin: 50px" >` + data.dectect_feedback + `</div>`
321
+ layer.open({
322
+ type: 1,
323
+ title: '审核反馈',
324
+ area: ['900px', '700px'], // 宽高
325
+ content: text,
326
+ move: '#ID-test-layer-move'
327
+ });
328
+ easyeditor.render({
329
+ elem: ".markdown_list"
330
+ });
331
+ }
332
+ }
333
+ });
334
+
335
+
336
+ var sort = {}, search = {};
337
+ form.on('submit(search_shixun_contract)', function (data) {
338
+ search = data.field
339
+ console.log(search)
340
+ table.reload('shixun_table', {
341
+ page: {
342
+ curr: 1
343
+ },
344
+ where: {q: search, sort: sort}
345
+ }, 'data');
346
+ return false;
347
+ });
348
+ });
349
+ </script>
350
+ <style>
351
+ .borders {
352
+ margin: 10px;
353
+ }
354
+ </style>
@@ -0,0 +1,22 @@
1
+ json.data do
2
+ json.array! @shixuns do |d|
3
+ json.shixun_manages handled_data d.shixun_manages
4
+ json.shixun_producer handled_data d.shixun_producer
5
+ json.shixun_staff handled_data d.shixun_staff
6
+ json.shixun_status d.shixun_status
7
+ json.shixun_type d.shixun_type
8
+ json.category d.category
9
+ json.deliver_date handled_time_data d.deliver_date
10
+ json.school_id d.school_id
11
+ json.shixun_id d.shixun_id
12
+ json.name d.shixun_name
13
+ json.level d.level
14
+ json.identifier d.identifier
15
+ json.id d.id
16
+ json.max_manage "喻银凤"
17
+ json.dectect_feedback handled_data d.dectects_content
18
+ json.commit_dectect_time handled_time_data_accurate d.shixun_dectects_time
19
+ end
20
+ end
21
+ json.code 0
22
+ json.count @shixuns.total_count
@@ -0,0 +1,254 @@
1
+ <%= Gon::Base.render_data %>
2
+ <form class="layui-form" action="" style="width: 90%;margin-top: 20px">
3
+
4
+ <div class="layui-form-item">
5
+ <label class="layui-form-label" style="width: 112px">实践课程名称:<span style="color: red"> *</span></label>
6
+ <div class="layui-input-block">
7
+ <div id="subject_id" style="width: 48%;margin-left: 25px"></div>
8
+ </div>
9
+ </div>
10
+ <div class="layui-form-item">
11
+ <label class="layui-form-label" style="width: 112px">实践项目名称:<span style="color: red"> *</span></label>
12
+ <div class="layui-input-block">
13
+ <div id="shixun_ids" style="width: 48%;margin-left: 25px"></div>
14
+ </div>
15
+ </div>
16
+ <div class="layui-form-item">
17
+ <label class="layui-form-label">交付时间:<span style="color: red"> *</span></label>
18
+ <div class="layui-input-block">
19
+ <input type="text" name="deliver_date" style="width: 50%;" class="layui-input" id="ID-laydate-demo" placeholder="- -">
20
+ </div>
21
+ </div>
22
+ <div class="layui-form-item">
23
+ <label class="layui-form-label">课程经理:<span style="color: red"> *</span></label>
24
+ <div class="layui-input-block">
25
+ <div id="manage_id" style="width: 50%"></div>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="layui-form-item">
30
+ <label class="layui-form-label" style="width: 80px">交付单位:<span style="color: red"> *</span></label>
31
+ <div class="layui-input-block">
32
+ <div id="school_id" style="width: 50%;"></div>
33
+ </div>
34
+ </div>
35
+ <div class="layui-form-item">
36
+ <label class="layui-form-label">销售:<span style="color: red"> *</span></label>
37
+ <div class="layui-input-block">
38
+ <div id="sale_id" style="width: 50%"></div>
39
+ </div>
40
+ </div>
41
+
42
+
43
+
44
+
45
+
46
+
47
+ <div class="layui-form-item">
48
+ <label class="layui-form-label"></label>
49
+ <div class="layui-input-block">
50
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
51
+ </div>
52
+ </div>
53
+ </form>
54
+ <script>
55
+ layui.use(['form', 'request', 'xmSelect', 'table'], function () {
56
+ var form = layui.form,
57
+ layer = layui.layer,
58
+ laydate = layui.laydate,
59
+ table = layui.table,
60
+ xmSelect = layui.xmSelect,
61
+ $ = layui.$;
62
+
63
+ // 解决form表单中select不渲染的问题
64
+ form.render();
65
+ form.render('select', 'test')
66
+ laydate.render({
67
+ elem: '#ID-laydate-demo'
68
+ });
69
+
70
+ // 交付单位
71
+ var school_id = xmSelect.render({
72
+ el: '#school_id',
73
+ name: "school_id",
74
+ remoteSearch: true,
75
+ autoRow: true,
76
+ delay: 1000,
77
+ tips: '- -',
78
+ radio: true,
79
+ searchTips: '支持名称搜索,请至少输入一个字符',
80
+ filterable: true,
81
+ remoteMethod: function (val, cb, show, pageIndex) {
82
+ if (!val) {
83
+ return cb([]);
84
+ }
85
+ $.ajax('/api/schools/search', {
86
+ method: 'get',
87
+ data: {
88
+ keyword: val
89
+ },
90
+ dataType: 'json',
91
+ success: function (res) {
92
+ console.log(res)
93
+ var data = res.schools;
94
+ data.forEach((item)=>{
95
+ item.value = item.id
96
+ })
97
+ if (res.status === 0) {
98
+ cb(data);
99
+ }
100
+ }
101
+ })
102
+ }
103
+ })
104
+
105
+
106
+ var shixun_ids = xmSelect.render({
107
+ el: '#shixun_ids',
108
+ name: "shixun_ids",
109
+ autoRow: true,
110
+ delay: 1000,
111
+ tips: '- -',
112
+ searchTips: '支持名称搜索,请至少输入一个字符',
113
+ filterable: true
114
+ })
115
+
116
+
117
+ // 实践课程
118
+ var subject_id = xmSelect.render({
119
+ el: '#subject_id',
120
+ name: "subject_id",
121
+ remoteSearch: true,
122
+ autoRow: true,
123
+ delay: 1000,
124
+ tips: '- -',
125
+ radio: true,
126
+ searchTips: '支持名称搜索,请至少输入一个字符',
127
+ paging: true,
128
+ pageRemote: true,
129
+ filterable: true,
130
+ on: function (data) {
131
+ if(data.arr.length){
132
+ let subject_id = data.arr[0].value
133
+ $.ajax('/missions/subjects/shixun_list', {
134
+ method: 'get',
135
+ data: {
136
+ subject_id: subject_id
137
+ },
138
+ dataType: 'json',
139
+ success: function (res) {
140
+ var data = res.data;
141
+ if (res.code == 0) {
142
+ shixun_ids.update({
143
+ data: data
144
+ })
145
+ }
146
+ }
147
+ })
148
+ }
149
+ },
150
+ remoteMethod: function (val, cb, show, pageIndex) {
151
+ if (!val) {
152
+ return cb([]);
153
+ }
154
+ $.ajax('/missions/subjects/search_subjects', {
155
+ method: 'get',
156
+ data: {
157
+ q: val,
158
+ page: pageIndex
159
+ },
160
+ dataType: 'json',
161
+ success: function (res) {
162
+ console.log(res)
163
+ var data = res.data;
164
+ if (res.code == 0) {
165
+ cb(res.data, res.count);
166
+ } else {
167
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
168
+ }
169
+ }
170
+ })
171
+ }
172
+ })
173
+
174
+
175
+ // 课程经理
176
+ var manage_id = xmSelect.render({
177
+ el: '#manage_id',
178
+ name: "manage_id",
179
+ data: gon.staffs,
180
+ filterable: true,
181
+ tips: "- -",
182
+ tips: "- -",
183
+ paging: true,
184
+ multiple: true
185
+ })
186
+ // 销售
187
+ var sale_id = xmSelect.render({
188
+ el: '#sale_id',
189
+ name: "sale_id",
190
+ data: gon.staffs,
191
+ filterable: true,
192
+ tips: "- -",
193
+ tips: "- -",
194
+ paging: true,
195
+ multiple: true
196
+ })
197
+
198
+ function isNull(str){
199
+ return str === "" || str === null
200
+ }
201
+ form.on('submit(saveBtn)', function (data) {
202
+ console.log(form.val())
203
+ let new_data = form.val();
204
+
205
+ if(isNull(new_data.subject_id)){
206
+ layer.msg('实践课程未选择');
207
+ return false
208
+ }
209
+ if(isNull(new_data.shixun_ids)){
210
+ layer.msg('实践项目未选择');
211
+ return false
212
+ }
213
+ if(isNull(new_data.deliver_date)){
214
+ layer.msg('交付时间未选择');
215
+ return false
216
+ }
217
+ if(isNull(new_data.manage_id)){
218
+ layer.msg('课程经理未选择');
219
+ return false
220
+ }
221
+ if(isNull(new_data.school_id)){
222
+ layer.msg('交付单位未选择');
223
+ return false
224
+ }
225
+ if(isNull(new_data.sale_id)){
226
+ layer.msg('销售经理未选择');
227
+ return false
228
+ }
229
+
230
+
231
+ $.ajax('/missions/subjects/', {
232
+ method: 'POST',
233
+ data: new_data,
234
+ dataType: 'json',
235
+ success: function (res) {
236
+ console.log(res)
237
+ if (res.success) {
238
+ layer.closeAll();
239
+ table.reload('table', {
240
+ done: function () {
241
+ }
242
+ });
243
+ } else {
244
+ layer.msg('实践课程已存在');
245
+ }
246
+ },
247
+ error:function (res) {
248
+ layer.msg('实践课程已存在');
249
+ }
250
+ })
251
+ return false;
252
+ });
253
+ });
254
+ </script>
@@ -221,6 +221,44 @@
221
221
  </dl>
222
222
  </li>
223
223
  <% end %>
224
+ <% if can?(:checkout, EducodeSales::BusinessDeliverSubject) ||
225
+ can?(:shixun, EducodeSales::BusinessDeliverSubject) ||
226
+ can?(:subject, EducodeSales::BusinessDeliverSubject) ||
227
+ can?(:business, EducodeSales::BusinessDeliverSubject) ||
228
+ can?(:status, EducodeSales::BusinessDeliverSubject) ||
229
+ @current_admin.is_admin %>
230
+ <li class="layui-nav-item layui-nav-itemed menu-li">
231
+ <a class href="javascript:;"><b><%= image_tag "educode_sales/5.渠道管理.png", size: "15" %>
232
+ <i style="font-size: 25px; padding-right: 25px"></i>课程管理</b></a>
233
+ <dl class="layui-nav-child">
234
+ <% if can?(:status, EducodeSales::BusinessDeliverSubject) %>
235
+ <dd>
236
+ <a href="/missions/subject_trends/trends" class="<%= current?('layui-this', trends_subject_trends_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/7.运营活动.png", size: "15" %>
237
+ <i style="font-size: 25px; padding-right: 15px"></i>课程态势</a></dd>
238
+ <%end %>
239
+ <% if can?(:business, EducodeSales::BusinessDeliverSubject) %>
240
+ <dd>
241
+ <a href="/missions/business_courses" class="<%= current?('layui-this', business_courses_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/2.市场态势.png", size: "15" %>
242
+ <i style="font-size: 25px; padding-right: 15px"></i>商机交付课程</a></dd>
243
+ <%end %>
244
+ <% if can?(:subject, EducodeSales::BusinessDeliverSubject) %>
245
+ <dd>
246
+ <a href="/missions/subjects" class="<%= current?('layui-this', subjects_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/2.市场态势.png", size: "15" %>
247
+ <i style="font-size: 25px; padding-right: 15px"></i>实践课程管理</a></dd>
248
+ <%end %>
249
+ <% if can?(:shixun, EducodeSales::BusinessDeliverSubject) %>
250
+ <dd>
251
+ <a href="/missions/shixuns" class="<%= current?('layui-this', shixuns_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/2.市场态势.png", size: "15" %>
252
+ <i style="font-size: 25px; padding-right: 15px"></i>实践项目管理</a></dd>
253
+ <%end %>
254
+ <% if can?(:checkout, EducodeSales::BusinessDeliverSubject) %>
255
+ <dd>
256
+ <a href="/missions/shixun_dectects" class="<%= current?('layui-this', shixun_dectects_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/2.市场态势.png", size: "15" %>
257
+ <i style="font-size: 25px; padding-right: 15px"></i>课程项目质检</a></dd>
258
+ <%end %>
259
+ </dl>
260
+ </li>
261
+ <%end %>
224
262
 
225
263
  <% if @current_admin.is_admin || @current_admin.code == 'userbe' %>
226
264
  <li class="layui-nav-item layui-nav-itemed menu-li">