educode_sales 0.7.2 → 0.7.5

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/assessment.png +0 -0
  3. data/app/assets/images/educode_sales/indexlogo.png +0 -0
  4. data/app/controllers/educode_sales/assessments_controller.rb +490 -0
  5. data/app/controllers/educode_sales/businesses_controller.rb +13 -4
  6. data/app/controllers/educode_sales/customers_controller.rb +3 -0
  7. data/app/controllers/educode_sales/follow_ups_controller.rb +13 -1
  8. data/app/controllers/educode_sales/home_controller.rb +4 -3
  9. data/app/controllers/educode_sales/money_plans_controller.rb +2 -0
  10. data/app/controllers/educode_sales/plans_controller.rb +1 -0
  11. data/app/controllers/educode_sales/results_controller.rb +54 -0
  12. data/app/controllers/educode_sales/roles_controller.rb +4 -1
  13. data/app/controllers/educode_sales/sessions_controller.rb +2 -1
  14. data/app/helpers/educode_sales/application_helper.rb +61 -0
  15. data/app/helpers/educode_sales/assessments_help.rb +52 -0
  16. data/app/models/educode_sales/assessments_setting.rb +28 -0
  17. data/app/models/educode_sales/business.rb +2 -1
  18. data/app/models/educode_sales/follow_up.rb +1 -1
  19. data/app/models/educode_sales/money_plan.rb +1 -0
  20. data/app/models/educode_sales/permission.rb +2 -1
  21. data/app/models/educode_sales/result.rb +4 -0
  22. data/app/models/educode_sales/role_area.rb +2 -1
  23. data/app/views/educode_sales/assessments/_progress.html.erb +433 -0
  24. data/app/views/educode_sales/assessments/_setup.html.erb +331 -0
  25. data/app/views/educode_sales/assessments/edit.html.erb +238 -0
  26. data/app/views/educode_sales/assessments/get_export_data.json.jbuilder +197 -0
  27. data/app/views/educode_sales/assessments/index.html.erb +63 -0
  28. data/app/views/educode_sales/assessments/index.json.jbuilder +26 -0
  29. data/app/views/educode_sales/assessments/new.html.erb +310 -0
  30. data/app/views/educode_sales/assessments/progress.json.jbuilder +372 -0
  31. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +150 -114
  32. data/app/views/educode_sales/businesses/get_export_data.json.jbuilder +1 -0
  33. data/app/views/educode_sales/businesses/index.html.erb +25 -19
  34. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  35. data/app/views/educode_sales/businesses/new_follow_record.html.erb +163 -126
  36. data/app/views/educode_sales/businesses/show_follow.html.erb +25 -20
  37. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
  38. data/app/views/educode_sales/businesses/show_follow_record.html.erb +8 -1
  39. data/app/views/educode_sales/places/index.html.erb +5 -3
  40. data/app/views/educode_sales/plans/_monthPlan.html.erb +3 -1
  41. data/app/views/educode_sales/plans/new_month.html.erb +2 -0
  42. data/app/views/educode_sales/plans/new_week.html.erb +5 -1
  43. data/app/views/educode_sales/results/edit.html.erb +111 -0
  44. data/app/views/educode_sales/results/index.html.erb +0 -0
  45. data/app/views/educode_sales/results/index.json.jbuilder +13 -0
  46. data/app/views/educode_sales/results/new.html.erb +58 -0
  47. data/app/views/educode_sales/results/show.json.jbuilder +9 -0
  48. data/app/views/educode_sales/roles/edit.html.erb +26 -18
  49. data/app/views/educode_sales/sale_reports/index.json.jbuilder +1 -0
  50. data/app/views/layouts/educode_sales/application.html.erb +18 -12
  51. data/app/views/layouts/educode_sales/login.html.erb +1 -1
  52. data/config/routes.rb +18 -1
  53. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +9 -1
  54. data/db/migrate/20220314053856_add_service_start_time_to_follow_ups.rb +6 -0
  55. data/db/migrate/20220314074354_add_service_time_long_to_follow_ups.rb +5 -0
  56. data/db/migrate/20220402020233_create_educode_sales_assessments_settings.rb +27 -0
  57. data/db/migrate/20220411021641_add_new_column_assessments_settings.rb +20 -0
  58. data/db/migrate/20220413090940_add_september_progress_to_assessment_settings.rb +5 -0
  59. data/lib/educode_sales/version.rb +1 -1
  60. metadata +31 -6
