From 8dc8e5293c4c8a2a64f1a914d5c521877c72f5a2 Mon Sep 17 00:00:00 2001 From: guoyuqi Date: Wed, 22 Dec 2021 10:11:10 +0800 Subject: [PATCH 01/34] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA)?= =?UTF-8?q?:=20tapd=E7=BC=BA=E9=99=B7=E6=A8=A1=E6=9D=BF=EF=BC=8C=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=A4=84=E7=90=86=E4=BA=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1009065 --user=郭雨琦 【ID1009065】【测试跟踪】tapd缺陷模板,编辑处理人问题 --- .../metersphere/base/mapper/ext/ExtIssuesMapper.xml | 3 +++ .../track/common/minder/TestCaseMinder.vue | 9 ++++++++- .../components/track/issue/IssueEditDetail.vue | 3 ++- frontend/src/network/Issue.js | 13 +++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtIssuesMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtIssuesMapper.xml index c5a69c1ef2..15a70c9dc2 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtIssuesMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtIssuesMapper.xml @@ -114,6 +114,9 @@ and issues.platform = #{request.platform} + + and issues.id = #{request.id} + diff --git a/frontend/src/business/components/track/common/minder/TestCaseMinder.vue b/frontend/src/business/components/track/common/minder/TestCaseMinder.vue index 3e4b4cf2ec..e0a0ad1323 100644 --- a/frontend/src/business/components/track/common/minder/TestCaseMinder.vue +++ b/frontend/src/business/components/track/common/minder/TestCaseMinder.vue @@ -41,6 +41,9 @@ import {addIssueHotBox, getSelectedNodeData, handleIssueAdd, handleIssueBatch} f import IssueRelateList from "@/business/components/track/case/components/IssueRelateList"; import TestPlanIssueEdit from "@/business/components/track/case/components/TestPlanIssueEdit"; import {getIssuesById} from "@/network/Issue"; + +const {getIssuesListById} = require("@/network/Issue"); +const {getCurrentWorkspaceId} = require("@/common/js/utils"); export default { name: "TestCaseMinder", components: {TestPlanIssueEdit, IssueRelateList, MsModuleMinder}, @@ -84,7 +87,11 @@ name: "TestCaseMinder", moveEnable() { // 如果不是默认的排序条件不能调换位置 return !this.condition.orders || this.condition.orders.length < 1; + }, + workspaceId(){ + return getCurrentWorkspaceId(); } + }, watch: { selectNode() { @@ -119,7 +126,7 @@ name: "TestCaseMinder", isNotDisableNode = true; } if (node.data.type === 'issue') { - getIssuesById(node.data.id, (data) => { + getIssuesListById(node.data.id, this.projectId,this.workspaceId,(data) => { data.customFields = JSON.parse(data.customFields); this.$refs.issueEdit.open(data); }); diff --git a/frontend/src/business/components/track/issue/IssueEditDetail.vue b/frontend/src/business/components/track/issue/IssueEditDetail.vue index ccc408e353..235ac0b441 100644 --- a/frontend/src/business/components/track/issue/IssueEditDetail.vue +++ b/frontend/src/business/components/track/issue/IssueEditDetail.vue @@ -165,7 +165,8 @@ export default { title: '', description: '', creator: null, - remark: null + remark: null, + tapdUsers:[] }, tapdUsers: [], zentaoUsers: [], diff --git a/frontend/src/network/Issue.js b/frontend/src/network/Issue.js index 68c987a530..2bac80bdd4 100644 --- a/frontend/src/network/Issue.js +++ b/frontend/src/network/Issue.js @@ -37,6 +37,19 @@ export function getIssuesById(id, callback) { return id ? baseGet('/issues/get/' + id, callback) : {}; } +export function getIssuesListById(id,projectId,workspaceId,callback) { + let condition ={ + id:id, + projectId : projectId, + workspaceId: workspaceId + }; + return post('issues/list/' + 1 + '/' + 10, condition, (response) => { + if (callback) { + callback(response.data.listObject[0]); + } + }); +} + export function getIssuesByPlanId(planId, callback) { return planId ? baseGet('/issues/plan/get/' + planId, callback) : {}; } From 808428a6ffa71716e7307fc2f6959480c2da37d5 Mon Sep 17 00:00:00 2001 From: song-tianyang Date: Wed, 22 Dec 2021 11:18:45 +0800 Subject: [PATCH 02/34] =?UTF-8?q?fix(=E9=A1=B9=E7=9B=AE=E6=8A=A5=E5=91=8A)?= =?UTF-8?q?:=20=E9=A1=B9=E7=9B=AE=E6=8A=A5=E5=91=8A=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 项目报告列表国际化优化 --- frontend/src/business/components/xpack | 2 +- frontend/src/i18n/en-US.js | 5 +++++ frontend/src/i18n/zh-CN.js | 5 +++++ frontend/src/i18n/zh-TW.js | 5 +++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/frontend/src/business/components/xpack b/frontend/src/business/components/xpack index a2a8dde5be..63b194c25f 160000 --- a/frontend/src/business/components/xpack +++ b/frontend/src/business/components/xpack @@ -1 +1 @@ -Subproject commit a2a8dde5beb470590e7860e9d4376a56ce41d791 +Subproject commit 63b194c25f43ef628a630ccf1ecba01dc65fd3bf diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index c279e76a2b..656a22fa8f 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -325,6 +325,11 @@ export default { send: "Send", save_as_draft: "Draft", }, + table: { + draft: "Draft", + sended: "Send", + send_error: "Send error", + }, project_report: { create_report: "Create report", report_name: "Report name", diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index 5993d04ee3..8300c48976 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -326,6 +326,11 @@ export default { send: "发送", save_as_draft: "保存草稿", }, + table: { + draft: "草稿箱", + sended: "已发送", + send_error: "发送失败", + }, project_report: { create_report: "创建报告", report_name: "报告名称", diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index 64c53a9f45..9bbecc0cf0 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -326,6 +326,11 @@ export default { send: "發送", save_as_draft: "保存草稿", }, + table: { + draft: "草稿箱", + sended: "已發送", + send_error: "發送失敗", + }, project_report: { create_report: "創建報告", report_name: "報告名稱", From af124898fab1bed7c14f754f792eafb9811bd909 Mon Sep 17 00:00:00 2001 From: song-tianyang Date: Wed, 22 Dec 2021 11:43:17 +0800 Subject: [PATCH 03/34] =?UTF-8?q?fix(=E6=8A=A5=E8=A1=A8=E7=BB=9F=E8=AE=A1)?= =?UTF-8?q?:=20=E6=8A=A5=E8=A1=A8=E7=BB=9F=E8=AE=A1echart=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E6=96=B9=E5=BC=8F=E5=9B=BD=E9=99=85=E5=8C=96=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 报表统计echart排序方式国际化优化 --- .../casecount/chart/TestCaseCountChart.vue | 2 +- .../track/chart/TestAnalysisChart.vue | 2 +- frontend/src/business/components/xpack | 2 +- frontend/src/i18n/en-US.js | 275 +++++++++--------- frontend/src/i18n/zh-CN.js | 1 + frontend/src/i18n/zh-TW.js | 1 + 6 files changed, 143 insertions(+), 140 deletions(-) diff --git a/frontend/src/business/components/reportstatistics/projectstatistics/casecount/chart/TestCaseCountChart.vue b/frontend/src/business/components/reportstatistics/projectstatistics/casecount/chart/TestCaseCountChart.vue index 17f3bffabb..b0cf4e2c66 100644 --- a/frontend/src/business/components/reportstatistics/projectstatistics/casecount/chart/TestCaseCountChart.vue +++ b/frontend/src/business/components/reportstatistics/projectstatistics/casecount/chart/TestCaseCountChart.vue @@ -73,7 +73,7 @@ export default { {id: 'pie', name: this.$t('commons.report_statistics.pie')} ], order: "", - orders: [{id: '', name: '默认排序'}, {id: 'desc', name: this.$t('commons.report_statistics.desc')}, { + orders: [{id: '', name: this.$t('commons.sort_default')}, {id: 'desc', name: this.$t('commons.report_statistics.desc')}, { id: 'asc', name: this.$t('commons.report_statistics.asc') }], diff --git a/frontend/src/business/components/reportstatistics/projectstatistics/track/chart/TestAnalysisChart.vue b/frontend/src/business/components/reportstatistics/projectstatistics/track/chart/TestAnalysisChart.vue index cc88b0abc2..ed759ebf94 100644 --- a/frontend/src/business/components/reportstatistics/projectstatistics/track/chart/TestAnalysisChart.vue +++ b/frontend/src/business/components/reportstatistics/projectstatistics/track/chart/TestAnalysisChart.vue @@ -53,7 +53,7 @@ chartType: "line", charts: [{id: 'line', name: this.$t('commons.report_statistics.line')}, {id: 'bar', name: this.$t('commons.report_statistics.bar')}], order: "", - orders: [{id: '', name: '默认排序'},{id: 'desc', name: this.$t('commons.report_statistics.desc')}, {id: 'asc', name: this.$t('commons.report_statistics.asc')}], + orders: [{id: '', name: this.$t('commons.sort_default')},{id: 'desc', name: this.$t('commons.report_statistics.desc')}, {id: 'asc', name: this.$t('commons.report_statistics.asc')}], loading: false, options: {}, } diff --git a/frontend/src/business/components/xpack b/frontend/src/business/components/xpack index 63b194c25f..ed6902f776 160000 --- a/frontend/src/business/components/xpack +++ b/frontend/src/business/components/xpack @@ -1 +1 @@ -Subproject commit 63b194c25f43ef628a630ccf1ecba01dc65fd3bf +Subproject commit ed6902f776faa1f04a732a6f92b825a32116b3a0 diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index 656a22fa8f..dcf4b40656 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -10,6 +10,7 @@ export default { excelFile: "Excel", xmindFile: "Xmind", default: "default", + sort_default: "Default", please_select_import_mode: 'Please select import mode', please_select_import_module: 'Please select import module', pass_rate: 'Pass rate', @@ -68,18 +69,18 @@ export default { input_limit: 'Within {0} and {1} characters', login: 'Sign In', welcome: 'One-stop open source continuous testing platform', - theme_color:'Theme color', + theme_color: 'Theme color', username: 'Username', password: 'Password', input_username: 'Please enter username', input_password: 'Please enter password', test: 'Test', create_time: 'Created Time', - update_user_id:'Updater ID', + update_user_id: 'Updater ID', update_time: 'Updated Time', delete_time: 'Delete Time', delete_user: 'Deleted by', - delete_user_id:'Deleted by id', + delete_user_id: 'Deleted by id', add: 'Add', preview: 'Preview', member: 'Member', @@ -398,20 +399,20 @@ export default { system_project: "Project", user_unit: "", workspace_unit: "", - dash_board:'DashBoard', - all_project:'All Project', - to_be_completed:'Unfinished', - pending_upgrade:'To be update', - information:'Information', - nick_name:'Nick name', - resourceId:'Resource ID', - num:'Number', - original_state:'Original State', - custom_num:'CustomNum', - version:'Version', - is_new:"Is new", - form_config:"Form config", - form_content:"Form content" + dash_board: 'DashBoard', + all_project: 'All Project', + to_be_completed: 'Unfinished', + pending_upgrade: 'To be update', + information: 'Information', + nick_name: 'Nick name', + resourceId: 'Resource ID', + num: 'Number', + original_state: 'Original State', + custom_num: 'CustomNum', + version: 'Version', + is_new: "Is new", + form_config: "Form config", + form_content: "Form content" }, login: { normal_Login: "Normal Login", @@ -432,25 +433,25 @@ export default { invalid: 'invalid', expired: 'expired', }, - workstation:{ + workstation: { dash_board: 'My DashBoard', upcoming: 'My Upcoming', focus: 'My Focus', creation: 'My Creation', - creation_case:'My Creation Case', - creation_issue:'My Creation Issue', + creation_case: 'My Creation Case', + creation_issue: 'My Creation Issue', creation_case_tip: 'No use case has been created yet, create it now', - creation_issue_tip:'No defects have been created yet, create them now', - table_name:{ - track_case:'Track Case', - track_plan:'Track Plan', - track_review:'Track Review', - track_issue:'Track Issue', - api_definition:'Api Definition', - api_automation:'Api Automation', - api_case:'Api Case', - performance:'Performance', - scenario_case:'Scenario Case' + creation_issue_tip: 'No defects have been created yet, create them now', + table_name: { + track_case: 'Track Case', + track_plan: 'Track Plan', + track_review: 'Track Review', + track_issue: 'Track Issue', + api_definition: 'Api Definition', + api_automation: 'Api Automation', + api_case: 'Api Case', + performance: 'Performance', + scenario_case: 'Scenario Case' } }, display: { @@ -516,7 +517,7 @@ export default { option_value_check: 'Please fill in the full option values', }, workspace: { - id:'Workspace ID', + id: 'Workspace ID', create: 'Create Workspace', update: 'Update Workspace', delete: 'Delete Workspace', @@ -637,12 +638,12 @@ export default { zentao_request: 'Zentao request', input_zentao_request: 'Please enter zentao request type', input_zentao_url: 'Please enter Zentao address, for example: http://xx.xx.xx.xx/zentao/', - zentao_info:'Zentao Information', - zentao_account:'Zentao Account', - zentao_password:'Zentao Password', - zentao_prompt_information:'This information is the username and password of the user who submitted the defect through ZenTao. If not filled in, the default information configured in the workspace will be used', - zentao_config_tip:"Refer to the value of $config->requestType in the ZenTao configuration file", - zentao_config_path:"Configuration file reference path: /opt/zbox/app/zentao/config/my.php", + zentao_info: 'Zentao Information', + zentao_account: 'Zentao Account', + zentao_password: 'Zentao Password', + zentao_prompt_information: 'This information is the username and password of the user who submitted the defect through ZenTao. If not filled in, the default information configured in the workspace will be used', + zentao_config_tip: "Refer to the value of $config->requestType in the ZenTao configuration file", + zentao_config_path: "Configuration file reference path: /opt/zbox/app/zentao/config/my.php", use_tip: 'Usage guidelines:', use_tip_tapd: 'Basic Auth account information is queried in "Company Management-Security and Integration-Open Platform"', use_tip_jira: 'Jira software server authentication information is account password, Jira software cloud authentication information is account + token (account settings-security-create API token)', @@ -669,11 +670,11 @@ export default { input_azure_url: 'Please enter Azure Devops Url', input_azure_id: 'Please enter Azure Organization ID', use_tip_azure: 'Azure Devops URL+PersonalAccessTokens(User Settings-Personal Access Tokens-New Token)', - jira_prompt_information:'This information is the user authentication information for submitting defects through Jira. If it is not filled in, the default information configured in the workspace will be used' + jira_prompt_information: 'This information is the user authentication information for submitting defects through Jira. If it is not filled in, the default information configured in the workspace will be used' } }, project: { - id:'Project ID', + id: 'Project ID', name: 'Project name', recent: 'Recent Projects', create: 'Create Project', @@ -777,7 +778,7 @@ export default { no_such_user: 'Without this user information, please enter the correct user ID or user Email!', }, user: { - id:'User ID', + id: 'User ID', create: 'Create', modify: 'Modify', input_name: 'Please enter a user name', @@ -803,7 +804,7 @@ export default { add_project_batch: 'Batch Add User To Project', add_workspace_batch: "Batch Add User To Workspace", add_project_batch_tip: 'Add a read-only user group for members by default (system)', - import_user_tip:'User group only supports system default user group', + import_user_tip: 'User group only supports system default user group', }, group: { add: 'Add User Group', @@ -848,7 +849,7 @@ export default { add: 'Add Role', }, report: { - id:'Report ID', + id: 'Report ID', api_test_report: 'Api Test Report', load_test_report: 'Load Test Report', test_plan_report: 'Test Plan Report', @@ -895,13 +896,13 @@ export default { delete_batch_confirm: 'Confirm batch delete report', response_time: 'Response Time(s)', max_users: 'VUs', - file_id:'Report File ID', - avg_response_time:'Average Response Time', - tps:'Transactions Per Second', - plan_share_url:'Whether the link jump is logged in' + file_id: 'Report File ID', + avg_response_time: 'Average Response Time', + tps: 'Transactions Per Second', + plan_share_url: 'Whether the link jump is logged in' }, load_test: { - id:'Load Test ID', + id: 'Load Test ID', concurrency_thread_group: 'Concurrent read group', thread_group: 'ThreadGroup', completed_test_report: 'Completed test report', @@ -1023,7 +1024,7 @@ export default { LatencyChart: 'Latency', BytesThroughputChart: 'Bytes', Network: 'Network', - url:'URL' + url: 'URL' }, add_monitor: 'Add Monitor', monitor_item: 'Monitor', @@ -1068,7 +1069,7 @@ export default { upload_limit_size: "Upload file size cannot exceed 30MB!", upload_limit_size_warn: "Upload file size cannot exceed {0} MB!", upload_limit: "Upload file size cannot exceed", - upload_tip:"Only upload JAR packages" + upload_tip: "Only upload JAR packages" }, batch_menus: { select_all_data: "Select all datas({0})", @@ -1084,7 +1085,7 @@ export default { update_time: "Update time" }, expect_detail: "Expect", - request_condition:"Request Condition", + request_condition: "Request Condition", base_info: "Base info", req_param: "Request params", rsp_param: "Response Params", @@ -1116,7 +1117,7 @@ export default { create_tip: "Note: Detailed interface information can be filled out on the edit page", api_import: "Api Import", check_select: "Please check the API", - api_project:"Project", + api_project: "Project", select_comp: { no_data: "No Data", add_data: "Add Data" @@ -1238,7 +1239,7 @@ export default { none: "None" }, }, - case_reduction_error_text:"Please restore first" + case_reduction_error_text: "Please restore first" }, automation: { open_expansion: "One-click expansion", @@ -1276,7 +1277,7 @@ export default { update_time: "Update time", step: "Step", last_result: "Last result", - last_result_id:'Last result id', + last_result_id: 'Last result id', passing_rate: "Passing rate", success: "Success", fail: "Fail", @@ -1300,9 +1301,9 @@ export default { select_table: "Select table", select_all: "Select all", check_case: "Please check the Scene Use Case", - api_none:"The original api does not exist", - case_none:"The original case does not exist", - num_none:"The original scene does not exist" + api_none: "The original api does not exist", + case_none: "The original case does not exist", + num_none: "The original scene does not exist" }, report_name_info: 'Please enter the registration name', save_case_info: 'Please save the use case first', @@ -1319,7 +1320,7 @@ export default { generate_report: "Generate report", }, environment: { - id:'Environment ID', + id: 'Environment ID', create: 'Create environment', name: "Environment Name", socket: "Socket", @@ -1345,7 +1346,7 @@ export default { copy_warning: "Domain names whose enabling conditions are'none' do not support copying!" }, scenario: { - id:"Scenario ID", + id: "Scenario ID", scenario: "Scenario", dubbo: "Dubbo Config", config: "Scenario Config", @@ -1428,54 +1429,54 @@ export default { condition_variable: "Variable, e.g: ${var}", wait: "wait", - all_name:"name", - all_url:"url", - boolean:"Boolean value", - capitalize:"Start with a capital letter", - cfirst:"Last name (Chinese)", - character:"character", - city:"city", - clast:"First name (Chinese)", - cname:"Chinese name", - color:"colour", - county:"county", - ctitle:"Chinese title", - dataImage:"Data image", - date:"date", - datetime:"Date time", - domain:"field", - email:"E-mail", - first:"surname", - float:"Floating point number", - guid:"guid", - hex:"hexadecimal", - hsl:"hsl", - id:"id", - img:"Picture address", - increment:"increment", - integer:"integer", - ip:"intellectual property right", - last:"name", - lower:"Lowercase letters", - natural:"Natural number", - now:"current time ", - paragraph:"paragraph", - pick:"choice", - protocol:"agreement", - province:"province", - range:"Range", - region:"region", - rgb:"rgb", - rgba:"rgba", - sentence:"sentence", - shuffle:"shuffle the cards", - string:"character string", - time:"time", - title:"title", - tld:"tld", - upper:"capital", - word:"Words", - zip:"Postal Code", + all_name: "name", + all_url: "url", + boolean: "Boolean value", + capitalize: "Start with a capital letter", + cfirst: "Last name (Chinese)", + character: "character", + city: "city", + clast: "First name (Chinese)", + cname: "Chinese name", + color: "colour", + county: "county", + ctitle: "Chinese title", + dataImage: "Data image", + date: "date", + datetime: "Date time", + domain: "field", + email: "E-mail", + first: "surname", + float: "Floating point number", + guid: "guid", + hex: "hexadecimal", + hsl: "hsl", + id: "id", + img: "Picture address", + increment: "increment", + integer: "integer", + ip: "intellectual property right", + last: "name", + lower: "Lowercase letters", + natural: "Natural number", + now: "current time ", + paragraph: "paragraph", + pick: "choice", + protocol: "agreement", + province: "province", + range: "Range", + region: "region", + rgb: "rgb", + rgba: "rgba", + sentence: "sentence", + shuffle: "shuffle the cards", + string: "character string", + time: "time", + title: "title", + tld: "tld", + upper: "capital", + word: "Words", + zip: "Postal Code", assertions: { label: "Assertion", @@ -1858,14 +1859,14 @@ export default { performance_test_case: "Performance Case", scenario_test_case: "Scenario Case", report_statistics: "Report Statistics", - sort:'Sort', - other_test_name:'Other Test Name', - demand:{ - id:'Demand ID', - name:'Demand Name' + sort: 'Sort', + other_test_name: 'Other Test Name', + demand: { + id: 'Demand ID', + name: 'Demand Name' }, - step_model:'Step Model', - automatic_status_update:"Automatic Status Update", + step_model: 'Step Model', + automatic_status_update: "Automatic Status Update", case: { list: "List", minder: "Minder", @@ -1956,9 +1957,9 @@ export default { attachment: "Attachment", upload_time: "Upload Time", total: "Total Case", - node_id:"Node ID", - node_path:"Node Path", - match_rule:"Test Case Match Rule", + node_id: "Node ID", + node_path: "Node Path", + match_rule: "Test Case Match Rule", import: { import: "Import test case", case_import: "Import test case", @@ -1990,11 +1991,11 @@ export default { export_tip: "Switch to Interface List and check Use Case Export" }, case_desc: "Case Desc", - passing_rate:'Case Pass Rate' + passing_rate: 'Case Pass Rate' }, plan: { test_plan: "Plan", - test_plan_id:'Plan ID', + test_plan_id: 'Plan ID', create_plan: "Create test plan", edit_plan: "Edit test plan", plan_name: "Name", @@ -2031,10 +2032,10 @@ export default { api_case: "Api case", scenario_case: "Scenario case", execute_result: "Execute Result", - execute_time:'Execute Time', - is_api_case_executing:"Api Case Executing", - is_scenario_executing:'Scenario Executing', - is_performance_executing:'Performance Executing', + execute_time: 'Execute Time', + is_api_case_executing: "Api Case Executing", + is_scenario_executing: 'Scenario Executing', + is_performance_executing: 'Performance Executing', test_plan_test_case_count: "Track case count", test_plan_api_case_count: "Api case count", test_plan_api_scenario_count: "Scenario case count", @@ -2098,7 +2099,7 @@ export default { cannot_delete: "Cannot delete this comment!", }, module: { - id:'Module ID', + id: 'Module ID', search: "Search module", rename: "Rename", add_submodule: "Add submodule", @@ -2141,7 +2142,7 @@ export default { relevance_test_case: "Relevance case", cancel_all_relevance: "Unlink all", executor: "Executor", - executor_match_rule:"Executor Match Rule", + executor_match_rule: "Executor Match Rule", execute_result: "Result", pass: "Pass", not_pass: "UnPass", @@ -2166,7 +2167,7 @@ export default { submit_issues: "Commit issues", operate_step: "Operate step", edit_component: "Edit component", - component:"component", + component: "component", base_info: "Base info", mock_info: "Mock service", test_result: "Test result", @@ -2211,7 +2212,7 @@ export default { description: "Issue Describe", status: "Issue Status", platform: "Platform", - issue_project:"Project", + issue_project: "Project", operate: "Operate", close: "Close", delete: "Delete", @@ -2221,12 +2222,12 @@ export default { status_new: 'new', status_resolved: 'resolved', status_closed: 'closed', - status_active:'active', - status_delete:'delete', + status_active: 'active', + status_delete: 'delete', status_in_progress: 'in_progress', status_rejected: 'rejected', - status_upcoming:'upcoming', - status_reopened:'reopened', + status_upcoming: 'upcoming', + status_reopened: 'reopened', please_choose_current_owner: "Please choose current owner", tapd_current_owner: "Tapd Current Owner", zentao_bug_build: "Zentao Impact version", @@ -2272,11 +2273,11 @@ export default { issue_list: "Issue List", all_case: "All Case", }, - reporter:'Reporter', - lastmodify:'Last Modify' + reporter: 'Reporter', + lastmodify: 'Last Modify' }, test_resource_pool: { - id:'Resource Pool ID', + id: 'Resource Pool ID', type: 'type', enable_disable: 'Enable / Disable', search_by_name: 'Search by name', @@ -2369,7 +2370,7 @@ export default { task_config: "Task Config", test_name: 'Test Name', running_rule: 'Rule', - job:'Job', + job: 'Job', job_status: 'Status', running_task: 'Running Task', please_input_cron_expression: "Please Input Cron Expression", @@ -2502,7 +2503,7 @@ export default { }, module: { title: 'Module Management', - path:'Module Path' + path: 'Module Path' }, table: { header_display_field: 'Header display field', @@ -2539,7 +2540,7 @@ export default { script_entry: "Script execution entry", plugin_id: "Plug-in Id", script_view: "View script", - warning_tip:'Script content not found' + warning_tip: 'Script content not found' }, mail: { input_mail_subject: "Please input subject", diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index 8300c48976..28656fcafc 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -10,6 +10,7 @@ export default { excelFile: "表格文件.xls", xmindFile: "思维导图.xmind", default: "默认值", + sort_default: "默认排序", please_select_import_mode: '请选择导入模式', please_select_import_module: '请选择导入模块', pass_rate: '通过率', diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index 9bbecc0cf0..a48f2e93fd 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -10,6 +10,7 @@ export default { excelFile: "表格文件.xls", xmindFile: "思維導圖.xmind", default: "默認值", + sort_default: "默認排序", please_select_import_mode: '請選擇導入模式', please_select_import_module: '請選擇導入模塊', pass_rate: '通過率', From 3c4058042fc77b66f675ca0581eef0ec0235889b Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Wed, 22 Dec 2021 11:32:08 +0800 Subject: [PATCH 04/34] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E8=B0=83=E8=AF=95=E6=97=B6websocket=20?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=B0=E6=B6=88=E6=81=AF=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metersphere/api/jmeter/JMeterService.java | 4 +- ...ugListener.java => MsResultCollector.java} | 44 +++++++------------ .../websocket/c/to/c/IndexWebSocket.java | 4 +- .../websocket/c/to/c/WebSocketUtils.java | 25 ++++++++++- .../websocket/c/to/c/util/SocketClient.java | 19 -------- .../automation/report/SysnApiReportDetail.vue | 2 +- .../automation/scenario/EditApiScenario.vue | 2 +- 7 files changed, 44 insertions(+), 56 deletions(-) rename backend/src/main/java/io/metersphere/api/jmeter/{MsDebugListener.java => MsResultCollector.java} (84%) delete mode 100644 backend/src/main/java/io/metersphere/websocket/c/to/c/util/SocketClient.java diff --git a/backend/src/main/java/io/metersphere/api/jmeter/JMeterService.java b/backend/src/main/java/io/metersphere/api/jmeter/JMeterService.java index c085e13a3c..61fd1584f3 100644 --- a/backend/src/main/java/io/metersphere/api/jmeter/JMeterService.java +++ b/backend/src/main/java/io/metersphere/api/jmeter/JMeterService.java @@ -68,9 +68,9 @@ public class JMeterService { } private void addDebugListener(String testId, HashTree testPlan) { - MsDebugListener resultCollector = new MsDebugListener(); + MsResultCollector resultCollector = new MsResultCollector(); resultCollector.setName(testId); - resultCollector.setProperty(TestElement.TEST_CLASS, MsDebugListener.class.getName()); + resultCollector.setProperty(TestElement.TEST_CLASS, MsResultCollector.class.getName()); resultCollector.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ViewResultsFullVisualizer")); resultCollector.setEnabled(true); testPlan.add(testPlan.getArray()[0], resultCollector); diff --git a/backend/src/main/java/io/metersphere/api/jmeter/MsDebugListener.java b/backend/src/main/java/io/metersphere/api/jmeter/MsResultCollector.java similarity index 84% rename from backend/src/main/java/io/metersphere/api/jmeter/MsDebugListener.java rename to backend/src/main/java/io/metersphere/api/jmeter/MsResultCollector.java index 10c21bd9e4..a6add2bd63 100644 --- a/backend/src/main/java/io/metersphere/api/jmeter/MsDebugListener.java +++ b/backend/src/main/java/io/metersphere/api/jmeter/MsResultCollector.java @@ -23,11 +23,10 @@ import io.metersphere.api.service.MsResultService; import io.metersphere.commons.utils.CommonBeanFactory; import io.metersphere.commons.utils.LogUtil; import io.metersphere.dto.RequestResult; -import io.metersphere.dto.ResultDTO; import io.metersphere.jmeter.JMeterBase; import io.metersphere.utils.JMeterVars; import io.metersphere.utils.LoggerUtil; -import io.metersphere.websocket.c.to.c.MsWebSocketClient; +import io.metersphere.websocket.c.to.c.WebSocketUtils; import io.metersphere.websocket.c.to.c.util.MsgDto; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -44,7 +43,7 @@ import java.util.Map; /** * 实时结果监听 */ -public class MsDebugListener extends AbstractListenerElement implements SampleListener, Clearable, Serializable, +public class MsResultCollector extends AbstractListenerElement implements SampleListener, Clearable, Serializable, TestStateListener, Remoteable, NoThreadClone { private static final String ERROR_LOGGING = "MsResultCollector.error_logging"; // $NON-NLS-1$ @@ -55,11 +54,9 @@ public class MsDebugListener extends AbstractListenerElement implements SampleLi public static final String TEST_END = "MS_TEST_END"; - private MsWebSocketClient client; - @Override public Object clone() { - MsDebugListener clone = (MsDebugListener) super.clone(); + MsResultCollector clone = (MsResultCollector) super.clone(); return clone; } @@ -100,28 +97,20 @@ public class MsDebugListener extends AbstractListenerElement implements SampleLi @Override public void testEnded(String host) { LoggerUtil.debug("TestEnded " + this.getName()); - SampleResult result = new SampleResult(); - result.setResponseCode(TEST_END); - ResultDTO dto = new ResultDTO(); - dto.setReportId(this.getName()); - try { - if (client != null) { - client.close(); - } - } catch (Exception e) { - LogUtil.error(e); - } + MsgDto dto = new MsgDto(); + dto.setExecEnd(false); + dto.setContent(TEST_END); + dto.setReportId("send." + this.getName()); + dto.setToReport(this.getName()); + LoggerUtil.debug("send. " + this.getName()); + WebSocketUtils.sendMessageSingle(dto); + WebSocketUtils.onClose(this.getName()); } @Override public void testStarted(String host) { LogUtil.debug("TestStarted " + this.getName()); - try { - client = new MsWebSocketClient("ws://127.0.0.1:8081/ws/" + "send." + this.getName()); - client.connect(); - } catch (Exception e) { - LogUtil.error(e); - } + } @Override @@ -142,10 +131,9 @@ public class MsDebugListener extends AbstractListenerElement implements SampleLi dto.setReportId("send." + this.getName()); dto.setToReport(this.getName()); LoggerUtil.debug("send. " + this.getName()); - if (client != null) { - client.send(JSON.toJSONString(dto)); - } + WebSocketUtils.sendMessageSingle(dto); } catch (Exception ex) { + LoggerUtil.error("消息推送失败:" + ex.getMessage()); } } @@ -179,9 +167,7 @@ public class MsDebugListener extends AbstractListenerElement implements SampleLi dto.setReportId("send." + this.getName()); dto.setToReport(this.getName()); LoggerUtil.debug("send. " + this.getName()); - if (client != null) { - client.send(JSON.toJSONString(dto)); - } + WebSocketUtils.sendMessageSingle(dto); } } } diff --git a/backend/src/main/java/io/metersphere/websocket/c/to/c/IndexWebSocket.java b/backend/src/main/java/io/metersphere/websocket/c/to/c/IndexWebSocket.java index 8c1fa4484a..143a9cb9b8 100644 --- a/backend/src/main/java/io/metersphere/websocket/c/to/c/IndexWebSocket.java +++ b/backend/src/main/java/io/metersphere/websocket/c/to/c/IndexWebSocket.java @@ -22,7 +22,7 @@ public class IndexWebSocket { public void openSession(@PathParam("reportId") String reportId, Session session) { WebSocketUtils.ONLINE_USER_SESSIONS.put(reportId, session); log.info("客户端: [" + reportId + "] : 连接成功!"); - WebSocketUtils.sendMessageAll("客户端: [" + reportId + "] : 连接成功!"); + //WebSocketUtils.sendMessageAll("客户端: [" + reportId + "] : 连接成功!"); } /** @@ -45,7 +45,7 @@ public class IndexWebSocket { WebSocketUtils.ONLINE_USER_SESSIONS.remove(reportId); log.info("[" + reportId + "] : 断开连接!"); //并且通知其他人当前用户已经断开连接了 - WebSocketUtils.sendMessageAll("[" + reportId + "] : 断开连接!"); + //WebSocketUtils.sendMessageAll("[" + reportId + "] : 断开连接!"); session.close(); } diff --git a/backend/src/main/java/io/metersphere/websocket/c/to/c/WebSocketUtils.java b/backend/src/main/java/io/metersphere/websocket/c/to/c/WebSocketUtils.java index 4a9a20d952..3d2c127bb9 100644 --- a/backend/src/main/java/io/metersphere/websocket/c/to/c/WebSocketUtils.java +++ b/backend/src/main/java/io/metersphere/websocket/c/to/c/WebSocketUtils.java @@ -1,5 +1,6 @@ package io.metersphere.websocket.c.to.c; +import io.metersphere.utils.LoggerUtil; import io.metersphere.websocket.c.to.c.util.MsgDto; import javax.websocket.RemoteEndpoint; @@ -12,9 +13,13 @@ public class WebSocketUtils { // 单用户推送 public static void sendMessage(Session session, String message) { - if (session == null) { return; } + if (session == null) { + return; + } RemoteEndpoint.Async async = session.getAsyncRemote(); - if (async == null) { return; } + if (async == null) { + return; + } async.sendText(message); } @@ -30,4 +35,20 @@ public class WebSocketUtils { sendMessage(session, message); }); } + + //当前的Session 移除 + public static void onClose(String reportId) { + try { + if (WebSocketUtils.ONLINE_USER_SESSIONS.containsKey(reportId)) { + WebSocketUtils.ONLINE_USER_SESSIONS.get(reportId).close(); + WebSocketUtils.ONLINE_USER_SESSIONS.remove(reportId); + } + if (WebSocketUtils.ONLINE_USER_SESSIONS.containsKey(("send." + reportId))) { + WebSocketUtils.ONLINE_USER_SESSIONS.get(("send." + reportId)).close(); + WebSocketUtils.ONLINE_USER_SESSIONS.remove(("send." + reportId)); + } + } catch (Exception e) { + LoggerUtil.error("关闭socket失败:" + e.getMessage()); + } + } } diff --git a/backend/src/main/java/io/metersphere/websocket/c/to/c/util/SocketClient.java b/backend/src/main/java/io/metersphere/websocket/c/to/c/util/SocketClient.java deleted file mode 100644 index e879fb0788..0000000000 --- a/backend/src/main/java/io/metersphere/websocket/c/to/c/util/SocketClient.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.metersphere.websocket.c.to.c.util; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: jason - * @Date: 2020-12-23 - */ -@AllArgsConstructor -@NoArgsConstructor -@Builder -@Data -public class SocketClient { - private Integer userId; - private String username; -} diff --git a/frontend/src/business/components/api/automation/report/SysnApiReportDetail.vue b/frontend/src/business/components/api/automation/report/SysnApiReportDetail.vue index 0cbdb50478..5771b9fd46 100644 --- a/frontend/src/business/components/api/automation/report/SysnApiReportDetail.vue +++ b/frontend/src/business/components/api/automation/report/SysnApiReportDetail.vue @@ -356,7 +356,7 @@ export default { if (e.data) { this.runningEvaluation(e.data); } - if (e.data && e.data.indexOf("断开连接") !== -1) { + if (e.data && e.data.indexOf("MS_TEST_END") !== -1) { this.getReport(); this.messageWebSocket.close(); scenario.$emit('hide', this.scenarioId); diff --git a/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue b/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue index 9a68628940..79bd9b4ef8 100644 --- a/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue +++ b/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue @@ -789,7 +789,7 @@ export default { } this.runningEvaluation(e.data); this.message = getUUID(); - if (e.data && e.data.indexOf("断开连接") !== -1) { + if (e.data && e.data.indexOf("MS_TEST_END") !== -1) { this.runScenario = undefined; this.debugLoading = false; this.message = "stop"; From ad5307defd0b58bfbd5f89d110e1b94d5d239163 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Wed, 22 Dec 2021 11:51:25 +0800 Subject: [PATCH 05/34] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=82=AE?= =?UTF-8?q?=E4=BB=B6=E6=A8=A1=E7=89=88=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1009015 --user=刘瑞斌 【jenkins】邮件默认通知显示不一致 https://www.tapd.cn/55049933/s/1084854 --- .../api/service/ApiDefinitionExecResultService.java | 4 ++-- .../api/service/ApiScenarioReportService.java | 4 ++-- .../api/{CaseResult.html => CaseResultFailed.html} | 2 +- .../{ScenarioResult.html => CaseResultSuccess.html} | 2 +- .../resources/mail/api/ScenarioResultFailed.html | 12 ++++++++++++ .../resources/mail/api/ScenarioResultSuccess.html | 12 ++++++++++++ 6 files changed, 30 insertions(+), 6 deletions(-) rename backend/src/main/resources/mail/api/{CaseResult.html => CaseResultFailed.html} (63%) rename backend/src/main/resources/mail/api/{ScenarioResult.html => CaseResultSuccess.html} (62%) create mode 100644 backend/src/main/resources/mail/api/ScenarioResultFailed.html create mode 100644 backend/src/main/resources/mail/api/ScenarioResultSuccess.html diff --git a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java index b4607c0f08..9fa47757c0 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java @@ -116,8 +116,8 @@ public class ApiDefinitionExecResultService { .operator(SessionUtils.getUserId()) .context(context) .subject("接口用例通知") - .successMailTemplate("api/CaseResult") - .failedMailTemplate("api/CaseResult") + .successMailTemplate("api/CaseResultSuccess") + .failedMailTemplate("api/CaseResultFailed") .paramMap(paramMap) .event(event) .build(); diff --git a/backend/src/main/java/io/metersphere/api/service/ApiScenarioReportService.java b/backend/src/main/java/io/metersphere/api/service/ApiScenarioReportService.java index af249440e9..8905e67734 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiScenarioReportService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiScenarioReportService.java @@ -437,8 +437,8 @@ public class ApiScenarioReportService { .operator(userId) .context(context) .subject("接口自动化通知") - .successMailTemplate("api/ScenarioResult") - .failedMailTemplate("api/ScenarioResult") + .successMailTemplate("api/ScenarioResultSuccess") + .failedMailTemplate("api/ScenarioResultFailed") .paramMap(paramMap) .event(event) .build(); diff --git a/backend/src/main/resources/mail/api/CaseResult.html b/backend/src/main/resources/mail/api/CaseResultFailed.html similarity index 63% rename from backend/src/main/resources/mail/api/CaseResult.html rename to backend/src/main/resources/mail/api/CaseResultFailed.html index 5596cebbe6..5fccb612c3 100644 --- a/backend/src/main/resources/mail/api/CaseResult.html +++ b/backend/src/main/resources/mail/api/CaseResultFailed.html @@ -6,7 +6,7 @@
-

