useDictionaries.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {
  2. getDictData,
  3. getIndustryListData,
  4. getSkillList,
  5. getIndustryTreeData,
  6. getAreaListData,
  7. getAreaMapData,
  8. getPositionTreeData,
  9. getAreaTreeData,
  10. getPositionData
  11. } from '@/api/common'
  12. // const setDict = (type, val, cacheTime = 7200) => {
  13. const setDict = (type, val) => {
  14. if (type === 'areaTreeData') {
  15. const obj = val.data.find(e => e.name === '中国')
  16. val.data = obj?.children ? obj.children.map(e =>{
  17. // 市辖区直接显示区
  18. const municipality = e.children && e.children.length && e.children[0].name === '市辖区'
  19. if (municipality && e.children[0].children?.length) e.children = e.children[0].children
  20. return e
  21. }) : []
  22. }
  23. if (type === 'areaTreeDataExtend') {
  24. const obj = val.data.find(e => e.name === '中国')
  25. val.data = obj?.children ? obj.children.map(e =>{
  26. // 市辖区直接显示区
  27. const municipality = e.children && e.children.length && e.children[0].name === '市辖区'
  28. if (municipality && e.children[0].children?.length) e.children = e.children[0].children
  29. // 不限
  30. if(e.children?.length) e.children.unshift({ name: '不限', id: 'unlimited' })
  31. return e
  32. }) : []
  33. }
  34. // 一小时过期
  35. const currentTime = new Date()
  36. currentTime.setTime(currentTime.getTime() + 3600 * 1000)
  37. uni.setStorageSync(type, JSON.stringify({
  38. data: val,
  39. // expire: Date.now() + cacheTime * 1000
  40. expire: currentTime.getTime()
  41. }))
  42. }
  43. export const getDict = (type, params, apiType = 'dict') => {
  44. if (!type) {
  45. return []
  46. }
  47. return new Promise((resolve) => {
  48. const item = uni.getStorageSync(type)
  49. const catchData = item ? JSON.parse(item) : null
  50. if (catchData && catchData.expire && (Date.now() <= catchData.expire) && catchData.data && catchData.data?.data?.length) {
  51. return resolve({ data: catchData.data })
  52. }
  53. // 传参按照规范参数传
  54. const query = params ? params : { type }
  55. const apiFn = {
  56. dict: getDictData,
  57. positionTreeData: getPositionTreeData, // 职位tree
  58. areaTreeData: getAreaTreeData, // 区域tree
  59. areaTreeDataExtend: getAreaTreeData, // 区域tree(二级以后含不限)
  60. industryTreeData: getIndustryTreeData, // 行业tree
  61. industryList: getIndustryListData,
  62. skillList: getSkillList,
  63. areaList: getAreaListData,
  64. areaMap: getAreaMapData,
  65. positionData: getPositionData
  66. }
  67. apiFn[apiType](query).then(data => {
  68. // setDict(type, data, Date.now())
  69. setDict(type, data)
  70. resolve({ data })
  71. })
  72. })
  73. }