@@ -19,11 +19,11 @@
19
19
  <label class="layui-form-label required">项目类型</label>
20
20
  <%if @last_follow_up&.clazz&.name == @o_name %>
21
21
  <div class="layui-input-inline">
22
- <%= select_tag "clazz_id", options_for_select([[@o_name,EducodeSales::Common.find_by(name: @o_name).id]]),:disabled => true, class: 'required' %>
22
+ <%= select_tag "clazz_id", options_for_select([[@o_name, EducodeSales::Common.find_by(name: @o_name).id]]), { 'lay-filter': 'clazz_id', class: 'required', :disabled => true } %>
23
23
  </div>
24
24
  <%else %>
25
25
  <div class="layui-input-inline">
26
- <%= select_tag "clazz_id", options_for_select(@clazz, @last_follow_up&.clazz_id), class: 'required' %>
26
+ <%= select_tag "clazz_id", options_for_select(@clazz, @last_follow_up&.clazz_id), { 'lay-filter': 'clazz_id', class: 'required', } %>
27
27
  </div>
28
28
  <%end %>
29
29
  </div>
@@ -38,16 +38,16 @@
38
38
  <label class="layui-form-label">招标时间</label>
39
39
  <div class="layui-input-inline">
40
40
  <input type="text" class="layui-input" name="invitation_at" autocomplete="off" id="invitation_at_add"
41
- value="<%= @last_follow_up&.invitation_at%>"
42
- placeholder="请选择日期">
41
+ value="<%= @last_follow_up&.invitation_at %>"
42
+ placeholder="请选择日期">
43
43
  </div>
44
44
  </div>
45
45
  <div class="layui-inline">
46
46
  <label class="layui-form-label">中标时间</label>
47
47
  <div class="layui-input-inline">
48
48
  <input type="text" class="layui-input" name="bidded_date" autocomplete="off" id="invitation_at_add"
49
- value="<%= @last_follow_up&.bidded_date%>"
50
- placeholder="请选择日期">
49
+ value="<%= @last_follow_up&.bidded_date %>"
50
+ placeholder="请选择日期">
51
51
  </div>
52
52
  </div>
53
53
  <br>
@@ -55,32 +55,40 @@
55
55
  <label class="layui-form-label">签单时间</label>
56
56
  <div class="layui-input-inline">
57
57
  <input type="text" class="layui-input" name="signed_date" autocomplete="off" id="invitation_at_add"
58
- value="<%= @last_follow_up&.signed_date%>"
59
- placeholder="请选择日期">
58
+ value="<%= @last_follow_up&.signed_date %>"
59
+ placeholder="请选择日期">
60
60
  </div>
61
61
  </div>
62
62
  <div class="layui-inline">
63
63
  <label class="layui-form-label">验收时间</label>
64
64
  <div class="layui-input-inline">
65
65
  <input type="text" class="layui-input" name="reception_at" autocomplete="off" id="reception_at_add"
66
- value="<%= @last_follow_up&.reception_at%>"
67
- placeholder="请选择日期">
66
+ value="<%= @last_follow_up&.reception_at %>"
67
+ placeholder="请选择日期">
68
68
  </div>
69
69
  </div>
70
70
  <br>
71
+ <div class="layui-inline service_show layui-hide">
72
+ <label class="layui-form-label required">服务期</label>
73
+ <div class="layui-input-inline">
74
+ <input type="text" class="layui-input required" id="service_time" name="service_time" placeholder=" - " autocomplete="off" value=<%= (@last_follow_up&.service_start_time.present? && @last_follow_up&.service_end_time.present?) ? (@last_follow_up.service_start_time.to_s + "-" + @last_follow_up.service_end_time.to_s) : '' %>>
75
+ </div>
76
+ </div>
77
+ <br class="service_show layui-hide">
71
78
  <div class="layui-inline">
