|
@@ -15,90 +15,131 @@
|
|
|
</el-header>
|
|
|
<el-container>
|
|
|
<el-main class="report-main">
|
|
|
- <div class="title"><div class="blur-column" /> 报告内容</div>
|
|
|
+ <div class="title">
|
|
|
+ <div class="blur-column" />报告内容
|
|
|
+ </div>
|
|
|
<el-row>
|
|
|
<el-col :span="24" class="task-bot">
|
|
|
- <span class="from-names">测试结果: </span>
|
|
|
+ <span class="from-names">测试结果:</span>
|
|
|
<span class="from-value" style="color:rgba(126,211,33,1);">通过</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row>
|
|
|
<el-col :span="12" class="Layout_space_between task-bot">
|
|
|
- <span class="from-name"><span class="test-details">计划准出时间:</span>{{ details.releasePlanTime }}</span>
|
|
|
+ <span class="from-name">
|
|
|
+ <span class="test-details">计划准出时间:</span>
|
|
|
+ {{ details.releasePlanTime }}
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <span class="from-namev"><span class="test-details">实际准出时间:</span>{{ details.releaseActualTime }}</span>
|
|
|
+ <span class="from-namev">
|
|
|
+ <span class="test-details">实际准出时间:</span>
|
|
|
+ {{ details.releaseActualTime }}
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row v-if="details.isDelay === 1">
|
|
|
+ <el-row v-if="details.releasePlanTime < details.releaseActualTime">
|
|
|
<el-col :span="24" class="Layout_space_between task-bot">
|
|
|
- <span class="from-namea"><span class="test-details">准出延期原因 : </span>{{ details.delayReason }}</span>
|
|
|
+ <span class="from-namea">
|
|
|
+ <span class="test-details">准出延期原因 :</span>
|
|
|
+ {{ details.delayReason }}
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row>
|
|
|
<el-col :span="12" class="Layout_space_between task-bot">
|
|
|
- <span class="from-name"><span class="test-details">计划开发周期:</span>{{ details.testPlanTimeStart }}</span>
|
|
|
+ <span class="from-name">
|
|
|
+ <span class="test-details">计划开发周期:</span>
|
|
|
+ {{ details.devPlanTimeStart }} 至 {{ details.devPlanTimeEnd }}
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
<el-col :span="12" class="Layout_space_between">
|
|
|
- <span class="from-namer"><span class="test-details">实际开发周期:</span>{{ details.testPlanTimeEnd }}</span>
|
|
|
+ <span class="from-namer">
|
|
|
+ <span class="test-details">实际开发周期:</span>
|
|
|
+ {{ details.devActualTimeStart }} 至 {{ details.devActualTimeEnd }}
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row>
|
|
|
<el-col :span="12" class="Layout_space_between task-bot">
|
|
|
- <span class="from-name"><span class="test-details">计划测试周期:</span>{{ details.testActualTimeStart }} </span>
|
|
|
+ <span class="from-name">
|
|
|
+ <span class="test-details">计划测试周期:</span>
|
|
|
+ {{ details.testPlanTimeStart }} 至 {{ details.testPlanTimeEnd }}
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
<el-col :span="12" class="Layout_space_between task-bot">
|
|
|
- <span class="from-namer"><span class="test-details">实际测试周期:</span>{{ details.testActualTimeEnd }}</span>
|
|
|
+ <span class="from-namer">
|
|
|
+ <span class="test-details">实际测试周期:</span>
|
|
|
+ {{ details.testActualTimeStart }} 至 {{ details.testActualTimeEnd }}
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row class="task-bot">
|
|
|
<el-col :span="12" class="Layout_space_between task-bot">
|
|
|
- <span class="from-name"><span class="test-details">开发人员:</span>{{ details.developer }}</span>
|
|
|
+ <span class="from-name">
|
|
|
+ <span class="test-details">开发人员:</span>
|
|
|
+ <span v-for="(item, index) in details.devObject" :key="index">{{ item.name }}</span>
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
<el-col :span="12" class="Layout_space_between task-bot">
|
|
|
- <span class="from-namer"><span class="test-details">测试人员:</span>{{ details.tester }}</span>
|
|
|
+ <span class="from-namer">
|
|
|
+ <span class="test-details">测试人员:</span>
|
|
|
+ <span v-for="(item, index) in details.testerObject" :key="index">{{ item.name }}</span>
|
|
|
+ </span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<div v-html="details.content" />
|
|
|
|
|
|
- <div class="title"> 缺陷统计</div>
|
|
|
- <icon-display :task-ids="details.statusString === '已发送' ? details : details.taskIds" />
|
|
|
+ <div class="title">缺陷统计</div>
|
|
|
+ <icon-display :task-ids="details.statusString === ' 已发送' ? details : details.taskIds" />
|
|
|
</el-main>
|
|
|
<el-aside width="400px">
|
|
|
<el-container>
|
|
|
<el-header class="report-mains">
|
|
|
- <div class="title"><div class="blur-column" /> 用户信息</div>
|
|
|
+ <div class="title">
|
|
|
+ <div class="blur-column" />用户信息
|
|
|
+ </div>
|
|
|
<div class="Layout_flex_start task-bot">
|
|
|
- <div class="title-name">报告人 : </div>
|
|
|
+ <div class="title-name">报告人 :</div>
|
|
|
<div class="task-name">{{ details.reportorObject ? details.reportorObject.name : '' }}</div>
|
|
|
</div>
|
|
|
<div class="Layout_flex_start task-bot">
|
|
|
- <div class="title-name">收件人 : </div>
|
|
|
- <div v-for="(item, index) in details.sendToObject" :key="index" class="task-name"> {{ item.name }} <span v-if="index < details.sendToObject.length - 1"> , </span></div>
|
|
|
+ <div class="title-name">收件人 :</div>
|
|
|
+ <div v-for="(item, index) in details.sendToObject" :key="index" class="task-name">
|
|
|
+ {{ item.name }}
|
|
|
+ <span v-if="index < details.sendToObject.length - 1">,</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="Layout_flex_start task-bot">
|
|
|
- <div class="title-name">抄送人 : </div>
|
|
|
- <div v-for="(item, index) in details.sendCcObject" :key="index" class="task-name">{{ item.name }} <span v-if="index < details.sendCcObject.length - 1"> , </span></div>
|
|
|
+ <div class="title-name">抄送人 :</div>
|
|
|
+ <div v-for="(item, index) in details.sendCcObject" :key="index" class="task-name">
|
|
|
+ {{ item.name }}
|
|
|
+ <span v-if="index < details.sendCcObject.length - 1">,</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</el-header>
|
|
|
<el-main class="report-mains">
|
|
|
- <div class="title"><div class="blur-column" /> 时间</div>
|
|
|
+ <div class="title">
|
|
|
+ <div class="blur-column" />时间
|
|
|
+ </div>
|
|
|
<div class="Layout_flex_start task-bot">
|
|
|
- <div class="title-name">创建时间 : </div>
|
|
|
+ <div class="title-name">创建时间 :</div>
|
|
|
<div class="task-name">{{ details.gmtCreate }}</div>
|
|
|
</div>
|
|
|
<div class="Layout_flex_start task-bot">
|
|
|
- <div class="title-name">发送时间 : </div>
|
|
|
+ <div class="title-name">发送时间 :</div>
|
|
|
<div class="task-name">{{ details.reportTime }}</div>
|
|
|
</div>
|
|
|
</el-main>
|
|
|
<el-footer class="report-mains">
|
|
|
- <div class="title"><div class="blur-column" /> 关联任务</div>
|
|
|
+ <div class="title">
|
|
|
+ <div class="blur-column" />关联任务
|
|
|
+ </div>
|
|
|
<div v-for="(item, index) in details.taskDetailList" :key="index" class="Layout_flex_start task-bot">
|
|
|
<div class="task-id">{{ item.taskId }}</div>
|
|
|
<el-tooltip class="item" effect="dark" :content="item.name" placement="top-start">
|
|
@@ -126,7 +167,10 @@
|
|
|
|
|
|
<script>
|
|
|
import '@/styles/PublicStyle/index.scss'
|
|
|
-import { reportreleaseGetReportById, reportreleaseDelete } from '@/api/reportTemplate'
|
|
|
+import {
|
|
|
+ reportreleaseGetReportById,
|
|
|
+ reportreleaseDelete
|
|
|
+} from '@/api/reportTemplate'
|
|
|
import iconDisplay from '@/views/reportManagement/ReleaseReport/components/iconDisplay.vue'
|
|
|
import ReleaseReport from '@/views/reportManagement/components/ReleaseReport' // 准出
|
|
|
export default {
|
|
@@ -146,13 +190,15 @@ export default {
|
|
|
this.reportreleaseGetReportById(this.reportId)
|
|
|
},
|
|
|
methods: {
|
|
|
- async reportreleaseGetReportById(e) { // 获取准出报告data
|
|
|
+ async reportreleaseGetReportById(e) {
|
|
|
+ // 获取准出报告data
|
|
|
const res = await reportreleaseGetReportById(e)
|
|
|
if (res.code === 200) {
|
|
|
this.details = res.data
|
|
|
}
|
|
|
},
|
|
|
- clientButtom(e, data) { // 准出报告
|
|
|
+ clientButtom(e, data) {
|
|
|
+ // 准出报告
|
|
|
this.report_data = data
|
|
|
this.dialogDaily = true
|
|
|
this.$nextTick(() => {
|
|
@@ -161,10 +207,14 @@ export default {
|
|
|
},
|
|
|
|
|
|
goTaskDetails(id) {
|
|
|
- this.$router.push({ name: '任务详情', query: { id: id }})
|
|
|
+ this.$router.push({
|
|
|
+ name: '任务详情',
|
|
|
+ query: { id: id }
|
|
|
+ })
|
|
|
},
|
|
|
|
|
|
- async deleteDaily() { // 删除准出报告
|
|
|
+ async deleteDaily() {
|
|
|
+ // 删除准出报告
|
|
|
const res = await reportreleaseDelete({}, this.details.id)
|
|
|
if (res.code === 200) {
|
|
|
this.dialog_testData = false
|
|
@@ -176,22 +226,22 @@ export default {
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
-<style lang="scss" scoped>
|
|
|
+<style lang='scss' scoped>
|
|
|
.BackgroundCloth {
|
|
|
-.report-Header {
|
|
|
- margin: 10px 10px 0;
|
|
|
- background: #FFF;
|
|
|
- border-radius:4px;
|
|
|
-}
|
|
|
-.from-margin {
|
|
|
+ .report-Header {
|
|
|
+ margin: 10px 10px 0;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
+ .from-margin {
|
|
|
width: 100%;
|
|
|
display: inline-block;
|
|
|
- font-size:14px;
|
|
|
- font-family:Microsoft Sans Serif;
|
|
|
- font-weight:400;
|
|
|
- line-height:22px;
|
|
|
- color:#333;
|
|
|
- opacity:1;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: Microsoft Sans Serif;
|
|
|
+ font-weight: 400;
|
|
|
+ line-height: 22px;
|
|
|
+ color: #333;
|
|
|
+ opacity: 1;
|
|
|
.from-name {
|
|
|
width: 140px !important;
|
|
|
}
|
|
@@ -203,112 +253,112 @@ export default {
|
|
|
}
|
|
|
.from-namer {
|
|
|
width: 140px !important;
|
|
|
- margin-left:10px;
|
|
|
+ margin-left: 10px;
|
|
|
}
|
|
|
.from-namev {
|
|
|
- margin-left:10px;
|
|
|
+ margin-left: 10px;
|
|
|
vertical-align: sub;
|
|
|
}
|
|
|
.from-value {
|
|
|
margin-left: 30px;
|
|
|
}
|
|
|
- .report-taskList{
|
|
|
- font-size:14px;
|
|
|
- font-family:MicrosoftYaHei;
|
|
|
- line-height:17px;
|
|
|
- color:rgba(102,102,102,1);
|
|
|
- margin-top: 10px;
|
|
|
- opacity:1;
|
|
|
+ .report-taskList {
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: MicrosoftYaHei;
|
|
|
+ line-height: 17px;
|
|
|
+ color: rgba(102, 102, 102, 1);
|
|
|
+ margin-top: 10px;
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
}
|
|
|
-}
|
|
|
|
|
|
-.details-id {
|
|
|
- font-size:12px;
|
|
|
- font-family:PingFang SC;
|
|
|
- font-weight:400;
|
|
|
- line-height:20px;
|
|
|
- color:rgba(51,59,74,1);
|
|
|
- opacity:0.5;
|
|
|
-}
|
|
|
+ .details-id {
|
|
|
+ font-size: 12px;
|
|
|
+ font-family: PingFang SC;
|
|
|
+ font-weight: 400;
|
|
|
+ line-height: 20px;
|
|
|
+ color: rgba(51, 59, 74, 1);
|
|
|
+ opacity: 0.5;
|
|
|
+ }
|
|
|
|
|
|
-.report-title {
|
|
|
- font-size:20px;
|
|
|
- font-family:PingFangSC-Medium;
|
|
|
- line-height:28px;
|
|
|
- color:rgba(51,59,74,1);
|
|
|
- opacity:1;
|
|
|
-}
|
|
|
+ .report-title {
|
|
|
+ font-size: 20px;
|
|
|
+ font-family: PingFangSC-Medium;
|
|
|
+ line-height: 28px;
|
|
|
+ color: rgba(51, 59, 74, 1);
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
|
|
|
-.details-statusString {
|
|
|
- font-size:14px;
|
|
|
- font-family:MicrosoftYaHei;
|
|
|
- line-height:17px;
|
|
|
- padding: 5px 8px;
|
|
|
- margin-left: 15px;
|
|
|
- color:rgba(111,124,147,1);
|
|
|
- border:1px solid rgba(191,198,220,1);
|
|
|
- opacity:1;
|
|
|
- border-radius:4px;
|
|
|
-}
|
|
|
+ .details-statusString {
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: MicrosoftYaHei;
|
|
|
+ line-height: 17px;
|
|
|
+ padding: 5px 8px;
|
|
|
+ margin-left: 15px;
|
|
|
+ color: rgba(111, 124, 147, 1);
|
|
|
+ border: 1px solid rgba(191, 198, 220, 1);
|
|
|
+ opacity: 1;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
|
|
|
-.report-main {
|
|
|
- margin: 10px;
|
|
|
- background: #FFF;
|
|
|
- border-radius:4px;
|
|
|
-}
|
|
|
-.report-mains {
|
|
|
- min-height: 200px;
|
|
|
- padding: 20px 30PX;
|
|
|
- margin: 10px 10px 0 0;
|
|
|
- background: #FFF;
|
|
|
- border-radius:4px;
|
|
|
-}
|
|
|
-.title {
|
|
|
- font-size:16px;
|
|
|
- font-family:PingFangSC-Medium;
|
|
|
- margin-bottom: 10px;
|
|
|
- color:rgba(51,59,74,1);
|
|
|
- opacity:1;
|
|
|
-}
|
|
|
+ .report-main {
|
|
|
+ margin: 10px;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
+ .report-mains {
|
|
|
+ min-height: 200px;
|
|
|
+ padding: 20px 30px;
|
|
|
+ margin: 10px 10px 0 0;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
+ .title {
|
|
|
+ font-size: 16px;
|
|
|
+ font-family: PingFangSC-Medium;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ color: rgba(51, 59, 74, 1);
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
|
|
|
-.title-name {
|
|
|
- width:100px;
|
|
|
- font-size:14px;
|
|
|
- font-family:PingFangSC-Regular;
|
|
|
- line-height:20px;
|
|
|
- color:rgba(102,102,102,1);
|
|
|
- opacity:1;
|
|
|
-}
|
|
|
+ .title-name {
|
|
|
+ width: 100px;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: PingFangSC-Regular;
|
|
|
+ line-height: 20px;
|
|
|
+ color: rgba(102, 102, 102, 1);
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
|
|
|
-.task-id {
|
|
|
- width:100px;
|
|
|
- font-size:14px;
|
|
|
- font-family:MicrosoftYaHei;
|
|
|
- line-height:17px;
|
|
|
- color:rgba(102,102,102,1);
|
|
|
- opacity:1;
|
|
|
-}
|
|
|
+ .task-id {
|
|
|
+ width: 100px;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: MicrosoftYaHei;
|
|
|
+ line-height: 17px;
|
|
|
+ color: rgba(102, 102, 102, 1);
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
|
|
|
-.task-name {
|
|
|
- font-size:14px;
|
|
|
- font-family:MicrosoftYaHei;
|
|
|
- line-height:17px;
|
|
|
- color:rgba(51,51,51,1);
|
|
|
- opacity:1;
|
|
|
-}
|
|
|
+ .task-name {
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: MicrosoftYaHei;
|
|
|
+ line-height: 17px;
|
|
|
+ color: rgba(51, 51, 51, 1);
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
|
|
|
-.blur-column {
|
|
|
- width:4px;
|
|
|
- height:15px;
|
|
|
- display:inline-block;
|
|
|
- vertical-align: middle;
|
|
|
- background:#409EFF;
|
|
|
- border-radius:1px;
|
|
|
-}
|
|
|
+ .blur-column {
|
|
|
+ width: 4px;
|
|
|
+ height: 15px;
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: middle;
|
|
|
+ background: #409eff;
|
|
|
+ border-radius: 1px;
|
|
|
+ }
|
|
|
|
|
|
-.task-bot {
|
|
|
- margin-bottom: 10px;
|
|
|
-}
|
|
|
+ .task-bot {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
}
|
|
|
.setLine {
|
|
|
padding: 10px 20px;
|