import {
get,
post
} from '../../utils/http'
import {
PROJECT_TYPE
} from '../../utils/global'
var WxParse = require('../../components/local/wxParse/wxParse.js')
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
tempTime: null,
visible2: false,
deviceList: [],
projectData: null,
currentDevice: 0,
currentChangeDevice: null,
currentChangeTime: null,
source: 'project',
sourceType: 1,
sourceId: 0,
storeId: 0,
topBannerCurrentSwiper: 0,
navBarTitles: {
project: '项目详情',
product: '套餐详情',
goods: '产品详情',
cardgoods: '产品详情',
secondaryCard: '次卡详情'
},
// 下面是选择项目的操作
showProducePup: false,
selectProductData: {},
selectProductIndex: '',
selectProductCar: [],
onCloseCar: false,
showMoney: 0.0,
toSelectProduct: {},
shareInfo: '', //分享配置内容
isNewUser: 0, //结果,1是新用户,0不是新用户
isSkinPlan: false, //是否从测肤推荐跳转过来
isTestSkin: false, //是否是从肤质推荐跳转过来的
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options, 'options')
// 扫二维码进入的截取出id
if (options.q) {
let ticket = decodeURIComponent(options.q)
console.log(ticket);
var reg = new RegExp("(^|\\?|&)" + 'source' + "=([^&]*)(\\s|&|$)", "i");
var reg1 = new RegExp("(^|\\?|&)" + 'id' + "=([^&]*)(\\s|&|$)", "i");
var reg2 = new RegExp("(^|\\?|&)" + 'shareUserId' + "=([^&]*)(\\s|&|$)", "i");
if (reg.test(ticket)) {
options.source = unescape(RegExp.$2.replace(/\+/g, " "));
};
if (reg1.test(ticket)) {
options.id = unescape(RegExp.$2.replace(/\+/g, " "));
};
if (reg2.test(ticket)) {
app.globalData.shareUserId = unescape(RegExp.$2.replace(/\+/g, " "));
console.log(unescape(RegExp.$2.replace(/\+/g, " ")), 'options.q');
};
app.globalData.isH5 = true //赋值是否从h5商城进入的
}
let source = options.source || 'project'
let sourceId = options.project_id || options.id
let sourceType = PROJECT_TYPE[source] || 1
let isSkinPlan = false
if (options.isSkinPlan=='true') {
isSkinPlan = true
}
let isTestSkin = false
if (options.isTestSkin=='true') {
isTestSkin = true
}
if (options.shareUserId) {
app.globalData.shareUserId = options.shareUserId //赋值全局分享人ID
}
console.log(app.globalData.shareUserId);
wx.setNavigationBarTitle({
title: this.data.navBarTitles[source]
})
let storeId =
options.store_id ||
getApp().globalData.storeData.id ||
wx.getStorageSync('store_id')
this.setData({
source,
sourceId,
sourceType,
storeId,
isSkinPlan,
isTestSkin
}, () => {
})
// 绑定分享参数
wx.onCopyUrl(() => {
let userID = wx.getStorageSync('userInfo')
return {
query: `project_id=${this.data.sourceId}&source=${this.data.source}&store_id=${wx.getStorageSync('store_id')}&shareUserId=${userID.uid}`
}
})
// 获取分享配置消息
this.getShareInfo()
// 检查是否是新用户
this.checkNewUser()
// 测肤推荐方案埋点记录
this.skinPlanRecord()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
if (wx.getStorageSync('store_id')) {
this.getProjectInfo(this.data.sourceId, wx.getStorageSync('store_id'))
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {},
/**
* 测肤推荐方案埋点记录
*/
skinPlanRecord() {
let url = this.data.isTestSkin ? '/v2/api/order/skin' : 'v2/api/order/recommend'
if (this.data.isTestSkin || this.data.isSkinPlan) {
get(url, {
type: 1
}, (res) => {})
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
console.log(this.data.sourceId, 'this.data.sourceId')
let userID = wx.getStorageSync('userInfo')
return {
title: this.data.shareInfo.share_text,
imageUrl: this.data.shareInfo.share_image,
path: `pages/projectDetail/projectDetail?project_id=${this.data.sourceId}&source=${this.data.source}&store_id=${wx.getStorageSync('store_id')}&shareUserId=${userID.uid}`, // 他人通过卡片进入小程序的路径,可以在后面拼接URL的形式带参数
};
},
isShow() {},
// 获取分享图片文案
getShareInfo() {
get('v2/api/share/info', {
id: this.data.sourceId,
type: this.data.source == 'secondaryCard' ? 'card' : this.data.source
}, res => {
this.setData({
shareInfo: res.data
})
})
},
/**
* swiper滚动事件
* @param {*} e
*/
swiperChange: function (e) {
this.setData({
topBannerCurrentSwiper: e.detail.current
})
},
/**
* 去支付
*/
onPay() {
// wx.requestPayment({
// timeStamp: '',
// nonceStr: '',
// package: '',
// signType: 'MD5',
// paySign: '',
// success(res) {},
// fail(res) {}
// })
},
/**
* 弹框状态
*/
onPopupState(e, key, value) {
if (e) {
key = e.currentTarget.dataset.key
value = e.currentTarget.dataset.value
}
this.setData({
[key]: value
})
},
/**
* 选择设备
*/
onDeviceChange(e) {
if (this.data.deviceList[e.currentTarget.dataset.index].status == 0) {
return
}
this.setData({
currentDevice: e.currentTarget.dataset.index
})
},
onConfirmDevice() {
let currentChangeDevice = this.data.deviceList[this.data.currentDevice]
if (currentChangeDevice.status == 0) {
wx.showToast({
title: '当前设备已被预约',
icon: 'none'
})
return
}
this.setData({
currentChangeDevice
})
this.onPopupState(null, 'visible2', false)
},
onConfirmDate() {
// if(this.data.currentChangeTime.status == 0) {
// wx.showToast({
// title: '当前设备已被预约',
// icon: 'none'
// })
// return
// }
this.setData({
currentChangeTime: this.data.tempTime
})
this.onPopupState(null, 'visible', false)
this.getProjectDevice(this.data.currentChangeTime)
},
/**
* 选择时间
*/
onVisibleChange(e) {
console.log(e)
this.setData({
// currentChangeTime: e.detail
tempTime: e.detail
})
},
/**
* 获取详情页数据
*/
getProjectInfo(product_id, store_id) {
get(
this.data.source === 'secondaryCard' ? 'v2/api/card/info' : 'api/product/info', this.data.source === 'secondaryCard' ? {
id: this.data.sourceId,
store_id
} : {
store_id,
product_id,
type: this.data.sourceType
},
(res) => {
let content = this.removeCss(res.data.content)
res.data.content = this.removeCss(res.data.content)
WxParse.wxParse('article', 'html', content, this, 5)
res.data.new_price = Number(res.data.new_price)
this.setData({
projectData: res.data
})
}
)
},
/**
* 获取设备
*/
getProjectDevice(time) {
let {
currentChangeTime
} = this.data
get(
'api/project/device', {
project_id: this.data.projectData.id,
store_id: this.data.projectData.store_id,
order_day: currentChangeTime ? currentChangeTime.order_day : '',
order_time_id: currentChangeTime ?
currentChangeTime.time_id : currentChangeTime
},
(res) => {
this.setData({
deviceList: res.data
},
() => {
this.onPopupState(null, 'visible2', true)
}
)
}
)
},
/**
* 去除富文本图片默认样式
*/
removeCss(content) {
let reg = /(style|class)="[^"]+"/gi
let img = /]+>/gi
let res
if (img.test(content)) {
res = content.match(img)
for (let i = 0; i < res.length; i++) {
content = content.replace(res[i], res[i].replace(reg, ''))
}
}
// (/\ {
this.setData({
selectProductData: res.data
})
console.log(res)
}
)
},
selectProduct(e) {
let index = e.currentTarget.dataset.index
this.setData({
selectProductIndex: index
})
},
// 关闭产品包
onClosePay() {
this.setData({
showProducePup: false
})
},
submit_bottom: function () {
let toSelectProducts = this.data.toSelectProduct
if (this.data.selectProductIndex == '空') {
toSelectProducts.selectMaterial = ''
} else {
toSelectProducts.selectMaterial = this.data.selectProductData.upgrade[this.data.selectProductIndex]
}
console.log(toSelectProducts)
this.setData({
showProducePup: false,
toSelectProduct: toSelectProducts
})
this.setSubmitCar()
},
setSubmitCar() {
let currentPage = getCurrentPages(); // 获取当前页的数据,
let previousPage = currentPage[currentPage.length - 2]; // 上一页的数据,
console.log(previousPage);
let selectProductCarData = !previousPage ? '' : previousPage.data.selectProductCar
if (!selectProductCarData) {
let toSelectProduct = wx.getStorageSync('toSelectProduct')
if (!toSelectProduct) {
toSelectProduct = []
} else {
toSelectProduct = JSON.parse(toSelectProduct)
}
toSelectProduct.push(this.data.toSelectProduct)
wx.setStorageSync('toSelectProduct', JSON.stringify(toSelectProduct))
wx.showToast({
title: '成功加入购物车!',
icon: 'none'
})
setTimeout(() => {
// 测肤 推荐方案埋点
if (this.data.isTestSkin) {
app.globalData.isTestSkin = true
} else if (this.data.isSkinPlan) {
app.globalData.isSkinPlan = true
}
wx.switchTab({
url: '/pages/orderBy/orderBy?cat_type=3',
})
}, 1000)
return
}
for (let i = 0; i < selectProductCarData.length; i++) {
if (selectProductCarData[i].id == this.data.toSelectProduct.id) {
wx.showToast({
title: '单项目只能选一次!',
icon: "none"
})
return
}
}
selectProductCarData.push(this.data.toSelectProduct)
previousPage.setData({ //对上一个页面data中的参数进行赋值(上一个页面的数据是在当前页面进行赋值的),就变相实现了向上一个页面传值
selectProductCar: selectProductCarData
})
previousPage.showCarMoney()
wx.showToast({
title: '成功加入购物车!',
icon: 'none'
})
setTimeout(() => {
wx.navigateBack()
}, 1000)
// wx.navigateBack({})
},
/**
* 提交订单
*/
addOrder() {
if (this.data.source == 'goods' && this.data.projectData.num == 0) {
wx.showToast({
title: '库存不足',
icon: 'none'
})
return
}
if (this.data.source == 'goods') {
wx.navigateTo({
url: `/pages/goodsOrderConfirm/goodsOrderConfirm?storeId=${this.data.storeId}&productId=${this.data.projectData.id}&isShow=false&source=${this.data.source}&isDirectOrder=true&goods_ids=${this.data.projectData.id}&type=2`,
})
return
}
if (this.data.source == 'project') {
this.showProjectSelect()
return
}
if (!wx.getStorageSync('token')) {
wx.reLaunch({
url: '/pages/login/login'
})
return
}
let {
currentChangeDevice,
currentChangeTime,
projectData,
source
} =
this.data
let _projectData = Object.assign({}, projectData)
delete _projectData.content
let url = `/pages/reserveProject/reserveProject?source=${
this.data.source
}&projectData=${encodeURIComponent(JSON.stringify(_projectData))}`
if (source == 'product') {
url = `/pages/reserveProduct/reserveProduct?source=${
this.data.source
}&productData=${encodeURIComponent(JSON.stringify(_projectData))}`
} else if (['goods', 'cardgoods', 'secondaryCard'].indexOf(source) > -1) {
// 美妆产品、项目卡券产品 直接跳转到确认订单
url = `/pages/orderConfirm/orderConfirm?source=${source}&data=${JSON.stringify(
_projectData
)}&deviceData={}&timeData={}&storeId=${this.data.storeId}`
}
wx.navigateTo({
url: url
})
},
// 美妆产品加入购物车
addGoods(type) {
if (type == 'shopping') {
wx.navigateTo({
url: `/pages/goodsOrderConfirm/goodsOrderConfirm?storeId=${this.data.storeId}&productId=${this.data.projectData.id}&isShow=true&source=${this.data.source}`,
})
} else {
let params = {
goods_id: this.data.sourceId,
store_id: this.data.storeId,
source: app.globalData.isH5 ? 'h5' : '',
share_user_id: app.globalData.shareUserId || '',
}
post('v2/api/car/add', params, (res) => {
if (res.code == 200) {
wx.showToast({
title: '成功加入购物车!',
icon: 'none'
})
setTimeout(() => {
wx.switchTab({
url: '/pages/shoppingMall/shoppingMall?cat_type=3',
})
}, 1000);
}
})
}
// let params = {
// goods_id: this.data.sourceId,
// store_id: this.data.storeId
// }
// post('v2/api/car/add', params, (res) => {
// if (res.code == 200) {
// if (type == 'shopping') {
// wx.navigateTo({
// url: `/pages/goodsOrderConfirm/goodsOrderConfirm?storeId=${this.data.storeId}&productId=${this.data.projectData.id}&isShow=true&source=${this.data.source}`,
// })
// } else {
// wx.showToast({
// title: '成功加入购物车!',
// icon: 'none'
// })
// setTimeout(() => {
// wx.switchTab({
// url: '/pages/orderBy/orderBy?cat_type=3',
// })
// }, 1000)
// }
// }
// })
},
// 检查是否是新用户
checkNewUser() {
get('v2/api/order/check_new_user', {}, (res => {
// 结果,1是新用户,0不是新用户
this.setData({
isNewUser: res.data.status
})
}))
}
})