Files
cn-rdms-web/src/components/custom/dict-text.vue
hongawen 4122dfa50d feat(product): 新增产品管理模块与字典组件功能
- 新增产品管理相关路由和页面(dashboard、list、requirement、setting)
- 实现产品基础信息编辑弹窗组件(base-info-dialog.vue)
- 添加运行时字典功能(dict-select、dict-text、dict-tag组件)
- 集成字典管理store和API调用
- 规范ID类型定义为string避免精度丢失问题
- 完善国际化资源文件支持中英文对照
- 新增对象上下文业务域入口页导航实现说明
- 添加Vue DevTools浮动入口注释说明
- 统一权限控制支持全局和对象作用域区分
- 规范分页查询参数类型定义与使用方式
2026-04-23 09:05:55 +08:00

54 lines
1.0 KiB
Vue

<script setup lang="ts">
import { computed } from 'vue';
import { useDict } from '@/hooks/business/dict';
defineOptions({
name: 'DictText',
inheritAttrs: false
});
type DictValue = string | number;
interface Props {
dictCode: string;
value?: DictValue | DictValue[] | null;
fallback?: string;
separator?: string;
onlyEnabled?: boolean;
tag?: string;
}
const props = withDefaults(defineProps<Props>(), {
value: null,
fallback: '--',
separator: ' / ',
onlyEnabled: false,
tag: 'span'
});
const { getLabel, getLabels } = useDict(() => props.dictCode);
const text = computed(() => {
if (Array.isArray(props.value)) {
return getLabels(props.value, {
fallback: props.fallback,
separator: props.separator,
onlyEnabled: props.onlyEnabled
});
}
return getLabel(props.value, {
fallback: props.fallback,
onlyEnabled: props.onlyEnabled
});
});
</script>
<template>
<component :is="props.tag" v-bind="$attrs">
{{ text }}
</component>
</template>
<style scoped></style>