educode_sales 0.9.76 → 0.9.77

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec6bd4aff88d498d4b416ae1a654e7e0d391a1438b3dc3358ab9d0c44e843355
4
- data.tar.gz: 3b83113b2949c8b7ea4faf3b029a367ecf994b6a42492b67111c5b6bb6539eb6
3
+ metadata.gz: b3c38e0feb88d220e6ec75559d93b49c38d308dd939efbb54f37b1afb106a28f
4
+ data.tar.gz: d9daee968f4335493daf6ffd1efaab8769cbb0d71c2d2869f84f1d074aea7a3f
5
5
  SHA512:
6
- metadata.gz: 99d66d74810cd737a62330d5b69782fbcf3c26a9e087fb7859c53f37c6eb5187f03f2692afd67f23060be03c3baa397e0928da12202d3d59b55314844fac6dc0
7
- data.tar.gz: f997afa839cf458d0bbcdbedf8aa4a564c512499092c4cc9597449d9c8a9b39e3d1825f3a45ac1f777a453b9467da4fbf698b743a86804c06d010de81170cd86
6
+ metadata.gz: a092214b3fe5caa3b0767a87a9eb936911d98d57b489a4e6da26c0c0b2e3c848bfdce972648fc4cda518fd42d7a1a688fb97eb1cac07c5cab9885fbda3548d87
7
+ data.tar.gz: 2ef105b4bf305ef64d4c310522bcb451cfa08c3c034eda3db3552c4473d268967994d58979b1359cf2b614b41d95cedac6466d1b7f5419d32132b06ea2d994a2
@@ -9,7 +9,6 @@ module EducodeSales
9
9
  common = Common.find_by(clazz: 'staff_type', name: '销售')
10
10
  staffs = Staff.joins(:user).where(job_type: common.id).where.not(role_id: 11)
11
11
  @staffs = staffs.map { |d| [d.user.real_name, d.id]}
12
- gon.staffs = staffs.map { |d| {name: d.user.real_name, value: d.id } }
13
12
  gon.place = params[:place_id].present? ? [{ value: params[:place_id], name: EducodeSales::Place.find(params[:place_id]).name }] : []
14
13
  gon.staffs = staffs.map { |d| {name: d.user.real_name, value: d.id } }
15
14
 
@@ -241,7 +240,7 @@ module EducodeSales
241
240
  contract_ids = Common.where(clazz: '商机阶段', name: ['已中标', '已签单', '已验收', '回款中', '服务中', '已结束']).pluck(:id)
242
241
  @follow_ups = FollowUp.joins("
243
242
  JOIN educode_sales_businesses ON educode_sales_follow_ups.business_id = educode_sales_businesses.id
244
- ").joins(:follow_up_trends).where("educode_sales_follow_ups.stage_id in (?)", contract_ids).select("educode_sales_follow_ups.*, educode_sales_follow_up_trends.clazz, educode_sales_follow_up_trends.content")
243
+ ").joins(:follow_up_trends).where("educode_sales_follow_ups.stage_id in (?)", contract_ids).select("educode_sales_follow_ups.*, educode_sales_follow_up_trends.clazz, educode_sales_follow_up_trends.content, educode_sales_follow_up_trends.id AS trend_id")
245
244
 
246
245
  if @current_admin.is_admin?
247
246
  @follow_ups = @follow_ups
@@ -367,14 +366,19 @@ module EducodeSales
367
366
  def product_list
368
367
  respond_to do |format|
369
368
  format.html do
370
-
371
- end
372
- format.js do
373
369
  common = Common.find_by(clazz: 'staff_type', name: '销售')
374
370
  staffs = Staff.joins(:user).where(job_type: common.id).where.not(role_id: 11)
375
371
  @staffs = staffs.map { |d| [d.user.real_name, d.id]}
372
+ gon.staffs = staffs.map { |d| {name: d.user.real_name, value: d.id } }
373
+ gon.business_step = Common.where(clazz: 'business_step', name: ['已中标', '已签单', '已验收', '回款中', '服务中', '已结束']).order("position").map do |d|
374
+ {value: d.id, name: d.name, selected: false}
375
+ end
376
376
  end
377
377
  format.json do
378
+ @product_catalogs = ProductCatalog
379
+ @product_catalogs = @product_catalogs.where("name like ?", "%#{params[:q][:name]}%") if params[:q] && params[:q][:name].present?
380
+ @product_catalogs = @product_catalogs.where(item_clazz: params[:q][:item_clazz]) if params[:q] && params[:q][:item_clazz].present?
381
+ @product_catalogs = @product_catalogs.page(params[:page]).per(params[:limit])
378
382
  end
379
383
  end
380
384
  end
@@ -387,9 +391,58 @@ module EducodeSales
387
391
  render_success
388
392
  end
389
393
 
394
+ def new_product
395
+ render layout: false
396
+ end
397
+
398
+ def product_catalog
399
+ product_catalog = ProductCatalog.new(product_up_params)
400
+ if product_catalog.save
401
+ render_success
402
+ else
403
+ render_failure product_catalog
404
+ end
405
+ end
406
+
407
+ def update_product_catalog
408
+ product_catalog = ProductCatalog.find(params[:id])
409
+ if product_catalog.update(product_up_params)
410
+ render_success
411
+ else
412
+ render_failure product_catalog
413
+ end
414
+ end
415
+
416
+ def edit_product
417
+ @product_catalog = ProductCatalog.find(params[:id])
418
+ render layout: false
419
+ end
420
+
421
+ def show_follow_record
422
+ @follow_up = FollowUp.find(params[:follow_up_id])
423
+ @business = Business.find(@follow_up.business_id)
424
+ @show_follow_recored_deployment = EducodeSales::FollowUp::BUSINESS_DEPLOYMENT.to_h.invert[@follow_up.o_business_deployment]
425
+
426
+ @trend = FollowUpTrend.find(params[:trend_id])
427
+
428
+ id = @follow_up.id
429
+ @follow_ups = @business.follow_ups
430
+ ids = @follow_ups.ids
431
+ size = ids.size
432
+ ids = ids.reverse
433
+ index = ids.index(id)
434
+ @next_id = (index != size - 1 && size > 1) ? ids[index + 1] : 0
435
+ @pre_id = (index != 0 && size > 1) ? ids[index - 1] : 0
436
+ render layout: false
437
+ end
438
+
390
439
  private
391
440
  def follow_up_params
392
441
  params.permit(:o_business_deployment, :plan_signed_date, :bidded_days, :signed_date, :signed_department_id, :service_years, :service_start_time, :service_end_time, :funding_source)
393
442
  end
443
+
444
+ def product_up_params
445
+ params.permit(:name, :item_clazz, :brand, :specification, :unit, :param, :source_method, :supplier)
446
+ end
394
447
  end
395
448
  end
@@ -0,0 +1,7 @@
1
+ module EducodeSales
2
+ class ProductCatalog < ApplicationRecord
3
+
4
+ enum item_clazz: %w(平台 课程 硬件 技术服务 培训服务 咨询服务 云服务 装修服务 其他)
5
+ enum source_method: %w(自研 在研 待研 外购)
6
+ end
7
+ end
@@ -63,7 +63,7 @@
63
63
  </div>
64
64
  </script>
65
65
  <script type="text/html" id="currentTableBar_follows">
66
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">详情</a>
66
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="show_detail">详情</a>
67
67
  <% if can?(:advise, EducodeSales::Business) %>
68
68
  <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">团队建议</a>
69
69
  <% end %>
@@ -201,15 +201,6 @@
201
201
  },
