+
账户私钥不保存,测试或保存前请重新输入私钥!
{{$t("dataSource.table.list.columns.actions.testConnectButton")}}
@@ -57,6 +58,11 @@ const typesMap = {
defaultValue: 'value',
// dataSource: 'options',
dataSource: (data, source, self) => {
+ try {
+ return { options: JSON.parse(data.dataSource) };
+ } catch (error) {
+ console.log('继续判断是否需要加载接口')
+ }
const fApi = self.fApi;
if (typeof data.dataSource === 'string') {
if (!/^https?:/.test(data.dataSource)) {
@@ -81,10 +87,7 @@ const typesMap = {
fApi.refreshOptions();
});
return { options: [] };
- }
- try {
- return { options: JSON.parse(data.dataSource) };
- } catch (error) {
+ } else {
return { options: [] };
}
},
@@ -236,6 +239,11 @@ export default {
deep: true,
},
},
+ computed: {
+ isShowWarnTips() {
+ return this.data.id && this.formData.createSystem === 'TDSQL' && this.formData.authType === 'dpm';
+ }
+ },
created() {
this.loading = true;
@@ -482,5 +490,11 @@ export default {
}
}
}
+ .table-bottom-warn-tips {
+ color: #faad14;
+ padding-left: 110px;
+ margin-top: -16px;
+ margin-bottom: 10px;
+ }
}
diff --git a/web/src/pages/dataSourceManage/components/selectTypeModal.vue b/web/src/pages/dataSourceManage/components/selectTypeModal.vue
index 0062c655d..db6daf2af 100644
--- a/web/src/pages/dataSourceManage/components/selectTypeModal.vue
+++ b/web/src/pages/dataSourceManage/components/selectTypeModal.vue
@@ -37,6 +37,16 @@ export default {
data() {
return { searchVal: "" };
},
+ watch: {
+ visible: {
+ immediate: true,
+ handler: function(cur) {
+ if(cur) {
+ this.searchVal = '';
+ }
+ }
+ }
+ },
computed: {
options() {
let options = {};
diff --git a/web/src/pages/jobManagement/components/bottomLog.vue b/web/src/pages/jobManagement/components/bottomLog.vue
index 985e25c22..a460d1299 100644
--- a/web/src/pages/jobManagement/components/bottomLog.vue
+++ b/web/src/pages/jobManagement/components/bottomLog.vue
@@ -201,8 +201,13 @@ export default {
message.error("查询任务列表失败");
})
},
+ clearProgressTimer() {
+ if (this.progressTimer) {
+ clearInterval(this.progressTimer);
+ }
+ },
getJobProgressWithPoll() {
- clearInterval(this.progressTimer)
+ this.clearProgressTimer();
this.getJobProgress()
this.progressTimer = setInterval(() => {
this.getJobProgress()
@@ -214,11 +219,12 @@ export default {
.then(res => {
this.jobStatus = res.status
if (res.allTaskStatus && unfinishedStatusList.indexOf(res.status) === -1) {
- clearInterval(this.progressTimer)
+ this.clearProgressTimer();
}
})
.catch(err => {
message.error("查询job状态失败");
+ this.clearProgressTimer();
})
getProgress(this.jobExecutionId)
.then(res => {
@@ -235,6 +241,7 @@ export default {
})
.catch(err => {
message.error("查询进度失败");
+ this.clearProgressTimer();
})
},
getTaskInfo(progress) {
@@ -270,13 +277,14 @@ export default {
height: 30%;
bottom: 0;
background-color: white;
+ box-shadow: 0px -2px 4px rgba(0, 0, 0, 0.05);
.jd-bottom-top {
width: calc(100% - 200px);
- height: 48px;
+ height: 43px;
position: fixed;
bottom: 30%;
background-color: #f8f9fc;
- padding: 12px 24px;
+ padding: 8px 24px;
font-family: PingFangSC-Medium;
font-size: 16px;
color: rgba(0, 0, 0, 0.85);
diff --git a/web/src/pages/jobManagement/components/configDrawer.vue b/web/src/pages/jobManagement/components/configDrawer.vue
index 64ade8453..4fcfbfb17 100644
--- a/web/src/pages/jobManagement/components/configDrawer.vue
+++ b/web/src/pages/jobManagement/components/configDrawer.vue
@@ -299,6 +299,7 @@ export default {
top: 0;
right: 0;
height: 100%;
+ z-index: 999;
:deep(.ant-drawer-content-wrapper) {
width: 98% !important;
}
diff --git a/web/src/pages/jobManagement/components/dataSource.vue b/web/src/pages/jobManagement/components/dataSource.vue
index 72ca0becb..163bbeb06 100644
--- a/web/src/pages/jobManagement/components/dataSource.vue
+++ b/web/src/pages/jobManagement/components/dataSource.vue
@@ -44,9 +44,11 @@
>
@@ -59,12 +61,14 @@
:help="sourcesHelpMsg[item.key.split('.').pop()]"
:validate-status="sourcesHelpStatus[item.key.split('.').pop()]"
:required="item.required"
+ :class="[sourcesHelpStatus[item.key.split('.').pop()] === 'success' ? 'form-item-has-success' : '']"
>
@@ -92,12 +96,14 @@
>
@@ -109,12 +115,14 @@
:help="sinksHelpMsg[item.key.split('.').pop()]"
:validate-status="sinksHelpStatus[item.key.split('.').pop()]"
:required="item.required"
+ :class="[sinksHelpStatus[item.key.split('.').pop()] === 'success' ? 'form-item-has-success' : '']"
>
@@ -148,6 +156,7 @@ export default defineComponent({
props: {
dsData: Object,
engineType: String,
+ projectId: String
},
emits: [
"updateSourceInfo",
@@ -169,9 +178,9 @@ export default defineComponent({
// 对象转标题
const objToTitle = function (obj) {
if (typeof obj !== "object") return "";
- const { type, db, table, ds } = obj;
- if (!type && !db && !table && !ds) return "请点击后选择";
- return [type, ds, db, table];
+ const { type, db, table, name } = obj;
+ if (!type && !db && !table && !name) return "请点击后选择";
+ return [type, name, db, table];
};
let sourceTitle = ref(objToTitle(props.dsData.dataSourceIds.source));
@@ -179,6 +188,8 @@ export default defineComponent({
let sourceType = ref(props.dsData.dataSourceIds.source.type) // 源数据的数据源类型
let sinkType = ref(props.dsData.dataSourceIds.sink.type) // 源数据的数据源类型
let isFold = ref(true);
+ const srcTBNotExist = ref(props.dsData.dataSourceIds.source.tableNotExist);
+ const sinkTBNotExist = ref(props.dsData.dataSourceIds.sink.tableNotExist);
const dataSource = reactive({
dataSourceIds: {
@@ -249,6 +260,8 @@ export default defineComponent({
sinkTitle.value = objToTitle(newVal.dataSourceIds.sink);
sourceType.value = newVal.dataSourceIds.source.type; // 源数据源类型赋值
sinkType.value = newVal.dataSourceIds.sink.type; // 目的数据源类型赋值
+ srcTBNotExist.value = newVal.dataSourceIds.source.tableNotExist;
+ sinkTBNotExist.value = newVal.dataSourceIds.sink.tableNotExist;
dataSource.dataSourceIds = {
source: newVal.dataSourceIds.source || {},
sink: newVal.dataSourceIds.sink || {}
@@ -264,7 +277,7 @@ export default defineComponent({
const formRef = ref();
// 选完
- const updateSourceInfo = (dsInfo, id) => {
+ const updateSourceInfo = (dsInfo, dsItem, tableNotExist) => {
const info = dsInfo.split(".");
// 修改来源数据源,清空目的数据源
@@ -273,14 +286,15 @@ export default defineComponent({
id: '',
db: '',
table: '',
- ds: ''
+ name: '',
+ creator: ''
}
sinkTitle.value = objToTitle({
type: '',
id: '',
db: '',
table: '',
- ds: '',
+ name: '',
})
dataSource.params.sinks = []
/*if ((dataSource.dataSourceIds.sink.type && dataSource.dataSourceIds.source.type !== 'HIVE')
@@ -296,11 +310,14 @@ export default defineComponent({
return message.error("SQOOP引擎输入/输出数据源必须包含HIVE,请重新选择");
}*/
sourceType.value = info[0];
+ srcTBNotExist.value = tableNotExist;
+ dataSource.dataSourceIds.source.tableNotExist = tableNotExist;
dataSource.dataSourceIds.source.type = info[0];
- dataSource.dataSourceIds.source.ds = info[1];
+ dataSource.dataSourceIds.source.name = info[1];
dataSource.dataSourceIds.source.db = info[2];
dataSource.dataSourceIds.source.table = info[3];
- dataSource.dataSourceIds.source.id = id;
+ dataSource.dataSourceIds.source.id = dsItem.id;
+ dataSource.dataSourceIds.source.creator = dsItem.createUser;
getSourceParams(
props.engineType,
dataSource.dataSourceIds.source.type,
@@ -348,7 +365,7 @@ export default defineComponent({
context.emit("updateSourceInfo", dataSource);
});
};
- const updateSinkInfo = (dsInfo, id) => {
+ const updateSinkInfo = (dsInfo, dsItem, tableNotExist) => {
const info = dsInfo.split(".");
if ((info[0] && info[0] !== 'HIVE')
&& (dataSource.dataSourceIds.source.type && dataSource.dataSourceIds.source.type !== 'HIVE')
@@ -358,16 +375,19 @@ export default defineComponent({
id: "",
db: "",
table: "",
- ds: "",
+ name: "",
});
return message.error("SQOOP引擎输入/输出数据源必须包含HIVE,请重新选择");
}
sinkType.value = info[0];
+ sinkTBNotExist.value = tableNotExist;
+ dataSource.dataSourceIds.sink.tableNotExist = tableNotExist;
dataSource.dataSourceIds.sink.type = info[0];
- dataSource.dataSourceIds.sink.ds = info[1];
+ dataSource.dataSourceIds.sink.name = info[1];
dataSource.dataSourceIds.sink.db = info[2];
dataSource.dataSourceIds.sink.table = info[3];
- dataSource.dataSourceIds.sink.id = id;
+ dataSource.dataSourceIds.sink.id = dsItem.id;
+ dataSource.dataSourceIds.sink.creator = dsItem.createUser;
getSourceParams(
props.engineType,
@@ -516,8 +536,14 @@ export default defineComponent({
};
// 源数据数组
- const sourceParams = computed(() => dataSource.params.sources.filter(v => v.show !== '_false'))
- const sinksParams = computed(() => dataSource.params.sinks.filter(v => v.show !== '_false'))
+ const sourceParams = computed(() => {
+ const sources = dataSource.params.sources.filter(v => v.show !== '_false');
+ return sources;
+ })
+ const sinksParams = computed(() => {
+ const sinks = dataSource.params.sinks.filter(v => v.show !== '_false');
+ return sinks;
+ })
return {
formRef,
updateSourceInfo,
@@ -527,6 +553,8 @@ export default defineComponent({
dataSource,
updateSourceParams,
updateSinkParams,
+ srcTBNotExist,
+ sinkTBNotExist,
showInfo,
isFold,
sourcesHelpMsg,
@@ -627,4 +655,9 @@ export default defineComponent({
text-align: left;
}
}
+.form-item-has-success {
+ :deep(.ant-input) {
+ border-color: #d9d9d9;
+ }
+}
diff --git a/web/src/pages/jobManagement/components/dyncRender.vue b/web/src/pages/jobManagement/components/dyncRender.vue
index 3c48c567d..b831117d7 100644
--- a/web/src/pages/jobManagement/components/dyncRender.vue
+++ b/web/src/pages/jobManagement/components/dyncRender.vue
@@ -1,57 +1,67 @@
-
-
-
-
-
+
+
+
-
-
+
- {{unit}}
+ >
+
+
+
+
+
+
+
+
+ {{unit}}
+
-
+
\ No newline at end of file
diff --git a/web/src/pages/jobManagement/components/selectDataSource.vue b/web/src/pages/jobManagement/components/selectDataSource.vue
index 0b410554b..2b9a4c27c 100644
--- a/web/src/pages/jobManagement/components/selectDataSource.vue
+++ b/web/src/pages/jobManagement/components/selectDataSource.vue
@@ -22,18 +22,24 @@
@change="handleChangeSql">
数据源
-
+
+
-
+
搜索库
+ v-model:value="searchDB" @keyup.enter="filterDatabase(dsId)">
-
+
搜索表
@@ -56,6 +62,8 @@
diff --git a/web/src/pages/synchronizationHistory/index.vue b/web/src/pages/synchronizationHistory/index.vue
index 0698f64d9..de0a79ea2 100644
--- a/web/src/pages/synchronizationHistory/index.vue
+++ b/web/src/pages/synchronizationHistory/index.vue
@@ -133,6 +133,10 @@ const columns = [
title: '执行节点',
dataIndex: 'executeNode',
},
+ {
+ title: '项目名称',
+ dataIndex: 'projectName',
+ },
{
title: '作业名称',
dataIndex: 'name',
@@ -153,7 +157,7 @@ const columns = [
dataIndex: 'createUser',
},
{
- title: '提交用户',
+ title: '执行用户',
dataIndex: 'executeUser',
},
{