index.js 4.07 KB
Newer Older
geqilin's avatar
geqilin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
import Vue from 'vue'
import router from '@/router'
import store from '@/store'
import httpRequest from '@/plugin/axios'

/**
 * 获取uuid
 */
export function getUUID () {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
    return (c === 'x' ? (Math.random() * 16 | 0) : ('r&0x3' | '0x8')).toString(16)
  })
}

/**
 * 是否有权限
 * @param {*} key
 */
export function isAuth (key) {
  let stationId = localStorage.getItem('stationId')
  let takeoverList = JSON.parse(sessionStorage.getItem('takeoverList') || '[]')
  if (takeoverList.indexOf(stationId) === -1) {
    return false
  }
  let index = JSON.parse(sessionStorage.getItem('permissions') || '[]').indexOf(key)
  return index !== -1
}

/**
 * 树形数据转换
 * @param {*} data
 * @param {*} id
 * @param {*} pid
 */
export function treeDataTranslate (data, id = 'id', pid = 'parentId') {
  var res = []
  var temp = {}
  for (var i = 0; i < data.length; i++) {
    temp[data[i][id]] = data[i]
  }
  for (var k = 0; k < data.length; k++) {
    if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) {
      if (!temp[data[k][pid]]['children']) {
        temp[data[k][pid]]['children'] = []
      }
      if (!temp[data[k][pid]]['_level']) {
        temp[data[k][pid]]['_level'] = 1
      }
      data[k]['_level'] = temp[data[k][pid]]._level + 1
      temp[data[k][pid]]['children'].push(data[k])
    } else {
      res.push(data[k])
    }
  }
  return res
}

/**
 * 日期格式化
 * @param {*} date
 * @param {*} fmt
 */
export function dateFormat (date, fmt = 'YYYY-mm-dd') {
  // console.log('date:', date)
  if (!date) {
    return ''
    // date = new Date()
  }
  let ret
  const opt = {
      'Y+': date.getFullYear().toString(), // 年
      'm+': (date.getMonth() + 1).toString(), // 月
      'd+': date.getDate().toString(), // 日
      'H+': date.getHours().toString(), // 时
      'M+': date.getMinutes().toString(), // 分
      'S+': date.getSeconds().toString() // 秒
      // 有其他格式化字符需求可以继续添加,必须转化成字符串
  }
  for (let k in opt) {
      ret = new RegExp('(' + k + ')').exec(fmt)
      if (ret) {
          fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
      };
  };
  return fmt
}

/**
 * 清除登录信息
 */
export function clearLoginInfo () {
  Vue.cookie.delete('token')
  store.commit('resetStore')
  router.options.isAddDynamicMenuRoutes = false
}

/**
 * jgg
 */
export function getPermissions () {
  // let type = ''
  // httpRequest({ url: httpRequest.adornUrl('/sysSystem/getSystem'), method: 'get' }).then((e) => {
  //   console.log(e.one.type, '类型')
  //   type = e.one.type.toString()
  // })

  // let urlData
  // if (type === '1') {
  //   urlData = httpRequest.adornUrl('/sys/menu/nav')
  //   } else if (type === '2') {
  //       urlData = httpRequest.adornUrl('/routes/sys/menu/nav')
  //   }

  httpRequest({
    url: httpRequest.rtAdornUrl('/sys/menu/nav'),
    // url: urlData,
    method: 'get'
  }).then((data) => {
    if (data && data.code === 0) {
      // console.log(data.menuList,1111111111);
      // 设置顶栏菜单
      // console.log(data, '权限菜单')
      // console.log(data.nav, '需要添加的路由')
      store.dispatch('d2admin/menu/headerSetAsync', data.menuList)
      store.dispatch('d2admin/menu/setRouterList', data.nav)
      // console.log(store.state.d2admin.menu.routerList, '&&')
      // console.log(store.state.d2admin.menu.header, '&&')
      sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'))
      sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'))
      sessionStorage.setItem('routerList', JSON.stringify(data.nav || '[]'))
      // next({ ...to, replace: true })
    } else {
      sessionStorage.setItem('menuList', '[]')
      sessionStorage.setItem('permissions', '[]')
      sessionStorage.setItem('routerList', '[]')

      // next()
    }
  }).catch((e) => {
    console.log(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue')
    // next({
    //   name: 'login'
    // })
  })
}