hooks.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { reactive } from 'vue'
  2. import request from './request'
  3. // 搜索关键字
  4. export const SubjectEnum = {
  5. SEARCH: 'music-songbook-subject',
  6. ALBUM: 'music-album-subject',
  7. MUSIC: 'music-subject',
  8. LIVE: 'live-subject',
  9. VIDEO: 'video-subject',
  10. ELEGANT: 'elegant-subject'
  11. }
  12. /**
  13. * 获取声部编号 | 保存声部编号
  14. */
  15. export const useSubjectId = (
  16. key: string,
  17. value?: any,
  18. type = 'get' as 'get' | 'set'
  19. ) => {
  20. // 判断是否在关键字
  21. // console.log(key, value, type)
  22. if (!key) return ''
  23. if (type === 'get') {
  24. let subject = localStorage.getItem(key)
  25. subject = subject ? JSON.parse(subject) : { name: '', id: '' }
  26. return subject
  27. } else {
  28. localStorage.setItem(key, value)
  29. return ''
  30. }
  31. }
  32. interface IList {
  33. params?: any
  34. requestType?: 'json' | 'form'
  35. loading: boolean
  36. list: any[]
  37. dataShow: boolean
  38. finished: boolean
  39. }
  40. let lockLoad = false
  41. /*
  42. * 列表获取数据
  43. * @param url 请求地址
  44. * @returns {Promise<IList>}
  45. */
  46. export const useList = async (
  47. url: string,
  48. params: IList,
  49. method = 'POST' as 'POST' | 'GET'
  50. ) => {
  51. try {
  52. if (lockLoad) return params
  53. // 上锁
  54. lockLoad = true
  55. const res =
  56. method === 'POST'
  57. ? await request.post(url, {
  58. requestType: params.requestType || 'json',
  59. data: {
  60. ...params.params
  61. }
  62. })
  63. : await request.get(url, {
  64. requestType: params.requestType || 'json',
  65. params: {
  66. ...params.params
  67. }
  68. })
  69. params.loading = false
  70. const result = res.data || {}
  71. params.list = params.list.concat(result.rows || [])
  72. params.finished = result.pageNo >= result.totalPage
  73. params.params.page = result.pageNo + 1
  74. params.dataShow = params.list.length > 0
  75. } catch {
  76. params.dataShow = false
  77. params.finished = true
  78. }
  79. // 解锁
  80. lockLoad = false
  81. return params
  82. }