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; } 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 { console.log(res) 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, }