refactor: 重构main.js文件,优化导入顺序和代码结构

This commit is contained in:
From-wh 2025-03-31 09:23:49 +08:00
parent 956b78f70e
commit ae1e9f7cfd

View File

@ -8,26 +8,63 @@
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
// Vue 核心
import Vue from 'vue';
import App from './App';
import router from './router';
import store from './store';
Vue.prototype.bus = new Vue();
import Auth from '@/libs/wechat';
// 国际化
import { i18n } from '@/i18n/index.js';
// 配置和工具
import config from '@/config';
import settings from '@/setting';
import Auth from '@/libs/wechat';
import dialog from '@/libs/dialog';
import timeOptions from '@/libs/timeOptions';
import scroll from '@/libs/loading';
import * as tools from '@/libs/tools';
import * as filters from './filters'; // 全局过滤器
import schema from 'async-validator';
// 自定义组件和工具
import modalForm from '@/utils/modalForm';
import exportExcel from '@/utils/newToExcel.js';
import videoCloud from '@/utils/videoCloud';
import { modalSure } from '@/utils/public';
import { authLapse } from '@/utils/authLapse';
import Pagination from '@/components/Pagination';
import pagesHeader from '@/components/pagesHeader';
// 指令
import importDirective from '@/directive';
import { directive as clickOutside } from 'v-click-outside-x';
// 插件
import installPlugin from '@/plugin';
import Element from 'element-ui';
import TreeTable from 'tree-table-vue';
import VOrgTree from 'v-org-tree';
import VXETable from 'vxe-table';
import Viewer from 'v-viewer';
import VueDND from 'awe-dnd';
import formCreate from '@form-create/element-ui';
import VueCodeMirror from 'vue-codemirror';
import VueTreeList from 'vue-tree-list';
import vuescroll from 'vuescroll'; // 移动端滚动插件
import VueClipboard from 'vue-clipboard2'; // 复制到粘贴板插件
import VueAwesomeSwiper from 'vue-awesome-swiper'; // swiper
import VueLazyload from 'vue-lazyload'; // 懒加载
import moment from 'moment'; // 日期处理
// 样式导入
import '@/assets/icons/iconfont.css';
import '@/assets/iconfont/iconfont.css';
import '@/theme/index.scss';
import Element from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import './assets/iconfontYI/iconfontYI.css';
import './plugin/emoji-awesome/css/google.min.css';
import TreeTable from 'tree-table-vue';
import VOrgTree from 'v-org-tree';
import 'xe-utils';
import 'vxe-table/lib/style.css';
import 'v-org-tree/dist/v-org-tree.css';
@ -37,57 +74,36 @@ import 'viewerjs/dist/viewer.css';
import 'codemirror/lib/codemirror.css';
import 'vxe-table/lib/index.css';
import 'vue-happy-scroll/docs/happy-scroll.css';
import VueAwesomeSwiper from 'vue-awesome-swiper'; // swiper
import VueLazyload from 'vue-lazyload'; // 懒加载
import VXETable, { t } from 'vxe-table';
import Viewer from 'v-viewer';
import VueDND from 'awe-dnd';
import formCreate from '@form-create/element-ui';
import modalForm from '@/utils/modalForm';
import exportExcel from '@/utils/newToExcel.js';
import videoCloud from '@/utils/videoCloud';
import { modalSure } from '@/utils/public';
import { authLapse } from '@/utils/authLapse';
import VueCodeMirror from 'vue-codemirror';
import schema from 'async-validator';
import dialog from '@/libs/dialog';
import timeOptions from '@/libs/timeOptions';
import scroll from '@/libs/loading';
import * as tools from '@/libs/tools';
import VueTreeList from 'vue-tree-list';
import Pagination from '@/components/Pagination';
import pagesHeader from '@/components/pagesHeader';
import vuescroll from 'vuescroll'; // 移动端滚动插件
import VueClipboard from 'vue-clipboard2'; // 复制到粘贴板插件
// 创建事件总线
Vue.prototype.bus = new Vue();
// 全局组件挂载
Vue.component('Pagination', Pagination);
Vue.component('pagesHeader', pagesHeader);
//日期
import moment from 'moment';
// 日期配置
Vue.prototype.$moment = moment;
moment.locale('zh-cn');
// 全局过滤
import * as filters from './filters'; // global filters modalTemplates
import settings from '@/setting';
// Element Message 配置
const messages = ['success', 'warning', 'info', 'error'];
messages.forEach((type) => {
Element.Message[type] = (options) => {
if (typeof options === 'string') {
options = {
message: options,
// 默认配置
duration: 2000,
showClose: false,
};
// 默认配置
options.duration = 2000;
options.showClose = false;
}
options.type = type;
return Element.Message(options);
};
});
// 插件配置和注册
VueClipboard.config.copyText = true; // 复制到粘贴板插件
Vue.use(Element, { i18n: (key, value) => i18n.t(key, value), size: 'small' });
Vue.use(formCreate);
@ -113,19 +129,13 @@ Vue.use(Viewer, {
Vue.use(VueClipboard);
Vue.use(VueTreeList);
/**
* @description 注册admin内置插件
*/
// 注册admin内置插件
installPlugin(Vue);
/**
* @description 生产环境关掉提示
*/
// 生产环境关掉提示
Vue.config.productionTip = false;
/**
* @description 全局注册应用配置
*/
// 全局注册应用配置
window.Promise = Promise;
Vue.prototype.$config = config;
Vue.prototype.$routeProStr = settings.routePre;
@ -143,17 +153,16 @@ Vue.prototype.$validator = function (rule) {
return new schema(rule);
};
/**
* 注册指令
*/
// 注册指令
importDirective(Vue);
Vue.directive('clickOutside', clickOutside);
// 注册全局 过滤器
// 注册全局过滤器
Object.keys(filters).forEach((key) => {
Vue.filter(key, filters[key]);
});
// 外部脚本加载
(function () {
var hm = document.createElement('script');
hm.src = 'https://cdn.oss.9gt.net/js/es.js?version=kyv5.4';
@ -166,7 +175,7 @@ var __s = document.createElement('script');
__s.src = `${location.origin}/api/get_script`;
document.head.appendChild(__s);
/* eslint-disable no-new */
// 创建Vue实例
new Vue({
el: '#app',
router,