keyData.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //进入详情页时,保存id和其他参数
  2. export function inDetailsKey(key, obj) {
  3. let list = []
  4. list = getDetailsKey() ? getDetailsKey() : []
  5. if (list.find(e => e.key == key)) {
  6. list.fill({
  7. key: key,
  8. ...obj
  9. }, list.findIndex(item => item.key == key), list.findIndex(item => item.key == key) + 1)
  10. sessionStorage.setItem('detailsKeyData', JSON.stringify(list))
  11. } else {
  12. list.push({
  13. key: key,
  14. ...obj
  15. })
  16. sessionStorage.setItem('detailsKeyData', JSON.stringify(list))
  17. }
  18. }
  19. //离开详情页时,清除对应key的id和其他参数
  20. export function leaveDetailsKey(key) {
  21. let list = []
  22. list = getDetailsKey() ? getDetailsKey() : []
  23. list.splice(list.findIndex(item => item.key == key), 1)
  24. sessionStorage.setItem('detailsKeyData', JSON.stringify(list))
  25. }
  26. export function getDetailsKey() {
  27. return JSON.parse(sessionStorage.getItem("detailsKeyData"))
  28. }
  29. //关闭当前tabs,清除key并执行解锁接口
  30. export function delTabsKey(key) {
  31. let list = []
  32. list = getDetailsKey() ? getDetailsKey() : []
  33. let data = list.find(e => e.key == key)
  34. if (data) {
  35. //执行解锁接口
  36. //执行完接口清除key
  37. leaveDetailsKey(key)
  38. }
  39. }
  40. //关闭其他或者全部tabs,清除key并执行解锁接口
  41. export function delAllTabsKey(key) {
  42. let list = []
  43. list = getDetailsKey() ? getDetailsKey() : []
  44. if (key == '首页') {
  45. //关闭所有或者当前为首页的其他tab
  46. list.forEach(e => {
  47. //执行解锁
  48. //执行完接口清除key
  49. leaveDetailsKey(e.key)
  50. });
  51. } else {
  52. //其他tab
  53. list.forEach(e => {
  54. if (e.key != key) {
  55. //执行解锁
  56. //执行完接口清除key
  57. leaveDetailsKey(e.key)
  58. }
  59. });
  60. }
  61. }