educode_sales 0.9.60 → 0.9.61
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/activities_controller.rb +50 -4
- data/app/controllers/educode_sales/businesses_controller.rb +10 -0
- data/app/controllers/educode_sales/follow_ups_controller.rb +6 -0
- data/app/controllers/educode_sales/upload_files_controller.rb +1 -1
- data/app/models/educode_sales/activity.rb +2 -0
- data/app/views/educode_sales/activities/edit.html.erb +28 -2
- data/app/views/educode_sales/activities/index.html.erb +59 -0
- data/app/views/educode_sales/activities/new.html.erb +19 -9
- data/app/views/educode_sales/businesses/_follows.html.erb +34 -1
- data/app/views/educode_sales/businesses/index.html.erb +55 -20
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
- data/config/routes.rb +3 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +5 -6
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dda4d36517f72a9d366af24dfad85dda17417676ff115c61337b4611b484474a
|
4
|
+
data.tar.gz: b7febeed63e1933ce7509f4ba708a0fbad03f543f4b71461d2b6994abafb6458
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd9c33cb2663078a0cb34d5114c5264b92d7146c55c9a80c2699b4010f0215cf37909d5746666697bb3b89bb805063fa3d13cacd96844f0e9b340ac80ba640e7
|
7
|
+
data.tar.gz: 0d03669ffb838bead64df8769417fa5ae627735676f941d44f089fcd7553ed57130249519ca172cede3484eaf757030f0beb2788db68816fa14aee08969f4064
|
@@ -5,15 +5,37 @@ module EducodeSales
|
|
5
5
|
def index
|
6
6
|
respond_to do |format|
|
7
7
|
format.html do
|
8
|
+
@staffs = Staff.all.map { |d| [ d.user&.real_name, d.id ]}
|
8
9
|
end
|
9
10
|
format.json do
|
10
11
|
@activities = Activity
|
12
|
+
if params[:q].present?
|
13
|
+
if params[:q][:staff_id].present?
|
14
|
+
@activities = @activities.where(staff_id: params[:q][:staff_id])
|
15
|
+
end
|
16
|
+
if params[:q][:clazz_id].present?
|
17
|
+
@activities = @activities.where(clazz_id: params[:q][:clazz_id])
|
18
|
+
end
|
19
|
+
|
20
|
+
if params[:q][:name].present?
|
21
|
+
@activities = @activities.where("educode_sales_activities.name like ?", "%#{params[:q][:name]}%")
|
22
|
+
end
|
23
|
+
if params[:q][:manage].present?
|
24
|
+
@activities = @activities.joins("JOIN educode_sales_activity_staffs AS m ON m.activity_id = educode_sales_activities.id AND m.clazz_id = 0").where("m.staff_id = ?", params[:q][:manage].to_i)
|
25
|
+
end
|
26
|
+
if params[:q][:assists].present?
|
27
|
+
@activities = @activities.joins("JOIN educode_sales_activity_staffs AS a ON a.activity_id = educode_sales_activities.id AND a.clazz_id = 1").where("a.staff_id = ?", params[:q][:assists].to_i)
|
28
|
+
end
|
29
|
+
if params[:q][:expert].present?
|
30
|
+
@activities = @activities.joins("JOIN educode_sales_activity_staffs AS e ON e.activity_id = educode_sales_activities.id AND e.clazz_id = 2").where("e.name like ?", "%#{params[:q][:expert]}%")
|
31
|
+
end
|
32
|
+
end
|
11
33
|
if params[:sort].present? && params[:sort][:field]
|
12
34
|
@activities = @activities.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
13
35
|
else
|
14
36
|
@activities = @activities.order("created_at desc")
|
15
37
|
end
|
16
|
-
@activities = @activities.page(params[:page]).per(params[:limit])
|
38
|
+
@activities = @activities.distinct.page(params[:page]).per(params[:limit])
|
17
39
|
end
|
18
40
|
end
|
19
41
|
end
|
@@ -53,9 +75,11 @@ module EducodeSales
|
|
53
75
|
EducodeSales::ActivityStaff.create(name: d[1], clazz_id: 'expert', activity_id: activity.id)
|
54
76
|
end
|
55
77
|
end
|
56
|
-
|
57
|
-
|
58
|
-
|
78
|
+
if params[:attachment_id].present?
|
79
|
+
attachment = @current_admin.user.attachments.find(params[:attachment_id])
|
80
|
+
attachment.container = activity
|
81
|
+
attachment.save
|
82
|
+
end
|
59
83
|
render_success
|
60
84
|
else
|
61
85
|
render_failure activity
|
@@ -86,6 +110,23 @@ module EducodeSales
|
|
86
110
|
activity.manages = manages
|
87
111
|
activity.assists = assists
|
88
112
|
activity.experts = experts
|
113
|
+
|
114
|
+
if params[:attachment_id].present?
|
115
|
+
if activity.attachment&.id && activity.attachment&.id != params[:attachment_id].to_i
|
116
|
+
file_path = File.join(Rails.root, "public", "files", 'educode_sales', activity.attachment.disk_filename)
|
117
|
+
File.delete(file_path) if File.exist?(file_path)
|
118
|
+
activity.attachment.destroy
|
119
|
+
end
|
120
|
+
attachment = @current_admin.user.attachments.find(params[:attachment_id])
|
121
|
+
attachment.container = activity
|
122
|
+
attachment.save
|
123
|
+
else
|
124
|
+
if activity.attachment
|
125
|
+
file_path = File.join(Rails.root, "public", "files", 'educode_sales', activity.attachment.disk_filename)
|
126
|
+
File.delete(file_path) if File.exist?(file_path)
|
127
|
+
activity.attachment.destroy
|
128
|
+
end
|
129
|
+
end
|
89
130
|
if activity.save
|
90
131
|
render_success
|
91
132
|
else
|
@@ -95,6 +136,11 @@ module EducodeSales
|
|
95
136
|
|
96
137
|
def destroy
|
97
138
|
activity = Activity.find(params[:id])
|
139
|
+
if activity.attachment
|
140
|
+
file_path = File.join(Rails.root, "public", "files", 'educode_sales', activity.attachment.disk_filename)
|
141
|
+
File.delete(file_path) if File.exist?(file_path)
|
142
|
+
activity.attachment.destroy
|
143
|
+
end
|
98
144
|
activity.destroy
|
99
145
|
render_success
|
100
146
|
rescue ActiveRecord::DeleteRestrictionError => e
|
@@ -1080,6 +1080,16 @@ module EducodeSales
|
|
1080
1080
|
end
|
1081
1081
|
end
|
1082
1082
|
|
1083
|
+
def update_advise
|
1084
|
+
business = Business.find(params[:id])
|
1085
|
+
if business.last_follow_up.present?
|
1086
|
+
business.last_follow_up.update(advise: params[:content])
|
1087
|
+
render_success
|
1088
|
+
else
|
1089
|
+
render_failure '无跟进动态,暂不能添加建议'
|
1090
|
+
end
|
1091
|
+
end
|
1092
|
+
|
1083
1093
|
private
|
1084
1094
|
|
1085
1095
|
def load_business
|
@@ -44,7 +44,7 @@ module EducodeSales
|
|
44
44
|
else
|
45
45
|
logger.info "文件已存在,id = #{@attachment.id}, filename = #{@attachment.filename}"
|
46
46
|
end
|
47
|
-
render json: { success: true, attachment_id: @attachment.id ,filename: @attachment.filename}
|
47
|
+
render json: { success: true, attachment_id: @attachment.id ,filename: @attachment.filename, url: folder + "/" + @attachment.disk_filename}
|
48
48
|
end
|
49
49
|
|
50
50
|
def destroy
|
@@ -8,6 +8,8 @@ module EducodeSales
|
|
8
8
|
has_many :experts , -> {where("educode_sales_activity_staffs.clazz_id = 2")}, dependent: :destroy, class_name: 'ActivityStaff'
|
9
9
|
has_many :activity_staffs
|
10
10
|
|
11
|
+
has_one :attachment, as: :container, dependent: :destroy
|
12
|
+
|
11
13
|
enum clazz_id: ['全国会议', '区域会议', '单校会议', '国赛', '省赛', '夏令营']
|
12
14
|
end
|
13
15
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= Gon::Base.render_data %>
|
2
2
|
<div class="layuimini-main">
|
3
3
|
<form class="layui-form layuimini-form" action="">
|
4
|
-
<div class="layui-form-item"
|
4
|
+
<div class="layui-form-item">
|
5
5
|
<div class="layui-inline">
|
6
6
|
<label class="layui-form-label required">活动名称</label>
|
7
7
|
<div class="layui-input-block">
|
@@ -41,9 +41,18 @@
|
|
41
41
|
<div id="expert_list" style="width: 600px;"></div>
|
42
42
|
</div>
|
43
43
|
</div>
|
44
|
+
</div>
|
45
|
+
<div class="layui-form-item">
|
44
46
|
<div class="layui-inline">
|
45
47
|
<label class="layui-form-label">上传附件</label>
|
46
48
|
<div class="layui-input-block">
|
49
|
+
<%= hidden_field_tag 'attachment_id', @activity.attachment&.id %>
|
50
|
+
<span id="attachment">
|
51
|
+
<% if @activity.attachment %>
|
52
|
+
<%= link_to @activity.attachment&.filename.to_s, "/missions/upload_files/download?id=#{@activity.attachment&.id}", target: '_blank' %>
|
53
|
+
<a href="javascript:;" style="color:red;" id="delete">删除</a>
|
54
|
+
<% end %>
|
55
|
+
</span>
|
47
56
|
<button type="button" class="layui-btn" id="upload_file">上传文件</button>
|
48
57
|
</div>
|
49
58
|
</div>
|
@@ -65,6 +74,7 @@
|
|
65
74
|
request = layui.request,
|
66
75
|
$ = layui.$,
|
67
76
|
xmSelect = layui.xmSelect,
|
77
|
+
upload = layui.upload,
|
68
78
|
laydate = layui.laydate;
|
69
79
|
|
70
80
|
//常规用法
|
@@ -89,6 +99,18 @@
|
|
89
99
|
}
|
90
100
|
})
|
91
101
|
|
102
|
+
upload.render({
|
103
|
+
elem: '#upload_file',
|
104
|
+
url: '/missions/upload_files',
|
105
|
+
auto: true,
|
106
|
+
accept: 'file',
|
107
|
+
done: function (res) {
|
108
|
+
layer.msg('上传成功');
|
109
|
+
$("#attachment_id").val(res.attachment_id);
|
110
|
+
document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
|
111
|
+
}
|
112
|
+
});
|
113
|
+
|
92
114
|
var staff_manage = xmSelect.render({
|
93
115
|
el: '#staff_manage_list',
|
94
116
|
data: gon.staff_manage,
|
@@ -115,12 +137,16 @@
|
|
115
137
|
} else {
|
116
138
|
cb(res.data);
|
117
139
|
}
|
118
|
-
|
119
140
|
})
|
120
141
|
},
|
121
142
|
data: gon.experts
|
122
143
|
})
|
123
144
|
|
145
|
+
$(body).on("click", "#delete", function() {
|
146
|
+
document.getElementById("attachment").innerHTML = "";
|
147
|
+
$("#attachment_id").val('');
|
148
|
+
})
|
149
|
+
|
124
150
|
//监听提交
|
125
151
|
form.on('submit(data-reset-btn)', function (data) {
|
126
152
|
data.field.staff_manage_id = staff_manage.getValue('value');
|
@@ -7,6 +7,54 @@
|
|
7
7
|
<% end %>
|
8
8
|
</div>
|
9
9
|
</script>
|
10
|
+
<div style="margin: 10px 10px 10px 10px">
|
11
|
+
<form class="layui-form layui-form-pane" lay-filter="search_ideas">
|
12
|
+
<div class="layui-form-item">
|
13
|
+
<div class="layui-inline ">
|
14
|
+
<label class="layui-form-label">活动名称</label>
|
15
|
+
<div class="layui-input-inline">
|
16
|
+
<input type="text" class="layui-input" name="name" autocomplete="off">
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<div class="layui-inline">
|
20
|
+
<label class="layui-form-label">会议类型</label>
|
21
|
+
<div class="layui-input-inline">
|
22
|
+
<%= select_tag "clazz_id", options_for_select(['全国会议', '区域会议', '单校会议', '国赛', '省赛', '夏令营'], ""), { include_blank: true } %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<div class="layui-inline">
|
26
|
+
<label class="layui-form-label">销售经理</label>
|
27
|
+
<div class="layui-input-inline">
|
28
|
+
<%= select_tag "staff_id", options_for_select(@staffs, ""), { include_blank: true } %>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
<div class="layui-inline">
|
32
|
+
<label class="layui-form-label">生态经理</label>
|
33
|
+
<div class="layui-input-inline">
|
34
|
+
<%= select_tag "manage", options_for_select(@staffs, ""), { include_blank: true } %>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
<div class="layui-inline">
|
38
|
+
<label class="layui-form-label">协助人员</label>
|
39
|
+
<div class="layui-input-inline">
|
40
|
+
<%= select_tag "assists", options_for_select(@staffs, ""), { include_blank: true } %>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
<div class="layui-inline">
|
44
|
+
<label class="layui-form-label">报告专家</label>
|
45
|
+
<div class="layui-input-inline">
|
46
|
+
<input type="text" class="layui-input" name="expert" autocomplete="off">
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
<div class="layui-inline">
|
50
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_activity_search">重置
|
51
|
+
</button>
|
52
|
+
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_activity">搜 索
|
53
|
+
</button>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</form>
|
57
|
+
</div>
|
10
58
|
<div class="min-height-table">
|
11
59
|
<table class="layui-hide" id="activities_table" lay-filter="activities_table"></table>
|
12
60
|
</div>
|
@@ -129,6 +177,17 @@
|
|
129
177
|
}
|
130
178
|
});
|
131
179
|
})
|
180
|
+
// 监听搜索操作
|
181
|
+
form.on('submit(search_activity)', function (data) {
|
182
|
+
search = data.field
|
183
|
+
table.reload('activities_table', {
|
184
|
+
page: {
|
185
|
+
curr: 1
|
186
|
+
},
|
187
|
+
where: {q: search, sort: sort}
|
188
|
+
}, 'data');
|
189
|
+
return false;
|
190
|
+
});
|
132
191
|
table.on('toolbar(activities_table)', function (obj) {
|
133
192
|
if (obj.event === 'add') { // 监听添加操作
|
134
193
|
var content = miniPage.getHrefContent('/missions/activities/new');
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= Gon::Base.render_data %>
|
2
2
|
<div class="layuimini-main">
|
3
3
|
<div class="layui-form layuimini-form">
|
4
|
-
<div class="layui-form-item"
|
4
|
+
<div class="layui-form-item">
|
5
5
|
<div class="layui-inline">
|
6
6
|
<label class="layui-form-label required">活动名称</label>
|
7
7
|
<div class="layui-input-block">
|
@@ -44,9 +44,14 @@
|
|
44
44
|
<div id="expert_list" style="width: 600px;"></div>
|
45
45
|
</div>
|
46
46
|
</div>
|
47
|
+
</div>
|
48
|
+
<div class="layui-form-item">
|
47
49
|
<div class="layui-inline">
|
48
50
|
<label class="layui-form-label">上传附件</label>
|
49
51
|
<div class="layui-input-block">
|
52
|
+
<%= hidden_field_tag 'attachment_id' %>
|
53
|
+
<span id="attachment">
|
54
|
+
</span>
|
50
55
|
<button type="button" class="layui-btn" id="upload_file">上传文件</button>
|
51
56
|
</div>
|
52
57
|
</div>
|
@@ -111,17 +116,22 @@
|
|
111
116
|
})
|
112
117
|
|
113
118
|
|
114
|
-
|
115
119
|
upload.render({
|
116
|
-
elem: '#upload_file'
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
120
|
+
elem: '#upload_file',
|
121
|
+
url: '/missions/upload_files',
|
122
|
+
auto: true,
|
123
|
+
accept: 'file',
|
124
|
+
done: function (res) {
|
121
125
|
layer.msg('上传成功');
|
126
|
+
$("#attachment_id").val(res.attachment_id);
|
127
|
+
document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
|
122
128
|
}
|
123
|
-
|
124
|
-
|
129
|
+
});
|
130
|
+
|
131
|
+
$(body).on("click", "#delete", function() {
|
132
|
+
document.getElementById("attachment").innerHTML = "";
|
133
|
+
$("#attachment_id").val('');
|
134
|
+
})
|
125
135
|
form.render();
|
126
136
|
|
127
137
|
// 当前弹出层,防止ID被覆盖
|
@@ -58,6 +58,9 @@
|
|
58
58
|
</script>
|
59
59
|
<script type="text/html" id="currentTableBar_follows">
|
60
60
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">详情</a>
|
61
|
+
<% if can?(:advise, EducodeSales::Business) %>
|
62
|
+
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">团队建议</a>
|
63
|
+
<% end %>
|
61
64
|
</script>
|
62
65
|
<script type="text/html" id="business">
|
63
66
|
<a href="javascript:void(0);" lay-event="business" class="layui-table-link">{{ d.business }}</a>
|
@@ -163,7 +166,7 @@
|
|
163
166
|
},
|
164
167
|
{
|
165
168
|
title: '操作',
|
166
|
-
width:
|
169
|
+
width: 160,
|
167
170
|
toolbar: '#currentTableBar_follows',
|
168
171
|
align: "center",
|
169
172
|
fixed: 'right'
|
@@ -280,6 +283,36 @@
|
|
280
283
|
$(window).on("resize", function () {
|
281
284
|
layer.full(index);
|
282
285
|
});
|
286
|
+
} else if (obj.event == 'add_advise') {
|
287
|
+
layer.open({
|
288
|
+
title: '添加团队建议',
|
289
|
+
closeBtn: 0,
|
290
|
+
type: 1,
|
291
|
+
area: '400px;',
|
292
|
+
id: 'LAY_layuipro',
|
293
|
+
content: '<div class="layui-form" lay-filter="edit_project" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + data.advise + '</textarea></div>' ,
|
294
|
+
btn: ['保存', '取消'],
|
295
|
+
btn1: function(index, l) {
|
296
|
+
if (l.find("textarea").val().trim() == '') {
|
297
|
+
layer.msg('内容不能为空')
|
298
|
+
return false;
|
299
|
+
} else {
|
300
|
+
request.authPut("/missions/follow_ups/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
|
301
|
+
if (res.success == false) {
|
302
|
+
layer.alert(res.msg);
|
303
|
+
} else {
|
304
|
+
layer.close(index);
|
305
|
+
table.reload('teachers_table');
|
306
|
+
}
|
307
|
+
})
|
308
|
+
}
|
309
|
+
|
310
|
+
return false
|
311
|
+
},
|
312
|
+
btn2: function(index, l) {
|
313
|
+
layer.close(index)
|
314
|
+
}
|
315
|
+
});
|
283
316
|
}
|
284
317
|
});
|
285
318
|
|
@@ -172,31 +172,35 @@
|
|
172
172
|
</script>
|
173
173
|
<script type="text/html" id="currentTableBar">
|
174
174
|
<%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business) %>
|
175
|
-
<% if can? :add_follow, EducodeSales::Business %>
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
<% end %>
|
183
|
-
|
175
|
+
<% if can? :add_follow, EducodeSales::Business %>
|
176
|
+
<% if @current_admin.is_admin %>
|
177
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
178
|
+
<% else %>
|
179
|
+
{{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
|
180
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
181
|
+
{{# }}}
|
182
|
+
<% end %>
|
183
|
+
<% end %>
|
184
184
|
<% end %>
|
185
185
|
<%if !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business)%>
|
186
186
|
{{# if (d.self_flag) {}}
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
<% end %>
|
187
|
+
<% if @current_admin.is_admin %>
|
188
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
189
|
+
<% else %>
|
190
|
+
{{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
|
191
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
192
|
+
{{# }}}
|
193
|
+
<% end %>
|
194
194
|
{{# }}}
|
195
195
|
<% end %>
|
196
|
-
<%if can?(:
|
197
|
-
|
198
|
-
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
196
|
+
<% if can?(:advise, EducodeSales::Business) %>
|
197
|
+
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">建议</a>
|
199
198
|
<% end %>
|
199
|
+
|
200
|
+
<%if can?(:update, EducodeSales::Business)%>
|
201
|
+
<%unless !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
|
202
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
203
|
+
<% end %>
|
200
204
|
<% end %>
|
201
205
|
<%if !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
|
202
206
|
{{# if (d.self_flag) {}}
|
@@ -210,6 +214,7 @@
|
|
210
214
|
<a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
211
215
|
{{# }}}
|
212
216
|
<% end %>
|
217
|
+
|
213
218
|
</script>
|
214
219
|
|
215
220
|
<script type="text/html" id="show_keys">
|
@@ -603,7 +608,7 @@
|
|
603
608
|
},
|
604
609
|
{
|
605
610
|
title: '操作',
|
606
|
-
minWidth:
|
611
|
+
minWidth: 270,
|
607
612
|
toolbar: '#currentTableBar',
|
608
613
|
align: "center",
|
609
614
|
fixed: 'right'
|
@@ -1379,6 +1384,36 @@
|
|
1379
1384
|
,cancel: function(){
|
1380
1385
|
}
|
1381
1386
|
});
|
1387
|
+
} else if (obj.event == 'add_advise') {
|
1388
|
+
layer.open({
|
1389
|
+
title: '添加团队建议',
|
1390
|
+
closeBtn: 0,
|
1391
|
+
type: 1,
|
1392
|
+
area: '400px;',
|
1393
|
+
id: 'LAY_layuipro',
|
1394
|
+
content: '<div class="layui-form" lay-filter="edit_project" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + data.advise + '</textarea></div>' ,
|
1395
|
+
btn: ['保存', '取消'],
|
1396
|
+
btn1: function(index, l) {
|
1397
|
+
if (l.find("textarea").val().trim() == '') {
|
1398
|
+
layer.msg('内容不能为空')
|
1399
|
+
return false;
|
1400
|
+
} else {
|
1401
|
+
request.authPut("/missions/businesses/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
|
1402
|
+
if (res.success == false) {
|
1403
|
+
layer.alert(res.msg);
|
1404
|
+
} else {
|
1405
|
+
layer.close(index);
|
1406
|
+
table.reload("businesses_table",{url: '/missions/businesses', cols: cols_table})
|
1407
|
+
}
|
1408
|
+
})
|
1409
|
+
}
|
1410
|
+
|
1411
|
+
return false
|
1412
|
+
},
|
1413
|
+
btn2: function(index, l) {
|
1414
|
+
layer.close(index)
|
1415
|
+
}
|
1416
|
+
});
|
1382
1417
|
}
|
1383
1418
|
drowpdwonRender()
|
1384
1419
|
});
|
@@ -20,6 +20,7 @@ json.data do
|
|
20
20
|
json.reception_at d.last_follow_up&.reception_at.to_s
|
21
21
|
json.bidded_date d.last_follow_up&.bidded_date.to_s
|
22
22
|
json.signed_date d.last_follow_up&.signed_date.to_s
|
23
|
+
json.advise d.last_follow_up&.advise.to_s
|
23
24
|
json.o_business_deployment EducodeSales::FollowUp::BUSINESS_DEPLOYMENT[1..-1].to_h.invert[d.last_follow_up&.o_business_deployment]
|
24
25
|
json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
|
25
26
|
json.created_at d.created_at.to_s
|
data/config/routes.rb
CHANGED
@@ -82,6 +82,7 @@ EducodeSales::Engine.routes.draw do
|
|
82
82
|
get :money_plans
|
83
83
|
put :update_money
|
84
84
|
delete :delete_money
|
85
|
+
put :update_advise
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
@@ -118,6 +119,7 @@ EducodeSales::Engine.routes.draw do
|
|
118
119
|
get :daily_paper
|
119
120
|
get :search
|
120
121
|
get :contract
|
122
|
+
get :advise
|
121
123
|
end
|
122
124
|
|
123
125
|
member do
|
@@ -126,6 +128,7 @@ EducodeSales::Engine.routes.draw do
|
|
126
128
|
get :unfinish_plans
|
127
129
|
put :update_follow_up
|
128
130
|
put :audit
|
131
|
+
put :update_advise
|
129
132
|
end
|
130
133
|
end
|
131
134
|
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: educode_sales
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.61
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2023-03-23 00:00:00.000000000 Z
|
@@ -105,7 +105,6 @@ files:
|
|
105
105
|
- app/assets/images/educode_sales/icon-login.png
|
106
106
|
- app/assets/images/educode_sales/icon.png
|
107
107
|
- app/assets/images/educode_sales/indexLogo.png
|
108
|
-
- app/assets/images/educode_sales/indexlogo.png
|
109
108
|
- app/assets/images/educode_sales/loading-0.gif
|
110
109
|
- app/assets/images/educode_sales/loading-1.gif
|
111
110
|
- app/assets/images/educode_sales/loading-2.gif
|
@@ -573,7 +572,7 @@ homepage: https://www.educoder.net
|
|
573
572
|
licenses:
|
574
573
|
- MIT
|
575
574
|
metadata: {}
|
576
|
-
post_install_message:
|
575
|
+
post_install_message:
|
577
576
|
rdoc_options: []
|
578
577
|
require_paths:
|
579
578
|
- lib
|
@@ -588,8 +587,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
588
587
|
- !ruby/object:Gem::Version
|
589
588
|
version: '0'
|
590
589
|
requirements: []
|
591
|
-
rubygems_version: 3.0.
|
592
|
-
signing_key:
|
590
|
+
rubygems_version: 3.0.0
|
591
|
+
signing_key:
|
593
592
|
specification_version: 4
|
594
593
|
summary: Summary of EducodeSales.
|
595
594
|
test_files: []
|
Binary file
|