| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import Vue from 'vue'
- import App from './App.vue'
- import router from './router'
- import store from './store'
- import {
- Button, Table, TableColumn, Form, FormItem, Input, Select, Option, Dialog,
- Pagination, Tag, Card, Col, Row, Icon, Descriptions, DescriptionsItem,
- Radio, RadioGroup, Switch, Checkbox, CheckboxGroup, Dropdown,
- DropdownMenu, DropdownItem, DatePicker, Upload, Tabs, TabPane,
- Menu, Submenu, MenuItem, Empty, Drawer, Timeline, TimelineItem,
- Progress, Container, Header, Aside, Main, Avatar, Scrollbar, Divider,
- Tab, Badge, Tree, ColorPicker, Tooltip, Popover,
- Slider, InputNumber, Link,
- MessageBox, Message
- } from 'element-ui'
- import 'element-ui/lib/theme-chalk/index.css'
- import './styles/admin-tokens.css'
- import { formatPrice, formatPriceWithSymbol, formatRate, formatScore } from './utils/format'
- Vue.use(Button)
- Vue.use(Table)
- Vue.use(TableColumn)
- Vue.use(Form)
- Vue.use(FormItem)
- Vue.use(Input)
- Vue.use(Select)
- Vue.use(Option)
- Vue.use(Dialog)
- Vue.use(Pagination)
- Vue.use(Tag)
- Vue.use(Card)
- Vue.use(Col)
- Vue.use(Row)
- Vue.use(Icon)
- Vue.use(Descriptions)
- Vue.use(DescriptionsItem)
- Vue.use(Radio)
- Vue.use(RadioGroup)
- Vue.use(Switch)
- Vue.use(Checkbox)
- Vue.use(CheckboxGroup)
- Vue.use(Dropdown)
- Vue.use(DropdownMenu)
- Vue.use(DropdownItem)
- Vue.use(DatePicker)
- Vue.use(Upload)
- Vue.use(Tabs)
- Vue.use(TabPane)
- Vue.use(Menu)
- Vue.use(Submenu)
- Vue.use(MenuItem)
- Vue.use(Empty)
- Vue.use(Drawer)
- Vue.use(Timeline)
- Vue.use(TimelineItem)
- Vue.use(Progress)
- Vue.use(Container)
- Vue.use(Header)
- Vue.use(Aside)
- Vue.use(Main)
- Vue.use(Avatar)
- Vue.use(Scrollbar)
- Vue.use(Divider)
- Vue.use(Badge)
- Vue.use(Tree)
- Vue.use(ColorPicker)
- Vue.use(Tooltip)
- Vue.use(Popover)
- Vue.use(Slider)
- Vue.use(InputNumber)
- Vue.use(Link)
- // MessageBox 没有 install 方法,Vue.use(MessageBox) ——这是错误的,不会注册 $confirm
- // 需要手动挂载到 prototype 上
- Vue.prototype.$confirm = MessageBox.confirm
- Vue.prototype.$alert = MessageBox.alert
- Vue.prototype.$prompt = MessageBox.prompt
- Vue.prototype.$message = Message
- Vue.prototype.formatPrice = formatPrice
- Vue.prototype.formatPriceWithSymbol = formatPriceWithSymbol
- Vue.prototype.formatRate = formatRate
- Vue.prototype.formatScore = formatScore
- // Fix Element UI 2.15.x el-submenu removeTabindex null error
- // https://github.com/ElemeFE/element/issues/21965
- // Also fixes: v-if 切换菜单项后 el-submenu 残留 DOM 遮罩导致无法点击的问题
- const ElSubmenu = Vue.component('ElSubmenu')
- if (ElSubmenu && ElSubmenu.options && ElSubmenu.options.methods) {
- const origRemove = ElSubmenu.options.methods.removeTabindex
- if (origRemove) {
- ElSubmenu.options.methods.removeTabindex = function() {
- try {
- if (!this.$el || !this.$el.querySelector) return
- const tooltip = this.$el.querySelector('.el-tooltip')
- if (!tooltip) return
- return origRemove.call(this)
- } catch (e) {
- // v-if 切换导致 DOM 已销毁时的静默容错
- }
- }
- }
- // el-submenu 展开/收起时也可能操作已销毁的 DOM
- const origOpen = ElSubmenu.options.methods.open
- if (origOpen) {
- ElSubmenu.options.methods.open = function() {
- try {
- return origOpen.call(this)
- } catch (e) {
- // 静默容错
- }
- }
- }
- }
- Vue.config.productionTip = false
- new Vue({
- router,
- store,
- render: h => h(App)
- }).$mount('#app')
|