import.html 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <link rel="stylesheet" href="__STATIC__/ext/video/video.css">
  4. <link rel="stylesheet" type="text/css" href="__STATIC__/ext/searchable_select/searchable_select.css" />
  5. <link rel="stylesheet" type="text/css" href="SHOP_CSS/goods_edit.css" />
  6. <style type="text/css">
  7. .data_load {display: flex;flex-direction: column;align-items: center;margin-top:100px;}
  8. .data_load-img {width: 60px;height: 60px;}
  9. .data_load-img img {width: 100%;height: 100%;}
  10. .data_load-title {color: #333;font-size: 18px;margin-top: 15px;}
  11. .data_load-content {color: #333;font-size: 14px;margin-top: 20px;}
  12. .data_load-footer {color:#418afb;font-size: 14px;}
  13. .data_load-content span {display:inline-block;color: #ff4949;}
  14. .body-content {background: none !important;padding: 0 !important;margin: 0 !important;}
  15. .footer {padding-bottom: 0px !important;}
  16. .common-wrap {position: relative;display: flex;padding: 25px 140px;margin: 15px 15px 0 15px;background:#fff}
  17. .common-wrap .tips-wrap {margin: 0px 20px;min-width: 130px;background-color: #ffffff;border-color: #ffffff;border-radius: 2px;}
  18. .common-wrap .tips-wrap>span{display: block;width: 30px;height: 30px;line-height: 30px;text-align: center;color: #105CFB;border-radius: 50px;border: 1px solid #105CFB;font-size: 18px;margin: 0 auto;font-weight: bolder;margin-bottom: 15px;}
  19. .common-wrap .tips-wrap>p{text-align: center;}
  20. .common-wrap .interval-wrap{width: 300px;height: 45px;position: relative;border-bottom: 1px solid #e6e6e6;}
  21. .common-wrap .interval-wrap>span{display: block;position: absolute;bottom: -5px;right: 0px;width: 8px;height: 8px;border: 1px solid #e6e6e6;transform: rotateZ(45deg);border-bottom: 0px;border-left: 0px;}
  22. .layui-tab-brief {margin: 15px 15px 0px 15px;}
  23. </style>
  24. {/block}
  25. {block name="main"}
  26. <form class="layui-form">
  27. <div class="layui-form">
  28. <div class="common-wrap">
  29. <div class="tips-wrap">
  30. <span>1</span>
  31. <p>提前在系统内维护好</p>
  32. <p><a class="text-color" href="{:addon_url('shop/goodscategory/lists')}">商品分类</a></p>
  33. </div>
  34. <div class="interval-wrap">
  35. <span></span>
  36. </div>
  37. <div class="tips-wrap">
  38. <span>2</span>
  39. <p>按商品类型下载商品导入模板,录入商品信息。</p>
  40. </div>
  41. <div class="interval-wrap">
  42. <span></span>
  43. </div>
  44. <div class="tips-wrap">
  45. <span>3</span>
  46. <p>设置商品发布渠道,上传文件进行导入。</p>
  47. </div>
  48. </div>
  49. <!--<div class="layui-collapse tips-wrap">-->
  50. <!--<div class="layui-colla-item">-->
  51. <!--<h2 class="layui-colla-title">操作提示</h2>-->
  52. <!--<ul class="layui-colla-content layui-show">-->
  53. <!--<li>第 1 步:提前在系统内维护好<a href="{:addon_url('shop/goodscategory/lists')}" class="text-color">商品分类</a></li>-->
  54. <!--</ul>-->
  55. <!--<ul class="layui-colla-content layui-show">-->
  56. <!--<li>第 2 步:按商品类型下载商品导入模板,录入商品信息。</li>-->
  57. <!--</ul>-->
  58. <!--<ul class="layui-colla-content layui-show">-->
  59. <!--<li>第 3 步:设置商品发布渠道,上传文件进行导入。</li>-->
  60. <!--</ul>-->
  61. <!--</div>-->
  62. <!--</div>-->
  63. <div class="layui-tab-brief" lay-filter="goods_tab">
  64. <div>
  65. <div class="layui-tab-item layui-show">
  66. <div class="layui-card card-common">
  67. <div class="layui-card-header">
  68. <span class="card-title">商品导入</span><a href="" id="contine" style="display:none;"><span style="color:#155bd4">继续导入</span></a><a href="{:addon_url('shop/goods/importrecordlist')}" id="list" ><span style="color:#155bd4">导入历史</span></a>
  69. </div>
  70. <div class="layui-card-body">
  71. <div class="layui-card-body" id="import">
  72. <div class="layui-form-item">
  73. <label class="layui-form-label">商品类型配置:</label>
  74. <div class="layui-input-block">
  75. <ul>
  76. <li><input type="radio" lay-filter="encrypt" title="实物商品" class="type" name="type" value="1" checked><a class="text-color" href="{:img('public/static/img/goods_csv/goods.xlsx')}">下载模板</a>
  77. </li>
  78. </ul>
  79. <ul>
  80. <li><input type="radio" lay-filter="encrypt" title="虚拟商品" class="type" name="type" value="2"><a class="text-color" href="{:img('public/static/img/goods_csv/virtualgoods.xlsx')}">下载模板</a></li>
  81. </ul>
  82. <ul>
  83. <li><input type="radio" lay-filter="encrypt" title="电子卡密" class="type" name="type" value="3"><a class="text-color" href="{:img('public/static/img/goods_csv/virtualcard.xlsx')}">下载模板</a></li>
  84. </ul>
  85. </div>
  86. </div>
  87. <div class="layui-form-item goods-image-wrap" style="margin-top: 20px">
  88. <label class="layui-form-label">商品图片:</label>
  89. <div class="layui-input-block">
  90. <div>在导入前请先将商品图片上传到商品相册,<a href="{:addon_url('shop/album/lists')}" class="text-color" target="_blank">去上传</a></div>
  91. </div>
  92. </div>
  93. <div class="layui-form-item" style="margin-top: 30px">
  94. <label class="layui-form-label">上传数据:</label>
  95. <div class="layui-input-block">
  96. <div class="upload-img-block">
  97. <div class="upload-img-box" id="xlsUpload">
  98. <div class="upload-default">
  99. <div class="upload">
  100. <i class="iconfont iconshangchuan"></i>
  101. <p>上传商品导入数据</p>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="word-aux">请上传xlsx文件,最大不要超过10M</div>
  108. </div>
  109. </div>
  110. <!-- 商品导入成功 -->
  111. <div class="data_load" style="display: none" id="success">
  112. <div class="data_load-img"><img src="SHOP_IMG/success.png" /></div>
  113. <div class="data_load-title">商品导入完成</div>
  114. <div class="data_load-content">成功导入<span class="success-count">0</span>条数据,导入失败<span class="error-count">0</span>条数据</div>
  115. <!-- <div class="data_load-footer" style="cursor:pointer;"><span id="exportError" style="display:none" onclick="exportError();">下载失败记录</span></div>-->
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. <!-- 商品详情 -->
  121. <div class="layui-tab-item">
  122. <script type="text/javascript" charset="utf-8" src="__STATIC__/ext/ueditor/ueditor.config.js"></script>
  123. <script type="text/javascript" charset="utf-8" src="__STATIC__/ext/ueditor/ueditor.all.js"> </script>
  124. <script type="text/javascript" charset="utf-8" src="__STATIC__/ext/ueditor/lang/zh-cn/zh-cn.js">
  125. </script>
  126. </div>
  127. </div>
  128. </div>
  129. </div>
  130. </form>
  131. {/block}
  132. {block name="script"}
  133. <script>
  134. layui.use(['form', 'upload'], function() {
  135. var form = layui.form,
  136. upload = layui.upload,
  137. type = 1;
  138. form.on('radio(encrypt)', function(data){
  139. type = data.value;
  140. });
  141. form.render();
  142. //商品导入
  143. var uploadInst = upload.render({
  144. elem: '#xlsUpload',
  145. url: ns.url("shop/goods/import"),
  146. data:{type:function () {
  147. return type
  148. }},
  149. field: 'xlsx',
  150. accept:'file',
  151. acceptMime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  152. exts: 'xlsx',
  153. before: function(obj) { //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
  154. var index = layer.load(1, {
  155. shade: [0.1, '#fff'], //0.1透明度的白色背景
  156. time: 0
  157. });
  158. },
  159. done: function(res) {
  160. layer.closeAll();
  161. if (res.code >= 0) {
  162. $("#upload").attr("style","display:none;");//隐藏div
  163. $("#import").attr("style","display:none;");//隐藏div
  164. $("#contine").attr("style","display:flex;");//显示div
  165. $("#list").attr("style","display:none;");//显示div
  166. $("#success").attr("style","display:flex;");//显示div
  167. $(".success-count").text(res.data.success_count);
  168. $(".error-count").text(res.data.error_count);
  169. if (res.data.error_count > 0) {
  170. $("#exportError").attr("style","display:flex;");
  171. } else {
  172. $("#exportError").attr("style","display:none;");
  173. }
  174. } else {
  175. layer.msg(res.message);
  176. }
  177. }
  178. });
  179. });
  180. </script>
  181. <script src="__STATIC__/ext/drag-arrange.js"></script>
  182. <script src="__STATIC__/ext/video/video.min.js"></script>
  183. <script src="__STATIC__/ext/searchable_select/searchable_select.js"></script>
  184. {/block}