educode_sales 1.10.3 → 1.10.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.
- checksums.yaml +4 -4
- data/app/controllers/educode_sales/assessments_controller.rb +18 -18
- data/app/controllers/educode_sales/follow_ups_controller.rb +13 -0
- data/app/controllers/educode_sales/upload_files_controller.rb +9 -1
- data/app/views/educode_sales/businesses/time_line.html.erb +25 -2
- data/app/views/educode_sales/follow_ups/file.html.erb +154 -0
- data/app/views/educode_sales/follow_ups/upload_file.html.erb +43 -0
- data/config/routes.rb +2 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d2e7e3e78774b085c64185fddc9b8ecddbcbb7bf87e030c8f449fb21285f8c9
|
4
|
+
data.tar.gz: c1ea147b8d76cc8ef23d6004834d4c79499b2c1d7f18c233e939f030b303488f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37e8d9e9ce8bbf78632588b9bff325548e3004dbb2a8daf7b3a64a29fd547556c41bc0ecfc3b244fb8725e2cd76cb3618cc08db4952a47189f8f0dfb1f19943e
|
7
|
+
data.tar.gz: a5661dcb147e98afe980d0c330c9d8fcb5f297335ec2f305e658b3f088be9c57919f7e534241d6d7b612dc903043190aa9b9132dd6a727122299e7dd847071c5
|
@@ -437,21 +437,25 @@ module EducodeSales
|
|
437
437
|
#导入签到记录接口
|
438
438
|
def import_attendances
|
439
439
|
render_failure("文件不存在或格式错误") if params[:file].blank? || !params[:file].is_a?(ActionDispatch::Http::UploadedFile)
|
440
|
+
Rails.logger.info "导入签到数据"
|
440
441
|
begin
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
442
|
+
doc = SimpleXlsxReader.open(params[:file])
|
443
|
+
rescue
|
444
|
+
return render_error("文件不存在或格式错误")
|
445
|
+
end
|
446
|
+
size = doc.sheets.size
|
447
|
+
Rails.logger.info size
|
448
|
+
attendance_attrs = %i[name attendance_date longitude latitude location address mobile_id ip_address customer target created_at updated_at]
|
449
|
+
attendance_vales = []
|
450
|
+
(0..size - 1).each do |index|
|
451
|
+
doc.sheets[index].rows.each_with_index do |d, i|
|
452
|
+
next if i <= 2
|
453
|
+
name = d[0]
|
454
|
+
attendance_date_time = "#{d[1]} #{d[2]}"
|
455
|
+
attendance_date = attendance_date_time.strip
|
456
|
+
longitude = d[3]
|
457
|
+
latitude = d[4]
|
458
|
+
location = d[5]
|
455
459
|
address = d[6]
|
456
460
|
mobile_id = d[7]
|
457
461
|
ip_address = d[8]
|
@@ -469,10 +473,6 @@ module EducodeSales
|
|
469
473
|
end
|
470
474
|
end
|
471
475
|
render_success
|
472
|
-
end
|
473
|
-
rescue Exception => e
|
474
|
-
render_failure(e.message)
|
475
|
-
end
|
476
476
|
end
|
477
477
|
|
478
478
|
|
@@ -287,8 +287,21 @@ module EducodeSales
|
|
287
287
|
render_success
|
288
288
|
end
|
289
289
|
|
290
|
+
def file
|
291
|
+
gon.folder = edu_setting('attachment_folder') + '/'
|
292
|
+
render layout: false
|
293
|
+
end
|
294
|
+
|
295
|
+
def upload_file
|
296
|
+
render layout: false
|
297
|
+
end
|
298
|
+
|
290
299
|
private
|
291
300
|
|
301
|
+
def edu_setting name
|
302
|
+
EduSetting.get(name)
|
303
|
+
end
|
304
|
+
|
292
305
|
def load_business
|
293
306
|
@business = Business.find(params[:business_id])
|
294
307
|
end
|
@@ -8,7 +8,12 @@ module EducodeSales
|
|
8
8
|
format.html do
|
9
9
|
end
|
10
10
|
format.json do
|
11
|
-
|
11
|
+
if params[:follow_up_id].present?
|
12
|
+
@files = Attachment.where(container_type: "EducodeSales::FollowUp", container_id: params[:follow_up_id])
|
13
|
+
else
|
14
|
+
@files = Attachment.where(description: "business", container_id:params[:business_id])
|
15
|
+
end
|
16
|
+
|
12
17
|
if params[:sort].present? && params[:sort][:field]
|
13
18
|
@files = @files.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
14
19
|
else
|
@@ -39,6 +44,9 @@ module EducodeSales
|
|
39
44
|
elsif params[:idea_id].present?
|
40
45
|
@attachment.container_id = params[:idea_id]
|
41
46
|
@attachment.container_type = 'EducodeSales::Idea'
|
47
|
+
elsif params[:follow_up_id].present?
|
48
|
+
@attachment.container_id = params[:follow_up_id]
|
49
|
+
@attachment.container_type = 'EducodeSales::FollowUp'
|
42
50
|
else
|
43
51
|
@attachment.description = "business"
|
44
52
|
@attachment.container_id = params[:business_id]
|
@@ -24,7 +24,10 @@
|
|
24
24
|
<a href="javascript:;" class="add_key" data-is_latest="<%= f.id == @latest&.id %>" data-id=<%= f.id %> data-flag="<%= f.created_at.present? ? (Time.now - f.created_at).to_f/3600 < 24 : false %>">添加关键人</a>
|
25
25
|
<% end %>
|
26
26
|
<br/>
|
27
|
-
评论: <span><%= f.comment %></span> <a href="javascript:;" class="add_comment" data-id=<%= f.id %>>评论</a>
|
27
|
+
评论: <span><%= f.comment %></span> <a href="javascript:;" class="add_comment" data-id=<%= f.id %>>评论</a> <a href="javascript:;" class="uploadFile" data-id=<%= f.id %>>附件上传</a>
|
28
|
+
<br/>
|
29
|
+
<!-- <span class="layui-badge layui-bg-green"></span> -->
|
30
|
+
<button type="button" class="layui-btn layui-btn-xs layui-btn-primary add-tag"><i class="layui-icon layui-icon-addition"></i>标签设置</button>
|
28
31
|
</p>
|
29
32
|
</div>
|
30
33
|
</li>
|
@@ -99,8 +102,28 @@
|
|
99
102
|
layer.close(index)
|
100
103
|
},
|
101
104
|
});
|
102
|
-
|
103
105
|
})
|
106
|
+
|
107
|
+
$(".uploadFile").on("click", function(e) {
|
108
|
+
var data = e.currentTarget.dataset;
|
109
|
+
follow_up_id = parent.id
|
110
|
+
var content = miniPage.getHrefContent('/missions/follow_ups/' + follow_up_id + '/file');
|
111
|
+
var openWH = miniPage.getOpenWidthHeight();
|
112
|
+
lsindex = layer.open({
|
113
|
+
title: '附件上传',
|
114
|
+
type: 1,
|
115
|
+
shade: 0.2,
|
116
|
+
maxmin: true,
|
117
|
+
shadeClose: true,
|
118
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
119
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
120
|
+
content: content
|
121
|
+
});
|
122
|
+
$(window).on("resize", function () {
|
123
|
+
layer.full(sindex);
|
124
|
+
});
|
125
|
+
})
|
126
|
+
|
104
127
|
});
|
105
128
|
function demo(){
|
106
129
|
layer.closeAll()
|
@@ -0,0 +1,154 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
2
|
+
<script type="text/html" id="toolbarDemo">
|
3
|
+
<div class="layui-btn-container">
|
4
|
+
<span class="table-label">附件信息</span>
|
5
|
+
<% if can? :upload_file, EducodeSales::Business %>
|
6
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="upload_file">上传文件</button>
|
7
|
+
<% end %>
|
8
|
+
</div>
|
9
|
+
</script>
|
10
|
+
|
11
|
+
<table class="layui-hide" id="file" lay-filter="file"></table>
|
12
|
+
|
13
|
+
<script type="text/html" id="currentTableBar_file">
|
14
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="preview">预览</a>
|
15
|
+
<% if can? :download_file, EducodeSales::Business %>
|
16
|
+
<a href="/missions/upload_files/download?id={{d.id}}" class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="download">下载</a>
|
17
|
+
<% end %>
|
18
|
+
<% if can? :delete_file, EducodeSales::Business %>
|
19
|
+
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
|
20
|
+
<% end %>
|
21
|
+
</script>
|
22
|
+
|
23
|
+
|
24
|
+
<script>
|
25
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
|
26
|
+
var $ = layui.jquery,
|
27
|
+
form = layui.form,
|
28
|
+
table = layui.table,
|
29
|
+
request = layui.request,
|
30
|
+
upload = layui.upload;
|
31
|
+
miniPage = layui.miniPage;
|
32
|
+
|
33
|
+
|
34
|
+
var follow_up_id = parent.follow_up_id
|
35
|
+
table.render({
|
36
|
+
elem: '#file',
|
37
|
+
url: '/missions/upload_files?follow_up_id='+follow_up_id,
|
38
|
+
toolbar: '#toolbarDemo',
|
39
|
+
defaultToolbar: [],
|
40
|
+
cols: [
|
41
|
+
[
|
42
|
+
{
|
43
|
+
field: 'id',
|
44
|
+
width: 80,
|
45
|
+
title:'序号',type: 'numbers',
|
46
|
+
},
|
47
|
+
{
|
48
|
+
field: 'name',
|
49
|
+
title: '文件名'
|
50
|
+
},
|
51
|
+
{
|
52
|
+
field: 'size',
|
53
|
+
width: 100,
|
54
|
+
title: '文件大小',
|
55
|
+
},
|
56
|
+
{
|
57
|
+
field: 'created_on',
|
58
|
+
width: 200,
|
59
|
+
title: '上传时间',
|
60
|
+
sort: true
|
61
|
+
},
|
62
|
+
{
|
63
|
+
field: 'upload_person',
|
64
|
+
width: 80,
|
65
|
+
totalRow:true,
|
66
|
+
title: '上传人',
|
67
|
+
},
|
68
|
+
{
|
69
|
+
title: '操作',
|
70
|
+
width: 200,
|
71
|
+
toolbar: '#currentTableBar_file',
|
72
|
+
align: "center"
|
73
|
+
}
|
74
|
+
]
|
75
|
+
],
|
76
|
+
limit: 20,
|
77
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
78
|
+
page: true
|
79
|
+
});
|
80
|
+
|
81
|
+
|
82
|
+
var sort = {};
|
83
|
+
table.on('sort(file)', function (obj) {
|
84
|
+
sort.field = obj.field;
|
85
|
+
sort.order = obj.type;
|
86
|
+
table.reload('file', {
|
87
|
+
initSort: obj,
|
88
|
+
where: {
|
89
|
+
sort: sort
|
90
|
+
}
|
91
|
+
});
|
92
|
+
})
|
93
|
+
|
94
|
+
|
95
|
+
table.on('toolbar(file)', function (obj) {
|
96
|
+
if (obj.event === 'upload_file') { //
|
97
|
+
follow_up_id = parent.follow_up_id
|
98
|
+
var content = miniPage.getHrefContent('/missions/follow_ups/' + parent.follow_up_id +'/upload_file');
|
99
|
+
var openWH = miniPage.getOpenWidthHeight();
|
100
|
+
import_index = layer.open({
|
101
|
+
title: '上传文件',
|
102
|
+
type: 1,
|
103
|
+
shade: 0.2,
|
104
|
+
shadeClose: true,
|
105
|
+
area: ['200px', '100px'],
|
106
|
+
offset: 'auto',
|
107
|
+
closeBtn: 0,
|
108
|
+
content: content,
|
109
|
+
});
|
110
|
+
$(window).on("resize", function () {
|
111
|
+
layer.full(index);
|
112
|
+
});
|
113
|
+
}
|
114
|
+
});
|
115
|
+
|
116
|
+
|
117
|
+
table.on('tool(file)', function (obj) {
|
118
|
+
var data = obj.data;
|
119
|
+
var id = data.id
|
120
|
+
name = data.disk_filename
|
121
|
+
folder = gon.folder
|
122
|
+
if (obj.event === 'preview') {
|
123
|
+
if (data.content_type.split("/")[0] === "image"){
|
124
|
+
layer.photos({
|
125
|
+
photos: { "data": [{"src": '/files/educode_sales/' + name}] }
|
126
|
+
,anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
|
127
|
+
});
|
128
|
+
}else if (data.content_type.split("/")[1] === "pdf"){
|
129
|
+
var pdf = '/files/educode_sales/' + name;
|
130
|
+
var openWH = miniPage.getOpenWidthHeight();
|
131
|
+
layer.open({
|
132
|
+
title: data.name,
|
133
|
+
type: 2,
|
134
|
+
area: ['1000px', '750px'],
|
135
|
+
fixed: false, //不固定
|
136
|
+
maxmin: true,
|
137
|
+
content: pdf
|
138
|
+
});
|
139
|
+
}else{
|
140
|
+
layer.msg("附件不支持预览,请下载查看!")
|
141
|
+
}
|
142
|
+
return false;
|
143
|
+
}else if (obj.event === 'delete') {
|
144
|
+
layer.confirm('确定删除' + data.name, function (index) {
|
145
|
+
request.delete('missions/upload_files/' + data.id + '?disk_filename=' + data.disk_filename, {}, function (res) {
|
146
|
+
layer.close(index);
|
147
|
+
table.reload("file")
|
148
|
+
})
|
149
|
+
});
|
150
|
+
}
|
151
|
+
});
|
152
|
+
|
153
|
+
});
|
154
|
+
</script>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<div style="padding-left: 50px">
|
2
|
+
<button type="button" class="layui-btn" id="get_file"><i class="layui-icon"></i>选择文件</button>
|
3
|
+
</div>
|
4
|
+
<script>
|
5
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput'], function () {
|
6
|
+
var form = layui.form,
|
7
|
+
layer = layui.layer,
|
8
|
+
table = layui.table,
|
9
|
+
laytpl = layui.laytpl,
|
10
|
+
upload = layui.upload,
|
11
|
+
request = layui.request,
|
12
|
+
$ = layui.$;
|
13
|
+
selectInput = layui.selectInput;
|
14
|
+
|
15
|
+
form.render();
|
16
|
+
|
17
|
+
//指定允许上传的文件类型
|
18
|
+
var follow_up_id = parent.follow_up_id;
|
19
|
+
var renderObj = upload.render({
|
20
|
+
elem: '#get_file'
|
21
|
+
,url: '/missions/upload_files?follow_up_id='+follow_up_id //此处配置你自己的上传接口即可
|
22
|
+
,accept: 'file' //普通文件
|
23
|
+
,headers: {
|
24
|
+
'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
|
25
|
+
}
|
26
|
+
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
|
27
|
+
layer.load(); //上传loading
|
28
|
+
}
|
29
|
+
,done: function(res){
|
30
|
+
layer.msg('导入成功');
|
31
|
+
table.reload('file');
|
32
|
+
layer.closeAll('loading'); //关闭loading
|
33
|
+
layer.close(parent.import_index)
|
34
|
+
}
|
35
|
+
,error: function(index, upload){
|
36
|
+
table.reload('file');
|
37
|
+
layer.closeAll('loading'); //关闭loading
|
38
|
+
layer.alert('导入失败,请检查文件格式')
|
39
|
+
layer.close(parent.import_index)
|
40
|
+
}
|
41
|
+
});
|
42
|
+
});
|
43
|
+
</script>
|
data/config/routes.rb
CHANGED
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: 1.10.
|
4
|
+
version: 1.10.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -362,9 +362,11 @@ files:
|
|
362
362
|
- app/views/educode_sales/customers/show_follow.json.jbuilder
|
363
363
|
- app/views/educode_sales/customers/show_follow_record.html.erb
|
364
364
|
- app/views/educode_sales/customers/show_majors.html.erb
|
365
|
+
- app/views/educode_sales/follow_ups/file.html.erb
|
365
366
|
- app/views/educode_sales/follow_ups/index.json.jbuilder
|
366
367
|
- app/views/educode_sales/follow_ups/money_plans.json.jbuilder
|
367
368
|
- app/views/educode_sales/follow_ups/teachers.json.jbuilder
|
369
|
+
- app/views/educode_sales/follow_ups/upload_file.html.erb
|
368
370
|
- app/views/educode_sales/home/index.html.erb
|
369
371
|
- app/views/educode_sales/home/no_permission.html.erb
|
370
372
|
- app/views/educode_sales/home/sales_place.json.jbuilder
|