mirror of
https://gitee.com/dapppp/ruoyi-plus-vben5.git
synced 2026-04-10 04:53:15 +08:00
refactor: dictOptions代码重构
This commit is contained in:
@@ -4,6 +4,10 @@
|
|||||||
|
|
||||||
- Modal/Drawer中使用VxeTable tooltip需要设置更高的z-index 防止被遮挡
|
- Modal/Drawer中使用VxeTable tooltip需要设置更高的z-index 防止被遮挡
|
||||||
|
|
||||||
|
**OTHERS**
|
||||||
|
|
||||||
|
- 移除`getDict`方法
|
||||||
|
|
||||||
# 1.4.1
|
# 1.4.1
|
||||||
|
|
||||||
**FEATURES**
|
**FEATURES**
|
||||||
|
|||||||
@@ -3,20 +3,17 @@ import { dictDataInfo } from '#/api/system/dict/dict-data';
|
|||||||
import { useDictStore } from '#/store/dict';
|
import { useDictStore } from '#/store/dict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抽取公共逻辑的基础方法
|
* 一般是Select, Radio, Checkbox等组件使用
|
||||||
|
* @warning 注意内部为异步实现 所以不要写这种`getDictOptions()[0]`的代码 会获取不到
|
||||||
|
* @warning 需要保持`formatNumber`统一 在所有调用地方需要一致 不能出现A处为string B处为number
|
||||||
|
*
|
||||||
* @param dictName 字典名称
|
* @param dictName 字典名称
|
||||||
* @param dataGetter 获取字典数据的函数
|
|
||||||
* @param formatNumber 是否格式化字典value为number类型
|
* @param formatNumber 是否格式化字典value为number类型
|
||||||
* @returns 数据
|
* @returns Options数组
|
||||||
*/
|
*/
|
||||||
function fetchAndCacheDictData<T>(
|
export function getDictOptions(dictName: string, formatNumber = false) {
|
||||||
dictName: string,
|
const { dictRequestCache, setDictInfo, getDictOptions } = useDictStore();
|
||||||
dataGetter: () => T[],
|
const dataList = getDictOptions(dictName);
|
||||||
formatNumber = false,
|
|
||||||
): T[] {
|
|
||||||
const { dictRequestCache, setDictInfo } = useDictStore();
|
|
||||||
// 有调用方决定如何获取数据
|
|
||||||
const dataList = dataGetter();
|
|
||||||
|
|
||||||
// 检查请求状态缓存
|
// 检查请求状态缓存
|
||||||
if (dataList.length === 0 && !dictRequestCache.has(dictName)) {
|
if (dataList.length === 0 && !dictRequestCache.has(dictName)) {
|
||||||
@@ -54,29 +51,3 @@ function fetchAndCacheDictData<T>(
|
|||||||
}
|
}
|
||||||
return dataList;
|
return dataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 这里是提供给渲染标签使用的方法
|
|
||||||
* @deprecated 使用getDictOptions代替 于下个版本删除
|
|
||||||
* @param dictName 字典名称
|
|
||||||
* @returns 字典信息
|
|
||||||
*/
|
|
||||||
export function getDict(dictName: string) {
|
|
||||||
const { getDictOptions } = useDictStore();
|
|
||||||
return fetchAndCacheDictData(dictName, () => getDictOptions(dictName));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 一般是Select, Radio, Checkbox等组件使用
|
|
||||||
* @param dictName 字典名称
|
|
||||||
* @param formatNumber 是否格式化字典value为number类型
|
|
||||||
* @returns Options数组
|
|
||||||
*/
|
|
||||||
export function getDictOptions(dictName: string, formatNumber = false) {
|
|
||||||
const { getDictOptions } = useDictStore();
|
|
||||||
return fetchAndCacheDictData(
|
|
||||||
dictName,
|
|
||||||
() => getDictOptions(dictName),
|
|
||||||
formatNumber,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user