import.blade.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <script src="{!!resource_absolute('static/js/xlsx.full.min.js')!!}"></script>
  2. @extends('layouts.base')
  3. @section('content')
  4. <link href="{{static_url('yunshop/css/total.css')}}" media="all" rel="stylesheet" type="text/css" />
  5. <style scoped>
  6. .rightlists {
  7. width: 600px;
  8. height: 50px;
  9. color: crimson;
  10. line-height: 48px;
  11. text-align: center;
  12. border-radius: 5px;
  13. border: 1px solid crimson;
  14. background: rgb(250, 220, 225);
  15. }
  16. .usage {
  17. width: 100%;
  18. height: 100px;
  19. font-size: 15px;
  20. font-weight: 600;
  21. color: black;
  22. display: flex;
  23. line-height: 60px;
  24. border-radius: 5px;
  25. overflow: hidden;
  26. background: #eff3f6;
  27. }
  28. .method_application {
  29. margin-left: 50px;
  30. }
  31. .method_info p:nth-child(2) {
  32. line-height: 0px;
  33. }
  34. .EXCEL_Box {
  35. /* border:1px solid red; */
  36. display: flex;
  37. justify-content: space-between;
  38. }
  39. .EXCEL_Box label {
  40. font-weight: 600;
  41. line-height: 40px;
  42. margin: 0 10px 0 10px;
  43. /* border:1px solid red; */
  44. }
  45. .put_box {
  46. /* border:1px solid red; */
  47. width: calc(100% - 500px);
  48. margin-left: 150px;
  49. }
  50. </style>
  51. <div class="all">
  52. <div id="app">
  53. <div class="total-head">
  54. <el-form>
  55. <el-form-item>
  56. <div class="vue-title">
  57. <div class="vue-title-left"></div>
  58. <div class="vue-title-content">会员excel上传</div>
  59. </div>
  60. </el-form-item>
  61. <div class="put_box">
  62. <el-form-item>
  63. <div class="rightlists">尽量在服务器空闲时间来操作,会占用大量内存与带宽,在获取过程中,请不要进行任何操作!</div>
  64. </el-form-item>
  65. <el-form-item>
  66. <div class="usage">
  67. <div class="method_application">使用方法:</div>
  68. <div class="method_info">
  69. <p>1. 目前支持xls和xlsx两种格式</p>
  70. <p>2. 下载模板填写信息</p>
  71. </div>
  72. </div>
  73. </el-form-item>
  74. <el-form-item>
  75. <div class="EXCEL_Box">
  76. <div style="display: flex;">
  77. <label class="excel-label">EXCEL</label>
  78. <input type="file" @change="importf($event)" />
  79. </div>
  80. <div>
  81. <el-button @click="ExcelEvent" type="primary">Excel示例文件下载</el-button>
  82. </div>
  83. </div>
  84. </el-form-item>
  85. </div>
  86. </el-form>
  87. </div>
  88. </div>
  89. </div>
  90. <script>
  91. let vm = new Vue({
  92. el: "#app",
  93. name: "import",
  94. delimiters: ['[[', ']]'],
  95. data() {
  96. return {
  97. message: "girl",
  98. wb: "", //读取完成的数据
  99. rABS: false //是否将文件读取为二进制字符串
  100. }
  101. },
  102. methods: {
  103. importf(obj) { //导入
  104. console.log(obj, 456465465);
  105. console.log(obj.target.files);
  106. if (!obj.target.files) {
  107. return;
  108. }
  109. var f = obj.target.files[0];
  110. var reader = new FileReader();
  111. console.log(reader);
  112. reader.onload = function(e) {
  113. var data = e.target.result;
  114. if (this.rABS) {
  115. this.wb = XLSX.read(btoa(this.fixdata(data)), { //手动转化
  116. type: 'base64'
  117. });
  118. } else {
  119. this.wb = XLSX.read(data, {
  120. type: 'binary'
  121. });
  122. }
  123. //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
  124. //wb.Sheets[Sheet名]获取第一个Sheet的数据
  125. var data = XLSX.utils.sheet_to_row_object_array(this.wb.Sheets[this.wb.SheetNames[0]]);
  126. console.log(data, 44564);
  127. $.ajax({
  128. url: "{!! yzWebUrl('member.member.member-excel') !!}",
  129. type: "post",
  130. data: {
  131. data: data
  132. },
  133. cache: false,
  134. success: function(result) {
  135. alert(result.msg);
  136. window.location.reload();
  137. }
  138. })
  139. };
  140. // this.$message.success("小屁孩")
  141. if (this.rABS) {
  142. reader.readAsArrayBuffer(f);
  143. } else {
  144. reader.readAsBinaryString(f);
  145. }
  146. },
  147. fixdata(data) { //文件流转BinaryString
  148. var o = "",
  149. l = 0,
  150. w = 10240;
  151. for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
  152. o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
  153. return o;
  154. },
  155. ExcelEvent() {
  156. let url = `{!! yzWebFullUrl('member.member.memberExcelDemo') !!}`;
  157. window.location.href = url;
  158. }
  159. }
  160. })
  161. </script>@endsection('content')