72
79
  <label class="layui-form-label">总额(万)</label>
73
80
  <div class="layui-input-inline">
74
81
  <input name="total_amount" type="number" class="layui-input" autocomplete="off"
75
- value="<%= @last_follow_up&.total_amount%>">
82
+ value="<%= @last_follow_up&.total_amount %>">
76
83
  </div>
77
- 客户采购支出的费用。总额的生命历程:1.在最初阶段,是商机的预算总额;2.在挂网阶段,是项目的挂网预算总额;3.在中标阶段,是项目的中标总额。 </div>
84
+ 客户采购支出的费用。总额的生命历程:1.在最初阶段,是商机的预算总额;2.在挂网阶段,是项目的挂网预算总额;3.在中标阶段,是项目的中标总额。
85
+ </div>
78
86
  <br>
79
87
  <div class="layui-inline">
80
88
  <label class="layui-form-label">合同额(万)</label>
81
89
  <div class="layui-input-inline">
82
90
  <input name="actual_amount" type="number" class="layui-input" autocomplete="off" placeholder="本单位的签单金额"
83
- value="<%= @last_follow_up&.actual_amount%>">
91
+ value="<%= @last_follow_up&.actual_amount %>">
84
92
  </div>
85
93
  客户签给头歌的费用。合同额的生命历程:1.在中标之前,合同额都是0;2.在中标之后,实际与头歌签合同的金额。
86
94
  </div>
@@ -150,132 +158,161 @@
150
158
  </div>
151
159
 
152
160
  <script>
153
- layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
154
- var form = layui.form,
155
- layer = layui.layer,
156
- table = layui.table,
157
- laytpl = layui.laytpl,
158
- request = layui.request,
159
- laydate = layui.laydate,
160
- xmSelect = layui.xmSelect,
161
- $ = layui.$;
161
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
162
+ var form = layui.form,
163
+ layer = layui.layer,
164
+ table = layui.table,
165
+ laytpl = layui.laytpl,
166
+ request = layui.request,
167
+ laydate = layui.laydate,
168
+ xmSelect = layui.xmSelect,
169
+ $ = layui.$;
162
170
 
163
- laydate.render({
164
- elem: '#year',
165
- type: 'year'
166
- })
167
- laydate.render({
168
- elem: '#invitation_at_add'
169
- })
171
+ flag =
172
+ <%=@last_follow_up&.clazz&.name == @o_name %>
173
+ if (flag) {
174
+ $(".service_show").removeClass('layui-hide')
175
+ }
170
176
 
