index.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { isFunction } from '../../utils/isFunction';
  2. import { connect } from 'herculex';
  3. import history from '../../utils/history';
  4. import { isActive } from '../../utils';
  5. Component(connect({
  6. mapStateToProps: {
  7. userInfo: state => state.$global.userInfo || {},
  8. memberLevel: state => state.$global.memberLevel || ''
  9. }
  10. })({
  11. props: {
  12. componentData: {},
  13. goodsItem: {},
  14. defaultNum: 0,
  15. onItemChange: () => null,
  16. targetId: '',
  17. // 是否展示库存
  18. showStock: true,
  19. isGoToDetail: false,
  20. // 是否展示预约字段
  21. showBooking: false,
  22. // 展示自动发货
  23. showAuto: false
  24. },
  25. data: {},
  26. didMount() {},
  27. didUpdate() {},
  28. methods: {
  29. // 外层点击事件
  30. handleClick() {
  31. const {
  32. isGoToDetail,
  33. goodsItem,
  34. componentData
  35. } = this.props;
  36. if (isGoToDetail && goodsItem.skuId) {
  37. // 跳转商品详情
  38. history.push({
  39. title: '商品详情',
  40. pageType: 'goods-detail',
  41. query: {
  42. skuId: goodsItem.skuId
  43. },
  44. header: 'show',
  45. componentData: { ...componentData
  46. }
  47. });
  48. }
  49. },
  50. // 点击stepper回调 @params { number: value ,type: ADD | SUBTRACT }
  51. changeNum(e) {
  52. const {
  53. type
  54. } = e;
  55. const {
  56. onItemChange,
  57. goodsItem
  58. } = this.props;
  59. if (!isActive(goodsItem) && type === 'ADD') {
  60. return;
  61. }
  62. if (isFunction(onItemChange)) {
  63. onItemChange({
  64. skuId: goodsItem.skuId,
  65. number: 1,
  66. type
  67. });
  68. }
  69. },
  70. // 点击加号显示 计数器
  71. handelPlusClick() {
  72. const {
  73. onItemChange,
  74. goodsItem
  75. } = this.props; // 不在售
  76. if (!isActive(goodsItem)) {
  77. return;
  78. }
  79. if (isFunction(onItemChange)) {
  80. onItemChange({
  81. skuId: goodsItem.skuId,
  82. number: 1,
  83. type: 'ADD'
  84. });
  85. }
  86. }
  87. }
  88. }));