202
202
  where: {q: search, sort: sort}
203
203
  }, 'data');
204
- // table.reload('businesses_table', {
205
- // page: {
206
- // curr: 1
207
- // },
208
- // where: {q: search, sort: sort}
209
- // }, 'data');
210
- // form.val('search_form', {
211
- // name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area , description: data.field.description
212
- // })
213
204
  return false;
214
205
  });
215
206
 
@@ -246,29 +237,11 @@
246
237
  table.on('tool(contract_follows_table)', function (obj) {
247
238
  var data = obj.data;
248
239
  id = data.id
249
- if (obj.event === 'add_event') { // 监听添加操作
250
- var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + data.id);
240
+ if (obj.event === 'show_detail') { // 监听添加操作
241
+ var content = miniPage.getHrefContent('/missions/contracts/show_follow_record?follow_up_id=' + data.id + "&trend_id=" + data.trend_id);
251
242
  var openWH = miniPage.getOpenWidthHeight();
252
243
  show_index = layer.open({
253
- title: '查看商机跟进记录',
254
- type: 1,
255
- shade: 0.2,
256
- maxmin: true,
257
- shadeClose: true,
258
- area: [openWH[0] + 'px', openWH[1] + 'px'],
259
- offset: [openWH[2] + 'px', openWH[3] + 'px'],
260
- content: content
261
- });
262
- $(window).on("resize", function () {
263
- layer.full(index);
264
- });
265
- } else if (obj.event === 'business') {
266
- business_id = data.business_id
267
- business_name = data.business
268
- content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + data.business_id);
269
- openWH = miniPage.getOpenWidthHeight();
270
- index = layer.open({
271
- title: '商机列表/' + data.business + '的跟进记录',
244
+ title: '查看合同动态',
272
245
  type: 1,
273
246
  shade: 0.2,
274
247
  maxmin: true,
@@ -0,0 +1,85 @@
1
+ <%= Gon::Base.render_data %>
2
+ <div class="layui-form layuimini-form" style="padding:30px">
3
+ <div class="layui-form-item">
4
+ <div class="layui-inline">
5
+ <label class="layui-form-label required">产品名称:</label>
6
+ <div class="layui-input-inline">
7
+ <input type="text" name="name" value="<%= @product_catalog.name %>" class="layui-input" lay-verify="required">
8
+ </div>
9
+ </div>
10
+ <div class="layui-inline">
11
+ <label class="layui-form-label required">销售品目:</label>
12
+ <div class="layui-input-inline">
13
+ <%= select_tag "item_clazz", options_for_select(EducodeSales::ProductCatalog.item_clazzs.keys, @product_catalog.item_clazz), { 'lay-filter': 'item_clazz', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
14
+ </div>
15
+ </div>
16
+ </div>
17
+ <div class="layui-form-item">
18
+ <div class="layui-inline">
19
+ <label class="layui-form-label required">品牌:</label>
20
+ <div class="layui-input-inline">
21
+ <input type="text" name="brand" value="<%= @product_catalog.brand %>" class="layui-input" lay-verify="required">
22
+ </div>
23
+ </div>
24
+ <div class="layui-inline">
25
+ <label class="layui-form-label required">规格型号:</label>
26
+ <div class="layui-input-inline">
27
+ <input type="text" name="specification" value="<%= @product_catalog.specification %>" class="layui-input" lay-verify="required">
28
+ </div>
29
+ </div>
30
+
31
+ </div>
32
+ <div class="layui-form-item">
33
+ <div class="layui-inline">
34
+ <label class="layui-form-label required">单位:</label>
35
+ <div class="layui-input-inline">
36
+ <input type="text" name="unit" value="<%= @product_catalog.unit %>" class="layui-input" lay-verify="required">
37
+ </div>
38
+ </div>
39
+ <div class="layui-inline">
40
+ <label class="layui-form-label required">参数:</label>
41
+ <div class="layui-input-inline">
42
+ <input type="text" name="param" value="<%= @product_catalog.param %>" class="layui-input" lay-verify="required">
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <div class="layui-form-item">
47
+ <div class="layui-inline">
48
+ <label class="layui-form-label required">来源方式:</label>
49
+ <div class="layui-input-inline">
50
+ <%= select_tag "source_method", options_for_select(EducodeSales::ProductCatalog.source_methods.keys, @product_catalog.source_method), { 'lay-filter': 'source_method', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
51
+ </div>
52
+ </div>
53
+ <div class="layui-inline">
54
+ <label class="layui-form-label required">供应商:</label>
55
+ <div class="layui-input-inline">
56
+ <input type="text" name="supplier" value="<%= @product_catalog.supplier %>" class="layui-input" lay-verify="required">
57
+ </div>
58
+ </div>
59
+ </div>
60
+ <div class="layui-form-item">
61
+ <div class="layui-input-block">
62
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <script>
68
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput'], function() {
69
+ var form = layui.form,
70
+ layer = layui.layer,
71
+ table = layui.table,
72
+ laytpl = layui.laytpl,
73
+ request = layui.request,
74
+ $ = layui.$;
75
+ form.render();
76
+
77
+ form.on('submit(saveBtn)', function(data) {
78
+ request.put("missions/contracts/"+ parent.id + "/update_product_catalog", data.field, function(res) {
79
+ layer.close(parent.edit_production_index)
80
+ parent.table.reload('contact_product_table')
81
+ })
82
+ return false;
83
+ });
84
+ });
85
+ </script>
@@ -5,6 +5,7 @@ json.data do
5
5
  json.stage d.stage.name
6
6
  json.staff d.staff.user.real_name
7
7
  json.clazz EducodeSales::FollowUpTrend.clazzs.invert[d['clazz']]
8
+ json.trend_id d['trend_id']
8
9
  json.description d['content']
9
10
  json.school d.business.department&.school&.name
10
11
  json.school_id d.business.department&.school&.id
@@ -3,7 +3,6 @@
3
3
  <ul class="layui-tab-title">
4
4
  <li class="layui-this follows_li">跟进动态</li>
5
5
  <li class="contracts_list_li">合同列表</li>
6
- <li class="contracts_product_li">产品目录</li>
7
6
  </ul>
8
7
  <div class="layui-tab-content">
9
8
  <div class="layui-tab-item follows_div layui-show">
@@ -12,9 +11,6 @@
12
11
  <div class="layui-tab-item contracts_list_div">
13
12
  <div id="contract_list_wraper"></div>
14
13
  </div>
15
- <div class="layui-tab-item contracts_product_div">
16
- <div id="contract_product_wraper"></div>
17
- </div>
18
14
  </div>
19
15
  </div>
20
16
 
@@ -35,8 +31,6 @@
35
31
  element.on('tab(contract_tab)', function(data) {
36
32
  if (data.index == 1 && $("#contract_list").length == 0) {
37
33
  loadPage('/missions/contracts/list')
38
- } else if (data.index == 2 && $("#product_list").length == 0) {
39
- loadPage('/missions/contracts/product_list')
40
34
  }
41
35
  });
42
36
 
@@ -0,0 +1,85 @@
1
+ <%= Gon::Base.render_data %>
2
+ <div class="layui-form layuimini-form" style="padding:30px">
3
+ <div class="layui-form-item">
4
+ <div class="layui-inline">
5
+ <label class="layui-form-label required">产品名称:</label>
6
+ <div class="layui-input-inline">
7
+ <input type="text" name="name" value="" class="layui-input" lay-verify="required">
8
+ </div>
9
+ </div>
10
+ <div class="layui-inline">
11
+ <label class="layui-form-label required">销售品目:</label>
12
+ <div class="layui-input-inline">
13
+ <%= select_tag "item_clazz", options_for_select(EducodeSales::ProductCatalog.item_clazzs.keys), { 'lay-filter': 'item_clazz', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
14
+ </div>
15
+ </div>
16
+ </div>
17
+ <div class="layui-form-item">
18
+ <div class="layui-inline">
19
+ <label class="layui-form-label required">品牌:</label>
20
+ <div class="layui-input-inline">
21
+ <input type="text" name="brand" value="" class="layui-input" lay-verify="required">
22
+ </div>
23
+ </div>
24
+ <div class="layui-inline">
25
+ <label class="layui-form-label required">规格型号:</label>
26
+ <div class="layui-input-inline">
27
+ <input type="text" name="specification" value="" class="layui-input" lay-verify="required">
28
+ </div>
29
+ </div>
30
+
31
+ </div>
32
+ <div class="layui-form-item">
33
+ <div class="layui-inline">
34
+ <label class="layui-form-label required">单位:</label>
35
+ <div class="layui-input-inline">
36
+ <input type="text" name="unit" value="" class="layui-input" lay-verify="required">
37
+ </div>
38
+ </div>
39
+ <div class="layui-inline">
40
+ <label class="layui-form-label required">参数:</label>
41
+ <div class="layui-input-inline">
42
+ <input type="text" name="param" value="" class="layui-input" lay-verify="required">
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <div class="layui-form-item">
47
+ <div class="layui-inline">
48
+ <label class="layui-form-label required">来源方式:</label>
49
+ <div class="layui-input-inline">
50
+ <%= select_tag "source_method", options_for_select(EducodeSales::ProductCatalog.source_methods.keys), { 'lay-filter': 'source_method', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
51
+ </div>
52
+ </div>
53
+ <div class="layui-inline">
54
+ <label class="layui-form-label required">供应商:</label>
55
+ <div class="layui-input-inline">
56
+ <input type="text" name="supplier" value="" class="layui-input" lay-verify="required">
57
+ </div>
58
+ </div>
59
+ </div>
60
+ <div class="layui-form-item">
61
+ <div class="layui-input-block">
62
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <script>
68
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput'], function() {
69
+ var form = layui.form,
70
+ layer = layui.layer,
71
+ table = layui.table,
72
+ laytpl = layui.laytpl,
73
+ request = layui.request,
74
+ $ = layui.$;
75
+ form.render();
76
+
77
+ form.on('submit(saveBtn)', function(data) {
78
+ request.post("missions/contracts/product_catalog", data.field, function(res) {
79
+ layer.close(parent.add_product_index)
80
+ parent.table.reload('contact_product_table')
81
+ })
82
+ return false;
83
+ });
84
+ });
85
+ </script>
@@ -0,0 +1,232 @@
1
+ <%= Gon::Base.render_data %>
2
+ <div class="min-height-table" id="product_list">
3
+ <div style="margin: 10px 10px 10px 10px">
4
+ <form class="layui-form layui-form-pane" lay-filter="search_form">
5
+ <div class="layui-form-item">
6
+ <div class="layui-inline">
7
+ <label class="layui-form-label">产品名称</label>
8
+ <div class="layui-input-inline">
9
+ <input type="text" name="name" class="layui-input" value="">
10
+ </div>
11
+ </div>
12
+ <div class="layui-inline">
13
+ <label class="layui-form-label">销售品目</label>
14
+ <div class="layui-input-inline">
15
+ <%= select_tag "item_clazz", options_for_select(EducodeSales::ProductCatalog.item_clazzs.keys), { 'lay-filter': 'item_clazz', include_blank: true , "lay-search": "" } %>
16
+ </div>
17
+ </div>
18
+ <div class="layui-inline">
19
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit
20
+ lay-filter="reset_prodct_form">重置
21
+ </button>
22
+ <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit
23
+ lay-filter="search_product_form">搜索
24
+ </button>
25
+ </div>
26
+ </div>
27
+ </form>
28
+ </div>
29
+ <div id="contact_table_wraper">
30
+ <table class="layui-hide" id="contact_product_table" lay-filter="contact_product_table"></table>
31
+ </div>
32
+ </div>
33
+
34
+ <script type="text/html" id="currentTableBarProduct">
35
+ <% if can? :update_product_catalog, EducodeSales::Business %>
36
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit_product">编辑</a>
37
+ <% end %>
38
+ </script>
39
+
40
+ <script type="text/html" id="toolbar">
41
+ <% if can? :new_product_catalog, EducodeSales::Business %>
42
+ <a class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="add_product">添加产品目录</a>
43
+ <% end %>
44
+ </script>
45
+
46
+ <script>
47
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown', 'laytpl', 'xmSelect'],
48
+ function() {
49
+ var $ = layui.jquery,
50
+ form = layui.form,
51
+ request = layui.request,
52
+ miniPage = layui.miniPage,
53
+ dropdown = layui.dropdown,
54
+ xmSelect = layui.xmSelect,
55
+ laydate = layui.laydate;
56
+ var openWH = miniPage.getOpenWidthHeight();
57
+ var data = form.val("search_form");
58
+ table = layui.table;
59
+ var cols_table = [
60
+ [{
61
+ field: 'id',
62
+ width: 60,
63
+ title: '序号',
64
+ fixed: "left"
65
+ },
66
+ {
67
+ field: 'name',
68
+ width: 120,
69
+ title: '产品名称',
70
+ },
71
+ {
72
+ field: 'item_clazz',
73
+ width: 150,
74
+ title: '销售品目',
75
+ },
76
+ {
77
+ field: 'brand',
78
+ width: 150,
79
+ title: '品牌',
80
+ },
81
+ {
82
+ field: 'specification',
83
+ width: 150,
84
+ title: '规格型号',
85
+ },
86
+ {
87
+ field: 'unit',
88
+ width: 150,
89
+ title: '单位',
90
+ },
91
+ {
92
+ field: 'param',
93
+ width: 150,
94
+ title: '参数',
95
+ },
96
+ {
97
+ field: 'source_method',
98
+ width: 150,
99
+ title: '来源方式',
100
+ },
101
+ {
102
+ field: 'supplier',
103
+ width: 150,
104
+ title: '供货商',
105
+ },
106
+ {
107
+ title: '操作',
108
+ minWidth: 100,
109
+ toolbar: '#currentTableBarProduct',
110
+ align: "center",
111
+ fixed: 'right'
112
+ }
113
+ ]
114
+ ]
115
+ var business_table = table.render({
116
+ elem: '#contact_product_table',
117
+ url: '/missions/contracts/product_list',
118
+ autoSort: false,
119
+ toolbar: '#toolbar',
120
+ where: {
121
+ q: data
122
+ },
123
+ defaultToolbar: [],
124
+ title: '产品目录表',
125
+ cols: cols_table,
126
+ limit: 20,
127
+ limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
128
+ page: true,
129
+ skin: 'line',
130
+ });
131
+ var sort = {},
132
+ search = data;
133
+ table.on('sort(contact_product_table)', function(obj) {
134
+ var data = form.val("search_form");
135
+ sort.field = obj.field;
136
+ sort.order = obj.type;
137
+ table.reload('contact_product_table', {
138
+ url: '/missions/contracts/product_list',
139
+ initSort: obj,
140
+ where: {
141
+ sort: sort,
142
+ q: search
143
+ }
144
+ });
145
+ })
146
+ // 监听搜索操作
147
+ form.on('submit(search_product_form)', function(data) {
148
+ if (search['clazz']) {
149
+ data.field['clazz'] = search['clazz']
150
+ }
151
+ search = data.field
152
+ table.reload('contact_product_table', {
153
+ url: '/missions/contracts/product_list',
154
+ page: {
155
+ curr: 1
156
+ },
157
+ where: {
158
+ q: search,
159
+ sort: sort
160
+ }
161
+ }, 'data');
162
+ return false;
163
+ });
164
+ form.on('submit(reset_prodct_form)', function(data) {
165
+ var field = data.field;
166
+ form.val('search_form', {
167
+ name: '',
168
+ item_clazz: ''
169
+ })
170
+ return false;
171
+ });
172
+ table.on('toolbar(contact_product_table)', function(obj) {
173
+ var openWH = miniPage.getOpenWidthHeight();
174
+ var content = miniPage.getHrefContent('/missions/contracts/new_product');
175
+ if (obj.event == 'add_product') {
176
+ add_product_index = layer.open({
177
+ title: '添加产品目录',
178
+ type: 1,
179
+ shade: 0.2,
180
+ maxmin: true,
181
+ shadeClose: true,
182
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
183
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
184
+ content: content,
185
+ success: function(layero, index) {
186
+ form.render('select');
187
+ }
188
+ });
189
+ $(window).on("resize", function() {
190
+ layer.full(add_product_index);
191
+ });
192
+ }
193
+ })
194
+ table.on('tool(contact_product_table)', function(obj) {
195
+ id = obj.data.id;
196
+ if (obj.event === 'edit_product') { // 监听添加操作
197
+ var content = miniPage.getHrefContent('/missions/contracts/' + id +'/edit_product');
198
+ var openWH = miniPage.getOpenWidthHeight();
199
+ edit_production_index = layer.open({
200
+ title: '编辑产品目录',
201
+ type: 1,
202
+ shade: 0.2,
203
+ maxmin: true,
204
+ shadeClose: true,
205
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
206
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
207
+ content: content,
208
+ success: function(layero, index) {
209
+ form.render('select');
210
+ }
211
+ });
212
+ $(window).on("resize", function() {
213
+ layer.full(edit_production_index);
214
+ });
215
+ }
216
+ });
217
+ });
218
+ </script>
219
+ <style>
220
+ .layui-table-tool-temp {
221
+ padding-right: 30px;
222
+ !important;
223
+ }
224
+
225
+ .layui-table-fixed .layui-table-body {
226
+ height: auto !important;
227
+ }
228
+
229
+ .layui-table-fixed.layui-hide {
230
+ display: block !important;
231
+ }
232
+ </style>
@@ -0,0 +1,16 @@
1
+ json.data do
2
+ json.array! @product_catalogs do |d|
3
+ json.id d.id
4
+ json.name d.name
5
+ json.item_clazz d.item_clazz
6
+ json.brand d.brand
7
+ json.specification d.specification
8
+ json.unit d.unit
9
+ json.param d.param
10
+ json.source_method d.source_method
11
+ json.supplier d.supplier
12
+ end
13
+ end
14
+
15
+ json.code 0
16
+ json.count @product_catalogs.total_count
@@ -0,0 +1,169 @@
1
+ <h1 class="text-center m-t-20"><%= @follow_up.business.name %></h1>
2
+ <form class="layui-form form-value">
3
+ <div class="layui-form-item" style="padding: 10px 25px 0;">
4
+ <div class="layui-inline">
5
+ <label class="layui-form-label">单位:</label>
6
+ <div class="layui-input-inline">
7
+ <%= @follow_up.business.department&.school&.name %>
8
+ </div>
9
+ </div>
10
+ <%if @follow_up.business.number.present?%>
11
+ <div class="layui-inline">
12
+ <label class="layui-form-label">编号:</label>
13
+ <div class="layui-input-inline">
14
+ <%= @follow_up.business.number %>
15
+ </div>
16
+ </div>
17
+ <%end %>
18
+ <div class="layui-inline">
19
+ <label class="layui-form-label">部门:</label>
20
+ <div class="layui-input-inline">
21
+ <%= @follow_up.business.department&.name %>
22
+ </div>
23
+ </div>
24
+ <br>
25
+ <div class="layui-inline">
26
+ <label class="layui-form-label">项目类型:</label>
27
+ <div class="layui-input-inline">
28
+ <%= @follow_up.clazz.name %>
29
+ </div>
30
+ </div>
31
+ <div class="layui-inline">
32
+ <label class="layui-form-label">项目阶段:</label>
33
+ <div class="layui-input-inline">
34
+ <%= @follow_up.stage.name %>
35
+ </div>
36
+ </div>
37
+ <br>
38
+ <div class="layui-inline">
39
+ <label class="layui-form-label">招标时间:</label>
40
+ <div class="layui-input-inline">
41
+ <%= @follow_up.invitation_at.to_s %>
42
+ </div>
43
+ </div>
44
+ <div class="layui-inline">
45
+ <label class="layui-form-label">中标时间:</label>
46
+ <div class="layui-input-inline">
47
+ <%= @follow_up.bidded_date.to_s %>
48
+ </div>
49
+ </div>
50
+ <br>
51
+ <div class="layui-inline">
52
+ <label class="layui-form-label">签单时间:</label>
53
+ <div class="layui-input-inline">
54
+ <%= @follow_up.signed_date.to_s %>
55
+ </div>
56
+ </div>
57
+ <div class="layui-inline">
58
+ <label class="layui-form-label">验收时间:</label>
59
+ <div class="layui-input-inline">
60
+ <%= @follow_up.reception_at.to_s %>
61
+ </div>
62
+ </div>
63
+
64
+ <br>
65
+ <%if @follow_up.clazz_id == EducodeSales::Common.find_by(extras: EducodeSales::Common::OTYPE)&.id %>
66
+ <div class="layui-inline">
67
+ <label class="layui-form-label">服务期:</label>
68
+ <div class="layui-input-inline">
69
+ <%= @follow_up.service_start_time.to_s + "-" + @follow_up.service_end_time.to_s %>
70
+ </div>
71
+ </div>
72
+ <%end %>
73
+ <%if @follow_up.clazz_id == EducodeSales::Common.find_by(extras: EducodeSales::Common::OTYPE)&.id %>
74
+ <div class="layui-inline">
75
+ <label class="layui-form-label">部署类型:</label>
76
+ <div class="layui-input-inline">
77
+ <%=@show_follow_recored_deployment%>
78
+ </div>
79
+ </div>
80
+ <% end %>
81
+ <br>
82
+
83
+ <div class="layui-inline">
84
+ <label class="layui-form-label">中标额:</label>
85
+ <div class="layui-input-inline">
86
+ <%= @follow_up.total_amount.to_f.round(6) %>万
87
+ </div>
88
+ </div>
89
+ <div class="layui-inline">
90
+ <label class="layui-form-label">合同额:</label>
91
+ <div class="layui-input-inline">
92
+ <%= @follow_up.actual_amount.to_f.round(6) %>万
93
+ </div>
94
+ </div>
95
+ <br>
96
+ <div class="layui-inline">
97
+ <label class="layui-form-label">渠道:</label>
98
+ <div class="layui-input-inline">
99
+ <%= @follow_up.place&.name %>
100
+ </div>
101
+ </div>
102
+ <div class="layui-inline">
103
+ <label class="layui-form-label">渠道分成:</label>
104
+ <div class="layui-input-inline">
105
+ <%= @follow_up.divide_amount.to_f.round(6) %>万
106
+ </div>
107
+ </div>
108
+ <br/>
109
+ <div class="layui-inline">
110
+ <label class="layui-form-label">预算金额:</label>
111
+ <div class="layui-input-inline">
112
+ <%= @follow_up.budget_amount.to_f.round(6) %>万
113
+ </div>
114
+ </div>
115
+ <div class="layui-inline">
116
+ <label class="layui-form-label">分成比例:</label>
117
+ <div class="layui-input-inline">
118
+ <%= @follow_up.divide_rate.to_f.round(2) %>%
119
+ </div>
120
+ </div>
121
+ <div class="layui-form-item">
122
+ <div class="layui-inline">
123
+ <label class="layui-form-label">所属年度:</label>
124
+ <div class="layui-input-inline">
125
+ <%= @follow_up&.year %>年
126
+ </div>
127
+ </div>
128
+ </div>
129
+ <div class="layui-form-item">
130
+ <div class="layui-inline">
131
+ <label class="layui-form-label">项目资金来源:</label>
132
+ <div class="layui-input-inline">
133
+ <%= @follow_up&.funding_source %>
134
+ </div>
135
+ </div>
136
+ <div class="layui-inline">
137
+ <label class="layui-form-label">签约单位:</label>
138
+ <div class="layui-input-inline" style="width: 300px">
139
+ <%= @follow_up.signed_department&.school&.name || '' %>
140
+ </div>
141
+ </div>
142
+ </div>
143
+ <div class="layui-form-item">
144
+ <label class="layui-form-label" style="width: 150px;">售后工程师:</label>
145
+ <div class="layui-input-inline">
146
+ <%= @business.assign_staffs.map{|d| d.staff.user.full_name}.join("、") %>
147
+ </div>
148
+ </div>
149
+ <div class="layui-form-item layui-form-text">
150
+ <label class="layui-form-label"><%= @trend.clazz %>:</label>
151
+ <div class="layui-input-block" style="padding-right: 20px;">
152
+ <pre><%= @trend.content %></pre>
153
+ </div>
154
+ </div>
155
+ <div class="layui-form-item layui-form-text">
156
+ <label class="layui-form-label">时间:</label>
157
+ <div class="layui-input-block" style="padding-right: 20px;">
158
+ <pre><%= @follow_up.created_at.to_s %></pre>
159
+ </div>
160
+ </div>
161
+ <div class="layui-form-item layui-form-text">
162
+ <label class="layui-form-label">跟进人:</label>
163
+ <div class="layui-input-block" style="padding-right: 20px;">
164
+ <pre><%= @follow_up.staff.user.real_name %></pre>
165
+ </div>
166
+ </div>
167
+ </div>
168
+ </form>
169
+
@@ -5,7 +5,7 @@ json.data do
5
5
  json.stage d.stage.name
6
6
  json.staff d.staff.user.real_name
7
7
  json.description d.description
8
- json.advise d.advise
8
+ json.advise d.advise || ''
9
9
  json.school d.business.department&.school&.name
10
10
  json.school_id d.business.department&.school&.id
11
11
  json.created_at d.created_at.to_s
@@ -67,6 +67,10 @@
67
67
  <dd><a href="/missions/contracts" class="<%= current?('layui-this', contracts_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/4.商机管理.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>合同管理</a>
68
68
  </dd>
69
69
  <% end %>
70
+ <% if can? :read_product_catalog, EducodeSales::Business %>
71
+ <dd><a href="/missions/contracts/product_list" class="<%= current?('layui-this', product_list_contracts_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/4.商机管理.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>产品目录</a>
72
+ </dd>
73
+ <% end %>
70
74
  <% if can? :read, EducodeSales::MoneyPlan %>
71
75
  <dd><a href="/missions/money_plans" class="<%= current?('layui-this', money_plans_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/money_plans.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>回款计划</a>
72
76
  </dd>
data/config/routes.rb CHANGED
@@ -29,11 +29,16 @@ EducodeSales::Engine.routes.draw do
29
29
  get :new_follow_up
30
30
  post :add_follow_ups
31
31
  get :product_list
32
+ get :new_product
33
+ post :product_catalog
34
+ get :show_follow_record
32
35
  end
33
36
  member do
34
37
  post :advise
35
38
  get :assign
36
39
  post :assign_staff
40
+ get :edit_product
41
+ put :update_product_catalog
37
42
  end
38
43
  end
39
44
 
@@ -0,0 +1,20 @@
1
+ class CreateEducodeSalesProductCatalogs < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_product_catalogs do |t|
4
+ t.string :name
5
+ t.integer :item_clazz
6
+ t.string :brand
7
+ t.string :specification
8
+ t.string :unit
9
+ t.text :param
10
+ t.integer :source_method
11
+ t.string :supplier
12
+
13
+ t.timestamps
14
+ end
15
+
16
+ EducodeSales::Permission.find_or_create_by(name: '查看产品目录', subject: 'Business', action: 'read_product_catalog', clazz: 'contract')
17
+ EducodeSales::Permission.find_or_create_by(name: '添加产品目录', subject: 'Business', action: 'new_product_catalog', clazz: 'contract')
18
+ EducodeSales::Permission.find_or_create_by(name: '编辑产品目录', subject: 'Business', action: 'update_product_catalog', clazz: 'contract')
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.76'
2
+ VERSION = '0.9.77'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: educode_sales
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.76
4
+ version: 0.9.77
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-02 00:00:00.000000000 Z
11
+ date: 2023-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -231,6 +231,7 @@ files:
231
231
  - app/models/educode_sales/permission.rb
232
232
  - app/models/educode_sales/place.rb
233
233
  - app/models/educode_sales/place_area.rb
234
+ - app/models/educode_sales/product_catalog.rb
234
235
  - app/models/educode_sales/project.rb
235
236
  - app/models/educode_sales/recycle.rb
236
237
  - app/models/educode_sales/result.rb
@@ -307,14 +308,17 @@ files:
307
308
  - app/views/educode_sales/commons/show.json.jbuilder
308
309
  - app/views/educode_sales/contracts/_follows.html.erb
309
310
  - app/views/educode_sales/contracts/_list.html.erb
310
- - app/views/educode_sales/contracts/_product_list.html.erb
311
311
  - app/views/educode_sales/contracts/assign.html.erb
312
+ - app/views/educode_sales/contracts/edit_product.html.erb
312
313
  - app/views/educode_sales/contracts/follow_ups.json.jbuilder
313
314
  - app/views/educode_sales/contracts/index.html.erb
314
315
  - app/views/educode_sales/contracts/index.json.jbuilder
315
316
  - app/views/educode_sales/contracts/list.js.erb
316
317
  - app/views/educode_sales/contracts/new_follow_up.html.erb
317
- - app/views/educode_sales/contracts/product_list.js.erb
318
+ - app/views/educode_sales/contracts/new_product.html.erb
319
+ - app/views/educode_sales/contracts/product_list.html.erb
320
+ - app/views/educode_sales/contracts/product_list.json.jbuilder
321
+ - app/views/educode_sales/contracts/show_follow_record.html.erb
318
322
  - app/views/educode_sales/customers/edit.html.erb
319
323
  - app/views/educode_sales/customers/edit_department.html.erb
320
324
  - app/views/educode_sales/customers/edit_follow_record.html.erb
@@ -657,6 +661,7 @@ files:
657
661
  - db/migrate/20230430121335_add_permissions_for_ideas.rb
658
662
  - db/migrate/20230430134710_create_educode_sales_assign_staffs.rb
659
663
  - db/migrate/20230501034307_create_educode_sales_follow_up_trends.rb
664
+ - db/migrate/20230502142912_create_educode_sales_product_catalogs.rb
660
665
  - lib/educode_sales.rb
661
666
  - lib/educode_sales/engine.rb
662
667
  - lib/educode_sales/version.rb
@@ -1,358 +0,0 @@
1
- <div class="min-height-table" id="product_list">
2
- <div style="margin: 10px 10px 10px 10px">
3
- <form class="layui-form layui-form-pane" lay-filter="search_form">
4
- <div class="layui-form-item">
5
- <div class="layui-inline">
6
- <label class="layui-form-label">合同名称</label>
7
- <div class="layui-input-inline">
8
- <input type="text" name="name" class="layui-input" value="">
9
- </div>
10
- </div>
11
- <div class="layui-inline">
12
- <label class="layui-form-label">用户单位</label>
13
- <div class="layui-input-inline">
14
- <input type="text" name="department" value="" class="layui-input">
15
- </div>
16
- </div>
17
- <div class="layui-inline">
18
- <label class="layui-form-label">签约单位</label>
19
- <div class="layui-input-inline">
20
- <input type="text" name="assign_department" value="" class="layui-input">
21
- </div>
22
- </div>
23
- <div class="layui-inline">
24
- <label class="layui-form-label">销售经理</label>
25
- <div class="layui-input-inline">
26
- <%= select_tag "sales_staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true , "lay-search": "" } %>
27
- </div>
28
- </div>
29
- <div class="layui-inline show_item_contract">
30
- <label class="layui-form-label">区域</label>
31
- <div class="layui-input-inline">
32
- <%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
33
- </div>
34
- </div>
35
- <div class="layui-inline show_item_contract">
36
- <label class="layui-form-label">项目阶段</label>
37
- <div class="layui-input-inline">
38
- <div id="contract_business_step" style="width: 190px;"></div>
39
- </div>
40
- </div>
41
- <div class="layui-inline show_item_contract">
42
- <label class="layui-form-label">渠道名称</label>
43
- <div class="layui-input-inline">
44
- <div id="contract_index_place" style="width: 190px;"></div>
45
- </div>
46
- </div>
47
- <div class="layui-inline show_item_contract">
48
- <label class="layui-form-label">中标时间</label>
49
- <div class="layui-input-inline">
50
- <input type="text" class="layui-input" id="bidded_date" name="bidded_date" placeholder=" - " autocomplete="off">
51
- </div>
52
- </div>
53
- <div class="layui-inline show_item_contract">
54
- <label class="layui-form-label">签单时间</label>
55
- <div class="layui-input-inline">
56
- <input type="text" class="layui-input" id="signed_date" name="signed_date" placeholder=" - " autocomplete="off">
57
- </div>
58
- </div>
59
- <div class="layui-inline">
60
- <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
61
- </button>
62
- <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness_contract">搜索
63
- </button>
64
- </div>
65
- </div>
66
- </form>
67
- </div>
68
- <div id="contact_table_wraper">
69
- <table class="layui-hide" id="contact_product_table" lay-filter="contact_product_table"></table>
70
- </div>
71
- </div>
72
-
73
- <script type="text/html" id="currentTableBarProduct">
74
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_product">添加销售目录</a>
75
- </script>
76
-
77
-
78
- <script>
79
- layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown','laytpl', 'xmSelect'], function () {
80
- var $ = layui.jquery,
81
- form = layui.form,
82
- request = layui.request,
83
- miniPage = layui.miniPage,
84
- dropdown = layui.dropdown,
85
- xmSelect = layui.xmSelect,
86
- laydate = layui.laydate;
87
- var openWH = miniPage.getOpenWidthHeight();
88
- laydate.render({
89
- elem: '#date',
90
- range: true
91
- });
92
-
93
- laydate.render({
94
- elem: '#invitation_at',
95
- range: true
96
- });
97
-
98
- laydate.render({
99
- elem: '#bidded_date',
100
- range: true,
101
- value: gon.bidded_date
102
- });
103
- laydate.render({
104
- elem: '#signed_date',
105
- range: true,
106
- value: gon.signed_date
107
- });
108
-
109
- laydate.render({
110
- elem: '#date_at',
111
- range: true,
112
- value: gon.date_at
113
- });
114
-
115
-
116
- var business_type_list = xmSelect.render({
117
- el: '#contract_business_type',
118
- data: gon.business_type
119
- })
120
-
121
-
122
- var business_step_list = xmSelect.render({
123
- el: '#contract_business_step',
124
- data: gon.business_step
125
- })
126
-
127
- var index_place_list = xmSelect.render({
128
- el: '#contract_index_place',
129
- model: {
130
- icon: 'hidden',
131
- label: {
132
- type: 'text',
133
- text: {
134
- //左边拼接的字符
135
- left: '',
136
- //右边拼接的字符
137
- right: '',
138
- //中间的分隔符
139
- separator: ', ',
140
- },
141
- }
142
- },
143
- remoteSearch: true,
144
- clickClose: true,
145
- delay: 1000,
146
- paging: true,
147
- radio: true,
148
- pageRemote: true,
149
- filterable: true,
150
- remoteMethod: function (val, cb, show, pageIndex) {
151
- $.ajax( '/missions/sales_place', {
152
- method: 'get',
153
- data: {
154
- q: val,
155
- page: pageIndex
156
- },
157
- dataType: 'json',
158
- success: function (res) {
159
- var data = res.data;
160
- if (res.code == 0) {
161
- cb(res.data, res.count);
162
- } else {
163
- layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
164
- }
165
- }
166
- })
167
- }
168
- })
169
- index_place_list.setValue(gon.place)
170
-
171
-
172
- var data = form.val("search_form");
173
- table = layui.table;
174
- var cols_table = [
175
- [
176
- {
177
- field: 'id',
178
- width: 60,
179
- title: '序号', type: 'numbers',
180
- totalRowText: '合计',
181
- fixed: "left"
182
- },
183
- {
184
- field: 'number',
185
- width: 120,
186
- title: '编号',
187
- fixed: 'left',
188
- },
189
- {
190
- field: 'name',
191
- width: 120,
192
- title: '合同名称',
193
- },
194
- {
195
- field: 'area',
196
- width: 100,
197
- title: '地域',
198
- },
199
- {
200
- field: 'school',
201
- width: 150,
202
- title: '用户单位',
203
- templet: '#school_name',
204
- },
205
- {
206
- field: 'property',
207
- width: 150,
208
- title: '客户类型',
209
- },
210
- {
211
- field: 'department',
212
- width: 150,
213
- title: '部门',
214
- templet: '<div><span title="{{d.department}}">{{d.department}}</span></div>',
215
- },
216
- {
217
- field: 'item_clazz',
218
- width: 150,
219
- title: '销售品目',
220
- },
221
- {
222
- field: 'brand',
223
- width: 150,
224
- title: '品牌',
225
- },
226
- {
227
- field: 'specification',
228
- width: 150,
229
- title: '规格',
230
- },
231
- {
232
- field: 'supplier',
233
- width: 150,
234
- title: '供货商',
235
- }
236
- ]
237
- ]
238
-
239
- var business_table = table.render({
240
- elem: '#contact_product_table',
241
- url: '/missions/contracts',
242
- autoSort: false,
243
- where: {q: data},
244
- defaultToolbar: ['filter'],
245
- title: '合同数据表',
246
- totalRow: true,//开启合并行
247
- cols: cols_table,
248
-
249
- limit: 20,
250
- limits: [10,15,20,30,40,50,60,70,80,90],
251
- page: true,
252
- skin: 'line',
253
- });
254
-
255
-
256
- var sort = {}, search = data;
257
-
258
- table.on('sort(contact_product_table)', function (obj) {
259
- var data = form.val("search_form");
260
- sort.field = obj.field;
261
- sort.order = obj.type;
262
- table.reload('contact_product_table', {
263
- url: '/missions/businesses',
264
- initSort: obj,
265
- where: {
266
- sort: sort,
267
- q: search
268
- }
269
- });
270
- })
271
-
272
- // 监听搜索操作
273
- form.on('submit(search_bussiness_contract)', function (data) {
274
- if (search['clazz']) {
275
- data.field['clazz'] = search['clazz']
276
- }
277
- search = data.field
278
- table.reload('contact_product_table', {
279
- url: '/missions/contracts',
280
- page: {
281
- curr: 1
282
- },
283
- where: {q: search, sort: sort}
284
- }, 'data');
285
-
286
- return false;
287
- });
288
-
289
- form.on('submit(reset_business_search)', function (data) {
290
- var field = data.field;
291
- form.val('search_form', {
292
- name: '', department: '', staff_id: '', business_type: '', business_step: '',
293
- place_id: '', date: '', area: '', invitation_at: '', business_year: '', number: ''
294
- })
295
- business_type_list.setValue([])
296
- business_step_list.setValue([])
297
- index_place_list.setValue([])
298
- return false;
299
- });
300
-
301
- table.on('tool(contact_product_table)', function (obj) {
302
- var data = obj.data;
303
- id = data.id
304
- if (obj.event === 'add_event') { // 监听添加操作
305
- business_id = data.id
306
- var content = miniPage.getHrefContent('/missions/contracts/new_follow_up?id=' + data.id);
307
- var openWH = miniPage.getOpenWidthHeight();
308
- new_follow_index = layer.open({
309
- title: '添加合同跟进记录',
310
- type: 1,
311
- shade: 0.2,
312
- maxmin: true,
313
- shadeClose: true,
314
- area: [openWH[0] + 'px', openWH[1] + 'px'],
315
- offset: [openWH[2] + 'px', openWH[3] + 'px'],
316
- content: content,
317
- success: function (layero, index) {
318
- form.render('select');
319
- }
320
- });
321
- $(window).on("resize", function () {
322
- layer.full(new_follow_index);
323
- });
324
- } else if (obj.event === 'assign') {
325
- var content = miniPage.getHrefContent('/missions/contracts/' + id + '/assign');
326
- var openWH = miniPage.getOpenWidthHeight();
327
- name = data.name;
328
- sindex = layer.open({
329
- title: '指派合同【' + name + "】售后工程师",
330
- type: 1,
331
- shade: 0.2,
332
- maxmin: true,
333
- shadeClose: true,
334
- area: ['600px', '600px'],
335
- content: content
336
- });
337
- $(window).on("resize", function () {
338
- layer.full(sindex);
339
- });
340
- return false;
341
- }
342
- });
343
-
344
-
345
- });
346
- </script>
347
- <style>
348
- .layui-table-tool-temp{
349
- padding-right: 30px; !important;
350
- }
351
- .layui-table-fixed .layui-table-body {
352
- height: auto!important;
353
- }
354
- .layui-table-fixed.layui-hide {
355
- display: block!important;
356
- }
357
-
358
- </style>
@@ -1 +0,0 @@
1
- $("#contract_product_wraper").html("<%= j render 'product_list' %>");