You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
386 lines
11 KiB
386 lines
11 KiB
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'
|
|
})
|
|
|
|
},
|
|
})
|