171
- laydate.render({
172
- elem: '#reception_at_add'
173
- });
174
- var sales_list = xmSelect.render({
175
- el: '#assign_follow',
176
- remoteSearch: true,
177
- clickClose: true,
178
- delay: 1000,
179
- paging: true,
180
- pageRemote: true,
181
- filterable: true,
182
- remoteMethod: function (val, cb, show, pageIndex) {
183
- $.ajax( '/missions/sales_staff', {
184
- method: 'get',
185
- data: {
186
- q: val,
187
- page: pageIndex
188
- },
189
- dataType: 'json',
190
- success: function (res) {
191
- var data = res.data;
192
- if (res.code == 0) {
193
- cb(res.data, res.count);
194
- } else {
195
- layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
196
- }
177
+ form.on('select(clazz_id)', function (data) {
178
+ console.log(data.value)
179
+ const value = data.value;
180
+ if (value == <%= EducodeSales::Common.where(extras: EducodeSales::Common::OTYPE).first&.id %>) {
181
+ $(".service_show").removeClass('layui-hide')
182
+ } else {
183
+ console.log(data.value)
184
+ $(".service_show").addClass('layui-hide')
185
+ }
186
+ })
187
+
188
+ laydate.render({
189
+ elem: '#service_time',
190
+ range: true
191
+ });
192
+
193
+ laydate.render({
194
+ elem: '#year',
195
+ type: 'year'
196
+ })
197
+ laydate.render({
198
+ elem: '#invitation_at_add'
199
+ })
197
200
 
201
+ laydate.render({
202
+ elem: '#reception_at_add'
203
+ });
204
+ var sales_list = xmSelect.render({
205
+ el: '#assign_follow',
206
+ remoteSearch: true,
207
+ clickClose: true,
208
+ delay: 1000,
209
+ paging: true,
210
+ pageRemote: true,
211
+ filterable: true,
212
+ remoteMethod: function (val, cb, show, pageIndex) {
213
+ $.ajax('/missions/sales_staff', {
214
+ method: 'get',
215
+ data: {
216
+ q: val,
217
+ page: pageIndex
218
+ },
219
+ dataType: 'json',
220
+ success: function (res) {
221
+ var data = res.data;
222
+ if (res.code == 0) {
223
+ cb(res.data, res.count);
224
+ } else {
225
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
226
+ }
227
+
228
+ }
229
+ })
198
230
  }
199
- })
200
- }
201
- })
202
- var place_list = xmSelect.render({
203
- el: '#place',
204
- remoteSearch: true,
205
- model: {
206
- icon: 'hidden',
207
- label: {
208
- type: 'text',
209
- text: {
210
- //左边拼接的字符
211
- left: '',
212
- //右边拼接的字符
213
- right: '',
214
- //中间的分隔符
215
- separator: ', ',
216
- },
217
- }
218
- },
219
- clickClose: true,
220
- delay: 1000,
221
- paging: true,
222
- radio: true,
223
- pageRemote: true,
224
- filterable: true,
225
- remoteMethod: function (val, cb, show, pageIndex) {
226
- $.ajax( '/missions/sales_place', {
227
- method: 'get',
228
- data: {
229
- q: val,
230
- page: pageIndex
231
- },
232
- dataType: 'json',
233
- success: function (res) {
234
- var data = res.data;
235
- if (res.code == 0) {
236
- cb(res.data, res.count);
237
- } else {
238
- layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
231
+ })
232
+ var place_list = xmSelect.render({
233
+ el: '#place',
234
+ remoteSearch: true,
235
+ model: {
236
+ icon: 'hidden',
237
+ label: {
238
+ type: 'text',
239
+ text: {
240
+ //左边拼接的字符
241
+ left: '',
242
+ //右边拼接的字符
243
+ right: '',
244
+ //中间的分隔符
245
+ separator: ', ',
246
+ },
239
247
  }
248
+ },
249
+ clickClose: true,
250
+ delay: 1000,
251
+ paging: true,
252
+ radio: true,
253
+ pageRemote: true,
254
+ filterable: true,
255
+ remoteMethod: function (val, cb, show, pageIndex) {
256
+ $.ajax('/missions/sales_place', {
257
+ method: 'get',
258
+ data: {
259
+ q: val,
260
+ page: pageIndex
261
+ },
262
+ dataType: 'json',
263
+ success: function (res) {
264
+ var data = res.data;
265
+ if (res.code == 0) {
266
+ cb(res.data, res.count);
267
+ } else {
268
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
269
+ }
240
270
 
271
+ }
272
+ })
241
273
  }
242
- })
243
- }
244
- })
274
+ })
245
275
 
246
- sales_list.setValue(gon.sales);
247
- place_list.setValue(gon.place);
248
- form.render();
276
+ sales_list.setValue(gon.sales);
277
+ place_list.setValue(gon.place);
278
+ form.render();
249
279
 
250
- form.on('submit(add_follow_up)', function (data) {
251
- $(".submit-btn").addClass("layui-hide");
252
- var assign_follow = [];
253
- sales_list.getValue().forEach(function(d) {
254
- assign_follow.push(d.value);
255
- })
256
- data.field.assign_follow_up = assign_follow;
257
- data.field.business_id = "<%= @business.id %>";
258
- data.field.place_id = place_list.getValue('valueStr');
259
- request.authPost("missions/follow_ups", data.field, function (res) {
260
- if (res.success == false) {
261
- layer.alert(res.msg)
262
- } else {
263
- layer.close(parent.sale_plan_index);
264
- parent.layer.close(parent.layer.getFrameIndex(window.name))
265
- parent.table.reload('sale_plan_follow_table')
266
- parent.table.reload('businesses_table')
267
- parent.table.reload('teachers_table')
268
- }
269
- })
280
+ form.on('submit(add_follow_up)', function (data) {
281
+ if (data.field.clazz_id == <%= EducodeSales::Common.where(extras: EducodeSales::Common::OTYPE).first&.id %>) {
282
+ if (data.field.service_time.length == 0) {
283
+ layer.msg('请选择服务期', {time: 2000, icon: 2, shade: 0.01});
284
+ return false;
285
+ }
286
+ }
287
+ $(".submit-btn").addClass("layui-hide");
288
+ var assign_follow = [];
289
+ sales_list.getValue().forEach(function (d) {
290
+ assign_follow.push(d.value);
291
+ })
292
+ data.field.assign_follow_up = assign_follow;
293
+ data.field.business_id = "<%= @business.id %>";
294
+ data.field.place_id = place_list.getValue('valueStr');
295
+ request.authPost("missions/follow_ups", data.field, function (res) {
296
+ if (res.success == false) {
297
+ layer.alert(res.msg)
298
+ } else {
299
+ layer.close(parent.sale_plan_index);
300
+ parent.layer.close(parent.layer.getFrameIndex(window.name))
301
+ parent.table.reload('sale_plan_follow_table')
302
+ parent.table.reload('businesses_table')
303
+ parent.table.reload('teachers_table')
304
+ }
305
+ })
270
306
 
271
307
 
272
- return false;
273
- });
308
+ return false;
309
+ });
274
310
 
275
- });
311
+ });
276
312
  </script>
