import.blade.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. @extends('layouts.base')
  2. @section('content')
  3. @section('title', trans('商品详情'))
  4. <div class="panel panel-info">
  5. <div class="panel-heading">
  6. <span>当前位置:</span>
  7. <a href="#">
  8. <span>EXCEL导入商品</span>
  9. </a>
  10. </div>
  11. </div>
  12. <div class="alert alert-info alert-important">
  13. <span>功能介绍:</span>
  14. <span style="padding-left: 60px;">1. 使用excel快速导入商品, 文件格式<b style="color:red;">[xls]</b></span>
  15. <span style="padding-left: 60px;">2. 一次导入的数据不要太多,大量数据请分批导入,建议在服务器负载低的时候进行</span>
  16. <span style="padding-left: 60px;">3. 导入商品时请注意商品名称一定不能重复,判断唯一性的标准</span>
  17. <span style="padding-left: 60px;">4. 模板中的excel中的商品分类只能进行两级分类,分类不要重复填写,比如之前有一个分类是分类1,他的二级分类是分类2,就不在填
  18. 商品分类一和商品分类二这一行了
  19. </span>
  20. <span style="padding-left: 60px;">5. 商品图片需要填写图片的名称,请自己找一个方法保证图片唯一性,比如:商品条码+日期+当前时间等</span>
  21. <br>
  22. <span>使用方法:</span>
  23. <span style="padding-left: 60px;">1. 下载Excel模板文件并录入信息</span>
  24. <span style="padding-left: 60px;">4. 上传Excel导入</span>
  25. <br>
  26. <span>格式要求: Excel中并没有严格的格式要求,只要都填写就行了</span>
  27. </div>
  28. {{--异步上传,节约时间--}}
  29. <div class="form-group">
  30. <label class="col-sm-2 control-label must">EXCEL文件</label>
  31. <div class="col-sm-5 goodsname" style="padding-right:0;">
  32. <input type="file" onchange="importf(this)" class="form-control"/>
  33. </div>
  34. </div>
  35. <div class="form-group">
  36. <label class="col-sm-2 control-label must">ZIP文件</label>
  37. <div class="col-sm-5 goodsimage" style="padding-right:0;">
  38. <input type="file" onchange="importImage(this)" class="form-control"/>
  39. </div>
  40. </div>
  41. <div class='form-group'>
  42. <div class="col-sm-12">
  43. <div class="modal-footer">
  44. <a class="btn btn-primary" href="{{yzWebUrl('goods.goods.excelImport')}}" style="margin-right: 10px;">
  45. <i class="fa fa-download"></i>
  46. <span>导入商品模板文件</span>
  47. </a>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. <script>
  53. /*
  54. FileReader共有4种读取方法:
  55. 1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。
  56. 2.readAsBinaryString(file):将文件读取为二进制字符串
  57. 3.readAsDataURL(file):将文件读取为Data URL
  58. 4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
  59. */
  60. var wb;//读取完成的数据
  61. var rABS = false; //是否将文件读取为二进制字符串
  62. function importf(obj) {//导入
  63. if(!obj.files) {
  64. return;
  65. }
  66. var f = obj.files[0];
  67. var reader = new FileReader();
  68. reader.onload = function(e) {
  69. var data = e.target.result;
  70. if(rABS) {
  71. wb = XLSX.read(btoa(fixdata(data)), {//手动转化
  72. type: 'base64'
  73. });
  74. } else {
  75. wb = XLSX.read(data, {
  76. type: 'binary'
  77. });
  78. }
  79. //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
  80. //wb.Sheets[Sheet名]获取第一个Sheet的数据
  81. var data = XLSX.utils.sheet_to_row_object_array(wb.Sheets[wb.SheetNames[0]]);
  82. console.log(data);
  83. $.ajax({
  84. url: "{!! yzWebUrl('goods.goods.a') !!}",
  85. type: "post",
  86. data: {data:data},
  87. cache: false,
  88. success: function (result) {
  89. alert(result.msg);
  90. window.location.reload();
  91. }
  92. })
  93. };
  94. if(rABS) {
  95. reader.readAsArrayBuffer(f);
  96. } else {
  97. reader.readAsBinaryString(f);
  98. }
  99. }
  100. function fixdata(data) { //文件流转BinaryString
  101. var o = "",
  102. l = 0,
  103. w = 10240;
  104. for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
  105. o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
  106. return o;
  107. }
  108. //异步图片文件上传
  109. function importImage(obj) {
  110. var formData = new FormData();
  111. formData.append("file", obj.files[0]);
  112. $.ajax({
  113. url: "{!! yzWebUrl('goods.goods.update-zip') !!}",
  114. type: "POST",
  115. data: formData,
  116. contentType: false,
  117. processData: false,
  118. success: function (result) {
  119. if (result.result == 1) {
  120. alert("上传成功!");
  121. }
  122. if (result.result == 0) {
  123. alert(result.msg);
  124. }
  125. },
  126. error: function () {
  127. alert("上传失败!");
  128. }
  129. });
  130. }
  131. </script>
  132. @endsection('content')