index.ts 6.7 KB

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