import Vue from 'vue'; import Cookies from 'store'; import { startsWith } from 'lodash-es'; import Element from 'element-ui'; import './assets/styles/element-variables.scss'; import 'fontawesome-free-6.2.1/css/all.min.css'; import '@/assets/styles/index.scss'; // global css import '@/assets/styles/global.scss'; // global css import '@/assets/styles/ruoyi.scss'; // ruoyi css import App from './App'; import store from './store'; import router from './router'; import directive from './directive'; // directive import './filters'; import plugins from './plugins'; // plugins import { download } from '@/utils/request'; import './assets/icons'; // icon import './permission'; // permission control import { getDataByDatatypeCode } from '@/api/system/dict/data'; import { getConfigKey } from '@/api/system/config'; import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from '@/utils/ruoyi'; // 分页组件 import Pagination from '@/components/Pagination'; // 自定义表格工具组件 import RightToolbar from '@/components/RightToolbar'; // 富文本组件 import Editor from '@/components/Editor'; // 文件上传组件 import FileUpload from '@/components/FileUpload'; // 图片上传组件 import ImageUpload from '@/components/ImageUpload'; // 图片预览组件 import ImagePreview from '@/components/ImagePreview'; // 字典标签组件 import DictTag from '@/components/DictTag'; // 头部标签组件 import VueMeta from 'vue-meta'; // 字典数据组件 import DictData from '@/components/DictData'; import VueAMap from 'vue-amap'; function formatImg(url) { const prefix = process.env.VUE_APP_BASE_API; if (!url) { return '-'; } return startsWith(url, 'http') ? url : prefix + url; } Vue.filter('formatImg', formatImg); // 全局方法挂载 Vue.prototype.getDataByDatatypeCode = getDataByDatatypeCode; Vue.prototype.getConfigKey = getConfigKey; Vue.prototype.parseTime = parseTime; Vue.prototype.resetForm = resetForm; Vue.prototype.addDateRange = addDateRange; Vue.prototype.selectDictLabel = selectDictLabel; Vue.prototype.selectDictLabels = selectDictLabels; Vue.prototype.download = download; Vue.prototype.handleTree = handleTree; // 全局组件挂载 Vue.component('DictTag', DictTag); Vue.component('Pagination', Pagination); Vue.component('RightToolbar', RightToolbar); Vue.component('Editor', Editor); Vue.component('FileUpload', FileUpload); Vue.component('ImageUpload', ImageUpload); Vue.component('ImagePreview', ImagePreview); Vue.use(VueAMap); // 初始化vue-amap VueAMap.initAMapApiLoader({ // 高德的key key: 'bd1582190896ab05afb30aa8161d14c2', // 插件集合 plugin: [ 'Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.PolygonEditor', 'AMap.CircleEditor', 'AMap.Geocoder', 'AMap.ElasticMarker' ], // 高德 sdk 版本,默认为 1.4.4 v: '2.0' }); Vue.use(directive); Vue.use(plugins); Vue.use(VueMeta); DictData.install(); /** * If you don't want to use mock-server * you want to use MockJs for mock api * you can execute: mockXHR() * * Currently MockJs will be used in the production environment, * please remove it before going online! ! ! */ Vue.use(Element, { size: Cookies.get('size') || 'medium' // set element-ui default size }); Vue.config.productionTip = false; new Vue({ el: '#app', router, store, render: (h) => h(App) });