277
313
  <style>
278
- .new_place_select xm-select > .xm-body{
279
- width: 300px; !important;
314
+ .new_place_select xm-select > .xm-body {
315
+ width: 300px;
316
+ !important;
280
317
  }
281
318
  </style>
@@ -163,26 +163,31 @@
163
163
  width: 110,
164
164
  title: '中标时间',
165
165
  },
166
- {
167
- field: 'signed_date',
168
- width: 110,
169
- title: '签单时间',
170
- },
171
- {
172
- field: 'reception_at',
173
- width: 110,
174
- title: '验收时间',
175
- },
176
- {
177
- field: 'total_amount',
178
- width: 100,
179
- title: '总额',
180
- },
181
- {
182
- field: 'actual_amount',
183
- width: 100,
184
- title: '合同额',
185
- },
166
+ {
167
+ field: 'signed_date',
168
+ width: 110,
169
+ title: '签单时间',
170
+ },
171
+ {
172
+ field: 'reception_at',
173
+ width: 110,
174
+ title: '验收时间',
175
+ },
176
+ {
177
+ field: 'service_end_time',
178
+ width: 200,
179
+ title: '服务期',
180
+ },
181
+ {
182
+ field: 'total_amount',
183
+ width: 100,
184
+ title: '总额',
185
+ },
186
+ {
187
+ field: 'actual_amount',
188
+ width: 100,
189
+ title: '合同额',
190
+ },
186
191
  {
187
192
  field: 'divide_amount',
188
193
  width: 100,
@@ -9,6 +9,7 @@ json.data do
9
9
  json.reception_at d.reception_at&.to_s(:date)
10
10
  json.bidded_date d.bidded_date&.to_s(:date)
11
11
  json.signed_date d.signed_date&.to_s(:date)
12
+ json.service_end_time (d.service_start_time.present? && d.service_end_time.present?) ? (d.service_start_time&.to_s + "-" + d.service_end_time&.to_s) : ''
12
13
  json.total_amount d.total_amount
13
14
  json.actual_amount d.actual_amount
14
15
  json.divide_amount d.divide_amount ? d.divide_amount : ""
@@ -49,7 +49,14 @@
49
49
  <div class="layui-inline">
50
50
  <label class="layui-form-label">验收时间:</label>
51
51
  <div class="layui-input-inline">
52
- <%= @follow_up.reception_at.to_s %>
52
+ <%= @follow_up.reception_at.to_s %>
53
+ </div>
54
+ </div>
55
+ <br>
56
+ <div class="layui-inline">
57
+ <label class="layui-form-label">服务期:</label>
58
+ <div class="layui-input-inline">
59
+ <%= @follow_up.service_start_time.to_s + "-" + @follow_up.service_end_time.to_s %>
53
60
  </div>
54
61
  </div>
55
62
  <br>
@@ -46,6 +46,9 @@
46
46
  <a href="/missions/businesses" class="layui-table-link">{{ d.chance }}</a>
47
47
  </script>
48
48
 
49
+
50
+
51
+
49
52
  <script>
50
53
  layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
51
54
  var $ = layui.jquery,
@@ -172,9 +175,8 @@
172
175
  page: true
173
176
  });
