import config from "./config"
import api from "./api"
import tool from "./utils/tool"
import http from "./utils/request"

import scTooltip from "./components/scTooltip"
import scTable from "./components/scTable"
import scUpload from "./components/scUpload"
import scUploadMultiple from "./components/scUpload/multiple"
import scUploadFile from "./components/scUpload/file"
import scFormTable from "./components/scFormTable"
import scTableSelect from "./components/scTableSelect"
import scPageHeader from "./components/scPageHeader"
import scDialog from "./components/scDialog"
import scForm from "./components/scForm"
import scTitle from "./components/scTitle"
import scWaterMark from "./components/scWaterMark"
import scQrCode from "./components/scQrCode"
import scStatusIndicator from "./components/scMini/scStatusIndicator"
import scTrend from "./components/scMini/scTrend"
import scStatistic from "./components/scStatistic"
import scEcharts from "./components/scEcharts/"
import dictSelect from "./components/scChengTou/dictSelect"
import treeSelect from "./components/scChengTou/treeSelect"
import approveIframe from "./components/scChengTou/approveIframe"

import auth from "./directives/auth"
import time from "./directives/time"
import copy from "./directives/copy"
import errorHandler from "./utils/errorHandler"

import * as elIcons from "@element-plus/icons-vue"
import * as scIcons from "./assets/icons"

export default {
	install(app) {
		//挂载全局对象
		app.config.globalProperties.$CONFIG = config;
		app.config.globalProperties.$TOOL = tool;
		app.config.globalProperties.$HTTP = http;
		app.config.globalProperties.$API = api;

		//注册全局组件
		app.component("scTooltip", scTooltip);
		app.component("scTable", scTable);
		app.component("scUpload", scUpload);
		app.component("scUploadMultiple", scUploadMultiple);
		app.component("scUploadFile", scUploadFile);
		app.component("scFormTable", scFormTable);
		app.component("scTableSelect", scTableSelect);
		app.component("scPageHeader", scPageHeader);
		app.component("scDialog", scDialog);
		app.component("scForm", scForm);
		app.component("scTitle", scTitle);
		app.component("scWaterMark", scWaterMark);
		app.component("scQrCode", scQrCode);
		app.component("scStatusIndicator", scStatusIndicator);
		app.component("scTrend", scTrend);
		app.component("scStatistic", scStatistic);
		app.component("scEcharts", scEcharts);
		app.component("dictSelect", dictSelect);
		app.component("treeSelect", treeSelect);
		app.component("approveIframe", approveIframe);

		//注册全局指令
		app.directive("auth", auth)
		app.directive("time", time)
		app.directive("copy", copy)

		//统一注册el-icon图标
		for (let icon in elIcons) {
			app.component(`ElIcon${icon}`, elIcons[icon])
		}
		//统一注册sc-icon图标
		for (let icon in scIcons.default) {
			app.component(`ScIcon${icon}`, scIcons.default[icon])
		}

		//关闭async-validator全局控制台警告
		window.ASYNC_VALIDATOR_NO_WARNING = 1

		//全局代码错误捕捉
		app.config.errorHandler = errorHandler
	}
}