- 新增产品管理相关路由和页面(dashboard、list、requirement、setting) - 实现产品基础信息编辑弹窗组件(base-info-dialog.vue) - 添加运行时字典功能(dict-select、dict-text、dict-tag组件) - 集成字典管理store和API调用 - 规范ID类型定义为string避免精度丢失问题 - 完善国际化资源文件支持中英文对照 - 新增对象上下文业务域入口页导航实现说明 - 添加Vue DevTools浮动入口注释说明 - 统一权限控制支持全局和对象作用域区分 - 规范分页查询参数类型定义与使用方式
54 lines
1.0 KiB
Vue
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>
|