diff --git a/package.json b/package.json index 5f21768b626863f4d667e4678dc7e33773916dc8..a30537fbd758f9127eee8235cc13b8c862b46bf9 100755 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@fullcalendar/core": "^6.1.11", "@fullcalendar/daygrid": "^6.1.11", "@fullcalendar/vue": "^6.1.11", - "@hpcc-js/wasm": "2.20.0", + "@hpcc-js/wasm": "2.22.4", "antlr4": "^4.13.0", "axios": "^1.7.9", "codemirror": "^5.65.18", diff --git a/src/resources/api/autoexec/job/time-job.js b/src/resources/api/autoexec/job/time-job.js index df530fefb1db3f39b8cf876a209dba9619a61c0e..bf1b4494c0367ae521a439de4345fce6a55cd4f8 100644 --- a/src/resources/api/autoexec/job/time-job.js +++ b/src/resources/api/autoexec/job/time-job.js @@ -24,6 +24,10 @@ const timeJob = { toggleAction(params) { // 更新激活状态 return axios.post('/api/rest/autoexec/schedule/isactive/update', params); + }, + test(params) { + // 测试 + return axios.post('/api/rest/autoexec/job/test', params); } }; diff --git a/src/resources/api/deploy/schedule/schedule.js b/src/resources/api/deploy/schedule/schedule.js index bf911f509a042853f04e8a9ddf7614449f8df14e..20103a682a6c93e046febc245ad6483ff93751d9 100644 --- a/src/resources/api/deploy/schedule/schedule.js +++ b/src/resources/api/deploy/schedule/schedule.js @@ -19,6 +19,10 @@ const schedule = { updateSchedule(params) { //启用/禁用定时作业 return axios.post('/api/rest/deploy/schedule/isactive/update', params); + }, + test(params) { + // 测试 + return axios.post('/api/rest/deploy/job/test', params); } }; export default schedule; diff --git a/src/resources/api/framework/index.js b/src/resources/api/framework/index.js index 867bb4256a8ab8f4c20433cee1749e2d97a3cb22..9fb60fdeeb24ef196500937799d347f2c79badeb 100644 --- a/src/resources/api/framework/index.js +++ b/src/resources/api/framework/index.js @@ -37,6 +37,7 @@ import extramenu from './extramenu/extramenu'; //附加菜单 import region from './region/region';//地域管理 import homepage from './homepage/homepage';//默认首页 import changelogaudit from './changelogaudit/changelogaudit';//数据库变更记录 +import log from './log/log';// 查看日志 export default { role, user, @@ -75,5 +76,6 @@ export default { extramenu, region, homepage, - changelogaudit + changelogaudit, + log }; diff --git a/src/resources/api/framework/log/log.js b/src/resources/api/framework/log/log.js new file mode 100644 index 0000000000000000000000000000000000000000..0cb7852c5963c0150650a9d33800f76995484a64 --- /dev/null +++ b/src/resources/api/framework/log/log.js @@ -0,0 +1,15 @@ +import axios from '../../http'; + +const log = { + getLogFileNameList(params) { + return axios.post('/api/rest/log/filename/list', params); + }, + getLogContent(params) { + return axios.post('/api/rest/log/content/get', params); + }, + updateLogLevel(params) { + return axios.post('/api/rest/logger/updatelevel', params); + } +}; + +export default log; diff --git a/src/resources/api/framework/schedule/schedule.js b/src/resources/api/framework/schedule/schedule.js index 2bad1fb2eb8278cc8c406c71d5f8a2d189f3b202..3099a05f7baa6c30c262158166b4e888e6d2199f 100644 --- a/src/resources/api/framework/schedule/schedule.js +++ b/src/resources/api/framework/schedule/schedule.js @@ -36,6 +36,10 @@ const job = { //获取内存的定时作业列表 searchMemoryJob(params) { return axios.post('/api/rest/scheduler/memory/search', params); + }, + //测试定时作业 + test(params) { + return axios.post('/api/rest/job/test', params); } }; export default job; diff --git a/src/resources/api/framework/server/server.js b/src/resources/api/framework/server/server.js index 364e199a8b5df5d070bd4a49ab96ef2cd47954c2..a7e25a889db1ab56454d0990687f44b2109ae8e1 100644 --- a/src/resources/api/framework/server/server.js +++ b/src/resources/api/framework/server/server.js @@ -1,8 +1,8 @@ import axios from '../../http'; const server = { - getServerList() { - return axios.post('api/rest/server/list', {}); + getServerList(param) { + return axios.post('api/rest/server/list', param); }, saveServer(param) { return axios.post('api/rest/server/save', param); diff --git a/src/resources/api/framework/tagent/tagent.js b/src/resources/api/framework/tagent/tagent.js index 1b2ac3d6125803571de8ea5b93a126ea371ba3ac..df62a8a93f59c1a626212789ec2a6d65d96b89e7 100644 --- a/src/resources/api/framework/tagent/tagent.js +++ b/src/resources/api/framework/tagent/tagent.js @@ -7,6 +7,10 @@ const tagent = { deleteTagents(params) { return axios.post('/api/rest/tagent/delete', params); }, + //批量删除tagent + batchDeleteTagent(params) { + return axios.post('/api/rest/tagent/delete/batch', params); + }, //查看密码 getAccountById(params) { return axios.post('api/rest/tagent/account/get', params); diff --git a/src/resources/assets/css/common.less b/src/resources/assets/css/common.less index 18036cd5e00e13c6ebfbd8d6e838328c4306164f..3201b59443846c2ce83b0c19773a41598d22e5f5 100644 --- a/src/resources/assets/css/common.less +++ b/src/resources/assets/css/common.less @@ -612,6 +612,27 @@ html { } } } + &.border-tabs { + > .@{iv-prev}tabs-bar { + margin-bottom: 0px; + .@{iv-prev}tabs-tab { + border: 1px solid; + line-height: 32px; + height: 32px; + margin-right: 4px; + border-top-left-radius: @item-border-radius; + border-top-right-radius: @item-border-radius; + padding: 0px @space-normal; + } + .@{iv-prev}tabs-ink-bar { + display: none; + } + } + .@{iv-prev}tabs-content { + border-radius: @block-border-radius; + border-top-left-radius: 0px; + } + } &.@{iv-prev}tabs-card { > .@{iv-prev}tabs-bar { diff --git a/src/resources/assets/css/theme.less b/src/resources/assets/css/theme.less index 4d5f11d6c636ca6a702b9a1440d16f8f19c21cf4..5b3fc45e98b037b0d949679020539dba0ddd20f9 100644 --- a/src/resources/assets/css/theme.less +++ b/src/resources/assets/css/theme.less @@ -1383,6 +1383,9 @@ background-color: var(--primary-grey, @primary-grey); } + .bg-stripe { + background-color: @table-stripe-color; + } .item-selected { background-color: var(--primary-grey, @primary-grey); color: var(--primary-color, @primary-color); @@ -3448,6 +3451,31 @@ // background: @op-color; } } + &.border-tabs { + > .ivu-tabs-bar { + .ivu-tabs-tab { + background-color: @tab-bar-bg; + color: @title-color; + border-color: var(--border-color, @border-color-base); + + &.ivu-tabs-tab-active { + background-color: @op-color; + color: var(--primary-color, @primary-color); + border-color: var(--border-color, @border-color-base) !important; + } + } + } + + .ivu-tabs-nav-container { + margin-top: 0px; + margin-bottom: 0px; + } + + .ivu-tabs-content { + background-color: @op-color; + border: 1px solid var(--border-color, @border-color-base); + } + } &.block-span { > .ivu-tabs-bar { @@ -3621,6 +3649,7 @@ .@{iv-prev}collapse { background-color: @table-stripe-color; + border-color: var(--border-color, @border-color-base); } .@{iv-prev}collapse-simple { background-color: transparent; diff --git a/src/resources/assets/js/util.js b/src/resources/assets/js/util.js index a13b5964f7b9555c93653f09de65b5ef39523045..e81b3b329d5273bb5c643937a298cc0e8f1bf6f2 100644 --- a/src/resources/assets/js/util.js +++ b/src/resources/assets/js/util.js @@ -72,6 +72,7 @@ setInterval(callback, delay, alwaysRun = false) 定时器 sortByObj(obj) 对象的属性按首字母排序 getUnicodeByClassName(className) 获取className的unicode编码 convertWoff2ToBase64 将woff2文件转换为base64 +deepRemoveEmptyValues(data) 深度移除对象中的空值 */ import _ from 'lodash'; import store from '@/resources/store'; @@ -1225,6 +1226,22 @@ const methods = { font-display: swap; max-width: 16px; }`; - } + }, + deepRemoveEmptyValues(obj) { //删除数据里的空值 + let _this = this; + const result = _this.deepClone(obj); // 深拷贝对象以避免修改原始对象 + for (const key in result) { + if (result.hasOwnProperty(key)) { + if (_this.isEmpty(result[key])) { // 检查并删除空值 + delete result[key]; // 删除空值属性 + } else if (_.isArray(result[key])) { // 处理数组内的空值元素 + result[key] = result[key].filter(item => !_this.isEmpty(item)); // 过滤掉数组中的空值元素 + }else if (_.isObject(result[key])) { // 如果是对象 + result[key] = _this.deepRemoveEmptyValues(result[key]); // 递归处理深层对象 + } + } + } + return result; + }, }; export default methods; diff --git a/src/resources/assets/languages/dialog/en.json b/src/resources/assets/languages/dialog/en.json index ca0950e21ed2ad66923f5264c660a22c973c14d7..b2a44a5235800b8fb01184b0552d9af910d6a4c7 100644 --- a/src/resources/assets/languages/dialog/en.json +++ b/src/resources/assets/languages/dialog/en.json @@ -41,7 +41,8 @@ "actionconfirm": "Operation confirmation", "editconfirm": "Edit confirmation", "canceleditconfirm": "Exit editing confirmation", - "lockconfirm": "Lock Confirmation" + "lockconfirm": "Lock Confirmation", + "testconfirm": "TEST confirmation" }, "content": { "pauseconfirm": "Are you sure to pause {target}?", @@ -86,6 +87,7 @@ "closecomfirm": "Are you sure to close this {target}?", "opencomfirm": "Are you sure to open this {target}?", "canceleditconfirm": "Are you sure to exit editing and unlock the current schema diagram?", - "lockconfirm": "Are you sure you want to lock the current {target}?" + "lockconfirm": "Are you sure you want to lock the current {target}?", + "testconfirm": "Are you sure to test the current {target}" } } \ No newline at end of file diff --git a/src/resources/assets/languages/dialog/zh.json b/src/resources/assets/languages/dialog/zh.json index 58b166efa4df63a54a2c3951db8d322361e50716..1627ddd2a3a90077e703c28e1d0f46098625dddf 100644 --- a/src/resources/assets/languages/dialog/zh.json +++ b/src/resources/assets/languages/dialog/zh.json @@ -41,7 +41,8 @@ "actionconfirm": "操作确认", "editconfirm": "编辑确认", "canceleditconfirm": "退出编辑确认", - "lockconfirm": "锁定确认" + "lockconfirm": "锁定确认", + "testconfirm": "测试确认" }, "content": { "pausecomfirm": "是否确认暂停当前{target}?", @@ -86,6 +87,7 @@ "closecomfirm": "是否确认关闭当前{target}?", "opencomfirm": "是否确认打开当前{target}?", "canceleditconfirm": "是否确认退出编辑并解除锁定当前架构图?", - "lockconfirm": "是否确认锁定当前{target}?" + "lockconfirm": "是否确认锁定当前{target}?", + "testconfirm": "是否确认测试当前{target}" } -} +} \ No newline at end of file diff --git a/src/resources/assets/languages/page/en.json b/src/resources/assets/languages/page/en.json index e86bb39eaf6685d2f844a083f56bdc208f26be91..aa34785c660052a328bab9cae9d57ee8f8515db6 100644 --- a/src/resources/assets/languages/page/en.json +++ b/src/resources/assets/languages/page/en.json @@ -1076,5 +1076,7 @@ "autoexecbatchround": "in batches", "autoexecparall": "Concurrency", "autoexecparallel": "Concurrent settings", - "paramkeyword": "Participate in search" + "paramkeyword": "Participate in search", + "loglevel": "log level", + "bluegreen": "Blue green execution" } \ No newline at end of file diff --git a/src/resources/assets/languages/page/zh.json b/src/resources/assets/languages/page/zh.json index fe13d332d3b55176dbe5a742736691b035b07285..6a19d149c036c093d5083f92a5cf8b4a1a4ee5b2 100644 --- a/src/resources/assets/languages/page/zh.json +++ b/src/resources/assets/languages/page/zh.json @@ -1078,5 +1078,7 @@ "autoexecbatchround": "分批", "autoexecparall": "并发", "autoexecparallel": "并发设置", - "paramkeyword": "入参搜索" + "paramkeyword": "入参搜索", + "loglevel": "日志级别", + "bluegreen": "蓝绿执行" } \ No newline at end of file diff --git a/src/resources/assets/languages/router/en.json b/src/resources/assets/languages/router/en.json index cc1a64b3e6c1eb0c88356121b1dc06275f4d2da3..22778a4b8228a6d573ee6710c0f950453b350db5 100644 --- a/src/resources/assets/languages/router/en.json +++ b/src/resources/assets/languages/router/en.json @@ -170,7 +170,8 @@ "license": "License Management", "extramenu": "Menu management", "homepage": "default page ", - "changelogaudit": "Database Change Log" + "changelogaudit": "Database Change Log", + "log": "view log" }, "knowledge": { "knowledgedetail": "entry details", diff --git a/src/resources/assets/languages/router/zh.json b/src/resources/assets/languages/router/zh.json index 9d4626d540198177c65f3a64000b27728f8bc0b9..0e70111e70dc26e17bacafb9fe3b6ceaab5ea4f3 100644 --- a/src/resources/assets/languages/router/zh.json +++ b/src/resources/assets/languages/router/zh.json @@ -170,7 +170,8 @@ "license": "许可管理", "extramenu": "菜单管理", "homepage": "默认首页", - "changelogaudit": "数据库变更记录" + "changelogaudit": "数据库变更记录", + "log": "查看日志" }, "knowledge": { "knowledgedetail": "词条详情", diff --git a/src/resources/assets/languages/term/en.json b/src/resources/assets/languages/term/en.json index cb1cf8604cfc46b6de0cf6ae92c0e2cb95380cfc..1f4d07ac5207ae2f2932f128f7101001c49ed735 100644 --- a/src/resources/assets/languages/term/en.json +++ b/src/resources/assets/languages/term/en.json @@ -910,7 +910,9 @@ "isfirenext": "Do you want to activate the next group", "inputnodelimit": "The quantity cannot exceed 1000", "parall": "Concurrent quantity", - "paralldesc": "Execute the execution targets in order of concurrency." + "paralldesc": "Execute the execution targets in order of concurrency.", + "jobrecord": "Automated job recording", + "jobcount": "Number of automated tasks" }, "framework": { "roleauth": "Authorize immediately after creating the role", @@ -1353,7 +1355,8 @@ "tagentuploadupgradepkg": "Upload upgrade package", "versionremarks": "Version Remarks", "heartbeaturl": "Backend server address", - "runnergrouptips": "The request for login authentication needs to carry a header as a rule expression (note that the header parameter in the expression must be all lowercase and the prefix must be {prefix}). If the value of the expression after execution is true, the executor group will take effect, and false and syntax exceptions will not take effect. For example:" + "runnergrouptips": "The request for login authentication needs to carry a header as a rule expression (note that the header parameter in the expression must be all lowercase and the prefix must be {prefix}). If the value of the expression after execution is true, the executor group will take effect, and false and syntax exceptions will not take effect. For example:", + "batchdeletetagenttooltip": "Tagent in connected state cannot be deleted" }, "knowledge": { "document": "Document", @@ -2156,7 +2159,10 @@ "blueSet": "Blue Green", "ismodified": "Modified", "presetrunnergroup": "Preset actuator group", - "testrunnerdesc": "If not specified, actuators will be automatically assigned based on IP matching of actuator groups according to network segments" + "testrunnerdesc": "If not specified, actuators will be automatically assigned based on IP matching of actuator groups according to network segments", + "jobcount": "Number of published assignments", + "jobrecord": "Publish homework records", + "notapplyallexecuteauth": "You do not have the execution permission for the current application" }, "inspect": { "alarmprompt": "Alarm Prompt", diff --git a/src/resources/assets/languages/term/zh.json b/src/resources/assets/languages/term/zh.json index 63b7cdb88dfe5196026bddce4e7b2c6404f1d70a..7e901aa7d39119a7e4f8df7e761c831168510fb1 100644 --- a/src/resources/assets/languages/term/zh.json +++ b/src/resources/assets/languages/term/zh.json @@ -910,7 +910,9 @@ "isfirenext": "是否激活下一个组", "inputnodelimit": "数量不能大于1000", "parall": "并发数量", - "paralldesc": "将执行目标按并发数量先后执行。" + "paralldesc": "将执行目标按并发数量先后执行。", + "jobrecord": "自动化作业记录", + "jobcount": "自动化作业数" }, "framework": { "roleauth": "创建完角色立即授权", @@ -1353,7 +1355,8 @@ "tagentuploadupgradepkg": "上传升级包", "versionremarks": "版本备注", "heartbeaturl": "后端服务器地址", - "runnergrouptips": "登录认证的请求需要携带Header做规则表达式(注意表达式中header参数全小写,且前缀必须为{prefix}),如果表达式执行后的值为true则该执行器组生效,false和语法异常都不生效。如:" + "runnergrouptips": "登录认证的请求需要携带Header做规则表达式(注意表达式中header参数全小写,且前缀必须为{prefix}),如果表达式执行后的值为true则该执行器组生效,false和语法异常都不生效。如:", + "batchdeletetagenttooltip": "已连接状态的tagent不能删除" }, "knowledge": { "document": "文档", @@ -2153,7 +2156,10 @@ "blueSet": "蓝绿", "ismodified": "已修改", "presetrunnergroup": "预设执行器组", - "testrunnerdesc": "如果不指定则会通过ip根据网段匹配执行器组自动分配执行器" + "testrunnerdesc": "如果不指定则会通过ip根据网段匹配执行器组自动分配执行器", + "jobcount": "发布作业数", + "jobrecord": "发布作业记录", + "notapplyallexecuteauth": "您没有当前应用的执行权限" }, "inspect": { "alarmprompt": "告警提示", diff --git a/src/resources/plugins/TsForm/TsForm.vue b/src/resources/plugins/TsForm/TsForm.vue index b4fd01a401c83e429947a265a31866b4017d58ff..3baf0ed2a49ec95c862969e9410ccf0ffdd13f34 100755 --- a/src/resources/plugins/TsForm/TsForm.vue +++ b/src/resources/plugins/TsForm/TsForm.vue @@ -303,6 +303,8 @@ export default { //主要用来回显input框的数据 item.width = item.width || _this.width; item.theme = _this.$utils.deepClone(_this.theme); + item.readonly = item.readonly || _this.readonly; + item.disabled = item.disabled || _this.disabled; $handler = h(ITEMTYPELIST[item.type], { key: item.name, props: item, diff --git a/src/resources/plugins/TsForm/TsFormInput.vue b/src/resources/plugins/TsForm/TsFormInput.vue index 48d964935011f282bae0201222c8d9e878a5222e..e8d1e4573988e4190c6266a67cb7173a913b3c42 100755 --- a/src/resources/plugins/TsForm/TsFormInput.vue +++ b/src/resources/plugins/TsForm/TsFormInput.vue @@ -2,7 +2,20 @@
- {{ currentValue || currentValue === 0 ? currentValue : '-' }} +
{ + return currentValue || currentValue === 0 ? currentValue : '-'; + }; } }, watch: { diff --git a/src/resources/plugins/TsSheet/TsSheet.vue b/src/resources/plugins/TsSheet/TsSheet.vue index 4068f56712f32215fa42cdf2f0ba7021cf9cee67..462826c310a8c994a4ad0dec82f4a5dbdff99be8 100644 --- a/src/resources/plugins/TsSheet/TsSheet.vue +++ b/src/resources/plugins/TsSheet/TsSheet.vue @@ -1167,9 +1167,9 @@ export default { //根据联动配置初始化watch initReactionWatch() { this.needWatch = false; - if (this.config.reaction) { - for (let key in this.config.reaction) { - if (this.config.reaction[key].some(d => !this.$utils.isEmpty(d)) > 0) { + if (this.reaction) { + for (let key in this.reaction) { + if (this.reaction[key].some(d => !this.$utils.isEmpty(d)) > 0) { this.needWatch = true; break; } @@ -1182,9 +1182,8 @@ export default { this.$nextTick(() => { const newVal = newValue && JSON.parse(newValue); const oldVal = oldValue && JSON.parse(oldValue); - - for (let key in this.config.reaction) { - this.config.reaction[key].forEach(reaction => { + for (let key in this.reaction) { + this.reaction[key].forEach(reaction => { if (this.mode !== 'edit' && reaction.rows && reaction.rows.length > 0) { const reactionResult = this.executeReaction(reaction, newVal, oldVal); if (key === 'hiderow') { @@ -1780,9 +1779,9 @@ export default { }, //行是否有联动设置 hasReaction(index) { - if (this.config.reaction) { - for (let key in this.config.reaction) { - const reactionList = this.config.reaction[key]; + if (this.reaction) { + for (let key in this.reaction) { + const reactionList = this.reaction[key]; if (reactionList && reactionList.length > 0) { for (let i = 0; i < reactionList.length; i++) { const reaction = reactionList[i]; @@ -1796,9 +1795,9 @@ export default { return false; }, isHideRow(index) { - if (this.config.reaction && this.config.reaction.hiderow) { - for (let i = 0; i < this.config.reaction.hiderow.length; i++) { - const hiderow = this.config.reaction.hiderow[i]; + if (this.reaction && this.reaction.hiderow) { + for (let i = 0; i < this.reaction.hiderow.length; i++) { + const hiderow = this.reaction.hiderow[i]; if (hiderow.rows && hiderow.rows.length > 0 && hiderow.rows.includes(index)) { return true; } @@ -2104,9 +2103,9 @@ export default { conditionData() { return uuid => { const conditionData = {}; - if (this.config.reaction) { - for (let key in this.config.reaction) { - const reactionList = this.config.reaction[key]; + if (this.reaction) { + for (let key in this.reaction) { + const reactionList = this.reaction[key]; if (reactionList && reactionList.length > 0) { reactionList.forEach(reaction => { if (reaction && !this.$utils.isEmpty(reaction) && reaction.conditionGroupList) { @@ -2400,6 +2399,9 @@ export default { let {componentTopLeftTip = ''} = config; return componentTopLeftTip; }; + }, + reaction() { + return this.config && this.config.reaction; } }, watch: { diff --git a/src/resources/plugins/TsSheet/form-item.vue b/src/resources/plugins/TsSheet/form-item.vue index f76674e0c5644f71134a93337e2ea6983c6aa9b7..57439642ff452751a2ae4fe492387954887eba8a 100644 --- a/src/resources/plugins/TsSheet/form-item.vue +++ b/src/resources/plugins/TsSheet/form-item.vue @@ -1,6 +1,5 @@ diff --git a/src/views/pages/autoexec/detail/jobDetail/phase/node-list.vue b/src/views/pages/autoexec/detail/jobDetail/phase/node-list.vue index d305994f634c214193d974ae21bc1847a1cd31a7..04cbada95e6ff34a59d9ecd08dc07872dbb64109 100644 --- a/src/views/pages/autoexec/detail/jobDetail/phase/node-list.vue +++ b/src/views/pages/autoexec/detail/jobDetail/phase/node-list.vue @@ -77,7 +77,7 @@ {{ $t('term.autoexec.parall') }}:{{ parallelCount }}
{{ $t('term.autoexec.parall') }}{{ $t('page.source') }}: {{ phaseData.roundCountFrom }}
-
{{ $t('term.autoexec.batchquantity') }}: {{ phaseData.roundCount }}
+
{{ $t('term.autoexec.batchquantity') }}: {{ roundCount }}
-
+
{ + this.$addWatchData(params); + return this.$api.autoexec.timeJob.saveTimeJob(params).then((res) => { if (res.Status == 'OK') { this.$Message.success(this.$t('message.savesuccess')); // 保存成功 this.$router.push({ @@ -256,10 +263,11 @@ export default { return this.$api.autoexec.timeJob.getTimeJob(param).then((res) => { if (res.Status == 'OK') { let data = res.Return; + let initData = {}; if (this.id) { for (let key in this.formSetting) { this.$set(this.formSetting[key], 'value', data[key]); - this.$set(this.initData, key, data[key]); + this.$set(initData, key, data[key]); } } if (!this.defaultCombopId) { @@ -267,7 +275,8 @@ export default { } this.config = data.config; this.isShow = true; - this.$set(this.initData, 'config', this.config); + this.$set(initData, 'config', this.config); + this.$addWatchData(initData); } }).finally(() => { this.isLoading = false; @@ -276,29 +285,7 @@ export default { }, filter: {}, computed: {}, - watch: {}, - beforeRouteLeave(to, from, next, url) { - let data = this.getToolParams(); - if (this.$utils.isSame(data, this.initData)) { - url ? this.$utils.gotoHref(url) : next(true); - } else { - let _this = this; - this.$utils.jumpDialog.call( - this, - { - save: { - fn: async vnode => { - return await _this.save(); - } - } - }, - to, - from, - next, - url - ); - } - } + watch: {} }; diff --git a/src/views/pages/framework/log/loglevel-edit.vue b/src/views/pages/framework/log/loglevel-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..2b5287890eb9a96649f385174f3d959278cd20d6 --- /dev/null +++ b/src/views/pages/framework/log/loglevel-edit.vue @@ -0,0 +1,112 @@ + + + diff --git a/src/views/pages/framework/router.js b/src/views/pages/framework/router.js index d751ed90edef816d4f829bb62350a844064562de..7e8531f34fa710ce8643c4d3826f967666da03af 100644 --- a/src/views/pages/framework/router.js +++ b/src/views/pages/framework/router.js @@ -61,6 +61,7 @@ const extramenuManage = () => import('./extramenu/extramenu-manage.vue'); //菜 const regionManage = () => import('./region/region-manage.vue');//地域管理 const homepageManage = () => import('./homepage/homepage-manage.vue');//首页管理 const changelogAuditManage = () => import('./changelogaudit/changelogaudit-manage.vue');//数据库变更记录 +const logManage = () => import('./log/log-manage.vue');//查看日志 import { $t } from '@/resources/init.js'; import { config } from './config.js'; @@ -754,7 +755,19 @@ let routerList = [ ismenu: true, icon: 'tsfont-formstaticlist', authority: 'ADMIN', - type: 'others' + type: 'healthcheck' + } + }, + { + path: '/log-manage', + name: 'logManage', + component: logManage, + meta: { + title: $t('router.framework.log'), + ismenu: true, + icon: 'tsfont-history', + authority: 'ADMIN', + type: 'healthcheck' } } ]; diff --git a/src/views/pages/framework/schedule/job-manage.vue b/src/views/pages/framework/schedule/job-manage.vue index 2b6d3d90f3c8913e0ab594ee383fa0ce71c0a12f..edfef5d8ada7bd658c25362b654567d1846e199a 100644 --- a/src/views/pages/framework/schedule/job-manage.vue +++ b/src/views/pages/framework/schedule/job-manage.vue @@ -86,10 +86,20 @@ @@ -294,6 +304,28 @@ export default { }); } }); + }, + testRow: function(row, handler) { + if (row.isActive == 1) { + return; + } + this.$createDialog({ + title: this.$t('dialog.title.testconfirm'), + content: this.$t('dialog.content.testconfirm', {target: row.name}), + btnType: 'primary', + 'on-ok': vnode => { + vnode.isShow = false; + let params = { jobUuid: row.uuid, jobHandlerClassName: handler}; + this.$api.framework.schedule + .test(params) + .then(res => { + if (res.Status == 'OK') { + this.$Message.success(this.$t('message.executesuccess')); + this.searchJob(1); + } + }); + } + }); } }, diff --git a/src/views/pages/framework/server/server-manage.vue b/src/views/pages/framework/server/server-manage.vue index 2c7916484732aba8a5de1ab7b073301b1226f161..6bd92535d699b6f03907cb988bab8edd77f97e38 100644 --- a/src/views/pages/framework/server/server-manage.vue +++ b/src/views/pages/framework/server/server-manage.vue @@ -3,7 +3,12 @@