localSelect.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import { defineStore } from 'pinia'
  2. // import { LOCAL_SELECT } from '/@/stores/constant/cacheKey'
  3. import type { LocalSelect, LocalSelectOption, LOCAL_SELECT_KEY, LocalSelectKey } from '/@/stores/interface'
  4. import { getCommonList } from '/@/api/backend/select'
  5. const _KEY: LocalSelectKey = {
  6. DICT_LIST: 'DICT_LIST',
  7. GENDER_LIST: 'GENDER_LIST',
  8. INS_LIST: 'INS_LIST',
  9. INS_NAME_LIST: 'INS_NAME_LIST',
  10. INS_TYPE_LIST: 'INS_TYPE_LIST',
  11. HR_RANGE_LIST: 'HR_RANGE_LIST',
  12. GROUP_LIST: 'GROUP_LIST',
  13. BODYSITE_CATEG_LIST: 'BODYSITE_CATEG_LIST',
  14. MODALITY_LIST: 'MODALITY_LIST'
  15. }
  16. const getDefaultLocalSelectOption = (options: any[] = []) => {
  17. return {
  18. options,
  19. key: 'code',
  20. label: 'name',
  21. value: 'name',
  22. }
  23. }
  24. const getCodeLocalSelectOption = (options: any[] = []) => {
  25. return {
  26. options,
  27. key: 'code',
  28. label: 'name',
  29. value: 'code',
  30. }
  31. }
  32. const STATUS_LIST: LocalSelectOption = getCodeLocalSelectOption([
  33. { code: 1, name: '是', },
  34. { code: 2, name: '否', },
  35. ])
  36. const HR_STATUS_LIST: LocalSelectOption = getDefaultLocalSelectOption([
  37. { code: 1, name: '互认', },
  38. { code: 2, name: '不互认', },
  39. ])
  40. const mergeOptions = (oldOptions: any[], newOptions: any[] = []) => {
  41. oldOptions.push(...newOptions)
  42. }
  43. export const useLocalSelect = defineStore('localSelect', {
  44. state: (): LocalSelect => {
  45. return {
  46. _KEY,
  47. STATUS_LIST,
  48. HR_STATUS_LIST,
  49. DICT_LIST: getDefaultLocalSelectOption(),
  50. GENDER_LIST: getDefaultLocalSelectOption(),
  51. INS_LIST: getCodeLocalSelectOption(),
  52. INS_NAME_LIST: getCodeLocalSelectOption(),
  53. INS_TYPE_LIST: getDefaultLocalSelectOption(),
  54. HR_RANGE_LIST: getDefaultLocalSelectOption(),
  55. GROUP_LIST: getCodeLocalSelectOption(),
  56. BODYSITE_CATEG_LIST: getDefaultLocalSelectOption(),
  57. MODALITY_LIST: getDefaultLocalSelectOption(),
  58. }
  59. },
  60. actions: {
  61. async initLISTS(keys: LOCAL_SELECT_KEY[]) {
  62. for(const key of keys) {
  63. await this.initLIST(key)
  64. }
  65. },
  66. async initLIST(key: LOCAL_SELECT_KEY) {
  67. const option: LocalSelectOption = this[key]
  68. if(!option) {
  69. console.log('error initLIST KEY:' + key)
  70. return false
  71. }
  72. if(option.initialize) {
  73. return true
  74. }
  75. const res = await getCommonList(key)
  76. mergeOptions(option.options, res?.data?.list || [])
  77. option.initialize = true
  78. },
  79. // async initGENDER_LIST() {
  80. // if(this.GENDER_LIST.initialize) {
  81. // return true
  82. // }
  83. // const res = await getGENDERList()
  84. // mergeOptions(this.GENDER_LIST.options, res?.data?.list || [])
  85. // this.GENDER_LIST.initialize = true
  86. // },
  87. // async initINS_LIST() {
  88. // if(this.INS_LIST.initialize) {
  89. // return true
  90. // }
  91. // const res = await getINS_LIST()
  92. // mergeOptions(this.INS_LIST.options, res?.data?.list || [])
  93. // this.INS_LIST.initialize = true
  94. // }
  95. },
  96. persist: false
  97. })