educode_sales 1.10.48 → 1.10.49

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 (46) 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 +12 -0
  5. data/app/controllers/educode_sales/business_courses_controller.rb +230 -0
  6. data/app/controllers/educode_sales/home_controller.rb +7 -0
  7. data/app/controllers/educode_sales/shixun_dectects_controller.rb +111 -0
  8. data/app/controllers/educode_sales/shixuns_controller.rb +157 -0
  9. data/app/controllers/educode_sales/subject_trends_controller.rb +937 -0
  10. data/app/controllers/educode_sales/subjects_controller.rb +202 -0
  11. data/app/helpers/educode_sales/application_helper.rb +8 -0
  12. data/app/helpers/educode_sales/business_courses_helper.rb +37 -0
  13. data/app/helpers/educode_sales/subject_helper.rb +29 -0
  14. data/app/models/educode_sales/business.rb +22 -0
  15. data/app/models/educode_sales/business_deliver_subject.rb +48 -0
  16. data/app/models/educode_sales/business_subject.rb +62 -0
  17. data/app/models/educode_sales/business_subject_shixun.rb +46 -0
  18. data/app/models/educode_sales/business_subject_staff.rb +35 -0
  19. data/app/models/educode_sales/permission.rb +2 -1
  20. data/app/models/educode_sales/shixun_dectect.rb +12 -0
  21. data/app/views/educode_sales/business_courses/edit.html.erb +148 -0
  22. data/app/views/educode_sales/business_courses/index.html.erb +312 -0
  23. data/app/views/educode_sales/business_courses/index.json.jbuilder +16 -0
  24. data/app/views/educode_sales/business_courses/list_shixuns.html.erb +224 -0
  25. data/app/views/educode_sales/business_courses/list_shixuns.json.jbuilder +17 -0
  26. data/app/views/educode_sales/business_courses/list_subjects.html.erb +217 -0
  27. data/app/views/educode_sales/business_courses/list_subjects.json.jbuilder +12 -0
  28. data/app/views/educode_sales/business_courses/new.html.erb +212 -0
  29. data/app/views/educode_sales/shixun_dectects/index.html.erb +466 -0
  30. data/app/views/educode_sales/shixun_dectects/index.json.jbuilder +22 -0
  31. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +60 -0
  32. data/app/views/educode_sales/shixuns/edit.html.erb +186 -0
  33. data/app/views/educode_sales/shixuns/index.html.erb +513 -0
  34. data/app/views/educode_sales/shixuns/index.json.jbuilder +22 -0
  35. data/app/views/educode_sales/shixuns/new.html.erb +251 -0
  36. data/app/views/educode_sales/subject_trends/trends.html.erb +1074 -0
  37. data/app/views/educode_sales/subjects/edit.html.erb +86 -0
  38. data/app/views/educode_sales/subjects/index.html.erb +247 -0
  39. data/app/views/educode_sales/subjects/index.json.jbuilder +16 -0
  40. data/app/views/educode_sales/subjects/list_shixuns.html.erb +228 -0
  41. data/app/views/educode_sales/subjects/list_shixuns.json.jbuilder +17 -0
  42. data/app/views/educode_sales/subjects/new.html.erb +254 -0
  43. data/app/views/layouts/educode_sales/application.html.erb +38 -0
  44. data/config/routes.rb +37 -0
  45. data/lib/educode_sales/version.rb +1 -1
  46. metadata +37 -1
@@ -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