174
177
 
175
- /**
176
- * toolbar事件监听
177
- */
178
+
179
+ // * toolbar事件监听
178
180
  table.on('toolbar(currentTableFilter)', function (obj) {
179
181
  if (obj.event === 'add') { // 监听添加操作
180
182
  var content = miniPage.getHrefContent('/missions/places/new');
@@ -182,9 +182,11 @@
182
182
 
183
183
  form.on('submit(month_plan_reset_btn)', function(data){
184
184
  var field = data.field;
185
- form.val('month_plan_search_form', {staff_id: '', year: '', month: '', year: ''})
185
+ form.val('month_plan_search_form', { staff_id: '', year: '', month: '', year: ''})
186
186
  return false;
187
187
  });
188
+
189
+
188
190
  table.on('toolbar(monthPlanTable)', function (obj) {
189
191
  if (obj.event === 'add') { // 监听添加操作
190
192
  var content = miniPage.getHrefContent('/missions/plans/new_month');
@@ -66,6 +66,8 @@
66
66
  form.on('submit(add_month_plan)', function (data) {
67
67
  request.authPost("missions/plans", data.field, function (res) {
68
68
  if (res.success == false) {
69
+ console.log("oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo")
70
+ console.log(parent.from_sales,parent.from_new_monthly,parent.from_monthly)
69
71
  layer.alert(res.msg)
70
72
  } else {
71
73
  layer.close(parent.sindex);
@@ -73,17 +73,20 @@
73
73
  var parentIndex = layer.index;
74
74
 
75
75
  form.on('submit(add_week_plan)', function (data) {
76
+ console.log(data)
76
77
  request.authPost("missions/plans", data.field, function (res) {
77
78
  if (res.success == false) {
79
+ console.log("no")
78
80
  layer.alert(res.msg)
79
81
  } else {
82
+ console.log("ok")
80
83
  layer.close(parent.sindex);
81
84
  parent.layer.close(parent.layer.getFrameIndex(window.name))
82
85
  if (parent.from_sales) {
83
86
  parent.table.reload('weekPlanTable')
84
87
  } else if (parent.from_weekly) {
85
88
  parent.table.reload('newWeeklyTable')
86
- }
89
+ }
87
90
  else {
88
91
  parent.table.reload('businesses_table')
89
92
  }
@@ -95,6 +98,7 @@
95
98
  return false;
96
99
  });
97
100
 
101
+ // que xiao
98
102
  form.on('submit(cancel_add_week)', function (data) {
99
103
  layer.closeAll();
100
104
  return false;
@@ -0,0 +1,111 @@
1
+ <div class="layuimini-main" style="height: 100%;">
2
+
3
+ <div class="layui-form layuimini-form" lay-filter="common_edit">
4
+ <fieldset class="table-search-fieldset">
5
+ <legend>添加字典</legend>
6
+ <div class="layui-form-item">
7
+ <label class="layui-form-label required">字典名称</label>
8
+ <div class="layui-input-block">
9
+ <%= select_tag"clazz" ,
10
+ options_for_select(EducodeSales::Common.clazzs.map{|d| d },
11
+ EducodeSales::Common.clazzs[@common.clazz]), {'lay-filter': 'clazz',
12
+ disabled: true} %>
13
+ </div>
14
+ </div>
15
+ <div class="layui-form-item">
16
+ <label class="layui-form-label required">选项名称</label>
17
+ <div class="layui-input-block">
18
+ <input type="text" name="name" autocomplete="off" lay-verify="required" lay-reqtext="选项名称不能为空" placeholder="请输入选项名称" value="" class="layui-input">
19
+ </div>
20
+ </div>
21
+ <hr>
22
+ <div class="layui-form-item">
23
+ <div class="layui-input-block">
24
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确定添加</button>
25
+ </div>
26
+ </div>
27
+ </fieldset>
28
+ <h4 class="m-t-10">选项列表</h4>
29
+ <table class="layui-hide" id="edit_table" lay-filter="edit_table"></table>
30
+ </div>
31
+ </div>
32
+ <script type="text/html" id="edit_currentTableBar">
33
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">保存</a>
34
+ </script>
35
+ <script>
36
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request'], function() {
37
+ var form = layui.form,
38
+ layer = layui.layer,
39
+ table = layui.table,
40
+ laytpl = layui.laytpl,
41
+ request = layui.request,
42
+ $ = layui.$;
43
+
44
+ form.render();
45
+
46
+ // 当前弹出层,防止ID被覆盖
47
+ var parentIndex = layer.index;
48
+
49
+ //监听提交
50
+ form.on('submit(saveBtn)', function(data) {
51
+
52
+ request.authPost("missions/commons", data.field, function(res) {
53
+ if (res.success == false) {
54
+ layer.alert(res.msg)
55
+ } else {
56
+ layer.alert('添加成功')
57
+ form.val('common_edit', {
58
+ 'name': ''
59
+ })
60
+ parent.layer.close(parent.layer.getFrameIndex(window.name))
61
+ parent.table.reload('table')
62
+ table.reload('edit_table')
63
+ }
64
+ })
65
+ return false;
66
+ });
67
+
68
+ table.render({
69
+ elem: '#edit_table',
70
+ url: '/missions/commons/' + parent.commont_id,
71
+ cols: [
72
+ [{
73
+ field: 'id',
74
+ width: 80,
75
+ title:'序号',type: 'numbers',
76
+ sort: true
77
+ }, {
78
+ field: 'name',
79
+ width: 300,
80
+ title: '选项名称',
81
+ edit: true
82
+ }, {
83
+ field: 'position',
84
+ width: 100,
85
+ title: '位置',
86
+ edit: true
87
+ }, {
88
+ title: '操作',
89
+ minWidth: 150,
90
+ toolbar: '#edit_currentTableBar',
91
+ }]
92
+ ]
93
+ });
94
+
95
+ table.on('tool(edit_table)', function (obj) {
96
+ var data = obj.data;
97
+ if (obj.event === 'edit') {
98
+ request.authPut('missions/commons/' + data.id, data,
99
+ function(res) {
100
+ if (res.success) {
101
+ table.reload('edit_table')
102
+ } else {
103
+ layer.alert(res.msg)
104
+ }
105
+
106
+ })
107
+ }
108
+ });
109
+
110
+ });
111
+ </script>
File without changes
@@ -0,0 +1,13 @@
1
+ json.data do
2
+ i = 0
3
+ json.array! @commons do |d|
4
+ i += 1
5
+ json.i i
6
+ json.id d.id
7
+ json.name EducodeSales::Common.where(clazz: d.clazz).pluck(:name).join("、")
8
+ json.clazz d.clazz
9
+ end
10
+ end
11
+
12
+ json.code 0
13
+ json.count @commons.total_count