Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
d9a6cacc0f
|
@ -5,7 +5,7 @@ import java.io.Serializable;
|
||||||
public class TestCase implements Serializable {
|
public class TestCase implements Serializable {
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
private String nodeId;
|
private Integer nodeId;
|
||||||
|
|
||||||
private String projectId;
|
private String projectId;
|
||||||
|
|
||||||
|
@ -33,12 +33,12 @@ public class TestCase implements Serializable {
|
||||||
this.id = id == null ? null : id.trim();
|
this.id = id == null ? null : id.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNodeId() {
|
public Integer getNodeId() {
|
||||||
return nodeId;
|
return nodeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNodeId(String nodeId) {
|
public void setNodeId(Integer nodeId) {
|
||||||
this.nodeId = nodeId == null ? null : nodeId.trim();
|
this.nodeId = nodeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getProjectId() {
|
public String getProjectId() {
|
||||||
|
|
|
@ -184,62 +184,52 @@ public class TestCaseExample {
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdEqualTo(String value) {
|
public Criteria andNodeIdEqualTo(Integer value) {
|
||||||
addCriterion("node_id =", value, "nodeId");
|
addCriterion("node_id =", value, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdNotEqualTo(String value) {
|
public Criteria andNodeIdNotEqualTo(Integer value) {
|
||||||
addCriterion("node_id <>", value, "nodeId");
|
addCriterion("node_id <>", value, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdGreaterThan(String value) {
|
public Criteria andNodeIdGreaterThan(Integer value) {
|
||||||
addCriterion("node_id >", value, "nodeId");
|
addCriterion("node_id >", value, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdGreaterThanOrEqualTo(String value) {
|
public Criteria andNodeIdGreaterThanOrEqualTo(Integer value) {
|
||||||
addCriterion("node_id >=", value, "nodeId");
|
addCriterion("node_id >=", value, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdLessThan(String value) {
|
public Criteria andNodeIdLessThan(Integer value) {
|
||||||
addCriterion("node_id <", value, "nodeId");
|
addCriterion("node_id <", value, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdLessThanOrEqualTo(String value) {
|
public Criteria andNodeIdLessThanOrEqualTo(Integer value) {
|
||||||
addCriterion("node_id <=", value, "nodeId");
|
addCriterion("node_id <=", value, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdLike(String value) {
|
public Criteria andNodeIdIn(List<Integer> values) {
|
||||||
addCriterion("node_id like", value, "nodeId");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andNodeIdNotLike(String value) {
|
|
||||||
addCriterion("node_id not like", value, "nodeId");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andNodeIdIn(List<String> values) {
|
|
||||||
addCriterion("node_id in", values, "nodeId");
|
addCriterion("node_id in", values, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdNotIn(List<String> values) {
|
public Criteria andNodeIdNotIn(List<Integer> values) {
|
||||||
addCriterion("node_id not in", values, "nodeId");
|
addCriterion("node_id not in", values, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdBetween(String value1, String value2) {
|
public Criteria andNodeIdBetween(Integer value1, Integer value2) {
|
||||||
addCriterion("node_id between", value1, value2, "nodeId");
|
addCriterion("node_id between", value1, value2, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andNodeIdNotBetween(String value1, String value2) {
|
public Criteria andNodeIdNotBetween(Integer value1, Integer value2) {
|
||||||
addCriterion("node_id not between", value1, value2, "nodeId");
|
addCriterion("node_id not between", value1, value2, "nodeId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ package io.metersphere.base.domain;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
public class TestCaseNode implements Serializable {
|
public class TestCaseNode implements Serializable {
|
||||||
private String id;
|
private Integer id;
|
||||||
|
|
||||||
private String projectId;
|
private String projectId;
|
||||||
|
|
||||||
|
@ -19,12 +19,12 @@ public class TestCaseNode implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public String getId() {
|
public Integer getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(String id) {
|
public void setId(Integer id) {
|
||||||
this.id = id == null ? null : id.trim();
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getProjectId() {
|
public String getProjectId() {
|
||||||
|
|
|
@ -114,62 +114,52 @@ public class TestCaseNodeExample {
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdEqualTo(String value) {
|
public Criteria andIdEqualTo(Integer value) {
|
||||||
addCriterion("id =", value, "id");
|
addCriterion("id =", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdNotEqualTo(String value) {
|
public Criteria andIdNotEqualTo(Integer value) {
|
||||||
addCriterion("id <>", value, "id");
|
addCriterion("id <>", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdGreaterThan(String value) {
|
public Criteria andIdGreaterThan(Integer value) {
|
||||||
addCriterion("id >", value, "id");
|
addCriterion("id >", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdGreaterThanOrEqualTo(String value) {
|
public Criteria andIdGreaterThanOrEqualTo(Integer value) {
|
||||||
addCriterion("id >=", value, "id");
|
addCriterion("id >=", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdLessThan(String value) {
|
public Criteria andIdLessThan(Integer value) {
|
||||||
addCriterion("id <", value, "id");
|
addCriterion("id <", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdLessThanOrEqualTo(String value) {
|
public Criteria andIdLessThanOrEqualTo(Integer value) {
|
||||||
addCriterion("id <=", value, "id");
|
addCriterion("id <=", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdLike(String value) {
|
public Criteria andIdIn(List<Integer> values) {
|
||||||
addCriterion("id like", value, "id");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andIdNotLike(String value) {
|
|
||||||
addCriterion("id not like", value, "id");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andIdIn(List<String> values) {
|
|
||||||
addCriterion("id in", values, "id");
|
addCriterion("id in", values, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdNotIn(List<String> values) {
|
public Criteria andIdNotIn(List<Integer> values) {
|
||||||
addCriterion("id not in", values, "id");
|
addCriterion("id not in", values, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdBetween(String value1, String value2) {
|
public Criteria andIdBetween(Integer value1, Integer value2) {
|
||||||
addCriterion("id between", value1, value2, "id");
|
addCriterion("id between", value1, value2, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdNotBetween(String value1, String value2) {
|
public Criteria andIdNotBetween(Integer value1, Integer value2) {
|
||||||
addCriterion("id not between", value1, value2, "id");
|
addCriterion("id not between", value1, value2, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ package io.metersphere.base.domain;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
public class TestPlanTestCase implements Serializable {
|
public class TestPlanTestCase implements Serializable {
|
||||||
private String id;
|
private Integer id;
|
||||||
|
|
||||||
private String planId;
|
private String planId;
|
||||||
|
|
||||||
|
@ -23,12 +23,12 @@ public class TestPlanTestCase implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public String getId() {
|
public Integer getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(String id) {
|
public void setId(Integer id) {
|
||||||
this.id = id == null ? null : id.trim();
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPlanId() {
|
public String getPlanId() {
|
||||||
|
|
|
@ -114,62 +114,52 @@ public class TestPlanTestCaseExample {
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdEqualTo(String value) {
|
public Criteria andIdEqualTo(Integer value) {
|
||||||
addCriterion("id =", value, "id");
|
addCriterion("id =", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdNotEqualTo(String value) {
|
public Criteria andIdNotEqualTo(Integer value) {
|
||||||
addCriterion("id <>", value, "id");
|
addCriterion("id <>", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdGreaterThan(String value) {
|
public Criteria andIdGreaterThan(Integer value) {
|
||||||
addCriterion("id >", value, "id");
|
addCriterion("id >", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdGreaterThanOrEqualTo(String value) {
|
public Criteria andIdGreaterThanOrEqualTo(Integer value) {
|
||||||
addCriterion("id >=", value, "id");
|
addCriterion("id >=", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdLessThan(String value) {
|
public Criteria andIdLessThan(Integer value) {
|
||||||
addCriterion("id <", value, "id");
|
addCriterion("id <", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdLessThanOrEqualTo(String value) {
|
public Criteria andIdLessThanOrEqualTo(Integer value) {
|
||||||
addCriterion("id <=", value, "id");
|
addCriterion("id <=", value, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdLike(String value) {
|
public Criteria andIdIn(List<Integer> values) {
|
||||||
addCriterion("id like", value, "id");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andIdNotLike(String value) {
|
|
||||||
addCriterion("id not like", value, "id");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andIdIn(List<String> values) {
|
|
||||||
addCriterion("id in", values, "id");
|
addCriterion("id in", values, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdNotIn(List<String> values) {
|
public Criteria andIdNotIn(List<Integer> values) {
|
||||||
addCriterion("id not in", values, "id");
|
addCriterion("id not in", values, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdBetween(String value1, String value2) {
|
public Criteria andIdBetween(Integer value1, Integer value2) {
|
||||||
addCriterion("id between", value1, value2, "id");
|
addCriterion("id between", value1, value2, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andIdNotBetween(String value1, String value2) {
|
public Criteria andIdNotBetween(Integer value1, Integer value2) {
|
||||||
addCriterion("id not between", value1, value2, "id");
|
addCriterion("id not between", value1, value2, "id");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<mapper namespace="io.metersphere.base.mapper.TestCaseMapper">
|
<mapper namespace="io.metersphere.base.mapper.TestCaseMapper">
|
||||||
<resultMap id="BaseResultMap" type="io.metersphere.base.domain.TestCase">
|
<resultMap id="BaseResultMap" type="io.metersphere.base.domain.TestCase">
|
||||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||||
<result column="node_id" jdbcType="VARCHAR" property="nodeId" />
|
<result column="node_id" jdbcType="INTEGER" property="nodeId" />
|
||||||
<result column="project_id" jdbcType="VARCHAR" property="projectId" />
|
<result column="project_id" jdbcType="VARCHAR" property="projectId" />
|
||||||
<result column="name" jdbcType="VARCHAR" property="name" />
|
<result column="name" jdbcType="VARCHAR" property="name" />
|
||||||
<result column="type" jdbcType="VARCHAR" property="type" />
|
<result column="type" jdbcType="VARCHAR" property="type" />
|
||||||
|
@ -137,7 +137,7 @@
|
||||||
method, prerequisite, create_time,
|
method, prerequisite, create_time,
|
||||||
update_time, detail, steps,
|
update_time, detail, steps,
|
||||||
tags)
|
tags)
|
||||||
values (#{id,jdbcType=VARCHAR}, #{nodeId,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR},
|
values (#{id,jdbcType=VARCHAR}, #{nodeId,jdbcType=INTEGER}, #{projectId,jdbcType=VARCHAR},
|
||||||
#{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{priority,jdbcType=VARCHAR},
|
#{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{priority,jdbcType=VARCHAR},
|
||||||
#{method,jdbcType=VARCHAR}, #{prerequisite,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT},
|
#{method,jdbcType=VARCHAR}, #{prerequisite,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT},
|
||||||
#{updateTime,jdbcType=BIGINT}, #{detail,jdbcType=LONGVARCHAR}, #{steps,jdbcType=LONGVARCHAR},
|
#{updateTime,jdbcType=BIGINT}, #{detail,jdbcType=LONGVARCHAR}, #{steps,jdbcType=LONGVARCHAR},
|
||||||
|
@ -191,7 +191,7 @@
|
||||||
#{id,jdbcType=VARCHAR},
|
#{id,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
<if test="nodeId != null">
|
<if test="nodeId != null">
|
||||||
#{nodeId,jdbcType=VARCHAR},
|
#{nodeId,jdbcType=INTEGER},
|
||||||
</if>
|
</if>
|
||||||
<if test="projectId != null">
|
<if test="projectId != null">
|
||||||
#{projectId,jdbcType=VARCHAR},
|
#{projectId,jdbcType=VARCHAR},
|
||||||
|
@ -241,7 +241,7 @@
|
||||||
id = #{record.id,jdbcType=VARCHAR},
|
id = #{record.id,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
<if test="record.nodeId != null">
|
<if test="record.nodeId != null">
|
||||||
node_id = #{record.nodeId,jdbcType=VARCHAR},
|
node_id = #{record.nodeId,jdbcType=INTEGER},
|
||||||
</if>
|
</if>
|
||||||
<if test="record.projectId != null">
|
<if test="record.projectId != null">
|
||||||
project_id = #{record.projectId,jdbcType=VARCHAR},
|
project_id = #{record.projectId,jdbcType=VARCHAR},
|
||||||
|
@ -284,7 +284,7 @@
|
||||||
<update id="updateByExampleWithBLOBs" parameterType="map">
|
<update id="updateByExampleWithBLOBs" parameterType="map">
|
||||||
update test_case
|
update test_case
|
||||||
set id = #{record.id,jdbcType=VARCHAR},
|
set id = #{record.id,jdbcType=VARCHAR},
|
||||||
node_id = #{record.nodeId,jdbcType=VARCHAR},
|
node_id = #{record.nodeId,jdbcType=INTEGER},
|
||||||
project_id = #{record.projectId,jdbcType=VARCHAR},
|
project_id = #{record.projectId,jdbcType=VARCHAR},
|
||||||
name = #{record.name,jdbcType=VARCHAR},
|
name = #{record.name,jdbcType=VARCHAR},
|
||||||
type = #{record.type,jdbcType=VARCHAR},
|
type = #{record.type,jdbcType=VARCHAR},
|
||||||
|
@ -303,7 +303,7 @@
|
||||||
<update id="updateByExample" parameterType="map">
|
<update id="updateByExample" parameterType="map">
|
||||||
update test_case
|
update test_case
|
||||||
set id = #{record.id,jdbcType=VARCHAR},
|
set id = #{record.id,jdbcType=VARCHAR},
|
||||||
node_id = #{record.nodeId,jdbcType=VARCHAR},
|
node_id = #{record.nodeId,jdbcType=INTEGER},
|
||||||
project_id = #{record.projectId,jdbcType=VARCHAR},
|
project_id = #{record.projectId,jdbcType=VARCHAR},
|
||||||
name = #{record.name,jdbcType=VARCHAR},
|
name = #{record.name,jdbcType=VARCHAR},
|
||||||
type = #{record.type,jdbcType=VARCHAR},
|
type = #{record.type,jdbcType=VARCHAR},
|
||||||
|
@ -320,7 +320,7 @@
|
||||||
update test_case
|
update test_case
|
||||||
<set>
|
<set>
|
||||||
<if test="nodeId != null">
|
<if test="nodeId != null">
|
||||||
node_id = #{nodeId,jdbcType=VARCHAR},
|
node_id = #{nodeId,jdbcType=INTEGER},
|
||||||
</if>
|
</if>
|
||||||
<if test="projectId != null">
|
<if test="projectId != null">
|
||||||
project_id = #{projectId,jdbcType=VARCHAR},
|
project_id = #{projectId,jdbcType=VARCHAR},
|
||||||
|
@ -360,7 +360,7 @@
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByPrimaryKeyWithBLOBs" parameterType="io.metersphere.base.domain.TestCaseWithBLOBs">
|
<update id="updateByPrimaryKeyWithBLOBs" parameterType="io.metersphere.base.domain.TestCaseWithBLOBs">
|
||||||
update test_case
|
update test_case
|
||||||
set node_id = #{nodeId,jdbcType=VARCHAR},
|
set node_id = #{nodeId,jdbcType=INTEGER},
|
||||||
project_id = #{projectId,jdbcType=VARCHAR},
|
project_id = #{projectId,jdbcType=VARCHAR},
|
||||||
name = #{name,jdbcType=VARCHAR},
|
name = #{name,jdbcType=VARCHAR},
|
||||||
type = #{type,jdbcType=VARCHAR},
|
type = #{type,jdbcType=VARCHAR},
|
||||||
|
@ -376,7 +376,7 @@
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.TestCase">
|
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.TestCase">
|
||||||
update test_case
|
update test_case
|
||||||
set node_id = #{nodeId,jdbcType=VARCHAR},
|
set node_id = #{nodeId,jdbcType=INTEGER},
|
||||||
project_id = #{projectId,jdbcType=VARCHAR},
|
project_id = #{projectId,jdbcType=VARCHAR},
|
||||||
name = #{name,jdbcType=VARCHAR},
|
name = #{name,jdbcType=VARCHAR},
|
||||||
type = #{type,jdbcType=VARCHAR},
|
type = #{type,jdbcType=VARCHAR},
|
||||||
|
|
|
@ -10,7 +10,7 @@ public interface TestCaseNodeMapper {
|
||||||
|
|
||||||
int deleteByExample(TestCaseNodeExample example);
|
int deleteByExample(TestCaseNodeExample example);
|
||||||
|
|
||||||
int deleteByPrimaryKey(String id);
|
int deleteByPrimaryKey(Integer id);
|
||||||
|
|
||||||
int insert(TestCaseNode record);
|
int insert(TestCaseNode record);
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ public interface TestCaseNodeMapper {
|
||||||
|
|
||||||
List<TestCaseNode> selectByExample(TestCaseNodeExample example);
|
List<TestCaseNode> selectByExample(TestCaseNodeExample example);
|
||||||
|
|
||||||
TestCaseNode selectByPrimaryKey(String id);
|
TestCaseNode selectByPrimaryKey(Integer id);
|
||||||
|
|
||||||
int updateByExampleSelective(@Param("record") TestCaseNode record, @Param("example") TestCaseNodeExample example);
|
int updateByExampleSelective(@Param("record") TestCaseNode record, @Param("example") TestCaseNodeExample example);
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="io.metersphere.base.mapper.TestCaseNodeMapper">
|
<mapper namespace="io.metersphere.base.mapper.TestCaseNodeMapper">
|
||||||
<resultMap id="BaseResultMap" type="io.metersphere.base.domain.TestCaseNode">
|
<resultMap id="BaseResultMap" type="io.metersphere.base.domain.TestCaseNode">
|
||||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
<id column="id" jdbcType="INTEGER" property="id" />
|
||||||
<result column="project_id" jdbcType="VARCHAR" property="projectId" />
|
<result column="project_id" jdbcType="VARCHAR" property="projectId" />
|
||||||
<result column="name" jdbcType="VARCHAR" property="name" />
|
<result column="name" jdbcType="VARCHAR" property="name" />
|
||||||
<result column="p_id" jdbcType="VARCHAR" property="pId" />
|
<result column="p_id" jdbcType="VARCHAR" property="pId" />
|
||||||
|
@ -85,15 +85,15 @@
|
||||||
order by ${orderByClause}
|
order by ${orderByClause}
|
||||||
</if>
|
</if>
|
||||||
</select>
|
</select>
|
||||||
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
|
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
|
||||||
select
|
select
|
||||||
<include refid="Base_Column_List" />
|
<include refid="Base_Column_List" />
|
||||||
from test_case_node
|
from test_case_node
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</select>
|
</select>
|
||||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
|
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
||||||
delete from test_case_node
|
delete from test_case_node
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</delete>
|
</delete>
|
||||||
<delete id="deleteByExample" parameterType="io.metersphere.base.domain.TestCaseNodeExample">
|
<delete id="deleteByExample" parameterType="io.metersphere.base.domain.TestCaseNodeExample">
|
||||||
delete from test_case_node
|
delete from test_case_node
|
||||||
|
@ -105,7 +105,7 @@
|
||||||
insert into test_case_node (id, project_id, name,
|
insert into test_case_node (id, project_id, name,
|
||||||
p_id, order, create_time,
|
p_id, order, create_time,
|
||||||
update_time)
|
update_time)
|
||||||
values (#{id,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
|
values (#{id,jdbcType=INTEGER}, #{projectId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
|
||||||
#{pId,jdbcType=VARCHAR}, #{order,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT},
|
#{pId,jdbcType=VARCHAR}, #{order,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT},
|
||||||
#{updateTime,jdbcType=BIGINT})
|
#{updateTime,jdbcType=BIGINT})
|
||||||
</insert>
|
</insert>
|
||||||
|
@ -136,7 +136,7 @@
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
#{id,jdbcType=VARCHAR},
|
#{id,jdbcType=INTEGER},
|
||||||
</if>
|
</if>
|
||||||
<if test="projectId != null">
|
<if test="projectId != null">
|
||||||
#{projectId,jdbcType=VARCHAR},
|
#{projectId,jdbcType=VARCHAR},
|
||||||
|
@ -168,7 +168,7 @@
|
||||||
update test_case_node
|
update test_case_node
|
||||||
<set>
|
<set>
|
||||||
<if test="record.id != null">
|
<if test="record.id != null">
|
||||||
id = #{record.id,jdbcType=VARCHAR},
|
id = #{record.id,jdbcType=INTEGER},
|
||||||
</if>
|
</if>
|
||||||
<if test="record.projectId != null">
|
<if test="record.projectId != null">
|
||||||
project_id = #{record.projectId,jdbcType=VARCHAR},
|
project_id = #{record.projectId,jdbcType=VARCHAR},
|
||||||
|
@ -195,7 +195,7 @@
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByExample" parameterType="map">
|
<update id="updateByExample" parameterType="map">
|
||||||
update test_case_node
|
update test_case_node
|
||||||
set id = #{record.id,jdbcType=VARCHAR},
|
set id = #{record.id,jdbcType=INTEGER},
|
||||||
project_id = #{record.projectId,jdbcType=VARCHAR},
|
project_id = #{record.projectId,jdbcType=VARCHAR},
|
||||||
name = #{record.name,jdbcType=VARCHAR},
|
name = #{record.name,jdbcType=VARCHAR},
|
||||||
p_id = #{record.pId,jdbcType=VARCHAR},
|
p_id = #{record.pId,jdbcType=VARCHAR},
|
||||||
|
@ -228,7 +228,7 @@
|
||||||
update_time = #{updateTime,jdbcType=BIGINT},
|
update_time = #{updateTime,jdbcType=BIGINT},
|
||||||
</if>
|
</if>
|
||||||
</set>
|
</set>
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.TestCaseNode">
|
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.TestCaseNode">
|
||||||
update test_case_node
|
update test_case_node
|
||||||
|
@ -238,6 +238,6 @@
|
||||||
order = #{order,jdbcType=BIGINT},
|
order = #{order,jdbcType=BIGINT},
|
||||||
create_time = #{createTime,jdbcType=BIGINT},
|
create_time = #{createTime,jdbcType=BIGINT},
|
||||||
update_time = #{updateTime,jdbcType=BIGINT}
|
update_time = #{updateTime,jdbcType=BIGINT}
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</update>
|
</update>
|
||||||
</mapper>
|
</mapper>
|
|
@ -10,7 +10,7 @@ public interface TestPlanTestCaseMapper {
|
||||||
|
|
||||||
int deleteByExample(TestPlanTestCaseExample example);
|
int deleteByExample(TestPlanTestCaseExample example);
|
||||||
|
|
||||||
int deleteByPrimaryKey(String id);
|
int deleteByPrimaryKey(Integer id);
|
||||||
|
|
||||||
int insert(TestPlanTestCase record);
|
int insert(TestPlanTestCase record);
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ public interface TestPlanTestCaseMapper {
|
||||||
|
|
||||||
List<TestPlanTestCase> selectByExample(TestPlanTestCaseExample example);
|
List<TestPlanTestCase> selectByExample(TestPlanTestCaseExample example);
|
||||||
|
|
||||||
TestPlanTestCase selectByPrimaryKey(String id);
|
TestPlanTestCase selectByPrimaryKey(Integer id);
|
||||||
|
|
||||||
int updateByExampleSelective(@Param("record") TestPlanTestCase record, @Param("example") TestPlanTestCaseExample example);
|
int updateByExampleSelective(@Param("record") TestPlanTestCase record, @Param("example") TestPlanTestCaseExample example);
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="io.metersphere.base.mapper.TestPlanTestCaseMapper">
|
<mapper namespace="io.metersphere.base.mapper.TestPlanTestCaseMapper">
|
||||||
<resultMap id="BaseResultMap" type="io.metersphere.base.domain.TestPlanTestCase">
|
<resultMap id="BaseResultMap" type="io.metersphere.base.domain.TestPlanTestCase">
|
||||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
<id column="id" jdbcType="INTEGER" property="id" />
|
||||||
<result column="plan_id" jdbcType="VARCHAR" property="planId" />
|
<result column="plan_id" jdbcType="VARCHAR" property="planId" />
|
||||||
<result column="case_id" jdbcType="VARCHAR" property="caseId" />
|
<result column="case_id" jdbcType="VARCHAR" property="caseId" />
|
||||||
<result column="executor" jdbcType="VARCHAR" property="executor" />
|
<result column="executor" jdbcType="VARCHAR" property="executor" />
|
||||||
|
@ -108,17 +108,17 @@
|
||||||
order by ${orderByClause}
|
order by ${orderByClause}
|
||||||
</if>
|
</if>
|
||||||
</select>
|
</select>
|
||||||
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
|
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs">
|
||||||
select
|
select
|
||||||
<include refid="Base_Column_List" />
|
<include refid="Base_Column_List" />
|
||||||
,
|
,
|
||||||
<include refid="Blob_Column_List" />
|
<include refid="Blob_Column_List" />
|
||||||
from test_plan_test_case
|
from test_plan_test_case
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</select>
|
</select>
|
||||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
|
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
||||||
delete from test_plan_test_case
|
delete from test_plan_test_case
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</delete>
|
</delete>
|
||||||
<delete id="deleteByExample" parameterType="io.metersphere.base.domain.TestPlanTestCaseExample">
|
<delete id="deleteByExample" parameterType="io.metersphere.base.domain.TestPlanTestCaseExample">
|
||||||
delete from test_plan_test_case
|
delete from test_plan_test_case
|
||||||
|
@ -131,7 +131,7 @@
|
||||||
executor, status, remark,
|
executor, status, remark,
|
||||||
create_time, update_time, results
|
create_time, update_time, results
|
||||||
)
|
)
|
||||||
values (#{id,jdbcType=VARCHAR}, #{planId,jdbcType=VARCHAR}, #{caseId,jdbcType=VARCHAR},
|
values (#{id,jdbcType=INTEGER}, #{planId,jdbcType=VARCHAR}, #{caseId,jdbcType=VARCHAR},
|
||||||
#{executor,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
|
#{executor,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
|
||||||
#{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, #{results,jdbcType=LONGVARCHAR}
|
#{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, #{results,jdbcType=LONGVARCHAR}
|
||||||
)
|
)
|
||||||
|
@ -169,7 +169,7 @@
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
#{id,jdbcType=VARCHAR},
|
#{id,jdbcType=INTEGER},
|
||||||
</if>
|
</if>
|
||||||
<if test="planId != null">
|
<if test="planId != null">
|
||||||
#{planId,jdbcType=VARCHAR},
|
#{planId,jdbcType=VARCHAR},
|
||||||
|
@ -207,7 +207,7 @@
|
||||||
update test_plan_test_case
|
update test_plan_test_case
|
||||||
<set>
|
<set>
|
||||||
<if test="record.id != null">
|
<if test="record.id != null">
|
||||||
id = #{record.id,jdbcType=VARCHAR},
|
id = #{record.id,jdbcType=INTEGER},
|
||||||
</if>
|
</if>
|
||||||
<if test="record.planId != null">
|
<if test="record.planId != null">
|
||||||
plan_id = #{record.planId,jdbcType=VARCHAR},
|
plan_id = #{record.planId,jdbcType=VARCHAR},
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByExampleWithBLOBs" parameterType="map">
|
<update id="updateByExampleWithBLOBs" parameterType="map">
|
||||||
update test_plan_test_case
|
update test_plan_test_case
|
||||||
set id = #{record.id,jdbcType=VARCHAR},
|
set id = #{record.id,jdbcType=INTEGER},
|
||||||
plan_id = #{record.planId,jdbcType=VARCHAR},
|
plan_id = #{record.planId,jdbcType=VARCHAR},
|
||||||
case_id = #{record.caseId,jdbcType=VARCHAR},
|
case_id = #{record.caseId,jdbcType=VARCHAR},
|
||||||
executor = #{record.executor,jdbcType=VARCHAR},
|
executor = #{record.executor,jdbcType=VARCHAR},
|
||||||
|
@ -255,7 +255,7 @@
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByExample" parameterType="map">
|
<update id="updateByExample" parameterType="map">
|
||||||
update test_plan_test_case
|
update test_plan_test_case
|
||||||
set id = #{record.id,jdbcType=VARCHAR},
|
set id = #{record.id,jdbcType=INTEGER},
|
||||||
plan_id = #{record.planId,jdbcType=VARCHAR},
|
plan_id = #{record.planId,jdbcType=VARCHAR},
|
||||||
case_id = #{record.caseId,jdbcType=VARCHAR},
|
case_id = #{record.caseId,jdbcType=VARCHAR},
|
||||||
executor = #{record.executor,jdbcType=VARCHAR},
|
executor = #{record.executor,jdbcType=VARCHAR},
|
||||||
|
@ -295,7 +295,7 @@
|
||||||
results = #{results,jdbcType=LONGVARCHAR},
|
results = #{results,jdbcType=LONGVARCHAR},
|
||||||
</if>
|
</if>
|
||||||
</set>
|
</set>
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByPrimaryKeyWithBLOBs" parameterType="io.metersphere.base.domain.TestPlanTestCase">
|
<update id="updateByPrimaryKeyWithBLOBs" parameterType="io.metersphere.base.domain.TestPlanTestCase">
|
||||||
update test_plan_test_case
|
update test_plan_test_case
|
||||||
|
@ -307,7 +307,7 @@
|
||||||
create_time = #{createTime,jdbcType=BIGINT},
|
create_time = #{createTime,jdbcType=BIGINT},
|
||||||
update_time = #{updateTime,jdbcType=BIGINT},
|
update_time = #{updateTime,jdbcType=BIGINT},
|
||||||
results = #{results,jdbcType=LONGVARCHAR}
|
results = #{results,jdbcType=LONGVARCHAR}
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.TestPlanTestCase">
|
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.TestPlanTestCase">
|
||||||
update test_plan_test_case
|
update test_plan_test_case
|
||||||
|
@ -318,6 +318,6 @@
|
||||||
remark = #{remark,jdbcType=VARCHAR},
|
remark = #{remark,jdbcType=VARCHAR},
|
||||||
create_time = #{createTime,jdbcType=BIGINT},
|
create_time = #{createTime,jdbcType=BIGINT},
|
||||||
update_time = #{updateTime,jdbcType=BIGINT}
|
update_time = #{updateTime,jdbcType=BIGINT}
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</update>
|
</update>
|
||||||
</mapper>
|
</mapper>
|
|
@ -1,12 +1,10 @@
|
||||||
package io.metersphere.report;
|
package io.metersphere.report;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.opencsv.bean.CsvToBean;
|
import com.opencsv.bean.CsvToBean;
|
||||||
import com.opencsv.bean.CsvToBeanBuilder;
|
import com.opencsv.bean.CsvToBeanBuilder;
|
||||||
import com.opencsv.bean.HeaderColumnNameMappingStrategy;
|
import com.opencsv.bean.HeaderColumnNameMappingStrategy;
|
||||||
import io.metersphere.report.base.Metric;
|
import io.metersphere.report.base.Metric;
|
||||||
import io.metersphere.report.base.RequestStatistics;
|
import io.metersphere.report.base.RequestStatistics;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
@ -76,10 +74,9 @@ public class JtlResolver {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Integer tp90 = elapsedList.size()*9/10;
|
Integer tp90 = elapsedList.size()*90/100;
|
||||||
Integer tp95 = elapsedList.size()*95/100;
|
Integer tp95 = elapsedList.size()*95/100;
|
||||||
Integer tp99 = elapsedList.size()*99/100;
|
Integer tp99 = elapsedList.size()*99/100;
|
||||||
|
|
||||||
Long l = Long.valueOf(timestampList.get(index-1)) - Long.valueOf(timestampList.get(0));
|
Long l = Long.valueOf(timestampList.get(index-1)) - Long.valueOf(timestampList.get(0));
|
||||||
|
|
||||||
RequestStatistics requestStatistics = new RequestStatistics();
|
RequestStatistics requestStatistics = new RequestStatistics();
|
||||||
|
@ -101,6 +98,11 @@ public class JtlResolver {
|
||||||
requestStatistics.setMin(elapsedList.get(0)+"");
|
requestStatistics.setMin(elapsedList.get(0)+"");
|
||||||
requestStatistics.setMax(elapsedList.get(index-1)+"");
|
requestStatistics.setMax(elapsedList.get(index-1)+"");
|
||||||
requestStatistics.setErrors(String.format("%.2f",failSize*100.0/index)+"%");
|
requestStatistics.setErrors(String.format("%.2f",failSize*100.0/index)+"%");
|
||||||
|
requestStatistics.setKo(failSize);
|
||||||
|
/**
|
||||||
|
* #Samples/(取最大值(ts+t)-取最小值(ts))*1000
|
||||||
|
*/
|
||||||
|
// todo Avg Bandwidth(KBytes/s)
|
||||||
requestStatistics.setKbPerSec(String.format("%.2f",totalBytes*1.0/1024/(l*1.0/1000)));
|
requestStatistics.setKbPerSec(String.format("%.2f",totalBytes*1.0/1024/(l*1.0/1000)));
|
||||||
requestStatisticsList.add(requestStatistics);
|
requestStatisticsList.add(requestStatistics);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,9 @@ public class RequestStatistics {
|
||||||
/**错误率 Error Percentage */
|
/**错误率 Error Percentage */
|
||||||
private String errors;
|
private String errors;
|
||||||
|
|
||||||
|
/**错误个数*/
|
||||||
|
private Integer ko;
|
||||||
|
|
||||||
public String getRequestLabel() {
|
public String getRequestLabel() {
|
||||||
return requestLabel;
|
return requestLabel;
|
||||||
}
|
}
|
||||||
|
@ -122,4 +125,12 @@ public class RequestStatistics {
|
||||||
public void setErrors(String errors) {
|
public void setErrors(String errors) {
|
||||||
this.errors = errors;
|
this.errors = errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getKo() {
|
||||||
|
return ko;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKo(Integer ko) {
|
||||||
|
this.ko = ko;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,16 +18,16 @@ CREATE TABLE IF NOT EXISTS `test_plan` (
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `test_case_node` (
|
CREATE TABLE IF NOT EXISTS `test_case_node` (
|
||||||
`id` varchar(50) NOT NULL COMMENT 'Test case node ID',
|
`id` int(13) PRIMARY KEY AUTO_INCREMENT COMMENT 'Test case node ID',
|
||||||
`project_id` varchar(50) NOT NULL COMMENT 'Project ID this node belongs to',
|
`project_id` varchar(50) NOT NULL COMMENT 'Project ID this node belongs to',
|
||||||
`name` varchar(64) NOT NULL COMMENT 'Node name',
|
`name` varchar(64) NOT NULL COMMENT 'Node name',
|
||||||
`p_id` varchar(50) NOT NULL COMMENT 'Parent node ID',
|
`p_id` varchar(50) NOT NULL COMMENT 'Parent node ID',
|
||||||
`order` bigint(13) COMMENT 'Node order',
|
`order` bigint(13) COMMENT 'Node order',
|
||||||
`create_time` bigint(13) NOT NULL COMMENT 'Create timestamp',
|
`create_time` bigint(13) NOT NULL COMMENT 'Create timestamp',
|
||||||
`update_time` bigint(13) NOT NULL COMMENT 'Update timestamp',
|
`update_time` bigint(13) NOT NULL COMMENT 'Update timestamp',
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
FOREIGN KEY (`project_id`) references project(`id`)
|
FOREIGN KEY (`project_id`) references project(`id`)
|
||||||
)
|
)
|
||||||
|
AUTO_INCREMENT = 1
|
||||||
ENGINE = InnoDB
|
ENGINE = InnoDB
|
||||||
DEFAULT CHARSET = utf8mb4
|
DEFAULT CHARSET = utf8mb4
|
||||||
COLLATE = utf8mb4_bin;
|
COLLATE = utf8mb4_bin;
|
||||||
|
@ -35,7 +35,7 @@ CREATE TABLE IF NOT EXISTS `test_case_node` (
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `test_case` (
|
CREATE TABLE IF NOT EXISTS `test_case` (
|
||||||
`id` varchar(50) NOT NULL COMMENT 'Test case ID',
|
`id` varchar(50) NOT NULL COMMENT 'Test case ID',
|
||||||
`node_id` varchar(50) NOT NULL COMMENT 'Node ID this case belongs to',
|
`node_id` int(13) NOT NULL COMMENT 'Node ID this case belongs to',
|
||||||
`project_id` varchar(50) NOT NULL COMMENT 'Project ID this test belongs to',
|
`project_id` varchar(50) NOT NULL COMMENT 'Project ID this test belongs to',
|
||||||
`name` varchar(64) NOT NULL COMMENT 'Case name',
|
`name` varchar(64) NOT NULL COMMENT 'Case name',
|
||||||
`type` varchar(25) NOT NULL COMMENT 'Test case type',
|
`type` varchar(25) NOT NULL COMMENT 'Test case type',
|
||||||
|
@ -57,7 +57,7 @@ CREATE TABLE IF NOT EXISTS `test_case` (
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `test_plan_test_case` (
|
CREATE TABLE IF NOT EXISTS `test_plan_test_case` (
|
||||||
`id` varchar(50) NOT NULL COMMENT 'ID',
|
`id` int(13) PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
|
||||||
`plan_id` varchar(50) NOT NULL COMMENT 'Plan ID relation to',
|
`plan_id` varchar(50) NOT NULL COMMENT 'Plan ID relation to',
|
||||||
`case_id` varchar(50) NOT NULL COMMENT 'Case ID relation to',
|
`case_id` varchar(50) NOT NULL COMMENT 'Case ID relation to',
|
||||||
`executor` varchar(64) NOT NULL COMMENT 'Test case executor',
|
`executor` varchar(64) NOT NULL COMMENT 'Test case executor',
|
||||||
|
@ -66,10 +66,10 @@ CREATE TABLE IF NOT EXISTS `test_plan_test_case` (
|
||||||
`remark` varchar(255) DEFAULT NULL COMMENT 'Test case remark',
|
`remark` varchar(255) DEFAULT NULL COMMENT 'Test case remark',
|
||||||
`create_time` bigint(13) NOT NULL COMMENT 'Create timestamp',
|
`create_time` bigint(13) NOT NULL COMMENT 'Create timestamp',
|
||||||
`update_time` bigint(13) NOT NULL COMMENT 'Update timestamp',
|
`update_time` bigint(13) NOT NULL COMMENT 'Update timestamp',
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
FOREIGN KEY (`plan_id`) references test_plan(`id`),
|
FOREIGN KEY (`plan_id`) references test_plan(`id`),
|
||||||
FOREIGN KEY (`case_id`) references test_case(`id`)
|
FOREIGN KEY (`case_id`) references test_case(`id`)
|
||||||
)
|
)
|
||||||
|
AUTO_INCREMENT = 1
|
||||||
ENGINE = InnoDB
|
ENGINE = InnoDB
|
||||||
DEFAULT CHARSET = utf8mb4
|
DEFAULT CHARSET = utf8mb4
|
||||||
COLLATE = utf8mb4_bin;
|
COLLATE = utf8mb4_bin;
|
|
@ -46,19 +46,10 @@
|
||||||
|
|
||||||
<!--要生成的数据库表 -->
|
<!--要生成的数据库表 -->
|
||||||
|
|
||||||
<!-- <table tableName="user"/>-->
|
<table tableName="test_plan"/>
|
||||||
<!-- <table tableName="user_role"/>-->
|
<table tableName="test_case_node"/>
|
||||||
<!-- <table tableName="workspace"/>-->
|
<table tableName="test_case"/>
|
||||||
<!-- <table tableName="test_resource_pool"/>-->
|
<table tableName="test_plan_test_case"/>
|
||||||
<!-- <table tableName="test_resource"/>-->
|
|
||||||
<!-- <table tableName="system_parameter"/>-->
|
|
||||||
<!-- <table tableName="role"/>-->
|
|
||||||
<!-- <table tableName="project"/>-->
|
|
||||||
<!-- <table tableName="organization"/>-->
|
|
||||||
<!-- <table tableName="load_test_report"/>-->
|
|
||||||
<table tableName="load_test"/>
|
|
||||||
<!-- <table tableName="file_content"/>-->
|
|
||||||
<!-- <table tableName="file_metadata"/>-->
|
|
||||||
<!-- <table tableName="load_test_file"/>-->
|
|
||||||
</context>
|
</context>
|
||||||
</generatorConfiguration>
|
</generatorConfiguration>
|
|
@ -42,7 +42,8 @@
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"vue/no-unused-components": "off",
|
"vue/no-unused-components": "off",
|
||||||
"no-console":"off"
|
"no-console":"off",
|
||||||
|
"no-unused-vars": "off"
|
||||||
},
|
},
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"parser": "babel-eslint"
|
"parser": "babel-eslint"
|
||||||
|
|
|
@ -28,6 +28,7 @@ import TrackHome from "../../track/home/TrackHome";
|
||||||
import TestPlan from "../../track/plan/TestPlan";
|
import TestPlan from "../../track/plan/TestPlan";
|
||||||
import TestCase from "../../track/case/TestCase";
|
import TestCase from "../../track/case/TestCase";
|
||||||
import TestTrack from "../../track/TestTrack";
|
import TestTrack from "../../track/TestTrack";
|
||||||
|
import EditTestCase from "../../track/case/EditTestCase";
|
||||||
|
|
||||||
Vue.use(VueRouter);
|
Vue.use(VueRouter);
|
||||||
|
|
||||||
|
@ -203,7 +204,24 @@ const router = new VueRouter({
|
||||||
component: TrackHome,
|
component: TrackHome,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'case',
|
path: 'case/create',
|
||||||
|
name: "createCase",
|
||||||
|
component: EditTestCase,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "case/edit/:caseId",
|
||||||
|
name: "editCase",
|
||||||
|
component: EditTestCase,
|
||||||
|
props: {
|
||||||
|
content: (route) => {
|
||||||
|
return {
|
||||||
|
...route.params
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'case/:caseId',
|
||||||
name: 'testCase',
|
name: 'testCase',
|
||||||
component: TestCase,
|
component: TestCase,
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
border
|
border
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
show-summary
|
show-summary
|
||||||
|
:summary-method="getSummaries"
|
||||||
:default-sort = "{prop: 'samples', order: 'descending'}"
|
:default-sort = "{prop: 'samples', order: 'descending'}"
|
||||||
>
|
>
|
||||||
<el-table-column label="Requests" fixed width="450" align="center">
|
<el-table-column label="Requests" fixed width="450" align="center">
|
||||||
|
@ -27,7 +28,7 @@
|
||||||
prop="errors"
|
prop="errors"
|
||||||
label="Error%"
|
label="Error%"
|
||||||
align="center"
|
align="center"
|
||||||
fixed="right"/>
|
/>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="Response Times(ms)" align="center">
|
<el-table-column label="Response Times(ms)" align="center">
|
||||||
|
@ -86,6 +87,26 @@
|
||||||
this.$get("/report/content/" + this.id, res => {
|
this.$get("/report/content/" + this.id, res => {
|
||||||
this.tableData = res.data;
|
this.tableData = res.data;
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
getSummaries (param) {
|
||||||
|
const { data } = param
|
||||||
|
const sums = []
|
||||||
|
let allSamples = data.reduce(function (total, currentValue) {
|
||||||
|
return total + currentValue.samples;
|
||||||
|
}, 0);
|
||||||
|
let failSize = data.reduce(function (total, currentValue) {
|
||||||
|
return total + currentValue.ko;
|
||||||
|
}, 0);
|
||||||
|
let allAverageTime = data.reduce(function (total, currentValue) {
|
||||||
|
return total + parseFloat(currentValue.average) * currentValue.samples;
|
||||||
|
}, 0);
|
||||||
|
sums[0] = 'Total'
|
||||||
|
sums[1] = allSamples;
|
||||||
|
sums[2] = (Math.round(failSize / allSamples * 10000) / 100) + '%';
|
||||||
|
sums[3] = (allAverageTime / allSamples).toFixed(2);
|
||||||
|
sums[4] = Math.min.apply(Math, data.map(function(o) {return parseFloat(o.min)}));
|
||||||
|
sums[5] = Math.max.apply(Math, data.map(function(o) {return parseFloat(o.max)}));
|
||||||
|
return sums
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -94,11 +115,13 @@
|
||||||
props: ['id'],
|
props: ['id'],
|
||||||
watch: {
|
watch: {
|
||||||
'$route'(to) {
|
'$route'(to) {
|
||||||
let reportId = to.path.split('/')[4];
|
if (to.name === "perReportView") {
|
||||||
if(reportId){
|
let reportId = to.path.split('/')[4];
|
||||||
this.$get("/report/content/" + reportId, res => {
|
if(reportId){
|
||||||
this.tableData = res.data;
|
this.$get("/report/content/" + reportId, res => {
|
||||||
})
|
this.tableData = res.data;
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,157 @@
|
||||||
|
<template>
|
||||||
|
<div class="edit-testplan-container">
|
||||||
|
|
||||||
|
<el-container>
|
||||||
|
<el-aside width="200px">
|
||||||
|
<el-tree
|
||||||
|
:data="data"
|
||||||
|
node-key="id"
|
||||||
|
default-expand-all
|
||||||
|
@node-drag-start="handleDragStart"
|
||||||
|
@node-drag-enter="handleDragEnter"
|
||||||
|
@node-drag-leave="handleDragLeave"
|
||||||
|
@node-drag-over="handleDragOver"
|
||||||
|
@node-drag-end="handleDragEnd"
|
||||||
|
@node-drop="handleDrop"
|
||||||
|
draggable
|
||||||
|
:allow-drop="allowDrop"
|
||||||
|
:allow-drag="allowDrag">
|
||||||
|
</el-tree>
|
||||||
|
</el-aside>
|
||||||
|
<el-main>
|
||||||
|
|
||||||
|
main
|
||||||
|
</el-main>
|
||||||
|
</el-container>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "EditTestCase",
|
||||||
|
components: {
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data: [{
|
||||||
|
id: 1,
|
||||||
|
label: '一级 1',
|
||||||
|
children: [{
|
||||||
|
id: 4,
|
||||||
|
label: '二级 1-1',
|
||||||
|
children: [{
|
||||||
|
id: 9,
|
||||||
|
label: '三级 1-1-1'
|
||||||
|
}, {
|
||||||
|
id: 10,
|
||||||
|
label: '三级 1-1-2'
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
id: 2,
|
||||||
|
label: '一级 2',
|
||||||
|
children: [{
|
||||||
|
id: 5,
|
||||||
|
label: '二级 2-1'
|
||||||
|
}, {
|
||||||
|
id: 6,
|
||||||
|
label: '二级 2-2'
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
id: 3,
|
||||||
|
label: '一级 3',
|
||||||
|
children: [{
|
||||||
|
id: 7,
|
||||||
|
label: '二级 3-1'
|
||||||
|
}, {
|
||||||
|
id: 8,
|
||||||
|
label: '二级 3-2',
|
||||||
|
children: [{
|
||||||
|
id: 11,
|
||||||
|
label: '三级 3-2-1'
|
||||||
|
}, {
|
||||||
|
id: 12,
|
||||||
|
label: '三级 3-2-2'
|
||||||
|
}, {
|
||||||
|
id: 13,
|
||||||
|
label: '三级 3-2-3'
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
defaultProps: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'label'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleDragStart(node, ev) {
|
||||||
|
console.log('drag start', node);
|
||||||
|
},
|
||||||
|
handleDragEnter(draggingNode, dropNode, ev) {
|
||||||
|
console.log('tree drag enter: ', dropNode.label);
|
||||||
|
},
|
||||||
|
handleDragLeave(draggingNode, dropNode, ev) {
|
||||||
|
console.log('tree drag leave: ', dropNode.label);
|
||||||
|
},
|
||||||
|
handleDragOver(draggingNode, dropNode, ev) {
|
||||||
|
console.log('tree drag over: ', dropNode.label);
|
||||||
|
},
|
||||||
|
handleDragEnd(draggingNode, dropNode, dropType, ev) {
|
||||||
|
console.log('tree drag end: ', dropNode && dropNode.label, dropType);
|
||||||
|
},
|
||||||
|
handleDrop(draggingNode, dropNode, dropType, ev) {
|
||||||
|
console.log('tree drop: ', dropNode.label, dropType);
|
||||||
|
},
|
||||||
|
allowDrop(draggingNode, dropNode, type) {
|
||||||
|
if (dropNode.data.label === '二级 3-1') {
|
||||||
|
return type !== 'inner';
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
allowDrag(draggingNode) {
|
||||||
|
return draggingNode.data.label.indexOf('三级 3-2-2') === -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.edit-testplan-container {
|
||||||
|
float: none;
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit-testplan-container .main-content {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 1200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit-testplan-container .testplan-config {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select {
|
||||||
|
min-width: 130px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit-testplan-container .input-with-select .el-input-group__prepend {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advanced-config {
|
||||||
|
height: calc(100vh - 280px);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,16 +1,223 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="case_container" v-loading="result.loading">
|
||||||
<h1>测试用例</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--<div class="main-content">-->
|
||||||
|
|
||||||
|
<el-container>
|
||||||
|
<el-aside width="250px">
|
||||||
|
<node-tree class="node_tree"></node-tree>
|
||||||
|
</el-aside>
|
||||||
|
|
||||||
|
<el-main>
|
||||||
|
<el-card>
|
||||||
|
<div slot="header">
|
||||||
|
<el-row type="flex" justify="space-between" align="middle">
|
||||||
|
<span class="title">{{$t('commons.test')}}</span>
|
||||||
|
<span class="search">
|
||||||
|
<el-input type="text" size="small" :placeholder="$t('load_test.search_by_name')"
|
||||||
|
prefix-icon="el-icon-search"
|
||||||
|
maxlength="60"
|
||||||
|
v-model="condition" @change="search" clearable/>
|
||||||
|
</span>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
<el-table :data="tableData" class="test-content">
|
||||||
|
<el-table-column
|
||||||
|
prop="name"
|
||||||
|
:label="$t('commons.name')"
|
||||||
|
width="150"
|
||||||
|
show-overflow-tooltip>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="description"
|
||||||
|
:label="$t('commons.description')"
|
||||||
|
show-overflow-tooltip>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="projectName"
|
||||||
|
:label="$t('load_test.project_name')"
|
||||||
|
width="150"
|
||||||
|
show-overflow-tooltip>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
width="250"
|
||||||
|
:label="$t('commons.create_time')">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
width="250"
|
||||||
|
:label="$t('commons.update_time')">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.updateTime | timestampFormatDate }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
width="150"
|
||||||
|
:label="$t('commons.operating')">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button @click="handleEdit(scope.row)" type="primary" icon="el-icon-edit" size="mini" circle/>
|
||||||
|
<el-button @click="handleDelete(scope.row)" type="danger" icon="el-icon-delete" size="mini" circle/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="22" :offset="1">
|
||||||
|
<div class="table-page">
|
||||||
|
<el-pagination
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page.sync="currentPage"
|
||||||
|
:page-sizes="[5, 10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="total">
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</el-main>
|
||||||
|
|
||||||
|
</el-container>
|
||||||
|
|
||||||
|
<!--</div>-->
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
|
||||||
name: "TestCase"
|
import NodeTree from './components/NodeTree';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "TestCase",
|
||||||
|
components: {NodeTree},
|
||||||
|
comments: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
result: {},
|
||||||
|
queryPath: "/testplan/list",
|
||||||
|
deletePath: "/testplan/delete",
|
||||||
|
condition: "",
|
||||||
|
projectId: null,
|
||||||
|
tableData: [],
|
||||||
|
multipleSelection: [],
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 5,
|
||||||
|
total: 0,
|
||||||
|
loading: false,
|
||||||
|
testId: null,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'$route'(to) {
|
||||||
|
this.projectId = to.params.projectId;
|
||||||
|
this.initTableData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created: function () {
|
||||||
|
this.projectId = this.$route.params.projectId;
|
||||||
|
this.initTableData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initTableData() {
|
||||||
|
let param = {
|
||||||
|
name: this.condition,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.projectId !== 'all') {
|
||||||
|
param.projectId = this.projectId;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.result = this.$post(this.buildPagePath(this.queryPath), param, response => {
|
||||||
|
let data = response.data;
|
||||||
|
this.total = data.itemCount;
|
||||||
|
this.tableData = data.listObject;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
search() {
|
||||||
|
this.initTableData();
|
||||||
|
},
|
||||||
|
buildPagePath(path) {
|
||||||
|
return path + "/" + this.currentPage + "/" + this.pageSize;
|
||||||
|
},
|
||||||
|
handleSizeChange(size) {
|
||||||
|
this.pageSize = size;
|
||||||
|
this.initTableData();
|
||||||
|
},
|
||||||
|
handleCurrentChange(current) {
|
||||||
|
this.currentPage = current;
|
||||||
|
this.initTableData();
|
||||||
|
},
|
||||||
|
handleSelectionChange(val) {
|
||||||
|
this.multipleSelection = val;
|
||||||
|
},
|
||||||
|
handleEdit(testPlan) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/performance/plan/edit/' + testPlan.id,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleDelete(testPlan) {
|
||||||
|
this.$alert(this.$t('load_test.delete_confirm') + testPlan.name + "?", '', {
|
||||||
|
confirmButtonText: this.$t('commons.confirm'),
|
||||||
|
callback: (action) => {
|
||||||
|
if (action === 'confirm') {
|
||||||
|
this._handleDelete(testPlan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
_handleDelete(testPlan) {
|
||||||
|
let data = {
|
||||||
|
id: testPlan.id
|
||||||
|
};
|
||||||
|
|
||||||
|
this.result = this.$post(this.deletePath, data, () => {
|
||||||
|
this.$message({
|
||||||
|
message: this.$t('commons.delete_success'),
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
this.initTableData();
|
||||||
|
});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.testplan-container {
|
||||||
|
padding: 15px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-content {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 1200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.test-content {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-page {
|
||||||
|
padding-top: 20px;
|
||||||
|
margin-right: -9px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case_container {
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.node_tree {
|
||||||
|
/*box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);*/
|
||||||
|
margin: 10%;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -0,0 +1,278 @@
|
||||||
|
<template>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
|
||||||
|
<el-input placeholder="搜索模块" v-model="filterText"
|
||||||
|
size="small">
|
||||||
|
<el-button slot="append" icon="el-icon-folder-add" @click="editNode('add')"></el-button>
|
||||||
|
</el-input>
|
||||||
|
|
||||||
|
<el-tree
|
||||||
|
class="filter-tree node-tree"
|
||||||
|
:data="trees"
|
||||||
|
node-key="id"
|
||||||
|
@node-drag-start="handleDragStart"
|
||||||
|
@node-drag-enter="handleDragEnter"
|
||||||
|
@node-drag-leave="handleDragLeave"
|
||||||
|
@node-drag-over="handleDragOver"
|
||||||
|
@node-drag-end="handleDragEnd"
|
||||||
|
@node-drop="handleDrop"
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
:expand-on-click-node="false"
|
||||||
|
draggable
|
||||||
|
:allow-drop="allowDrop"
|
||||||
|
:allow-drag="allowDrag"
|
||||||
|
ref="tree">
|
||||||
|
|
||||||
|
<span class="custom-tree-node father" slot-scope="{ node, data }" @click="selectNode">
|
||||||
|
<span>{{node.label}}</span>
|
||||||
|
<el-dropdown class="node-dropdown child">
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
<i class="el-icon-folder-add"></i>
|
||||||
|
</span>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item>
|
||||||
|
<div @click="editNode('edit', data)">重命名</div>
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item >
|
||||||
|
<div @click="editNode('add', data)">添加子模块</div>
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item>
|
||||||
|
<div @click="test">删除</div>
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
</span>
|
||||||
|
</el-tree>
|
||||||
|
|
||||||
|
<el-dialog title="添加模块" :visible.sync="dialogFormVisible" width="500px">
|
||||||
|
|
||||||
|
<el-row type="flex" justify="center">
|
||||||
|
<el-col :span="18">
|
||||||
|
<el-form :model="form">
|
||||||
|
<el-form-item label="模块名称" :label-width="formLabelWidth">
|
||||||
|
<el-input v-model="form.name" autocomplete="off"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="saveNode">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "NodeTree",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
filterText: '',
|
||||||
|
trees: [{
|
||||||
|
id: 1,
|
||||||
|
label: '一级 1',
|
||||||
|
children: [{
|
||||||
|
id: 4,
|
||||||
|
label: '二级 1-1',
|
||||||
|
children: [{
|
||||||
|
id: 9,
|
||||||
|
label: '三级 1-1-1'
|
||||||
|
}, {
|
||||||
|
id: 10,
|
||||||
|
label: '三级 1-1-2'
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
id: 2,
|
||||||
|
label: '一级 2',
|
||||||
|
children: [{
|
||||||
|
id: 5,
|
||||||
|
label: '二级 2-1'
|
||||||
|
}, {
|
||||||
|
id: 6,
|
||||||
|
label: '二级 2-2'
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
id: 3,
|
||||||
|
label: '一级 3',
|
||||||
|
children: [{
|
||||||
|
id: 7,
|
||||||
|
label: '二级 3-1'
|
||||||
|
}, {
|
||||||
|
id: 8,
|
||||||
|
label: '二级 3-2',
|
||||||
|
children: [{
|
||||||
|
id: 11,
|
||||||
|
label: '三级 3-2-1'
|
||||||
|
}, {
|
||||||
|
id: 12,
|
||||||
|
label: '三级 3-2-2'
|
||||||
|
}, {
|
||||||
|
id: 13,
|
||||||
|
label: '三级 3-2-3'
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
defaultProps: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'label'
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
name: '',
|
||||||
|
region: '',
|
||||||
|
date1: '',
|
||||||
|
date2: '',
|
||||||
|
delivery: false,
|
||||||
|
type: [],
|
||||||
|
resource: '',
|
||||||
|
desc: ''
|
||||||
|
},
|
||||||
|
formLabelWidth: '80px',
|
||||||
|
dialogTableVisible: false,
|
||||||
|
dialogFormVisible: false,
|
||||||
|
editType: '',
|
||||||
|
editData: {}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
filterText(val) {
|
||||||
|
this.$refs.tree.filter(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
handleDragStart(node, ev) {
|
||||||
|
console.log('drag start', node);
|
||||||
|
},
|
||||||
|
handleDragEnter(draggingNode, dropNode, ev) {
|
||||||
|
console.log('tree drag enter: ', dropNode.label);
|
||||||
|
},
|
||||||
|
handleDragLeave(draggingNode, dropNode, ev) {
|
||||||
|
console.log('tree drag leave: ', dropNode.label);
|
||||||
|
},
|
||||||
|
handleDragOver(draggingNode, dropNode, ev) {
|
||||||
|
console.log('tree drag over: ', dropNode.label);
|
||||||
|
},
|
||||||
|
handleDragEnd(draggingNode, dropNode, dropType, ev) {
|
||||||
|
console.log('tree drag end: ', dropNode && dropNode.label, dropType);
|
||||||
|
},
|
||||||
|
handleDrop(draggingNode, dropNode, dropType, ev) {
|
||||||
|
console.log('tree drop: ', dropNode.label, dropType);
|
||||||
|
},
|
||||||
|
allowDrop(draggingNode, dropNode, type) {
|
||||||
|
if (dropNode.data.label === '二级 3-1') {
|
||||||
|
return type !== 'inner';
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
allowDrag(draggingNode) {
|
||||||
|
return draggingNode.data.label.indexOf('三级 3-2-2') === -1;
|
||||||
|
},
|
||||||
|
|
||||||
|
append(data) {
|
||||||
|
let id = 0;
|
||||||
|
const newChild = { id: id++, label: 'testtest', children: [] };
|
||||||
|
if (!data.children) {
|
||||||
|
this.$set(data, 'children', []);
|
||||||
|
}
|
||||||
|
data.children.push(newChild);
|
||||||
|
},
|
||||||
|
|
||||||
|
remove(node, data) {
|
||||||
|
const parent = node.parent;
|
||||||
|
const children = parent.data.children || parent.data;
|
||||||
|
const index = children.findIndex(d => d.id === data.id);
|
||||||
|
children.splice(index, 1);
|
||||||
|
},
|
||||||
|
selectNode() {
|
||||||
|
console.log("selet node-----");
|
||||||
|
},
|
||||||
|
filterNode(value, data) {
|
||||||
|
if (!value) return true;
|
||||||
|
return data.label.indexOf(value) !== -1;
|
||||||
|
},
|
||||||
|
saveNode() {
|
||||||
|
|
||||||
|
let type = this.editType;
|
||||||
|
let node = this.editData;
|
||||||
|
if( type === 'add' ){
|
||||||
|
if(node === undefined){
|
||||||
|
console.log("add root node");
|
||||||
|
} else {
|
||||||
|
console.log("add node");
|
||||||
|
}
|
||||||
|
} else if(type === 'edit'){
|
||||||
|
console.log("rename");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.form.name = '';
|
||||||
|
|
||||||
|
this.dialogFormVisible = false;
|
||||||
|
},
|
||||||
|
editNode(type, data) {
|
||||||
|
|
||||||
|
this.editType = type;
|
||||||
|
this.editData = data;
|
||||||
|
this.dialogFormVisible = true;
|
||||||
|
},
|
||||||
|
test() {
|
||||||
|
|
||||||
|
console.log("----");
|
||||||
|
alert("ehllo");
|
||||||
|
// this.dialogFormVisible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
.el-dropdown-link {
|
||||||
|
cursor: pointer;
|
||||||
|
color: #409EFF;
|
||||||
|
}
|
||||||
|
.el-icon-arrow-down {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-tree-node {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 14px;
|
||||||
|
padding-right: 8px;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.node-tree {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.node-dropdown {
|
||||||
|
/*align-items: right;*/
|
||||||
|
/*margin-left: 50px;*/
|
||||||
|
/*color: darkgrey;*/
|
||||||
|
/*opacity:0.1;*/
|
||||||
|
/*filter:alpha(opacity=1); !* 针对 IE8 以及更早的版本 *!*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.father .child{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.father:hover .child{
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
Loading…
Reference in New Issue