You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

181 lines
4.7 KiB

// 引入windi css
import '@/plugins/windi.css'
// 导入全局的svg图标
import '@/plugins/svgIcon'
// 初始化多语言
import { setupI18n } from '@/plugins/vueI18n'
// 引入状态管理
import { setupStore } from '@/store'
// 全局组件
import { setupGlobCom } from '@/components'
// 引入全局样式
import '@/styles/index.less'
// 引入动画
import '@/plugins/animate.css'
// 路由
import { setupRouter } from './router'
// 权限
import { setupPermission } from './directives'
import { createApp } from 'vue'
//新增第三方组件
import Avue from '@smallwei/avue';
import '@smallwei/avue/lib/index.css';
import App from './App.vue'
import './permission'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import constant from '@/constant/index'
import api from '@/api/index'
import dateFormatter from '@/utils/dateFormatter.js'
import StringUtil from '@/utils/stringUtil.js'
import uploader from 'vue-simple-uploader'
import 'vue-simple-uploader/dist/style.css'
// web socket
import webSocket from '@/modules/notification/view/systemMessage/webSocket.js'
// 可自配置的网格布局
import VueGridLayout from 'vue-grid-layout'
// echart图表
import "echarts"
import ECharts from "vue-echarts"
// 表单构建器
import FormCreate from '@form-create/element-ui'
import FcDesigner from '@form-create/designer'
import { Base64 } from 'js-base64'
// 自定义组件
import DictionarySelect from '@/components/abc/DictionarySelect/DictionarySelect.vue'
import DictionaryRadioGroup from '@/components/abc/DictionarySelect/DictionaryRadioGroup.vue'
import OrganizationSingleSelect from '@/modules/system/view/organization/treeReference.vue'
import OrganizationMultipleSelect from '@/modules/system/view/organization/treeMultipleSelect.vue'
import UserSingleSelect from '@/modules/system/view/user/treeListReference.vue'
import IconPicker from '@/components/abc/IconPicker/index.vue'
import { Editor } from '@/components/abc/Editor'
import AttachmentUploader from '@/modules/support/view/attachment/attachmentUploader.vue'
import AttachmentManager from '@/modules/support/view/attachment/attachmentManager.vue'
import AttachmentViewer from '@/modules/support/view/attachment/attachmentViewer.vue'
import AttachmentManagerAndUploader from '@/modules/support/view/attachment/attachmentManagerAndUploader.vue'
FormCreate.component(DictionarySelect)
FormCreate.component(DictionaryRadioGroup)
FormCreate.component(OrganizationSingleSelect)
FormCreate.component(OrganizationMultipleSelect)
FormCreate.component(UserSingleSelect)
FormCreate.component(IconPicker)
FormCreate.component(Editor)
FormCreate.component(AttachmentUploader)
FormCreate.component(AttachmentManager)
FormCreate.component(AttachmentViewer)
FormCreate.component(AttachmentManagerAndUploader)
// 创建实例
const setupAll = async () => {
const app = createApp(App)
await setupI18n(app)
setupStore(app)
setupGlobCom(app)
setupRouter(app)
setupPermission(app)
// 全量注册element-plus组件
app.use(ElementPlus)
// 全量注册avue组件
app.use(Avue,{
crudOption:{
index: true, //是否展示序号列
indexLabel: '序号', //序号列名称
indexWidth: 60, //序号列宽度
}
});
// 自定义表单
app.use(FormCreate)
app.use(FcDesigner)
// 全量注册element-plus图标
app.config.globalProperties.$icons = []
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
// 将图标键值放入全局变量,用于图标选择器
app.config.globalProperties.$icons.push(key)
}
// 挂载全局变量,兼容2.0习惯写法
app.config.globalProperties.$constant = constant
app.config.globalProperties.$api = api
// 日期函数
app.config.globalProperties.$dateFormatter = dateFormatter
// 字符串工具函数
app.config.globalProperties.$StringUtil = StringUtil
// web socket
app.config.globalProperties.$webSocket = webSocket
// base64工具类
app.config.globalProperties.$base64Util = Base64
// 文件上传
app.use(uploader)
// 可自配置的网格布局
app.use(VueGridLayout)
// echart图表
app.component('v-chart', ECharts)
app.mount('#app')
app.directive('focus', {
mounted(el) {
el.focus()
}
})
app.directive('enterNumber', {
mounted(el, { value = 100 }, vnode) {
el = el.nodeName == "INPUT" ? el : el.children[0]
var RegStr = value == 0 ? `^[\\+\\-]?\\d+\\d{0,0}` : `^[\\+\\-]?\\d+\\.?\\d{0,${value}}`
el.addEventListener('input', function () {
el.value = el.value.match(new RegExp(RegStr, 'g'));
el.dispatchEvent(new Event('input'))
})
}
})
}
setupAll()