hooks.ts 1.8 KB

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