| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { generateUUID } from '@/utils'
- import * as DictDataApi from '@/api/system/dict/dict.type'
- import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils'
- import selectRule from '@/components/FormCreate/src/config/selectRule'
- export const useDictSelectRule = () => {
- const label = '字典选择器'
- const name = 'DictSelect'
- const dictOptions = ref<{ label: string; value: string }[]>([]) // 字典类型下拉数据
- onMounted(async () => {
- const data = await DictDataApi.getSimpleDictTypeList()
- if (!data || data.length === 0) {
- return
- }
- dictOptions.value =
- data?.map((item: DictDataApi.DictTypeVO) => ({
- label: item.name,
- value: item.type
- })) ?? []
- })
- return {
- icon: 'icon-select',
- label,
- name,
- rule() {
- return {
- type: name,
- field: generateUUID(),
- title: label,
- info: '',
- $required: false
- }
- },
- props(_, { t }) {
- return localeProps(t, name + '.props', [
- makeRequiredRule(),
- {
- type: 'select',
- field: 'dictType',
- title: '字典类型',
- value: '',
- options: dictOptions.value
- },
- {
- type: 'select',
- field: 'valueType',
- title: '字典值类型',
- value: 'str',
- options: [
- { label: '数字', value: 'int' },
- { label: '字符串', value: 'str' },
- { label: '布尔值', value: 'bool' }
- ]
- },
- ...selectRule
- ])
- }
- }
- }
|