87ff23da by lihua

数据源支持多种对象存储

1 parent 8235395e
......@@ -18,7 +18,7 @@
@uploadFileChange="uploadFileChange" @checkboxChange="handleDataSelectFormCheckboxChange" />
</ContentWrap>
<!-- 抽样预览的表单填写配置,及表格展示 -->
<ContentWrap v-show="formRef?.formInline?.dataSource != 3 && !(formRef?.formInline?.dataSourceGuid && currDatasourceSelect?.databaseType === 'obs')" id="id-previewData" title="数据抽样预览" description=""
<ContentWrap v-show="formRef?.formInline?.dataSource != 3 && !(formRef?.formInline?.dataSourceGuid && objectTypesList.includes(currDatasourceSelect?.databaseType))" id="id-previewData" title="数据抽样预览" description=""
style="margin-top: 16px;">
<!-- 选择抽样预览的表单设置 -->
<Form ref="dataSimpleFormRef" :itemList="dataSimpleFormItems" :rules="dataSimpleFormRules"
......@@ -285,6 +285,8 @@ const isDataProvider = computed(() => {
return localStorage.getItem('userRole') == USERROLE.PROVIDER;
})
const objectTypesList = ref(['obs', 'minio', 'rustfs']);
const qualifiedIdentifierFloderList = ref([{
enName: 'patient_birth_date',
chName: '患者出生日期',
......@@ -612,7 +614,7 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
return;
}
let dsInfo = currDatasourceSelect.value = dataSourceList.value.find(d => d.guid == val);
if (dsInfo.databaseType == 'obs') {
if (objectTypesList.value.includes(dsInfo?.databaseType)) {
sampleTableFields.value = [];
parseFileDataSum.value = [];
sampleTableData.value = [];
......@@ -669,7 +671,7 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
});
} else if (row.field == 'handleType') {
// 第一种匿名处理类型是不可以选择obs类型的。
if (val == '01' && formInfo.dataSourceGuid && currDatasourceSelect.value.databaseType == 'obs') {
if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) {
formInfo.dataSourceGuid = '';
}
setDataSelectFormItems(formInfo);
......@@ -706,14 +708,14 @@ const setDataSelectFormItems = (info, isDetail = false) => {
item.default = '';
}
} else if (item.field == 'qualifiedIdentifier') {
item.visible = info['handleType'] == '02' && info['dataSource'] != 3 && !(info['dataSourceGuid'] && currDatasourceSelect.value?.databaseType === 'obs');
item.visible = info['handleType'] == '02' && info['dataSource'] != 3 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));
if (info['dataSource'] == 3) {
item.options = qualifiedIdentifierFloderList.value;
}
} else if (item.field == 'tableName') {
item.visible = !(info['dataSourceGuid'] && currDatasourceSelect.value?.databaseType === 'obs');//数据源类型为obs的没有数据表选择
item.visible = !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择
} else if (item.field == 'dataSourceGuid') {
item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => d.databaseType !== 'obs')
item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType))
}
});
stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value;
......@@ -1518,12 +1520,12 @@ const changeStep = async (val) => {
formRef.value?.ruleFormRef?.validate((valid, errorItem) => {
if (valid) {
let dataSource = formRef.value?.formInline?.dataSource;
if (dataSource == 2 && currDatasourceSelect.value.databaseType !== 'obs' && !sampleTableFields.value?.length) {
if (dataSource == 2 && !objectTypesList.value.includes(currDatasourceSelect.value?.databaseType) && !sampleTableFields.value?.length) {
proxy.$ElMessage.error('上传文件的字段不能为空');
return;
}
if (dataSource != 3) {
if (currDatasourceSelect.value.databaseType === 'obs' && saveParams.dataSourceGuid) {
if (objectTypesList.value.includes(currDatasourceSelect.value?.databaseType) && saveParams.dataSourceGuid) {
exec(saveParams);
} else {
dataSimpleFormRef.value?.ruleFormRef?.validate((valid) => {
......@@ -1661,7 +1663,7 @@ onBeforeMount(() => {
if (res?.code == proxy.$passCode) {
dataSourceList.value = res.data || [];
let item = dataSelectInfoItems.value.find(item => item.field == 'dataSourceGuid');
item && (item.options = detailInfo.value.handleType == '01' ? dataSourceList.value.filter(d => d.databaseType !== 'obs') : dataSourceList.value);
item && (item.options = detailInfo.value.handleType == '01' ? dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) : dataSourceList.value);
} else {
proxy.$ElMessage.error(res.msg);
}
......@@ -1670,12 +1672,12 @@ onBeforeMount(() => {
if (res?.code == proxy.$passCode) {
dataSourceList.value = res.data || [];
let item = dataSelectInfoItems.value.find(item => item.field == 'dataSourceGuid');
item && (item.options = detailInfo.value.handleType == '01' ? dataSourceList.value.filter(d => d.databaseType !== 'obs') : dataSourceList.value);
item && (item.options = detailInfo.value.handleType == '01' ? dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) : dataSourceList.value);
} else {
proxy.$ElMessage.error(res.msg);
}
currDatasourceSelect.value = dataSourceList.value.find(d => d.guid == detailInfo.value.dataSourceGuid);
if (currDatasourceSelect.value.databaseType != 'obs') {
if (!objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) {
const tableRes: any = await getDsTableByDs({
pageSize: -1,
pageIndex: 1,
......@@ -1732,7 +1734,7 @@ onBeforeMount(() => {
if (res.code == proxy.$passCode) {
dataSourceList.value = res.data || [];
let item = dataSelectInfoItems.value.find(item => item.field == 'dataSourceGuid');
item && (item.options = dataSourceList.value.filter(d => d.databaseType !== 'obs'));
item && (item.options = dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)));
} else {
proxy.$ElMessage.error(res.msg);
}
......
......@@ -21,12 +21,9 @@ import {
const { proxy } = getCurrentInstance() as any;
/** 数据库类型下拉列表 */
const databaseTypesList = ref([
{ label: "mysql", value: "mysql" },
{ label: "doris", value: "doris" },
{ label: "oracle", value: "oracle" },
{ label: "华为云obs", value: "obs" },
]);
const databaseTypesList = ref([]);
const objectTypesList = ref(['obs', 'minio', 'rustfs']);
const searchItemList = ref([
{
......@@ -1008,7 +1005,7 @@ const setFormItems = (name, info: any = null) => {
}
});
} else if (item.field == 'isHttpsProtocol') {
item.visible = info.databaseType == "obs";
item.visible = objectTypesList.value.includes(info.databaseType);
item.default = info[item.field] || "Y";
} else if (item.field == 'bizSystem') {
item.visible = info.systemLayer == '业务系统';
......@@ -1017,19 +1014,19 @@ const setFormItems = (name, info: any = null) => {
item.default = info[item.field] || "";
}
if (item.field == 'host') {
item.label = info.databaseType == "obs" ? "地址" : "服务器";
contentFormInfo.rules.host[0].message = info.databaseType == "obs" ? "请填写地址" : "请填写服务器IP地址";
item.label = objectTypesList.value.includes(info.databaseType) ? "地址" : "服务器";
contentFormInfo.rules.host[0].message = objectTypesList.value.includes(info.databaseType) ? "请填写地址" : "请填写服务器IP地址";
} else if (item.field == 'port') {
item.visible = info.databaseType != "obs";
item.visible = !objectTypesList.value.includes(info.databaseType);
} else if (item.field == 'logonUser') {
item.label = info.databaseType == "obs" ? "凭证ID" : "用户名";
contentFormInfo.rules.logonUser[0].message = info.databaseType == "obs" ? "请填写凭证ID" : "请填写用户名";
item.label = objectTypesList.value.includes(info.databaseType) ? "凭证ID" : "用户名";
contentFormInfo.rules.logonUser[0].message = objectTypesList.value.includes(info.databaseType) ? "请填写凭证ID" : "请填写用户名";
} else if (item.field == 'password') {
item.label = info.databaseType == "obs" ? "凭证Key" : "密码";
contentFormInfo.rules.password[0].message = info.databaseType == "obs" ? "请填写凭证Key" : "请填写密码";
item.label = objectTypesList.value.includes(info.databaseType) ? "凭证Key" : "密码";
contentFormInfo.rules.password[0].message = objectTypesList.value.includes(info.databaseType) ? "请填写凭证Key" : "请填写密码";
} else if (item.field == 'databaseNameEn') {
item.label = info.databaseType == "obs" ? "桶名称" : "数据库名";
contentFormInfo.rules.databaseNameEn[0].message = info.databaseType == "obs" ? "请填写桶名称" : "请填写数据库名";
item.label = objectTypesList.value.includes(info.databaseType) ? "桶名称" : "数据库名";
contentFormInfo.rules.databaseNameEn[0].message = objectTypesList.value.includes(info.databaseType) ? "请填写桶名称" : "请填写数据库名";
}
});
} else {
......@@ -1051,11 +1048,17 @@ const getFirstPageData = () => {
page.value.curr = 1;
getTableData();
};
onMounted(() => {
onBeforeMount(() => {
getAllFlowData({ dictType: "业务系统" }).then((res) => {
flowList.value = res.data
flowList.value = res?.data || []
contents.value.normal.items[3].options = flowList.value
})
getAllFlowData({ dictType: "数据源存储类型" }).then((res) => {
databaseTypesList.value = res?.data || []
searchItemList.value[1].options = databaseTypesList.value;
contents.value.normal.items[2].options = databaseTypesList.value;
})
})
const toSearch = (val: any, clear: boolean = false) => {
if (clear) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!