235 lines
6.4 KiB
JavaScript
Executable File
235 lines
6.4 KiB
JavaScript
Executable File
import Config from "./config.js"
|
||
import Vue from 'vue'
|
||
|
||
const Util = {
|
||
/**
|
||
* 图片路径转换
|
||
* @param {String} img_path 图片地址
|
||
* @param {Object} params 参数,针对商品、相册里面的图片区分大中小,size: big、mid、small
|
||
*/
|
||
img(img_path, params) {
|
||
var path = ""
|
||
if (img_path != undefined && typeof img_path == 'string' && img_path != "") {
|
||
if (img_path.split(',').length > 1) {
|
||
img_path = img_path.split(',')[0];
|
||
}
|
||
if (params && img_path != this.$store.getters.defaultGoodsImage) {
|
||
// 过滤默认图
|
||
let arr = img_path.split(".")
|
||
let suffix = arr[arr.length - 1]
|
||
arr.pop()
|
||
arr[arr.length - 1] = arr[arr.length - 1] + "_" + params.size.toUpperCase()
|
||
arr.push(suffix)
|
||
img_path = arr.join(".")
|
||
}
|
||
if (img_path.indexOf("http://") == -1 && img_path.indexOf("https://") == -1) {
|
||
path = Config.imgDomain + "/" + img_path
|
||
} else {
|
||
path = img_path
|
||
}
|
||
}
|
||
return path
|
||
},
|
||
/**
|
||
* 时间戳转日期格式
|
||
* @param {Object} timeStamp
|
||
*/
|
||
timeStampTurnTime(timeStamp) {
|
||
if (timeStamp != undefined && timeStamp != "" && timeStamp > 0) {
|
||
var date = new Date()
|
||
date.setTime(timeStamp * 1000)
|
||
var y = date.getFullYear()
|
||
var m = date.getMonth() + 1
|
||
m = m < 10 ? "0" + m : m
|
||
var d = date.getDate()
|
||
d = d < 10 ? "0" + d : d
|
||
var h = date.getHours()
|
||
h = h < 10 ? "0" + h : h
|
||
var minute = date.getMinutes()
|
||
var second = date.getSeconds()
|
||
minute = minute < 10 ? "0" + minute : minute
|
||
second = second < 10 ? "0" + second : second
|
||
return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second
|
||
} else {
|
||
return ""
|
||
}
|
||
},
|
||
/**
|
||
* 倒计时
|
||
* @param {Object} seconds 秒
|
||
*/
|
||
countDown(seconds) {
|
||
let [day, hour, minute, second] = [0, 0, 0, 0]
|
||
if (seconds > 0) {
|
||
day = Math.floor(seconds / (60 * 60 * 24))
|
||
hour = Math.floor(seconds / (60 * 60)) - day * 24
|
||
minute = Math.floor(seconds / 60) - day * 24 * 60 - hour * 60
|
||
second = Math.floor(seconds) - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60
|
||
}
|
||
if (day < 10) {
|
||
// day = '0' + day
|
||
}
|
||
if (hour < 10) {
|
||
// hour = '0' + hour
|
||
}
|
||
if (minute < 10) {
|
||
// minute = '0' + minute
|
||
}
|
||
if (second < 10) {
|
||
// second = '0' + second
|
||
}
|
||
return {
|
||
d: day,
|
||
h: hour,
|
||
i: minute,
|
||
s: second
|
||
}
|
||
},
|
||
/**
|
||
* 数值去重
|
||
* @param {Array} arr 数组
|
||
* @param {string} field 字段
|
||
*/
|
||
unique(arr, field) {
|
||
const res = new Map()
|
||
return arr.filter(a => !res.has(a[field]) && res.set(a[field], 1))
|
||
},
|
||
/**
|
||
* 判断值是否在数组中
|
||
* @param {Object} elem
|
||
* @param {Object} arr
|
||
*/
|
||
inArray: function (elem, arr) {
|
||
return arr == null ? -1 : arr.indexOf(elem)
|
||
},
|
||
/**
|
||
* 获取某天日期
|
||
* @param {Object} day
|
||
*/
|
||
getDay: function (day) {
|
||
var today = new Date()
|
||
var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day
|
||
today.setTime(targetday_milliseconds)
|
||
|
||
const doHandleMonth = function (month) {
|
||
var m = month
|
||
if (month.toString().length == 1) {
|
||
m = "0" + month
|
||
}
|
||
return m
|
||
}
|
||
|
||
var tYear = today.getFullYear()
|
||
var tMonth = today.getMonth()
|
||
var tDate = today.getDate()
|
||
var tWeek = today.getDay()
|
||
var time = parseInt(today.getTime() / 1000)
|
||
tMonth = doHandleMonth(tMonth + 1)
|
||
tDate = doHandleMonth(tDate)
|
||
|
||
const week = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
||
return {
|
||
t: time,
|
||
y: tYear,
|
||
m: tMonth,
|
||
d: tDate,
|
||
w: week[tWeek]
|
||
}
|
||
},
|
||
/**
|
||
* 复制
|
||
* @param {Object} value
|
||
* @param {Object} callback
|
||
*/
|
||
copy(value, callback) {
|
||
var oInput = document.createElement("input") //创建一个隐藏input(重要!)
|
||
oInput.value = value //赋值
|
||
document.body.appendChild(oInput)
|
||
oInput.select() // 选择对象
|
||
document.execCommand("Copy") // 执行浏览器复制命令
|
||
oInput.className = "oInput"
|
||
oInput.style.display = "none"
|
||
this.$message({
|
||
message: "复制成功",
|
||
type: "success"
|
||
})
|
||
typeof callback == "function" && callback()
|
||
},
|
||
/**
|
||
* 深度拷贝对象
|
||
* @param {Object} obj
|
||
*/
|
||
deepClone(obj) {
|
||
const isObject = function (obj) {
|
||
return typeof obj == "object"
|
||
}
|
||
|
||
if (!isObject(obj)) {
|
||
throw new Error("obj 不是一个对象!")
|
||
}
|
||
//判断传进来的是对象还是数组
|
||
let isArray = Array.isArray(obj)
|
||
let cloneObj = isArray ? [] : {}
|
||
//通过for...in来拷贝
|
||
for (let key in obj) {
|
||
cloneObj[key] = isObject(obj[key]) ? this.deepClone(obj[key]) : obj[key]
|
||
}
|
||
return cloneObj
|
||
},
|
||
|
||
// 过滤价格
|
||
filterPrice(value) {
|
||
return value.toFixed(2)
|
||
},
|
||
pushToTab(url) {
|
||
if (process.client) {
|
||
if (typeof url == 'string') {
|
||
let routeUrl = '';
|
||
if (url.indexOf('http') != -1 || url.indexOf('https') != -1) {
|
||
routeUrl = url;
|
||
} else {
|
||
routeUrl = Config.webDomain + url;
|
||
}
|
||
window.open(routeUrl, '_blank');
|
||
} else if (typeof url == 'object') {
|
||
let routeUrl = '';
|
||
if (url.path.indexOf('http') != -1 || url.path.indexOf('https') != -1) {
|
||
routeUrl = url.path;
|
||
} else {
|
||
routeUrl = Config.webDomain + url.path;
|
||
}
|
||
if (url.qurey) {
|
||
Object.keys(url.qurey).forEach((value, index) => {
|
||
url.qurey += (index == 0 ? '?' : '&') + value + '=' + url.qurey[value];
|
||
})
|
||
}
|
||
window.open(routeUrl, '_blank');
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* 验证手机号
|
||
* @param {string} mobile 被验证的mobile
|
||
* @return {object} 验证后的结果
|
||
**/
|
||
verifyMobile(mobile) {
|
||
var parse = /^\d{11}$/.test(mobile);
|
||
return parse;
|
||
},
|
||
// 过滤空数据字段
|
||
handleLink(params) {
|
||
var query = {};
|
||
for (let key in params) {
|
||
if (params[key]) {
|
||
query[key] = params[key];
|
||
}
|
||
}
|
||
return query;
|
||
}
|
||
}
|
||
|
||
Vue.prototype.$util = Util;
|
||
Vue.prototype.$img = Util.img
|
||
Vue.prototype.$timeStampTurnTime = Util.timeStampTurnTime
|
||
Vue.prototype.$copy = Util.copy
|