educode_sales 1.10.46 → 1.10.49

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/indexlogo.png +0 -0
  3. data/app/assets/stylesheets/educode_sales/modules/easyeditor/easyeditor.css +130 -0
  4. data/app/assets/stylesheets/educode_sales/modules/easyeditor/fangge-style.css +4 -0
  5. data/app/controllers/educode_sales/application_controller.rb +12 -0
  6. data/app/controllers/educode_sales/business_courses_controller.rb +230 -0
  7. data/app/controllers/educode_sales/follow_ups_controller.rb +6 -2
  8. data/app/controllers/educode_sales/home_controller.rb +7 -0
  9. data/app/controllers/educode_sales/shixun_dectects_controller.rb +111 -0
  10. data/app/controllers/educode_sales/shixuns_controller.rb +157 -0
  11. data/app/controllers/educode_sales/subject_trends_controller.rb +937 -0
  12. data/app/controllers/educode_sales/subjects_controller.rb +202 -0
  13. data/app/controllers/educode_sales/teachers_controller.rb +13 -2
  14. data/app/helpers/educode_sales/application_helper.rb +8 -0
  15. data/app/helpers/educode_sales/business_courses_helper.rb +37 -0
  16. data/app/helpers/educode_sales/subject_helper.rb +29 -0
  17. data/app/models/educode_sales/business.rb +22 -0
  18. data/app/models/educode_sales/business_deliver_subject.rb +48 -0
  19. data/app/models/educode_sales/business_subject.rb +62 -0
  20. data/app/models/educode_sales/business_subject_shixun.rb +46 -0
  21. data/app/models/educode_sales/business_subject_staff.rb +35 -0
  22. data/app/models/educode_sales/permission.rb +2 -1
  23. data/app/models/educode_sales/shixun_dectect.rb +12 -0
  24. data/app/views/educode_sales/business_courses/edit.html.erb +148 -0
  25. data/app/views/educode_sales/business_courses/index.html.erb +312 -0
  26. data/app/views/educode_sales/business_courses/index.json.jbuilder +16 -0
  27. data/app/views/educode_sales/business_courses/list_shixuns.html.erb +224 -0
  28. data/app/views/educode_sales/business_courses/list_shixuns.json.jbuilder +17 -0
  29. data/app/views/educode_sales/business_courses/list_subjects.html.erb +217 -0
  30. data/app/views/educode_sales/business_courses/list_subjects.json.jbuilder +12 -0
  31. data/app/views/educode_sales/business_courses/new.html.erb +212 -0
  32. data/app/views/educode_sales/shixun_dectects/index.html.erb +466 -0
  33. data/app/views/educode_sales/shixun_dectects/index.json.jbuilder +22 -0
  34. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +60 -0
  35. data/app/views/educode_sales/shixuns/edit.html.erb +186 -0
  36. data/app/views/educode_sales/shixuns/index.html.erb +513 -0
  37. data/app/views/educode_sales/shixuns/index.json.jbuilder +22 -0
  38. data/app/views/educode_sales/shixuns/new.html.erb +251 -0
  39. data/app/views/educode_sales/subject_trends/trends.html.erb +1074 -0
  40. data/app/views/educode_sales/subjects/edit.html.erb +86 -0
  41. data/app/views/educode_sales/subjects/index.html.erb +247 -0
  42. data/app/views/educode_sales/subjects/index.json.jbuilder +16 -0
  43. data/app/views/educode_sales/subjects/list_shixuns.html.erb +228 -0
  44. data/app/views/educode_sales/subjects/list_shixuns.json.jbuilder +17 -0
  45. data/app/views/educode_sales/subjects/new.html.erb +254 -0
  46. data/app/views/layouts/educode_sales/application.html.erb +38 -0
  47. data/config/routes.rb +37 -0
  48. data/lib/educode_sales/version.rb +1 -1
  49. metadata +43 -6
