details.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. var utils = require("../../../utils/helper.js"),
  2. WxParse = require("../../../wxParse/wxParse.js"),
  3. gSpecificationsModel = require("../../../components/goods/specifications_model.js"),
  4. goodsBanner = require("../../../components/goods/goods_banner.js"),
  5. goodsInfo = require("../../../components/goods/goods_info.js"),
  6. goodsBuy = require("../../../components/goods/goods_buy.js");
  7. Page({
  8. data: {
  9. pageType: "PINTUAN",
  10. hide: "hide",
  11. form: {
  12. number: 1,
  13. pt_detail: !1
  14. }
  15. },
  16. onLoad: function (t) {
  17. getApp().page.onLoad(this, t);
  18. var e = t.user_id,
  19. a = decodeURIComponent(t.scene);
  20. if (void 0 !== e) e;
  21. else if (void 0 !== a) {
  22. var i = utils.scene_decode(a);
  23. i.uid && i.gid ? (i.uid, t.gid = i.gid) : a
  24. } else if ("undefined" != typeof my && null !== getApp().query) {
  25. var o = getApp().query;
  26. getApp().query = null, t.id = o.gid
  27. }
  28. this.setData({
  29. id: t.gid,
  30. oid: t.oid ? t.oid : 0,
  31. group_checked: t.group_id ? t.group_id : 0
  32. }), this.getGoodsInfo(t);
  33. var r = getApp().core.getStorageSync(getApp().const.STORE);
  34. this.setData({
  35. store: r
  36. })
  37. },
  38. onReady: function () {
  39. getApp().page.onReady(this)
  40. },
  41. onShow: function () {
  42. getApp().page.onShow(this), gSpecificationsModel.init(this), goodsBanner.init(this), goodsInfo.init(this), goodsBuy.init(this)
  43. },
  44. onHide: function () {
  45. getApp().page.onHide(this)
  46. },
  47. onUnload: function () {
  48. getApp().page.onUnload(this), getApp().core.removeStorageSync(getApp().const.PT_GROUP_DETAIL)
  49. },
  50. onPullDownRefresh: function () {
  51. getApp().page.onPullDownRefresh(this)
  52. },
  53. onReachBottom: function () {
  54. getApp().page.onReachBottom(this)
  55. },
  56. onShareAppMessage: function () {
  57. getApp().page.onShareAppMessage(this);
  58. var t = this,
  59. e = getApp().core.getStorageSync(getApp().const.USER_INFO),
  60. a = "/pages/pt/details/details?gid=" + t.data.goods.id + "&user_id=" + e.id;
  61. return {
  62. title: t.data.goods.name,
  63. path: a,
  64. imageUrl: t.data.goods.cover_pic,
  65. success: function (t) {}
  66. }
  67. },
  68. getGoodsInfo: function (t) {
  69. var e = t.gid,
  70. o = this;
  71. getApp().core.showLoading({
  72. title: "正在加载",
  73. mask: !0
  74. }), getApp().core.showNavigationBarLoading(), getApp().request({
  75. url: getApp().api.group.details,
  76. method: "get",
  77. data: {
  78. gid: e
  79. },
  80. success: function (t) {
  81. if (0 == t.code) {
  82. o.countDownRun(t.data.info.limit_time_ms);
  83. var e = t.data.info.detail;
  84. WxParse.wxParse("detail", "html", e, o), getApp().core.setNavigationBarTitle({
  85. title: t.data.info.name
  86. }), getApp().core.hideNavigationBarLoading();
  87. var a = (t.data.info.original_price - t.data.info.price).toFixed(2),
  88. i = t.data.info;
  89. i.service_list = t.data.info.service, o.setData({
  90. group_checked: o.data.group_checked ? o.data.group_checked : 0,
  91. goods: i,
  92. attr_group_list: t.data.attr_group_list,
  93. attr_group_num: t.data.attr_group_num,
  94. limit_time: t.data.limit_time_res,
  95. group_list: t.data.groupList,
  96. group_num: t.data.groupList.length,
  97. group_rule_id: t.data.groupRuleId,
  98. comment: t.data.comment,
  99. comment_num: t.data.commentNum,
  100. reduce_price: a < 0 ? 0 : a
  101. }), o.countDown(), o.selectDefaultAttr()
  102. } else getApp().core.showModal({
  103. title: "提示",
  104. content: t.msg,
  105. showCancel: !1,
  106. success: function (t) {
  107. t.confirm && getApp().core.redirectTo({
  108. url: "/pages/pt/index/index"
  109. })
  110. }
  111. })
  112. },
  113. complete: function (t) {
  114. getApp().core.hideLoading()
  115. }
  116. })
  117. },
  118. more: function () {
  119. this.setData({
  120. pt_detail: !0
  121. })
  122. },
  123. end_more: function () {
  124. this.setData({
  125. pt_detail: !1
  126. })
  127. },
  128. previewImage: function (t) {
  129. var e = t.currentTarget.dataset.url;
  130. getApp().core.previewImage({
  131. urls: [e]
  132. })
  133. },
  134. selectDefaultAttr: function () {
  135. var t = this;
  136. if (!t.data.goods || "0" === t.data.goods.use_attr)
  137. for (var e in t.data.attr_group_list)
  138. for (var a in t.data.attr_group_list[e].attr_list) 0 == e && 0 == a && (t.data.attr_group_list[e].attr_list[a].checked = !0);
  139. t.setData({
  140. attr_group_list: t.data.attr_group_list
  141. })
  142. },
  143. countDownRun: function (r) {
  144. var s = this;
  145. setInterval(function () {
  146. var t = new Date(r[0], r[1] - 1, r[2], r[3], r[4], r[5]) - new Date,
  147. e = parseInt(t / 1e3 / 60 / 60 / 24, 10),
  148. a = parseInt(t / 1e3 / 60 / 60 % 24, 10),
  149. i = parseInt(t / 1e3 / 60 % 60, 10),
  150. o = parseInt(t / 1e3 % 60, 10);
  151. e = s.checkTime(e), a = s.checkTime(a), i = s.checkTime(i), o = s.checkTime(o), s.setData({
  152. limit_time: {
  153. days: e < 0 ? "00" : e,
  154. hours: a < 0 ? "00" : a,
  155. mins: i < 0 ? "00" : i,
  156. secs: o < 0 ? "00" : o
  157. }
  158. })
  159. }, 1e3)
  160. },
  161. checkTime: function (t) {
  162. return t < 0 ? "00" : (t < 10 && (t = "0" + t), t)
  163. },
  164. goToGroup: function (t) {
  165. getApp().core.navigateTo({
  166. url: "/pages/pt/group/details?oid=" + t.target.dataset.id
  167. })
  168. },
  169. goToComment: function (t) {
  170. getApp().core.navigateTo({
  171. url: "/pages/pt/comment/comment?id=" + this.data.goods.id
  172. })
  173. },
  174. goArticle: function (t) {
  175. this.data.group_rule_id && getApp().core.navigateTo({
  176. url: "/pages/article-detail/article-detail?id=" + this.data.group_rule_id
  177. })
  178. },
  179. buyNow: function () {
  180. this.submit("GROUP_BUY", this.data.group_checked)
  181. },
  182. onlyBuy: function () {
  183. this.submit("ONLY_BUY", 0)
  184. },
  185. submit: function (t, e) {
  186. var a = this,
  187. i = "GROUP_BUY" == t;
  188. if (!a.data.show_attr_picker || i != a.data.groupNum) return a.setData({
  189. show_attr_picker: !0,
  190. groupNum: i
  191. }), !0;
  192. if (a.data.form.number > a.data.goods.num) return getApp().core.showToast({
  193. title: "商品库存不足,请选择其它规格或数量",
  194. image: "/images/icon-warning.png"
  195. }), !0;
  196. var o = a.data.attr_group_list,
  197. r = [];
  198. for (var s in o) {
  199. var n = !1;
  200. for (var d in o[s].attr_list)
  201. if (o[s].attr_list[d].checked) {
  202. n = {
  203. attr_id: o[s].attr_list[d].attr_id,
  204. attr_name: o[s].attr_list[d].attr_name
  205. };
  206. break
  207. } if (!n) return getApp().core.showToast({
  208. title: "请选择" + o[s].attr_group_name,
  209. image: "/images/icon-warning.png"
  210. }), !0;
  211. r.push({
  212. attr_group_id: o[s].attr_group_id,
  213. attr_group_name: o[s].attr_group_name,
  214. attr_id: n.attr_id,
  215. attr_name: n.attr_name
  216. })
  217. }
  218. a.setData({
  219. show_attr_picker: !1
  220. });
  221. var p = 0;
  222. a.data.oid && (t = "GROUP_BUY_C", p = a.data.oid), getApp().core.redirectTo({
  223. url: "/pages/pt/order-submit/order-submit?goods_info=" + JSON.stringify({
  224. goods_id: a.data.goods.id,
  225. attr: r,
  226. num: a.data.form.number,
  227. type: t,
  228. deliver_type: a.data.goods.type,
  229. group_id: e,
  230. parent_id: p
  231. })
  232. })
  233. },
  234. countDown: function () {
  235. var n = this;
  236. setInterval(function () {
  237. var t = n.data.group_list;
  238. for (var e in t) {
  239. var a = new Date(t[e].limit_time_ms[0], t[e].limit_time_ms[1] - 1, t[e].limit_time_ms[2], t[e].limit_time_ms[3], t[e].limit_time_ms[4], t[e].limit_time_ms[5]) - new Date,
  240. i = parseInt(a / 1e3 / 60 / 60 / 24, 10),
  241. o = parseInt(a / 1e3 / 60 / 60 % 24, 10),
  242. r = parseInt(a / 1e3 / 60 % 60, 10),
  243. s = parseInt(a / 1e3 % 60, 10);
  244. i = n.checkTime(i), o = n.checkTime(o), r = n.checkTime(r), s = n.checkTime(s), t[e].limit_time = {
  245. days: i,
  246. hours: 0 < o ? o : "00",
  247. mins: 0 < r ? r : "00",
  248. secs: 0 < s ? s : "00"
  249. }, n.setData({
  250. group_list: t
  251. })
  252. }
  253. }, 1e3)
  254. },
  255. bigToImage: function (t) {
  256. var e = this.data.comment[t.target.dataset.index].pic_list;
  257. getApp().core.previewImage({
  258. current: t.target.dataset.url,
  259. urls: e
  260. })
  261. },
  262. groupCheck: function () {
  263. var a = this,
  264. t = a.data.attr_group_num,
  265. e = a.data.attr_group_num.attr_list;
  266. for (var i in e) e[i].checked = !1;
  267. t.attr_list = e;
  268. a.data.goods;
  269. a.setData({
  270. group_checked: 0,
  271. attr_group_num: t
  272. });
  273. var o = a.data.attr_group_list,
  274. r = [],
  275. s = !0;
  276. for (var i in o) {
  277. var n = !1;
  278. for (var d in o[i].attr_list)
  279. if (o[i].attr_list[d].checked) {
  280. r.push(o[i].attr_list[d].attr_id), n = !0;
  281. break
  282. } if (!n) {
  283. s = !1;
  284. break
  285. }
  286. }
  287. s && (getApp().core.showLoading({
  288. title: "正在加载",
  289. mask: !0
  290. }), getApp().request({
  291. url: getApp().api.group.goods_attr_info,
  292. data: {
  293. goods_id: a.data.goods.id,
  294. group_id: a.data.group_checked,
  295. attr_list: JSON.stringify(r)
  296. },
  297. success: function (t) {
  298. if (getApp().core.hideLoading(), 0 == t.code) {
  299. var e = a.data.goods;
  300. e.price = t.data.price, e.num = t.data.num, e.attr_pic = t.data.pic, e.single_price = t.data.single_price ? t.data.single_price : 0, e.group_price = t.data.price, e.is_member_price = t.data.is_member_price, a.setData({
  301. goods: e
  302. })
  303. }
  304. }
  305. }))
  306. },
  307. attrNumClick: function (t) {
  308. var a = this,
  309. e = t.target.dataset.id,
  310. i = a.data.attr_group_num,
  311. o = i.attr_list;
  312. for (var r in o) o[r].id == e ? o[r].checked = !0 : o[r].checked = !1;
  313. i.attr_list = o, a.setData({
  314. attr_group_num: i,
  315. group_checked: e
  316. });
  317. var s = a.data.attr_group_list,
  318. n = [],
  319. d = !0;
  320. for (var r in s) {
  321. var p = !1;
  322. for (var g in s[r].attr_list)
  323. if (s[r].attr_list[g].checked) {
  324. n.push(s[r].attr_list[g].attr_id), p = !0;
  325. break
  326. } if (!p) {
  327. d = !1;
  328. break
  329. }
  330. }
  331. d && (getApp().core.showLoading({
  332. title: "正在加载",
  333. mask: !0
  334. }), getApp().request({
  335. url: getApp().api.group.goods_attr_info,
  336. data: {
  337. goods_id: a.data.goods.id,
  338. group_id: a.data.group_checked,
  339. attr_list: JSON.stringify(n)
  340. },
  341. success: function (t) {
  342. if (getApp().core.hideLoading(), 0 == t.code) {
  343. var e = a.data.goods;
  344. e.price = t.data.price, e.num = t.data.num, e.attr_pic = t.data.pic, e.single_price = t.data.single_price ? t.data.single_price : 0, e.group_price = t.data.price, e.is_member_price = t.data.is_member_price, a.setData({
  345. goods: e
  346. })
  347. }
  348. }
  349. }))
  350. }
  351. });