dict.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. console.log(val.type, val.params, val.apiType,data)
  59. if (!data?.data) {
  60. dictObj[val.value] = []
  61. return
  62. }
  63. dictObj[val.value] = data.data
  64. })
  65. }
  66. const getData = async () => {
  67. await getDictList()
  68. }
  69. getData()
  70. export const dealJobData = (list) => {
  71. let res = {}
  72. dictList.forEach(item => {
  73. res = list.map(e => {
  74. let obj = {}
  75. if (item.isArray) {
  76. if (e[item.key] && e[item.key].length) {
  77. const result = e[item.key].map(val => {
  78. return obj = dictObj[item.value].find(i => i[item.itemKey] === val)
  79. })
  80. e[item.label] = result && result.length ? result.filter(Boolean) : []
  81. }
  82. } else {
  83. obj = dictObj[item.value].find(k => Number(k[item.itemKey]) === Number(e[item.key]))
  84. if (!obj) return
  85. e[item.label] = obj[item.itemText]
  86. }
  87. return e
  88. })
  89. })
  90. return res
  91. }