feat_测试跟踪_评审添加关注人 --story=1003528 --user=王孝刚 2.测试计划、用例评审添加关注人 https://www.tapd.cn/55049933/s/1056133

This commit is contained in:
wxg0103 2021-10-18 13:50:59 +08:00 committed by fit2-zhao
parent 8c65bae8a2
commit 993dc09ccb
9 changed files with 136 additions and 8 deletions

View File

@ -43,5 +43,7 @@ public class TestPlan implements Serializable {
private Boolean automaticStatusUpdate; private Boolean automaticStatusUpdate;
private String followPeople;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }

View File

@ -1353,6 +1353,76 @@ public class TestPlanExample {
addCriterion("automatic_status_update not between", value1, value2, "automaticStatusUpdate"); addCriterion("automatic_status_update not between", value1, value2, "automaticStatusUpdate");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andFollowPeopleIsNull() {
addCriterion("follow_people is null");
return (Criteria) this;
}
public Criteria andFollowPeopleIsNotNull() {
addCriterion("follow_people is not null");
return (Criteria) this;
}
public Criteria andFollowPeopleEqualTo(String value) {
addCriterion("follow_people =", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleNotEqualTo(String value) {
addCriterion("follow_people <>", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleGreaterThan(String value) {
addCriterion("follow_people >", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleGreaterThanOrEqualTo(String value) {
addCriterion("follow_people >=", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleLessThan(String value) {
addCriterion("follow_people <", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleLessThanOrEqualTo(String value) {
addCriterion("follow_people <=", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleLike(String value) {
addCriterion("follow_people like", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleNotLike(String value) {
addCriterion("follow_people not like", value, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleIn(List<String> values) {
addCriterion("follow_people in", values, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleNotIn(List<String> values) {
addCriterion("follow_people not in", values, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleBetween(String value1, String value2) {
addCriterion("follow_people between", value1, value2, "followPeople");
return (Criteria) this;
}
public Criteria andFollowPeopleNotBetween(String value1, String value2) {
addCriterion("follow_people not between", value1, value2, "followPeople");
return (Criteria) this;
}
} }
public static class Criteria extends GeneratedCriteria { public static class Criteria extends GeneratedCriteria {

View File

@ -21,6 +21,7 @@
<result column="project_id" jdbcType="VARCHAR" property="projectId" /> <result column="project_id" jdbcType="VARCHAR" property="projectId" />
<result column="execution_times" jdbcType="INTEGER" property="executionTimes" /> <result column="execution_times" jdbcType="INTEGER" property="executionTimes" />
<result column="automatic_status_update" jdbcType="BIT" property="automaticStatusUpdate" /> <result column="automatic_status_update" jdbcType="BIT" property="automaticStatusUpdate" />
<result column="follow_people" jdbcType="VARCHAR" property="followPeople" />
</resultMap> </resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.metersphere.base.domain.TestPlanWithBLOBs"> <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.metersphere.base.domain.TestPlanWithBLOBs">
<result column="tags" jdbcType="LONGVARCHAR" property="tags" /> <result column="tags" jdbcType="LONGVARCHAR" property="tags" />
@ -88,7 +89,8 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, workspace_id, report_id, `name`, description, `status`, stage, test_case_match_rule, id, workspace_id, report_id, `name`, description, `status`, stage, test_case_match_rule,
executor_match_rule, create_time, update_time, actual_end_time, planned_start_time, executor_match_rule, create_time, update_time, actual_end_time, planned_start_time,
planned_end_time, actual_start_time, creator, project_id, execution_times, automatic_status_update planned_end_time, actual_start_time, creator, project_id, execution_times, automatic_status_update,
follow_people
</sql> </sql>
<sql id="Blob_Column_List"> <sql id="Blob_Column_List">
tags, report_summary, report_config tags, report_summary, report_config
@ -148,16 +150,16 @@
create_time, update_time, actual_end_time, create_time, update_time, actual_end_time,
planned_start_time, planned_end_time, actual_start_time, planned_start_time, planned_end_time, actual_start_time,
creator, project_id, execution_times, creator, project_id, execution_times,
automatic_status_update, tags, report_summary, automatic_status_update, follow_people, tags,
report_config) report_summary, report_config)
values (#{id,jdbcType=VARCHAR}, #{workspaceId,jdbcType=VARCHAR}, #{reportId,jdbcType=VARCHAR}, values (#{id,jdbcType=VARCHAR}, #{workspaceId,jdbcType=VARCHAR}, #{reportId,jdbcType=VARCHAR},
#{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR},
#{stage,jdbcType=VARCHAR}, #{testCaseMatchRule,jdbcType=VARCHAR}, #{executorMatchRule,jdbcType=VARCHAR}, #{stage,jdbcType=VARCHAR}, #{testCaseMatchRule,jdbcType=VARCHAR}, #{executorMatchRule,jdbcType=VARCHAR},
#{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, #{actualEndTime,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, #{actualEndTime,jdbcType=BIGINT},
#{plannedStartTime,jdbcType=BIGINT}, #{plannedEndTime,jdbcType=BIGINT}, #{actualStartTime,jdbcType=BIGINT}, #{plannedStartTime,jdbcType=BIGINT}, #{plannedEndTime,jdbcType=BIGINT}, #{actualStartTime,jdbcType=BIGINT},
#{creator,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{executionTimes,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{executionTimes,jdbcType=INTEGER},
#{automaticStatusUpdate,jdbcType=BIT}, #{tags,jdbcType=LONGVARCHAR}, #{reportSummary,jdbcType=LONGVARCHAR}, #{automaticStatusUpdate,jdbcType=BIT}, #{followPeople,jdbcType=VARCHAR}, #{tags,jdbcType=LONGVARCHAR},
#{reportConfig,jdbcType=LONGVARCHAR}) #{reportSummary,jdbcType=LONGVARCHAR}, #{reportConfig,jdbcType=LONGVARCHAR})
</insert> </insert>
<insert id="insertSelective" parameterType="io.metersphere.base.domain.TestPlanWithBLOBs"> <insert id="insertSelective" parameterType="io.metersphere.base.domain.TestPlanWithBLOBs">
insert into test_plan insert into test_plan
@ -219,6 +221,9 @@
<if test="automaticStatusUpdate != null"> <if test="automaticStatusUpdate != null">
automatic_status_update, automatic_status_update,
</if> </if>
<if test="followPeople != null">
follow_people,
</if>
<if test="tags != null"> <if test="tags != null">
tags, tags,
</if> </if>
@ -287,6 +292,9 @@
<if test="automaticStatusUpdate != null"> <if test="automaticStatusUpdate != null">
#{automaticStatusUpdate,jdbcType=BIT}, #{automaticStatusUpdate,jdbcType=BIT},
</if> </if>
<if test="followPeople != null">
#{followPeople,jdbcType=VARCHAR},
</if>
<if test="tags != null"> <if test="tags != null">
#{tags,jdbcType=LONGVARCHAR}, #{tags,jdbcType=LONGVARCHAR},
</if> </if>
@ -364,6 +372,9 @@
<if test="record.automaticStatusUpdate != null"> <if test="record.automaticStatusUpdate != null">
automatic_status_update = #{record.automaticStatusUpdate,jdbcType=BIT}, automatic_status_update = #{record.automaticStatusUpdate,jdbcType=BIT},
</if> </if>
<if test="record.followPeople != null">
follow_people = #{record.followPeople,jdbcType=VARCHAR},
</if>
<if test="record.tags != null"> <if test="record.tags != null">
tags = #{record.tags,jdbcType=LONGVARCHAR}, tags = #{record.tags,jdbcType=LONGVARCHAR},
</if> </if>
@ -399,6 +410,7 @@
project_id = #{record.projectId,jdbcType=VARCHAR}, project_id = #{record.projectId,jdbcType=VARCHAR},
execution_times = #{record.executionTimes,jdbcType=INTEGER}, execution_times = #{record.executionTimes,jdbcType=INTEGER},
automatic_status_update = #{record.automaticStatusUpdate,jdbcType=BIT}, automatic_status_update = #{record.automaticStatusUpdate,jdbcType=BIT},
follow_people = #{record.followPeople,jdbcType=VARCHAR},
tags = #{record.tags,jdbcType=LONGVARCHAR}, tags = #{record.tags,jdbcType=LONGVARCHAR},
report_summary = #{record.reportSummary,jdbcType=LONGVARCHAR}, report_summary = #{record.reportSummary,jdbcType=LONGVARCHAR},
report_config = #{record.reportConfig,jdbcType=LONGVARCHAR} report_config = #{record.reportConfig,jdbcType=LONGVARCHAR}
@ -426,7 +438,8 @@
creator = #{record.creator,jdbcType=VARCHAR}, creator = #{record.creator,jdbcType=VARCHAR},
project_id = #{record.projectId,jdbcType=VARCHAR}, project_id = #{record.projectId,jdbcType=VARCHAR},
execution_times = #{record.executionTimes,jdbcType=INTEGER}, execution_times = #{record.executionTimes,jdbcType=INTEGER},
automatic_status_update = #{record.automaticStatusUpdate,jdbcType=BIT} automatic_status_update = #{record.automaticStatusUpdate,jdbcType=BIT},
follow_people = #{record.followPeople,jdbcType=VARCHAR}
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
</if> </if>
@ -488,6 +501,9 @@
<if test="automaticStatusUpdate != null"> <if test="automaticStatusUpdate != null">
automatic_status_update = #{automaticStatusUpdate,jdbcType=BIT}, automatic_status_update = #{automaticStatusUpdate,jdbcType=BIT},
</if> </if>
<if test="followPeople != null">
follow_people = #{followPeople,jdbcType=VARCHAR},
</if>
<if test="tags != null"> <if test="tags != null">
tags = #{tags,jdbcType=LONGVARCHAR}, tags = #{tags,jdbcType=LONGVARCHAR},
</if> </if>
@ -520,6 +536,7 @@
project_id = #{projectId,jdbcType=VARCHAR}, project_id = #{projectId,jdbcType=VARCHAR},
execution_times = #{executionTimes,jdbcType=INTEGER}, execution_times = #{executionTimes,jdbcType=INTEGER},
automatic_status_update = #{automaticStatusUpdate,jdbcType=BIT}, automatic_status_update = #{automaticStatusUpdate,jdbcType=BIT},
follow_people = #{followPeople,jdbcType=VARCHAR},
tags = #{tags,jdbcType=LONGVARCHAR}, tags = #{tags,jdbcType=LONGVARCHAR},
report_summary = #{reportSummary,jdbcType=LONGVARCHAR}, report_summary = #{reportSummary,jdbcType=LONGVARCHAR},
report_config = #{reportConfig,jdbcType=LONGVARCHAR} report_config = #{reportConfig,jdbcType=LONGVARCHAR}
@ -544,7 +561,8 @@
creator = #{creator,jdbcType=VARCHAR}, creator = #{creator,jdbcType=VARCHAR},
project_id = #{projectId,jdbcType=VARCHAR}, project_id = #{projectId,jdbcType=VARCHAR},
execution_times = #{executionTimes,jdbcType=INTEGER}, execution_times = #{executionTimes,jdbcType=INTEGER},
automatic_status_update = #{automaticStatusUpdate,jdbcType=BIT} automatic_status_update = #{automaticStatusUpdate,jdbcType=BIT},
follow_people = #{followPeople,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
</mapper> </mapper>

View File

@ -52,4 +52,5 @@ create table if not exists relationship_edge (
COLLATE utf8mb4_general_ci; COLLATE utf8mb4_general_ci;
ALTER TABLE test_case_review ADD COLUMN follow_people; ALTER TABLE test_case_review ADD COLUMN follow_people;
ALTER TABLE test_plan ADD COLUMN follow_people;

View File

@ -88,6 +88,21 @@
<ms-instructions-icon :content="'当功能用例关联的接口或性能用例在测试计划执行后,自动更新功能用例的状态'"/> <ms-instructions-icon :content="'当功能用例关联的接口或性能用例在测试计划执行后,自动更新功能用例的状态'"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item :label="$t('test_track.plan.follow_people')" :label-width="formLabelWidth"
prop="followPeople">
<el-select v-model="form.followPeople"
clearable
:placeholder="$t('test_track.plan.follow_people')" filterable size="small">
<el-option
v-for="item in maintainerOptions"
:key="item.id"
:label="item.id + ' (' + item.name + ')'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row type="flex" justify="left" :gutter="20"> <el-row type="flex" justify="left" :gutter="20">
@ -172,14 +187,24 @@ export default {
}, },
formLabelWidth: "100px", formLabelWidth: "100px",
operationType: '', operationType: '',
principalOptions: [] principalOptions: [],
maintainerOptions: [],
}; };
}, },
created() { created() {
// //
this.form.stage = 'smoke'; this.form.stage = 'smoke';
this.getSelectOptions();
}, },
methods: { methods: {
getMaintainerOptions() {
this.$post('/user/project/member/tester/list', {projectId: getCurrentProjectID()}, response => {
this.maintainerOptions = response.data;
});
},
getSelectOptions() {
this.getMaintainerOptions();
},
reload() { reload() {
this.isStepTableAlive = false; this.isStepTableAlive = false;
this.$nextTick(() => (this.isStepTableAlive = true)); this.$nextTick(() => (this.isStepTableAlive = true));
@ -199,6 +224,7 @@ export default {
} }
listenGoBack(this.close); listenGoBack(this.close);
this.dialogFormVisible = true; this.dialogFormVisible = true;
this.getSelectOptions();
this.reload(); this.reload();
}, },
testPlanInfo() { testPlanInfo() {

View File

@ -74,6 +74,14 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
v-if="item.id=='followPeople'"
prop="followPeople"
:label="$t('test_track.plan.follow_people')"
show-overflow-tooltip
:key="index"
>
</el-table-column>
<el-table-column <el-table-column
v-if="item.id == 'stage'" v-if="item.id == 'stage'"
prop="stage" prop="stage"

View File

@ -1591,6 +1591,7 @@ export default {
related_project: "Related Project", related_project: "Related Project",
related_tip: "After linking the project, you can add test cases under the linking project to the test plan list", related_tip: "After linking the project, you can add test cases under the linking project to the test plan list",
plan_stage: "Stage", plan_stage: "Stage",
follow_people: "Follow",
plan_status: "Status", plan_status: "Status",
smoke_test: "Smoke test", smoke_test: "Smoke test",
functional_test: "Functional test", functional_test: "Functional test",

View File

@ -1599,6 +1599,7 @@ export default {
related_project: "关联项目", related_project: "关联项目",
related_tip: "关联项目后可以添加关联项目下的测试用例到测试计划列表", related_tip: "关联项目后可以添加关联项目下的测试用例到测试计划列表",
plan_stage: "测试阶段", plan_stage: "测试阶段",
follow_people: "关注人",
plan_status: "当前状态", plan_status: "当前状态",
smoke_test: "冒烟测试", smoke_test: "冒烟测试",
functional_test: "功能测试", functional_test: "功能测试",

View File

@ -1600,6 +1600,7 @@ export default {
related_project: "關聯項目", related_project: "關聯項目",
related_tip: "關聯項目後可以添加關聯項目下的測試用例到測試計劃列表", related_tip: "關聯項目後可以添加關聯項目下的測試用例到測試計劃列表",
plan_stage: "測試階段", plan_stage: "測試階段",
follow_people: "關註人",
plan_status: "當前狀態", plan_status: "當前狀態",
smoke_test: "冒煙測試", smoke_test: "冒煙測試",
functional_test: "功能測試", functional_test: "功能測試",