diff --git a/framework/sdk-parent/frontend/src/components/search/search-components.js b/framework/sdk-parent/frontend/src/components/search/search-components.js
index 70a79f5939..3567557c80 100644
--- a/framework/sdk-parent/frontend/src/components/search/search-components.js
+++ b/framework/sdk-parent/frontend/src/components/search/search-components.js
@@ -637,6 +637,19 @@ export const CASE_REVIEW_STATUS = {
}
}
+export const CASE_STATUS = {
+ key: "status",
+ name: 'MsTableSearchSelect',
+ label: "custom_field.case_status",
+ operator: {
+ options: [OPERATORS.IN, OPERATORS.NOT_IN]
+ },
+ options: [],
+ props: {
+ multiple: true
+ }
+}
+
export const PLAN_CASE_STATUS = {
key: "planCaseStatus",
name: 'MsTableSearchSelect',
@@ -850,7 +863,7 @@ export const UI_CUSTOM_COMMAND_CONFIGS = [NAME, CREATE_TIME, PROJECT_CREATOR, UI
export const UI_CUSTOM_COMMAND_CONFIGS_TRASH = [NAME, CREATE_TIME, PROJECT_CREATOR, UI_CUSTOM_COMMAND_TRASH_MODULE_TREE];
// 测试跟踪-测试用例 列表
-export const TEST_CASE_CONFIGS = [ID, NAME, TAGS, TEST_CASE_MODULE_TREE, CREATE_TIME, UPDATE_TIME, CREATOR, CASE_REVIEW_STATUS, FOLLOW_PEOPLE, CASE_DEMAND];
+export const TEST_CASE_CONFIGS = [ID, NAME, TAGS, TEST_CASE_MODULE_TREE, CREATE_TIME, UPDATE_TIME, CREATOR, CASE_REVIEW_STATUS, FOLLOW_PEOPLE, CASE_DEMAND, CASE_STATUS];
export const TEST_PLAN_CONFIGS = [NAME, UPDATE_TIME, CREATE_TIME, PRINCIPAL, TEST_PLAN_STATUS, STAGE, TAGS, FOLLOW_PEOPLE, ACTUAL_START_TIME, ACTUAL_END_TIME, PLAN_START_TIME, PLAN_END_TIME];
diff --git a/test-track/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml b/test-track/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml
index 2611c3458a..8cadaa92c5 100644
--- a/test-track/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml
+++ b/test-track/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml
@@ -46,6 +46,12 @@
+
+ and test_case.status
+
+
+
+
and test_case.create_time
diff --git a/test-track/frontend/src/business/case/components/TestCaseList.vue b/test-track/frontend/src/business/case/components/TestCaseList.vue
index 668defa72d..736c22b063 100644
--- a/test-track/frontend/src/business/case/components/TestCaseList.vue
+++ b/test-track/frontend/src/business/case/components/TestCaseList.vue
@@ -536,31 +536,7 @@ export default {
let template = data[1];
this.testCaseTemplate = template;
this.fields = getTableHeaderWithCustomFields(this.tableHeaderKey, this.testCaseTemplate.customFields, this.members);
- // todo 处理高级搜索自定义字段部分
- this.condition.components = this.condition.components.filter(item => item.custom !== true);
- let comp = getAdvSearchCustomField(this.condition, this.testCaseTemplate.customFields);
- // 系统字段国际化处理
- comp.filter(element => {
- if (element.label === '责任人') {
- element.label = this.$t('custom_field.case_maintainer')
- }
- if (element.label === '用例等级') {
- element.label = this.$t('custom_field.case_priority')
- }
- if (element.label === '用例状态') {
- element.label = this.$t('custom_field.case_status')
- // 回收站TAB页处理高级搜索用例状态字段
- if (this.trashEnable) {
- element.operator.options = [OPERATORS.IN];
- element.options = [{text: this.$t('test_track.plan.plan_status_trash'), value: 'Trash'}];
- } else {
- element.options.forEach(option => {
- option.text = this.$t(option.text);
- });
- }
- }
- })
- this.condition.components.push(...comp);
+ this.initConditionComponents()
this.setTestCaseDefaultValue(template);
this.typeArr = [];
this.typeArr.push({
@@ -577,6 +553,45 @@ export default {
});
});
},
+ initConditionComponents() {
+ this.condition.components = this.condition.components.filter(item => item.custom !== true);
+ let comp = getAdvSearchCustomField(this.condition, this.testCaseTemplate.customFields);
+ let statusOption = null;
+ // 系统字段国际化处理
+ comp = comp.filter(element => {
+ if (element.label === '责任人') {
+ element.label = this.$t('custom_field.case_maintainer')
+ }
+ if (element.label === '用例等级') {
+ element.label = this.$t('custom_field.case_priority')
+ }
+ if (element.label === '用例状态') {
+ element.label = this.$t('custom_field.case_status')
+ // 回收站TAB页处理高级搜索用例状态字段
+ if (this.trashEnable) {
+ element.operator.options = [OPERATORS.IN];
+ element.options = [{text: this.$t('test_track.plan.plan_status_trash'), value: 'Trash'}];
+ } else {
+ element.options.forEach(option => option.text = this.$t(option.text));
+ }
+ statusOption = element.options;
+ // 用例状态不走自定义字段的搜索,查询status字段
+ return false;
+ }
+ return true;
+ });
+ if (statusOption) {
+ this.condition.components.forEach((item) => {
+ if (item.key === 'status') {
+ item .options = statusOption;
+ }
+ });
+ } else {
+ // statusOption 为空,则去掉状态选项
+ this.condition.components = this.condition.components.filter((item) => item.key !== 'status');
+ }
+ this.condition.components.push(...comp);
+ },
setTestCaseDefaultValue(template) {
let testCaseDefaultValue = {};
template.customFields.forEach(item => {