home-seckill.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. exports.ids = [12,7,17];
  2. exports.modules = {
  3. /***/ 136:
  4. /***/ (function(module, exports, __webpack_require__) {
  5. // style-loader: Adds some css to the DOM by adding a <style> tag
  6. // load the styles
  7. var content = __webpack_require__(139);
  8. if(content.__esModule) content = content.default;
  9. if(typeof content === 'string') content = [[module.i, content, '']];
  10. if(content.locals) module.exports = content.locals;
  11. // add CSS to SSR context
  12. var add = __webpack_require__(4).default
  13. module.exports.__inject__ = function (context) {
  14. add("3181fc86", content, true, context)
  15. };
  16. /***/ }),
  17. /***/ 137:
  18. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  19. "use strict";
  20. // ESM COMPAT FLAG
  21. __webpack_require__.r(__webpack_exports__);
  22. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/price-formate.vue?vue&type=template&id=0c4d5c85&
  23. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:(_vm.lineThrough ? 'line-through' : '') + 'price-format',style:({ color: _vm.color, 'font-weight': _vm.weight })},[_vm._ssrNode(((_vm.showSubscript)?("<span"+(_vm._ssrStyle(null,{
  24. 'font-size': _vm.subscriptSize + 'px',
  25. 'margin-right': '1px',
  26. }, null))+">¥</span>"):"<!---->")+" <span"+(_vm._ssrStyle(null,{ 'font-size': _vm.firstSize + 'px', 'margin-right': '1px' }, null))+">"+_vm._ssrEscape(_vm._s(_vm.priceSlice.first))+"</span> "+((_vm.priceSlice.second)?("<span"+(_vm._ssrStyle(null,{ 'font-size': _vm.secondSize + 'px' }, null))+">"+_vm._ssrEscape("."+_vm._s(_vm.priceSlice.second))+"</span>"):"<!---->"))])}
  27. var staticRenderFns = []
  28. // CONCATENATED MODULE: ./components/price-formate.vue?vue&type=template&id=0c4d5c85&
  29. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/price-formate.vue?vue&type=script&lang=js&
  30. //
  31. //
  32. //
  33. //
  34. //
  35. //
  36. //
  37. //
  38. //
  39. //
  40. //
  41. //
  42. //
  43. //
  44. //
  45. //
  46. //
  47. //
  48. //
  49. //
  50. //
  51. //
  52. //
  53. //
  54. //
  55. /* harmony default export */ var price_formatevue_type_script_lang_js_ = ({
  56. data() {
  57. return {
  58. priceSlice: {}
  59. };
  60. },
  61. components: {},
  62. props: {
  63. firstSize: {
  64. type: Number,
  65. default: 14
  66. },
  67. secondSize: {
  68. type: Number,
  69. default: 14
  70. },
  71. color: {
  72. type: String
  73. },
  74. weight: {
  75. type: [String, Number],
  76. default: 400
  77. },
  78. price: {
  79. type: [String, Number],
  80. default: ''
  81. },
  82. showSubscript: {
  83. type: Boolean,
  84. default: true
  85. },
  86. subscriptSize: {
  87. type: Number,
  88. default: 14
  89. },
  90. lineThrough: {
  91. type: Boolean,
  92. default: false
  93. }
  94. },
  95. created() {
  96. this.priceFormat();
  97. },
  98. watch: {
  99. price(val) {
  100. this.priceFormat();
  101. }
  102. },
  103. methods: {
  104. priceFormat() {
  105. let {
  106. price
  107. } = this;
  108. let priceSlice = {};
  109. if (price !== null) {
  110. price = parseFloat(price);
  111. price = String(price).split('.');
  112. priceSlice.first = price[0];
  113. priceSlice.second = price[1];
  114. this.priceSlice = priceSlice;
  115. }
  116. }
  117. }
  118. });
  119. // CONCATENATED MODULE: ./components/price-formate.vue?vue&type=script&lang=js&
  120. /* harmony default export */ var components_price_formatevue_type_script_lang_js_ = (price_formatevue_type_script_lang_js_);
  121. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  122. var componentNormalizer = __webpack_require__(1);
  123. // CONCATENATED MODULE: ./components/price-formate.vue
  124. function injectStyles (context) {
  125. var style0 = __webpack_require__(138)
  126. if (style0.__inject__) style0.__inject__(context)
  127. }
  128. /* normalize component */
  129. var component = Object(componentNormalizer["a" /* default */])(
  130. components_price_formatevue_type_script_lang_js_,
  131. render,
  132. staticRenderFns,
  133. false,
  134. injectStyles,
  135. null,
  136. "7ae24710"
  137. )
  138. /* harmony default export */ var price_formate = __webpack_exports__["default"] = (component.exports);
  139. /***/ }),
  140. /***/ 138:
  141. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  142. "use strict";
  143. __webpack_require__.r(__webpack_exports__);
  144. /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_price_formate_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(136);
  145. /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_price_formate_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_price_formate_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);
  146. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_price_formate_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_price_formate_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  147. /***/ }),
  148. /***/ 139:
  149. /***/ (function(module, exports, __webpack_require__) {
  150. // Imports
  151. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(3);
  152. var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
  153. // Module
  154. ___CSS_LOADER_EXPORT___.push([module.i, ".price-format{display:flex;align-items:baseline}", ""]);
  155. // Exports
  156. module.exports = ___CSS_LOADER_EXPORT___;
  157. /***/ }),
  158. /***/ 144:
  159. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  160. "use strict";
  161. // ESM COMPAT FLAG
  162. __webpack_require__.r(__webpack_exports__);
  163. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/count-down.vue?vue&type=template&id=2fbaab86&
  164. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.time >= 0)?_c('div',[_c('client-only',[(_vm.isSlot)?_vm._t("default"):_c('span',[_vm._v(_vm._s(_vm.formateTime))])],2)],1):_vm._e()}
  165. var staticRenderFns = []
  166. // CONCATENATED MODULE: ./components/count-down.vue?vue&type=template&id=2fbaab86&
  167. // CONCATENATED MODULE: ./utils/parseTime.js
  168. const SECOND = 1000;
  169. const MINUTE = 60 * SECOND;
  170. const HOUR = 60 * MINUTE;
  171. const DAY = 24 * HOUR;
  172. function parseTimeData(time) {
  173. const days = Math.floor(time / DAY);
  174. const hours = sliceTwo(Math.floor(time % DAY / HOUR));
  175. const minutes = sliceTwo(Math.floor(time % HOUR / MINUTE));
  176. const seconds = sliceTwo(Math.floor(time % MINUTE / SECOND));
  177. return {
  178. days: days,
  179. hours: hours,
  180. minutes: minutes,
  181. seconds: seconds
  182. };
  183. }
  184. function sliceTwo(str) {
  185. return (0 + str.toString()).slice(-2);
  186. }
  187. function parseFormat(format, timeData) {
  188. let days = timeData.days;
  189. let hours = timeData.hours,
  190. minutes = timeData.minutes,
  191. seconds = timeData.seconds;
  192. if (format.indexOf('dd') !== -1) {
  193. format = format.replace('dd', days);
  194. }
  195. if (format.indexOf('hh') !== -1) {
  196. format = format.replace('hh', sliceTwo(hours));
  197. }
  198. if (format.indexOf('mm') !== -1) {
  199. format = format.replace('mm', sliceTwo(minutes));
  200. }
  201. if (format.indexOf('ss') !== -1) {
  202. format = format.replace('ss', sliceTwo(seconds));
  203. }
  204. return format;
  205. }
  206. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/count-down.vue?vue&type=script&lang=js&
  207. //
  208. //
  209. //
  210. //
  211. //
  212. //
  213. //
  214. //
  215. //
  216. /* harmony default export */ var count_downvue_type_script_lang_js_ = ({
  217. components: {},
  218. props: {
  219. isSlot: {
  220. type: Boolean,
  221. default: false
  222. },
  223. time: {
  224. type: Number,
  225. default: 0
  226. },
  227. format: {
  228. type: String,
  229. default: 'hh:mm:ss'
  230. },
  231. autoStart: {
  232. type: Boolean,
  233. default: true
  234. }
  235. },
  236. watch: {
  237. time: {
  238. immediate: true,
  239. handler(value) {
  240. if (value) {
  241. this.reset();
  242. }
  243. }
  244. }
  245. },
  246. data() {
  247. return {
  248. timeObj: {},
  249. formateTime: 0
  250. };
  251. },
  252. created() {},
  253. computed: {},
  254. methods: {
  255. createTimer(fn) {
  256. return setTimeout(fn, 100);
  257. },
  258. isSameSecond(time1, time2) {
  259. return Math.floor(time1) === Math.floor(time2);
  260. },
  261. start() {
  262. if (this.counting) {
  263. return;
  264. }
  265. this.counting = true;
  266. this.endTime = Date.now() + this.remain * 1000;
  267. this.setTimer();
  268. },
  269. setTimer() {
  270. this.tid = this.createTimer(() => {
  271. let remain = this.getRemain();
  272. if (!this.isSameSecond(remain, this.remain) || remain === 0) {
  273. this.setRemain(remain);
  274. }
  275. if (this.remain !== 0) {
  276. this.setTimer();
  277. }
  278. });
  279. },
  280. getRemain() {
  281. return Math.max(this.endTime - Date.now(), 0);
  282. },
  283. pause() {
  284. this.counting = false;
  285. clearTimeout(this.tid);
  286. },
  287. reset() {
  288. this.pause();
  289. this.remain = this.time;
  290. this.setRemain(this.remain);
  291. if (this.autoStart) {
  292. this.start();
  293. }
  294. },
  295. setRemain(remain) {
  296. const {
  297. format
  298. } = this;
  299. this.remain = remain;
  300. const timeData = parseTimeData(remain);
  301. this.formateTime = parseFormat(format, timeData);
  302. this.$emit('change', timeData);
  303. if (remain === 0) {
  304. this.pause();
  305. this.$emit('finish');
  306. }
  307. }
  308. }
  309. });
  310. // CONCATENATED MODULE: ./components/count-down.vue?vue&type=script&lang=js&
  311. /* harmony default export */ var components_count_downvue_type_script_lang_js_ = (count_downvue_type_script_lang_js_);
  312. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  313. var componentNormalizer = __webpack_require__(1);
  314. // CONCATENATED MODULE: ./components/count-down.vue
  315. function injectStyles (context) {
  316. }
  317. /* normalize component */
  318. var component = Object(componentNormalizer["a" /* default */])(
  319. components_count_downvue_type_script_lang_js_,
  320. render,
  321. staticRenderFns,
  322. false,
  323. injectStyles,
  324. null,
  325. "4090b4e2"
  326. )
  327. /* harmony default export */ var count_down = __webpack_exports__["default"] = (component.exports);
  328. /***/ }),
  329. /***/ 189:
  330. /***/ (function(module, exports, __webpack_require__) {
  331. // style-loader: Adds some css to the DOM by adding a <style> tag
  332. // load the styles
  333. var content = __webpack_require__(209);
  334. if(content.__esModule) content = content.default;
  335. if(typeof content === 'string') content = [[module.i, content, '']];
  336. if(content.locals) module.exports = content.locals;
  337. // add CSS to SSR context
  338. var add = __webpack_require__(4).default
  339. module.exports.__inject__ = function (context) {
  340. add("08771ebd", content, true, context)
  341. };
  342. /***/ }),
  343. /***/ 208:
  344. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  345. "use strict";
  346. __webpack_require__.r(__webpack_exports__);
  347. /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_home_seckill_vue_vue_type_style_index_0_id_784969e4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(189);
  348. /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_home_seckill_vue_vue_type_style_index_0_id_784969e4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_home_seckill_vue_vue_type_style_index_0_id_784969e4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  349. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_home_seckill_vue_vue_type_style_index_0_id_784969e4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_home_seckill_vue_vue_type_style_index_0_id_784969e4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  350. /***/ }),
  351. /***/ 209:
  352. /***/ (function(module, exports, __webpack_require__) {
  353. // Imports
  354. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(3);
  355. var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
  356. // Module
  357. ___CSS_LOADER_EXPORT___.push([module.i, ".seckill .seckill-header .count-down .item[data-v-784969e4]{width:38px;height:20px;background:#ff2c3c;text-align:center;line-height:20px;border-radius:4px}.seckill[data-v-784969e4] .el-carousel__indicator .el-carousel__button{background-color:#e5e5e5}.seckill[data-v-784969e4] .el-carousel__indicator.is-active .el-carousel__button{background-color:#ff2c3c}.seckill .goods-list .goods-item[data-v-784969e4]{width:216px}.seckill .goods-list .goods-item~.goods-item[data-v-784969e4]{margin-left:16px}.seckill .goods-list .goods-item .goods-img[data-v-784969e4]{width:100%;height:0;padding-top:100%;position:relative}.seckill .goods-list .goods-item .goods-img[data-v-784969e4] .el-image{position:absolute;width:100%;height:100%;left:0;top:0}.seckill .goods-list .goods-item .name[data-v-784969e4]{line-height:20px;height:40px}", ""]);
  358. // Exports
  359. module.exports = ___CSS_LOADER_EXPORT___;
  360. /***/ }),
  361. /***/ 212:
  362. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  363. "use strict";
  364. // ESM COMPAT FLAG
  365. __webpack_require__.r(__webpack_exports__);
  366. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/home-seckill.vue?vue&type=template&id=784969e4&scoped=true&
  367. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.goodsList.length)?_c('div',{staticClass:"seckill card"},[_vm._ssrNode("<div class=\"seckill-header flex\" data-v-784969e4>","</div>",[_vm._ssrNode("<div class=\"title font-size-20\" data-v-784969e4>限时秒杀</div> "),_vm._ssrNode("<div class=\"flex-1 flex\" data-v-784969e4>","</div>",[_vm._ssrNode("<i class=\"\n el-icon-alarm-clock\n primary\n font-size-24\n m-l-20 m-r-10\n \" data-v-784969e4></i> "),_c('count-down',{attrs:{"time":_vm.countTime,"is-slot":true},on:{"change":_vm.onChangeDate,"finish":_vm.refresh}},[_c('div',{staticClass:"flex row-center count-down xs"},[_c('div',{staticClass:"item white"},[_vm._v(_vm._s(_vm.timeData.hours)+"时")]),_vm._v(" "),_c('div',{staticClass:"white",staticStyle:{"margin":"0 4px"}},[_vm._v(":")]),_vm._v(" "),_c('div',{staticClass:"item white"},[_vm._v(_vm._s(_vm.timeData.minutes)+"分")]),_vm._v(" "),_c('div',{staticClass:"white",staticStyle:{"margin":"0 4px"}},[_vm._v(":")]),_vm._v(" "),_c('div',{staticClass:"item white"},[_vm._v(_vm._s(_vm.timeData.seconds)+"秒")])])])],2),_vm._ssrNode(" "),_c('nuxt-link',{staticClass:"more lighter",attrs:{"to":"/seckill"}},[_vm._v("更多 "),_c('i',{staticClass:"el-icon-arrow-right"})])],2),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"seckill-list m-t-16\" data-v-784969e4>","</div>",[_c('el-carousel',{attrs:{"interval":3000,"arrow":"never","height":"320px","indicator-position":"outside"}},_vm._l((_vm.swiperSize),function(item,index){return _c('el-carousel-item',{key:index},[_c('div',{staticClass:"goods-list flex"},_vm._l((_vm.getSwiperList(index)),function(gitem,gindex){return _c('nuxt-link',{key:gindex,staticClass:"goods-item",attrs:{"to":("/goods_details/" + (gitem.goods_id))}},[_c('div',{staticClass:"goods-img"},[_c('el-image',{attrs:{"src":gitem.goods_image,"fit":"cover","alt":""}})],1),_vm._v(" "),_c('div',{staticClass:"name line-2 m-t-10"},[_vm._v("\n "+_vm._s(gitem.goods_name)+"\n ")]),_vm._v(" "),_c('div',{staticClass:"price flex col-baseline"},[_c('div',{staticClass:"primary m-r-8"},[_c('price-formate',{attrs:{"price":gitem.seckill_price,"first-size":16}})],1),_vm._v(" "),_c('div',{staticClass:"muted sm line-through"},[_c('price-formate',{attrs:{"price":gitem.seckill_total}})],1)]),_vm._v(" "),_c('div',{staticClass:"muted xs m-t-10"},[_vm._v("\n "+_vm._s(gitem.seckill_total)+"人购买\n ")])])}),1)])}),1)],1)],2):_vm._e()}
  368. var staticRenderFns = []
  369. // CONCATENATED MODULE: ./components/home-seckill.vue?vue&type=template&id=784969e4&scoped=true&
  370. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/home-seckill.vue?vue&type=script&lang=js&
  371. //
  372. //
  373. //
  374. //
  375. //
  376. //
  377. //
  378. //
  379. //
  380. //
  381. //
  382. //
  383. //
  384. //
  385. //
  386. //
  387. //
  388. //
  389. //
  390. //
  391. //
  392. //
  393. //
  394. //
  395. //
  396. //
  397. //
  398. //
  399. //
  400. //
  401. //
  402. //
  403. //
  404. //
  405. //
  406. //
  407. //
  408. //
  409. //
  410. //
  411. //
  412. //
  413. //
  414. //
  415. //
  416. //
  417. //
  418. //
  419. //
  420. //
  421. //
  422. //
  423. //
  424. //
  425. //
  426. //
  427. //
  428. //
  429. //
  430. //
  431. //
  432. //
  433. //
  434. //
  435. //
  436. //
  437. //
  438. //
  439. //
  440. //
  441. //
  442. //
  443. //
  444. //
  445. //
  446. //
  447. //
  448. //
  449. //
  450. //
  451. /* harmony default export */ var home_seckillvue_type_script_lang_js_ = ({
  452. components: {},
  453. props: {
  454. list: {
  455. type: Array,
  456. default: () => []
  457. }
  458. },
  459. data() {
  460. return {
  461. active: -1,
  462. goodsList: [],
  463. countTime: 0,
  464. timeData: {},
  465. pageSize: 5
  466. };
  467. },
  468. methods: {
  469. refresh() {
  470. this.$emit('refreshhome');
  471. },
  472. onChangeDate(e) {
  473. let timeData = {};
  474. for (let prop in e) {
  475. if (prop !== 'milliseconds') timeData[prop] = ('0' + e[prop]).slice(-2);
  476. }
  477. this.timeData = timeData;
  478. }
  479. },
  480. watch: {
  481. list: {
  482. handler(val) {
  483. // 抢购中
  484. let index = val.findIndex(item => item.status == 1);
  485. if (index == -1) {
  486. // 未开始
  487. index = val.findIndex(item => item.status == 0);
  488. }
  489. if (index == -1) {
  490. // 全部结束选中最后一个
  491. index = val.length - 1;
  492. }
  493. this.active = index;
  494. this.goodsList = val[index].goods;
  495. this.countTime = val[index].end_time_int - Date.now() / 1000;
  496. },
  497. immediate: true
  498. }
  499. },
  500. computed: {
  501. swiperSize() {
  502. console.log(Math.ceil(this.goodsList.length / this.pageSize));
  503. return Math.ceil(this.goodsList.length / this.pageSize);
  504. },
  505. getSwiperList() {
  506. return index => {
  507. return this.goodsList.slice(index * this.pageSize, (index + 1) * this.pageSize);
  508. };
  509. }
  510. }
  511. });
  512. // CONCATENATED MODULE: ./components/home-seckill.vue?vue&type=script&lang=js&
  513. /* harmony default export */ var components_home_seckillvue_type_script_lang_js_ = (home_seckillvue_type_script_lang_js_);
  514. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  515. var componentNormalizer = __webpack_require__(1);
  516. // CONCATENATED MODULE: ./components/home-seckill.vue
  517. function injectStyles (context) {
  518. var style0 = __webpack_require__(208)
  519. if (style0.__inject__) style0.__inject__(context)
  520. }
  521. /* normalize component */
  522. var component = Object(componentNormalizer["a" /* default */])(
  523. components_home_seckillvue_type_script_lang_js_,
  524. render,
  525. staticRenderFns,
  526. false,
  527. injectStyles,
  528. "784969e4",
  529. "6cf16383"
  530. )
  531. /* harmony default export */ var home_seckill = __webpack_exports__["default"] = (component.exports);
  532. /* nuxt-component-imports */
  533. installComponents(component, {CountDown: __webpack_require__(144).default,PriceFormate: __webpack_require__(137).default})
  534. /***/ })
  535. };;
  536. //# sourceMappingURL=home-seckill.js.map