This is an automated email from the ASF dual-hosted git repository.
peacewong pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/linkis.git
The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
new bbaa47893 Add ipListManage, tenantManage and codeRetrival page;
optimization i18n and partial interaction
bbaa47893 is described below
commit bbaa47893c90dca28ad324614aeecfa529b0bb18
Author: Yonghao Mei <[email protected]>
AuthorDate: Mon Jan 16 20:10:00 2023 +0800
Add ipListManage, tenantManage and codeRetrival page; optimization i18n and
partial interaction
Add ipListManage, tenantManage and codeRetrival page; optimization i18n and
partial interaction
---
linkis-web/src/apps/URM/i18n/common/en.json | 23 +-
linkis-web/src/apps/URM/i18n/common/zh.json | 23 +-
.../module/functionManagement/addFunctionModal.vue | 43 +-
.../apps/URM/module/functionManagement/index.vue | 20 +-
.../apps/URM/module/functionManagement/vlist.vue | 30 +-
.../URM/module/udfManagement/addFunctionModal.vue | 73 +-
.../src/apps/URM/module/udfManagement/index.vue | 20 +-
.../src/apps/URM/module/udfManagement/vlist.vue | 30 +-
linkis-web/src/apps/linkis/i18n/common/en.json | 87 +-
linkis-web/src/apps/linkis/i18n/common/zh.json | 1125 ++++++++++----------
linkis-web/src/apps/linkis/module/ECM/index.scss | 9 +
linkis-web/src/apps/linkis/module/ECM/index.vue | 76 +-
linkis-web/src/apps/linkis/module/ECM/search.vue | 4 +
.../linkis/module/EnginePluginManagement/index.vue | 10 -
.../linkis/module/codeQuery/codeDetail/index.vue | 83 ++
.../src/apps/linkis/module/codeQuery/index.js | 23 +
.../src/apps/linkis/module/codeQuery/index.scss | 24 +
.../src/apps/linkis/module/codeQuery/index.vue | 423 ++++++++
.../apps/linkis/module/datasourceAccess/index.vue | 12 +-
.../src/apps/linkis/module/datasourceEnv/index.vue | 8 +-
.../apps/linkis/module/datasourceType/index.vue | 6 +-
.../module/gatewayAuthToken/EditForm/index.vue | 2 +-
.../apps/linkis/module/gatewayAuthToken/index.vue | 13 +-
.../module/globalHistoryManagement/index.vue | 14 +-
.../apps/linkis/module/ipListManagement/index.vue | 23 +-
.../module/resourceManagement/engineConn.vue | 10 +-
.../module/rmExternalResourceProvider/index.vue | 7 +-
.../linkis/module/tenantTagManagement/index.vue | 23 +-
.../src/apps/linkis/module/udfManager/index.vue | 1 +
.../src/apps/linkis/module/udfTree/index.vue | 5 +-
linkis-web/src/apps/linkis/router.js | 22 +-
linkis-web/src/apps/linkis/view/linkis/index.vue | 59 +-
linkis-web/src/common/i18n/en.json | 10 +-
linkis-web/src/dss/view/layout.vue | 2 +-
34 files changed, 1588 insertions(+), 755 deletions(-)
diff --git a/linkis-web/src/apps/URM/i18n/common/en.json
b/linkis-web/src/apps/URM/i18n/common/en.json
index 0c6ce4124..f6f8319cc 100644
--- a/linkis-web/src/apps/URM/i18n/common/en.json
+++ b/linkis-web/src/apps/URM/i18n/common/en.json
@@ -28,6 +28,21 @@
"lastModifyTime": "Modify Time",
"lastModifyUser": "Modify User",
"changeuser": "UDF Transfer",
+ "changeUserTo": "Transfer to:",
+ "share": "Share",
+ "shareUser": "Share User",
+ "separateWithCommas": "Separate With Commas",
+ "versionList": "Version List",
+ "cancel": "Cancel",
+ "confirm": "Confirm",
+ "inputUser": "Please Input User Name",
+ "createNewVersion": "Create New Version",
+ "download": "Download",
+ "success": "Operation Succeeded",
+ "notes": "Notes",
+ "publish": "Publish",
+ "viewSourceCode": "View Source Code",
+ "version": "Version",
"action": {
"title": "Action",
"markAsExpired": "Mark As Expired",
@@ -50,9 +65,9 @@
"registerFormat": "Register Format",
"preview": "Preview",
"useFormat": "Use Format",
- "returnType": "Return Type",
- "paramType": "Param Type",
- "inputType": "Input Type",
+ "returnType": "Return Type(eg. String)",
+ "paramType": "Param Type(eg. String)",
+ "inputType": "Input Type(eg. String)",
"defaultLoad": "Default Load",
"LJCJ": "Create",
"QSRMC": "Please enter the name",
@@ -72,7 +87,7 @@
"SRFL": "Please enter the directory",
"XGHS": "Update Funtion",
"XG": "Update",
- "QPZS": "View In Full Screen",
+ "QPZS": "View in Full Screen",
"QXQP": "Cancel Full Screen"
}
}
diff --git a/linkis-web/src/apps/URM/i18n/common/zh.json
b/linkis-web/src/apps/URM/i18n/common/zh.json
index 17702c31d..942c66a7e 100644
--- a/linkis-web/src/apps/URM/i18n/common/zh.json
+++ b/linkis-web/src/apps/URM/i18n/common/zh.json
@@ -28,6 +28,21 @@
"lastModifyTime": "修改时间",
"lastModifyUser": "修改人",
"changeuser": "UDF移交",
+ "changeUserTo": "移交给:",
+ "share": "共享",
+ "shareUser": "共享用户",
+ "createNewVersion": "创建新版本",
+ "separateWithCommas": "使用逗号分隔",
+ "versionList": "版本列表",
+ "cancel": "取消",
+ "confirm": "确定",
+ "inputUser": "请输入用户名",
+ "viewSourceCode": "查看源码",
+ "success": "操作成功",
+ "version": "版本",
+ "publish": "发布",
+ "download": "下载",
+ "notes": "注释",
"action": {
"title": "操作",
"markAsExpired": "标为过期",
@@ -46,13 +61,13 @@
"sprak": "sprak",
"jarPackage": "jar包",
"scriptPath": "脚本路径",
- "registerFunction": "注册函数",
+ "registerFunction": "注册的函数",
"registerFormat": "注册格式",
"preview": "预览",
"useFormat": "使用格式",
- "returnType": "返回类型",
- "paramType": "参数类型",
- "inputType": "输入类型",
+ "returnType": "返回类型如:String",
+ "paramType": "参数类型如:String",
+ "inputType": "输入类型如:String",
"defaultLoad": "默认加载",
"LJCJ": "立即创建",
"QSRMC": "请输入名称",
diff --git
a/linkis-web/src/apps/URM/module/functionManagement/addFunctionModal.vue
b/linkis-web/src/apps/URM/module/functionManagement/addFunctionModal.vue
index 60c9d6146..d9eb7206d 100644
--- a/linkis-web/src/apps/URM/module/functionManagement/addFunctionModal.vue
+++ b/linkis-web/src/apps/URM/module/functionManagement/addFunctionModal.vue
@@ -54,7 +54,7 @@
<Radio
v-if="isUdf"
:disabled="model === 1"
- label="spark"/>
+ label="Spark"/>
<Radio
v-if="!isUdf"
:label="$t('message.linkis.udf.ZDYHS')"/>
@@ -159,7 +159,7 @@
</FormItem> -->
<FormItem
:label="$t('message.linkis.udf.useFormat')"
- required>
+ class="ivu-form-item-required">
<div class="format-div">
<FormItem class="format-item">
<Input
@@ -270,7 +270,7 @@ export default {
},
TYPELIB: {
jar: 0,
- spark: {
+ Spark: {
py: 1,
scala: 2,
},
@@ -341,8 +341,7 @@ export default {
// $t('message.linkis.udf.KHDBJZPP')
{
type: 'string',
- pattern: /^[\w\u4e00-\u9fa5:.\\/]*(jar)$/,
- message: this.$t('message.linkis.udf.HZMZC'),
+ validator: this.jarValidator,
trigger: 'change',
},
],
@@ -355,8 +354,7 @@ export default {
// $t('message.linkis.udf.KHDBJZPP')
{
type: 'string',
- pattern: /^[\w\u4e00-\u9fa5:.\\/]*(py|scala)$/,
- message: this.$t('message.linkis.udf.ZCPYSCA'),
+ validator: this.pyValidator,
trigger: 'change',
},
],
@@ -369,8 +367,7 @@ export default {
// $t('message.linkis.udf.KHDBJZPP')
{
type: 'string',
- pattern: /^[\w\u4e00-\u9fa5:.\\/]*(py|scala)$/,
- message: this.$t('message.linkis.udf.ZCPYSCA'),
+ validator: this.pyValidator,
trigger: 'change',
},
],
@@ -417,7 +414,7 @@ export default {
type: 'string',
required: true,
message: this.$t('message.linkis.udf.SRFL'),
- trigger: 'blur',
+ trigger: 'change',
},
],
},
@@ -441,7 +438,7 @@ export default {
if (this.fnCategory.isCommon) {
prop = 'jar';
} else if (this.fnCategory.isSpark) {
- prop = `spark.${suffix}`;
+ prop = `Spark.${suffix}`;
} else {
prop = `custom.${suffix}`;
}
@@ -492,7 +489,7 @@ export default {
'setting.fnType'(val) {
let map = {};
map[this.$t('message.linkis.udf.common')] = 'isCommon';
- map['spark'] = 'isSpark';
+ map['Spark'] = 'isSpark';
map[this.$t('message.linkis.udf.ZDYHS')] = 'isCustom';
let type = map[val];
Object.keys(this.fnCategory).forEach((key) => this.fnCategory[key] =
false);
@@ -537,7 +534,7 @@ export default {
init() {
let { name, shared, description, path, udfName, directory, udfType,
registerFormat, load, useFormat } = this.node;
- let fnType = 'spark'
+ let fnType = 'Spark'
if (udfType === 0) {
fnType = this.$t('message.linkis.udf.common');
} else if (udfType > 2) {
@@ -726,6 +723,26 @@ export default {
this.$refs.directory.setQuery(null)
this.directories = [...this.remoteDirectories]
}
+ },
+ jarValidator(rule, val, cb) {
+ if (!val) {
+ cb(new Error(this.$t('message.linkis.udf.QSRWZLJ')));
+ }
+ const fileName = val.split('/')[val.split('/').length - 1]
+ if (!/^[\w\u4e00-\u9fa5:.\\/]*(jar)$/.test(fileName)) {
+ cb(new Error(this.$t('message.linkis.udf.HZMZC')));
+ }
+ cb();
+ },
+ pyValidator(rule, val, cb) {
+ if (!val) {
+ cb(new Error(this.$t('message.linkis.udf.QSRWZLJ')));
+ }
+ const fileName = val.split('/')[val.split('/').length - 1]
+ if (!/^[\w\u4e00-\u9fa5:.\\/]*(py|scala)$/.test(fileName)) {
+ cb(new Error(this.$t('message.linkis.udf.ZCPYSCA')));
+ }
+ cb();
}
},
};
diff --git a/linkis-web/src/apps/URM/module/functionManagement/index.vue
b/linkis-web/src/apps/URM/module/functionManagement/index.vue
index 6062cfb52..23a046785 100644
--- a/linkis-web/src/apps/URM/module/functionManagement/index.vue
+++ b/linkis-web/src/apps/URM/module/functionManagement/index.vue
@@ -104,12 +104,12 @@
:mask-closable="false"
@on-visible-change="changUserModalChange"
>
- <span>移交给:</span>
+ <span>{{$t('message.linkis.udf.changeUserTo')}}</span>
<Select ref="userSelect" v-model="handleUser" filterable
- v-if=allUsers.length
+ v-if="allUsers.length"
:remoteMethod="filterSelect"
@on-query-change="queryChange"
- placeholder="请输入用户名" style="width:200px;">
+ :placeholder="$t('message.linkis.udf.inputUser')" style="width:200px;">
<Option
v-for="(item) in udfUsers"
:label="item"
@@ -117,28 +117,28 @@
:key="item"
/>
</Select>
- <Input v-if=!allUsers.length v-model="handleUser" placeholder="请输入用户名"
style="width: 250px" />
+ <Input v-if="!allUsers.length" v-model="handleUser"
:placeholder="$t('message.linkis.udf.inputUser')" style="width: 250px" />
<div slot="footer">
- <Button @click="changUserModal=false">取消</Button>
- <Button type="primary" :disabled="!this.handleUser"
@click="changeUser">确定</Button>
+ <Button
@click="changUserModal=false">{{$t('message.linkis.udf.cancel')}}</Button>
+ <Button type="primary" :disabled="!this.handleUser"
@click="changeUser">{{$t('message.linkis.udf.confirm')}}</Button>
</div>
</Modal>
<Modal
- title="共享"
+ :title="$t('message.linkis.udf.share')"
v-model="shareModal"
:mask-closable="false"
@on-ok="share"
>
- <span>共享用户:</span>
+ <span>{{$t('message.linkis.udf.shareUser')}}</span>
<Input
v-model="sharedUsers"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
- placeholder="使用逗号分隔"
+ :placeholder="$t('message.linkis.udf.separateWithCommas')"
/>
</Modal>
<Modal
- title="版本列表"
+ :title="$t('message.linkis.udf.versionList')"
v-model="vlistModal"
width="1024"
:mask-closable="false"
diff --git a/linkis-web/src/apps/URM/module/functionManagement/vlist.vue
b/linkis-web/src/apps/URM/module/functionManagement/vlist.vue
index 5dc3574f2..7cc41de04 100644
--- a/linkis-web/src/apps/URM/module/functionManagement/vlist.vue
+++ b/linkis-web/src/apps/URM/module/functionManagement/vlist.vue
@@ -28,7 +28,7 @@
show-elevator
@on-change="changePage"
/>
- <Modal v-model="showContent" footer-hide width="80%" title="查看源码"
class="view-code">
+ <Modal v-model="showContent" footer-hide width="80%"
:title="$t('message.linkis.udf.viewSourceCode')" class="view-code">
<Spin v-if="loadingContent" size="large" fix />
<Input
v-show="!loadingContent"
@@ -55,42 +55,42 @@ export default {
return {
cols: [
{
- title: '版本',
+ title: this.$t('message.linkis.udf.version'),
key: 'bmlResourceVersion',
align: 'center',
width: 95
},
{
- title: '发布',
+ title: this.$t('message.linkis.udf.publish'),
key: 'publish',
align: 'center',
width: 75
},
{
- title: '状态',
+ title: this.$t('message.linkis.udf.status'),
key: 'status',
align: 'center',
width: 80
},
{
- title: '注释',
+ title: this.$t('message.linkis.udf.notes'),
key: 'description',
align: 'center',
width: 170
},
{
- title: '修改时间',
+ title: this.$t('message.linkis.udf.lastModifyTime'),
key: 'createTimeFormat',
align: 'center',
width: 160
},
{
- title: '创建者',
+ title: this.$t('message.linkis.udf.creator'),
key: 'createUser',
align: 'center',
width: 120
}, {
- title: '操作',
+ title: this.$t('message.linkis.udf.action.title'),
align: 'center',
width: 285,
render: (h, params) => {
@@ -107,7 +107,7 @@ export default {
this.back(params.row)
}
}
- }, '创建新版本'),
+ }, this.$t('message.linkis.udf.createNewVersion')),
h('Button', {
props: {
size: 'small',
@@ -121,7 +121,7 @@ export default {
this.publish(params.row)
}
}
- }, '发布'),
+ }, this.$t('message.linkis.udf.publish')),
h('Button', {
props: {
size: 'small',
@@ -134,7 +134,7 @@ export default {
this.download(params.row)
}
}
- }, '下载'),
+ }, this.$t('message.linkis.udf.download')),
h('Button', {
props: {
size: 'small',
@@ -148,7 +148,7 @@ export default {
this.viewCode(params.row)
}
}
- }, '查看源码')
+ }, this.$t('message.linkis.udf.viewSourceCode'))
]);
}
}],
@@ -225,7 +225,7 @@ export default {
}, 'post')
.then(() => {
this.fetchList()
- this.$Message.success('操作成功')
+ this.$Message.success(this.$t('message.linkis.udf.success'))
this.$emit('refresh-list')
})
.catch(() => {
@@ -240,7 +240,7 @@ export default {
version: row.bmlResourceVersion
}, 'post')
.then(() => {
- this.$Message.success('操作成功')
+ this.$Message.success(this.$t('message.linkis.udf.success'))
this.fetchList()
})
.catch(() => {
@@ -267,7 +267,7 @@ export default {
document.body.appendChild(l);
l.click()
window.URL.revokeObjectURL(url)
- this.$Message.success('操作成功')
+ this.$Message.success(this.$t('message.linkis.udf.success'))
})
.catch(() => {
this.loading = false
diff --git a/linkis-web/src/apps/URM/module/udfManagement/addFunctionModal.vue
b/linkis-web/src/apps/URM/module/udfManagement/addFunctionModal.vue
index 64aa7a2ee..5efa0fa93 100644
--- a/linkis-web/src/apps/URM/module/udfManagement/addFunctionModal.vue
+++ b/linkis-web/src/apps/URM/module/udfManagement/addFunctionModal.vue
@@ -54,7 +54,7 @@
<Radio
v-if="isUdf"
:disabled="isUdf && model === 1"
- label="spark"/>
+ label="Spark"/>
<Radio
v-if="!isUdf"
:label="$t('message.linkis.udf.ZDYHS')"/>
@@ -115,7 +115,7 @@
<FormItem
v-else-if="fnType === 2 && fnCategory.isSpark"
:label="$t('message.linkis.udf.registerFormat')"
- required>
+ class="ivu-form-item-required">
<div class="format-div">
<FormItem prop="scalaTypeL">
<Input
@@ -160,7 +160,7 @@
</FormItem>
<FormItem
:label="$t('message.linkis.udf.useFormat')"
- required>
+ class="ivu-form-item-required">
<div class="format-div">
<FormItem class="format-item">
<Input
@@ -203,7 +203,8 @@
<FormItem :label="$t('message.linkis.udf.class')" prop="directory">
<Select
ref="directory"
- v-model="setting.directory" filterable
+ v-model="setting.directory"
+ filterable
:remoteMethod="filterAdd"
@on-query-change="queryChange"
:disabled="isUdf && model === 1">
@@ -277,7 +278,7 @@ export default {
},
TYPELIB: {
jar: 0,
- spark: {
+ Spark: {
py: 1,
scala: 2,
},
@@ -327,8 +328,7 @@ export default {
{
type: 'string',
pattern: /^[a-zA-Z][a-zA-Z0-9_\u4e00-\u9fa5]*$/,
- message:
- this.$t('message.linkis.udf.BXYZMKT'),
+ message: this.$t('message.linkis.udf.BXYZMKT'),
trigger: 'change',
},
],
@@ -348,8 +348,7 @@ export default {
// $t('message.linkis.udf.KHDBJZPP')
{
type: 'string',
- pattern: /^[\w\u4e00-\u9fa5:.\\/]*(jar)$/,
- message: this.$t('message.linkis.udf.HZMZC'),
+ validator: this.jarValidator,
trigger: 'change',
},
],
@@ -362,8 +361,7 @@ export default {
// $t('message.linkis.udf.KHDBJZPP')
{
type: 'string',
- pattern: /^[\w\u4e00-\u9fa5:.\\/]*(py|scala)$/,
- message: this.$t('message.linkis.udf.ZCPYSCA'),
+ validator: this.pyValidator,
trigger: 'change',
},
],
@@ -376,8 +374,7 @@ export default {
// $t('message.linkis.udf.KHDBJZPP')
{
type: 'string',
- pattern: /^[\w\u4e00-\u9fa5:.\\/]*(py|scala)$/,
- message: this.$t('message.linkis.udf.ZCPYSCA'),
+ validator: this.pyValidator,
trigger: 'change',
},
],
@@ -424,7 +421,7 @@ export default {
type: 'string',
required: true,
message: this.$t('message.linkis.udf.SRFL'),
- trigger: 'blur',
+ trigger: 'change',
},
]
},
@@ -449,7 +446,7 @@ export default {
if (this.fnCategory.isCommon) {
prop = 'jar';
} else if (this.fnCategory.isSpark) {
- prop = `spark.${suffix}`;
+ prop = `Spark.${suffix}`;
} else {
prop = `custom.${suffix}`;
}
@@ -500,7 +497,7 @@ export default {
'setting.fnType'(val) {
let map = {};
map[this.$t('message.linkis.udf.common')] = 'isCommon';
- map['spark'] = 'isSpark';
+ map['Spark'] = 'isSpark';
map[this.$t('message.linkis.udf.ZDYHS')] = 'isCustom';
let type = map[val];
Object.keys(this.fnCategory).forEach((key) => this.fnCategory[key] =
false);
@@ -541,7 +538,7 @@ export default {
}
this.title = titleMap[this.model];
this.btnLabel = btnLabelMap[this.model];
- if (this.setting.fnType === 'spark') {
+ if (this.setting.fnType === 'Spark') {
this.filterNode = (node) => {
const name = node.label;
const tabSuffix = name.substr(name.lastIndexOf('.'), name.length);
@@ -558,7 +555,7 @@ export default {
init() {
let { name, shared, description, path, udfName, directory, udfType,
registerFormat, load, useFormat } = this.node;
- let fnType = 'spark'
+ let fnType = 'Spark'
if (udfType === 0) {
fnType = this.$t('message.linkis.udf.common');
} else if (udfType > 2) {
@@ -597,11 +594,23 @@ export default {
} else if (this.node.udfType === 1) {
this.setting.pyPara = conver(',', ')', 'indexOf', 'lastIndexOf');
} else {
- const type = rf.slice(rf.indexOf('['), rf.indexOf(']'));
+ const type = rf.slice(rf.indexOf('[') + 1, rf.indexOf(']'));
+ console.log(type, rf, '=====');
// 如果存在多个逗号,就只用使用格式来截取,否则会出现多个类型填入input异常的问题
if (type.indexOf(',') !== type.lastIndexOf(',')) {
- this.setting.scalaTypeL = '';
- this.setting.scalaTypeR = '';
+ // there are 2 case:
+ // 1. tuple, return params in ();
+ // 2. multi params, the first params is return params
+ if (type.indexOf('(') !== -1) {
+ // tuple
+ this.setting.scalaTypeL = type.slice(type.indexOf('('),
type.indexOf(')') + 1)
+ this.setting.scalaTypeR = type.slice(type.indexOf(')')+2)
+ } else {
+ // multi params
+ this.setting.scalaTypeL = type.split(',')[0];
+ this.setting.scalaTypeR = type.split(',').slice(1).toString();
+ }
+
this.showScalaRF = this.node.registerFormat;
} else {
this.setting.scalaTypeL = conver('[', ',', 'indexOf', 'indexOf');
@@ -699,7 +708,7 @@ export default {
onTypeChange() {
this.$emit('type-change', this.setting.fnType);
- if (this.setting.fnType === 'spark') {
+ if (this.setting.fnType === 'Spark') {
this.filterNode = (node) => {
const name = node.label;
const tabSuffix = name.substr(name.lastIndexOf('.'), name.length);
@@ -761,6 +770,26 @@ export default {
this.$refs.directory.setQuery(null)
this.directories = [...this.remoteDirectories]
}
+ },
+ jarValidator(rule, val, cb) {
+ if (!val) {
+ cb(new Error(this.$t('message.linkis.udf.QSRWZLJ')));
+ }
+ const fileName = val.split('/')[val.split('/').length - 1]
+ if (!/^[\w\u4e00-\u9fa5:.\\/]*(jar)$/.test(fileName)) {
+ cb(new Error(this.$t('message.linkis.udf.HZMZC')));
+ }
+ cb();
+ },
+ pyValidator(rule, val, cb) {
+ if (!val) {
+ cb(new Error(this.$t('message.linkis.udf.QSRWZLJ')));
+ }
+ const fileName = val.split('/')[val.split('/').length - 1]
+ if (!/^[\w\u4e00-\u9fa5:.\\/]*(py|scala)$/.test(fileName)) {
+ cb(new Error(this.$t('message.linkis.udf.ZCPYSCA')));
+ }
+ cb();
}
},
};
diff --git a/linkis-web/src/apps/URM/module/udfManagement/index.vue
b/linkis-web/src/apps/URM/module/udfManagement/index.vue
index a0631260d..269107963 100644
--- a/linkis-web/src/apps/URM/module/udfManagement/index.vue
+++ b/linkis-web/src/apps/URM/module/udfManagement/index.vue
@@ -101,12 +101,12 @@
:mask-closable="false"
@on-visible-change="changUserModalChange"
>
- <span>移交给:</span>
+ <span>{{$t('message.linkis.udf.changeUserTo')}}</span>
<Select ref="userSelect" v-model="handleUser" filterable
- v-if=allUsers.length
+ v-if="allUsers.length"
:remoteMethod="filterSelectTransUser"
@on-query-change="queryChange"
- placeholder="请输入用户名" style="width:200px;">
+ :placeholder="$t('message.linkis.udf.inputUser')" style="width:200px;">
<Option
v-for="(item) in transUsers"
:label="item"
@@ -114,28 +114,28 @@
:key="item"
/>
</Select>
- <Input v-if=!allUsers.length v-model="handleUser" placeholder="请输入用户名"
style="width: 300px" />
+ <Input v-if="!allUsers.length" v-model="handleUser"
:placeholder="$t('message.linkis.udf.inputUser')" style="width: 300px" />
<div slot="footer">
- <Button @click="changUserModal=false">取消</Button>
- <Button type="primary" :disabled="!this.handleUser"
@click="changeUser">确定</Button>
+ <Button
@click="changUserModal=false">{{$t('message.linkis.udf.cancel')}}</Button>
+ <Button type="primary" :disabled="!this.handleUser"
@click="changeUser">{{$t('message.linkis.udf.confirm')}}</Button>
</div>
</Modal>
<Modal
- title="共享"
+ :title="$t('message.linkis.udf.share')"
v-model="shareModal"
:mask-closable="false"
@on-ok="share"
>
- <span>共享用户:</span>
+ <span>{{$t('message.linkis.udf.shareUser')}}</span>
<Input
v-model="sharedUsers"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
- placeholder="使用逗号分隔"
+ :placeholder="$t('message.linkis.udf.separateWithCommas')"
/>
</Modal>
<Modal
- title="版本列表"
+ :title="$t('message.linkis.udf.versionList')"
v-model="vlistModal"
width="1024"
:mask-closable="false"
diff --git a/linkis-web/src/apps/URM/module/udfManagement/vlist.vue
b/linkis-web/src/apps/URM/module/udfManagement/vlist.vue
index 5dc3574f2..7cc41de04 100644
--- a/linkis-web/src/apps/URM/module/udfManagement/vlist.vue
+++ b/linkis-web/src/apps/URM/module/udfManagement/vlist.vue
@@ -28,7 +28,7 @@
show-elevator
@on-change="changePage"
/>
- <Modal v-model="showContent" footer-hide width="80%" title="查看源码"
class="view-code">
+ <Modal v-model="showContent" footer-hide width="80%"
:title="$t('message.linkis.udf.viewSourceCode')" class="view-code">
<Spin v-if="loadingContent" size="large" fix />
<Input
v-show="!loadingContent"
@@ -55,42 +55,42 @@ export default {
return {
cols: [
{
- title: '版本',
+ title: this.$t('message.linkis.udf.version'),
key: 'bmlResourceVersion',
align: 'center',
width: 95
},
{
- title: '发布',
+ title: this.$t('message.linkis.udf.publish'),
key: 'publish',
align: 'center',
width: 75
},
{
- title: '状态',
+ title: this.$t('message.linkis.udf.status'),
key: 'status',
align: 'center',
width: 80
},
{
- title: '注释',
+ title: this.$t('message.linkis.udf.notes'),
key: 'description',
align: 'center',
width: 170
},
{
- title: '修改时间',
+ title: this.$t('message.linkis.udf.lastModifyTime'),
key: 'createTimeFormat',
align: 'center',
width: 160
},
{
- title: '创建者',
+ title: this.$t('message.linkis.udf.creator'),
key: 'createUser',
align: 'center',
width: 120
}, {
- title: '操作',
+ title: this.$t('message.linkis.udf.action.title'),
align: 'center',
width: 285,
render: (h, params) => {
@@ -107,7 +107,7 @@ export default {
this.back(params.row)
}
}
- }, '创建新版本'),
+ }, this.$t('message.linkis.udf.createNewVersion')),
h('Button', {
props: {
size: 'small',
@@ -121,7 +121,7 @@ export default {
this.publish(params.row)
}
}
- }, '发布'),
+ }, this.$t('message.linkis.udf.publish')),
h('Button', {
props: {
size: 'small',
@@ -134,7 +134,7 @@ export default {
this.download(params.row)
}
}
- }, '下载'),
+ }, this.$t('message.linkis.udf.download')),
h('Button', {
props: {
size: 'small',
@@ -148,7 +148,7 @@ export default {
this.viewCode(params.row)
}
}
- }, '查看源码')
+ }, this.$t('message.linkis.udf.viewSourceCode'))
]);
}
}],
@@ -225,7 +225,7 @@ export default {
}, 'post')
.then(() => {
this.fetchList()
- this.$Message.success('操作成功')
+ this.$Message.success(this.$t('message.linkis.udf.success'))
this.$emit('refresh-list')
})
.catch(() => {
@@ -240,7 +240,7 @@ export default {
version: row.bmlResourceVersion
}, 'post')
.then(() => {
- this.$Message.success('操作成功')
+ this.$Message.success(this.$t('message.linkis.udf.success'))
this.fetchList()
})
.catch(() => {
@@ -267,7 +267,7 @@ export default {
document.body.appendChild(l);
l.click()
window.URL.revokeObjectURL(url)
- this.$Message.success('操作成功')
+ this.$Message.success(this.$t('message.linkis.udf.success'))
})
.catch(() => {
this.loading = false
diff --git a/linkis-web/src/apps/linkis/i18n/common/en.json
b/linkis-web/src/apps/linkis/i18n/common/en.json
index 3ad87e5ea..9b9dd78b1 100644
--- a/linkis-web/src/apps/linkis/i18n/common/en.json
+++ b/linkis-web/src/apps/linkis/i18n/common/en.json
@@ -38,6 +38,14 @@
"result": "Task Result",
"startUp": "Start-up",
"tagEdit": "Edit",
+ "tipForKill": "The unlock engines of ECM [{instance}}] will be killed",
+ "killAll": "Kill Unlock Engine",
+ "allEngine": "Include Multiple User Engine?",
+ "killFinishedInfo": "Expected to stop {killEngineNum} engines, will
release ECM {cores}cores,{memory}G resources",
+ "yes": "Yes",
+ "no": "No",
+ "noDataTextBeforeSearch": "Please input the execution code for query",
+ "noDataTextAfterSearch": "No data yet",
"rename": "Rename",
"instanceNum": "Instance Number",
"keyTip": "The key cannot be empty",
@@ -62,8 +70,8 @@
"unselect": "Please select task",
"noselection": "Please select first",
"searchName": "Please enter username to search",
- "generalView": "Switch to The Common View",
- "manageView": "Switch to The Admin View",
+ "generalView": "Switch to the Common View",
+ "manageView": "Switch to the Admin View",
"back": "Back",
"prev": "Previous Step",
"complete": "Complete",
@@ -73,6 +81,8 @@
"previousPage": "Previous Page",
"all": "All",
"common": "Common",
+ "tenant": "Tenant",
+ "inputTenant": "Please Input Tenant",
"warning": {
"api": "Requesting API, please hold on!",
"data": "Requesting data, please hold on!",
@@ -114,7 +124,7 @@
"executeApplicationName": "Execution Engine",
"requestApplicationName": "Created From",
"user": "User",
- "createdTime": "Created At",
+ "createdTime": "Created at",
"updateTime": "Update Time",
"failedReason": "Key Information",
"control": {
@@ -143,7 +153,7 @@
"name": "Frequently Used",
"children": {
"globalHistory": "Global History",
- "resource": "Resource Manager",
+ "resource": "Resource Management",
"resourceEngineConnList": "History Engine",
"setting": "Settings",
"dateReport": "Global Variables",
@@ -152,7 +162,7 @@
"ECMManage": "ECM Management",
"udfFunctionTitle": "UDF Function",
"udfFunctionManage": "UDF Management",
- "dataSourceManage": "DataSource Manage",
+ "dataSourceManage": "DataSource Management",
"userResourceManagement": "User Resource Management",
"tenantTagManagement": "Tenant Tag Management",
"ipListManagement": "White List Management",
@@ -162,6 +172,7 @@
"udfManager": "UDF User Manage",
"udfTree": "UDF Tree",
"datasourceAccess": "Data source access permissions",
+ "codeQuery": "Code Retrieval",
"datasourceEnv": "Datasource Environment",
"datasourceType": "Datasource Type",
"datasourceTypeKey": "Datasource Config Options",
@@ -204,8 +215,8 @@
"executeApplicationName": "Execution Engine",
"requestApplicationName": "Created From",
"progress": "Progress",
- "createdTime": "Created At",
- "updatedTime": "Updated At",
+ "createdTime": "Created at",
+ "updatedTime": "Updated at",
"control": {
"title": "Handle",
"label": "View"
@@ -217,7 +228,7 @@
"memory": "Memory",
"engineInstance": "Engine Instance",
"applicationName": "Application Name",
- "usedTime": "Started At",
+ "usedTime": "Started at",
"engineStatus": "Status",
"username": "Username"
},
@@ -251,7 +262,7 @@
"core": "Cores",
"row": {
"applicationName": "Application Name",
- "usedTime": "Started At",
+ "usedTime": "Started at",
"engineStatus": "Status",
"engineInstance": "Engine Instance",
"queueName": "Queue Name",
@@ -299,7 +310,7 @@
"datasource": {
"pleaseUpload": "Please upload",
"pleaseInput": "Please input",
- "datasourceSrc": "Datasource",
+ "datasourceSrc": "DataSource",
"connectTest": "Test Connection",
"sourceName": "DataSource Name",
"sourceDec": "DataSource Description",
@@ -365,6 +376,7 @@
"delete": "Delete",
"userIsExisted": "User Tag Already Exists",
"addSuccessful": "Successfully Addded",
+ "editSuccessful": "Successfully edited",
"confirmDel": "Confirm Deletion",
"isConfirmDel": "Are you sure you want to delete this tag"
},
@@ -399,9 +411,30 @@
"delete": "Delete",
"userIsExisted": "User Tag Already Exists",
"addSuccessful": "Successfully Addded",
+ "editSuccessful": "Successfully edited",
"confirmDel": "Confirm Deletion",
"isConfirmDel": "Are you sure you want to delete this tag"
},
+ "codeQuery": {
+ "executionCode": "Execution Code",
+ "dateRange": "Date Range",
+ "placeholder": {
+ "executionCode": "Please input execution code",
+ "dateRange": "Please select date range",
+ "status": "Please select status"
+ },
+ "inputCode": "Please input execution code",
+ "id": "ID",
+ "code": "Code",
+ "check": "View",
+ "search": "Search",
+ "clear": "Clear",
+ "status": "Status",
+ "submitUser": "Submit User",
+ "createdTime": "Created Time",
+ "searchRange": "Only T-1 history code can be queried"
+
+ },
"basedataManagement": {
"add": "Add",
"remove": "Remove",
@@ -415,7 +448,8 @@
"cancel": "Cancel",
"modalTitle": "Info",
"modalFormat": "Confirm deleting the {0} record?",
- "modalDelete": "Confirm that the record [{name}] should be deleted?",
+ "modalDelete1": "Confirm that the record [{username}] should be
deleted?",
+ "modalDelete": "Confirm that the record [{envName}] should be
deleted?",
"modalDeleteSuccess": "Successfully delete",
"modalDeleteFail": "Fail to delete",
"modalAddSuccess": "Successfully added",
@@ -527,17 +561,21 @@
"all": "All"
}
},
- "EnginePluginManagement": {
- "engineConnType": "EngineConn Type",
- "engineConnVersion": "Engine Conn Version",
- "create": "Create",
- "fileName": "File Name",
- "fileSize": "File Size",
- "lastModified": "Last Modified",
- "bmlResourceId": "Material Resource Id",
- "bmlResourceVersion": "Material Resource version",
- "lastUpdateTime": "Last Update Time",
+ "basedata": {
+ "add": "Add",
+ "remove": "Remove",
+ "edit": "Edit",
+ "addUDFAdmin": "Add UDF Administrator",
+ "search": "Search",
+ "envName": "Environment Name",
+ "envDesc": "Environment Description",
+ "dataSourceName": "DataSource Name",
+ "parameter": "Parameter",
"createTime": "Create Time",
+ "creator": "Creator",
+ "modifyUser": "Modify User",
+ "updateTime": "Update Time",
+ "action": "Action",
"Reset": "Reset",
"delete": "Delete",
"update": "Update",
@@ -547,13 +585,8 @@
"deleteCurrentbml": "Delete",
"versionList": "Version List",
"rollback": "Rollback",
- "action": "Operate",
"checkEngineConnTypeAndVersion": "Please select the engine type and
version",
- "upload": "Please click the button to upload the engine plug-in",
- "hasUpload": "The file has been uploaded, you can click to upload
again",
- "force": "Whether to overwrite",
- "yes": "Yes",
- "no": "No"
+ "upload": "Please click the button to upload the engine plug-in"
}
}
}
diff --git a/linkis-web/src/apps/linkis/i18n/common/zh.json
b/linkis-web/src/apps/linkis/i18n/common/zh.json
index b38b9e7f0..e06ecd046 100644
--- a/linkis-web/src/apps/linkis/i18n/common/zh.json
+++ b/linkis-web/src/apps/linkis/i18n/common/zh.json
@@ -1,562 +1,585 @@
{
"message": {
- "linkis": {
- "refresh": "刷新",
- "placeholderZip": "请输入工作空间python包路径(只支持zip)!",
- "emptyString": "空字符串",
- "addAppType": "新增应用类型",
- "editContents": "编辑目录",
- "ConfirmEdit": "完成编辑",
- "eurekaRegisterCenter": "Eureka注册中心",
- "addParameterConfig": "新增参数配置",
- "addEngineType": "新增引擎类型",
- "editDescriptionEngineConfig": "编辑引擎配置",
- "name": "名称",
- "order": "顺序",
- "description": "描述",
- "noDescription": "暂无描述",
- "addTags": "添加标签",
- "find": "查询",
- "initiator": "创建者",
- "inputOwnerHint": "请输入创建者",
- "jumpPage": "请在跳转页面查看……",
- "editedSuccess": "修改成功",
- "errorCode": "错误码",
- "errorDescription": "错误描述",
- "notLog": "未获取到日志!",
- "unfold": "展开",
- "fold": "收起",
- "addVariable": "新增变量",
- "defaultValue": "默认值",
- "noDefaultValue": "无默认值",
- "stop": "停止",
- "tip": "提示",
- "serverTip": "无结果集(resultLocation:null)",
- "stopEngineTip": "请问确认要停止当前引擎?",
- "log": "任务日志",
- "detail": "任务详情",
- "result": "任务结果",
- "startUp": "启动",
- "tagEdit": "编辑",
- "keyTip": "不能为空",
- "rename": "重命名",
- "resources": "资源",
- "instanceNum": "实例数",
- "instanceName": "实例名称",
- "reset": "重置",
- "clearSearch": "清空",
- "showOperations": "显示操作",
- "hide": "隐藏操作",
- "resetAll": "全部重置",
- "remove": "移除",
- "submit": "确定",
- "search": "搜索",
- "save": "保存",
- "edit": "编辑",
- "cancel": "取消",
- "create": "新建",
- "noDataText": "暂无数据",
- "jobId": "任务ID",
- "userName": "用户名",
- "password": "密码",
- "unselect": "请选择",
- "noselection": "请先选择",
- "searchName": "请输入用户名搜索",
- "generalView": "切换普通视图",
- "manageView": "切换管理员视图",
- "back": "返回",
- "prev": "上一步",
- "complete": "完成",
- "close": "关闭",
- "udfName": "UDF名称",
- "udfType": "UDF类型",
- "nextPage": "下一页",
- "previousPage": "上一页",
- "all": "全部",
- "common": "通用",
- "warning": {
- "api": "接口请求中,请稍候!",
- "data": "数据请求中,请稍候!",
- "waiting": "请等待接口返回!",
- "biLoading": "正在和Visualis系统通讯,请稍候!",
- "comingSoon": "尚未开源,敬请期待!"
- },
- "resourceManagement": {
- "resourceUsage": "资源使用情况",
- "applicationList": "应用列表"
- },
- "time": {
- "second": "秒",
- "minute": "分钟",
- "hour": "小时",
- "day": "天"
- },
- "tableColumns": {
- "instanceName": "实例名称",
- "initiator": "启动者",
- "engineInstance": "引擎实例",
- "engineType": "引擎类型",
- "serveType": "服务类型",
- "appType": "应用类型",
- "taskID": "任务ID",
- "fileName": "来源",
- "executionCode": "查询语句",
- "status": "状态",
- "costTime": "已耗时",
- "label": "标签",
- "engineVersion": "引擎版本",
- "engineVersionCannotBeNull": "引擎版本不能为空",
- "addEngineRules": "应用名称不能有特殊符号和空格",
- "usedResources": "已用资源",
- "lockedResource": "上锁资源",
- "maximumAvailableResources": "最大可用资源",
- "minimumAvailableResources": "最小可用资源",
- "startTime": "启动时间",
- "executeApplicationName": "执行引擎",
- "requestApplicationName": "创建者",
- "user": "用户",
- "createdTime": "创建时间",
- "updateTime": "更新时间",
- "failedReason": "关键信息",
- "control": {
- "title": "操作",
- "label": "查看"
- },
- "queenRemain": "队列剩余资源",
- "queueUsed": "队列已用资源",
- "queueTop": "队列上限资源",
- "engineRemain": "引擎剩余资源",
- "engineUsed": "引擎已用资源",
- "engineTop": "引擎上限资源"
- },
- "logLoading": "日志请求中,请稍后",
- "title": "Linkis管理台",
- "info": "{num} 条新消息",
- "hint": "请在跳转页面查看……",
- "sideNavList": {
- "news": {
- "name": "最新动态",
- "children": {
- "daily": "运营日报"
- }
- },
- "function": {
- "name": "常用功能",
- "children": {
- "globalHistory": "全局历史",
- "resource": "资源管理",
- "resourceEngineConnList": "历史引擎",
- "setting": "参数配置",
- "dateReport": "全局变量",
- "globalValiable": "常见问题",
- "ECMManage": "ECM管理",
- "microserviceManage": "微服务管理",
- "udfFunctionTitle": "UDF函数",
- "udfFunctionManage": "UDF管理",
- "functionManagement": "函数管理",
- "dataSourceManage": "数据源管理",
- "userResourceManagement": "用户资源管理",
- "tenantTagManagement": "租户标签管理",
- "ipListManagement": "白名单管理",
- "errorCode": "错误码管理",
- "gatewayAuthToken": "令牌管理",
- "rmExternalResourceProvider": "扩展资源管理",
- "udfManager": "管理员用户",
- "udfTree": "UDF分类",
- "datasourceAccess": "数据源权限",
- "datasourceEnv": "数据源环境",
- "datasourceType": "数据源分类",
- "datasourceTypeKey": "数据源配置项",
- "EnginePluginManagement": "引擎物料管理",
- "basedataManagement": "基础数据管理"
- }
- }
- },
- "formItems": {
- "id": {
- "placeholder": "请输入ID搜索"
- },
- "date": {
- "label": "起始时间",
- "placeholder": "请选择起始日期"
- },
- "instance": {
- "label": "实例",
- "placeholder": "请输入实例"
- },
- "creator": {
- "label": "应用",
- "placeholder": "请输入应用搜索"
- },
- "engine": {
- "label": "引擎"
- },
- "status": {
- "label": "状态"
- },
- "appType": "应用类型",
- "engineType": "引擎类型"
- },
- "columns": {
- "taskID": "任务ID",
- "fileName": "脚本名称",
- "executionCode": "查询语句",
- "status": "状态",
- "costTime": "已耗时",
- "executeApplicationName": "执行引擎",
- "requestApplicationName": "创建者",
- "progress": "进度",
- "createdTime": "创建时间",
- "updatedTime": "最后更新时间",
- "control": {
- "title": "操作",
- "label": "查看"
- },
- "moduleName": "模块名称",
- "totalResource": "总资源",
- "usedResource": "已用资源",
- "initializingResource": "初始化中资源",
- "memory": "内存",
- "engineInstance": "引擎实例",
- "applicationName": "应用名称",
- "usedTime": "开始时间",
- "engineStatus": "状态",
- "username": "用户名"
- },
- "shortcuts": {
- "week": "最近一周",
- "month": "最近一个月",
- "threeMonths": "最近三个月"
- },
- "statusType": {
- "all": "全部",
- "inited": "排队中",
- "running": "运行",
- "succeed": "成功",
- "cancelled": "取消",
- "failed": "失败",
- "scheduled": "资源申请中",
- "timeout": "超时",
- "retry": "重试",
- "unknown": "未知"
- },
- "engineTypes": {
- "all": "全部"
- },
- "header": "资源管理器",
- "tabs": {
- "first": "用户会话",
- "second": "用户资源",
- "third": "服务器资源"
- },
- "noLimit": "无限制",
- "core": "核",
- "row": {
- "applicationName": "应用名称",
- "usedTime": "开始时间",
- "engineStatus": "状态",
- "engineInstance": "引擎实例",
- "queueName": "队列名称",
- "user": "用户",
- "cpu": "已用的服务器CPU资源",
- "memory": "已用的服务器内存资源",
- "queueCpu": "已用的Yarn队列CPU资源",
- "queueMemory": "已用的Yarn队列内存资源"
- },
- "setting": {
- "global": "全局",
- "globalSetting": "通用设置",
- "hide": "隐藏",
- "show": "显示",
- "advancedSetting": "高级设置",
- "dataDev": "数据开发"
- },
- "globalValiable": "全局变量",
- "rules": {
- "first": {
- "required": "变量 {text} 的key为空",
- "lengthLimit": "长度应为 1 至 128 个字符",
- "letterTypeLimit": "仅支持以字母开头,且不得存在空格和中文",
- "placeholder": "请输入变量名"
- },
- "second": {
- "required": "变量 {text} 的value为空",
- "lengthLimit": "长度应为 1 至 128 个字符",
- "placeholder": "请输入变量值"
- }
- },
- "addArgs": "增加参数",
- "emptyDataText": "暂无全局变量数据",
- "sameName": "存在同名key",
- "error": {
- "validate": "有验证项未通过,请检查后再试!"
- },
- "success": {
- "update": "全局变量更新成功!"
- },
- "searchAppType": "请输入应用类型",
- "resetTip": "是否确认重置该资源?",
- "resetAllTip": "是否重置全部用户资源(该操作只会清理用户资源记录,不清理已经产生的资源)",
- "viewlog": "查看日志",
- "datasource": {
- "pleaseInput": "请输入",
- "pleaseUpload": "请上传",
- "datasourceSrc": "数据源",
- "connectTest": "测试连接",
- "sourceName": "数据源名称",
- "sourceDec": "数据源描述",
- "sourceType": "数据源类型",
- "creator": "创建人",
- "create": "新增数据源",
- "exports": "批量导出数据源",
- "imports": "批量导入数据源",
- "overdue": "过期",
- "versionList": "版本列表",
- "dataSourceName": "数据源名称",
- "dataSourceType": "数据源类型",
- "createSystem": "创建系统",
- "dataSourceEnv": "可用集群",
- "status": "状态",
- "permissions": "权限",
- "label": "标签",
- "version": "版本",
- "desc": "描述",
- "action": "操作",
- "createUser": "创建人",
- "createTime": "创建时间",
- "versionDec": "版本描述",
- "watch": "查看",
- "rollback": "回滚",
- "publish": "发布",
- "initVersion": "初始化版本",
- "updateVersion": "版本更新",
- "published": "已发布",
- "unpublish": "未发布",
- "cannotPublish": "不可发布",
- "used": "可用",
- "commentValue": "从版本 {text} 回滚"
- },
- "tenantTagManagement": {
- "userName": "用户名",
- "appName": "应用名",
- "tenantTag": "租户标签",
- "search": "搜索",
- "clear": "清空",
- "create": "新增",
- "userCreator": "用户-应用",
- "createUser": "创建人",
- "createTime": "创建时间",
- "desc": "业务来源",
- "inputUser": "请输入用户名",
- "inputApp": "请输入应用名",
- "inputTenant": "请输入租户标签",
- "inputDesc": "请输入业务来源",
- "inputCreateUser": "请输入创建者",
- "yourTagMapping": "您的标签映射",
- "notEmpty": "不能为空",
- "maxLen": "长度不能超过100",
- "contentError": "仅限英文、数字、星号和下划线",
- "contentError1": "仅限英文、数字和下划线",
- "contentError2": "仅限英文、数字、下划线和横线",
- "check": "检查",
- "OK": "确定",
- "Cancel": "取消",
- "action": "操作",
- "edit": "编辑",
- "delete": "删除",
- "userIsExisted": "用户标签已存在",
- "addSuccessful": "添加成功",
- "confirmDel": "确认删除",
- "isConfirmDel": "确定要删除这条数据吗"
- },
- "ipListManagement": {
- "userName": "用户名",
- "appName": "应用名",
- "ipList": "IP列表",
- "search": "搜索",
- "clear": "清空",
- "create": "新增",
- "userCreator": "用户-应用",
- "createUser": "创建人",
- "createTime": "创建时间",
- "desc": "业务来源",
- "inputUser": "请输入用户名",
- "inputApp": "请输入应用名",
- "inputIpList": "请输入IP列表",
- "inputDesc": "请输入业务来源",
- "inputCreateUser": "请输入创建者",
- "yourTagMapping": "您的标签映射",
- "notEmpty": "不能为空",
- "maxLen": "长度不能超过100",
- "contentError": "仅限英文、数字、星号和下划线",
- "contentError1": "仅限英文、数字和下划线",
- "contentError2": "仅限英文、数字、下划线和横线",
- "ipContentError": "请输入正确格式的IP地址(多个IP地址通过,分隔)",
- "check": "检查",
- "OK": "确定",
- "Cancel": "取消",
- "action": "操作",
- "edit": "编辑",
- "delete": "删除",
- "userIsExisted": "用户标签已存在",
- "addSuccessful": "添加成功",
- "confirmDel": "确认删除",
- "isConfirmDel": "确定要删除这条数据吗"
- },
- "basedataManagement": {
- "add": "新增",
- "addUDFAdmin": "新增UDF管理员",
- "remove": "删除",
- "edit": "编辑",
- "searchLabel": "模糊搜索:",
- "searchPlaceholder": "请输入搜索内容",
- "search": "搜索",
- "action": "操作",
- "modal":{
- "confirm": "确定",
+ "linkis": {
+ "refresh": "刷新",
+ "placeholderZip": "请输入工作空间python包路径(只支持zip)!",
+ "emptyString": "空字符串",
+ "addAppType": "新增应用类型",
+ "editContents": "编辑目录",
+ "ConfirmEdit": "完成编辑",
+ "eurekaRegisterCenter": "Eureka注册中心",
+ "addParameterConfig": "新增参数配置",
+ "addEngineType": "新增引擎类型",
+ "editDescriptionEngineConfig": "编辑引擎配置",
+ "name": "名称",
+ "order": "顺序",
+ "description": "描述",
+ "noDescription": "暂无描述",
+ "addTags": "添加标签",
+ "find": "查询",
+ "initiator": "创建者",
+ "inputOwnerHint": "请输入创建者",
+ "jumpPage": "请在跳转页面查看……",
+ "editedSuccess": "修改成功",
+ "errorCode": "错误码",
+ "errorDescription": "错误描述",
+ "notLog": "未获取到日志!",
+ "unfold": "展开",
+ "fold": "收起",
+ "addVariable": "新增变量",
+ "defaultValue": "默认值",
+ "noDefaultValue": "无默认值",
+ "stop": "停止",
+ "tip": "提示",
+ "serverTip": "无结果集(resultLocation:null)",
+ "stopEngineTip": "请问确认要停止当前引擎?",
+ "log": "任务日志",
+ "detail": "任务详情",
+ "result": "任务结果",
+ "startUp": "启动",
+ "tagEdit": "编辑",
+ "tipForKill": "将要停止此ECM实例 【{instance}】上的空闲引擎",
+ "killAll": "停止空闲引擎",
+ "allEngine": "包含多用户引擎?",
+ "killFinishedInfo": "预计停止{killEngineNum}个引擎, 将释放 ECM
{cores}cores,{memory}G 资源",
+ "noDataTextBeforeSearch": "请输入执行代码进行查询",
+ "noDataTextAfterSearch": "暂无数据",
+ "yes": "是",
+ "no": "否",
+ "keyTip": "不能为空",
+ "rename": "重命名",
+ "resources": "资源",
+ "instanceNum": "实例数",
+ "instanceName": "实例名称",
+ "reset": "重置",
+ "clearSearch": "清空",
+ "showOperations": "显示操作",
+ "hide": "隐藏操作",
+ "resetAll": "全部重置",
+ "remove": "移除",
+ "submit": "确定",
+ "search": "搜索",
+ "save": "保存",
+ "edit": "编辑",
"cancel": "取消",
- "modalTitle": "提示信息",
- "modalFormat": "确定删除 {0} 这条记录?",
- "modalDelete": "确认是否删除[{name}]该记录?",
- "modalDeleteSuccess": "删除成功",
- "modalDeleteFail": "删除失败",
- "modalAddSuccess": "添加成功",
- "modalAddFail": "添加失败",
- "modalEditSuccess": "编辑成功",
- "modalEditFail": "编辑失败"
- },
- "gatewayAuthToken": {
- "tokenName": "名称",
- "legalUsers": "用户",
- "legalHosts": "主机",
- "elapseDay": "有效天数",
- "permanentlyValid": "永久有效",
- "businessOwner": "所属者",
- "createTime":"创建时间",
- "updateTime": "更新时间",
- "updateBy": "更新人",
- "searchPlaceholder": "令牌名称/用户/主机",
- "info":"有效天数: -1 表示永久",
- "legalUsersInfo": "*允许所有用户;多用户使用,隔开,例如:user1,user2",
- "legalUsersValidate": {
- "empty": "请填写用户",
- "format": "格式不正确,使用*或使用,分割,例如:user1,user2"
+ "create": "新建",
+ "noDataText": "暂无数据",
+ "jobId": "任务ID",
+ "userName": "用户名",
+ "password": "密码",
+ "unselect": "请选择",
+ "noselection": "请先选择",
+ "searchName": "请输入用户名搜索",
+ "generalView": "切换普通视图",
+ "manageView": "切换管理员视图",
+ "back": "返回",
+ "prev": "上一步",
+ "complete": "完成",
+ "close": "关闭",
+ "udfName": "UDF名称",
+ "udfType": "UDF类型",
+ "nextPage": "下一页",
+ "previousPage": "上一页",
+ "all": "全部",
+ "common": "通用",
+ "tenant": "租户标签",
+ "inputTenant": "请输入租户标签",
+ "warning": {
+ "api": "接口请求中,请稍候!",
+ "data": "数据请求中,请稍候!",
+ "waiting": "请等待接口返回!",
+ "biLoading": "正在和Visualis系统通讯,请稍候!",
+ "comingSoon": "尚未开源,敬请期待!"
},
- "legalHostsInfo": "*允许所有主机;多主机使用,隔开,例如:host1,host2",
- "legalHostsInfoValidate": {
- "empty": "请填写主机"
+ "resourceManagement": {
+ "resourceUsage": "资源使用情况",
+ "applicationList": "应用列表"
},
- "elapseDayValidate": {
- "format": "格式不正确,使用*或使用,分割,例如:host1,host2",
- "empty": "请填写有效天数",
- "GT0": "有效天数必须大于0"
- }
- },
- "errorCode": {
- "errorCode": "错误代码",
- "errorDesc": "错误描述",
- "errorRegex": "错误正则",
- "searchPlaceholder": "代码/描述/正则"
- },
- "rmExternalResourceProvider": {
- "resourceType": "资源类型",
- "name": "名称",
- "labels": "标签",
- "config": "配置信息",
- "searchPlaceholder": "名称/标签/配置"
- },
- "udfManager": {
- "userName": "用户名",
- "searchPlaceholder": "用户名",
- "userNameValidate": {
- "size": "用户名长度不能超过20个字符",
- "empty": "请输入用户名"
- }
- },
- "udfTree": {
- "name": "名称",
- "category": "分类",
- "userName": "用户名",
- "description": "描述",
- "parent": "父级",
- "createTime": "创建时间",
- "updateTime": "更新时间",
- "searchPlaceholder": "名称/分类/描述/用户名",
- "parentInfo": "父级分类,Root为根目录"
- },
- "datasourceEnv": {
- "envName": "环境名称",
- "envDesc": "环境描述",
- "name": "数据源名称",
- "datasourceType": "数据源类型",
- "keytab": "kerboros认证",
- "parameter": "参数",
+ "time": {
+ "second": "秒",
+ "minute": "分钟",
+ "hour": "小时",
+ "day": "天"
+ },
+ "tableColumns": {
+ "instanceName": "实例名称",
+ "initiator": "启动者",
+ "engineInstance": "引擎实例",
+ "engineType": "引擎类型",
+ "serveType": "服务类型",
+ "appType": "应用类型",
+ "taskID": "任务ID",
+ "fileName": "来源",
+ "executionCode": "查询语句",
+ "status": "状态",
+ "costTime": "已耗时",
+ "label": "标签",
+ "engineVersion": "引擎版本",
+ "engineVersionCannotBeNull": "引擎版本不能为空",
+ "addEngineRules": "应用名称不能有特殊符号和空格",
+ "usedResources": "已用资源",
+ "lockedResource": "上锁资源",
+ "maximumAvailableResources": "最大可用资源",
+ "minimumAvailableResources": "最小可用资源",
+ "startTime": "启动时间",
+ "executeApplicationName": "执行引擎",
+ "requestApplicationName": "创建者",
+ "user": "用户",
+ "createdTime": "创建时间",
+ "updateTime": "更新时间",
+ "failedReason": "关键信息",
+ "control": {
+ "title": "操作",
+ "label": "查看"
+ },
+ "queenRemain": "队列剩余资源",
+ "queueUsed": "队列已用资源",
+ "queueTop": "队列上限资源",
+ "engineRemain": "引擎剩余资源",
+ "engineUsed": "引擎已用资源",
+ "engineTop": "引擎上限资源"
+ },
+ "logLoading": "日志请求中,请稍后",
+ "title": "Linkis管理台",
+ "info": "{num} 条新消息",
+ "hint": "请在跳转页面查看……",
+ "sideNavList": {
+ "news": {
+ "name": "最新动态",
+ "children": {
+ "daily": "运营日报"
+ }
+ },
+ "function": {
+ "name": "常用功能",
+ "children": {
+ "globalHistory": "全局历史",
+ "resource": "资源管理",
+ "resourceEngineConnList": "历史引擎",
+ "setting": "参数配置",
+ "dateReport": "全局变量",
+ "globalValiable": "常见问题",
+ "ECMManage": "ECM管理",
+ "microserviceManage": "微服务管理",
+ "udfFunctionTitle": "UDF函数",
+ "udfFunctionManage": "UDF管理",
+ "functionManagement": "函数管理",
+ "dataSourceManage": "数据源管理",
+ "userResourceManagement": "用户资源管理",
+ "tenantTagManagement": "租户标签管理",
+ "ipListManagement": "白名单管理",
+ "errorCode": "错误码管理",
+ "gatewayAuthToken": "令牌管理",
+ "rmExternalResourceProvider": "扩展资源管理",
+ "udfManager": "用户管理",
+ "udfTree": "UDF分类",
+ "datasourceAccess": "数据源权限",
+ "datasourceEnv": "数据源环境",
+ "datasourceType": "数据源分类",
+ "EnginePluginManagement": "引擎物料管理",
+ "basedataManagement": "基础数据管理",
+ "codeQuery": "代码检索"
+ }
+ }
+ },
+ "formItems": {
+ "id": {
+ "placeholder": "请输入ID搜索"
+ },
+ "date": {
+ "label": "起始时间",
+ "placeholder": "请选择起始日期"
+ },
+ "instance": {
+ "label": "实例",
+ "placeholder": "请输入实例"
+ },
+ "creator": {
+ "label": "应用",
+ "placeholder": "请输入应用搜索"
+ },
+ "engine": {
+ "label": "引擎"
+ },
+ "status": {
+ "label": "状态"
+ },
+ "appType": "应用类型",
+ "engineType": "引擎类型"
+ },
+ "columns": {
+ "taskID": "任务ID",
+ "fileName": "脚本名称",
+ "executionCode": "查询语句",
+ "status": "状态",
+ "costTime": "已耗时",
+ "executeApplicationName": "执行引擎",
+ "requestApplicationName": "创建者",
+ "progress": "进度",
+ "createdTime": "创建时间",
+ "updatedTime": "最后更新时间",
+ "control": {
+ "title": "操作",
+ "label": "查看"
+ },
+ "moduleName": "模块名称",
+ "totalResource": "总资源",
+ "usedResource": "已用资源",
+ "initializingResource": "初始化中资源",
+ "memory": "内存",
+ "engineInstance": "引擎实例",
+ "applicationName": "应用名称",
+ "usedTime": "开始时间",
+ "engineStatus": "状态",
+ "username": "用户名"
+ },
+ "shortcuts": {
+ "week": "最近一周",
+ "month": "最近一个月",
+ "threeMonths": "最近三个月"
+ },
+ "statusType": {
+ "all": "全部",
+ "inited": "排队中",
+ "running": "运行",
+ "succeed": "成功",
+ "cancelled": "取消",
+ "failed": "失败",
+ "scheduled": "资源申请中",
+ "timeout": "超时",
+ "retry": "重试",
+ "unknown": "未知"
+ },
+ "engineTypes": {
+ "all": "全部"
+ },
+ "header": "资源管理器",
+ "tabs": {
+ "first": "用户会话",
+ "second": "用户资源",
+ "third": "服务器资源"
+ },
+ "noLimit": "无限制",
+ "core": "核",
+ "row": {
+ "applicationName": "应用名称",
+ "usedTime": "开始时间",
+ "engineStatus": "状态",
+ "engineInstance": "引擎实例",
+ "queueName": "队列名称",
+ "user": "用户",
+ "cpu": "已用的服务器CPU资源",
+ "memory": "已用的服务器内存资源",
+ "queueCpu": "已用的Yarn队列CPU资源",
+ "queueMemory": "已用的Yarn队列内存资源"
+ },
+ "setting": {
+ "global": "全局",
+ "globalSetting": "通用设置",
+ "hide": "隐藏",
+ "show": "显示",
+ "advancedSetting": "高级设置",
+ "dataDev": "数据开发"
+ },
+ "globalValiable": "全局变量",
+ "rules": {
+ "first": {
+ "required": "变量 {text} 的key为空",
+ "lengthLimit": "长度应为 1 至 128 个字符",
+ "letterTypeLimit": "仅支持以字母开头,且不得存在空格和中文",
+ "placeholder": "请输入变量名"
+ },
+ "second": {
+ "required": "变量 {text} 的value为空",
+ "lengthLimit": "长度应为 1 至 128 个字符",
+ "placeholder": "请输入变量值"
+ }
+ },
+ "addArgs": "增加参数",
+ "emptyDataText": "暂无全局变量数据",
+ "sameName": "存在同名key",
+ "error": {
+ "validate": "有验证项未通过,请检查后再试!"
+ },
+ "success": {
+ "update": "全局变量更新成功!"
+ },
+ "searchAppType": "请输入应用类型",
+ "resetTip": "是否确认重置该资源?",
+ "resetAllTip": "是否重置全部用户资源(该操作只会清理用户资源记录,不清理已经产生的资源)",
+ "viewlog": "查看日志",
+ "datasource": {
+ "pleaseInput": "请输入",
+ "datasourceSrc": "数据源",
+ "connectTest": "测试连接",
+ "sourceName": "数据源名称",
+ "sourceDec": "数据源描述",
+ "sourceType": "数据源类型",
+ "creator": "创建人",
+ "create": "新增数据源",
+ "exports": "批量导出数据源",
+ "imports": "批量导入数据源",
+ "overdue": "过期",
+ "versionList": "版本列表",
+ "dataSourceName": "数据源名称",
+ "dataSourceType": "数据源类型",
+ "createSystem": "创建系统",
+ "dataSourceEnv": "可用集群",
+ "status": "状态",
+ "permissions": "权限",
+ "label": "标签",
+ "version": "版本",
+ "desc": "描述",
+ "action": "操作",
+ "createUser": "创建人",
+ "createTime": "创建时间",
+ "versionDec": "版本描述",
+ "watch": "查看",
+ "rollback": "回滚",
+ "publish": "发布",
+ "initVersion": "初始化版本",
+ "updateVersion": "版本更新",
+ "published": "已发布",
+ "unpublish": "未发布",
+ "cannotPublish": "不可发布",
+ "used": "可用",
+ "commentValue": "从版本 {text} 回滚"
+ },
+ "tenantTagManagement": {
+ "userName": "用户名",
+ "appName": "应用名",
+ "tenantTag": "租户标签",
+ "search": "搜索",
+ "clear": "清空",
+ "create": "新增",
+ "userCreator": "用户-应用",
+ "createUser": "创建人",
+ "createTime": "创建时间",
+ "desc": "业务来源",
+ "inputUser": "请输入用户名",
+ "inputApp": "请输入应用名",
+ "inputTenant": "请输入租户标签",
+ "inputDesc": "请输入业务来源",
+ "inputCreateUser": "请输入创建者",
+ "yourTagMapping": "您的标签映射",
+ "notEmpty": "不能为空",
+ "maxLen": "长度不能超过100",
+ "contentError": "仅限英文、数字、星号和下划线",
+ "contentError1": "仅限英文、数字和下划线",
+ "contentError2": "仅限英文、数字、下划线和横线",
+ "check": "检查",
+ "OK": "确定",
+ "Cancel": "取消",
+ "action": "操作",
+ "edit": "编辑",
+ "delete": "删除",
+ "userIsExisted": "用户标签已存在",
+ "addSuccessful": "添加成功",
+ "confirmDel": "确认删除",
+ "isConfirmDel": "确定要删除这条数据吗"
+ },
+ "ipListManagement": {
+ "userName": "用户名",
+ "appName": "应用名",
+ "ipList": "IP列表",
+ "search": "搜索",
+ "clear": "清空",
+ "create": "新增",
+ "userCreator": "用户-应用",
+ "createUser": "创建人",
+ "createTime": "创建时间",
+ "desc": "业务来源",
+ "inputUser": "请输入用户名",
+ "inputApp": "请输入应用名",
+ "inputIpList": "请输入IP列表",
+ "inputDesc": "请输入业务来源",
+ "inputCreateUser": "请输入创建者",
+ "yourTagMapping": "您的标签映射",
+ "notEmpty": "不能为空",
+ "maxLen": "长度不能超过100",
+ "contentError": "仅限英文、数字、星号和下划线",
+ "contentError1": "仅限英文、数字和下划线",
+ "contentError2": "仅限英文、数字、下划线和横线",
+ "ipContentError": "请输入正确格式的IP地址(多个IP地址通过,分隔)",
+ "check": "检查",
+ "OK": "确定",
+ "Cancel": "取消",
+ "action": "操作",
+ "edit": "编辑",
+ "delete": "删除",
+ "userIsExisted": "用户标签已存在",
+ "addSuccessful": "添加成功",
+ "confirmDel": "确认删除",
+ "isConfirmDel": "确定要删除这条数据吗"
+ },
+ "basedataManagement": {
+ "add": "新增",
+ "addUDFAdmin": "新增UDF管理员",
+ "remove": "删除",
+ "edit": "编辑",
+ "searchLabel": "模糊搜索:",
+ "searchPlaceholder": "请输入搜索内容",
+ "search": "搜索",
+ "action": "操作",
+ "modal":{
+ "confirm": "确定",
+ "cancel": "取消",
+ "modalTitle": "提示信息",
+ "modalFormat": "确定删除 {0} 这条记录?",
+ "modalDelete1": "确认是否删除[{username}]该记录?",
+ "modalDelete": "确认是否删除[{envName}]该记录?",
+ "modalDeleteSuccess": "删除成功",
+ "modalDeleteFail": "删除失败",
+ "modalAddSuccess": "添加成功",
+ "modalAddFail": "添加失败",
+ "modalEditSuccess": "编辑成功",
+ "modalEditFail": "编辑失败"
+ },
+ "gatewayAuthToken": {
+ "tokenName": "名称",
+ "legalUsers": "用户",
+ "legalHosts": "主机",
+ "elapseDay": "有效天数",
+ "permanentlyValid": "永久有效",
+ "businessOwner": "所属者",
+ "createTime":"创建时间",
+ "updateTime": "更新时间",
+ "updateBy": "更新人",
+ "searchPlaceholder": "令牌名称/用户/主机",
+ "info":"有效天数: -1 表示永久",
+ "legalUsersInfo": "*允许所有用户;多用户使用,隔开,例如:user1,user2",
+ "legalUsersValidate": {
+ "empty": "请填写用户",
+ "format": "格式不正确,使用*或使用,分割,例如:user1,user2"
+ },
+ "legalHostsInfo": "*允许所有主机;多主机使用,隔开,例如:host1,host2",
+ "legalHostsInfoValidate": {
+ "empty": "请填写主机"
+ },
+ "elapseDayValidate": {
+ "format": "格式不正确,使用*或使用,分割,例如:host1,host2",
+ "empty": "请填写有效天数",
+ "GT0": "有效天数必须大于0"
+ }
+ },
+ "errorCode": {
+ "errorCode": "错误代码",
+ "errorDesc": "错误描述",
+ "errorRegex": "错误正则",
+ "searchPlaceholder": "代码/描述/正则"
+ },
+ "rmExternalResourceProvider": {
+ "resourceType": "资源类型",
+ "name": "名称",
+ "labels": "标签",
+ "config": "配置信息",
+ "searchPlaceholder": "名称/标签/配置"
+ },
+ "udfManager": {
+ "userName": "用户名",
+ "searchPlaceholder": "用户名",
+ "userNameValidate": {
+ "size": "用户名长度不能超过20个字符",
+ "empty": "请输入用户名"
+ }
+ },
+ "udfTree": {
+ "name": "名称",
+ "category": "分类",
+ "userName": "用户名",
+ "description": "描述",
+ "parent": "父级",
+ "createTime": "创建时间",
+ "updateTime": "更新时间",
+ "searchPlaceholder": "名称/分类/描述/用户名",
+ "parentInfo": "父级分类,Root为根目录"
+ },
+ "datasourceEnv": {
+ "envName": "环境名称",
+ "envDesc": "环境描述",
+ "name": "数据源名称",
+ "datasourceType": "数据源类型",
+ "keytab": "kerboros认证",
+ "parameter": "参数",
+ "createTime": "创建时间",
+ "createUser": "创建者",
+ "updateTime": "更新时间",
+ "modifyUser": "更新者",
+ "searchPlaceholder": "环境名称/环境描述/参数"
+ },
+ "datasourceType": {
+ "name": "名称",
+ "description": "描述",
+ "option": "选项",
+ "classifier": "分类",
+ "icon": "图标",
+ "layers": "层级",
+ "searchPlaceholder": "名称/描述/分类",
+ "layersValidate": {
+ "range": "最小为0"
+ }
+ },
+ "datasourceTypeKey": {
+ "key": "键名",
+ "dataSourceType": "数据源类型",
+ "name": "名称",
+ "nameEn": "名称(英文)",
+ "valueType": "值类型",
+ "defaultValue": "默认值",
+ "scope": "范围",
+ "require": "必要字段",
+ "description": "描述",
+ "descriptionEn": "描述(英文)",
+ "valueRegex": "值校验规则",
+ "createTime": "创建时间",
+ "updateTime": "更新时间",
+ "searchPlaceholder": "名称",
+ "searchName": "名称",
+ "searchType": "类型",
+ "all": "全部"
+ }
+ },
+ "EnginePluginManagement": {
+ "engineConnType": "引擎类型",
+ "engineConnVersion": "引擎版本",
+ "create": "新增引擎插件",
+ "fileName": "文件名称",
+ "fileSize": "文件大小",
+ "lastModified": "文件更新时间",
+ "bmlResourceId": "物料资源Id",
+ "bmlResourceVersion": "物料资源版本",
+ "lastUpdateTime": "更新时间",
"createTime": "创建时间",
- "createUser": "创建者",
- "updateTime": "更新时间",
- "modifyUser": "更新者",
- "searchPlaceholder": "环境名称/环境描述/参数"
+ "Reset": "重置",
+ "delete": "删除已选物料的版本",
+ "update": "更新引擎插件",
+ "updateFileOnly": "更新",
+ "resourceVersion": "引擎物料bml版本",
+ "user": "所属人",
+ "deleteCurrentbml": "删除",
+ "versionList": "版本列表",
+ "rollback": "回滚",
+ "action": "操作"
},
- "datasourceType": {
- "name": "名称",
- "description": "描述",
- "option": "选项",
- "classifier": "分类",
- "icon": "图标",
- "layers": "层级",
- "searchPlaceholder": "名称/描述/分类",
- "layersValidate": {
- "range": "最小为0"
- }
- },
- "datasourceTypeKey": {
- "key": "键名",
- "dataSourceType": "数据源类型",
- "name": "名称",
- "nameEn": "名称(英文)",
- "valueType": "值类型",
- "defaultValue": "默认值",
- "scope": "范围",
- "require": "必要字段",
- "description": "描述",
- "descriptionEn": "描述(英文)",
- "valueRegex": "值校验规则",
- "createTime": "创建时间",
- "updateTime": "更新时间",
- "searchPlaceholder": "名称",
- "searchName": "名称",
- "searchType": "类型",
- "all": "全部"
+ "codeQuery": {
+ "executionCode": "执行代码",
+ "dateRange": "时间范围",
+ "placeholder": {
+ "executionCode": "请输入执行代码",
+ "dateRange": "时间范围",
+ "status": "状态"
+ },
+ "inputCode": "请输入执行代码",
+ "id": "任务ID",
+ "code": "代码",
+ "check": "查看",
+ "search": "搜索",
+ "clear": "清空",
+ "status": "状态",
+ "submitUser": "提交用户",
+ "createdTime": "创建时间",
+ "searchRange": "仅可查询T-1的历史代码"
}
- },
- "EnginePluginManagement": {
- "engineConnType": "引擎类型",
- "engineConnVersion": "引擎版本",
- "create": "新增引擎插件",
- "fileName": "文件名称",
- "fileSize": "文件大小",
- "lastModified": "文件更新时间",
- "bmlResourceId": "物料资源Id",
- "bmlResourceVersion": "物料资源版本",
- "lastUpdateTime": "更新时间",
- "createTime": "创建时间",
- "Reset": "重置",
- "delete": "删除已选物料的版本",
- "update": "更新引擎插件",
- "updateFileOnly": "更新",
- "resourceVersion": "引擎物料bml版本",
- "user": "所属人",
- "deleteCurrentbml": "删除",
- "versionList": "版本列表",
- "rollback": "回滚",
- "action": "操作",
- "checkEngineConnTypeAndVersion": "请选择引擎类型及版本",
- "upload": "请点击上传引擎插件",
- "hasUpload": "文件已上传,可以点击按钮重新上传",
- "force": "是否覆盖",
- "yes": "是",
- "no": "否"
}
- }
}
}
diff --git a/linkis-web/src/apps/linkis/module/ECM/index.scss
b/linkis-web/src/apps/linkis/module/ECM/index.scss
index eda67170d..73379036a 100644
--- a/linkis-web/src/apps/linkis/module/ECM/index.scss
+++ b/linkis-web/src/apps/linkis/module/ECM/index.scss
@@ -64,3 +64,12 @@ td.table-project-column {
max-width: 100%;
}
}
+.tip {
+ text-align: center;
+ margin: 30px;
+
+}
+.radio {
+ text-align: center;
+ margin-bottom: 20px;
+}
diff --git a/linkis-web/src/apps/linkis/module/ECM/index.vue
b/linkis-web/src/apps/linkis/module/ECM/index.vue
index 858482c77..ecd8902cf 100644
--- a/linkis-web/src/apps/linkis/module/ECM/index.vue
+++ b/linkis-web/src/apps/linkis/module/ECM/index.vue
@@ -83,6 +83,22 @@
</FormItem>
</Form>
</Modal>
+ <Modal
+ @on-ok="confirmKill"
+ v-model="killModal">
+ <div>
+ <div class="tip">
+ {{$t('message.linkis.tipForKill', {instance: killInfo.curInstance})}}
+ </div>
+ <div class="radio">
+ {{$t('message.linkis.allEngine')}}
+ <RadioGroup v-model="killInfo.all">
+ <Radio :label="0">{{$t('message.linkis.no')}}</Radio>
+ <Radio :label="1">{{$t('message.linkis.yes')}}</Radio>
+ </RadioGroup>
+ </div>
+ </div>
+ </Modal>
</div>
</template>
<script>
@@ -90,6 +106,7 @@ import api from '@/common/service/api';
import moment from "moment";
import Search from '@/apps/linkis/module/ECM/search.vue';
import WbTag from '@/apps/linkis/components/tag';
+import { debounce } from 'lodash'
export default {
name: 'ECM',
data() {
@@ -119,6 +136,12 @@ export default {
tableWidth: 0,
// Open the label modification popup(开启标签修改弹框)
isTagEdit: false,
+ // 删除实例instance
+ killInfo: {
+ curInstance: '',
+ all: 0,
+ },
+ killModal: false,
tableData: [],
page: {
totalSize: 0,
@@ -184,7 +207,7 @@ export default {
{
title: this.$t('message.linkis.tableColumns.control.title'),
key: 'action',
- width: '80',
+ width: '230',
// fixed: 'right',
align: 'center',
render: (h, params) => {
@@ -192,7 +215,10 @@ export default {
h('Button', {
props: {
type: 'primary',
- size: 'small'
+ size: 'small',
+ },
+ style: {
+ marginRight: '5px'
},
on: {
click: () => {
@@ -213,7 +239,23 @@ export default {
this.formItem = Object.assign(this.formItem, obj)
}
}
- }, this.$t('message.linkis.tagEdit'))
+ }, this.$t('message.linkis.tagEdit')),
+ h('Button', {
+ props: {
+ type: 'error',
+ size: 'small'
+ },
+ style: {
+ display: sessionStorage.getItem('isLogAdmin') ?
'inline-block' : 'none'
+ },
+ on: {
+ click: () => {
+ this.killModal = true;
+ console.log(params.row);
+ this.killInfo.curInstance = params.row.instance;
+ }
+ }
+ }, this.$t('message.linkis.killAll'))
]);
}
}
@@ -360,7 +402,8 @@ export default {
let param = {
instance: e.instance,
nodeHealthy: e.nodeHealthy,
- owner: e.owner
+ owner: e.owner,
+ tenantLabel: e.tenant,
}
api.fetch('/linkisManager/listAllEMs',param,'get').then((res)=>{
this.tableData = res.EMs
@@ -382,7 +425,30 @@ export default {
if (v===false && this.$refs.wbtags) {
this.$refs.wbtags.resetTagAdd()
}
- }
+ },
+ confirmKill: debounce(async function() {
+ try {
+ const res = await api.fetch('/linkisManager/rm/killUnlockEngineByEM', {
+ instance: this.killInfo.curInstance,
+ withMultiUserEngine: this.killInfo.all === 1 ? true : false,
+ }, 'post');
+ const { killEngineNum, memory, cores } = res.result
+ console.log(res);
+ this.killModal = false;
+ this.killInfo = {
+ curInstance: '',
+ all: 0,
+ }
+ // 传回的是Byte
+ this.$Message.success(this.$t('message.linkis.killFinishedInfo', {
killEngineNum, memory: memory / 1024 / 1024 / 1024, cores }))
+ } catch (err) {
+ console.warn(err);
+ this.killInfo = {
+ curInstance: '',
+ all: 0,
+ }
+ }
+ }, 1000, { leading: true })
}
}
</script>
diff --git a/linkis-web/src/apps/linkis/module/ECM/search.vue
b/linkis-web/src/apps/linkis/module/ECM/search.vue
index 3e4bfb063..5408a3175 100644
--- a/linkis-web/src/apps/linkis/module/ECM/search.vue
+++ b/linkis-web/src/apps/linkis/module/ECM/search.vue
@@ -47,6 +47,9 @@
:key="item"/>
</Select>
</FormItem>
+ <FormItem prop="tenant" :label="$t('message.linkis.tenant')" >
+ <Input :maxlength="50" v-model="searchBar.tenant" style="width:120px"
:placeholder="$t('message.linkis.inputTenant')"/>
+ </FormItem>
<FormItem>
<Button type="primary" @click="search">
{{ $t('message.linkis.search') }}
@@ -87,6 +90,7 @@ export default {
instance: "",
nodeHealthy: "",
owner: "",
+ tenant: "",
},
};
},
diff --git a/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.vue
b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.vue
index ff60717be..2f2972c34 100644
--- a/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.vue
+++ b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.vue
@@ -417,10 +417,6 @@ export default {
reqList.push(it.bmlResourceId);
}
})
- if(!reqList || reqList.length<1){
-
this.$Message.info(this.$t('message.linkis.EnginePluginManagement.checkEngineConnTypeAndVersion'));
- return
- }
api.fetch('/bml/deleteResources', {'resourceIds': reqList},
'post').then(response => {
console.log(response);
api.fetch('/engineplugin/deleteEnginePluginBML', {'ecType': th.ecType,
'version': th.version}, 'get').then(response2 => {
@@ -446,12 +442,6 @@ export default {
// })
},
createOrUpdate(num) {
-
- if(!this.ecType || !this.version){
-
this.$Message.info(this.$t('message.linkis.EnginePluginManagement.checkEngineConnTypeAndVersion'));
- return
- }
-
this.actionNum = num
if(num === 0){
this.actionType=this.$t('message.linkis.EnginePluginManagement.create')
diff --git a/linkis-web/src/apps/linkis/module/codeQuery/codeDetail/index.vue
b/linkis-web/src/apps/linkis/module/codeQuery/codeDetail/index.vue
new file mode 100644
index 000000000..25a499668
--- /dev/null
+++ b/linkis-web/src/apps/linkis/module/codeQuery/codeDetail/index.vue
@@ -0,0 +1,83 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<template>
+ <div style="height:100%">
+ <Input
+ v-model="searchText"
+ :placeholder="$t('message.common.filter')"
+ suffix="ios-search"
+ size="small"
+ class="log-search"/>
+ <we-editor
+ style="height: calc(100% - 60px);"
+ ref="logEditor"
+ v-model="curCode"
+ type="log"/>
+ </div>
+</template>
+<script>
+import api from '@/common/service/api'
+import { filter, forEach } from 'lodash'
+export default {
+ name: 'codeDetail',
+ data() {
+ return {
+ code: '',
+ searchText: '',
+ }
+ },
+ async mounted() {
+ const id = this.$route.query.id
+ const res = await api.fetch(`/jobhistory/es/task/${id}`, 'get');
+ this.code = res.task.executionCode
+ },
+ computed: {
+ curCode: {
+ get() {
+ let MatchText = '';
+ let originCode = this.code;
+ const val = this.searchText;
+ if (!originCode) return MatchText;
+ if (val) {
+ // 这部分代码是为了让正则表达式不报错,所以在特殊符号前面加上\
+ let formatedVal = '';
+ forEach(val, (o) => {
+ if (/^[\w\u4e00-\u9fa5]$/.test(o)) {
+ formatedVal += o;
+ } else {
+ formatedVal += `\\${o}`;
+ }
+ });
+ // 全局和不区分大小写模式,正则是匹配searchText前后出了换行符之外的字符
+ let regexp = new RegExp(`.*${formatedVal}.*`);
+ MatchText = filter(originCode.split('\n'), (item) => {
+ return regexp.test(item);
+ }).join('\n');
+ regexp = null;
+ } else {
+ MatchText = originCode;
+ }
+ return MatchText;
+ },
+ set() {
+
+ }
+ }
+ }
+}
+</script>
diff --git a/linkis-web/src/apps/linkis/module/codeQuery/index.js
b/linkis-web/src/apps/linkis/module/codeQuery/index.js
new file mode 100644
index 000000000..5ccbc651e
--- /dev/null
+++ b/linkis-web/src/apps/linkis/module/codeQuery/index.js
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+export default {
+ name: 'ipListManagement',
+ events: [],
+ component: () => import('./index.vue'),
+};
\ No newline at end of file
diff --git a/linkis-web/src/apps/linkis/module/codeQuery/index.scss
b/linkis-web/src/apps/linkis/module/codeQuery/index.scss
new file mode 100644
index 000000000..71d03bb32
--- /dev/null
+++ b/linkis-web/src/apps/linkis/module/codeQuery/index.scss
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@import '@/common/style/variables.scss';
+.code-query {
+ .table-content {
+ margin-top: 16px;
+ height: 610px;
+ }
+}
diff --git a/linkis-web/src/apps/linkis/module/codeQuery/index.vue
b/linkis-web/src/apps/linkis/module/codeQuery/index.vue
new file mode 100644
index 000000000..07e164c92
--- /dev/null
+++ b/linkis-web/src/apps/linkis/module/codeQuery/index.vue
@@ -0,0 +1,423 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<template>
+ <div class="code-query">
+ <Form class="code-query-searchbar" :model="searchBar" inline
label-position="left" style="width: 99%" @submit.native.prevent>
+ <FormItem prop="executionCode"
:label="$t('message.linkis.codeQuery.executionCode')" :label-width="60"
style="width: 100%; margin-bottom: 5px">
+ <Input
+ v-model="searchBar.executionCode"
+
:placeholder="$t('message.linkis.codeQuery.placeholder.executionCode')"
+ ></Input>
+ </FormItem>
+ </Form>
+ <div style="font-style: italic; color:
#cccccc;">{{$t('message.linkis.codeQuery.searchRange')}}</div>
+ <Form class="code-query-searchbar" :model="searchBar" inline
label-position="left">
+ <!-- <FormItem prop="executionCode"
:label="$t('message.linkis.codeQuery.executionCode')" :label-width="60">
+ <Input
+ v-model="searchBar.executionCode"
+
:placeholder="$t('message.linkis.codeQuery.placeholder.executionCode')"
+ ></Input>
+ </FormItem> -->
+ <FormItem prop="shortcut"
:label="$t('message.linkis.codeQuery.dateRange')" :label-width="60">
+ <DatePicker
+ :transfer="true"
+ class="datepicker"
+ :options="shortcutOpt"
+ v-model="searchBar.shortcut"
+ type="daterange"
+ placement="bottom-start"
+ format="yyyy-MM-dd"
+ :placeholder="$t('message.linkis.codeQuery.placeholder.dateRange')"
+ style="width: 180px"
+ :editable="false"
+ />
+ </FormItem>
+ <FormItem prop="status"
:label="$t('message.linkis.formItems.status.label')" :label-width="38">
+ <Select v-model="searchBar.status" style="width: 90px">
+ <Option
+ v-for="(item) in statusType"
+ :label="item.label"
+ :value="item.value"
+ :key="item.value"
+ />
+ </Select>
+ </FormItem>
+ <FormItem>
+ <Button
+ type="primary"
+ @click="confirmSearch"
+ style="margin-right: 10px;"
+ >{{ $t('message.linkis.search') }}</Button>
+ <Button
+ type="warning"
+ @click="reset"
+ style="margin-right: 10px;"
+ >{{ $t('message.linkis.clearSearch') }}</Button>
+ <Button
+ type="primary"
+ @click="switchAdmin"
+ v-if="isLogAdmin"
+ >{{ isAdminModel ? $t('message.linkis.generalView') :
$t('message.linkis.manageView') }}</Button>
+ </FormItem>
+ </Form>
+ <Table
+ border
+ size="small"
+ align="center"
+ :columns="tableColumns"
+ :data="tableData"
+ :loading="tableLoading"
+ class="table-content data-source-table"
+ :no-data-text="this.noDataText">
+
+ </Table>
+ <Page
+ :page-size="page.pageSize"
+ :current="page.pageNow"
+ :total="page.totalPage"
+ @on-change="changePage"
+ size="small"
+ show-elevator
+ :prev-text="$t('message.linkis.previousPage')"
:next-text="$t('message.linkis.nextPage')"
+ style="position: absoulute; bottom: 10px; overflow: hidden; text-align:
center;"
+ ></Page>
+ </div>
+</template>
+<script>
+import api from '@/common/service/api'
+import { cloneDeep } from 'lodash'
+export default {
+ name: 'codeQuery',
+ data() {
+ return {
+ tableData: [],
+ beforeSearch: true,
+ searchBar: {
+ executionCode: "",
+ shortcut: [],
+ status: "",
+ },
+ searchParams: {
+ executionCode: "",
+ shortcut: [],
+ status: "",
+ },
+ tableLoading: false,
+ isLogAdmin: false,
+ isAdminModel: false,
+ shortcutOpt: {
+ shortcuts: [
+ {
+ text: this.$t('message.linkis.shortcuts.week'),
+ value() {
+ const end = new Date(new Date().toLocaleDateString())
+ const start = new Date(new Date().toLocaleDateString())
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 8)
+ end.setTime(end.getTime() - 3600 * 1000 * 24 * 1)
+ return [start, end]
+ }
+ },
+ {
+ text: this.$t('message.linkis.shortcuts.month'),
+ value() {
+ const end = new Date(new Date().toLocaleDateString())
+ const start = new Date(new Date().toLocaleDateString())
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 31)
+ end.setTime(end.getTime() - 3600 * 1000 * 24 * 1)
+ return [start, end]
+ }
+ },
+ {
+ text: this.$t('message.linkis.shortcuts.threeMonths'),
+ value() {
+ const end = new Date(new Date().toLocaleDateString())
+ const start = new Date(new Date().toLocaleDateString())
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 91)
+ end.setTime(end.getTime() - 3600 * 1000 * 24 * 1)
+ return [start, end]
+ }
+ }
+ ],
+ disabledDate(date) {
+ return date.valueOf() > Date.now() - 86400000
+ }
+ },
+ statusType: [
+ {
+ label: this.$t('message.linkis.statusType.all'),
+ value: 'all'
+ },
+ {
+ label: this.$t('message.linkis.statusType.inited'),
+ value: 'Inited'
+ },
+ {
+ label: this.$t('message.linkis.statusType.running'),
+ value: 'Running'
+ },
+ {
+ label: this.$t('message.linkis.statusType.succeed'),
+ value: 'Succeed'
+ },
+ {
+ label: this.$t('message.linkis.statusType.cancelled'),
+ value: 'Cancelled'
+ },
+ {
+ label: this.$t('message.linkis.statusType.failed'),
+ value: 'Failed'
+ },
+ {
+ label: this.$t('message.linkis.statusType.scheduled'),
+ value: 'Scheduled'
+ },
+ {
+ label: this.$t('message.linkis.statusType.timeout'),
+ value: 'Timeout'
+ }
+ ],
+ tableColumns: [
+ {
+ title: this.$t('message.linkis.tenantTagManagement.action'),
+ key: 'action',
+ width: 100,
+ align: 'center',
+ render: (h, params) => {
+ return h('div', [
+ h('Button', {
+ // props: {
+ // type: 'default',
+ // size: 'small'
+ // },
+ class: {
+ 'render-btn': true,
+ },
+ on: {
+ click: () => {
+ this.check(params.row.id)
+ }
+ }
+ }, this.$t('message.linkis.codeQuery.check'))
+ ]);
+ }
+ },
+ {
+ title: this.$t('message.linkis.codeQuery.id'),
+ key: 'id',
+ width: 200,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.codeQuery.code'),
+ key: 'executionCode',
+ width: 990,
+ ellipsis: true,
+ align: 'center',
+ render: (h, params) => {
+ return h('span', {
+ props: {
+ type: 'text',
+ size: 'small'
+ },
+ domProps: {
+ innerHTML: params.row.executionCode
+ }
+ })
+ }
+ },
+ {
+ title: this.$t('message.linkis.codeQuery.status'),
+ key: 'status',
+ width: 350,
+ ellipsis: true,
+ tooltip: true,
+ align: 'center',
+ render: (h, params) => {
+ return h('Tag', {
+ props: {
+ color: this.colorGetter(params.row.status)
+ }
+ },
this.$t(`message.linkis.statusType.${params.row.status.toLowerCase()}`))
+ }
+ },
+ ],
+ page: {
+ pageSize: 10,
+ pageNow: 1,
+ totalPage: 0,
+ },
+ userName: '',
+ }
+ },
+ computed: {
+ noDataText() {
+ if(this.beforeSearch) {
+ return this.$t('message.linkis.noDataTextBeforeSearch')
+ }
+ return this.$t('message.linkis.noDataTextAfterSearch')
+ },
+ },
+ methods: {
+ confirmSearch() {
+ if(this.tableLoading) return;
+ this.searchParams = cloneDeep(this.searchBar)
+ this.page.pageNow = 1
+ this.search()
+ },
+ switchAdmin() {
+ if (!this.tableLoading) {
+ this.isAdminModel = !this.isAdminModel
+ // this.searchParams = cloneDeep(this.searchBar)
+ // this.page.pageNow = 1
+ // this.search()
+ }
+ },
+ async reset() {
+ this.searchBar = {
+ executionCode: "",
+ shortcut: [],
+ status: "",
+ };
+ this.searchParams = {
+ executionCode: "",
+ shortcut: [],
+ status: "",
+ };
+ this.beforeSearch = true;
+ this.tableData = [];
+ },
+ async changePage(val) {
+ this.page.pageNow = val;
+ await this.search();
+ },
+ async search() {
+ try {
+ this.tableLoading = true
+ if(!this.searchParams.executionCode) {
+ this.$Message.warning(this.$t('message.linkis.codeQuery.inputCode'))
+ this.beforeSearch = true;
+ throw Error(this.$t('message.linkis.codeQuery.inputCode'));
+ }
+ this.beforeSearch = false;
+ const { executionCode, shortcut, status } = this.searchParams;
+ const { pageNow, pageSize } = this.page;
+ const params = {
+ executionCode,
+ startDate: Date.parse(shortcut[0]),
+ endDate: Date.parse(shortcut[1]) + 86399999,
+ isAdminView: this.isAdminModel,
+ pageNow,
+ pageSize,
+ status
+ }
+ if (!shortcut[0]) {
+ delete params.startDate
+ delete params.endDate
+ }
+ if (!status || status === 'all') {
+ delete params.status
+ }
+ const res = await api.fetch(`/jobhistory/es/search`, params, 'get');
+ this.tableData = res.tasks.content
+ this.page.totalPage = res.tasks.totalElements
+ this.tableLoading = false
+ } catch (err) {
+ console.warn(err);
+ this.tableLoading = false
+ }
+ },
+ check(id) {
+ const query = {
+ id
+ }
+ // set storage
+ sessionStorage.setItem('code-search', JSON.stringify(this.searchParams));
+ sessionStorage.setItem('code-use-cache', true);
+ sessionStorage.setItem('code-search-page', JSON.stringify(this.page));
+ sessionStorage.setItem('code-search-admin', this.isAdminModel);
+
+ this.$router.push({
+ path: '/console/codeDetail',
+ query
+ })
+ },
+ colorGetter(status) {
+ switch (status) {
+ case 'Running':
+ return 'yellow';
+ case 'Succeed':
+ return 'green';
+ case 'Failed':
+ return 'red';
+ default:
+ break;
+ }
+ },
+ },
+ created() {
+ // 获取是否是历史管理员权限
+ api.fetch('/jobhistory/governanceStationAdmin', 'get').then(res => {
+ this.isLogAdmin = res.admin
+ })
+ },
+ beforeRouteEnter(to, from, next) {
+ if(from.name !== 'codeDetail') {
+ sessionStorage.removeItem('code-search');
+ sessionStorage.removeItem('code-search-page');
+ sessionStorage.removeItem('code-search-admin');
+ sessionStorage.setItem('code-use-cache', false);
+ }
+ next();
+ },
+ mounted() {
+ if(sessionStorage.getItem('code-use-cache') === 'true') {
+ this.searchParams = JSON.parse(sessionStorage.getItem('code-search'));
+ this.searchBar = JSON.parse(sessionStorage.getItem('code-search'));
+ this.page = JSON.parse(sessionStorage.getItem('code-search-page'));
+ this.isAdminModel =
JSON.parse(sessionStorage.getItem('code-search-admin'));
+ if(sessionStorage.getItem('isLogAdmin') !== 'true') {
+ this.isAdminModel = false;
+ }
+ this.search();
+ }
+ }
+};
+</script>
+<style lang="scss" src="./index.scss" scoped></style>
+<style lang="scss" scoped>
+/deep/ .ivu-btn {
+ &:hover {
+ border-color: transparent;
+ }
+ border-color: transparent;
+}
+.modal {
+
+ .input-area {
+ padding: 20px 50px;
+ .item {
+ display: flex;
+ margin-bottom: 10px;
+ .input {
+ width: calc(100% - 66px);
+ }
+ }
+ }
+}
+
+</style>
\ No newline at end of file
diff --git a/linkis-web/src/apps/linkis/module/datasourceAccess/index.vue
b/linkis-web/src/apps/linkis/module/datasourceAccess/index.vue
index 2a34f07ed..c311e1e71 100644
--- a/linkis-web/src/apps/linkis/module/datasourceAccess/index.vue
+++ b/linkis-web/src/apps/linkis/module/datasourceAccess/index.vue
@@ -139,13 +139,13 @@ export default {
},
{
title: "访问时间",
- key: 'accessTime',
+ key: 'access_time',
minWidth: 50,
tooltip: true,
align: 'center',
render: (h,params)=>{
return h('div',
- formatDate(new Date(params.row.accessTime),'yyyy-MM-dd hh:mm')
+ formatDate(new Date(params.row.createTime),'yyyy-MM-dd hh:mm')
)
}
},
@@ -200,8 +200,6 @@ export default {
this.modalShow = true
},
onTableEdit(row){
- row.tableId = row.tableId+""
- row.applicationId= row.applicationId+""
this.modalEditData = row
this.modalAddMode = 'edit'
this.modalShow = true
@@ -227,8 +225,8 @@ export default {
content: "删除失败"
})
}
- this.load()
})
+ this.load()
}
})
@@ -238,6 +236,7 @@ export default {
this.modalLoading = true
if(this.modalAddMode=='add') {
add(formData).then((data)=>{
+ console.log(data)
if(data.result) {
this.$Message.success({
duration: 3,
@@ -249,10 +248,10 @@ export default {
content: "添加失败"
})
}
- this.load()
})
}else {
edit(formData).then((data)=>{
+ console.log(data)
if(data.result) {
this.$Message.success({
duration: 3,
@@ -266,7 +265,6 @@ export default {
})
}
})
- this.load()
}
this.modalLoading=false
this.modalShow = false
diff --git a/linkis-web/src/apps/linkis/module/datasourceEnv/index.vue
b/linkis-web/src/apps/linkis/module/datasourceEnv/index.vue
index 2913efbac..dba47a6e1 100644
--- a/linkis-web/src/apps/linkis/module/datasourceEnv/index.vue
+++ b/linkis-web/src/apps/linkis/module/datasourceEnv/index.vue
@@ -273,8 +273,8 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalDeleteFail')
})
}
- this.load()
})
+ this.load()
}
})
@@ -310,6 +310,7 @@ export default {
if('uris' in formData) delete formData['uris'];
if(this.modalAddMode=='add') {
add(formData).then((data)=>{
+ //console.log(data)
if(data.result) {
this.$Message.success({
duration: 3,
@@ -321,28 +322,27 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalAddFail')
})
}
- this.load()
})
}else {
edit(formData).then((data)=>{
+ //console.log(data)
if(data.result) {
this.$Message.success({
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditSuccess')
})
+ this.load()
}else{
this.$Message.success({
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditFail')
})
}
- this.load()
})
}
console.log(formData);
this.modalLoading=false
this.modalShow = false
-
})
},
onModalCancel(){
diff --git a/linkis-web/src/apps/linkis/module/datasourceType/index.vue
b/linkis-web/src/apps/linkis/module/datasourceType/index.vue
index 0b6a434b9..aa8224ade 100644
--- a/linkis-web/src/apps/linkis/module/datasourceType/index.vue
+++ b/linkis-web/src/apps/linkis/module/datasourceType/index.vue
@@ -207,6 +207,7 @@ export default {
this.modalShow = true
},
onTableDelete(row){
+ //console.log(row)
this.$Modal.confirm({
title: this.$t('message.linkis.basedataManagement.modal.modalTitle'),
content:
this.$t('message.linkis.basedataManagement.modal.modalFormat').format(row.name),
@@ -226,8 +227,8 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalDeleteFail')
})
}
- this.load()
})
+ this.load()
}
})
@@ -252,7 +253,6 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalAddFail')
})
}
- this.load()
})
}else {
edit(formData).then((data)=>{
@@ -261,13 +261,13 @@ export default {
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditSuccess')
})
+ this.load()
}else{
this.$Message.success({
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditFail')
})
}
- this.load()
})
}
this.modalLoading=false
diff --git
a/linkis-web/src/apps/linkis/module/gatewayAuthToken/EditForm/index.vue
b/linkis-web/src/apps/linkis/module/gatewayAuthToken/EditForm/index.vue
index a9defcb69..c120b27a1 100644
--- a/linkis-web/src/apps/linkis/module/gatewayAuthToken/EditForm/index.vue
+++ b/linkis-web/src/apps/linkis/module/gatewayAuthToken/EditForm/index.vue
@@ -178,7 +178,7 @@ export default {
trigger: 'blur',
},
],
- },
+ }
]
}
},
diff --git a/linkis-web/src/apps/linkis/module/gatewayAuthToken/index.vue
b/linkis-web/src/apps/linkis/module/gatewayAuthToken/index.vue
index 9c85f6dbb..403a99a33 100644
--- a/linkis-web/src/apps/linkis/module/gatewayAuthToken/index.vue
+++ b/linkis-web/src/apps/linkis/module/gatewayAuthToken/index.vue
@@ -81,18 +81,18 @@
<Button type="text" size="large"
@click="onModalCancel()">{{$t('message.linkis.basedataManagement.modal.cancel')}}</Button>
<Button type="primary" size="large"
@click="onModalOk('userConfirm')">{{$t('message.linkis.basedataManagement.modal.confirm')}}</Button>
</div>
- <EditForm ref="editForm" :data="modalEditData"></EditForm>
+ <ErrorCodeForm ref="errorCodeForm" :data="modalEditData"></ErrorCodeForm>
</Modal>
</div>
</template>
<script>
import mixin from '@/common/service/mixin';
-import EditForm from './EditForm/index'
+import ErrorCodeForm from './EditForm/index'
import {add, del, edit, getList} from "./service";
import {formatDate} from "iview/src/components/date-picker/util";
export default {
mixins: [mixin],
- components: {EditForm},
+ components: {ErrorCodeForm},
data() {
return {
searchName: "",
@@ -154,7 +154,7 @@ export default {
align: 'center',
render: (h,params)=>{
return h('div',
- formatDate(new Date(params.row.createTime),'yyyy-MM-dd')
+ formatDate(new Date(params.row.createTime),'yyyy-MM-dd hh:mm')
)
}
},
@@ -166,7 +166,7 @@ export default {
align: 'center',
render: (h,params)=>{
return h('div',
- formatDate(new Date(params.row.updateTime),'yyyy-MM-dd')
+ formatDate(new Date(params.row.createTime),'yyyy-MM-dd hh:mm')
)
}
},
@@ -252,8 +252,7 @@ export default {
},
onModalOk(){
- this.$refs.editForm.formModel.submit((formData)=>{
- console.log(formData);
+ this.$refs.errorCodeForm.formModel.submit((formData)=>{
this.modalLoading = true
if(this.modalAddMode=='add') {
add(formData).then((data)=>{
diff --git
a/linkis-web/src/apps/linkis/module/globalHistoryManagement/index.vue
b/linkis-web/src/apps/linkis/module/globalHistoryManagement/index.vue
index 8e64f668c..dd7aec8c6 100644
--- a/linkis-web/src/apps/linkis/module/globalHistoryManagement/index.vue
+++ b/linkis-web/src/apps/linkis/module/globalHistoryManagement/index.vue
@@ -94,7 +94,7 @@
<Button
type="primary"
@click="switchAdmin"
- v-if="isLogAdmin"
+ v-if="isLogAdmin || isHistoryAdmin"
>{{ isAdminModel ? $t('message.linkis.generalView') :
$t('message.linkis.manageView') }}</Button>
</FormItem>
</Form>
@@ -260,6 +260,7 @@ export default {
}
],
isLogAdmin: false,
+ isHistoryAdmin: false,
isAdminModel: false,
moduleHeight: 300
}
@@ -268,6 +269,7 @@ export default {
// Get whether it is a historical administrator(获取是否是历史管理员权限)
api.fetch('/jobhistory/governanceStationAdmin', 'get').then(res => {
this.isLogAdmin = res.admin
+ this.isHistoryAdmin = res.historyAdmin
})
api.fetch('/configuration/engineType', 'get').then(res => {
this.getEngineTypes = ['all', ...res.engineType]
@@ -285,6 +287,14 @@ export default {
// storage.set('last-searchbar-status', this.searchBar)
window.removeEventListener('resize', this.getHeight)
},
+ beforeRouteEnter(to, from, next) {
+ if(from.name !== 'viewHistory') {
+ sessionStorage.removeItem('last-admin-model');
+ sessionStorage.removeItem('last-searchbar-status');
+ sessionStorage.removeItem('last-pageSetting-status');
+ }
+ next();
+ },
activated() {
this.init()
},
@@ -524,7 +534,7 @@ export default {
title: this.$t('message.linkis.tableColumns.fileName'),
key: 'source',
align: 'center',
- tooltip: true,
+ ellipsis: true,
width: 190
},
{
diff --git a/linkis-web/src/apps/linkis/module/ipListManagement/index.vue
b/linkis-web/src/apps/linkis/module/ipListManagement/index.vue
index e587d386a..c5462bef8 100644
--- a/linkis-web/src/apps/linkis/module/ipListManagement/index.vue
+++ b/linkis-web/src/apps/linkis/module/ipListManagement/index.vue
@@ -44,10 +44,10 @@
<Button type="primary" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="search">{{
$t('message.linkis.ipListManagement.search')
}}</Button>
- <Button type="primary" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="clearSearch">{{
+ <Button type="warning" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="clearSearch">{{
$t('message.linkis.ipListManagement.clear')
}}</Button>
- <Button type="primary" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="createTenant">{{
+ <Button type="success" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="createTenant">{{
$t('message.linkis.ipListManagement.create')
}}</Button>
</Col>
@@ -70,7 +70,7 @@
size="small"
show-elevator
:prev-text="$t('message.linkis.previousPage')"
:next-text="$t('message.linkis.nextPage')"
- style="margin: 10px; overflow: hidden; text-align: center;"
+ style="position: absoulute; bottom: 10px; overflow: hidden; text-align:
center;"
></Page>
<Modal
v-model="showCreateModal"
@@ -96,13 +96,13 @@
</Form>
<div style="margin-top: 60px">
<span style="width: 60px">{{
$t('message.linkis.ipListManagement.yourTagMapping') }}</span>
- <Input class="input" v-model="mapping" style="width: 240px;
margin-left: 10px" disabled></Input>
- <Button type="primary" @click="checkUserTag" style="margin-left:
10px">{{$t('message.linkis.ipListManagement.check')}}</Button>
+ <Input class="input" v-model="mapping" style="width: 220px;
margin-left: 10px" disabled></Input>
+ <Button type="primary" @click="checkUserTag" style="margin-left:
10px"
:loading="isRequesting">{{$t('message.linkis.ipListManagement.check')}}</Button>
</div>
</div>
<div slot="footer">
<Button
@click="cancel">{{$t('message.linkis.ipListManagement.Cancel')}}</Button>
- <Button type="primary" :disabled="tagIsExist"
@click="addTenantTag">{{$t('message.linkis.ipListManagement.OK')}}</Button>
+ <Button type="primary" :disabled="tagIsExist" @click="addTenantTag"
:loading="isRequesting">{{$t('message.linkis.ipListManagement.OK')}}</Button>
</div>
</Modal>
</div>
@@ -236,6 +236,7 @@ export default {
totalPage: 0,
},
userName: '',
+ isRequesting: false,
}
},
computed: {
@@ -295,6 +296,7 @@ export default {
this.modalData.bussinessUser = this.userName;
},
async checkUserTag() {
+ if(this.isRequesting) return;
this.$refs.createTenantForm.validate(async (valid) => {
if(valid) {
const {user, creator} = this.modalData;
@@ -303,6 +305,7 @@ export default {
return;
}
try {
+ this.isRequesting = true
await
api.fetch("/configuration/user-ip-mapping/check-user-creator",
{
user,
@@ -313,9 +316,10 @@ export default {
}
this.tagIsExist = res.exist;
})
+ this.isRequesting = false
} catch (err) {
console.log(err);
- this.cancel();
+ this.isRequesting = false
}
}
else {
@@ -342,6 +346,7 @@ export default {
}
},
addTenantTag() {
+ if(this.isRequesting) return;
const target = this.mode === 'edit' ?
'/configuration/user-ip-mapping/update-user-ip' :
'/configuration/user-ip-mapping/create-user-ip'
this.$refs.createTenantForm.validate(async (valid) => {
if(valid) {
@@ -350,14 +355,16 @@ export default {
if(this.mode !== 'edit') {
this.page.pageNow = 1;
}
+ this.isRequesting = true
await api.fetch(target, this.modalData, "post").then(async (res)
=> {
console.log(res);
await this.getTableData();
this.cancel();
this.$Message.success(this.$t('message.linkis.ipListManagement.addSuccessful'));
});
+ this.isRequesting = false
} catch(err) {
- this.cancel();
+ this.isRequesting = false
console.log(err);
}
} else {
diff --git
a/linkis-web/src/apps/linkis/module/resourceManagement/engineConn.vue
b/linkis-web/src/apps/linkis/module/resourceManagement/engineConn.vue
index beceb44fc..de77bbdbb 100644
--- a/linkis-web/src/apps/linkis/module/resourceManagement/engineConn.vue
+++ b/linkis-web/src/apps/linkis/module/resourceManagement/engineConn.vue
@@ -121,11 +121,11 @@ export default {
pageNow: 1
},
columns: [
- {
- type: 'selection',
- width: 60,
- align: 'center'
- },
+ // {
+ // type: 'selection',
+ // width: 60,
+ // align: 'center'
+ // },
{
title: this.$t('message.linkis.tableColumns.engineInstance'),
key: 'serviceInstance',
diff --git
a/linkis-web/src/apps/linkis/module/rmExternalResourceProvider/index.vue
b/linkis-web/src/apps/linkis/module/rmExternalResourceProvider/index.vue
index e9bc78ebb..066959c3c 100644
--- a/linkis-web/src/apps/linkis/module/rmExternalResourceProvider/index.vue
+++ b/linkis-web/src/apps/linkis/module/rmExternalResourceProvider/index.vue
@@ -213,8 +213,8 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalDeleteFail')
})
}
- this.load()
})
+ this.load()
}
})
@@ -225,6 +225,7 @@ export default {
formData.config = JSON.stringify(formData.config)
if(this.modalAddMode=='add') {
add(formData).then((data)=>{
+ console.log(data)
if(data.result) {
this.$Message.success({
duration: 3,
@@ -236,22 +237,22 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalAddFail')
})
}
- this.load()
})
}else {
edit(formData).then((data)=>{
+ console.log(data)
if(data.result) {
this.$Message.success({
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditSuccess')
})
+ this.load()
}else{
this.$Message.success({
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditFail')
})
}
- this.load()
})
}
this.modalLoading=false
diff --git a/linkis-web/src/apps/linkis/module/tenantTagManagement/index.vue
b/linkis-web/src/apps/linkis/module/tenantTagManagement/index.vue
index 3dd5ebb8e..0496322d6 100644
--- a/linkis-web/src/apps/linkis/module/tenantTagManagement/index.vue
+++ b/linkis-web/src/apps/linkis/module/tenantTagManagement/index.vue
@@ -53,10 +53,10 @@
<Button type="primary" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="search">{{
$t('message.linkis.tenantTagManagement.search')
}}</Button>
- <Button type="primary" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="clearSearch">{{
+ <Button type="warning" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="clearSearch">{{
$t('message.linkis.tenantTagManagement.clear')
}}</Button>
- <Button type="primary" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="createTenant">{{
+ <Button type="success" class="button" :style="{width: '70px',
marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="createTenant">{{
$t('message.linkis.tenantTagManagement.create')
}}</Button>
</Col>
@@ -79,7 +79,7 @@
size="small"
show-elevator
:prev-text="$t('message.linkis.previousPage')"
:next-text="$t('message.linkis.nextPage')"
- style="margin: 10px; overflow: hidden; text-align: center;"
+ style="position: absoulute; bottom: 10px; overflow: hidden; text-align:
center;"
></Page>
<Modal
v-model="showCreateModal"
@@ -105,13 +105,13 @@
</Form>
<div style="margin-top: 60px">
<span style="width: 60px">{{
$t('message.linkis.tenantTagManagement.yourTagMapping') }}</span>
- <Input class="input" v-model="mapping" style="width: 240px;
margin-left: 10px" disabled></Input>
- <Button type="primary" @click="checkUserTag" style="margin-left:
10px">{{$t('message.linkis.tenantTagManagement.check')}}</Button>
+ <Input class="input" v-model="mapping" style="width: 220px;
margin-left: 10px" disabled></Input>
+ <Button type="primary" @click="checkUserTag" style="margin-left:
10px"
:loading="isRequesting">{{$t('message.linkis.tenantTagManagement.check')}}</Button>
</div>
</div>
<div slot="footer">
<Button
@click="cancel">{{$t('message.linkis.tenantTagManagement.Cancel')}}</Button>
- <Button type="primary" :disabled="tagIsExist"
@click="addTenantTag">{{$t('message.linkis.tenantTagManagement.OK')}}</Button>
+ <Button type="primary" :disabled="tagIsExist" @click="addTenantTag"
:loading="isRequesting">{{$t('message.linkis.tenantTagManagement.OK')}}</Button>
</div>
</Modal>
</div>
@@ -248,6 +248,7 @@ export default {
totalPage: 0,
},
userName: '',
+ isRequesting: false
}
},
computed: {
@@ -309,6 +310,7 @@ export default {
this.modalData.bussinessUser = this.userName;
},
async checkUserTag() {
+ if(this.isRequesting) return;
this.$refs.createTenantForm.validate(async (valid) => {
if(valid) {
const {user, creator} = this.modalData;
@@ -317,6 +319,7 @@ export default {
return;
}
try {
+ this.isRequesting = true
await api.fetch("/configuration/tenant-mapping/check-user-creator",
{
user,
@@ -327,9 +330,10 @@ export default {
}
this.tagIsExist = res.exist;
})
+ this.isRequesting = false
} catch (err) {
console.log(err);
- this.cancel();
+ this.isRequesting = false
}
}
else {
@@ -357,6 +361,7 @@ export default {
this.$refs.createTenantForm.resetFields();
},
addTenantTag() {
+ if(this.isRequesting) return;
const target = this.mode === 'edit' ?
'/configuration/tenant-mapping/update-tenant' :
'/configuration/tenant-mapping/create-tenant'
this.$refs.createTenantForm.validate(async (valid) => {
if(valid) {
@@ -365,14 +370,16 @@ export default {
if(this.mode !== 'edit') {
this.page.pageNow = 1;
}
+ this.isRequesting = true;
await api.fetch(target, this.modalData, "post").then(async (res)
=> {
console.log(res);
await this.getTableData();
this.cancel();
this.$Message.success(this.$t('message.linkis.tenantTagManagement.addSuccessful'));
});
+ this.isRequesting = false;
} catch(err) {
- this.cancel();
+ this.isRequesting = false;
console.log(err);
}
} else {
diff --git a/linkis-web/src/apps/linkis/module/udfManager/index.vue
b/linkis-web/src/apps/linkis/module/udfManager/index.vue
index 289e03390..a1baddf8b 100644
--- a/linkis-web/src/apps/linkis/module/udfManager/index.vue
+++ b/linkis-web/src/apps/linkis/module/udfManager/index.vue
@@ -227,6 +227,7 @@ export default {
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditSuccess')
})
+ this.load()
}else{
this.$Message.success({
duration: 3,
diff --git a/linkis-web/src/apps/linkis/module/udfTree/index.vue
b/linkis-web/src/apps/linkis/module/udfTree/index.vue
index 8f62c6fdc..5660b1184 100644
--- a/linkis-web/src/apps/linkis/module/udfTree/index.vue
+++ b/linkis-web/src/apps/linkis/module/udfTree/index.vue
@@ -241,8 +241,8 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalDeleteFail')
})
}
- this.load()
})
+ this.load()
}
})
@@ -264,7 +264,6 @@ export default {
content:
this.$t('message.linkis.basedataManagement.modal.modalAddFail')
})
}
- this.load()
})
}else {
edit(formData).then((data)=>{
@@ -274,13 +273,13 @@ export default {
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditSuccess')
})
+ this.load()
}else{
this.$Message.success({
duration: 3,
content:
this.$t('message.linkis.basedataManagement.modal.modalEditFail')
})
}
- this.load()
})
}
this.modalLoading=false
diff --git a/linkis-web/src/apps/linkis/router.js
b/linkis-web/src/apps/linkis/router.js
index ea6b7a10b..e644f97ef 100644
--- a/linkis-web/src/apps/linkis/router.js
+++ b/linkis-web/src/apps/linkis/router.js
@@ -277,7 +277,27 @@ export default [
title: 'EnginePluginManagement',
publicPage: true,
},
- }
+ },
+ {
+ name: 'codeQuery',
+ path: 'codeQuery',
+ component: () =>
+ import('./module/codeQuery/index.vue'),
+ meta: {
+ title: 'codeQuery',
+ publicPage: true,
+ },
+ },
+ {
+ name: 'codeDetail',
+ path: 'codeDetail',
+ component: () =>
+ import('./module/codeQuery/codeDetail/index.vue'),
+ meta: {
+ title: 'codeDetail',
+ publicPage: true,
+ },
+ },
],
},
]
diff --git a/linkis-web/src/apps/linkis/view/linkis/index.vue
b/linkis-web/src/apps/linkis/view/linkis/index.vue
index 15d2d573c..9c84de71c 100644
--- a/linkis-web/src/apps/linkis/view/linkis/index.vue
+++ b/linkis-web/src/apps/linkis/view/linkis/index.vue
@@ -53,7 +53,7 @@
v-for="(item3, index3) in (item.key === '1-9' ?
urmSideNavList.children : item.key === '1-8'
?datasourceNavList.children:basedataNavList.children)"
:key="index3"
@on-click="clickToRoute">
- <div v-if="isLogAdmin ? true : item3.key === '1-8-1' ||
item3.key === '1-9-2' || item3.key === '1-9-3'">
+ <div v-if="isLogAdmin ? true : item3.key === '1-8-1' ||
item3.key === '1-9-2' || item3.key === '1-9-3' || item3.key === '1-9-1'">
<Cell
:key="index3"
:class="{ crrentItem: crrentItem === item3.key }"
@@ -73,6 +73,7 @@
<Breadcrumb v-if="$route.name !== 'resource' && $route.name !==
'resourceEngineConnList'">
<BreadcrumbItem :to="skipPath"><Icon v-if="skipPath"
type="ios-arrow-back" size="16" color="#338cf0"></Icon>{{ breadcrumbSecondName
}}</BreadcrumbItem>
<BreadcrumbItem v-if="$route.name === 'viewHistory'">{{
$route.query.taskID }}</BreadcrumbItem>
+ <BreadcrumbItem v-if="$route.name === 'codeDetail'">{{
$route.query.id }}</BreadcrumbItem>
<template v-if="$route.name === 'EngineConnList'">
<BreadcrumbItem>{{ $route.query.instance }}</BreadcrumbItem>
<BreadcrumbItem>EngineConnList</BreadcrumbItem>
@@ -115,6 +116,7 @@ export default {
{ key: '1-8', name:
this.$t('message.linkis.sideNavList.function.children.dataSourceManage'),
showSubMenu: true },
{ key: '1-9', name:
this.$t('message.linkis.sideNavList.function.children.udfFunctionTitle'), path:
'/console/urm/udfManagement', showSubMenu: true},
{ key: '1-10', name:
this.$t('message.linkis.sideNavList.function.children.basedataManagement'),
showSubMenu: true},
+ { key: '1-11', name:
this.$t('message.linkis.sideNavList.function.children.codeQuery'), path:
'/console/codeQuery' },
],
},
datasourceNavList: {
@@ -125,7 +127,7 @@ export default {
children: [
{key: '1-8-1', name:
this.$t('message.linkis.sideNavList.function.children.dataSourceManage'), path:
'/console/dataSource' },
{key: '1-8-2', name:
this.$t('message.linkis.sideNavList.function.children.datasourceEnv'), path:
'/console/datasourceEnv' },
- {key: '1-8-3', name:
this.$t('message.linkis.sideNavList.function.children.datasourceType'), path:
'/console/datasourceType' },
+ // {key: '1-8-3', name:
this.$t('message.linkis.sideNavList.function.children.datasourceType'), path:
'/console/datasourceType' },
// {key: '1-8-4', name:
this.$t('message.linkis.sideNavList.function.children.datasourceAccess'), path:
'/console/datasourceAccess' },
{key: '1-8-5', name:
this.$t('message.linkis.sideNavList.function.children.datasourceTypeKey'),
path: '/console/datasourceTypeKey' },
]
@@ -140,8 +142,8 @@ export default {
{key: '1-10-2', name:
this.$t('message.linkis.sideNavList.function.children.errorCode'), path:
'/console/errorCode' },
{key: '1-10-3', name:
this.$t('message.linkis.sideNavList.function.children.rmExternalResourceProvider'),
path: '/console/rmExternalResourceProvider'},
{key: '1-10-4', name:
this.$t('message.linkis.sideNavList.function.children.EnginePluginManagement'),
path: '/console/EnginePluginManagement' },
- // {key: '1-10-5', name:
this.$t('message.linkis.sideNavList.function.children.tenantTagManagement'),
path: '/console/tenantTagManagement' },
- // {key: '1-10-6', name:
this.$t('message.linkis.sideNavList.function.children.ipListManagement'), path:
'/console/ipListManagement' },
+ {key: '1-10-5', name:
this.$t('message.linkis.sideNavList.function.children.tenantTagManagement'),
path: '/console/tenantTagManagement' },
+ {key: '1-10-6', name:
this.$t('message.linkis.sideNavList.function.children.ipListManagement'), path:
'/console/ipListManagement' },
]
},
@@ -153,17 +155,18 @@ export default {
children: [
{key: '1-9-1', name:
this.$t('message.linkis.sideNavList.function.children.udfFunctionManage'),
path: '/console/urm/udfManagement'},
{key: '1-9-2', name:
this.$t('message.linkis.sideNavList.function.children.functionManagement'),
path: '/console/urm/functionManagement'},
- {key: '1-9-3', name:
this.$t('message.linkis.sideNavList.function.children.udfManager'), path:
'/console/udfManager' },
- {key: '1-9-4', name:
this.$t('message.linkis.sideNavList.function.children.udfTree'), path:
'/console/udfTree' },
+ // {key: '1-9-3', name:
this.$t('message.linkis.sideNavList.function.children.udfManager'), path:
'/console/udfManager' },
+ // {key: '1-9-4', name:
this.$t('message.linkis.sideNavList.function.children.udfTree'), path:
'/console/udfTree' },
]
},
- breadcrumbSecondName:
this.$t('message.linkis.sideNavList.function.children.globalHistory')
+ breadcrumbSecondName:
this.$t('message.linkis.sideNavList.function.children.globalHistory'),
};
},
computed: {
skipPath() {
let path = '';
if(this.$route.name === 'viewHistory') path = '/console';
+ if(this.$route.name === 'codeDetail') path = '/console/codeQuery';
if(this.$route.name === 'EngineConnList') path = '/console/ECM';
return path;
},
@@ -180,6 +183,10 @@ export default {
this.breadcrumbSecondName = element.name
}
});
+ if(this.$route.name === 'codeDetail') {
+ this.breadcrumbSecondName =
this.$t('message.linkis.sideNavList.function.children.codeQuery')
+ this.crrentItem = '1-11'
+ }
// Get whether it is a historical administrator(获取是否是历史管理员权限)
api.fetch('/jobhistory/governanceStationAdmin', 'get').then((res) => {
this.isLogAdmin = res.admin;
@@ -200,8 +207,38 @@ export default {
this.sideNavList.children[8].showSubMenu =
!this.sideNavList.children[8].showSubMenu;
return;
}
- index = index.split('-')[0] + '-' + index.split('-')[1]; //Prevent
tertiary menus from appearing(防止出现三级菜单)
- const activedCellParent = this.sideNavList;
+ // index = index.split('-')[0] + '-' + index.split('-')[1]; //防止出现三级菜单
+ let activedCellParent
+ switch (index) {
+ case '1-8-1':
+ activedCellParent = this.datasourceNavList
+ this.sideNavList.children[6].showSubMenu = false;
+ break;
+ case '1-8-2':
+ activedCellParent = this.datasourceNavList
+ this.sideNavList.children[6].showSubMenu = false;
+ break;
+ case '1-9-1':
+ activedCellParent = this.urmSideNavList
+ this.sideNavList.children[7].showSubMenu = false;
+ break;
+ case '1-9-2':
+ activedCellParent = this.urmSideNavList
+ this.sideNavList.children[7].showSubMenu = false;
+ break;
+ case '1-10-5':
+ activedCellParent = this.basedataNavList
+ this.sideNavList.children[8].showSubMenu = false;
+ break;
+ case '1-10-6':
+ activedCellParent = this.basedataNavList
+ this.sideNavList.children[8].showSubMenu = false;
+ break;
+ default:
+ activedCellParent = this.sideNavList
+ break;
+ }
+ // const activedCellParent = this.navListMap[index] || this.sideNavList;
this.crrentItem = index;
const activedCell = activedCellParent.children.find((item) => item.key
=== index);
this.breadcrumbFirstName = activedCellParent.name;
@@ -240,8 +277,8 @@ export default {
});
} else if ((to.name === 'Console' && from.name === 'Home') || (to.name ===
'Console' && from.name === 'Project') || (to.name === 'Console' && from.name
=== 'Workflow') || !from.name) {
const lastActiveConsole = storage.get('lastActiveConsole');
- // If it is historical details, refresh directly(如果为历史详情则直接刷新)
- if(to.name === 'viewHistory') return next();
+ // 如果为历史详情则直接刷新
+ if(to.name === 'viewHistory' || to.name === 'codeDetail') return next();
next((vm) => {
if (lastActiveConsole) {
if (lastActiveConsole.key === '1-9-1' || lastActiveConsole.key ===
'1-9-2') {
diff --git a/linkis-web/src/common/i18n/en.json
b/linkis-web/src/common/i18n/en.json
index d44976fb8..c6476f7c6 100644
--- a/linkis-web/src/common/i18n/en.json
+++ b/linkis-web/src/common/i18n/en.json
@@ -148,7 +148,7 @@
"formItems": {
"name": "Funtion Name",
"createUser": "Creator/Department",
- "updateTime": "Updated At",
+ "updateTime": "Updated at",
"useFormat": "Using Format",
"description": "Funtion Description"
}
@@ -218,8 +218,8 @@
"WZJBMC": "Unknown Script Name",
"ZHJB": "Visualis Script",
"GZLJB": "Workflow Script",
- "YQRW": "Engine And Task",
- "JSYQRW": "Terminate Engine And Tasks",
+ "YQRW": "Engine and Task",
+ "JSYQRW": "Terminate Engine and Tasks",
"CKJBXX": "View Script Information",
"FZJBXX": "Copy Script Information",
"QXZYTJL": "Please choose a record!",
@@ -227,14 +227,14 @@
"WHQDENGINE": "Failed to get engineInstance, please contact admin for
investigation or waiting!",
"YXTS": "Execution Hints",
"YJTZZXJB": "Stopped Executing Script",
- "JSYQHRWCG": "Successfully Terminated Engine And Tasks",
+ "JSYQHRWCG": "Successfully Terminated Engine and Tasks",
"DKCG": "Successfully Open",
"JBFZDZTRB": "Copied script information to clipboard, please use
ctrl+v to paste!",
"XZDL": "Please choose a queue",
"ZYSYL": "Resource Consumption Rate",
"H": "Cores",
"NC": "Memory",
- "ZYSYPHB": "Ranking Of Resource Consumption",
+ "ZYSYPHB": "Ranking of Resource Consumption",
"ZW": "No data yet"
},
"headerNavBar": {
diff --git a/linkis-web/src/dss/view/layout.vue
b/linkis-web/src/dss/view/layout.vue
index 1d71aa914..8483dce68 100644
--- a/linkis-web/src/dss/view/layout.vue
+++ b/linkis-web/src/dss/view/layout.vue
@@ -79,7 +79,7 @@ export default {
setWaterMark() {
let userNameAndPass = storage.get('saveUserNameAndPass', 'local');
let watermark = null;
- const username = userNameAndPass.split('&')[0];
+ const username = userNameAndPass ? userNameAndPass.split('&')[0] : '';
if (username) {
watermark = username + ' ' + this.showTime(new Date());
Vue.prototype.$watermark.set(watermark)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]