// pages/bidding/detail/index.js const request = require('../../../utils/request') //导入模块 const util = require('../../../utils/util') const math = require('../../../utils/math') const event = require('../../../utils/event.js') import { $wuxCountDown } from '../../../components/index' const app = getApp() Page({ /** * 页面的初始数据 */ data: { type: 0, // 0 默认是买家 biddingInfo: null, expiredTime: null, recordList: [], recordIndex: -1, safeBottom: app.globalData.safeBottom, kg: app.globalData.kg, recordInfo: null, frist: true }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { if (options.id) { this.data.type = options.type ? Number(options.type) : 0 this.wuxDialog = this.wuxDialog || this.selectComponent('#wux-dialog') this.fetchInfo(options.id) } event.on('EventMessage', this, this.onEvent) }, // 事件处理 onEvent: function (message) { if (message.what == 112 && this.data.biddingInfo && this.data.biddingInfo.id) { this.fetchInfo(this.data.biddingInfo.id) } }, fetchInfo: function(id){ if (this.data.type == 1) { wx.showLoading({ title: '加载中', mask: true }) // recycle-service/get/bidding-activity-detail/{biddingActivityId} request.get('/recycle-service/get/bidding-activity-detail/' + id).then(result => { //成功回调 this.setData({ type: this.data.type, biddingInfo: result.data, kg: app.globalData.kg, safeBottom: app.globalData.safeBottom }) if(result.data.status == 0 && this.data.frist){ this.expiredTime(result.data.expiredTime, id) } this.fetchBiddingList(id) wx.hideLoading() }).catch(err => { //异常回调 wx.hideLoading() }) } else { this.biddingDialog = this.biddingDialog || this.selectComponent('#bidding-good') wx.showLoading({ title: '加载中', mask: true }) // recycle-service/get/bidding-detail/{biddingId} request.get('/recycle-service/get/bidding-detail/' + id).then(result => { //成功回调 if(result.data.status == 0 && this.data.frist){ this.expiredTime(result.data.biddingActivity.expiredTime, id) } else if(result.data.status == 1 && this.data.frist){ this.expiredTime(result.data.expiredTime, id) } this.setData({ type: this.data.type, biddingInfo: result.data }) if(result.data.status == 0){ this.fetchBiddingList(result.data.biddingActivity.id) } this.fetchBiddingInfo(result.data.biddingActivity.id) wx.hideLoading() }).catch(err => { //异常回调 wx.hideLoading() }) } }, expiredTime: function(etime, id){ this.data.frist = false var that = this this.countDown = new $wuxCountDown({ date: etime, render(date) { const days = this.leadingZeros(date.days, 1) + ' 天 ' const hours = this.leadingZeros(date.hours, 2) + ' 时 ' const min = this.leadingZeros(date.min, 2) + ' 分 ' const sec = this.leadingZeros(date.sec, 2) + ' 秒 ' if (Number(this.leadingZeros(date.days, 1)) > 0) { that.setData({ expiredTime: days + hours + min + sec }) } else { that.setData({ expiredTime: hours + min + sec, }) } }, onEnd() { that.fetchInfo(id) } }) }, fetchBiddingInfo: function (biddingActivityId) { request.get('/recycle-service/get/my-bidding/' + biddingActivityId).then(result => { //成功回调 this.setData({ recordInfo: result.data }) }) }, fetchBiddingList: function (biddingActivityId) { request.get('/recycle-service/get/bidding-list/' + biddingActivityId).then(result => { //成功回调 var record = null if(this.data.biddingInfo.winBiddingId){ for (let index = 0; index < result.data.records.length; index++) { const element = result.data.records[index] if(Number(element.id) == Number(this.data.biddingInfo.winBiddingId)){ record = element break } } } this.setData({ recordList: result.data.records, recordInfo: record }) }) }, toShopInfo: function () { if (!this.data.biddingInfo) { return } if(!app.globalData.userInfo){ wx.navigateTo({ url: '/pages/login/index'}) return } wx.navigateTo({ url: '/pages/shop/detail/index?storeId=' + this.data.biddingInfo.biddingActivity.storeId }) }, formatePrice: function (value, kg) { if (value || value == 0) { if(kg){ return (parseFloat(value)).toFixed(3) } else { return (parseFloat(value) * 1000).toFixed(1) } } return 0 }, biddingActicity: function () { var that = this this.wuxDialog.prompt({ offer: true, title: '商品报价', value: that.formatePrice(that.data.biddingInfo.unitPrice, app.globalData.kg), step: that.formatePrice(that.data.biddingInfo.biddingRange, app.globalData.kg), content: '请输入您的报价(元/' + (app.globalData.kg ? 'KG' : '吨') + ')', fieldtype: app.globalData.kg ? 'digit' : 'numger', defaultText: '', placeholder: '请输入您的报价', maxlength: 8, onConfirm(e, response) { that.biddingPrice(app.globalData.kg ? response : math.divide(response, 1000)) }, }) }, biddingPrice: function (price) { if(util.isEmpty(price)){ util.showToast('请输入您的报价') return } if(Number(price) < Number(this.data.orderInfo.unitPrice)){ util.showToast('您输入单价低于最低报价,请重新输入') return } wx.showLoading({ title: '加载中', mask: true }) // /recycle-service/bid/{biddingActivityId} 参与报价 request.post('/recycle-service/bid/' + this.data.biddingInfo.biddingActivity.id, { biddingUnitPrice: price }).then(result => { //成功回调 wx.hideLoading() util.showToast('报价成功') this.setData({ ['biddingInfo.unitPrice']: price }) this.fetchBiddingList(this.data.biddingInfo.biddingActivity.id) }).catch(err => { //异常回调 wx.hideLoading() util.showToast(err) }) }, showDialog: function(){ var that = this this.wuxDialog.open({ resetOnClose: true, title: '温馨提示', content: '确定取消该商品的竞价活动?', buttons: [{ text: '取消' }, { text: '确定', type: 'primary', onTap(e) { that.cancelActivity() } }] }) }, cancelActivity: function(){ wx.showLoading({ title: '处理中', mask: true }) // /recycle-service/bid/{biddingActivityId} 参与报价 request.post('/recycle-service/cancel/bidding-activity/' + this.data.biddingInfo.id).then(result => { //成功回调 wx.hideLoading() util.showToast('竞价取消成功') event.emit('EventMessage', { what: 301, desc: 'bidding-cancel' }) wx.navigateBack({ delta: 1 }) }).catch(err => { //异常回调 wx.hideLoading() util.showToast(err) }) }, checkRecord: function(e){ if(this.data.biddingInfo.status == 0){ this.setData({recordIndex: e.currentTarget.dataset.index}) } }, biddingConfrim: function(){ if(this.data.recordIndex < 0){ util.showToast('请选择一个报价') return } wx.showLoading({ title: '处理中', mask: true }) // /recycle-service/bid/{biddingActivityId} 参与报价 var biddingId = this.data.recordList[this.data.recordIndex].id request.post('/recycle-service/confirm/bidding', { biddingId }).then(result => { //成功回调 wx.hideLoading() util.showToast('确认报价成功') if (this.countDown) { this.countDown.stop() this.countDown = null } event.emit('EventMessage', { what: 301, desc: 'bidding-confrim' }) this.setData({ ['biddingInfo.status']: 1, expiredTime: null, recordInfo: this.data.recordList[this.data.recordIndex] }) }).catch(err => { //异常回调 wx.hideLoading() util.showToast(err) }) }, offerOrder: function(){ var productId = this.data.biddingInfo.biddingActivity.productId wx.navigateTo({ url: '/pages/morder/create/index?productId=' + productId + '&price=' + this.data.biddingInfo.unitPrice }) }, restartActivity: function(){ wx.redirectTo({ url: '/pages/goods/create/index?id=' + this.data.biddingInfo.productId }) }, onUnload: function () { if (this.countDown) { this.countDown.stop() this.countDown = null } event.remove('EventMessage', this) } })