utils.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /*
  2. * @Author: your name
  3. * @Date: 2021-09-26 17:59:56
  4. * @LastEditTime: 2021-11-12 10:55:08
  5. * @LastEditors: Please set LastEditors
  6. * @Description: In User Settings Edit
  7. * @FilePath: /MedicalWisdomCheckSys/src/pages/utils.js
  8. */
  9. /*
  10. * @Author: your name
  11. * @Date: 2021-07-26 13:50:44
  12. * @LastEditTime: 2021-08-27 14:31:46
  13. * @LastEditors: Please set LastEditors
  14. * @Description: In User Settings Edit
  15. * @FilePath: /TracerMethodology_PC/src/utils.js
  16. */
  17. //获取url参数
  18. /**
  19. *
  20. * @param {*} name 需要获取的query名
  21. * @returns
  22. */
  23. import { useRequest,request,history } from 'umi';
  24. import { stringify } from 'querystring';
  25. const getQueryString = (name)=>{
  26. let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
  27. let r = window.location.search.substr(1).match(reg);
  28. if (r != null) {
  29. return decodeURIComponent(r[2]);
  30. };
  31. return null;
  32. }
  33. /**
  34. * 退出登录,并且将当前的 url 保存
  35. */
  36. const loginOut = async () => {
  37. const { query = {}, pathname } = history.location;
  38. const { redirect } = query;
  39. const hospSign = localStorage.getItem('hospSign');
  40. if (window.location.pathname !== '/user/login' && !redirect) {
  41. history.replace({
  42. pathname: '/user/login',
  43. search: stringify({
  44. redirect:pathname,
  45. hospSign:hospSign
  46. }),
  47. });
  48. localStorage.removeItem('hospSign');
  49. }
  50. };
  51. /**
  52. *
  53. * @param {Function} requestFunc request函数
  54. */
  55. const CARequest = (url)=>{
  56. const { data, error, loading } = useRequest(() => {
  57. return request(url);
  58. });
  59. console.log({data, error, loading});
  60. }
  61. //递归获取所有层级某一属性
  62. const deepGetVal = (dataToDeep,key,subArr)=>{
  63. // console.log({dataToDeep,key,subArr});
  64. let resultArr = [];
  65. function looper(dataToDeep,key,subArr){
  66. dataToDeep.forEach(item=>{
  67. if(item[subArr]&&item[subArr].length>0){
  68. resultArr.push(item[key]);
  69. looper(item[subArr],key,subArr);
  70. }else {
  71. resultArr.push(item[key]);
  72. }
  73. });
  74. }
  75. looper(dataToDeep,key,subArr);
  76. return resultArr
  77. }
  78. //递归获取所有有树子集的节点
  79. const deepGetAllParents = (dataToDeep,subArr)=>{
  80. let resultArr = [];
  81. function looper(dataToDeep,subArr){
  82. dataToDeep.forEach(item=>{
  83. if(item[subArr]&&item[subArr].length>0){
  84. resultArr.push(item);
  85. // console.log({resultArr});
  86. looper(item[subArr],subArr);
  87. }
  88. });
  89. };
  90. looper(dataToDeep,subArr);
  91. return resultArr
  92. }
  93. //数组去重
  94. function unique(arr) {
  95. if (!Array.isArray(arr)) {
  96. console.log('type error!')
  97. return
  98. }
  99. var array = [];
  100. for (var i = 0; i < arr.length; i++) {
  101. if (array .indexOf(arr[i]) === -1) {
  102. array .push(arr[i])
  103. }
  104. }
  105. return array;
  106. }
  107. export {
  108. getQueryString,
  109. CARequest,
  110. deepGetVal,
  111. deepGetAllParents,
  112. unique,
  113. loginOut
  114. }