${operator}执行接口用例: ${name}, 结果: ${status}

+

${operator}执行接口用例失败: ${name}

\ No newline at end of file diff --git a/backend/src/main/resources/mail/api/ScenarioResult.html b/backend/src/main/resources/mail/api/CaseResultSuccess.html similarity index 62% rename from backend/src/main/resources/mail/api/ScenarioResult.html rename to backend/src/main/resources/mail/api/CaseResultSuccess.html index 96b56287be..2721a527da 100644 --- a/backend/src/main/resources/mail/api/ScenarioResult.html +++ b/backend/src/main/resources/mail/api/CaseResultSuccess.html @@ -6,7 +6,7 @@
-

${operator}执行接口自动化: ${name}, 结果: ${status}

+

${operator}执行接口用例成功: ${name}

\ No newline at end of file diff --git a/backend/src/main/resources/mail/api/ScenarioResultFailed.html b/backend/src/main/resources/mail/api/ScenarioResultFailed.html new file mode 100644 index 0000000000..f71c57f7cd --- /dev/null +++ b/backend/src/main/resources/mail/api/ScenarioResultFailed.html @@ -0,0 +1,12 @@ + + + + + MeterSphere + + +
+

${operator}执行接口自动化失败: ${name}

+
+ + \ No newline at end of file diff --git a/backend/src/main/resources/mail/api/ScenarioResultSuccess.html b/backend/src/main/resources/mail/api/ScenarioResultSuccess.html new file mode 100644 index 0000000000..4c2f3fad52 --- /dev/null +++ b/backend/src/main/resources/mail/api/ScenarioResultSuccess.html @@ -0,0 +1,12 @@ + + + + + MeterSphere + + +
+

