import { biddingActivity, getBiddingList, getUserProduct } from "../../../../api/ztb" import { $wuxCountDown } from '../../../../components/index' const util = require('../../../../utils/util') const math = require('../../../../utils/math') const tdsdk = require('../../../../libs/tdweapp') const event = require('../../../../utils/event.js') const app = getApp() Page({ /** * 页面的初始数据 */ data: { backStr: '返回', orderInfo: null, current: 1, imgList: [], form: { productId: null, number: 1 }, amount: null, offered: null, safeBottom: app.globalData.safeBottom, kg: app.globalData.kg, imageHeight: 0, visible: false, videoUrl: null, recordList: [], expiredTime: null, frist: true }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { if (getCurrentPages().length == 1) { this.setData({ backStr: '首页' }) } this.setData({ imageHeight: 750, kg: app.globalData.kg, safeBottom: app.globalData.safeBottom }) event.on('EventMessage', this, this.onEvent) if (options.id) { wx.showLoading({ title: '加载中', mask: true }) this.wuxDialog = this.wuxDialog || this.selectComponent('#wux-dialog') this.biddingDialog = this.biddingDialog || this.selectComponent('#bidding-good') this.data.frist = true this.fetchInfo(options.id) } }, fetchInfo: function (id) { getUserProduct(id).then(result => { wx.hideLoading() if (Number(result.data.minBuyNum) > 1) { this.data.form.number = parseInt(result.data.minBuyNum) } var vurl = null var imgList = [] if (result.data.videoUrl) { vurl = result.data.videoUrl imgList = result.data.imgList imgList.unshift(vurl) this.videoContext = wx.createVideoContext('video') } else { imgList = result.data.imgList } this.setData({ ['form.productId']: id, orderInfo: result.data, videoUrl: vurl, imgList: imgList }) if (result.data.bidType == 2 && (!result.data.biddingActivityId)) { this.wuxDialog.open({ maskClosable: false, title: '温馨提示', content: '该商品已经下架,请选择其他商品进行报价', buttons: [{ text: '确定', type: 'primary', onTap(e) { wx.navigateBack({ delta: 1 }) } }] }) } else if (result.data.bidType == 2 && (result.data.biddingActivityStatus != 0)) { } else if (result.data.bidType == 2 && result.data.biddingActivityStatus == 0) { this.fetchBiddingList(result.data.biddingActivityId) if (this.data.frist) { this.expiredTime(result.data.biddingActivityExpiredTime, id) } } }).catch(err => { wx.hideLoading() util.showToast(err) }) }, expiredTime: function (etime, id) { this.data.frist = false const that = this this.countDown = new $wuxCountDown({ date: new Date(etime.replace(/-/g, '/')), 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) } }) }, onChange: function (e) { this.setData({ current: e.detail.current + 1 }) }, fetchBiddingList: function (biddingActivityId) { getBiddingList(biddingActivityId).then(result => { for (let index = 0; index < result.data.records.length; index++) { const element = result.data.records[index] if (element.isMine && app.globalData.userInfo) { this.data.offered = element.biddingUnitPrice break } } this.setData({ recordList: result.data.records, offered: this.data.offered }) }) }, isVideoUrl: function (url) { if (url && url.indexOf('.mp4') >= 0) { return true } return false }, // 事件处理 onEvent: function (message) { if (message.what == 1) { } else if (message.what == 10) { wx.navigateBack() } }, videoTap: function () { this.setData({ visible: true, }) if (this.videoContext) { this.videoContext.play() } }, onClose: function () { this.setData({ visible: false, }) if (this.videoContext) { this.videoContext.pause() } }, bindended: function () { this.videoContext.exitFullScreen() this.setData({ visible: false }) }, // 图片查看 viewImage: function (e) { if (e.currentTarget.dataset.url.indexOf('.mp4') >= 0) { return } var imgList = [] for (let index = 0; index < this.data.imgList.length; index++) { if (this.data.imgList[index].indexOf('.mp4') >= 0) { continue } imgList.push(this.data.imgList[index]) } wx.previewImage({ urls: imgList, current: e.currentTarget.dataset.url }) }, // 进入支付流程 offerProject: function (e) { if (!app.globalData.userInfo) { wx.navigateTo({ url: '/pages/login/index' }) return } if (!app.globalData.userInfo.isVIP) { this.wuxDialog.open({ resetOnClose: true, title: '温馨提示', content: '您还不是纸通宝的会员,无法购买,现在去开通会员?', buttons: [{ text: '确定', type: 'primary', onTap(e) { wx.navigateTo({ url: '/pages/ztbvip/index' }) } }] }) return } if (this.data.orderInfo) { if (this.data.orderInfo.bidType == 2 && (this.data.orderInfo.biddingActivityStatus != 0)) { this.wuxDialog.open({ maskClosable: false, title: '温馨提示', content: '该商品的竞价已经结束,无法报价', buttons: [{ text: '确定', type: 'primary' }] }) return } if (this.data.orderInfo.bidType == 1) { wx.navigateTo({ url: '/submodel/pages/morder/create/index?productId=' + this.data.orderInfo.productId }) } else { var that = this // this.biddingDialog.showBidding(this.data.orderInfo) var price = this.data.offered || that.data.orderInfo.unitPrice this.wuxDialog.prompt({ offer: true, title: '商品报价', min: that.formatePrice(that.data.orderInfo.unitPrice, app.globalData.kg), value: that.formatePrice(price, app.globalData.kg), step: that.formatePrice(that.data.orderInfo.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)) }, }) } } }, formatePrice: function (value, kg) { if (value || value == 0) { if (kg) { return (parseFloat(value)).toFixed(3) } else { return (parseFloat(value) * 1000).toFixed(1) } } return 0 }, onShareAppMessage: function () { var title = this.data.orderInfo.locProvinceName + this.data.orderInfo.locCityName if (this.data.orderInfo.bidType == 2) { title += this.data.orderInfo.secondCategoryName + '竞价中' } else { title += '出售' + this.data.orderInfo.secondCategoryName } var imgUrl = this.data.orderInfo.imgList[0] if (this.isVideoUrl(imgUrl)) { if (this.data.orderInfo.imgList.length > 1) { imgUrl = this.data.orderInfo.imgList[1] } else { imgUrl = '/assets/image/icon_logo.png' } } return { title: title, path: 'pages/index/index?url=/submodel/pages/paper/detail/index&key=id&value=' + this.data.orderInfo.productId, imageUrl: imgUrl, success: function (res) {} } }, // 分享至朋友圈 onShareTimeline() { var title = this.data.orderInfo.locProvinceName + this.data.orderInfo.locCityName if (this.data.orderInfo.bidType == 2) { title += this.data.orderInfo.secondCategoryName + '竞价中' } else { title += '出售' + this.data.orderInfo.secondCategoryName } var imgUrl = this.data.orderInfo.imgList[0] if (this.isVideoUrl(imgUrl)) { if (this.data.orderInfo.imgList.length > 1) { imgUrl = this.data.orderInfo.imgList[1] } else { imgUrl = '/assets/image/icon_logo.png' } } return { title: title, path: 'pages/index/index?url=/submodel/pages/paper/detail/index&key=id&value=' + this.data.orderInfo.productId, imageUrl: imgUrl, success: function (res) {} } }, onShow: function () { tdsdk.Page.onShow() }, onHide: function(){ tdsdk.Page.onHide() }, // event的unregister onUnload: function () { tdsdk.Page.onUnload() event.remove('EventMessage', this) if (this.countDown) { this.countDown.stop() this.countDown = null } }, toShopInfo: function () { if (!this.data.orderInfo) { return } if (!app.globalData.userInfo) { wx.navigateTo({ url: '/pages/login/index' }) return } util.navigateTo('/submodel/pages/shop/detail/index?storeId=' + this.data.orderInfo.storeId) }, biddingPrice: function (price) { if (util.isEmpty(price)) { util.showToast('请输入您的报价') return } if (Number(price) <= 0) { util.showToast('请输入合理的报价') return } wx.showLoading({ title: '加载中', mask: true }) biddingActivity(this.data.orderInfo.biddingActivityId, { biddingUnitPrice: price }).then(result => { wx.hideLoading() this.fetchBiddingList(this.data.orderInfo.biddingActivityId) util.showToast('报价成功') }).catch(err => { //异常回调 wx.hideLoading() util.showToast(err) }) }, phoneShopInfo: function () { if (!app.globalData.userInfo) { wx.navigateTo({ url: '/pages/login/index' }) return } wx.makePhoneCall({ phoneNumber: this.data.orderInfo.ownerPhone|| '0000' }) }, })