dict.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { reactive } from 'vue'
  2. import { getDict } from '@/hooks/useDictionaries'
  3. const dictObj = reactive({})
  4. const dictList = [
  5. {
  6. type: 'positionData',
  7. apiType: 'positionData',
  8. key: 'positionId',
  9. label: 'position',
  10. value: 'positionTypeData',
  11. itemKey: 'id',
  12. itemText: 'nameCn'
  13. },
  14. {
  15. type: 'industryList',
  16. apiType: 'industryList',
  17. key: 'industryIdList',
  18. label: 'industry',
  19. isArray: true,
  20. value: 'industryTypeData',
  21. itemKey: 'id',
  22. itemText: 'nameCn'
  23. },
  24. {
  25. type: 'menduner_area_type',
  26. apiType: 'areaList',
  27. key: 'workAreaId',
  28. params: { type: undefined },
  29. label: 'workArea',
  30. value: 'areaTypeData',
  31. itemKey: 'id',
  32. itemText: 'name'
  33. },
  34. {
  35. type: 'menduner_job_type',
  36. key: 'jobType',
  37. label: 'jobTypeName',
  38. value: 'jobTypeData',
  39. itemKey: 'value',
  40. itemText: 'label'
  41. },
  42. {
  43. type: 'menduner_area_type',
  44. apiType: 'areaList',
  45. key: 'interestedAreaIdList',
  46. label: 'interestedArea',
  47. // params: { type: undefined },
  48. isArray: true,
  49. value: 'areaTypeData',
  50. itemKey: 'id',
  51. itemText: 'name'
  52. }
  53. ]
  54. // 字典
  55. const getDictList = async () => {
  56. dictList.forEach(async (val) => {
  57. const { data } = await getDict(val.type, val.params, val.apiType)
  58. if (!data?.data) {
  59. dictObj[val.value] = []
  60. return
  61. }
  62. dictObj[val.value] = data.data
  63. })
  64. }
  65. const getData = async () => {
  66. await getDictList()
  67. }
  68. getData()
  69. export const dealJobData = (list) => {
  70. let res = {}
  71. dictList.forEach(item => {
  72. res = list.map(e => {
  73. let obj = {}
  74. if (item.isArray) {
  75. if (e[item.key] && e[item.key].length) {
  76. const result = e[item.key].map(val => {
  77. return obj = dictObj[item.value].find(i => Number(i[item.itemKey]) === Number(val))
  78. })
  79. e[item.label] = result && result.length ? result.filter(Boolean) : []
  80. }
  81. } else {
  82. obj = dictObj[item.value].find(k => Number(k[item.itemKey]) === Number(e[item.key]))
  83. if (!obj) return
  84. e[item.label] = obj[item.itemText]
  85. }
  86. return e
  87. })
  88. })
  89. return res
  90. }