auth.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. const TokenKey = 'A-Token'
  2. const UserIdKey = 'userData'
  3. const TypesKey = 'types'
  4. import Vue from 'vue'
  5. // 获取唯一标识(uid)
  6. export function generateUUID() {
  7. var d = new Date().getTime();
  8. var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  9. var r = (d + Math.random() * 16) % 16 | 0;
  10. d = Math.floor(d / 16);
  11. return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  12. });
  13. return uuid;
  14. };
  15. // 获取缓存
  16. export function getCache(key) {
  17. return JSON.parse(localStorage.getItem(key))
  18. }
  19. // 设置缓存
  20. export function setCache(key, data) {
  21. localStorage.setItem(key, JSON.stringify(data))
  22. }
  23. // 清除缓存
  24. export function removeCache(key) {
  25. localStorage.removeItem(key)
  26. }
  27. function getClass(o) { //判断数据类型
  28. return Object.prototype.toString.call(o).slice(8, -1);
  29. }
  30. function deepCopy(obj) { //深度拷贝对象
  31. var result, oClass = getClass(obj);
  32. if (oClass == "Object") result = {}; //判断传入的如果是对象,继续遍历
  33. else if (oClass == "Array") result = []; //判断传入的如果是数组,继续遍历
  34. else return obj; //如果是基本数据类型就直接返回
  35. for (var i in obj) {
  36. var copy = obj[i];
  37. if (getClass(copy) == "Object" || getClass(copy) == "Array") result[i] = deepCopy(copy); //递归方法 ,如果对象继续变量obj[i],下一级还是对象,就obj[i][i]
  38. // else if (getClass(copy) == "Array") result[i] = deepCopy(copy); //递归方法 ,如果对象继续数组obj[i],下一级还是数组,就obj[i][i]
  39. else result[i] = copy; //基本数据类型则赋值给属性
  40. }
  41. return result;
  42. }
  43. export function openError(data) {
  44. if (process.env.NODE_ENV == 'production') {
  45. Vue.prototype.$axios('post', '/api/e', data)
  46. }
  47. }
  48. export function getUserData() {
  49. return JSON.parse(localStorage.getItem(UserIdKey));
  50. }
  51. export function setUserData(data) {
  52. localStorage.setItem(UserIdKey, JSON.stringify(data))
  53. }
  54. // 获取积分类型
  55. export function getTyps(id) {
  56. if (id) {
  57. var arr = JSON.parse(localStorage.getItem(TypesKey))||[{id: 2, name: "A分", code: "AF"},{id: 3, name: "B分", code: "BF"}];
  58. var item = arr.filter(element => {
  59. return typeof(id) == 'string' ? element.code == id : element.id == id
  60. });
  61. return item[0]
  62. } else {
  63. return JSON.parse(localStorage.getItem(TypesKey))||[{id: 2, name: "A分", code: "AF"},{id: 3, name: "B分", code: "BF"}];
  64. }
  65. }
  66. // 获取积分类型名称
  67. export function getTypsName(id) {
  68. return getTyps(id).name
  69. }
  70. // 判断是否系统管理员
  71. export function getIsCreator(key) {
  72. let is = false;
  73. getUserData().employee_detail.role_list.forEach(item => {
  74. if (key == item.name) {
  75. is = true;
  76. }
  77. })
  78. return is
  79. }
  80. export function supremeAuthority() { //获取当前角色最高权限 判断是否为某项权限:this.$authoritys('dept_manager') 或 this.$supremeAuthority() == 'dept_manager'
  81. if (getIsCreator('creator')) {
  82. return 'creator'
  83. } else if (getIsCreator('admin')) {
  84. return 'admin'
  85. } else if (getIsCreator('point_manager')) {
  86. return 'point_manager'
  87. } else if (getIsCreator('dept_manager')) {
  88. return 'dept_manager'
  89. } else if (getIsCreator('employee')) {
  90. return 'employee'
  91. }
  92. }
  93. export function authoritys(key) { //判断是否为某项权限:this.$authoritys('dept_manager')
  94. return supremeAuthority() == key
  95. }
  96. //过滤绩效分
  97. function GlTypes(arr) {
  98. return arr.filter(function(item) {
  99. return item.code != 'JX'
  100. })
  101. }
  102. export function setTyps(data) {
  103. var arr = GlTypes(data);
  104. localStorage.setItem(TypesKey, JSON.stringify(arr))
  105. }
  106. export function getToken() {
  107. return localStorage.getItem(TokenKey)
  108. }
  109. export function setToken(token) {
  110. localStorage.setItem(TokenKey, token)
  111. }
  112. // 防抖
  113. export function _debounce(fn, delay = 500) {
  114. let timer = null
  115. return function() {
  116. let arg = arguments
  117. clearTimeout(timer)
  118. timer = setTimeout(() => {
  119. fn.apply(this, arg)
  120. }, delay)
  121. }
  122. }
  123. // 节流
  124. export function _throttle(fn, interval = 500) {
  125. var last;
  126. var timer;
  127. return function() {
  128. var th = this;
  129. var args = arguments;
  130. var now = +new Date();
  131. if (last && now - last < interval) {
  132. clearTimeout(timer);
  133. timer = setTimeout(function() { //用户最后一次点击时间间隔小于设置时间执行
  134. last = now;
  135. fn.apply(th, args);
  136. }, interval);
  137. } else {
  138. last = now;
  139. fn.apply(th, args);
  140. }
  141. }
  142. }
  143. //将部门链接在一起
  144. export function returnDeptName(arr){
  145. let data=arr.map(item=>{
  146. let str='';
  147. item.dept_list.forEach((e,index)=>{
  148. if(item.dept_list.length-index>1){
  149. str+=e.dept_name+','
  150. }else{
  151. str+=e.dept_name
  152. }
  153. })
  154. item.deptName=str
  155. return item
  156. })
  157. return data
  158. }