设备物模型信息

This commit is contained in:
ChenYi 2025-10-22 17:29:07 +08:00
parent 2f10b68443
commit 3f1dc4c6e3
2 changed files with 69 additions and 18 deletions

View File

@ -12,6 +12,7 @@ interface Props {
placeholder?: string; placeholder?: string;
disabled?: boolean; disabled?: boolean;
allowClear?: boolean; allowClear?: boolean;
onResolve?: (item: any | null) => void;
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
@ -92,8 +93,10 @@ const onChange = (val?: string) => {
if (val) { if (val) {
const found = options.value.find((o) => o.value === val) || null; const found = options.value.find((o) => o.value === val) || null;
emit('item-change', found); emit('item-change', found);
props.onResolve && props.onResolve(found);
} else { } else {
emit('item-change', null); emit('item-change', null);
props.onResolve && props.onResolve(null);
} }
}; };
@ -105,6 +108,9 @@ watch(
query.value.filter = ''; query.value.filter = '';
options.value = []; options.value = [];
total.value = 0; total.value = 0;
if (props.typeCode) {
fetchData();
}
}, },
{ immediate: true }, { immediate: true },
); );

View File

@ -97,7 +97,10 @@ export const addThingModelFormSchema = computed(() => [
component: 'ApiSelect', component: 'ApiSelect',
fieldName: 'filedType', fieldName: 'filedType',
label: $t('abp.thingModelInfos.FiledType'), label: $t('abp.thingModelInfos.FiledType'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
componentProps: { componentProps: {
api: getCommonGetSelectList, api: getCommonGetSelectList,
params: { params: {
@ -131,7 +134,10 @@ export const addThingModelFormSchema = computed(() => [
component: 'Input', component: 'Input',
fieldName: 'ioTPlatformRawFieldName', fieldName: 'ioTPlatformRawFieldName',
label: $t('abp.thingModelInfos.IoTPlatformRawFieldName'), label: $t('abp.thingModelInfos.IoTPlatformRawFieldName'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
componentProps: { componentProps: {
placeholder: placeholder:
$t('common.pleaseInput') + $t('common.pleaseInput') +
@ -142,25 +148,38 @@ export const addThingModelFormSchema = computed(() => [
component: 'StandardThingModelCodeSelect', component: 'StandardThingModelCodeSelect',
fieldName: 'standardFieldName', fieldName: 'standardFieldName',
label: $t('abp.thingModelInfos.StandardFieldName'), label: $t('abp.thingModelInfos.StandardFieldName'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
dependencies: { dependencies: {
show(values: any) { show(values: any) {
return !!values?.filedType; return !!values?.filedType;
}, },
triggerFields: ['filedType'], triggerFields: ['filedType'],
}, },
componentProps: { componentProps: (formValues: any) => ({
// 传入联动的类型编码 // 传入联动的类型编码(运行时具体值)
typeCode: (formValues: any) => formValues?.filedType, typeCode: formValues?.filedType ?? null,
onResolve: (item: any | null) => {
// 选择后自动回填:名称=displayText值类型=extendedAttribute(转大写)
formValues.standardFieldDisplayName = item?.displayText ?? '';
formValues.standardFieldValueType = (item?.extendedAttribute ?? '')
.toString()
.toUpperCase();
},
placeholder: placeholder:
$t('common.pleaseSelect') + $t('abp.thingModelInfos.StandardFieldName'), $t('common.pleaseSelect') + $t('abp.thingModelInfos.StandardFieldName'),
}, }),
}, },
{ {
component: 'ApiSelect', component: 'ApiSelect',
fieldName: 'standardFieldValueType', fieldName: 'standardFieldValueType',
label: $t('abp.thingModelInfos.StandardFieldValueType'), label: $t('abp.thingModelInfos.StandardFieldValueType'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
componentProps: { componentProps: {
api: getCommonGetSelectList, api: getCommonGetSelectList,
params: { params: {
@ -172,13 +191,21 @@ export const addThingModelFormSchema = computed(() => [
valueField: 'secondValue', valueField: 'secondValue',
optionsPropName: 'options', optionsPropName: 'options',
immediate: true, immediate: true,
allowClear: true,
placeholder: placeholder:
$t('common.pleaseSelect') + $t('common.pleaseSelect') +
$t('abp.thingModelInfos.StandardFieldValueType'), $t('abp.thingModelInfos.StandardFieldValueType'),
afterFetch: (res: any) => { afterFetch: (res: any) => {
if (Array.isArray(res)) return res; // 确保返回的是数组格式
if (res && Array.isArray(res.items)) return res.items; if (Array.isArray(res)) {
if (res && Array.isArray(res.data)) return res.data; return res;
}
if (res && Array.isArray(res.items)) {
return res.items;
}
if (res && Array.isArray(res.data)) {
return res.data;
}
return []; return [];
}, },
}, },
@ -187,7 +214,10 @@ export const addThingModelFormSchema = computed(() => [
component: 'Input', component: 'Input',
fieldName: 'standardFieldDisplayName', fieldName: 'standardFieldDisplayName',
label: $t('abp.thingModelInfos.StandardFieldDisplayName'), label: $t('abp.thingModelInfos.StandardFieldDisplayName'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
componentProps: { componentProps: {
placeholder: placeholder:
$t('common.pleaseInput') + $t('common.pleaseInput') +
@ -211,7 +241,10 @@ export const editThingModelFormSchema = computed(() => [
component: 'ApiSelect', component: 'ApiSelect',
fieldName: 'filedType', fieldName: 'filedType',
label: $t('abp.thingModelInfos.FiledType'), label: $t('abp.thingModelInfos.FiledType'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
componentProps: { componentProps: {
api: getCommonGetSelectList, api: getCommonGetSelectList,
params: { params: {
@ -243,7 +276,10 @@ export const editThingModelFormSchema = computed(() => [
component: 'Input', component: 'Input',
fieldName: 'ioTPlatformRawFieldName', fieldName: 'ioTPlatformRawFieldName',
label: $t('abp.thingModelInfos.IoTPlatformRawFieldName'), label: $t('abp.thingModelInfos.IoTPlatformRawFieldName'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
componentProps: { componentProps: {
placeholder: $t('abp.thingModelInfos.PleaseInputIoTPlatformRawFieldName'), placeholder: $t('abp.thingModelInfos.PleaseInputIoTPlatformRawFieldName'),
}, },
@ -252,17 +288,26 @@ export const editThingModelFormSchema = computed(() => [
component: 'StandardThingModelCodeSelect', component: 'StandardThingModelCodeSelect',
fieldName: 'standardFieldName', fieldName: 'standardFieldName',
label: $t('abp.thingModelInfos.StandardFieldName'), label: $t('abp.thingModelInfos.StandardFieldName'),
rules: z.preprocess((v) => (v == null ? '' : v), z.string().min(1, $t('common.required'))), rules: z.preprocess(
(v) => (v == null ? '' : v),
z.string().min(1, $t('common.required')),
),
dependencies: { dependencies: {
show(values: any) { show(values: any) {
return !!values?.filedType; return !!values?.filedType;
}, },
triggerFields: ['filedType'], triggerFields: ['filedType'],
}, },
componentProps: { componentProps: (formValues: any) => ({
typeCode: (formValues: any) => formValues?.filedType, typeCode: formValues?.filedType ?? null,
placeholder: $t('abp.thingModelInfos.PleaseSelectStandardFieldName'), onResolve: (item: any | null) => {
formValues.standardFieldDisplayName = item?.displayText ?? '';
formValues.standardFieldValueType = (item?.extendedAttribute ?? '')
.toString()
.toUpperCase();
}, },
placeholder: $t('abp.thingModelInfos.PleaseSelectStandardFieldName'),
}),
}, },
{ {
component: 'ApiSelect', component: 'ApiSelect',