${operator}执行接口自动化成功: ${name}

+
+ + \ No newline at end of file From 67993a2a56ef3eb627d3dad9f25410d1a26c38d0 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Wed, 22 Dec 2021 11:56:49 +0800 Subject: [PATCH 06/34] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8Dk8s=E8=B0=83=E7=94=A8=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/metersphere/performance/engine/AbstractEngine.java | 4 ++-- backend/src/main/java/io/metersphere/xpack | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/io/metersphere/performance/engine/AbstractEngine.java b/backend/src/main/java/io/metersphere/performance/engine/AbstractEngine.java index 2c17313cea..58e28bb79d 100644 --- a/backend/src/main/java/io/metersphere/performance/engine/AbstractEngine.java +++ b/backend/src/main/java/io/metersphere/performance/engine/AbstractEngine.java @@ -3,7 +3,6 @@ package io.metersphere.performance.engine; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import io.metersphere.api.dto.RunRequest; import io.metersphere.base.domain.LoadTestReportWithBLOBs; import io.metersphere.base.domain.TestResource; import io.metersphere.base.domain.TestResourcePool; @@ -13,6 +12,7 @@ import io.metersphere.commons.constants.ResourceStatusEnum; import io.metersphere.commons.exception.MSException; import io.metersphere.commons.utils.CommonBeanFactory; import io.metersphere.config.JmeterProperties; +import io.metersphere.dto.JmeterRunRequestDTO; import io.metersphere.performance.service.PerformanceTestService; import io.metersphere.service.TestResourcePoolService; import io.metersphere.service.TestResourceService; @@ -42,7 +42,7 @@ public abstract class AbstractEngine implements Engine { GC_ALGO = CommonBeanFactory.getBean(JmeterProperties.class).getGcAlgo(); } - protected void initApiConfig(RunRequest runRequest) { + protected void initApiConfig(JmeterRunRequestDTO runRequest) { String resourcePoolId = runRequest.getPoolId(); resourcePool = testResourcePoolService.getResourcePool(resourcePoolId); if (resourcePool == null || StringUtils.equals(resourcePool.getStatus(), ResourceStatusEnum.DELETE.name())) { diff --git a/backend/src/main/java/io/metersphere/xpack b/backend/src/main/java/io/metersphere/xpack index a1e39f9c1b..3cac4fd4c1 160000 --- a/backend/src/main/java/io/metersphere/xpack +++ b/backend/src/main/java/io/metersphere/xpack @@ -1 +1 @@ -Subproject commit a1e39f9c1baf30f52da50ab34ea1bacbfbeff60c +Subproject commit 3cac4fd4c1cb2b3dfb4bd82a6a09cc55ae2f2d34 From c769f16a4b427cb55cf5c8c2f6fd0eb79713948f Mon Sep 17 00:00:00 2001 From: song-tianyang Date: Wed, 22 Dec 2021 12:30:11 +0800 Subject: [PATCH 07/34] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E6=A1=88=E4=BE=8B)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E8=BD=AC=E6=80=A7=E8=83=BD=E6=B5=8B=E8=AF=95=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E9=80=89=E6=8B=A9=E6=A1=86=E5=86=85=E7=9A=84?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1009069 --user=宋天阳 【接口测试】接口用例创建性能测试,环境显示错误 https://www.tapd.cn/55049933/s/1084866 --- .../api/definition/components/basis/SetEnvironment.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/business/components/api/definition/components/basis/SetEnvironment.vue b/frontend/src/business/components/api/definition/components/basis/SetEnvironment.vue index e79ad35929..10af03914d 100644 --- a/frontend/src/business/components/api/definition/components/basis/SetEnvironment.vue +++ b/frontend/src/business/components/api/definition/components/basis/SetEnvironment.vue @@ -13,7 +13,7 @@ :placeholder="$t('api_test.definition.request.run_env')" clearable>