index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import { connect } from 'herculex';
  2. import { getIn } from 'herculex/dist/utils/manipulate';
  3. import { openCardCase } from './../utils';
  4. const setToast = {
  5. AUDITING() {
  6. my.showToast({
  7. content: '会员卡审核中'
  8. });
  9. },
  10. AUDIT_REJECT() {
  11. my.showToast({
  12. content: '会员卡审核驳回'
  13. });
  14. },
  15. WAIT_RELEASE() {
  16. my.showToast({
  17. content: '会员卡审核通过'
  18. });
  19. },
  20. CARD() {
  21. my.showToast({
  22. content: '会员卡已开卡'
  23. });
  24. }
  25. };
  26. const app = getApp();
  27. Component(connect({
  28. mapStateToProps: {
  29. componentList: state => state.componentList
  30. }
  31. })({
  32. props: {
  33. componentData: {}
  34. },
  35. data: {
  36. imgSrcPrefix: app.globalData.imgSrcPrefix
  37. },
  38. didMount() {},
  39. didUpdate(preProps) {
  40. // eslint-disable-next-line max-len
  41. if (preProps.componentData.componentExtInfo.memberInfo && this.props.componentData.componentExtInfo.memberInfo) {
  42. const preFlag = preProps.componentData.componentExtInfo.memberInfo.flag || false;
  43. const flag = this.props.componentData.componentExtInfo.memberInfo.flag || false;
  44. if (!preFlag && flag) {
  45. my.navigateBack();
  46. }
  47. }
  48. },
  49. methods: {
  50. setBack() {
  51. const pages = getCurrentPages();
  52. const lastpage = pages[pages.length - 2];
  53. lastpage.setData({
  54. naviBack: 'new-member-card'
  55. });
  56. my.navigateBack();
  57. },
  58. async openCardCase() {
  59. const {
  60. cardType,
  61. cardTemplateId: cardTemplateIdS
  62. } = this.$page.options;
  63. if (cardType === 'newMemberCardComponent') {
  64. // eslint-disable-next-line no-unused-vars
  65. const [_, res] = await openCardCase({
  66. cardTemplateId: cardTemplateIdS
  67. });
  68. if (res !== 'NOT_CARD') {
  69. // eslint-disable-next-line no-unused-expressions
  70. setToast[res]();
  71. this.setBack();
  72. return false;
  73. } else {
  74. return true;
  75. }
  76. }
  77. },
  78. async addCard(e) {
  79. const {
  80. componentExtInfo: {
  81. applyUrl,
  82. cardTemplateId
  83. }
  84. } = this.props.componentData;
  85. const {
  86. cardType,
  87. cardTemplateId: cardTemplateIdS
  88. } = this.$page.options;
  89. const index = getIn(e, ['target', 'dataset', 'index']);
  90. const query = cardType === 'newMemberCardComponent' ? {
  91. index,
  92. applyUrl,
  93. cardTemplateId: cardTemplateIdS,
  94. card: 'newMemberCardComponent'
  95. } : {
  96. index,
  97. applyUrl,
  98. cardTemplateId
  99. };
  100. if (cardType === 'newMemberCardComponent') {
  101. const results = await this.openCardCase();
  102. if (!results) {
  103. return false;
  104. }
  105. }
  106. const result = await this.dispatch('addCard', query);
  107. if (cardType === 'newMemberCardComponent') {
  108. // eslint-disable-next-line no-unused-vars
  109. await this.openCardCase();
  110. return;
  111. }
  112. if (result.code && result.code === 'USER_BACK') return; // 失败
  113. if (result !== 'addCardSuccess') {
  114. const {
  115. serviceList = []
  116. } = this.props.componentData;
  117. const {
  118. url,
  119. urlType
  120. } = serviceList[1] || {};
  121. const payload = {
  122. urlType,
  123. url
  124. };
  125. if (url) {
  126. return this.$page.dispatchGlobal('handleJumpService', payload);
  127. }
  128. }
  129. }
  130. }
  131. }));