时味苏州
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.
 
 
 
 

316 lines
7.4 KiB

// 获取路径参数
import Vue from "vue";
// 格式化富文本
Vue.prototype.formateRichText = str => {
if (!str) return "";
var reg = new RegExp("<img", "g");
str = str.replace(reg, "<img class='sz-xcx-fwb-img' width='100%'")
reg = new RegExp("<IMG", "g");
str = str.replace(reg, "<img class='sz-xcx-fwb-img' width='100%'")
reg = new RegExp("&nbsp;", "g");
str = str.replace(reg, '<span style="width: 8rpx;display: inline-block;"></span>')
reg = new RegExp("section", "g");
str = str.replace(reg, 'div');
reg = new RegExp("↵", "g");
str = str.replace(reg, '<br />');
return str;
}
// 获取路径参数
Vue.prototype.getUrlPara = url => {
let arrUrl = url.split("?");
let para = arrUrl[1];
return para ? para.split('&') : false;
}
// 中文姓名规则
Vue.prototype.idChinaName = (val) => {
var pattern = /^[\u4E00-\u9FA5]{2,4}$/
return pattern.test(val);
}
// 身份证验证规则
Vue.prototype.idCardNumber = (val) => {
var pattern = /^\d{17}(\d{1}|[X|x])$/
return pattern.test(val);
}
// 护照验证正则
Vue.prototype.passportValid = (val) => {
return /^([a-zA-z]|[0-9]){5,17}$/.test(val);
}
// 台胞证正则
Vue.prototype.taiwanValid = (val) => {
return /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/.test(val);
}
// 港澳通行证正则
Vue.prototype.gangaoValid = (val) => {
return /^([A-Z]\d{6,10}(\(\w{1}\))?)$/.test(val);
}
// 外国人永久居留证正则
Vue.prototype.foreignerValid = (val) => {
return /(^[A-Za-z]{3})([0-9]{12}$)/.test(val);
}
// 军官证正则
Vue.prototype.officerValid = (val) => {
return /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/.test(val);
}
// 邮箱验证正则
Vue.prototype.emailValid = (val) => {
return /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(val)
}
//判断电话号码格式
Vue.prototype.IsTel = tel => {
var pattern = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
return pattern.test(tel);
}
//判断澳门电话号码格式
Vue.prototype.IsTelMacau = tel => {
var pattern = /^\d{8}$/;
return pattern.test(tel);
}
//验证码格式
Vue.prototype.IsCode = code => {
var pattern = /^\d{6}$/;
return pattern.test(code);
}
// 图片显示判断
Vue.prototype.showImg = img => {
if (!img) return;
if (img.indexOf('https://') != -1 || img.indexOf('http://') != -1) {
return img;
} else {
// return Vue.prototype.NEWAPIURL + img;
return 'https://static.ticket.sz-trip.com'+img;
}
}
// 获取经纬度
Vue.prototype.getLocation = () => {
uni.startLocationUpdate({
success: res => {
uni.onLocationChange(data => {
uni.setStorageSync('location', {
lat: data.latitude,
lon: data.longitude
});
})
}
})
}
// 路由页面跳转
Vue.prototype.gotoPath = path => {
uni.navigateTo({
url: path
})
}
// 返回上一页
Vue.prototype.goBack = () => {
getCurrentPages().length > 1 ? uni.navigateBack({}) : uni.switchTab({
url: '/pages/index/index'
})
}
// 打开地图
Vue.prototype.openLocation = (lat, lon) => {
uni.openLocation({
latitude: Number(lat),
longitude: Number(lon),
success: function() {
console.log('success');
}
});
}
// 拨打电话
Vue.prototype.clickPhone = (phone) => {
uni.makePhoneCall({
phoneNumber: phone
})
}
//周几
Vue.prototype.ShowDateDay = day => {
let stateTxt = "";
switch (day) {
case 0:
stateTxt = '周日'
break;
case 1:
stateTxt = '周一'
break;
case 2:
stateTxt = '周二'
break;
case 3:
stateTxt = '周三'
break;
case 4:
stateTxt = '周四'
break;
case 5:
stateTxt = '周五'
break;
case 6:
stateTxt = '周六'
break;
}
return stateTxt
}
Date.prototype.Format = function(fmt) { //author: meizz
var o = {
"Y+": this.getFullYear(), //月份
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k])
.length)));
return fmt;
}
// 是否接收订阅消息
Vue.prototype.getSubscribeMessage = () => {
const templateIds = [
// 退款成功通知
'hRZoiEES2BWtKb6Xgsnn8khLQH9un5j_11qu0bwlhfE',
// 订单核销通知
// '7D-JP7o0nQ_NiQk2w8mBs8jdT1_7ofvyBN-G9NLY2Zk',
// 订单支付成功通知
// '6cHez9KDlCDp1_nWUlUSV7qEaahIQWmYVlOCE-J6ODQ',
// 出票失败提醒
// 'G-N85zK2gPwgTRZWQrtHZo_-5TFcdAqBxSk4qsqcvVc',
// 出票结果通知
'YyTCUIYBnrj9CyKks8cOjNX_Rk8a4yVdswMP-zXVbhc'
]
uni.requestSubscribeMessage({
tmplIds: templateIds,
complete(res) {
uni.navigateTo({
url: '/subPackages/order/trades'
})
}
})
}
// 金刚区头图
Vue.prototype.getHeadImg = id => {
return Vue.prototype.Post({
id,
},
'/api/multimedia/detail'
).then(res => {
return res.data.head_img
});
}
// 获取最大优惠券 params:{money:100,sku_ids:1,2} money单位分
Vue.prototype.getMaxCoupon = async function (param) {
param.money = (param.money||0)
let res = await this.Post(param, "/api/coupon/use_max_coupon_list")
if (res.code == 1 && res.data.id) {
this.$store.commit("choseCoupon",res.data);
}
return res.data
}
// H5小程序跳转外部链接
Vue.prototype.gotoWebUrl = url => {
// #ifdef MP-WEIXIN
uni.navigateTo({
url: '/subPackages/webPage/webPage?url=' + encodeURIComponent(url)
})
// #endif
// #ifdef H5
window.location.href = url
// #endif
}
// 根据类型跳转详情
Vue.prototype.gotoDetailByType = item => {
let url = ''
if(item.is_package) {
url = '/subPackages/food/detail?id=' + item.product_id
Vue.prototype.gotoPath(url)
return;
}
switch (item.type){
case 'line':
url = '/subPackages/line/lineDetail?id=' + item.id
break;
case 'hotel':
url = '/subPackages/homestay/detail?id=' + (item.scene_id || item.id)
break;
case 'ticket':
url = '/subPackages/ticket/detail?id=' + (item.scene_id || item.id)
break;
case 'post':
url = '/subPackages/techan/detail?id=' + (item.product_id || item.id)
break;
default:
break;
}
console.log(url)
Vue.prototype.gotoPath(url)
}
// 跳转购物车
Vue.prototype.goCartPage = ()=>{
uni.switchTab({
url: "/pages/cart/cart"
})
},
// 购物车下单去下个页面
Vue.prototype.goCartNextPage= function(currentPageIndex){
// currentPage "" 购物车 'techan' 'ticket' 'food' 'hotel'
// 0 1 2 3 4
let techanOrderList = this.$store.state.user.techanOrderList;
let ticketOrderList = this.$store.state.user.ticketOrderList;
let foodOrderList = this.$store.state.user.foodOrderList;
let hotelOrderList = this.$store.state.user.hotelOrderList;
console.log(hotelOrderList)
let orderPage = [
{path: '/subPackages/techan/order', length: techanOrderList.length},
{path: '/subPackages/ticket/order', length: ticketOrderList.length},
{path: '/subPackages/food/order', length: foodOrderList.length},
{path: '/subPackages/homestay/order',length: hotelOrderList.length}
]
let nextPage = orderPage.find((v,index)=>v.length>0&&index>=currentPageIndex)
if (nextPage) {
console.log(nextPage)
uni.navigateTo({
url: nextPage.path+'?isShoppingCart=1'
})
} else {
console.log(orderPage, nextPage, '结束')
// todo 最后下单页面
uni.navigateTo({
url: '/subPackages/order/cartOrder'
})
}
}