index.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. const Parse = getApp().Parse;
  2. const company = getApp().globalData.company;
  3. const getTabs = require("../../../utils/getTabs")
  4. const login = require("../../../utils/login");
  5. const dateF = require("../../../utils/date")
  6. Page({
  7. /**
  8. * 页面的初始数据
  9. */
  10. data: {
  11. },
  12. /**
  13. * 生命周期函数--监听页面加载
  14. */
  15. onLoad: async function (options) {
  16. // login.loginNow()
  17. try {
  18. let finalStoreId = options && options.storeId ? options.storeId : '';
  19. // 标记是否是扫码进入(有明确的 storeId 参数)
  20. const isFromScan = !!finalStoreId;
  21. // 支持从 scene 读取(小程序码 getwxacodeunlimit 传参)
  22. if (!finalStoreId && options && options.scene) {
  23. const sceneStr = decodeURIComponent(options.scene);
  24. console.log('🎯 scene 参数:', sceneStr);
  25. if (sceneStr) {
  26. const pairs = sceneStr.split('&');
  27. for (const p of pairs) {
  28. const [k, v] = p.split('=');
  29. if (k === 'storeId' && v) {
  30. finalStoreId = v;
  31. break;
  32. }
  33. }
  34. }
  35. }
  36. if (finalStoreId) {
  37. // 扫码进入时,强制设置店铺 ID,不被历史记录覆盖
  38. wx.setStorageSync('storeId', finalStoreId);
  39. getApp().globalData.storeId = finalStoreId;
  40. // 标记这是扫码进入的店铺,优先级最高
  41. if (isFromScan) {
  42. wx.setStorageSync('storeId_from_scan', true);
  43. console.log('✅ 扫码进入,已设置店铺 ID(优先级最高):', finalStoreId);
  44. } else {
  45. console.log('✅ 已设置店铺 ID:', finalStoreId);
  46. }
  47. } else {
  48. // 没有传入 storeId,检查是否有扫码标记
  49. const isFromScanBefore = wx.getStorageSync('storeId_from_scan');
  50. if (!isFromScanBefore) {
  51. // 不是扫码进入,可以使用历史店铺
  52. console.log('ℹ️ 未传入店铺 ID,使用历史店铺或默认值');
  53. } else {
  54. // 之前是扫码进入的,保持扫码的店铺
  55. console.log('ℹ️ 保持扫码进入的店铺 ID');
  56. }
  57. }
  58. } catch (e) {
  59. console.error('设置店铺 ID 失败:', e);
  60. }
  61. const ok = await this.ensureLoggedIn();
  62. if (!ok) return;
  63. await this.loadAndSetStoreTitle()
  64. },
  65. /**
  66. * 生命周期函数--监听页面初次渲染完成
  67. */
  68. onReady: function () {
  69. console.log('📌 引导页 onReady');
  70. },
  71. /**
  72. * 生命周期函数--监听页面显示
  73. */
  74. onShow: function () {
  75. this.ensureLoggedIn().then((ok) => {
  76. if (ok) {
  77. this.loadAndSetStoreTitle();
  78. }
  79. });
  80. },
  81. /**
  82. * 生命周期函数--监听页面隐藏
  83. */
  84. onHide: function () {
  85. },
  86. /**
  87. * 生命周期函数--监听页面卸载
  88. */
  89. onUnload: function () {
  90. },
  91. /**
  92. * 页面相关事件处理函数--监听用户下拉动作
  93. */
  94. onPullDownRefresh: function () {
  95. wx.reLaunch({
  96. url: '/index',
  97. });
  98. },
  99. /**
  100. * 页面上拉触底事件的处理函数
  101. */
  102. onReachBottom: function () {
  103. },
  104. /**
  105. * 用户点击右上角分享
  106. */
  107. onShareAppMessage: function () {
  108. let uid = Parse.User.current().id
  109. return {
  110. title: '分享',
  111. // path: `index?invite=${uid}`,
  112. path: `index`,
  113. imageUrl: '',
  114. }
  115. },
  116. /**
  117. * 加载店铺信息并设置页面标题
  118. */
  119. loadAndSetStoreTitle: async function () {
  120. try {
  121. // 计算当前有效的店铺 ID
  122. const defaultStoreId = 'pkPdAnLAUZ'; // 超级门店ID
  123. const effectiveStoreId = wx.getStorageSync('storeId') || getApp().globalData.storeId || defaultStoreId;
  124. // 查询指定的店铺
  125. const storeQuery = new Parse.Query('ShopStore');
  126. storeQuery.equalTo('objectId', effectiveStoreId);
  127. const store = await storeQuery.first();
  128. if (store) {
  129. // 优先使用门店地址,如果没有地址则使用门店名称
  130. const storeAddress = store.get('address');
  131. const storeName = store.get('storeName');
  132. const title = storeAddress || storeName;
  133. if (title) {
  134. console.log('📍 门店信息:', {
  135. id: effectiveStoreId,
  136. name: storeName,
  137. address: storeAddress,
  138. displayTitle: title
  139. });
  140. // 延迟设置标题,确保页面已完全加载
  141. setTimeout(() => {
  142. wx.setNavigationBarTitle({
  143. title: title,
  144. success: () => {
  145. console.log('✅ 引导页标题设置成功:', title);
  146. },
  147. fail: (err) => {
  148. console.warn('⚠️ 引导页标题设置失败(可忽略):', err.errMsg);
  149. // 不影响主流程,静默失败
  150. }
  151. });
  152. }, 300);
  153. }
  154. }
  155. } catch (error) {
  156. console.error('❌ 加载店铺信息失败:', error);
  157. }
  158. }
  159. ,
  160. ensureLoggedIn: async function () {
  161. try {
  162. const currentUser = Parse.User.current();
  163. const hasMobile = currentUser?.get('mobile');
  164. const userLogin = wx.getStorageSync('userLogin');
  165. if (currentUser && hasMobile && userLogin) {
  166. return true;
  167. }
  168. const ok = await getApp().checkAuth(true);
  169. const nextUser = Parse.User.current();
  170. if (ok && nextUser && nextUser.get('mobile')) {
  171. wx.setStorageSync('userLogin', nextUser.id);
  172. return true;
  173. }
  174. login.loginNow();
  175. return false;
  176. } catch (e) {
  177. login.loginNow();
  178. return false;
  179. }
  180. }
  181. })