123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- // The Vue build version to load with the `import` command
- // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
- import Vue from 'vue'
- import App from './App'
- import router from './router'
- import store from './store'
- import axios from 'axios'
- let moment = require('moment-timezone')
- require('moment/locale/cs')
- import '@/permission'
- import MuseUI from 'muse-ui'
- import 'lib-flexible/flexible'
- import 'normalize.css'
- import 'muse-ui/dist/muse-ui.css'
- import '@/assets/common.css'
- // 全局组件
- Vue.use(MuseUI);
- import * as comps from '@/components/index'
- Vue.use(comps.CommonHead);
- Vue.use(comps.Grid);
- Vue.use(comps.Message);
- Vue.use(comps.Loading);
- import { Toast, Button } from 'vant'
- Vue.use(Toast).use(Button)
- Vue.config.productionTip = false
- Vue.prototype.$http = axios;
- Vue.directive('anchor', {
- inserted : function(el, binding) {
- el.onclick = function() {
- $('html,body').animate({
- scrollTop:($('#' + binding.value).offset().top + 'px')
- }, 800);
- }
- }
- })
- Vue.directive('authorize', {
- inserted: function(el, binding) {
- var authorities = store.state.home.authorities;
- var auth = binding.value;
- var authArr = auth.split(',');
- var hasAuth = false;
- authArr.forEach(element => {
- var index = authorities.indexOf(element, 'authority');
- if (index != -1) {
- hasAuth = true;
- return;
- }
- });
-
- if (!hasAuth) {
- el.parentNode.removeChild(el);
- }
- }
- })
- // 注册一个全局自定义指令 `v-focus`
- Vue.directive('focus', {
- // 当被绑定的元素插入到 DOM 中时……
- inserted: function (el, binding) {
- // 聚焦元素
- var focus = binding.value;
- if (focus) {
- el.focus()
- }
- }
- })
- //全局注册自定义指令,用于判断当前图片是否能够加载成功,可以加载成功则赋值为img的src属性,否则使用默认图片
- Vue.directive('real-img', {
- inserted: async function (el, binding) {//指令名称为:real-img
- let imgURL = binding.value;//获取图片地址
- if (imgURL) {
- let exist = await imageIsExist(imgURL);
- if (exist) {
- el.setAttribute('src', imgURL);
- } else if (el.parentNode) {
- el.parentNode.removeChild(el);
- }
- }
- }
- })
- /**
- * 检测图片是否存在
- * @param url
- */
- let imageIsExist = function(url) {
- return new Promise((resolve) => {
- var img = new Image();
- img.onload = function () {
- if (this.complete == true){
- resolve(true);
- img = null;
- }
- }
- img.onerror = function () {
- resolve(false);
- img = null;
- }
- img.src = url;
- })
- }
- Vue.directive('highlight', function (el, binding) {
- let obj = binding.value || {};
- var keyword = obj.keyword;
- var value = obj.value;
- if (value && keyword) {
- el.innerHTML = value.replaceAll(keyword, '<k style="color:#FF5722">' + keyword + '</k>')
- } else {
- el.innerHTML = value || ''
- }
- }
- )
- Vue.filter('highlight', function (value, keyword, defaultString) {
- if (!value || !keyword) {
- return value || '';
- }
- return value.replaceAll(keyword, '<k style="color:#FF5722">' + keyword + '</k>');
- });
- Vue.filter('moment', function (value, formatString, defaultString) {
- var val = value;
- if (!isNaN(value)) {
- val = Number(val);
- }
- return formatDate(val, formatString, defaultString);
- });
- Vue.filter('pv', function (value, property, defaultString) {
- return value ? value[property] : '';
- });
- Vue.filter('thousand', function (num) {
- if (num == 0) {
- return num;
- }
- if (!num) {
- return "";
- }
- return num.toString().replace(/\d+/, function (n) { // 先提取整数部分
- return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) { // 对整数部分添加分隔符
- return $1 + ",";
- });
- });
- });
- function formatDate(value, formatString, defaultString){
- if(value == null){
- return defaultString ? defaultString : "";
- }
- formatString = formatString || 'YYYY-MM-DD HH:mm';
- return moment(value).tz('Asia/Shanghai').format(formatString);
- }
- Vue.filter('dictValue', function (dicts, dictValue) {
- if(dicts){
- for(var i = 0; i < dicts.length; i++){
- if(dicts[i].value == dictValue){
- return dicts[i].label;
- }
- }
- }
- return "";
- });
- // 定义全局点击函数
- Vue.prototype.globalClick = function (callback) {
- document.getElementById('app').onclick = function (e) {
- callback(e);
- };
- };
- Array.prototype.indexOf = function (val, property) {
- for (var i = 0; i < this.length; i++) {
- if (!property && this[i] == val) {
- return i;
- } else if (property && this[i][property] == val) {
- return i;
- }
- }
- return -1;
- };
- import { autoLogin } from '@/utils/autoLogin'
- function init() {
- return new Promise((resolve, reject) => {
- let code = getQuery('code');
- if (code) {
- autoLogin(code, resolve, reject);
- } else {
- resolve();
- }
- });
- }
- init().then(() => {
- new Vue({
- el: '#app',
- router,
- store,
- components: { App },
- template: '<App/>',
- created() {
-
- }
- })
- }).catch((err) => {
- console.log(err)
- new Vue({
- el: '#app',
- router,
- store,
- components: { App },
- template: '<App/>',
- created() {
-
- }
- })
- });
|