@@ -0,0 +1,148 @@
1
+ <%= Gon::Base.render_data %>
2
+ <form class="layui-form" action="" style="width: 90%;margin-top: 20px" lay-filter='test'>
3
+ <input style="display: none" value="<%=@item.id %>" name="id">
4
+ <div class="layui-form-item">
5
+ <label class="layui-form-label">商机名称:<span style="color: red"> *</span></label>
6
+ <div class="layui-input-block">
7
+ <input type="text" name="name"
8
+ lay-verify="required" disabled
9
+ value="<%= @item.name %>" class="layui-input"
10
+ style="width: 50%">
11
+ </div>
12
+ </div>
13
+ <div class="layui-form-item" >
14
+ <label class="layui-form-label" style="width: 90px">实践课程名称:</label>
15
+ <div class="layui-input-block" >
16
+ <div id="subject_ids" style="width: 50%;"></div>
17
+ </div>
18
+ </div>
19
+
20
+ <div class="layui-form-item">
21
+ <label class="layui-form-label">交付状态:<span style="color: red"> *</span></label>
22
+ <div class="layui-input-block">
23
+ <div class="layui-col-md6" >
24
+ <%= select_tag "status", options_for_select(
25
+ [ ["待建设", "constructed"], ["已签协议", "signed"], ["建设中", "construction"],
26
+ ["已完成", "completed"], ["已交付", "delivered"], ["已验收", "accepted"]],
27
+ selected:@item.status
28
+ )%>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ <div class="layui-form-item">
33
+ <label class="layui-form-label">课程经理:</label>
34
+ <div class="layui-input-block">
35
+ <div id="manage_id" style="width: 50%;"></div>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="layui-form-item">
40
+ <label class="layui-form-label"></label>
41
+ <div class="layui-input-block">
42
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
43
+ </div>
44
+ </div>
45
+ </form>
46
+ <script>
47
+ layui.use(['form', 'layer', 'laytpl', 'xmSelect', 'table'], function () {
48
+ var form = layui.form,
49
+ layer = layui.layer,
50
+ table = layui.table,
51
+ xmSelect = layui.xmSelect,
52
+ $ = layui.$
53
+
54
+
55
+ // 解决form表单中的select无法渲染的问题
56
+ form.render();
57
+ form.render('select' ,'test')
58
+ //科目ids
59
+ var subject_ids = xmSelect.render({
60
+ el: '#subject_ids',
61
+ name: "subject_ids",
62
+ remoteSearch: true,
63
+ autoRow: true,
64
+ delay: 1000,
65
+ tips: '- -',
66
+ searchTips: '支持名称搜索,请至少输入一个字符',
67
+ paging: true,
68
+ pageRemote: true,
69
+ filterable: true,
70
+ remoteMethod: function (val, cb, show, pageIndex) {
71
+ if (!val) {
72
+ return cb([]);
73
+ }
74
+ $.ajax('/missions/business_courses/subjects', {
75
+ method: 'get',
76
+ data: {
77
+ q: val,
78
+ page: pageIndex
79
+ },
80
+ dataType: 'json',
81
+ success: function (res) {
82
+ console.log(res)
83
+ var data = res.data;
84
+ if (res.code == 0) {
85
+ cb(res.data, res.count);
86
+ } else {
87
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
88
+ }
89
+ }
90
+ })
91
+ }
92
+ })
93
+ //加载 如果商机已有实践课程
94
+ <% unless @subjects.blank? %>
95
+ var select_subject_ids = JSON.parse('<%=raw @subjects.to_json %>')
96
+ select_subject_ids.forEach((item)=>{
97
+ item.selected = true
98
+ })
99
+ subject_ids.update({
100
+ data:select_subject_ids
101
+ })
102
+ <% end %>
103
+ var manage_id = xmSelect.render({
104
+ el: '#manage_id',
105
+ name:'manage_id',
106
+ data: gon.staffs,
107
+ filterable: true,
108
+ paging: true,
109
+ tips: '- -',
110
+ multiple: true
111
+ })
112
+ <% if @value_list.present? %>
113
+ manage_id.setValue(<%=@value_list %>)
114
+ <% end %>
115
+
116
+ form.on('submit(saveBtn)', function (data) {
117
+ var business = data.field
118
+ $.ajax('/missions/business_courses/'+business.id, {
119
+ method: 'PATCH',
120
+ data: {
121
+ business:business
122
+ },
123
+ dataType: 'json',
124
+ success: function (res) {
125
+ var data = res.data;
126
+ if (res.success) {
127
+ layer.closeAll();
128
+ table.reload('table', {
129
+ done: function () {
130
+ }
131
+ });
132
+ } else {
133
+ layer.msg(res.msg);
134
+ }
135
+ }
136
+ })
137
+
138
+
139
+
140
+ return false;
141
+ });
142
+ });
143
+ </script>
144
+ <style>
145
+ .input_width{
146
+ width: 50%;
147
+ }
148
+ </style>
@@ -0,0 +1,312 @@
1
+ <!-- 商机交付课程静态页面-->
2
+
3
+ <div class="min-height-table">
4
+ <div style="margin: 10px 10px 10px 10px">
5
+ <form class="layui-form layui-form-pane" lay-filter="search_bussiness_courses">
6
+ <div class="layui-inline show_item_contract">
7
+ <label class="layui-form-label">交付状态</label>
8
+ <div class="layui-input-inline">
9
+ <%= select_tag "state", options_for_select(
10
+ [["全部", 0], ["待建设", 1], ["已签协议", 2], ["建设中", 3],
11
+ ["已完成", 4], ["已交付", 5], ["已验收", 6]],selected:0
12
+ ), { include_blank: true } %>
13
+ </div>
14
+ </div>
15
+ <div class="layui-inline">
16
+ <label class="layui-form-label">商机名称</label>
17
+ <div class="layui-input-inline">
18
+ <input type="text" class="layui-input" name="name" >
19
+ </div>
20
+ </div>
21
+ <div class="layui-inline">
22
+ <label class="layui-form-label">交付时间</label>
23
+ <div class="layui-input-inline">
24
+ <input type="text" class="layui-input" name="time" id="ID-laydate-demo" placeholder="yyyy-MM-dd">
25
+ </div>
26
+ </div>
27
+ <div class="layui-inline">
28
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
29
+ </button>
30
+ <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness_courses">搜索
31
+ </button>
32
+ </div>
33
+ </form>
34
+ </div>
35
+
36
+ <div id="contact_table_wraper">
37
+ <table class="layui-hide" id="table" lay-filter="contact_table"></table>
38
+ </div>
39
+
40
+ </div>
41
+ <script type="text/html" id="currentTableBar">
42
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
43
+ </script>
44
+
45
+ <script type="text/html" id="bussinessBar">
46
+ <div class="layui-btn-container">
47
+ <span class="table-label">交付课程列表</span>
48
+ <button class="layui-btn layui-btn-sm pull-right" lay-event="add_courses">
49
+ 添加交付课程
50
+ </button>
51
+ <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right project_list-btn" lay-event="list">
52
+ 导出数据
53
+ </button>
54
+ </div>
55
+ </script>
56
+ <script type="text/html" id="show_phone_number">
57
+ <span type="text" id="{{= d.p_sale_staff1 + d.id}}"
58
+ onmouseover="show('手机号:13711111111'+'{{= d.id}}','{{=d.p_sale_staff1 + d.id}}')"
59
+ onmouseleave="close_tips()">
60
+ {{= d.subject_manages }}
61
+ </span>
62
+ </script>
63
+
64
+ <!-- constructed:待建设, signed: 已签协议,construction: 建设中,completed: 已完成,delivered: 已交付, accepted: 已验收-->
65
+ <script type="text/html" id="show_state">
66
+ {{# if(d.state === 'constructed'){ }}
67
+ <span style="color: rgb(173,177,184)">待建设</span>
68
+ {{# } else if(d.state === 'signed'){ }}
69
+ <span style="color: rgb(240,158,33)">已签协议</span>
70
+ {{# } else if(d.state === 'construction'){ }}
71
+ <span style="color: rgb(40,161,227)">建设中</span>
72
+ {{# } else if(d.state === 'completed'){ }}
73
+ <span style="color: rgb(40,95,220)">已完成</span>
74
+ {{# } else if(d.state === 'delivered'){ }}
75
+ <span style="color: rgb(0,177,135)">已交付</span>
76
+ {{# } else if(d.state === 'accepted'){ }}
77
+ <span style="color: rgb(0,177,135)">已验收</span>
78
+ {{# } }}
79
+ </script>
80
+
81
+ <script type="text/html" id="show_list_subjects">
82
+ <a lay-event="show_list_subjects" style="color: deepskyblue">{{= d.subject_progress }}</a>
83
+ </script>
84
+ <script type="text/html" id="show_list_shixuns">
85
+ <a lay-event="show_list_shixuns" style="color: deepskyblue">{{= d.shixun_progress }}</a>
86
+ </script>
87
+ <script>
88
+ function show(msg, id) {
89
+ layer.tips('' + msg, '#' + id, {tips: [1, 'black']});
90
+ }
91
+
92
+ function close_tips() {
93
+ layer.closeAll('tips');
94
+ }
95
+
96
+
97
+ layui.use(['form', 'table', 'miniPage', 'element', 'laydate', 'dropdown',"jquery"], function () {
98
+ var laydate = layui.laydate,
99
+ form = layui.form,
100
+ table = layui.table,
101
+ $ = layui.$,
102
+ miniPage = layui.miniPage
103
+
104
+
105
+
106
+ laydate.render({
107
+ elem: '#ID-laydate-demo',
108
+ range: true
109
+ });
110
+
111
+ var cols_table = [
112
+ [
113
+ {
114
+ field: 'id',
115
+ minWidth: 60,
116
+ title: '序号',
117
+ type: 'numbers',
118
+ fixed:'left',
119
+ align: 'center'
120
+ },
121
+ {
122
+ field: 'name',
123
+ title: '商机名称',
124
+ align: 'center',
125
+ minWidth: 100
126
+ },
127
+ {
128
+ field: 'school',
129
+ title: '交付单位',
130
+ align: 'center',
131
+ minWidth: 100
132
+
133
+ },
134
+ {
135
+ field: 'subject_progress',
136
+ title: '实践课程数(已完成数)',
137
+ templet: '#show_list_subjects',
138
+ minWidth: 200,
139
+ align: 'center'
140
+ },
141
+ {
142
+ field: 'shixun_progress',
143
+ title: '实践项目总数(已完成数)',
144
+ templet: '#show_list_shixuns',
145
+ minWidth: 200,
146
+ align: 'center'
147
+ },
148
+ {
149
+ field: 'time',
150
+ title: '交付时间',
151
+ align: 'center'
152
+ },
153
+ {
154
+ field: 'state',
155
+ title: '交付状态',
156
+ templet: '#show_state',
157
+ align: 'center'
158
+ },
159
+ {
160
+ field: 'staff_name',
161
+ title: '销售',
162
+ minWidth: 100,
163
+ align: 'center'
164
+ },
165
+ {
166
+ field: 'subject_manages',
167
+ title: '课程经理',
168
+ align: 'center',
169
+ minWidth: 100,
170
+ templet: '#show_phone_number'
171
+ },
172
+ {
173
+ title: '操作',
174
+ width: 50,
175
+ toolbar: '#currentTableBar',
176
+ align: "center",
177
+ fixed: 'right'
178
+ }
179
+ ]
180
+ ]
181
+
182
+ table.render({
183
+ elem: '#table',
184
+ where: {q: form.val()},
185
+ url: '/missions/business_courses',
186
+ // data: temp_data,
187
+ cellMinWidth: 80,
188
+ toolbar: '#bussinessBar',
189
+ defaultToolbar: [],
190
+ cols: cols_table,
191
+ limit: 10,
192
+ limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
193
+ page: true
194
+ })
195
+ var sort = {}, search = {};
196
+ // 监听搜索操作
197
+ form.on('submit(search_bussiness_courses)', function (data) {
198
+ search = data.field
199
+ console.log(search)
200
+ table.reload('table', {
201
+ page: {
202
+ curr: 1
203
+ },
204
+ where: {q: search, sort: sort}
205
+ }, 'data');
206
+ return false;
207
+ });
208
+
209
+ // 重置
210
+ form.on('submit(reset_business_search)', function (data) {
211
+ table.reload('table', {
212
+ page: {
213
+ curr: 1
214
+ },
215
+ where: {q: {}}
216
+ }, 'data');
217
+ $(".layui-form").reset();
218
+ form.render()
219
+ return false;
220
+ });
221
+ table.on('tool(contact_table)', function (obj) {
222
+ var data = obj.data;
223
+ // 编辑按钮监听
224
+ if (obj.event === 'edit') {
225
+
226
+ var content = miniPage.getHrefContent('/missions/business_courses/' + data.id + '/edit');
227
+ var openWH = miniPage.getOpenWidthHeight();
228
+
229
+ var edit = layer.open({
230
+ title: '编辑商机交付课程',
231
+ type: 1,
232
+ shade: 0.2,
233
+ maxmin: true,
234
+ shadeClose: true,
235
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
236
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
237
+ content: content
238
+ });
239
+ $(window).on("resize", function () {
240
+ });
241
+ return false;
242
+ } else if (obj.event === 'show_list_subjects') {
243
+ localStorage.setItem("business_delvier_subject_id",data.id)
244
+
245
+ var content = miniPage.getHrefContent('/missions/business_courses/list_subjects?id='+data.id );
246
+ var openWH = miniPage.getOpenWidthHeight();
247
+ list_courses = layer.open({
248
+ title: data.name + '-实践课程列表',
249
+ type: 1,
250
+ shade: 0.2,
251
+ maxmin: true,
252
+ shadeClose: true,
253
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
254
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
255
+ content: content,
256
+ });
257
+ $(window).on("resize", function () {
258
+ });
259
+ return false;
260
+ } else if (obj.event === 'show_list_shixuns') {
261
+ localStorage.setItem("business_delvier_subject_id",data.id)
262
+ var content = miniPage.getHrefContent('/missions/business_courses/list_shixuns?id='+data.id);
263
+ var openWH = miniPage.getOpenWidthHeight();
264
+ list_projects = layer.open({
265
+ title: data.name + '-实践项目列表',
266
+ type: 1,
267
+ shade: 0.2,
268
+ maxmin: true,
269
+ shadeClose: true,
270
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
271
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
272
+ content: content,
273
+ });
274
+ $(window).on("resize", function () {
275
+ });
276
+ return false;
277
+ }
278
+
279
+ });
280
+
281
+
282
+ table.on('toolbar(contact_table)', function (obj) {
283
+ // 新增按钮监听
284
+ if (obj.event === 'add_courses') {
285
+ var content = miniPage.getHrefContent('/missions/business_courses/new');
286
+ var openWH = miniPage.getOpenWidthHeight();
287
+ console.log(openWH)
288
+ add_courses = layer.open({
289
+ title: '添加商机交付课程',
290
+ type: 1,
291
+ shade: 0.2,
292
+ maxmin: true,
293
+ shadeClose: true,
294
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
295
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
296
+ content: content,
297
+ });
298
+ $(window).on("resize", function () {
299
+ });
300
+ return false;
301
+ }
302
+ });
303
+
304
+ });
305
+ </script>
306
+
307
+ <style>
308
+ .layui-table-tool-temp {
309
+ padding-right: 0px;
310
+ !important;
311
+ }
312
+ </style>
@@ -0,0 +1,16 @@
1
+ json.data do
2
+ json.array! @business_deliver do |deliver|
3
+ b = deliver.business
4
+ json.school handled_data b.school&.name
5
+ json.name handled_data b.name
6
+ json.state deliver.status
7
+ json.time handled_time_data deliver.delvier_date
8
+ json.id deliver.id
9
+ json.staff_name handled_data b.staff_name
10
+ json.subject_progress deliver.subject_competed_count
11
+ json.shixun_progress deliver.shixun_competed_count
12
+ json.subject_manages deliver.subject_manages
13
+ end
14
+ end
15
+ json.code 0
16
+ json.count @business_deliver.total_count