auth.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. import Cookies from 'js-cookie'
  2. import store from '@/store'
  3. import {
  4. JSEncrypt
  5. } from 'jsencrypt'
  6. const publicKey = hexToDec();
  7. const TokenKey = 'Admin-Token'
  8. const CourseTokenKey = 'Course-Token'
  9. const CourseId = 'Course-Id'
  10. const USER = 'user'
  11. const PASW = 'pasw'
  12. // 提示跳转
  13. export function openUrl(num) {
  14. let url = 'http://www.baidu.com';
  15. if (num == 1) {
  16. url = 'https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
  17. } else if (num == 2) {
  18. url = 'https://www.yuque.com/docs/share/2300b9bb-84ab-48ae-afd9-a19da38147ba?# 《如何设置自动积分?》'
  19. } else if (num == 3) {
  20. url = 'https://www.yuque.com/docs/share/4cb21924-c9ee-4a4d-91f4-58db8be9547b?# 《基础分、工龄分是什么?》'
  21. } else if (num == 4) {
  22. url = 'https://www.yuque.com/docs/share/971c4cd7-5498-4fd6-a97c-ef08d62079c1?# 《系统配置》'
  23. } else if (num == 5) {
  24. url = 'https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
  25. } else if (num == 6) {
  26. url = 'https://www.yuque.com/docs/share/8cae70cf-3961-4e91-848d-d903f0323004?# 《如何邀请员工注册并加入企业?》'
  27. } else if (num == 7) {
  28. url = 'https://www.yuque.com/docs/share/8f7a1871-a886-48f7-9745-fd2ad13cbbcc?# 《角色权限操作说明(视频)》'
  29. } else if (num == 8) {
  30. url = 'https://www.yuque.com/docs/share/bd17afd5-8381-467d-ab65-a10661c73388?# 《积分权限是什么?有什么用?》'
  31. } else if (num == 9) {
  32. url = 'https://www.yuque.com/docs/share/2ef16237-4bc3-4ab8-8195-bc506098c0d5?# 《什么是每月奖扣目标,有什么用?》'
  33. } else if (num == 10) {
  34. url = 'https://www.yuque.com/docs/share/e8c6c82d-0f9f-4663-ada5-95dbd46ab1db?# 《审批流程说明》'
  35. } else if (num == 11) {
  36. url = 'https://www.yuque.com/docs/share/155191a9-fab6-447f-a7da-099506b322e6?# 《第一步:班次管理》'
  37. } else if (num == 12) {
  38. url = 'https://www.yuque.com/docs/share/6e16186a-21a1-4f26-bd76-0967cfbcff85?# 《第二步:创建加班规则》'
  39. } else if (num == 13) {
  40. url = 'https://www.yuque.com/docs/share/86a48ef0-5b91-416b-8bb4-b51248bab89b?# 《第三步:创建考勤组》'
  41. } else if (num == 14) {
  42. url = 'https://www.yuque.com/docs/share/6c233543-b04e-442b-8629-622b41465c56?# 《第四步:创建假期类型》'
  43. } else if (num == 15) {
  44. url = 'https://www.yuque.com/docs/share/44aa8b5b-ef80-420b-8fd2-6902a08179ae?# 《自定义B分的使用场景有哪些?》'
  45. } else if (num == 16) {
  46. url = 'https://www.yuque.com/docs/share/a3c8a68c-6706-4dbf-9cad-8886a8c904ff?# 《积分规则常见问题》'
  47. } else if (num == 17) {
  48. url = 'https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
  49. } else if (num == 18) {
  50. url = 'https://www.yuque.com/docs/share/2ef16237-4bc3-4ab8-8195-bc506098c0d5?# 《什么是每月奖扣目标,如何使用?》'
  51. } else if (num == 19) {
  52. url = 'https://www.yuque.com/docs/share/97a89371-71c4-42c0-b01e-4c51b746ffe0?# 《什么是重复任务》'
  53. }
  54. window.open(url, '_blank');
  55. }
  56. // 获取唯一标识(uid)
  57. export function generateUUID() {
  58. var d = new Date().getTime();
  59. var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  60. var r = (d + Math.random() * 16) % 16 | 0;
  61. d = Math.floor(d / 16);
  62. return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  63. });
  64. return uuid;
  65. };
  66. // 清楚本地缓存
  67. export function resetStorage(){
  68. localStorage.removeItem('userInfo')
  69. localStorage.removeItem('accountToken')
  70. localStorage.removeItem('SET_POINT_TYPES')
  71. localStorage.removeItem('SET_EMPLOYEE_MAP_ALL')
  72. localStorage.removeItem('site_info')
  73. localStorage.removeItem('dept_tree')
  74. localStorage.removeItem('account_info')
  75. localStorage.removeItem('SET_EMPLOYEE_MAP')
  76. localStorage.removeItem('dept_tree_pin')
  77. localStorage.removeItem('login_code')
  78. localStorage.removeItem('loglevel:webpack-dev-server')
  79. sessionStorage.clear()
  80. removeAllToken()
  81. }
  82. //将部门链接在一起
  83. export function returnDeptName(arr) {
  84. let data = arr.map(item => {
  85. let str = '';
  86. item.dept_list.forEach((e, index) => {
  87. if (item.dept_list.length - index > 1) {
  88. str += e.dept_name + ','
  89. } else {
  90. str += e.dept_name
  91. }
  92. })
  93. item.deptName = str
  94. return item
  95. })
  96. return data
  97. }
  98. function hexToDec() {
  99. let str =
  100. 'LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FEWjFVUnZMODRUWG9LTUFXMng2UDZ4WHplZQpXaUxINVljSFJGZ3YwZzBmSVVtTG02UDZ1Z2s1WXpHSkhrSkxvWFlvYmt4SHJXV1FBRjhuZmRnTDVMYmYzMGJ3CjlITVJ1REJXV2w4S3NFYTdwTVllZ2NsY1dncVJwOXBMZVMzQzhXQlI1NmxsNTM4TDF0MkJWZEh5U1pvUnFGRE8KZmJqTitKN0xnWUl6S2NVZGJ3SURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo='
  101. str = atob(str);
  102. return str;
  103. }
  104. export function returnJSEncrypt(data, is = true) {
  105. let jsencrypt = new JSEncrypt()
  106. jsencrypt.setPublicKey(publicKey)
  107. if (is) {
  108. data.st = Date.parse(new Date());
  109. }
  110. let s = JSON.stringify(data);
  111. let arr = [];
  112. if (s.length > 50) {
  113. let reg = /.{50}/g;
  114. let rs = s.match(reg);
  115. rs.push(s.substring(rs.join('').length));
  116. rs.forEach(item => {
  117. arr.push(jsencrypt.encrypt(item));
  118. })
  119. } else {
  120. arr[0] = jsencrypt.encrypt(s)
  121. }
  122. return arr
  123. }
  124. // 获取缓存
  125. export function getCache(key) {
  126. return JSON.parse(localStorage.getItem(key))
  127. }
  128. export function getLocal(key) {
  129. return localStorage.getItem(key)
  130. }
  131. // 设置缓存
  132. export function setCache(key, data) {
  133. localStorage.setItem(key, JSON.stringify(data))
  134. }
  135. // 清除缓存
  136. export function removeCache(key) {
  137. if (typeof (key) === 'string') {
  138. localStorage.removeItem(key)
  139. } else {
  140. if (key.length > 0) {
  141. key.forEach(item => {
  142. localStorage.removeItem(item)
  143. })
  144. }
  145. }
  146. }
  147. //获取平级的部门
  148. export function getDept(id) {
  149. if (id) {
  150. let map = getCache('dept_tree_pin')[id];
  151. return map || {}
  152. } else {
  153. return getCache('dept_tree_pin')
  154. }
  155. }
  156. // 获取用户列表
  157. export function getEmployeeMap(status) {
  158. if (status) {
  159. let map = getCache('SET_EMPLOYEE_MAP');
  160. map = Object.values(map).filter(item => {
  161. return item.status == 1
  162. })
  163. return map
  164. } else {
  165. return getCache('SET_EMPLOYEE_MAP')
  166. }
  167. }
  168. // 获取用户列表
  169. export function getEmployeeMapAll() {
  170. return JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP_ALL'))
  171. }
  172. export function getEmployeeMapItem(id) {
  173. let map = JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP_ALL'))
  174. if (map[id]) {
  175. return map[id]
  176. } else {
  177. return {}
  178. }
  179. }
  180. // 获取积分类型
  181. export function getTyps(id) {
  182. if (id) {
  183. var arr = getCache('SET_POINT_TYPES')
  184. var item = arr.filter(element => {
  185. return typeof (id) === 'string' ? element.code == id : element.id == id
  186. })
  187. return item[0]
  188. } else {
  189. var arr = getCache('SET_POINT_TYPES')
  190. return arr.filter(function (item) {
  191. return item.code != 'JX';
  192. });
  193. }
  194. }
  195. // 获取积分类型名称
  196. export function getTypsName(id) {
  197. return getTyps(id).name
  198. }
  199. // 获取当前用户详情
  200. export function getUserData() {
  201. return store.getters.user_info || getCache('userInfo')
  202. }
  203. // 获取当前课程用户详情
  204. export function getCourseUserData() {
  205. return store.getters.course_user_info || getCache('courseUserData')
  206. }
  207. //是否平台管理或者平台创始人
  208. export function getIsAdministrator() {
  209. var userInfo = getUserData();
  210. return userInfo.is_site_owner || userInfo.is_site_manager
  211. }
  212. function returnRole(str) {
  213. return supremeAuthority() == str
  214. }
  215. //判断是否具有权限
  216. export function getIsIdentity(key) {
  217. let is = false
  218. var roleList = getUserData().employee_detail.role_list
  219. roleList.forEach(item => {
  220. if (key == item.name) {
  221. is = true
  222. }
  223. })
  224. return is
  225. }
  226. // 返回高权限 str最高权限是否匹配 id指定人员最高权限
  227. export function supremeAuthority(str, id) {
  228. if (str) {
  229. return returnRole(str)
  230. } else if (id) {
  231. const roleList = getEmployeeMapItem(id).employee_detail.role_list
  232. const roleAll = ['creator', 'admin', 'point_manager', 'dept_manager', 'employee']
  233. const userRole = roleList.map(e => e.name)
  234. let roleStr = ''
  235. roleAll.some(item => {
  236. if (userRole.indexOf(item) >= 0) {
  237. roleStr = item
  238. return true
  239. }
  240. })
  241. return roleStr
  242. } else {
  243. if (getIsIdentity('creator')) {
  244. return 'creator'
  245. } else if (getIsIdentity('admin')) {
  246. return 'admin'
  247. } else if (getIsIdentity('point_manager')) {
  248. return 'point_manager'
  249. } else if (getIsIdentity('dept_manager')) {
  250. return 'dept_manager'
  251. } else if (getIsIdentity('employee')) {
  252. return 'employee'
  253. }
  254. }
  255. }
  256. // 防抖
  257. // _debounce(this.XXX(),1000)
  258. export function _debounce(fn, delay = 500) {
  259. let timer = null
  260. return function () {
  261. const arg = arguments
  262. clearTimeout(timer)
  263. timer = setTimeout(() => {
  264. fn.apply(this, arg)
  265. }, delay)
  266. }
  267. }
  268. export function setToken(token) {
  269. return Cookies.set(TokenKey, token)
  270. }
  271. export function getToken() {
  272. return Cookies.get(TokenKey)
  273. }
  274. export function setCourseToken(token) {
  275. return Cookies.set(CourseTokenKey, token)
  276. }
  277. export function getCourseToken() {
  278. return Cookies.get(CourseTokenKey)
  279. }
  280. export function setCourseId(id) {
  281. return Cookies.set(CourseId, id)
  282. }
  283. export function getCourseId() {
  284. return localStorage.getItem('Course-Id')
  285. // return Cookies.get(CourseId)
  286. }
  287. export function getUser() {
  288. return Cookies.get(USER)
  289. }
  290. export function getPasw() {
  291. return Cookies.get(PASW)
  292. }
  293. export function setUser(value) {
  294. return Cookies.set('user', value, {
  295. expires: 365
  296. })
  297. }
  298. export function setPasw(value) {
  299. return Cookies.set('pasw', value, {
  300. expires: 365
  301. })
  302. }
  303. export function removeAllToken() {
  304. Cookies.remove('user')
  305. Cookies.remove('pasw')
  306. Cookies.remove(TokenKey)
  307. Cookies.remove(CourseTokenKey)
  308. Cookies.remove(CourseId)
  309. return true
  310. }