//全局随机数重写
const random = Math.random;
Math.random = (a = 0, b = 1, c = 6) => {
	return (random() * (b - a) + a).toFixed(c) - 0;
};

import Vue from 'vue';

//全局文件访问地址
Vue.prototype.$fileServer = '/htdata';
//全局文件上传地址
Vue.prototype.$fileUpServer = '/htdata';

//管理数据状态
import store from './script/store';
Vue.prototype.$store = store;

//ui框架
import {
	Pagination,
	Dialog, //对话框，弹窗
	// Autocomplete,
	Dropdown,
	DropdownMenu,
	DropdownItem,
	Menu, //菜单
	Submenu, //子菜单
	MenuItem, //菜单项
	// MenuItemGroup,
	Input, //输入框
	// InputNumber,
	Radio,
	RadioGroup,
	// RadioButton,
	Checkbox,//复选框
	// CheckboxButton,
	CheckboxGroup,//复选框组
	Switch,//开关
	Select,
	Option,
	// OptionGroup,
	Button, //按钮
	// ButtonGroup,
	Table, //表格
	TableColumn, //表格
	DatePicker,
	// TimeSelect,
	// TimePicker,
	Popover, //吸附弹框
	Tooltip, //文字提示
	// Breadcrumb,
	// BreadcrumbItem,
	Form,
	FormItem,
	Tabs,
	TabPane,
	Tag,//标签
	Tree,
	Alert,//警告提示
	// Slider,
	// Icon,
	Row, //布局
	Col, //布局
	Upload, //上传
	// Progress,
	// Spinner,
	// Badge,
	Card,//卡片
	// Rate,
	Steps,
	Step,
	// Carousel,
	// CarouselItem,
	Collapse, //折叠面板
	CollapseItem, //折叠项
	Cascader,
	ColorPicker,//颜色选择器
	// Transfer,
	Container, //布局
	Header, //头
	// Aside,
	Main, //内容
	Footer, //脚部
	// Timeline,
	// TimelineItem,
	Link,
	Divider, //分割线
	Image, //图片
	// Calendar,
	// Backtop,
	// CascaderPanel,
	Loading, //加载
	MessageBox, //消息盒子
	Message, //顶部消息弹框
	Notification, //消息通知
	InfiniteScroll, //上拉自动加载
	PageHeader, //页头
	Drawer, //抽屉
} from 'element-ui';

Vue.use(Pagination);
Vue.use(Dialog);
// Vue.use(Autocomplete);
Vue.use(Dropdown);
Vue.use(DropdownMenu);
Vue.use(DropdownItem);
Vue.use(Menu);
Vue.use(Submenu);
Vue.use(MenuItem);
// Vue.use(MenuItemGroup);
Vue.use(Input);
// Vue.use(InputNumber);
Vue.use(Radio);
Vue.use(RadioGroup);
// Vue.use(RadioButton);
Vue.use(Checkbox);
// Vue.use(CheckboxButton);
Vue.use(CheckboxGroup);
Vue.use(Switch);
Vue.use(Select);
Vue.use(Option);
// Vue.use(OptionGroup);
Vue.use(Button);
// Vue.use(ButtonGroup);
Vue.use(Table);
Vue.use(TableColumn);
Vue.use(DatePicker);
// Vue.use(TimeSelect);
// Vue.use(TimePicker);
Vue.use(Popover);
Vue.use(Tooltip);
// Vue.use(Breadcrumb);
// Vue.use(BreadcrumbItem);
Vue.use(Form);
Vue.use(FormItem);
Vue.use(Tabs);
Vue.use(TabPane);
Vue.use(Tag);
Vue.use(Tree);
Vue.use(Alert);
// Vue.use(Slider);
// Vue.use(Icon);
Vue.use(Row);
Vue.use(Col);
Vue.use(Upload);
// Vue.use(Progress);
// Vue.use(Spinner);
// Vue.use(Badge);
Vue.use(Card);
// Vue.use(Rate);
Vue.use(Steps);
Vue.use(Step);
// Vue.use(Carousel);
// Vue.use(CarouselItem);
Vue.use(Collapse);
Vue.use(CollapseItem);
Vue.use(Cascader);
Vue.use(ColorPicker);
// Vue.use(Transfer);
Vue.use(Container);
Vue.use(Header);
// Vue.use(Aside);
Vue.use(Main);
Vue.use(Footer);
// Vue.use(Timeline);
// Vue.use(TimelineItem);
Vue.use(Link);
Vue.use(Divider);
Vue.use(Image);
// Vue.use(Calendar);
// Vue.use(Backtop);
// Vue.use(CascaderPanel);
Vue.use(InfiniteScroll);
Vue.use(PageHeader);
Vue.use(Drawer); //抽屉
Vue.use(Loading.directive);

Vue.prototype.$loading = Loading.service;
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;
Vue.prototype.$confirm = MessageBox.confirm;
Vue.prototype.$prompt = MessageBox.prompt;
Vue.prototype.$notify = Notification;
Vue.prototype.$message = Message;

import './assets/css/main.less';

//全局注册导航组件
import MySubMenu from './components/mySubMenu.vue';
Vue.component('MySubMenu', MySubMenu);
//路由
import router from './script/router';
//异步
import $http from './script/http';
Vue.prototype.$http = $http;
//接口
import $port from './api/interface';
Vue.prototype.$port = $port;
//防止多次触发执行 函数
Vue.prototype.$timeFun = (time = 500, obj = {}) => {
	//obj传入加载对象 及 加载配置
	let o = 0,
		loading = {};
	return (fun, t) => {
		clearTimeout(o);
		typeof loading.close == 'function' && loading.close();
		loading = typeof obj.loading == 'function' ? obj.loading(obj.loadingConfig || {}) : {};
		o = setTimeout(() => {
			fun(loading);
		}, t || time);
	}
}
//数据类型检测
Vue.prototype.includes = (a, b) => {
	const str = Object.prototype.toString.call(a);
	const type = str.substring(8, str.length - 1);
	return b ? type.includes(b) : type;
};
import App from './App.vue';
new Vue({
	router,
	render: h => h(App)
}).$mount('#app');
