diff --git a/src/plugins/EasyComponent/optionsManager.js b/src/plugins/EasyComponent/optionsManager.js index a0df017..fe650ff 100644 --- a/src/plugins/EasyComponent/optionsManager.js +++ b/src/plugins/EasyComponent/optionsManager.js @@ -1,3 +1,4 @@ +import { deepFindObjArr } from './object-helper' import { ComponentConfig } from './globalConfig' import { createPathObject } from './utils' @@ -14,16 +15,18 @@ export function getOptionsByBaseCode(baseCode) { return OptionsMap[baseCode] } if (OptionsMap[baseCode] instanceof Promise) { - OptionsMap[baseCode].then((data) => { - if (Array.isArray(data)) { - OptionsMap[baseCode] = data - } else { - throw new Error('BaseOptionsLoader必须返回Array或Promise') - } - }).catch((e) => { - console.error(e) - delete OptionsMap[baseCode] - }) + OptionsMap[baseCode] + .then((data) => { + if (Array.isArray(data)) { + OptionsMap[baseCode] = data + } else { + throw new Error('BaseOptionsLoader必须返回Array或Promise') + } + }) + .catch((e) => { + console.error(e) + OptionsMap[baseCode] = [] + }) return [] } throw new Error('BaseOptionsLoader必须返回Array或Promise') @@ -39,10 +42,26 @@ export async function asyncGetOptionsByBaseCode(baseCode) { return OptionsMap[baseCode] } -export async function asyncGetOptionsLabelByBaseCode(baseCode, value) { +export async function asyncGetOptionsItemByBaseCode(baseCode, value, deepOption) { return asyncGetOptionsByBaseCode(baseCode).then((arr) => { - return (arr.find((item) => { - return item.value === value - }) || {}).label + if (deepOption) { + return deepFindObjArr(arr, (item) => { + return item.value === value + }, typeof deepOption === 'object' ? deepOption : undefined) + } else { + return ( + arr.find((item) => { + return item.value === value + }) || {} + ) + } }) } + +export async function asyncGetOptionsLabelByBaseCode(baseCode, value, deepOption) { + return (await asyncGetOptionsItemByBaseCode(baseCode, value, deepOption))?.label +} + +export function removeOptionsCache(baseCode) { + delete OptionsMap[baseCode] +} diff --git a/src/utils/request.js b/src/utils/request.js index 5186099..442d7c1 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -78,7 +78,7 @@ service.interceptors.response.use( location.reload() }) } else { - if (error.config.throwError) { // 不被拦截处理 + if (error.config.throwError || error.config.useResponseData) { // 不被拦截处理 throw error.response } else { Message({