s-goods-card.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. "use strict";
  2. const common_vendor = require("../../../common/vendor.js");
  3. const sheep_index = require("../../index.js");
  4. const sheep_api_product_spu = require("../../api/product/spu.js");
  5. require("../../url/index.js");
  6. require("../../store/index.js");
  7. require("../../store/app.js");
  8. require("../../api/promotion/diy.js");
  9. require("../../request/index.js");
  10. require("../../config/index.js");
  11. require("../../platform/index.js");
  12. require("../../platform/provider/wechat/index.js");
  13. require("../../platform/provider/wechat/miniProgram.js");
  14. require("../../api/member/auth.js");
  15. require("../../api/member/social.js");
  16. require("../../api/member/user.js");
  17. require("../../platform/provider/apple/index.js");
  18. require("../../platform/share.js");
  19. require("../../router/index.js");
  20. require("../../hooks/useModal.js");
  21. require("../../helper/index.js");
  22. require("../../helper/test.js");
  23. require("../../helper/digit.js");
  24. require("../../helper/throttle.js");
  25. require("../../platform/pay.js");
  26. require("../../api/pay/order.js");
  27. require("../../store/user.js");
  28. require("../../store/cart.js");
  29. require("../../api/trade/cart.js");
  30. require("../../api/pay/wallet.js");
  31. require("../../api/trade/order.js");
  32. require("../../api/promotion/coupon.js");
  33. require("../../store/sys.js");
  34. require("../../store/modal.js");
  35. require("../../config/zIndex.js");
  36. if (!Array) {
  37. const _easycom_s_goods_column2 = common_vendor.resolveComponent("s-goods-column");
  38. _easycom_s_goods_column2();
  39. }
  40. const _easycom_s_goods_column = () => "../s-goods-column/s-goods-column.js";
  41. if (!Math) {
  42. _easycom_s_goods_column();
  43. }
  44. const _sfc_main = {
  45. __name: "s-goods-card",
  46. props: {
  47. data: {
  48. type: Object,
  49. default() {
  50. }
  51. },
  52. styles: {
  53. type: Object,
  54. default() {
  55. }
  56. }
  57. },
  58. setup(__props) {
  59. const props = __props;
  60. const LayoutTypeEnum = {
  61. // 单列大图
  62. ONE_COL_BIG_IMG: "oneColBigImg",
  63. // 双列
  64. TWO_COL: "twoCol",
  65. // 单列小图
  66. ONE_COL_SMALL_IMG: "oneColSmallImg"
  67. };
  68. const state = common_vendor.reactive({
  69. goodsList: [],
  70. leftGoodsList: [],
  71. rightGoodsList: []
  72. });
  73. const { layoutType, btnBuy, spuIds } = props.data ?? {};
  74. const { marginLeft, marginRight } = props.styles ?? {};
  75. const buyStyle = common_vendor.computed(() => {
  76. if (btnBuy.type === "text") {
  77. return {
  78. background: `linear-gradient(to right, ${btnBuy.bgBeginColor}, ${btnBuy.bgEndColor})`
  79. };
  80. }
  81. if (btnBuy.type === "img") {
  82. return {
  83. width: "54rpx",
  84. height: "54rpx",
  85. background: `url(${sheep_index.sheep.$url.cdn(btnBuy.imgUrl)}) no-repeat`,
  86. backgroundSize: "100% 100%"
  87. };
  88. }
  89. });
  90. let count = 0;
  91. let leftHeight = 0;
  92. let rightHeight = 0;
  93. function calculateGoodsColumn(height = 0, where = "left") {
  94. if (!state.goodsList[count])
  95. return;
  96. if (where === "left")
  97. leftHeight += height;
  98. if (where === "right")
  99. rightHeight += height;
  100. if (leftHeight <= rightHeight) {
  101. state.leftGoodsList.push(state.goodsList[count]);
  102. } else {
  103. state.rightGoodsList.push(state.goodsList[count]);
  104. }
  105. count++;
  106. }
  107. async function getGoodsListByIds(ids) {
  108. const { data } = await sheep_api_product_spu.SpuApi.getSpuListByIds(ids);
  109. return data;
  110. }
  111. common_vendor.onMounted(async () => {
  112. state.goodsList = await getGoodsListByIds(spuIds.join(","));
  113. if (layoutType === LayoutTypeEnum.TWO_COL) {
  114. calculateGoodsColumn();
  115. }
  116. });
  117. return (_ctx, _cache) => {
  118. return common_vendor.e({
  119. a: common_vendor.unref(layoutType) === LayoutTypeEnum.ONE_COL_BIG_IMG && state.goodsList.length
  120. }, common_vendor.unref(layoutType) === LayoutTypeEnum.ONE_COL_BIG_IMG && state.goodsList.length ? {
  121. b: common_vendor.f(state.goodsList, (item, k0, i0) => {
  122. var _a;
  123. return {
  124. a: common_vendor.o(($event) => common_vendor.unref(sheep_index.sheep).$router.go("/pages/goods/index", {
  125. id: item.id
  126. }), item.id),
  127. b: "edfbd448-0-" + i0,
  128. c: common_vendor.p({
  129. size: "sl",
  130. goodsFields: __props.data.fields,
  131. tagStyle: __props.data.badge,
  132. data: item,
  133. titleColor: (_a = __props.data.fields.name) == null ? void 0 : _a.color,
  134. subTitleColor: __props.data.fields.introduction.color,
  135. topRadius: __props.data.borderRadiusTop,
  136. bottomRadius: __props.data.borderRadiusBottom
  137. }),
  138. d: item.id
  139. };
  140. }),
  141. c: common_vendor.t(common_vendor.unref(btnBuy).type === "text" ? common_vendor.unref(btnBuy).text : ""),
  142. d: common_vendor.s(common_vendor.unref(buyStyle)),
  143. e: common_vendor.s({
  144. marginBottom: __props.data.space * 2 + "rpx"
  145. })
  146. } : {}, {
  147. f: common_vendor.unref(layoutType) === LayoutTypeEnum.TWO_COL && state.goodsList.length
  148. }, common_vendor.unref(layoutType) === LayoutTypeEnum.TWO_COL && state.goodsList.length ? {
  149. g: common_vendor.f(state.leftGoodsList, (item, k0, i0) => {
  150. var _a;
  151. return {
  152. a: common_vendor.o(($event) => common_vendor.unref(sheep_index.sheep).$router.go("/pages/goods/index", {
  153. id: item.id
  154. }), item.id),
  155. b: common_vendor.o(($event) => calculateGoodsColumn($event, "left"), item.id),
  156. c: "edfbd448-1-" + i0,
  157. d: common_vendor.p({
  158. size: "md",
  159. goodsFields: __props.data.fields,
  160. tagStyle: __props.data.badge,
  161. data: item,
  162. titleColor: (_a = __props.data.fields.name) == null ? void 0 : _a.color,
  163. subTitleColor: __props.data.fields.introduction.color,
  164. topRadius: __props.data.borderRadiusTop,
  165. bottomRadius: __props.data.borderRadiusBottom,
  166. titleWidth: 330 - common_vendor.unref(marginLeft) - common_vendor.unref(marginRight)
  167. }),
  168. e: item.id
  169. };
  170. }),
  171. h: common_vendor.t(common_vendor.unref(btnBuy).type === "text" ? common_vendor.unref(btnBuy).text : ""),
  172. i: common_vendor.s(common_vendor.unref(buyStyle)),
  173. j: common_vendor.s({
  174. paddingRight: __props.data.space + "rpx",
  175. marginBottom: __props.data.space + "px"
  176. }),
  177. k: common_vendor.f(state.rightGoodsList, (item, k0, i0) => {
  178. var _a;
  179. return {
  180. a: common_vendor.o(($event) => common_vendor.unref(sheep_index.sheep).$router.go("/pages/goods/index", {
  181. id: item.id
  182. }), item.id),
  183. b: common_vendor.o(($event) => calculateGoodsColumn($event, "right"), item.id),
  184. c: "edfbd448-2-" + i0,
  185. d: common_vendor.p({
  186. size: "md",
  187. goodsFields: __props.data.fields,
  188. tagStyle: __props.data.badge,
  189. data: item,
  190. titleColor: (_a = __props.data.fields.name) == null ? void 0 : _a.color,
  191. subTitleColor: __props.data.fields.introduction.color,
  192. topRadius: __props.data.borderRadiusTop,
  193. bottomRadius: __props.data.borderRadiusBottom,
  194. titleWidth: 330 - common_vendor.unref(marginLeft) - common_vendor.unref(marginRight)
  195. }),
  196. e: item.id
  197. };
  198. }),
  199. l: common_vendor.t(common_vendor.unref(btnBuy).type === "text" ? common_vendor.unref(btnBuy).text : ""),
  200. m: common_vendor.s(common_vendor.unref(buyStyle)),
  201. n: common_vendor.s({
  202. paddingLeft: __props.data.space + "rpx",
  203. marginBottom: __props.data.space + "px"
  204. })
  205. } : {}, {
  206. o: common_vendor.unref(layoutType) === LayoutTypeEnum.ONE_COL_SMALL_IMG && state.goodsList.length
  207. }, common_vendor.unref(layoutType) === LayoutTypeEnum.ONE_COL_SMALL_IMG && state.goodsList.length ? {
  208. p: common_vendor.f(state.goodsList, (item, k0, i0) => {
  209. var _a;
  210. return {
  211. a: common_vendor.o(($event) => common_vendor.unref(sheep_index.sheep).$router.go("/pages/goods/index", {
  212. id: item.id
  213. }), item.id),
  214. b: "edfbd448-3-" + i0,
  215. c: common_vendor.p({
  216. size: "lg",
  217. goodsFields: __props.data.fields,
  218. data: item,
  219. tagStyle: __props.data.badge,
  220. titleColor: (_a = __props.data.fields.name) == null ? void 0 : _a.color,
  221. subTitleColor: __props.data.fields.introduction.color,
  222. topRadius: __props.data.borderRadiusTop,
  223. bottomRadius: __props.data.borderRadiusBottom
  224. }),
  225. d: item.id
  226. };
  227. }),
  228. q: common_vendor.t(common_vendor.unref(btnBuy).type === "text" ? common_vendor.unref(btnBuy).text : ""),
  229. r: common_vendor.s(common_vendor.unref(buyStyle)),
  230. s: common_vendor.s({
  231. marginBottom: __props.data.space + "px"
  232. })
  233. } : {});
  234. };
  235. }
  236. };
  237. const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-edfbd448"], ["__file", "/Users/RuHu.Xu/Desktop/mall-newfeifan-zx-app/sheep/components/s-goods-card/s-goods-card.vue"]]);
  238. wx.createComponent(Component);