step2.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. <link rel="stylesheet" href="assets/store/css/goods.css?v=<?= $version ?>">
  2. <div class="row-content am-cf">
  3. <div class="row">
  4. <div class="am-u-sm-12 am-u-md-12 am-u-lg-12">
  5. <div class="widget am-cf">
  6. <form id="my-form" class="am-form tpl-form-line-form">
  7. <div class="widget-body">
  8. <fieldset>
  9. <div class="widget-head am-cf">
  10. <div class="widget-title am-fl">第二步:填写商品信息</div>
  11. </div>
  12. <div class="am-form-group">
  13. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require"> 商品信息 </label>
  14. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  15. <div class="goods-detail">
  16. <div class="goods-image">
  17. <img src="<?= $goods['goods_image'] ?>" alt="">
  18. </div>
  19. <div class="goods-info dis-flex flex-dir-column flex-x-center">
  20. <p class="goods-title"><?= $goods['goods_name'] ?></p>
  21. <p class="goods-title">ID:<?= $goods['goods_id'] ?></p>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. <!-- 商品单规格 -->
  27. <?php if ($goods['spec_type'] == 10): ?>
  28. <div class="goods-spec-single"
  29. style="display: <?= $goods['spec_type'] == 10 ? 'block' : 'none' ?>;">
  30. <div class="am-form-group">
  31. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require"> 商品编码 </label>
  32. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  33. <div class="am-form--static"><?= $goods['goods_sku']['goods_no'] ?: '--' ?></div>
  34. </div>
  35. </div>
  36. <div class="am-form-group">
  37. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require"> 商品售价 </label>
  38. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  39. <div class="am-form--static"><?= $goods['goods_sku']['goods_price'] ?></div>
  40. </div>
  41. </div>
  42. <div class="am-form-group am-padding-top">
  43. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require"> 秒杀价格 </label>
  44. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  45. <input type="number" min="0" class="tpl-form-input"
  46. name="goods[sku][seckill_price]" required>
  47. </div>
  48. </div>
  49. <div class="am-form-group">
  50. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require"> 秒杀库存数量 </label>
  51. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  52. <input type="number" min="0" class="tpl-form-input"
  53. name="goods[sku][seckill_stock]" required>
  54. <div class="help-block">
  55. <small>注:秒杀库存为独立库存,与主商品库存不同步</small>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <?php endif; ?>
  61. <!-- 商品多规格 -->
  62. <?php if ($goods['spec_type'] == 20): ?>
  63. <div class="am-form-group am-padding-top">
  64. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require">商品规格 </label>
  65. <div id="many-app" v-cloak class="goods-spec-many am-u-sm-9 am-u-end"
  66. style="display: block">
  67. <div class="goods-spec-box style-simplify">
  68. <!-- 商品多规格sku信息 -->
  69. <div v-if="spec_list.length > 0" class="goods-sku am-scrollable-horizontal">
  70. <!-- sku 批量设置 -->
  71. <div class="spec-batch am-form-inline">
  72. <div class="am-form-group">
  73. <input type="number" v-model="batchData.seckill_price"
  74. placeholder="秒杀价格">
  75. </div>
  76. <div class="am-form-group">
  77. <input type="number" min="0" v-model="batchData.seckill_stock"
  78. placeholder="秒杀库存">
  79. </div>
  80. <div class="am-form-group">
  81. <button @click="onSubmitBatchData" type="button"
  82. class="am-btn am-btn-sm am-btn-secondaryam-radius">批量设置
  83. </button>
  84. </div>
  85. </div>
  86. <!-- sku table -->
  87. <table class="spec-sku-tabel am-table am-table-bordered am-table-centered
  88. am-margin-bottom-xs am-text-nowrap">
  89. <tbody>
  90. <tr>
  91. <th v-for="item in spec_attr">{{ item.group_name }}</th>
  92. <th>商家编码</th>
  93. <th>商品售价</th>
  94. <th>商品库存</th>
  95. <th class="form-require">
  96. 秒杀价格
  97. </th>
  98. <th class="form-require">
  99. 秒杀库存
  100. </th>
  101. </tr>
  102. <tr v-for="(item, index) in spec_list">
  103. <td v-for="td in item.rows" class="td-spec-value am-text-middle"
  104. :rowspan="td.rowspan">
  105. {{ td.spec_value }}
  106. </td>
  107. <td>{{ item.form.goods_no ? item.form.goods_no : '--' }}</td>
  108. <td>{{ item.form.goods_price }}</td>
  109. <td>{{ item.form.stock_num }}</td>
  110. <td>
  111. <input type="number" min="0" class="ipt-w80"
  112. name="seckill_price"
  113. v-model="item.form.seckill_price" required>
  114. </td>
  115. <td>
  116. <input type="number" min="0" class="ipt-w80"
  117. name="seckill_stock"
  118. v-model="item.form.seckill_stock" required>
  119. </td>
  120. </tr>
  121. </tbody>
  122. </table>
  123. <div class="help-block">
  124. <small>注:秒杀库存为独立库存,与主商品库存不同步</small>
  125. </div>
  126. </div>
  127. </div>
  128. </div>
  129. </div>
  130. <?php endif; ?>
  131. <div class="am-form-group am-padding-top">
  132. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require">库存计算方式 </label>
  133. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  134. <label class="am-radio-inline">
  135. <input type="radio" name="goods[deduct_stock_type]" value="10" data-am-ucheck
  136. <?= $goods['deduct_stock_type'] == 10 ? 'checked' : '' ?> >
  137. 下单减库存
  138. </label>
  139. <label class="am-radio-inline">
  140. <input type="radio" name="goods[deduct_stock_type]" value="20" data-am-ucheck
  141. <?= $goods['deduct_stock_type'] == 20 ? 'checked' : '' ?> >
  142. 付款减库存
  143. </label>
  144. </div>
  145. </div>
  146. <div class="am-form-group">
  147. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require"> 限购数量 </label>
  148. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  149. <input type="number" min="0" class="tpl-form-input" name="goods[limit_num]"
  150. value="0" required>
  151. <small>注:每人限制购买的数量,如果填写0则不限购</small>
  152. </div>
  153. </div>
  154. <div class="am-form-group am-padding-top">
  155. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require"> 商品状态 </label>
  156. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  157. <label class="am-radio-inline">
  158. <input type="radio" name="goods[status]" value="1" data-am-ucheck
  159. checked>
  160. 上架
  161. </label>
  162. <label class="am-radio-inline">
  163. <input type="radio" name="goods[status]" value="0" data-am-ucheck>
  164. 下架
  165. </label>
  166. </div>
  167. </div>
  168. <div class="am-form-group">
  169. <label class="am-u-sm-3 am-u-lg-2 am-form-label form-require">排序 </label>
  170. <div class="am-u-sm-9 am-u-md-6 am-u-lg-5 am-u-end">
  171. <input type="number" min="0" class="tpl-form-input" name="goods[sort]"
  172. value="100" required>
  173. <small>数字越小越靠前</small>
  174. </div>
  175. </div>
  176. <div class="am-form-group">
  177. <div class="am-u-sm-9 am-u-sm-push-3 am-margin-top-lg">
  178. <button type="submit" class="j-submit am-btn am-btn-sm am-btn-secondary"> 提交
  179. </button>
  180. </div>
  181. </div>
  182. </fieldset>
  183. </div>
  184. </form>
  185. </div>
  186. </div>
  187. </div>
  188. </div>
  189. <!-- 商品列表 -->
  190. <script id="tpl-goods-list-item" type="text/template">
  191. {{ each $data }}
  192. <div class="file-item">
  193. <a href="{{ $value.image }}" title="{{ $value.goods_name }}" target="_blank">
  194. <img src="{{ $value.image }}">
  195. </a>
  196. <input type="hidden" name="goods_id" value="{{ $value.goods_id }}">
  197. </div>
  198. {{ /each }}
  199. </script>
  200. <script src="assets/common/js/vue.min.js"></script>
  201. <script src="assets/store/js/goods.spec.js?v=<?= $version ?>"></script>
  202. <script>
  203. $(function () {
  204. // 注册商品多规格组件
  205. var specMany = new GoodsSpec({
  206. el: '#many-app',
  207. baseData: <?= \app\common\library\helper::jsonEncode($specData) ?>
  208. });
  209. /**
  210. * 表单验证提交
  211. * @type {*}
  212. */
  213. $('#my-form').superForm({
  214. // 获取多规格sku数据
  215. buildData: function () {
  216. var specData = specMany.appVue.getData();
  217. return {
  218. goods: {
  219. spec_many: {
  220. spec_list: specData.spec_list
  221. }
  222. }
  223. };
  224. }
  225. });
  226. });
  227. </script>