Files
learning-system-portal/src/main.js
2025-12-14 18:22:48 +08:00

146 lines
3.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import vueKatexEs from "vue-katex";
import "katex/dist/katex.min.css"
Vue.use(vueKatexEs,{
globalOptions:{
delimiters:[
{left:"$$",right:"$$",display:true},
{left:"$",right:"$",display:false},
{left:"\\[",right:"\\]",display:true},
{left:"\\(",right:"\\)",display:false}
],
throwOnError:true
}
})
Vue.directive('limit-input', {
bind: function (el, binding) {
const max = binding.value || 50;
// 找到input元素
const input = el.querySelector('input');
if (input) {
// 监听input事件在输入时限制长度
input.addEventListener('input', function () {
if (input.value.length > max) {
input.value = input.value.substring(0, max);
// 触发input事件让element-ui的内部处理更新
input.dispatchEvent(new Event('input', { bubbles: true }));
}
});
}
}
});
//import './mock/index'
import xpage from '@/utils/xpage'
import VueCookies from 'vue-cookies'
Vue.use(VueCookies)
import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// import './assets/styles/element-variables.scss'
import './icons' // icon
import '@/assets/styles/index.scss' // global css
import '@/assets/styles/portal.scss' // global css
import '@/assets/styles/uc.scss' // global css
import Pagination from "@/components/Pagination";
import Remark from "@/components/Remark";
import './security'; //security control
import VueAwesomeSwiper from 'vue-awesome-swiper';
import 'swiper/dist/css/swiper.css';
Vue.use(VueAwesomeSwiper)
import watermark from './utils/warterMark.js'
import Bus from './utils/bus.js'
import {showMessage} from './utils/index.js'
import MessageBoxService from './utils/simpleMessageBox.js'
Vue.use(MessageBoxService)
Vue.prototype.$showMessage = showMessage
Vue.prototype.$bus = Bus
Vue.prototype.$watermark = watermark
Vue.config.productionTip = false
Vue.prototype.$xpage = xpage;
Vue.prototype.msgSuccess = function(msg) {
this.$message({ showClose: true, message: msg, type: "success", offset: 50 });
}
//用来筛选图标是否显示的方法,字符串和数组都支持,如果传入其他值或者不传值图标全显示
Vue.prototype.$iconFilter = function(hideArray) {
let iconOpinion = {
isRemark: false,
isShare: false,
isCollect: false,
isPraise: false,
isBrowse: false
}
if (typeof hideArray == 'string') {
iconOpinion[hideArray] = true
}
if (hideArray instanceof Array) {
hideArray.forEach(item => {
iconOpinion[item] = true;
})
}
return iconOpinion
}
Vue.prototype.msgError = function(msg) {
this.$message({ showClose: true, message: msg, type: "error" });
}
Vue.prototype.msgInfo = function(msg) {
this.$message.info(msg);
}
//高亮显示
Vue.prototype.$keywordActiveShow=function(str,keyword){
//color:#588afc暂时用老系统颜色ui给的颜色是这个值
if(!str||str.indexOf(keyword)===-1||keyword==''){
return str
}
return str.replace(keyword,`<span style="color:#FF0000">${keyword}</span>`)
}
Vue.prototype.webBaseUrl = process.env.VUE_APP_PUBLIC_PATH;
// 全局组件挂载
Vue.component('Pagination', Pagination)
Vue.component('Remark', Remark)
Vue.use(Element, {
size: VueCookies.get('size') || 'medium' // set element-ui default size
})
// 加入百度统计
router.beforeEach((to, from, next) => {
if (to.path) {
if (window._hmt) {
window._hmt.push(['_trackPageview', '/#' + to.fullPath])
}
}
next()
})
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')