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.
 

814 lines
24 KiB

var app = getApp()
import commonApi from "./https/common"
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatDate = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
return [year, month, day].map(formatNumber).join('-');
}
const formatMing = date => {
var tomorrow = new Date(date.getTime() + 24 * 60 * 60 * 1000) // 获取明天的日期
var tomorrowDate = tomorrow.getDate(); // 获取明天的日期数字
var tomorrowMonth = tomorrow.getMonth() + 1; // 获取明天的月份(注意:月份是从0开始计算的,所以要加1)
var tomorrowYear = tomorrow.getFullYear();
return [tomorrowYear, tomorrowMonth, tomorrowDate].map(formatNumber).join('-');
}
const formatHou= date => {
date.setDate(date.getDate() + 2);
// 格式化日期为YYYY-MM-DD
var houtian = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2);
return houtian
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
const isTel = tel => {
if (!(/^1\d{10}$/.test(tel))) {
return false;
}
else {
return true;
}
}
const isMail = email => {
if (!(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(email))) {
return false;
}
else {
return true;
}
}
const dateToText = (date) => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
let dates = [year, month, day].map(formatNumber);
return dates[1]+"月"+dates[2]+'日';
}
const setTitleBarColor = color => {
if(color==1){
wx.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: '#ffffff'
})
}
else {
wx.setNavigationBarColor({
frontColor: '#000000',
backgroundColor: '#000000'
})
}
}
const FILE_BASE_NAME = 'tmp_base64src'; //自定义文件名
function base64src(base64data, cb) {
const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
if (!format) {
return (new Error('ERROR_BASE64SRC_PARSE'));
}
const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
const buffer = wx.base64ToArrayBuffer(bodyData);
fsm.writeFile({
filePath,
data: buffer,
encoding: 'binary',
success() {
cb(filePath);
},
fail() {
return (new Error('ERROR_BASE64SRC_WRITE'));
},
});
};
const back = function(){
let pages = getCurrentPages();
if (pages.length>1){
wx.navigateBack({
delta: 1
})
}
else {
wx.switchTab({
url: app.globalData.menuRoute
})
}
// if(pages<=1){
// wx.switchTab({
// url: app.globalData.menuRoute
// })
// }
// else {
// wx.navigateBack({
// delta: 1
// })
// }
}
const checkLocation = function(){
return new Promise((resolve,reject)=>{
wx.getSetting({
success: (res) => {
var statu = res.authSetting;
if (!statu['scope.userLocation']) { //没授权
wx.showModal({
title: '提示',
content: '需要获取您的地理位置,请确认授权',
confirmColor: '#f16765',
success: res => {
if (res.confirm) {
wx.openSetting({
success: data => {
if (data.authSetting["scope.userLocation"]) {
wx.getLocation({
type: 'gcj02',
success: function (res) {
resolve(res)
},
fail(){
reject()
}
})
}
else {
reject()
}
}
})
}
else {
reject()
}
},
fail(){
reject()
}
})
} else { //已授权
//做一些事情...
console.log(res)
wx.getLocation({
type: 'gcj02',
success: function (res) {
resolve(res)
},
fail(){
reject()
}
})
}
}
})
})
}
const gotoDetail = (item,isPagePoint,queryStr="") =>{
wx.removeStorageSync('prizeId');
let pagePointData = {
param: {
id: item.scene_id || item.id,
},
type: item.type
}
// 组合产品 跳线路
if (item.compose_product_id) {
wx.navigateTo({
url: '/pages/info/roadInfo/index?id='+item.compose_product_id+queryStr
})
return
}
if (item.is_package === 1) {
wx.navigateTo({
url: '/pages/info/postProductInfo/index?id='+item.id+queryStr,
})
return
}else if (item.is_package==2) {
wx.navigateTo({
url: '/subPackages/goods/oneCardTour/info/index?id='+item.scene_id+queryStr
});
return
} else if (item.is_package==3) {
wx.navigateTo({
url: '/subPackages/goods/memberCard/index?id='+item.id+queryStr
});
return
}
console.log(item)
switch(item.type){
case "tenscenic":
wx.navigateTo({
url: '/pages/info/foodInfo/index?id='+(item.scene_id || item.id)+queryStr
})
break;
case "ticket":
// 产品 产品票务
if(isPagePoint){
pagePointData.event='ticket_detail_click'
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/sceneProductInfo/index?id='+(item.scene_id || item.id)+queryStr
})
break;
case "hotel":
// 产品 酒店
if(isPagePoint){
pagePointData.event='hotel_detail_click'
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/hotelProductInfo/index?id='+(item.scene_id || item.id)+queryStr
})
break;
case "post":
// 产品 产品发货的
if(isPagePoint){
pagePointData.event='legacy_detail_click'
pagePointData.id = item.id
pagePoint(pagePointData,1)
}
try {
if (item.iShop) {
wx.navigateTo({
url: '/pages/info/postProductInfo/index?id='+item.id+'&iShop='+item.iShop+'&supplierId='+item.supplierId+queryStr
})
}else{
wx.navigateTo({
url: '/pages/info/postProductInfo/index?id='+item.id+queryStr
})
}
} catch (error) {
}
break;
case "line":
// 产品 线路
if(isPagePoint){
pagePointData.event='route_detail_click'
pagePointData.id = item.id
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/roadInfo/index?id='+item.id+queryStr
})
break;
case "coupon":
// 产品 卡券
if(isPagePoint){
pagePointData.event='card_detail_click'
pagePointData.id = item.id
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/cardInfo/index?id='+item.id+queryStr
})
break;
case "show":
// 产品 演出
if(isPagePoint){
pagePointData.event='show_detail_click'
pagePointData.id = item.id
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/showInfo/index?id='+item.id+queryStr
})
break;
case "food":
// 产品 美食
wx.navigateTo({
url: '/pages/info/foodProductInfo/index?id='+item.id+queryStr
})
break;
case "activity":
// 活动
wx.navigateTo({
url: '/pages/info/activityInfo/index?id='+(item.act_calendar_id || item.id)+queryStr
})
break;
case "act_calendar":
// 活动
wx.navigateTo({
url: '/pages/info/activityInfo/index?id='+(item.act_calendar_id || item.id)+queryStr
})
break;
case "movie":
// 产品 电影票
let tempUrl = 'https://m.cloud.sz-trip.com'+`/MovieInfo?id=${item.third_id || item.id}`+'&title='+item.title+queryStr
wx.navigateTo({
url: '/pages/pbService/web/index?weburl=' + encodeURIComponent(tempUrl),
// url: '/pages/list/movieticket/list/info/index?id='+(item.third_id || item.id)+'&title='+item.title
})
break;
case "cinema":
// 产品 电影票
wx.navigateTo({
url: '/pages/list/movieticket/list/cinema/index?id='+item.third_id+'&title='+item.title+queryStr
})
break;
case "scenic":
// 场景 景点
if(isPagePoint){
pagePointData.event='ticket_detail_click'
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/sceneProductInfo/index?id='+(item.scene_id || item.id)+queryStr
})
break;
case "room":
// 场景 酒店
if(isPagePoint){
pagePointData.event='hotel_detail_click'
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/hotelProductInfo/index?id='+(item.scene_id || item.id)+queryStr
})
break;
case "venue":
// 场景 场馆
if(isPagePoint){
pagePointData.event='museum_detail_click'
pagePoint(pagePointData,1)
}
wx.navigateTo({
url: '/pages/info/museumInfo/index?id='+(item.scene_id || item.id)+queryStr
})
break;
}
}
const orderMoreTime = function(item){
if(item && item.order_product_list && item.order_product_list[0]){
let info = item.order_product_list[0];
console.log(info)
// 组合产品 跳线路
if (info.compose_product_id) {
wx.navigateTo({
url: '/pages/info/roadInfo/index?id='+info.compose_product_id
})
return
}
if (info.is_package === 1) {
wx.navigateTo({
url: '/pages/info/postProductInfo/index?id='+info.product_id,
})
}else if (info.is_package==2) {
wx.navigateTo({
url: '/subPackages/goods/oneCardTour/info/index?id='+info.scene_id
});
return
} else if (info.is_package==3) {
wx.navigateTo({
url: '/subPackages/goods/memberCard/index?id='+info.product_id
});
return
}
else if(info.product_model=='movie'){
// wx.navigateTo({
// url: '/pages/list/movieticket/index',
// })
goMovieList()
}
else if(info.product_model=='activity'){
wx.navigateTo({
url: '/pages/info/activityInfo/index?id='+info.activity_id
})
}
else {
info.type = info.product_model;
if(info.product_id){
info.id = info.product_id;
gotoDetail(info)
}
}
}
}
const gotoOrder = function(item){
// 数量超过两个 购物车下单 跳H5 (小程序二维码没分开)
if (item.order_product_list.length>1) {
wx.navigateTo({
url: "/pages/pbService/web/index?weburl=" + encodeURIComponent("https://m.cloud.sz-trip.com/TicketCartOrderDetail?order_id="+item.order_id),
})
return;
// wx.navigateTo({
// url: "/pages/pbService/web/index?weburl=" + encodeURIComponent("https://test.m.cloud.sz-trip.com/TicketCartOrderDetail?order_id="+item.order_id),
// })
// return;
}
if(item.order_product_list[0].product_model=='ticket'){
wx.navigateTo({
url: '/pages/user/order/sceneOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='food'){
wx.navigateTo({
url: '/pages/user/order/foodOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='activity'){
wx.navigateTo({
url: '/pages/user/order/activityOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='venue'){
wx.navigateTo({
url: '/pages/user/order/museumOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='hotel'){
wx.navigateTo({
url: '/pages/user/order/hotelOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='line'){
wx.navigateTo({
url: '/pages/user/order/lineOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='movie'){
wx.navigateTo({
url: '/pages/user/order/movieOrderInfo/index?id='+item.order_id,
})
return;
}
if (item.order_product_list[0].product_model=='show') {
wx.navigateTo({
url: '/pages/user/order/showOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='post'){
wx.navigateTo({
url: '/pages/user/order/postOrderInfo/index?id='+item.order_id,
})
return;
}
if(item.order_product_list[0].product_model=='coupon'){
wx.navigateTo({
url: '/pages/user/order/couponOrderInfo/index?id='+item.order_id,
})
return;
}
}
// 砍价的去下单
// 拼团去下单也适用
const goKjOrder = function(item) {
return new Promise((resolve,reject)=>{
commonApi._post("product/get_product_detail",{
id:item.goods_id
}).then(res=>{
if(!res.data){
wx.showToast({
title: '该产品已下架',
icon:'none'
})
return;
}
let product = [{
product:res.data,
sku:res.data.sku.find(s=>s.id==item.sku_id),
productNum:1
}];
if(!product[0].sku){
wx.showToast({
title: '该规格已下架',
icon:'none'
})
return;
}
// 因为util里面不好改app.globalData的数据 但是下单是把产品信息先保存到globalData的 所以只能在页面内操作
// 购买 只能把产品信息回传过去 可能还要改 暂时先回传整个的
resolve(product);
}).catch(err=>{
reject(err)
})
})
}
const pagePoint = function(data,type) {
if(type!=1) {
data = data.currentTarget.dataset
}
commonApi._post('browse/page_point',{
...data,
event: data.event,
param: {...data.param, platform: 'mini'},
id: data.id,
userid: wx.getStorageSync('jstrip_userid'),
type: data.type,
}).then(res=>{
})
}
const goMovieDetail= function(id, title, needReturn) {
let tempUrl = 'https://m.cloud.sz-trip.com'+`/MovieInfo?id=${id}`
if (title) {
tempUrl += +'&title='+item.title
}
let url = '/pages/pbService/web/index?weburl=' + encodeURIComponent(tempUrl)
if (needReturn) {
return url
}
wx.navigateTo({
url: '/pages/pbService/web/index?weburl=' + encodeURIComponent(tempUrl)
})
// return '/pages/pbService/web/index?weburl=' + encodeURIComponent(tempUrl)
}
const goMovieList= function(needReturn) {
let tempUrl = 'https://m.cloud.sz-trip.com/movies'
let url = '/pages/pbService/web/index?weburl=' + encodeURIComponent(tempUrl)
if (needReturn) {
return url
}
wx.navigateTo({
url: '/pages/pbService/web/index?weburl=' + encodeURIComponent(tempUrl)
})
// return '/pages/pbService/web/index?weburl=' + encodeURIComponent(tempUrl)
}
const setGlobalPagePoint = function (val) {
wx.setStorageSync("globalPagPoint", val)
}
const getGlobalPagePoint = function () {
return wx.getStorageSync('globalPagPoint')
}
const clearGlobalPagePoint = function () {
wx.removeStorageSync("globalPagPoint")
}
// 详情埋点接口 方便后续处理
const pagePointPostUrl = [
{url:"product/get_product_detail",event:"product_view", needBrowswe: true},
{url:"scene/detail",event:"scene_view", needBrowswe: false},
// {url: "Actcalendar/getActDetail", event:"activity_view", needBrowswe: false},
// {url: "travels/getDetail", event:"travel_view", needBrowswe: false},
]
const detailPagePoint = function (url, res) {
try {
let pagePointRoute = pagePointPostUrl.find(v=>url.indexOf(v.url)>=0)
if (pagePointRoute) {
// 如果是产品详情的话 需要加埋点
// if (pagePointRoute.needBrowswe) {
// _post('browse/ProductStatistics', {
// uuid: wx.getStorageSync('uuid'),
// product_id: res.data.id,
// product_name: res.data.title,
// type: res.data.type
// })
// }
let pages = getCurrentPages(), view = pages[pages.length - 1], options= {};
// 如果游别的需求 把sourceFrom 换成id
if (view && view.options && view.options.sourceFrom) {
console.log(view.options)
options = view.options
setGlobalPagePoint(view.options.sourceFrom)
}
console.log(view.options)
pagePoint({
event: pagePointRoute.event,
param: {
...options,
type: res.type || res.data.type,
id: res.id|| res.data.id,
}
}, 1)
}
} catch(e) {console.log("error", e)}
}
// app 要传进来 util 获取不到
const orderByShoppingCart = function (listData, app) {
app.globalData.list = []
app.globalData.postProduct = []
app.globalData.product = null
app.globalData.createDate = null
app.globalData.index = 0
app.globalData.productPrice = 0
app.globalData.ticketPrice = 0
let productType,flag,isCar;
commonApi.user_post('wx/get_user_keep', {
jumpurl: '/pages/user/cartlist/list',
title: '购物车',
type: 'mini'
}).then(res => {
if (res.data.subscribe == 0) {
this.setData({
wxqrcode: res.data.qrcode,
showQrCode: true
})
} else {
app.globalData.couponInfo = null;
let list = listData, product = [], product1 = []
list.map(item => {
item.num = item.num || 1;
// item.product.type="post";
if (item.product.type == 'post') {
product.push({
product: item.product,
sku: item.sku,
productNum: item.num
})
} else {
product1.push(item)
app.globalData.list = product1
}
if (item.product.type.includes('post')) {
productType = 'post'
}
})
if (product.length == 0 && product1.length == 0) {
wx.showToast({
title: '请先选择产品',
icon: 'none'
})
return;
}
if (product.length > 0 && product1.length > 0) {
flag = "mix";
isCar = "multiple"
}
if (product1.length > 1) {
isCar = "multiple"
} else {
isCar = "single"
}
console.log(product1,'product1');
app.globalData.listName = null
if (product1.length>0) {
app.globalData.listName = 'car'
}
app.globalData.postProduct = product;
if (app.globalData.list) {
app.globalData.index = 0
app.globalData.product = app.globalData.list[app.globalData.index]
}
if (productType == 'post') {
wx.navigateTo({
url: '/pages/order/postOrder/index?from=cart&flag=' + flag,
})
} else {
wx.navigateTo({
url: '/subPackages/gwcOrder/index?isCar=' + isCar,
})
}
}
})
}
// 产品跳转其他小程序
const goProdInOtherPlatform = function (item) {
let webUrl = "https://m.cloud.sz-trip.com"
let platform = item.goods_jump_type;
console.log(item)
let appIdObj = {
"changshu": "wxdaf3d5edd07dc7af",
"yjks": "wx8888a3fd0862b4c8"
}
switch (item.type) {
case 'ticket': // 是产品的 票务
webUrl+= `/${platform==='yjks' ? 'ScenicDetailKs' : 'ScenicDetail'}?id=${item.scene_id || item.id}`
break;
case 'hotel': // 是产品的 酒店
webUrl+= `/HotelDetail?id=${item.scene_id || item.id}`
break;
case 'post': // 是产品的 邮寄
webUrl+= `/${platform==='yjks'? 'MailMerchandiseDetailKs' : 'MailMerchandiseDetail'}?id=${item.id}`
break;
case 'line': // 是产品的 线路
webUrl+= `/LineDetail?id=${item.id}`
break;
case 'coupon': // 是产品的 卡券
webUrl+= `/CardDetail?id=${item.id}`
break;
case 'show': // 是产品的 演出
webUrl+= `/PerformDetail?id=${item.id}`
break;
case 'food': // 是产品的 食品
webUrl+= `/FoodDetail?id=${item.id}`
break;
case 'activity': // 是产品的 活动 todo 这里要弄成是活动的id去跳转的,特别是从 江苏夜游过去的
webUrl+= `/ActivityDetail?id=${item.act_calendar_id || item.id}`
break;
case 'calendar': // ai入口活动日历
webUrl+= `/AppointmentDetail?id=${item.id}`
break;
case 'movie': // 是产品的 电影
webUrl+= `/MovieInfo?id=${item.third_id || item.id}`
break;
case 'scenic': // 是场景的 景点
webUrl+= `/${platform===0? 'ScenicDetailKs' : 'ScenicDetail'}?id=${item.scene_id || item.id}`
break;
case 'room': // 是场景的 酒店
webUrl+= `/HotelDetail?id=${item.scene_id || item.id}`
break;
case 'restaurant': // 是场景 美食
webUrl+= `/RestaurantDetail?id=${item.id}`
break;
case 'tenscenic': // 是场景 十景
webUrl+= `/TenScenicDetail?id=${item.id}`
break;
case 'venue': // 是场景的 场馆
webUrl+= `/PavilionDetail?id=${item.scene_id || item.id}`
break;
case 'cinema': // 是场景的 影院
webUrl+= `/CinemaDetail?id=${item.third_id || item.id}`
break;
case 'relic': // 文物
webUrl+= `/ProtectionUnitsInfo?id=${item.id}`
break;
case 'units': // 文化单位
webUrl+= `/CulturalUnitInfo?id=${item.id}`
break;
case 'red_map': // 红色地图
webUrl+= `/RedTouristInfo?id=${item.id}`
break;
case 'travels': // 红色地图
webUrl+= `/TravelNotesIntroductionInfo?id=${item.id}`
break;
}
console.log(appIdObj[platform],webUrl)
// 酒景套餐
if(item.is_package == 1) {
webUrl+= `/${platform==='yjks' ? 'MailMerchandiseDetailKs' : 'MailMerchandiseDetail'}?id=${item.id}`
}
// 一卡游详情
if(item.is_package == 2) {
webUrl+= `/OneCardTourDetail?id=${item.scene_id || item.id}`
}
webUrl+="&sourceFrom=recommend"
wx.navigateToMiniProgram({
appId: appIdObj[platform],
path: "/subPackages/webPage/webPage?url="+encodeURIComponent(webUrl),
})
// return webUrl;
}
module.exports = {
formatTime: formatTime,
formatNumber: formatNumber,
isTel: isTel,
isMail:isMail,
setTitleBarColor: setTitleBarColor,
base64src: base64src,
back: back,
formatDate:formatDate,
checkLocation:checkLocation,
dateToText:dateToText,
gotoDetail:gotoDetail,
gotoOrder:gotoOrder,
orderMoreTime:orderMoreTime,
goKjOrder:goKjOrder,
pagePoint: pagePoint,
formatMing:formatMing,
formatHou:formatHou,
goMovieDetail: goMovieDetail,
goMovieList: goMovieList,
setGlobalPagePoint: setGlobalPagePoint,
getGlobalPagePoint: getGlobalPagePoint,
clearGlobalPagePoint: clearGlobalPagePoint,
detailPagePoint: detailPagePoint,
orderByShoppingCart: orderByShoppingCart,
goProdInOtherPlatform: goProdInOtherPlatform,
}