dict.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import { getDict } from '@/hooks/web/useDictionaries'
  2. import commonPath from './conditionFilter/commonPath.vue'
  3. // import areaType from './conditionFilter/areaType.vue'
  4. // toFilterDictName: 查数据回显(一维数组字典),dictShow: 用户操作的字典(用户看到的数据)
  5. // 当type是tree类型的数据的时候需要提供dictType
  6. const dictList = [
  7. // {
  8. // toFilterDictName: 'menduner_area_type',
  9. // toFilterApiType: 'areaList',
  10. // displayDictName: 'areaTreeData',
  11. // displayApiType: 'areaTreeData',
  12. // displayParams: {},
  13. // key: 'cityId_1',
  14. // cityLevel: 1,
  15. // itemKey: 'id',
  16. // itemText: 'name',
  17. // title: '工作城市',
  18. // isSingle: true,
  19. // path: commonPath,
  20. // toFilterDictDataList: []
  21. // },
  22. {
  23. toFilterDictName: 'menduner_area_type',
  24. toFilterApiType: 'areaList',
  25. key: 'city',
  26. isSlot: true,
  27. itemKey: 'id',
  28. itemText: 'nameCn',
  29. title: '工作城市',
  30. path: commonPath,
  31. toFilterDictDataList: []
  32. },
  33. {
  34. toFilterDictName: 'menduner_industry_type',
  35. toFilterApiType: 'industryList',
  36. key: 'industryIds',
  37. isSlot: true,
  38. itemKey: 'id',
  39. itemText: 'nameCn',
  40. title: '行业类型',
  41. path: commonPath,
  42. toFilterDictDataList: []
  43. },
  44. {
  45. toFilterDictName: 'positionData',
  46. toFilterApiType: 'positionData',
  47. key: 'positionId',
  48. isSlot: true,
  49. itemKey: 'id',
  50. itemText: 'nameCn',
  51. title: '职位类型',
  52. isSingle: true,
  53. path: commonPath,
  54. toFilterDictDataList: []
  55. },
  56. {
  57. displayDictName: 'menduner_job_type',
  58. key: 'jobType',
  59. itemKey: 'value',
  60. itemText: 'label',
  61. title: '求职类型',
  62. path: commonPath,
  63. toFilterDictDataList: []
  64. },
  65. {
  66. displayDictName: 'menduner_exp_type',
  67. key: 'expType',
  68. itemKey: 'value',
  69. itemText: 'label',
  70. title: '工作经验',
  71. path: commonPath,
  72. toFilterDictDataList: []
  73. },
  74. {
  75. displayDictName: 'menduner_pay_scope',
  76. key: 'payScope',
  77. itemKey: 'value',
  78. itemText: 'label',
  79. title: '薪资待遇',
  80. isSingle: true,
  81. path: commonPath,
  82. toFilterDictDataList: []
  83. },
  84. {
  85. displayDictName: 'menduner_education_type',
  86. key: 'eduType',
  87. itemKey: 'value',
  88. itemText: 'label',
  89. title: '学历要求',
  90. path: commonPath,
  91. toFilterDictDataList: []
  92. },
  93. {
  94. displayDictName: 'menduner_scale',
  95. key: 'scale',
  96. itemKey: 'value',
  97. itemText: 'label',
  98. title: '公司规模',
  99. path: commonPath,
  100. toFilterDictDataList: []
  101. },
  102. {
  103. displayDictName: 'menduner_financing_status',
  104. key: 'financingStatus',
  105. itemKey: 'value',
  106. itemText: 'label',
  107. title: '融资阶段',
  108. path: commonPath,
  109. toFilterDictDataList: []
  110. },
  111. ]
  112. export const filterList = dictList
  113. // 字典
  114. const getDictList = async () => {
  115. dictList.forEach(async (dictListItem) => {
  116. const toFilterDictName = dictListItem.toFilterDictName || dictListItem.displayDictName
  117. if (!toFilterDictName) return
  118. const { data } = await getDict(toFilterDictName, dictListItem.params, dictListItem.toFilterApiType)
  119. dictListItem.toFilterDictDataList = data
  120. })
  121. }
  122. const getData = async () => {
  123. await getDictList()
  124. }
  125. getData()
  126. export const getItemObj = ({ key, ids = [], dictArr = [] }) => {
  127. if (!dictArr?.length) dictArr = dictList
  128. //
  129. const item = dictArr.find(dictListItem => dictListItem.key === key)
  130. const checkedItems = ids.map(id => {
  131. if (!item?.toFilterDictDataList?.length) return ''
  132. const obj = item.toFilterDictDataList.find(e => e[item.itemKey] === id)
  133. return obj ? { text: obj[item.itemText], value: obj[item.itemKey] } : ''
  134. }).filter(Boolean)
  135. return checkedItems?.length ? { key, title: item.title, checkedItems } : ''
  136. }