educode_sales 1.10.3 → 1.10.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86f8364fd145617cb033ff7034197314eb267e79bf716e14200046c24551fad5
4
- data.tar.gz: 70caf8f362c4bf1b40d205f2a44370c7fd930e791f74a934ecef7a9abddc8321
3
+ metadata.gz: 7d2e7e3e78774b085c64185fddc9b8ecddbcbb7bf87e030c8f449fb21285f8c9
4
+ data.tar.gz: c1ea147b8d76cc8ef23d6004834d4c79499b2c1d7f18c233e939f030b303488f
5
5
  SHA512:
6
- metadata.gz: 5ecece08fea07f8ed2213187dc596092fc1961640751a01301416ab97bf0587efbfd2fe2158e13c2becbe6f2eb3c19fa941b67a9c6ff6f2ed528ff61c911f1f0
7
- data.tar.gz: 95170fda46d59cf757bbc5c5518a3e6a96a09872d4cb296c5344138e91d5baf9ab12bc64b321d3e50345bf2ae0e927001547a2fb0edcb8e12f0f2a9aaa424403
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
- ActiveRecord::Base.transaction do
442
- doc = SimpleXlsxReader.open(params[:file])
443
- size = doc.sheets.size
444
- attendance_attrs = %i[name attendance_date longitude latitude location address mobile_id ip_address customer target created_at updated_at]
445
- attendance_vales = []
446
- (0..size - 1).each do |index|
447
- doc.sheets[index].rows.each_with_index do |d, i|
448
- next if i <= 2
449
- name = d[0]
450
- attendance_date_time = "#{d[1]} #{d[2]}"
451
- attendance_date = attendance_date_time.strip
452
- longitude = d[3]
453
- latitude = d[4]
454
- location = d[5]
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
- @files = Attachment.where(description: "business", container_id:params[:business_id])
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
@@ -153,6 +153,8 @@ EducodeSales::Engine.routes.draw do
153
153
  delete :delete_money
154
154
  put :update_advise
155
155
  put :comment
156
+ get :file
157
+ get :upload_file
156
158
  end
157
159
  end
158
160
 
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.10.3'
2
+ VERSION = '1.10.5'
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: 1.10.3
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-13 00:00:00.000000000 Z
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