// 引入自己封装的方法
import Helper from '@/util/plugins/helper.js'
// 引入big.js
import Big from '@/static/js/big.js'
Big.prototype.toNumber = function() {
	return Number(this)
}
/*
 * @description        定义全局mixin。
 * @example-$M_Big     $M_Big格式：$M（表示mixin的的方法）  Big（表示具体方法名）
 */
export default {
	methods: {
		// 阻止冒泡
		$M_stopPrevent() {
			return false;
		},
		// 调试
		$M_Log(...obj) {
			console.log('\n', ...obj, '\n')
		},
		/*
		加-add:this.$M_Big(num1).add(num2).toNumber();
		减-sub:this.$M_Big(num1).sub(num2).toNumber();
		乘-mul:this.$M_Big(num1).mul(num2).toNumber();
		除-div:this.$M_Big(num1).div(num2).toNumber();
		*/
		$M_Big(opt) {
			// 浮点计算： 加-add  减-sub  乘-mul  除-div  四舍五入-round(位数，模式)
			return new Big(opt)
		},

		// 路由跳转
		$M_Go(url, opt = {}) {
			return uni.navigateTo({
				animationType: 'pop-in',
				animationDuration: 200,
				url,
				...opt
			})
		},
		$M_Rd(url, opt = {}) {
			return uni.redirectTo({
				animationType: 'pop-in',
				animationDuration: 200,
				url,
				...opt
			})
		},
		$M_Rl(url, opt = {}) {
			return uni.reLaunch({
				animationType: 'pop-in',
				animationDuration: 200,
				url,
				...opt
			})
		},
		$M_Back(delta, opt) {
			return uni.navigateBack({
				delta,
				...opt
			})
		},
		// VUEX 语法糖
		$M_Dp(name, data) {
			return this.$store.dispatch(name, data)
		},
		$M_Cm(name, data) {
			return this.$store.commit(name, data)
		},
		$M_GS(module, data) {
			return this.$store.state[module][data]
		},
		// 对象
		$M_Extend: Helper.Extend, // 继承一个对象$M_Extend(obj,...obj)
		$M_Origin: Helper.Origin, // 拷贝一个对象（有缺陷）
		$M_DeepCopy: Helper.DeepCopy, // 完美深拷贝一个对象
		$M_IsEmpty: Helper.IsEmpty, // 判断是否是空对象、数组
		$M_ArrayToObject: Helper
			.ArrayToObject, // ArrayToObject(array,key) 把数组转换为对象格式，第一个参数传入对象，第二个参数传入使用 item 的哪一个参数作为对象属性的 key , 不传则默认使用数组索引

		// 缓存
		$M_Cache: Helper
			.Cache, // 获取缓存-Cache(key)  清除缓存-Cache(key,null)  设置缓存-Cache(key,val,timeout) // timeout： 缓存时间单位 Number 秒  ||  '10m'=分钟 '10h'=小时 '10d'=天
		$M_CacheClean: Helper.CacheClean, // 清理所有缓存
		$M_Token: Helper.Token, // 获取-Token()  保存-Token(val)  清除-Token(null)

		// 时间格式化
		$M_Time: Helper
			.Time, // 获取日期字符串，不传 Date 默认获取当前日期 Time(Date,"yyyy-MM-dd hh:mm:ss")，也可把 Date 参数替换城时间戳，方法自动判断时间戳单位是秒或毫秒
		$M_Timestamp: Helper.Timestamp, // 把 Date 日期转换为时间戳，单位秒，如果不传 Date 则默认取当前时间戳
		$M_UnTimestamp: Helper.UnTimestamp, // 同 Time 方法
	},

}
