index.ts 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. // index.ts
  2. import { api_shopProduct, api_shopInstruments, api_getUserBeneficiaryPage } from "../../api/login";
  3. import { debounce } from '../../utils/util'
  4. // 获取应用实例
  5. const app = getApp<IAppOption>()
  6. // pages/orders/orders.ts
  7. Page({
  8. /**
  9. * 页面的初始数据
  10. */
  11. data: {
  12. goodsImgList: [
  13. "https://oss.dayaedu.com/ktyq/1739445414362.png",
  14. "https://oss.dayaedu.com/ktyq/1739445449067.png",
  15. "https://oss.dayaedu.com/ktyq/1739445464592.png",
  16. "https://oss.dayaedu.com/ktyq/1739445477533.png"
  17. ],
  18. serviceShow: true,
  19. popupShow: false,
  20. list: [] as any,
  21. instrumentsList: [] as any[],
  22. isOverSaled: false, // 是否所有商品都没有库存
  23. selected: {} as any,
  24. selectedInstruments: {} as any,
  25. memberInfo: {} as any, // 会员信息
  26. isShowMemberInfoTip: false, // 会员信息提示
  27. isFromPreviewImage: false,
  28. isShowOperation: false, // 是否显示操作按钮
  29. userNote: '', // 会员手机号
  30. },
  31. /**
  32. * 生命周期函数--监听页面加载
  33. */
  34. onLoad() {
  35. // this.onInit()
  36. },
  37. /**
  38. * 获取基础信息
  39. */
  40. async onInit() {
  41. try {
  42. const [{ data }, { data: instrumentsData }] = await Promise.all([api_shopProduct({ appId: app.globalData.appId }), api_shopInstruments({ appId: app.globalData.appId })])
  43. // 商品
  44. const list = data.data || []
  45. let selected: any = {}
  46. let isOverSaled = true // 是否销售完
  47. list.forEach((item: any) => {
  48. item.typeName = this.formatPeriod(item.num, item.period);
  49. if (item.stockNum > 0) {
  50. isOverSaled = false
  51. if (!selected.id) {
  52. selected = item
  53. }
  54. }
  55. });
  56. if (isOverSaled) {
  57. // 没有可购买商品则默认选中第一个商品
  58. selected = list[0]
  59. }
  60. // 乐器
  61. const instrumentsList = instrumentsData.data
  62. this.setData({
  63. list,
  64. isOverSaled,
  65. selected,
  66. instrumentsList,
  67. selectedInstruments: {}
  68. })
  69. } catch (e) {
  70. console.log(e, 'e')
  71. }
  72. },
  73. // 格式化类型
  74. formatPeriod(num: number, type: string) {
  75. const template: any = {
  76. DAY: "天卡",
  77. MONTH: "月卡",
  78. YEAR: "年卡"
  79. }
  80. if (type === "YEAR" && num >= 99) {
  81. return '永久卡'
  82. }
  83. return num + template[type]
  84. },
  85. // 选择
  86. onSelectGoods(e: any) {
  87. const { dataset } = e.currentTarget
  88. const item = this.data.list.find((item: any) => item.id === dataset.id)
  89. // 判断是否有库存
  90. if (item.stockNum <= 0) {
  91. return
  92. }
  93. this.setData({
  94. selected: item || {}
  95. })
  96. },
  97. onSelectInstrumentsGoods(e: any) {
  98. const { dataset } = e.currentTarget
  99. let item = this.data.instrumentsList[dataset.index]
  100. if (item?.id === this.data.selectedInstruments?.id) {
  101. item = {}
  102. }
  103. this.setData({
  104. selectedInstruments: item || {}
  105. })
  106. },
  107. isLogin() {
  108. // 判断是否登录
  109. if (!app.globalData.isLogin) {
  110. wx.navigateTo({
  111. url: '../login/login',
  112. })
  113. return false
  114. }
  115. return true
  116. },
  117. /** 我的订单 */
  118. onOrder() {
  119. // 判断是否登录
  120. if (!this.isLogin()) {
  121. return
  122. }
  123. wx.navigateTo({
  124. url: '../orders/orders',
  125. })
  126. },
  127. onBuyShop() {
  128. // 判断是否登录
  129. if (!this.isLogin()) {
  130. return
  131. }
  132. this.setData({
  133. popupShow: true
  134. })
  135. },
  136. onClose() {
  137. this.setData({
  138. popupShow: false
  139. })
  140. },
  141. async onMemberInfo() {
  142. this.setData({
  143. isShowMemberInfoTip: false
  144. })
  145. try {
  146. const resData = await api_getUserBeneficiaryPage()
  147. const pageRows = resData?.data?.data?.rows || []
  148. // 当有权益人的时候跳转到权益人选择列表页面,当没有权益人的时候到添加权益人页面
  149. if (pageRows.length) {
  150. wx.navigateTo({
  151. url: `/pages/member/memberList?id=${this.data.memberInfo.id}`
  152. });
  153. } else {
  154. // 当redirectUrl等于index的时候证明是首次添加,需要给上一个页面
  155. wx.navigateTo({
  156. url: `/pages/member/addMember?redirectUrl=index`
  157. });
  158. }
  159. } catch (e) {
  160. console.log(e, 'e')
  161. }
  162. },
  163. onSubmit() {
  164. // 判断是否登录
  165. const that = this
  166. debounce(function () {
  167. if (!that.isLogin()) {
  168. return
  169. }
  170. if (!that.data.userNote || !/^1[3456789]\d{9}$/.test(that.data.userNote)) {
  171. wx.showToast({
  172. title: '请输入正确的手机号',
  173. icon: "none"
  174. })
  175. that.setData({
  176. isShowMemberInfoTip: true
  177. })
  178. return
  179. } else {
  180. that.setData({
  181. isShowMemberInfoTip: false
  182. })
  183. }
  184. // if (!that.data.memberInfo.id) {
  185. // wx.showToast({
  186. // title: "请填写会员信息",
  187. // icon: 'none'
  188. // })
  189. // that.setData({
  190. // isShowMemberInfoTip: true
  191. // })
  192. // return
  193. // }
  194. let info = JSON.stringify({
  195. ...that.data.selected
  196. });
  197. let instrumentsInfo = JSON.stringify({
  198. ...that.data.selectedInstruments
  199. })
  200. // let memberInfo = JSON.stringify({
  201. // ...that.data.memberInfo
  202. // })
  203. info = encodeURIComponent(info);
  204. instrumentsInfo = encodeURIComponent(instrumentsInfo);
  205. // memberInfo = encodeURIComponent(memberInfo);
  206. // memberInfo=${memberInfo}
  207. wx.navigateTo({
  208. url: `../orders/order-detail?orderInfo=${info}&instrumentsInfo=${instrumentsInfo}&userNote=${that.data.userNote}`,
  209. success: () => {
  210. }
  211. })
  212. }, 300)()
  213. },
  214. onPreivewGoodsImg(e: { currentTarget: { dataset: any } }) {
  215. wx.previewImage({
  216. current: e.currentTarget.dataset.src,
  217. urls: this.data.goodsImgList,
  218. success: () => {
  219. this.setData({
  220. isFromPreviewImage: true
  221. })
  222. }
  223. })
  224. },
  225. onPreivewGoods(e: { currentTarget: { dataset: any } }) {
  226. wx.previewImage({
  227. current: e.currentTarget.dataset.src,
  228. urls: [e.currentTarget.dataset.src],
  229. success: () => {
  230. this.setData({
  231. isFromPreviewImage: true
  232. })
  233. }
  234. })
  235. },
  236. /**
  237. * 生命周期函数--监听页面显示
  238. */
  239. onShow() {
  240. if (!this.data.isFromPreviewImage && !this.data.popupShow) {
  241. this.onInit()
  242. this.setData({
  243. memberInfo: {}
  244. })
  245. } else {
  246. this.setData({
  247. isFromPreviewImage: false
  248. })
  249. }
  250. this.setData({
  251. serviceShow: true
  252. })
  253. },
  254. onHide() {
  255. this.setData({
  256. serviceShow: false
  257. })
  258. },
  259. onScroll(e: { detail: any }) {
  260. // console.log(e, 'any')
  261. const scrollTop = e.detail.scrollTop || 0
  262. if (scrollTop > 40) {
  263. this.setData({
  264. isShowOperation: true
  265. })
  266. } else {
  267. this.setData({
  268. isShowOperation: false
  269. })
  270. }
  271. },
  272. onShareAppMessage() {
  273. return {
  274. title: '乐迷器乐AI',
  275. path: '/pages/index/index',
  276. imageUrl: 'https://oss.dayaedu.com/ktyq/1739773011143.png'
  277. }
  278. },
  279. onShareTimeline() {
  280. return {
  281. title: '乐迷器乐AI',
  282. path: '/pages/index/index',
  283. imageUrl: 'https://oss.dayaedu.com/ktyq/1739773011143.png'
  284. }
  285. }
  286. })