import { defineStore } from 'pinia' // import { LOCAL_SELECT } from '/@/stores/constant/cacheKey' import type { LocalSelect, LocalSelectOption, LOCAL_SELECT_KEY, LocalSelectKey } from '/@/stores/interface' import { getCommonList } from '/@/api/backend/select' const _KEY: LocalSelectKey = { DICT_LIST: 'DICT_LIST', GENDER_LIST: 'GENDER_LIST', INS_LIST: 'INS_LIST', INS_NAME_LIST: 'INS_NAME_LIST', INS_TYPE_LIST: 'INS_TYPE_LIST', HR_RANGE_LIST: 'HR_RANGE_LIST', GROUP_LIST: 'GROUP_LIST', BODYSITE_CATEG_LIST: 'BODYSITE_CATEG_LIST', MODALITY_LIST: 'MODALITY_LIST' } const getDefaultLocalSelectOption = (options: any[] = []) => { return { options, key: 'code', label: 'name', value: 'name', } } const getCodeLocalSelectOption = (options: any[] = []) => { return { options, key: 'code', label: 'name', value: 'code', } } const STATUS_LIST: LocalSelectOption = getCodeLocalSelectOption([ { code: 1, name: '是', }, { code: 2, name: '否', }, ]) const HR_STATUS_LIST: LocalSelectOption = getDefaultLocalSelectOption([ { code: 1, name: '互认', }, { code: 2, name: '不互认', }, ]) const mergeOptions = (oldOptions: any[], newOptions: any[] = []) => { oldOptions.push(...newOptions) } export const useLocalSelect = defineStore('localSelect', { state: (): LocalSelect => { return { _KEY, STATUS_LIST, HR_STATUS_LIST, DICT_LIST: getDefaultLocalSelectOption(), GENDER_LIST: getDefaultLocalSelectOption(), INS_LIST: getCodeLocalSelectOption(), INS_NAME_LIST: getCodeLocalSelectOption(), INS_TYPE_LIST: getDefaultLocalSelectOption(), HR_RANGE_LIST: getDefaultLocalSelectOption(), GROUP_LIST: getCodeLocalSelectOption(), BODYSITE_CATEG_LIST: getDefaultLocalSelectOption(), MODALITY_LIST: getDefaultLocalSelectOption(), } }, actions: { async initLISTS(keys: LOCAL_SELECT_KEY[]) { for(const key of keys) { await this.initLIST(key) } }, async initLIST(key: LOCAL_SELECT_KEY) { const option: LocalSelectOption = this[key] if(!option) { console.log('error initLIST KEY:' + key) return false } if(option.initialize) { return true } const res = await getCommonList(key) mergeOptions(option.options, res?.data?.list || []) option.initialize = true }, // async initGENDER_LIST() { // if(this.GENDER_LIST.initialize) { // return true // } // const res = await getGENDERList() // mergeOptions(this.GENDER_LIST.options, res?.data?.list || []) // this.GENDER_LIST.initialize = true // }, // async initINS_LIST() { // if(this.INS_LIST.initialize) { // return true // } // const res = await getINS_LIST() // mergeOptions(this.INS_LIST.options, res?.data?.list || []) // this.INS_LIST.initialize = true // } }, persist: false })