// index.ts import { api_shopInstruments, api_shopProduct } from "../../api/login"; import { debounce, formatPrice } from '../../utils/util' // 获取应用实例 const app = getApp() // pages/orders/orders.ts Page({ /** * 页面的初始数据 */ data: { firstImgList: [ 'https://oss.dayaedu.com/ktyq/1739181226082.png', 'https://oss.dayaedu.com/ktyq/1739181253580.png', 'https://oss.dayaedu.com/ktyq/1739181268714.png', 'https://oss.dayaedu.com/ktyq/1739181284457.png', 'https://oss.dayaedu.com/ktyq/1739181316779.png', 'https://oss.dayaedu.com/ktyq/1739181329436.png' ], firstCurrent: 0, imgList: [ 'https://oss.dayaedu.com/ktyq/1732610921517.png', 'https://oss.dayaedu.com/ktyq/1732610940095.png', 'https://oss.dayaedu.com/ktyq/1732610952376.png', 'https://oss.dayaedu.com/ktyq/1732610965625.png', // 'https://oss.dayaedu.com/ktyq/1731664269098.png', ], goodsImgList: [ 'https://oss.dayaedu.com/ktyq/1739182504757.png', 'https://oss.dayaedu.com/ktyq/1739182521080.png', 'https://oss.dayaedu.com/ktyq/1739182535430.png', 'https://oss.dayaedu.com/ktyq/1739182557976.png', 'https://oss.dayaedu.com/ktyq/1739182545221.png' ], current: 0, autoplay: false, interval: 5000, duration: 500, popupShow: false, instrumentList: [] as any, list: [] as any, isOverSaled: false, // 是否所有商品都没有库存 smallGoods: {}, // 最小金额商品 selected: {} as any, selectInstrumentId: '', // 选中的乐器 selectedInstrument: {} as any, formatSelectGood: { typeName: '', showSalePrice: '', // 显示的现价 originalPrice: 0, // 原价 salePrice: 0, // 现价 discountPrice: '' // 已省 } as any, // 格式化所有选中的数据 showService: false, isFromPreviewImage: false, showBuyer: true, // 收益人 }, /** * 生命周期函数--监听页面加载 */ onLoad() { this.onInit() }, /** * 获取基础信息 */ async onInit() { try { const result = await api_shopInstruments({ appId: app.globalData.appId }) const instrumentList = result.data.data || [] instrumentList.forEach((item: any) => { item.showSalePrice = formatPrice(item.salePrice || 0, 'ALL') }) const { data } = await api_shopProduct({ appId: app.globalData.appId }); const list = data.data || [] let selected: any = {} let isOverSaled = true // 是否销售完 // 最少金额商品 let smallGoods: any = {} list.forEach((item: any) => { item.originalPrice = formatPrice(item.originalPrice, "ALL"); item.showSalePrice = formatPrice(item.salePrice, "ALL"); item.typeName = this.formatPeriod(item.num, item.period); item.discountPrice = formatPrice( item.originalPrice - item.salePrice, "ALL" ); const prices: any = formatPrice(item.salePrice) item.integerPart = prices.integerPart item.decimalPart = prices.decimalPart if (item.stockNum > 0) { isOverSaled = false if (!selected.id) { selected = item } } // 获取最小金额 if(smallGoods?.salePrice) { smallGoods = smallGoods.salePrice <= item.salePrice ? smallGoods : item } else { smallGoods = item } }); if (isOverSaled) { // 没有可购买商品则默认选中第一个商品 selected = list[0] } console.log(smallGoods, 'smallGoods') this.setData({ list, instrumentList, // 乐器列表 isOverSaled, selected, smallGoods, selectInstrumentId: '', selectedInstrument: {} }, () => { this.onFormatGoods() }) } catch (e) { console.log(e, 'e') } }, // 格式化类型 formatPeriod(num: number, type: string) { const template: any = { DAY: "天卡", MONTH: "月卡", YEAR: "年卡" } if (type === "YEAR" && num >= 99) { return '永久卡' } return num + (template[type] || '') }, // 选择 onSelectGoods(e: any) { const { dataset } = e.currentTarget const item = this.data.list.find((item: any) => item.id === dataset.id) // 判断是否有库存 if (item.stockNum <= 0) { return } this.setData({ selected: item || {} }, () => { this.onFormatGoods() }) }, /** 选中乐器 */ onSelectInstrument(e: any) { const { dataset } = e.currentTarget; if (dataset.id === this.data.selectInstrumentId) { this.setData({ selectInstrumentId: '', selectedInstrument: {} }, () => { this.onFormatGoods() }) } else { const item = this.data.instrumentList.find((item: any) => item.id === dataset.id); this.setData({ selectInstrumentId: dataset.id, selectedInstrument: item || {} }, () => { this.onFormatGoods() }) } }, onFirstChange(e: any) { const detail = e.detail; if (detail.source === 'touch' || detail.source == 'autoplay') { this.setData({ firstCurrent: detail.current }) } }, // 事件处理函数 changeSwiper(e: any) { const detail = e.detail; if (detail.source === 'touch' || detail.source == 'autoplay') { this.setData({ current: detail.current }) } }, /** 格式化选中的商品 */ onFormatGoods() { const selected = this.data.selected; const selectedInstrument = this.data.selectedInstrument const params = { typeName: '', showSalePrice: '' as any, // 显示的现价 originalPrice: 0, // 原价 salePrice: 0, // 现价 discountPrice: '' as any, // 已省 integerPart: '', decimalPart: '', } // 选中期限 if (selected.id) { params.typeName = selected.typeName params.showSalePrice = selected.showSalePrice params.originalPrice = selected.originalPrice params.salePrice = selected.salePrice params.discountPrice = selected.discountPrice const prices: any = formatPrice(params.salePrice); params.integerPart = prices.integerPart params.decimalPart = prices.decimalPart } // 选中乐器 if (selectedInstrument.id) { params.typeName = selected.typeName ? selected.typeName + '+' + selectedInstrument.name : selectedInstrument.name params.originalPrice = Number(selected.originalPrice) + Number(selectedInstrument.originalPrice) params.salePrice = Number(selected.salePrice) + Number(selectedInstrument.salePrice) params.showSalePrice = formatPrice(params.salePrice, "ALL"); params.discountPrice = formatPrice( params.originalPrice - params.salePrice, "ALL" ); const prices: any = formatPrice(params.salePrice); params.integerPart = prices.integerPart params.decimalPart = prices.decimalPart } console.log(params, "params") this.setData({ formatSelectGood: params }) }, isLogin() { // 判断是否登录 if (!app.globalData.isLogin) { wx.navigateTo({ url: '../login/login', }) return false } return true }, /** 我的订单 */ onOrder() { // 判断是否登录 if (!this.isLogin()) { return } wx.navigateTo({ url: '../orders/orders', }) }, /** 客服 */ onService() { this.setData({ showService: true }) }, changePop(event: { detail: any }) { this.setData({ showService: event.detail }) }, onBuyShop() { // 判断是否登录 if (!this.isLogin()) { return } this.setData({ popupShow: true }) }, onClose() { this.setData({ popupShow: false }) }, onSubmit() { // 判断是否登录 const that = this debounce(function () { if (!that.isLogin()) { return } let info = JSON.stringify({ ...that.data.selected }); console.log(that.data.selected, "that.data.selected") info = encodeURIComponent(info); wx.navigateTo({ url: `../orders/order-detail?orderInfo=${info}`, success: () => { that.setData({ popupShow: false }) } }) }, 500)() }, onSelectBuyer() { this.setData({ showBuyer: true }) }, onCloseBuyer(e: {detail: any}) { this.setData({ showBuyer: e.detail }) }, onPreivewBannerImg(e: { currentTarget: { dataset: any } }) { wx.previewImage({ current: e.currentTarget.dataset.src, urls: this.data.imgList, success: () => { this.setData({ isFromPreviewImage: true }) } }) }, onPreivewGoodsImg(e: { currentTarget: { dataset: any } }) { wx.previewImage({ current: e.currentTarget.dataset.src, urls: this.data.goodsImgList, success: () => { this.setData({ isFromPreviewImage: true }) } }) }, onPreivewGoods(e: { currentTarget: { dataset: any } }) { wx.previewImage({ current: e.currentTarget.dataset.src, urls: [e.currentTarget.dataset.src], success: () => { this.setData({ isFromPreviewImage: true }) } }) }, /** * 生命周期函数--监听页面显示 */ onShow() { if (!this.data.isFromPreviewImage) { this.onInit() } else { this.setData({ isFromPreviewImage: false }) } }, onShareAppMessage() { return { title: '器乐数字AI工具', path: '/pages/index/index', imageUrl: 'https://oss.dayaedu.com/ktyq/1733312164991.png' } }, onShareTimeline() { return { title: '器乐数字AI工具', path: '/pages/index/index', imageUrl: 'https://oss.dayaedu.com/ktyq/1733312164991.png' } } })