|
@@ -19,11 +19,46 @@
|
|
</div>
|
|
</div>
|
|
<div class="tab-content" :class="tabClass" v-if="activeTab === 2">
|
|
<div class="tab-content" :class="tabClass" v-if="activeTab === 2">
|
|
<div class="panel-container">
|
|
<div class="panel-container">
|
|
- <div class="list issue-list">
|
|
|
|
|
|
+ <div class="list issue-list" v-if="isShowIssueList">
|
|
<div v-for="(item, index) in activeTabItems" :key="index" class="item">
|
|
<div v-for="(item, index) in activeTabItems" :key="index" class="item">
|
|
<div v-html="issueRender(item)"></div>
|
|
<div v-html="issueRender(item)"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div class="case task-item" v-if="isShowIssueDetail && !isShowIssueList">
|
|
|
|
+ <div class="go-back">
|
|
|
|
+ <div class="el-icon-arrow-left" @click="clickBackToIssueList"></div>
|
|
|
|
+ <div>{{ currentIssue.ticket_title }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="task-title">ID</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.id}}</div>
|
|
|
|
+ <div class="task-title">Title</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.ticket_title}}</div>
|
|
|
|
+ <div class="task-title">Type</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.ticket_type}}</div>
|
|
|
|
+ <div class="task-title">Bench_id</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.bench_id}}</div>
|
|
|
|
+ <div class="task-title">Status</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.ticket_status}}</div>
|
|
|
|
+ <div class="task-title">Description</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.ticket_desc}}</div>
|
|
|
|
+ <div class="task-title">Creator</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.creator}}</div>
|
|
|
|
+ <div class="task-title">Difficulty</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.ticket_difficulty}}</div>
|
|
|
|
+ <div class="task-title">Complexity</div>
|
|
|
|
+ <div class="task-content">{{currentIssue.ticket_complexity}}</div>
|
|
|
|
+ <div class="task-title">Action</div>
|
|
|
|
+ <div class="task-table">
|
|
|
|
+ <el-table :data="currentIssue.action" :row-class-name="rowClassName" style="background-color: transparent;" >
|
|
|
|
+ <el-table-column label="Time" prop="time"></el-table-column>
|
|
|
|
+ <el-table-column label="Processor" prop="processor"></el-table-column>
|
|
|
|
+ <el-table-column label="type" prop="action_type"></el-table-column>
|
|
|
|
+ <el-table-column label="Spend Time" prop="spend_time"></el-table-column>
|
|
|
|
+ <el-table-column label="comment" prop="comment"></el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ <el-button @click="clickBackToIssueList" class="done-button">Done</el-button>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
<div class="panel-bottom">
|
|
<div class="panel-bottom">
|
|
|
|
|
|
@@ -83,109 +118,90 @@
|
|
</el-table>
|
|
</el-table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="plan task-item" v-if="isShowCaseCommit && isShowTaskList===false">
|
|
|
|
- <div style="margin-bottom: 1.85vh">{{caseName}}</div>
|
|
|
|
- <el-row :gutter="20">
|
|
|
|
- <el-col :span=12>
|
|
|
|
- <el-select v-model="selectedOption" placeholder="请选择" class="select-container">
|
|
|
|
- <el-option
|
|
|
|
- v-for="option in options"
|
|
|
|
- :key="option.value"
|
|
|
|
- :label="option.label"
|
|
|
|
- :value="option.value"
|
|
|
|
- ></el-option>
|
|
|
|
- </el-select>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span=12>
|
|
|
|
- <el-select v-model="selectedOption" placeholder="请选择" class="select-container">
|
|
|
|
- <el-option
|
|
|
|
- v-for="option in options"
|
|
|
|
- :key="option.value"
|
|
|
|
- :label="option.label"
|
|
|
|
- :value="option.value"
|
|
|
|
- ></el-option>
|
|
|
|
- </el-select>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row :gutter="20">
|
|
|
|
- <el-col :span=12>
|
|
|
|
- <el-select v-model="selectedOption" placeholder="请选择" class="select-container">
|
|
|
|
- <el-option
|
|
|
|
- v-for="option in options"
|
|
|
|
- :key="option.value"
|
|
|
|
- :label="option.label"
|
|
|
|
- :value="option.value"
|
|
|
|
- ></el-option>
|
|
|
|
- </el-select>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span=12>
|
|
|
|
- <el-select v-model="selectedOption" placeholder="请选择" class="select-container">
|
|
|
|
- <el-option
|
|
|
|
- v-for="option in options"
|
|
|
|
- :key="option.value"
|
|
|
|
- :label="option.label"
|
|
|
|
- :value="option.value"
|
|
|
|
- ></el-option>
|
|
|
|
- </el-select>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row :gutter="20">
|
|
|
|
- <el-col :span=12>
|
|
|
|
- <el-select v-model="selectedOption" placeholder="请选择" class="select-container">
|
|
|
|
- <el-option
|
|
|
|
- v-for="option in options"
|
|
|
|
- :key="option.value"
|
|
|
|
- :label="option.label"
|
|
|
|
- :value="option.value"
|
|
|
|
- ></el-option>
|
|
|
|
- </el-select>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
|
|
+ <div class="plan task-item case-submit" v-if="isShowCaseCommit && isShowTaskList===false">
|
|
|
|
+ <div class="go-back">
|
|
|
|
+ <div class="el-icon-arrow-left" @click="clickBackToCaseList"></div>
|
|
|
|
+ <div>{{ caseName }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="control-panel">
|
|
|
|
+ <el-col :span=12>
|
|
|
|
+ <el-select v-model="resultValue" placeholder="Result" class="select-container">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="option in resultOptions"
|
|
|
|
+ :key="option.value"
|
|
|
|
+ :label="option.label"
|
|
|
|
+ :value="option.value"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span=12 v-show="resultValue == 'tb'">
|
|
|
|
+ <el-select v-model="typeValue" placeholder="TB_Type" class="select-container">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="option in TBTypeOptions"
|
|
|
|
+ :key="option.value"
|
|
|
|
+ :label="option.label"
|
|
|
|
+ :value="option.value"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span=12>
|
|
|
|
+ <el-select v-model="carlineValue" placeholder="Testing Carline" class="select-container">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="option in carlineOptions"
|
|
|
|
+ :key="option.value"
|
|
|
|
+ :label="option.label"
|
|
|
|
+ :value="option.value"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span=12>
|
|
|
|
+ <el-select v-model="variantValue" placeholder="Testing Variant" class="select-container">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="option in variantOptions"
|
|
|
|
+ :key="option.value"
|
|
|
|
+ :label="option.label"
|
|
|
|
+ :value="option.value"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span=12 v-show="resultValue == 'fail'">
|
|
|
|
+ <el-input v-model="linkValue" placeholder="Ticket Link" class="select-container">
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-col>
|
|
|
|
+ </div>
|
|
<div class="area-container">
|
|
<div class="area-container">
|
|
- <el-textarea
|
|
|
|
- placeholder="请输入内容"
|
|
|
|
- ></el-textarea>
|
|
|
|
|
|
+ <el-input
|
|
|
|
+ type="textarea"
|
|
|
|
+ :rows="20"
|
|
|
|
+ placeholder="Comment"
|
|
|
|
+ v-model="comment"
|
|
|
|
+ ></el-input>
|
|
</div>
|
|
</div>
|
|
- <el-button class="cancel-button">Cancel</el-button>
|
|
|
|
- <el-button class="done-button">Done</el-button>
|
|
|
|
|
|
+ <el-button class="cancel-button" @click="clickBackToCaseList">Cancel</el-button>
|
|
|
|
+ <el-button class="done-button" @click="doManualCase">Done</el-button>
|
|
</div>
|
|
</div>
|
|
<div class="case task-item" v-if="isShowCaseDetail && isShowTaskList===false">
|
|
<div class="case task-item" v-if="isShowCaseDetail && isShowTaskList===false">
|
|
<div class="go-back">
|
|
<div class="go-back">
|
|
- <div class="el-icon-arrow-left" @click="clickBackToPlan"></div>
|
|
|
|
- <div>{{ caseName }}</div>
|
|
|
|
- </div>
|
|
|
|
- <div class="task-title">Precondition</div>
|
|
|
|
- <!--<div class="task-content">{{caseActive}}</div>
|
|
|
|
- <div class="task-title">{{caseFunction}}</div>-->
|
|
|
|
- <div class="task-content">{{caseProject}}</div>
|
|
|
|
- <div class="task-title">Action</div>
|
|
|
|
- <div class="task-content">{{caseFunction}}</div>
|
|
|
|
- <div class="task-title">Expectation</div>
|
|
|
|
- <div class="task-content">{{caseSubFunction}}</div>
|
|
|
|
- <div class="task-title">Market</div>
|
|
|
|
- <div class="task-content">{{caseMarket}}</div>
|
|
|
|
- <div class="task-title">Language</div>
|
|
|
|
- <div class="task-content">{{caseLanguage}}</div>
|
|
|
|
- <!--<div>1.Click Global Search App Fromapp Grid</div>
|
|
|
|
- <div>2.tap global seaech search tif</div>
|
|
|
|
- <div>3.switch to hwt mode and freehwr input character</div>
|
|
|
|
- <div>4.tap delete button5.long press delete button</div>-->
|
|
|
|
-
|
|
|
|
- <!--<div class="task-title">SubFunction</div>
|
|
|
|
- <div class="task-content">
|
|
|
|
- <div>1.click global seaech app fromapp grid</div>
|
|
|
|
- <div>2.tap global seaech search tif</div>
|
|
|
|
- <div>3.switch to hwt mode and freehwr input character</div>
|
|
|
|
- <div>4.tap delete button5.long press delete button</div>
|
|
|
|
- </div>
|
|
|
|
- <div class="task-title">Market</div>
|
|
|
|
- <div class="task-content">CN</div>
|
|
|
|
- <div class="task-title">Langunage</div>
|
|
|
|
- <div class="task-content">CN</div>-->
|
|
|
|
- <el-button class="done-button">Done</el-button>
|
|
|
|
|
|
+ <div class="el-icon-arrow-left" @click="clickBackToPlan"></div>
|
|
|
|
+ <div>{{ caseName }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="task-title">Precondition</div>
|
|
|
|
+ <!--<div class="task-content">{{caseActive}}</div>
|
|
|
|
+ <div class="task-title">{{caseFunction}}</div>-->
|
|
|
|
+ <div class="task-content">{{caseProject}}</div>
|
|
|
|
+ <div class="task-title">Action</div>
|
|
|
|
+ <div class="task-content">{{caseFunction}}</div>
|
|
|
|
+ <div class="task-title">Expectation</div>
|
|
|
|
+ <div class="task-content">{{caseSubFunction}}</div>
|
|
|
|
+ <div class="task-title">Market</div>
|
|
|
|
+ <div class="task-content">{{caseMarket}}</div>
|
|
|
|
+ <div class="task-title">Language</div>
|
|
|
|
+ <div class="task-content">{{caseLanguage}}</div>
|
|
|
|
+ <el-button @click="submitManualCase" class="done-button">Done</el-button>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div></div>
|
|
</div>
|
|
</div>
|
|
- <div class="panel-bottom">
|
|
|
|
|
|
+ <div class="panel-bottom" v-show="isShowTaskList">
|
|
<div class="task-left-bottom-btn">+</div>
|
|
<div class="task-left-bottom-btn">+</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -193,6 +209,7 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
+import { mapState } from 'vuex';
|
|
export default {
|
|
export default {
|
|
props: {
|
|
props: {
|
|
tabs: {
|
|
tabs: {
|
|
@@ -229,12 +246,14 @@ export default {
|
|
tabClass: {
|
|
tabClass: {
|
|
type: String
|
|
type: String
|
|
},
|
|
},
|
|
|
|
+ currentIssue: Object,
|
|
isShowTaskList: Boolean,
|
|
isShowTaskList: Boolean,
|
|
isShowPlanList: Boolean,
|
|
isShowPlanList: Boolean,
|
|
isShowCaseList: Boolean,
|
|
isShowCaseList: Boolean,
|
|
isShowAutoCaseList: Boolean,
|
|
isShowAutoCaseList: Boolean,
|
|
isShowCaseDetail: Boolean,
|
|
isShowCaseDetail: Boolean,
|
|
isShowCaseCommit: Boolean,
|
|
isShowCaseCommit: Boolean,
|
|
|
|
+ isShowIssueDetail: Boolean,
|
|
taskName: String,
|
|
taskName: String,
|
|
planList: Array,
|
|
planList: Array,
|
|
planName: String,
|
|
planName: String,
|
|
@@ -254,13 +273,24 @@ export default {
|
|
selectRowPlan: Function,
|
|
selectRowPlan: Function,
|
|
selectRowCase: Function,
|
|
selectRowCase: Function,
|
|
isShowIssueList: Boolean,
|
|
isShowIssueList: Boolean,
|
|
- clickBackToPlan: Function
|
|
|
|
-
|
|
|
|
|
|
+ clickBackToPlan: Function,
|
|
|
|
+ submitManualCase: Function,
|
|
|
|
+ clickBackToCaseList: Function,
|
|
|
|
+ clickBackToIssueList: Function
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
activeTab: 0,
|
|
activeTab: 0,
|
|
rowClassName: '',
|
|
rowClassName: '',
|
|
|
|
+ resultValue: '',
|
|
|
|
+ projectValue: '',
|
|
|
|
+ carlineValue: '',
|
|
|
|
+ variantValue: '',
|
|
|
|
+ clusterValue: '',
|
|
|
|
+ marketValue: '',
|
|
|
|
+ typeValue: '',
|
|
|
|
+ linkValue: '',
|
|
|
|
+ comment: ''
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -269,13 +299,42 @@ export default {
|
|
},
|
|
},
|
|
dots() {
|
|
dots() {
|
|
return this.tabs.map((_, index) => index);
|
|
return this.tabs.map((_, index) => index);
|
|
- }
|
|
|
|
|
|
+ },
|
|
|
|
+ ...mapState({
|
|
|
|
+ projectOptions(state) {
|
|
|
|
+ return state.common.projectOptions
|
|
|
|
+ },
|
|
|
|
+ carlineOptions(state) {
|
|
|
|
+ return state.common.carlineOptions
|
|
|
|
+ },
|
|
|
|
+ variantOptions(state) {
|
|
|
|
+ return state.common.variantOptions
|
|
|
|
+ },
|
|
|
|
+ clusterOptions(state) {
|
|
|
|
+ return state.common.clusterOptions
|
|
|
|
+ },
|
|
|
|
+ marketOptions(state) {
|
|
|
|
+ return state.common.marketOptions
|
|
|
|
+ },
|
|
|
|
+ resultOptions(state) {
|
|
|
|
+ return state.common.resultOptions
|
|
|
|
+ },
|
|
|
|
+ TBTypeOptions(state) {
|
|
|
|
+ return state.common.TBTypeOptions
|
|
|
|
+ }
|
|
|
|
+ })
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
changeTab(index) {
|
|
changeTab(index) {
|
|
console.log('tab 切换 index', index);
|
|
console.log('tab 切换 index', index);
|
|
this.activeTab = index;
|
|
this.activeTab = index;
|
|
},
|
|
},
|
|
|
|
+ doManualCase() {
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ cancelManualCase() {
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
@@ -637,11 +696,12 @@ export default {
|
|
margin-bottom: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
}
|
|
|
|
|
|
-.done-button {
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+.cancel-button,.done-button {
|
|
width: 11.6vw;
|
|
width: 11.6vw;
|
|
height: 4.25vh;
|
|
height: 4.25vh;
|
|
line-height: 4.25vh;
|
|
line-height: 4.25vh;
|
|
- background: linear-gradient(180deg, #83cbfb 0%, #2e74b2 100%);
|
|
|
|
border-radius: 67px 67px 67px 67px;
|
|
border-radius: 67px 67px 67px 67px;
|
|
opacity: 1;
|
|
opacity: 1;
|
|
border: 1px solid rgba(255, 255, 255, 0.4);
|
|
border: 1px solid rgba(255, 255, 255, 0.4);
|
|
@@ -649,7 +709,70 @@ export default {
|
|
padding: 0;
|
|
padding: 0;
|
|
position: absolute;
|
|
position: absolute;
|
|
bottom: 1.75vh;
|
|
bottom: 1.75vh;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.cancel-button {
|
|
|
|
+ background: rgba(255,255,255,0.5);
|
|
|
|
+ left: 15px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.done-button {
|
|
|
|
+ background: linear-gradient(180deg, #83cbfb 0%, #2e74b2 100%);
|
|
right: 15px;
|
|
right: 15px;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+</style>
|
|
|
|
+<style lang="less">
|
|
|
|
+.case-submit {
|
|
|
|
+ color: #fff;
|
|
|
|
+ .el-select input.el-input__inner{
|
|
|
|
+ border-radius: 30px !important;
|
|
|
|
+ padding-left: 5px;
|
|
|
|
+ background-color: transparent;
|
|
|
|
+ height: 30px;
|
|
|
|
+ font-size: 12px;
|
|
|
|
+ color: #fff !important;
|
|
|
|
+ }
|
|
|
|
+ .el-select-dropdown__empty {
|
|
|
|
+ background-color: #000;
|
|
|
|
+ color: #fff;
|
|
|
|
+ }
|
|
|
|
+ .el-table .el-table__cell{
|
|
|
|
+ font-size: 16px;
|
|
|
|
+ }
|
|
|
|
+ .el-table__row.row-class {
|
|
|
|
+ height: 68px !important;
|
|
|
|
+ border-bottom: 1px solid #fff;
|
|
|
|
+ }
|
|
|
|
+ .el-select {
|
|
|
|
+ width: 90%;
|
|
|
|
+ // margin-left: 5%;
|
|
|
|
+ border-radius: 30px;
|
|
|
|
+ border: 1px solid #fff;
|
|
|
|
+ height: 30px;
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
+ }
|
|
|
|
+ .select-container.el-input {
|
|
|
|
+ width: 90%;
|
|
|
|
+ // margin-left: 5%;
|
|
|
|
+ border-radius: 30px;
|
|
|
|
+ border: 1px solid #fff;
|
|
|
|
+ background-color: transparent;
|
|
|
|
+ height: 30px;
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
+ }
|
|
|
|
+ .el-input__inner {
|
|
|
|
+ width: 100%;
|
|
|
|
+ border: 0 none;
|
|
|
|
+ padding: 0 5px;
|
|
|
|
+ height: 30px;
|
|
|
|
+ background-color: transparent;
|
|
|
|
+ }
|
|
|
|
+ .el-textarea__inner, .el-textarea {
|
|
|
|
+ border-radius: 30px;
|
|
|
|
+ background-color: transparent;
|
|
|
|
+ color: #fff;
|
|
|
|
+ outline: none;
|
|
|
|
+ }
|
|
|
|
+}
|
|
</style>
|
|
</style>
|