educode_sales 0.9.99 → 1.0.0
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 +4 -4
- data/app/controllers/educode_sales/businesses_controller.rb +31 -25
- data/app/controllers/educode_sales/contracts_controller.rb +1 -1
- data/app/controllers/educode_sales/home_controller.rb +11 -5
- data/app/controllers/educode_sales/sales_details_controller.rb +1 -1
- data/app/helpers/educode_sales/sale_trends_helper.rb +4 -4
- data/app/models/educode_sales/business.rb +4 -4
- data/app/models/educode_sales/sales_detail.rb +1 -0
- data/app/views/educode_sales/businesses/edit.html.erb +71 -128
- data/app/views/educode_sales/contracts/new_sales_detail.html.erb +6 -0
- data/app/views/educode_sales/home/search_customer.json.jbuilder +7 -2
- data/app/views/educode_sales/sales_details/_index.html.erb +4 -1
- data/app/views/educode_sales/sales_details/index.json.jbuilder +1 -0
- data/db/migrate/20230523115007_add_proprietorship_educode_sales_sales_details.rb +18 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 424093f43324c2f4af4d4989f4ff829a9cf10bd9ad1ea4b42bd46c86031c8aed
|
4
|
+
data.tar.gz: cc722d4ff970b1cfb81d06f46be5b4463da9bb129ca5710dbcfc93c91e893de6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fe4801f732d17d747152c861f101527f3160c71c7d63168bd1beec408b5f4b19f4a3f0355f1283edb5d2e125bf5e836f9b9f6ad68eff30f50095a24cb0371ef
|
7
|
+
data.tar.gz: a975715e196da44618cad0d5d6cc453f3aefbf236b58f51473b2ec2f4b1b60a6259bcd705a1bef425f844edb5d9140765cbc842f3bda03c5188a952f654e50a1
|
@@ -429,31 +429,24 @@ module EducodeSales
|
|
429
429
|
gon.department = {value: @business.department_id, name: "#{@business.department&.school&.name}-#{@business.department&.name}"}
|
430
430
|
gon.value = @business.department_id
|
431
431
|
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
gon.
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
gon.place = [{value: @business.place_id, name: @business.place.name}]
|
444
|
-
gon.place_id = @business.place_id
|
445
|
-
else
|
446
|
-
gon.place = []
|
447
|
-
gon.place_id = ''
|
448
|
-
end
|
449
|
-
|
450
|
-
if @business.customer
|
451
|
-
gon.customer = [{value: @business.customer_id, name: "#{@business.customer.school.name} #{@business.customer.name}"}]
|
452
|
-
gon.customer_id = @business.customer_id
|
432
|
+
if ['会议活动', '渠道代理', '客户'].include?(@business.source_way) && @business.sourcable.present?
|
433
|
+
if @business.source_way == '客户'
|
434
|
+
gon.sourcable = [{name: "#{@business.sourcable.school.name} #{@business.sourcable.name}", value: @business.sourcable_id}]
|
435
|
+
else
|
436
|
+
gon.sourcable = [{name: @business.sourcable.name, value: @business.sourcable_id}]
|
437
|
+
end
|
438
|
+
|
439
|
+
gon.sourcable_id = @business.sourcable_id
|
440
|
+
elsif @business.sourcable_type.present?
|
441
|
+
gon.sourcable = [{value: @business.sourcable_type, name: @business.sourcable_type}]
|
442
|
+
gon.sourcable_id = @business.sourcable_type
|
453
443
|
else
|
454
|
-
gon.
|
455
|
-
gon.
|
444
|
+
gon.sourcable = []
|
445
|
+
gon.sourcable_id = ''
|
456
446
|
end
|
447
|
+
gon.sourcable_type = @business.sourcable_type
|
448
|
+
gon.source_way = @business.source_way
|
449
|
+
|
457
450
|
|
458
451
|
render layout: false
|
459
452
|
end
|
@@ -480,10 +473,23 @@ module EducodeSales
|
|
480
473
|
end
|
481
474
|
end
|
482
475
|
end
|
476
|
+
if params[:sourcable_type].present?
|
477
|
+
if params[:source_way] == '会议活动'
|
478
|
+
params[:sourcable_type] = 'EducodeSales::Activity'
|
479
|
+
elsif params[:source_way] == '渠道代理'
|
480
|
+
params[:sourcable_type] = 'EducodeSales::Place'
|
481
|
+
elsif params[:source_way] == '客户'
|
482
|
+
params[:sourcable_type] = 'EducodeSales::Department'
|
483
|
+
else
|
484
|
+
params[:sourcable_id] = ""
|
485
|
+
end
|
486
|
+
end
|
487
|
+
if params[:sourcable_type].blank?
|
488
|
+
params[:sourcable_id] = ""
|
489
|
+
end
|
483
490
|
|
484
491
|
if business.update(name: params[:name], department_id: department.id, source: params[:source], school_id: department.school_id,
|
485
|
-
|
486
|
-
company_source: params[:company_source], phone: params[:phone], email: params[:email], partner: params[:partner], invite_info: params[:invite_info], friend: params[:friend]
|
492
|
+
sourcable_type: params[:sourcable_type], sourcable_id: params[:sourcable_id], source_way: params[:source_way]
|
487
493
|
)
|
488
494
|
if params[:merge_business_ids].present?
|
489
495
|
merge_business = Business.where(id: params[:merge_business_ids].split(","))
|
@@ -514,7 +514,7 @@ module EducodeSales
|
|
514
514
|
end
|
515
515
|
|
516
516
|
def sales_detail_params
|
517
|
-
params.permit(:amount, :price, :total_price, :custom_clazz, :delivery_date, :product_catalog_id, :business_id)
|
517
|
+
params.permit(:amount, :price, :total_price, :custom_clazz, :delivery_date, :product_catalog_id, :business_id, :proprietorship)
|
518
518
|
end
|
519
519
|
|
520
520
|
end
|
@@ -98,11 +98,17 @@ module EducodeSales
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def search_customer
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
101
|
+
if params[:type] == 'customer'
|
102
|
+
part_a_ids = EducodeSales::CustomerFollow.all.pluck(:school_id)
|
103
|
+
part_b_ids = EducodeSales::Business.pluck(:school_id)
|
104
|
+
school_ids = (part_a_ids + part_b_ids + EducodeSales::CustomerAdd.all.pluck(:school_id)).uniq
|
105
|
+
@data = Department.joins(:school).where("schools.name like ?", "%#{params[:q]}%").where("schools.id in (?)", school_ids).limit(20)
|
106
|
+
elsif params[:type] == 'active'
|
107
|
+
@data = Activity.where("name like ?", "%#{params[:q]}%").limit(20)
|
108
|
+
elsif params[:type] == 'place'
|
109
|
+
@data = EducodeSales::Place
|
110
|
+
@data = @data.where("name like :q", q: "%#{params[:q].strip}%").limit(20)
|
111
|
+
end
|
106
112
|
end
|
107
113
|
|
108
114
|
end
|
@@ -145,7 +145,7 @@ module EducodeSales
|
|
145
145
|
source_method: ods.row(r+2)[14].to_s.strip,
|
146
146
|
supplier: ods.row(r+2)[16].to_s.strip)
|
147
147
|
if business.present? && product_catalog.present?
|
148
|
-
SalesDetail.create(staff_id: @current_admin.id, business_id: business.id, product_catalog_id: product_catalog.id, price: ods.row(r+2)[12].to_s.strip, amount: ods.row(r+2)[11].to_s.strip, total_price: ods.row(r+2)[13].to_s.strip, custom_clazz: ods.row(r+2)[15].to_s.strip, delivery_date: ods.row(r+2)[17].to_s.strip)
|
148
|
+
SalesDetail.create(staff_id: @current_admin.id, business_id: business.id, product_catalog_id: product_catalog.id, price: ods.row(r+2)[12].to_s.strip, amount: ods.row(r+2)[11].to_s.strip, total_price: ods.row(r+2)[13].to_s.strip, custom_clazz: ods.row(r+2)[15].to_s.strip, delivery_date: ods.row(r+2)[17].to_s.strip, proprietorship: ods.row(r+2)[18].to_s.strip)
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
@@ -46,7 +46,7 @@ module EducodeSales
|
|
46
46
|
{
|
47
47
|
type: type,
|
48
48
|
label: select,
|
49
|
-
data: data,
|
49
|
+
data: data.map { |d| d.round(2)},
|
50
50
|
backgroundColor:
|
51
51
|
backgroundColor,
|
52
52
|
borderColor:
|
@@ -114,7 +114,7 @@ module EducodeSales
|
|
114
114
|
{
|
115
115
|
type: type,
|
116
116
|
label: select,
|
117
|
-
data: data,
|
117
|
+
data: data.map { |d| d.round(2)},
|
118
118
|
backgroundColor:
|
119
119
|
backgroundColor,
|
120
120
|
borderColor:
|
@@ -179,7 +179,7 @@ module EducodeSales
|
|
179
179
|
{
|
180
180
|
type: type,
|
181
181
|
label: select,
|
182
|
-
data: data,
|
182
|
+
data: data.map { |d| d.round(2)},
|
183
183
|
backgroundColor:
|
184
184
|
backgroundColor,
|
185
185
|
borderColor:
|
@@ -228,7 +228,7 @@ module EducodeSales
|
|
228
228
|
{
|
229
229
|
type: type,
|
230
230
|
label: select,
|
231
|
-
data: data,
|
231
|
+
data: data.map { |d| d.round(2)},
|
232
232
|
backgroundColor:
|
233
233
|
backgroundColor,
|
234
234
|
borderColor:
|
@@ -12,10 +12,6 @@ module EducodeSales
|
|
12
12
|
belongs_to :p_sale_staff, class_name: 'Staff', optional: true
|
13
13
|
belongs_to :p_deleter, class_name: 'Staff', optional: true
|
14
14
|
|
15
|
-
belongs_to :place, class_name: 'Place', optional: true
|
16
|
-
belongs_to :customer, class_name: 'Department', optional: true
|
17
|
-
belongs_to :activity, class_name: 'Activity', optional: true
|
18
|
-
|
19
15
|
has_many :sale_plans
|
20
16
|
has_many :follow_ups
|
21
17
|
has_many :business_clazz_changes
|
@@ -23,8 +19,12 @@ module EducodeSales
|
|
23
19
|
has_many :business_watches, dependent: :destroy
|
24
20
|
has_many :business_histories, dependent: :destroy
|
25
21
|
|
22
|
+
belongs_to :sourcable, :polymorphic => true, optional: true
|
23
|
+
|
26
24
|
has_many :assign_staffs, as: :sourcable, dependent: :destroy # 售后人员
|
27
25
|
|
26
|
+
enum source_way: ['会议活动', '公司资源', '400电话', '商务邮箱', '渠道代理', '合作伙伴', '招标信息', '客户', '朋友']
|
27
|
+
|
28
28
|
# 关联关注
|
29
29
|
has_many :users, :class_name => 'EducodeSales::BusinessRelationShip', foreign_key: 'business_id', :dependent => :destroy
|
30
30
|
|
@@ -17,67 +17,14 @@
|
|
17
17
|
<br>
|
18
18
|
<div class="layui-inline" style="padding-top: 20px">
|
19
19
|
<label class="layui-form-label required">商机来源</label>
|
20
|
-
<
|
21
|
-
|
22
|
-
<div class="layui-inline" style="padding-top: 20px">
|
23
|
-
<p style="padding-left: 40px">请填写提供本商机的人名(如‘张明’);如果为非头歌用户,请增加单位信息(如‘张明,华为公司’)</p>
|
24
|
-
</div>
|
25
|
-
<div class="layui-form-item" style="padding-top: 20px">
|
26
|
-
<label class="layui-form-label">会议活动</label>
|
27
|
-
<div class="layui-input-inline" style="line-height: 38px;">
|
28
|
-
<div id="activity" style="width: 300px"></div>
|
29
|
-
</div>
|
30
|
-
</div>
|
31
|
-
<div class="layui-form-item">
|
32
|
-
<label class="layui-form-label">渠道代理:</label>
|
33
|
-
<div class="layui-input-inline" style="line-height: 38px;">
|
34
|
-
<div id="place" style="width: 300px"></div>
|
35
|
-
</div>
|
36
|
-
</div>
|
37
|
-
<div class="layui-form-item">
|
38
|
-
<label class="layui-form-label">客户</label>
|
39
|
-
<div class="layui-input-inline" style="line-height: 38px;">
|
40
|
-
<div id="customer" style="width: 300px"></div>
|
41
|
-
</div>
|
42
|
-
</div>
|
43
|
-
<div class="layui-inline">
|
44
|
-
<label class="layui-form-label">公司资源</label>
|
45
|
-
<div class="layui-input-block">
|
46
|
-
<input type="text" name="company_source" autocomplete="off" class="layui-input" value="<%= @business.company_source %>">
|
47
|
-
</div>
|
48
|
-
</div>
|
49
|
-
<div class="layui-inline">
|
50
|
-
<label class="layui-form-label">400电话</label>
|
51
|
-
<div class="layui-input-block">
|
52
|
-
<input type="text" name="phone" autocomplete="off" class="layui-input" value="<%= @business.phone %>">
|
53
|
-
</div>
|
54
|
-
</div>
|
55
|
-
<div class="layui-inline">
|
56
|
-
<label class="layui-form-label">商务邮箱</label>
|
57
|
-
<div class="layui-input-block">
|
58
|
-
<input type="text" name="email" autocomplete="off" class="layui-input" value="<%= @business.email %>">
|
59
|
-
</div>
|
60
|
-
</div>
|
61
|
-
|
62
|
-
<div class="layui-inline">
|
63
|
-
<label class="layui-form-label">合作伙伴</label>
|
64
|
-
<div class="layui-input-block">
|
65
|
-
<input type="text" name="partner" autocomplete="off" class="layui-input" value="<%= @business.partner %>">
|
20
|
+
<div class="layui-inline">
|
21
|
+
<%= select_tag "source_way", options_for_select(EducodeSales::Business.source_ways.keys, @business.source_way), { include_blank: true, "lay-filter": 'source_id', "lay-verify": "required" } %>
|
66
22
|
</div>
|
67
|
-
|
68
|
-
|
69
|
-
<label class="layui-form-label">招标信息</label>
|
70
|
-
<div class="layui-input-block">
|
71
|
-
<input type="text" name="invite_info" autocomplete="off" class="layui-input" value="<%= @business.invite_info %>">
|
23
|
+
<div class="layui-inline" style="line-height: 38px;" id="source_wraper">
|
24
|
+
<div id="customer_id" style="width: 360px"></div>
|
72
25
|
</div>
|
73
26
|
</div>
|
74
27
|
|
75
|
-
<div class="layui-inline">
|
76
|
-
<label class="layui-form-label">朋友</label>
|
77
|
-
<div class="layui-input-block">
|
78
|
-
<input type="text" name="friend" autocomplete="off" class="layui-input" value="<%= @business.friend %>">
|
79
|
-
</div>
|
80
|
-
</div>
|
81
28
|
<% if can?(:merge_business, EducodeSales::Business) %>
|
82
29
|
<div class="layui-inline-block" style="padding-top: 20px">
|
83
30
|
<label class="layui-form-label ">合并商机</label>
|
@@ -149,6 +96,46 @@
|
|
149
96
|
if (gon.is_secret) {
|
150
97
|
$("#watch_ids_wraper").removeClass("layui-hide")
|
151
98
|
}
|
99
|
+
var source_way = gon.source_way;
|
100
|
+
form.on('select(source_id)', function(data){
|
101
|
+
source_way = data.value;
|
102
|
+
setSourceWay(data.value);
|
103
|
+
$("#" + customer_select._input)[0].value = "";
|
104
|
+
});
|
105
|
+
|
106
|
+
|
107
|
+
function setSourceWay(value) {
|
108
|
+
if (value == '400电话' || value == '商务邮箱') {
|
109
|
+
$("#source_wraper").hide()
|
110
|
+
} else {
|
111
|
+
$("#source_wraper").show()
|
112
|
+
var text = "";
|
113
|
+
switch (value) {
|
114
|
+
case '会议活动':
|
115
|
+
text = "请选择活动运营";
|
116
|
+
break;
|
117
|
+
case '公司资源':
|
118
|
+
text = "请填写公司领导、部门其他同事姓名";
|
119
|
+
break;
|
120
|
+
case '渠道代理':
|
121
|
+
text = "请选择渠道";
|
122
|
+
break;
|
123
|
+
case '合作伙伴':
|
124
|
+
text = "请填写合作伙伴公司名称";
|
125
|
+
break;
|
126
|
+
case '招标信息':
|
127
|
+
text = "请填写招标信息";
|
128
|
+
break;
|
129
|
+
case '客户':
|
130
|
+
text = "请选择客户";
|
131
|
+
break;
|
132
|
+
case '朋友':
|
133
|
+
text = "请填写姓名";
|
134
|
+
break;
|
135
|
+
}
|
136
|
+
$("#" + customer_select._input)[0].placeholder = text;
|
137
|
+
}
|
138
|
+
}
|
152
139
|
|
153
140
|
form.render();
|
154
141
|
var department_id = gon.value;
|
@@ -172,6 +159,7 @@
|
|
172
159
|
request.get('missions/search?type=department&q=' + value, {}, function (res) {
|
173
160
|
return cb(res)
|
174
161
|
})
|
162
|
+
|
175
163
|
}
|
176
164
|
});
|
177
165
|
|
@@ -189,90 +177,47 @@
|
|
189
177
|
data: []
|
190
178
|
})
|
191
179
|
|
192
|
-
var activity_id = gon.activity_id;
|
193
|
-
var activity_select = selectInput.render({
|
194
|
-
elem: '#activity',
|
195
|
-
name: 'activity_id', // 渲染的input的name值
|
196
|
-
layFilter: 'test', //同layui form参数lay-filter
|
197
|
-
// layVerify: 'required', //同layui form参数lay-verify
|
198
|
-
layVerType: 'tips', // 同layui form参数lay-verType
|
199
|
-
layReqText: '请填写文本', //同layui form参数lay-ReqText
|
200
|
-
initValue: gon.activity_id, // 渲染初始化默认值
|
201
|
-
hasSelectIcon: false,
|
202
|
-
placeholder: '请输入会议活动', // 渲染的inputplaceholder值
|
203
|
-
data: gon.activity,
|
204
|
-
remoteSearch: true, // 是否启用远程搜索 默认是false,和远程搜索回调保存同步
|
205
|
-
remoteMethod: function (value, cb) { // 远程搜索的回调函数
|
206
|
-
if (!value) {
|
207
|
-
activity_id = "";
|
208
|
-
return cb([]);
|
209
|
-
}
|
210
|
-
request.get('missions/search_activity?q=' + value, {}, function (res) {
|
211
|
-
if (res.data.length == 0) {
|
212
|
-
activity_select.emptyValue();
|
213
|
-
return cb([])
|
214
|
-
}
|
215
|
-
return cb(res)
|
216
|
-
})
|
217
|
-
}
|
218
|
-
});
|
219
180
|
|
220
|
-
|
221
|
-
var place_select = selectInput.render({
|
222
|
-
elem: '#place',
|
223
|
-
name: 'place_id', // 渲染的input的name值
|
224
|
-
layFilter: 'test', //同layui form参数lay-filter
|
225
|
-
// layVerify: 'required', //同layui form参数lay-verify
|
226
|
-
layVerType: 'tips', // 同layui form参数lay-verType
|
227
|
-
layReqText: '请填写文本', //同layui form参数lay-ReqText
|
228
|
-
initValue: gon.place_id, // 渲染初始化默认值
|
229
|
-
hasSelectIcon: false,
|
230
|
-
placeholder: '请输入渠道代理', // 渲染的inputplaceholder值
|
231
|
-
data: gon.place,
|
232
|
-
remoteSearch: true, // 是否启用远程搜索 默认是false,和远程搜索回调保存同步
|
233
|
-
remoteMethod: function (value, cb) { // 远程搜索的回调函数
|
234
|
-
if (!value) {
|
235
|
-
place_id = "";
|
236
|
-
return cb([]);
|
237
|
-
}
|
238
|
-
request.get('missions/sales_place?q=' + value, {}, function (res) {
|
239
|
-
if (res.data.length == 0) {
|
240
|
-
place_select.emptyValue();
|
241
|
-
return cb([])
|
242
|
-
}
|
243
|
-
return cb(res)
|
244
|
-
})
|
245
|
-
}
|
246
|
-
});
|
247
|
-
|
248
|
-
var customer_id = gon.customer_id;
|
181
|
+
var sourcable_id = gon.sourcable_id;
|
249
182
|
var customer_select = selectInput.render({
|
250
|
-
elem: '#
|
251
|
-
name: '
|
183
|
+
elem: '#customer_id',
|
184
|
+
name: 'sourcable_type', // 渲染的input的name值
|
252
185
|
layFilter: 'test', //同layui form参数lay-filter
|
253
186
|
// layVerify: 'required', //同layui form参数lay-verify
|
254
187
|
layVerType: 'tips', // 同layui form参数lay-verType
|
255
188
|
layReqText: '请填写文本', //同layui form参数lay-ReqText
|
256
|
-
initValue: gon.
|
189
|
+
initValue: gon.sourcable_id, // 渲染初始化默认值
|
257
190
|
hasSelectIcon: false,
|
258
|
-
placeholder: '
|
259
|
-
data: gon.
|
191
|
+
placeholder: '请输入商机来源', // 渲染的inputplaceholder值
|
192
|
+
data: gon.sourcable,
|
260
193
|
remoteSearch: true, // 是否启用远程搜索 默认是false,和远程搜索回调保存同步
|
261
194
|
remoteMethod: function (value, cb) { // 远程搜索的回调函数
|
262
195
|
if (!value) {
|
263
|
-
|
196
|
+
sourcable_id = "";
|
264
197
|
return cb([]);
|
265
198
|
}
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
199
|
+
if (['会议活动', '渠道代理', '客户'].includes(source_way)) {
|
200
|
+
var type = "";
|
201
|
+
if (source_way == '客户') {
|
202
|
+
type = 'customer';
|
203
|
+
} else if (source_way == '渠道代理') {
|
204
|
+
type = 'place';
|
205
|
+
} else if (source_way == '会议活动') {
|
206
|
+
type = 'active';
|
270
207
|
}
|
271
|
-
|
272
|
-
|
208
|
+
request.get('missions/search_customer?q=' + value + "&type=" + type, {}, function (res) {
|
209
|
+
if (res.data.length == 0) {
|
210
|
+
customer_select.emptyValue();
|
211
|
+
return cb([])
|
212
|
+
}
|
213
|
+
return cb(res)
|
214
|
+
})
|
215
|
+
}
|
273
216
|
}
|
274
217
|
});
|
275
218
|
|
219
|
+
setSourceWay(source_way);
|
220
|
+
|
276
221
|
// 当前弹出层,防止ID被覆盖
|
277
222
|
var parentIndex = layer.index;
|
278
223
|
|
@@ -285,9 +230,7 @@
|
|
285
230
|
var field = data.field;
|
286
231
|
field.department_id = department.getValue() || department_id;
|
287
232
|
field.merge_business_ids = data.field.merge_business_ids;
|
288
|
-
field.
|
289
|
-
field.place_id = place_select.getValue() || place_id;
|
290
|
-
field.customer_id = customer_select.getValue() || customer_id;
|
233
|
+
field.sourcable_id = customer_select.getValue() || sourcable_id;
|
291
234
|
request.authPut("missions/businesses/" + parent.id, field, function (res) {
|
292
235
|
if (res.success == false) {
|
293
236
|
layer.alert(res.msg)
|
@@ -44,6 +44,12 @@
|
|
44
44
|
<input type="text" name="delivery_date" value="" class="layui-input" lay-verify="required" id="delivery_date">
|
45
45
|
</div>
|
46
46
|
</div>
|
47
|
+
<div class="layui-inline">
|
48
|
+
<label class="layui-form-label required">知识产权归属:</label>
|
49
|
+
<div class="layui-input-inline">
|
50
|
+
<%= select_tag "proprietorship", options_for_select(EducodeSales::SalesDetail.proprietorships.keys), { 'lay-filter': 'proprietorship', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
|
51
|
+
</div>
|
52
|
+
</div>
|
47
53
|
</div>
|
48
54
|
<div class="layui-form-item">
|
49
55
|
<div class="layui-input-block">
|
@@ -1,7 +1,12 @@
|
|
1
1
|
json.data do
|
2
2
|
json.array! @data do |d|
|
3
|
-
|
4
|
-
|
3
|
+
if params[:type] == 'customer'
|
4
|
+
json.value d.id
|
5
|
+
json.name "#{d.school.name} #{d.name}"
|
6
|
+
else
|
7
|
+
json.value d.id
|
8
|
+
json.name d.name
|
9
|
+
end
|
5
10
|
end
|
6
11
|
end
|
7
12
|
json.code 0
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class AddProprietorshipEducodeSalesSalesDetails < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
add_column :educode_sales_sales_details, :proprietorship, :integer
|
4
|
+
add_column :educode_sales_businesses, :source_way, :integer
|
5
|
+
add_column :educode_sales_businesses, :sourcable_type, :string
|
6
|
+
add_column :educode_sales_businesses, :sourcable_id, :integer
|
7
|
+
|
8
|
+
remove_column :educode_sales_businesses, :activity_id, :integer
|
9
|
+
remove_column :educode_sales_businesses, :place_id, :integer
|
10
|
+
remove_column :educode_sales_businesses, :customer_id, :integer
|
11
|
+
remove_column :educode_sales_businesses, :company_source, :string
|
12
|
+
remove_column :educode_sales_businesses, :phone, :string
|
13
|
+
remove_column :educode_sales_businesses, :email, :string
|
14
|
+
remove_column :educode_sales_businesses, :partner, :string
|
15
|
+
remove_column :educode_sales_businesses, :invite_info, :string
|
16
|
+
remove_column :educode_sales_businesses, :friend, :string
|
17
|
+
end
|
18
|
+
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.
|
4
|
+
version: 1.0.0
|
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-
|
11
|
+
date: 2023-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -682,6 +682,7 @@ files:
|
|
682
682
|
- db/migrate/20230502142912_create_educode_sales_product_catalogs.rb
|
683
683
|
- db/migrate/20230510144317_create_educode_sales_sales_details.rb
|
684
684
|
- db/migrate/20230520023902_add_activity_educode_sales_business.rb
|
685
|
+
- db/migrate/20230523115007_add_proprietorship_educode_sales_sales_details.rb
|
685
686
|
- lib/educode_sales.rb
|
686
687
|
- lib/educode_sales/engine.rb
|
687
688
|
- lib/educode_sales/version.rb
|
@@ -705,7 +706,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
705
706
|
- !ruby/object:Gem::Version
|
706
707
|
version: '0'
|
707
708
|
requirements: []
|
708
|
-
rubygems_version: 3.0.
|
709
|
+
rubygems_version: 3.0.9
|
709
710
|
signing_key:
|
710
711
|
specification_version: 4
|
711
712
|
summary: Summary of EducodeSales.
|