/* * 公共方法 * */ import moment from 'moment'; import { lang } from 'moment'; import { ROOTPATH } from "@/common/config.js" const base = { imgHost:(img)=>{ return ROOTPATH + '/wx-icon/' + img }, base64ToFile:(dataurl, filename = 'file') => { let arr = dataurl.split(',') let mime = arr[0].match(/:(.*?);/)[1] let suffix = mime.split('/')[1] let bstr = atob(arr[1]) let n = bstr.length let u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr], `${filename}.${suffix}`, { type: mime }) }, toast : (msg, time, callback) => { uni.showToast({ icon: "none", title: msg, duration: time || 2000, success: function(res) { if (callback && typeof(callback) == 'function') { console.log(callback) callback() } } }) }, // 转换日期为日月 formatDateToMonthDay : (dateString) => { const month = moment(dateString).format('MM') const day = moment(dateString).format('DD') return `${month}月${day}日`; }, // 比较当前时间是否在活动期间 在true 不在false isCurrentTimeBetween : (startTime, endTime) => { let that = this const now = moment().valueOf() const start = moment(startTime).valueOf(); const end = moment(endTime).valueOf(); return now < start || now > end; }, // 验证是否填写的是中文 isOnlyChinese : (str) => { const chineseRegex = /^[\u4e00-\u9fa5]+$/; return chineseRegex.test(str); }, // 验证是否为空 isNull : (p) => { return p == '' || p == undefined || p == null || p == 'undefined' || p == 'null'; }, // 验证手机号 isMobile : (phoneNumber) => { return /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(phoneNumber) }, isMail (val) { return /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(val) }, // 整数 isInteger(str) { // 正则表达式,用于匹配整数,包括带正号的情况 const regex = /^[+-]?\d+$/; // 测试字符串是否匹配正则表达式 return regex.test(str); }, // 数字 isNumber(str) { // 正则表达式,用于匹配数字 const regex = /^-?\d+(\.\d+)?$/; // 测试字符串是否匹配正则表达式 return regex.test(str); }, // 分享 shareInfo : () => { return{ title:"苏州科技商学院", imageUrl:"/static/share.jpg" } }, // 检查是否空对象 isEmptyObject : (obj) => { // 检查传入参数是否为一个对象 if (typeof obj !== 'object' || obj === null) { throw new Error('Input must be an object'); } // 使用Object.keys()方法获取对象的属性键数组,并检查其长度是否为0 return Object.keys(obj).length === 0; }, deepCopy(data) { //string,number,bool,null,undefined,symbol //object,array,date if (data && typeof data === "object") { //针对函数的拷贝 if (typeof data === "function") { let tempFunc = data.bind(null); tempFunc.prototype = this.deepCopy(data.prototype); return tempFunc; } switch (Object.prototype.toString.call(data)) { case "[object String]": return data.toString(); case "[object Number]": return Number(data.toString()); case "[object Boolean]": return Boolean(data.toString()); case "[object Date]": return new Date(data.getTime()); case "[object Array]": let arr = []; for (let i = 0; i < data.length; i++) { arr[i] = this.deepCopy(data[i]); } return arr; //js自带对象或用户自定义类实例 case "[object Object]": let obj = {}; for (let key in data) { //会遍历原型链上的属性方法,可以用hasOwnProperty来控制 (obj.hasOwnProperty(prop) obj[key] = this.deepCopy(data[key]); } return obj; } } else { //string,number,bool,null,undefined,symbol return data; } }, // 按顺序把接口返回值 赋给 form requestToForm(requestObj,form){ // 获取a对象中属性的顺序和值 let aKeys = Object.keys(form); let aValues = aKeys.map(key => form[key]); // 遍历b对象,将属性等于a中属性值的对象深拷贝给a中的相应属性 for (let i = 0; i < aKeys.length; i++) { let key = aKeys[i]; let value = aValues[i]; if (requestObj[key] === value) { // 深拷贝对象 Object.assign(form, { [key]: this.deepCopy(requestObj[key]) }); } } // 遍历b对象,将b中独有的属性按照a的顺序插入到a中 for (let key in requestObj) { if (!form[key]) { // 深拷贝属性值 Object.assign(form, { [key]: this.deepCopy(requestObj[key]) }); } } return form } } export { base }