diff --git a/src/views/device/Instance/Detail/Info/components/Tags/Save.vue b/src/views/device/Instance/Detail/Info/components/Tags/Save.vue index 64110db3..8c9402b6 100644 --- a/src/views/device/Instance/Detail/Info/components/Tags/Save.vue +++ b/src/views/device/Instance/Detail/Info/components/Tags/Save.vue @@ -34,8 +34,8 @@ ) : record.type === 'boolean' ? [ - { label: '是', value: true }, - { label: '否', value: false }, + { label: record?.dataType?.trueText, value: record?.dataType?.trueValue }, + { label: record?.dataType?.falseText, value: record?.dataType?.falseValue }, ] : undefined " diff --git a/src/views/device/components/Metadata/Import/index.vue b/src/views/device/components/Metadata/Import/index.vue index 2f61c476..ee81c65e 100644 --- a/src/views/device/components/Metadata/Import/index.vue +++ b/src/views/device/components/Metadata/Import/index.vue @@ -15,7 +15,7 @@ - + @@ -209,19 +209,20 @@ const handleImport = async () => { const res = await convertMetadata('from', 'alink', data.import).catch(err => err) if (res.status === 200) { const metadata = operateLimits(res.result) + let result; if (props?.type === 'device') { - await saveMetadata(id as string, metadata).catch(err => err) - // instanceStore.setCurrent(JSON.parse(metadata || '{}')) + result = await saveMetadata(id as string, metadata).catch(err => err) } else { - await modify(id as string, { metadata: metadata }).catch(err => err) - // productStore.setCurrent(JSON.parse(metadata || '{}')) + result = await modify(id as string, { metadata: metadata }).catch(err => err) + } + if (result.success) { + message.success('导入成功') } loading.value = false - // MetadataAction.insert(JSON.parse(metadata || '{}')); - message.success('导入成功') } else { loading.value = false - message.error('发生错误!') + // message.error('物模型数据不正确!') + return } if (props?.type === 'device') { instanceStore.refresh(id as string) diff --git a/src/views/system/DataSource/Management/index.vue b/src/views/system/DataSource/Management/index.vue index b2ce39fe..fb8521ea 100644 --- a/src/views/system/DataSource/Management/index.vue +++ b/src/views/system/DataSource/Management/index.vue @@ -1,126 +1,173 @@ diff --git a/src/views/system/DataSource/components/EditDialog.vue b/src/views/system/DataSource/components/EditDialog.vue index 2f52f488..f63cf04f 100644 --- a/src/views/system/DataSource/components/EditDialog.vue +++ b/src/views/system/DataSource/components/EditDialog.vue @@ -6,7 +6,7 @@ :title="dialogTitle" :confirmLoading="loading" @ok="confirm" - @cancel="emits('update:visible', false)" + @cancel="emits('cancel')" > @@ -51,7 +51,7 @@ message: '请输入URL', trigger: 'change', }, - { validator: form.checkUrl, trigger: 'blur' }, + { validator: checkUrl, trigger: 'blur' }, ]" > (); // 弹窗相关 @@ -203,19 +202,25 @@ const dialogTitle = computed(() => props.data.id ? '编辑数据源' : '新增数据源', ); const loading = ref(false); -const confirm = () => { - loading.value = true; - formRef.value - ?.validate() - .then(() => form.submit()) - .then((resp: any) => { - if (resp.status === 200) { - message.success('操作成功'); - emits('confirm'); - emits('update:visible', false); - } - }) - .finally(() => (loading.value = false)); + +const checkUrl = (_rule: Rule, value: string): Promise => { + if (!value) return Promise.reject('请输入URL'); + const arr = value.split(':'); + if (arr?.[0] === 'jdbc' || arr?.[0] === 'r2dbc') { + return Promise.resolve(); + } else { + return Promise.reject('请输入正确的URL'); + } +}; + +const getTypeOption = () => { + getDataTypeDict_api().then((resp: any) => { + const result = resp.result as dictItemType[]; + form.typeOptions = result.map((item) => ({ + label: item.name, + value: item.id, + })); + }); }; const formRef = ref(); @@ -223,30 +228,38 @@ const form = reactive({ data: { ...props.data, } as sourceItemType, - typeOptions: [] as optionItemType[], - - checkUrl: (_rule: Rule, value: string): Promise => { - if (!value) return Promise.reject('请输入URL'); - const arr = value.split(':'); - if (arr?.[0] === 'jdbc' || arr?.[0] === 'r2dbc') { - return Promise.resolve(); - } else { - return Promise.reject('请输入正确的URL'); - } - }, - getTypeOption: () => { - getDataTypeDict_api().then((resp: any) => { - const result = resp.result as dictItemType[]; - form.typeOptions = result.map((item) => ({ - label: item.name, - value: item.id, - })); - }); - }, - submit: () => { - return saveDataSource_api(form.data); - }, }); -form.getTypeOption(); + +watch( + () => props.data, + (newValue) => { + form.data = {...newValue, shareConfig: { ...newValue?.shareConfig }} + }, + { + immediate: true, + deep: true + }, +); + +onMounted(() => { + getTypeOption(); +}) + +const confirm = () => { + loading.value = true; + formRef.value + ?.validate() + .then(async (_data: any) => { + const resp = await saveDataSource_api({ ...props.data, ..._data }); + if (resp.status === 200) { + message.success('操作成功'); + emits('confirm'); + formRef.value?.resetFields() + } + }) + .finally(() => { + loading.value = false; + }); +}; diff --git a/src/views/system/DataSource/index.vue b/src/views/system/DataSource/index.vue index 4f1837af..6329b935 100644 --- a/src/views/system/DataSource/index.vue +++ b/src/views/system/DataSource/index.vue @@ -14,8 +14,13 @@ model="TABLE" :params="queryParams" :defaultParams="{ + pageSize: 10, sorts: [{ name: 'createTime', order: 'desc' }], }" + :pagination="{ + showSizeChanger: true, + pageSizeOptions: ['10', '20', '50', '100'], + }" >