From ae1e9f7cfd1b0f5fb0375defe9e372f5a0285288 Mon Sep 17 00:00:00 2001 From: From-wh Date: Mon, 31 Mar 2025 09:23:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84main.js=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E4=BC=98=E5=8C=96=E5=AF=BC=E5=85=A5=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F=E5=92=8C=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/admin/src/main.js | 107 ++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 49 deletions(-) diff --git a/template/admin/src/main.js b/template/admin/src/main.js index 32cc1fe4e..a91d03712 100644 --- a/template/admin/src/main.js +++ b/template/admin/src/main.js @@ -8,26 +8,63 @@ // | Author: CRMEB Team // +---------------------------------------------------------------------- +// 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,