瀏覽代碼

Merge branch 'http_test' of git.xiaojukeji.com:jacklijiajia/thoth-frontend into http_test

wangziqian 5 年之前
父節點
當前提交
74b3cc2c04

+ 28 - 0
src/api/reportTemplate.js

@@ -92,6 +92,15 @@ export function dailyReportCreate(data) {
   })
 }
 
+// 任务下日报
+export function dailyReportGetByTaskIdV2(data) {
+  return request({
+    url: Presentation + '/dailyReport/getByTaskIdV2',
+    method: 'post',
+    data
+  })
+}
+
 // 更新创建
 export function dailyReportUpdate(data) {
   return request({
@@ -228,6 +237,15 @@ export function reportreleaseDelete(data, id) {
   })
 }
 
+// 任务下准出报告list
+export function reportreleaseGetByTaskId(data) {
+  return request({
+    url: Presentation + '/reportrelease/getByTaskId',
+    method: 'post',
+    data
+  })
+}
+
 // 报告查看(需区分已发送或未发送--状态区分)
 export function reportreleaseGetReportById(id) {
   return request({
@@ -326,3 +344,13 @@ export function reportdelivertestCheckStatus(data, id) {
     data
   })
 }
+
+// 任务下提测报告
+export function reportdelivertestGetByTaskId(data) {
+  return request({
+    url: Presentation + `/reportdelivertest/getByTaskId`,
+    method: 'post',
+    data
+  })
+}
+

+ 2 - 2
src/views/projectManage/requirement/list/index.vue

@@ -564,7 +564,7 @@ export default {
 .filter {
   font-size: 14px;
   width: 100%;
-  padding: 15px 11px 15px 15px;
+  padding: 15px 11px 0px 15px;
   color: #606266;
   cursor: pointer;
   .mine-filter {
@@ -576,7 +576,7 @@ export default {
       overflow: hidden;
       text-overflow:ellipsis;
       white-space: nowrap;
-      margin-bottom: 5px;
+      // margin-bottom: 5px;
     }
   }
 }

+ 31 - 30
src/views/projectManage/taskList/components/reportList.vue

@@ -119,7 +119,7 @@
                   </div>
                   <el-input v-show="Str === '打回'" v-model="launchRepulseInfo" type="textarea" placeholder="请输入打回原因..." :rows="3" />
                   <span slot="footer" class="dialog-footer">
-                    <el-button type="primary" size="mini" @click="dailySend()">确 定</el-button>
+                    <el-button type="primary" size="mini" @click="dailySend(scope.row.id)">确 定</el-button>
                     <el-button type="danger" size="mini" @click="dialog_daily = false">取 消</el-button>
                   </span>
                 </el-dialog>
@@ -187,7 +187,7 @@
                   </div>
                   <el-input v-show="Str === '打回'" v-model="launchRepulseInfo" type="textarea" placeholder="请输入打回原因..." :rows="3" />
                   <span slot="footer" class="dialog-footer">
-                    <el-button type="primary" size="mini" @click="clientSend()">确 定</el-button>
+                    <el-button type="primary" size="mini" @click="clientSend(scope.row.id)">确 定</el-button>
                     <el-button type="danger" size="mini" @click="dialog_client = false">取 消</el-button>
                   </span>
                 </el-dialog>
@@ -229,8 +229,7 @@ import TestReport from '@/views/reportManagement/components/TestingReport' // 
 import DailyReport from '@/views/reportManagement/components/DailyReport' // 日报
 import ReleaseReport from '@/views/reportManagement/components/ReleaseReport' // 准出
 import { dailyReportDelete, projectTestReportDelete } from '@/api/testPresentetion' // 日报
-import { launchTestUpdate } from '@/api/InterfaceReport'
-import { reportdelivertestList, reportreleaseList, dailyReportListV2 } from '@/api/reportTemplate'
+import { reportdelivertestGetByTaskId, reportreleaseGetByTaskId, dailyReportGetByTaskIdV2, reportdelivertestUpdate } from '@/api/reportTemplate'
 export default {
   components: {
     TestReport,
@@ -252,6 +251,7 @@ export default {
       launchRepulseInfo: '', // 打回原因
       CallBackStatus: '', // 打回状态
       CallBackId: '', // 打回id
+      reportData: {},
       titName: '', // 打回title
       Str: '', // 打回操作名称
       requireName: '', // 归属需求name
@@ -288,7 +288,7 @@ export default {
       val === 10086 ? this.dataStatus = !this.dataStatus : ''
       if (this.dataStatus) {
         const data = { taskId: this.taskId, bizId: localStorage.getItem('bizId'), curIndex: this.testPages.curIndex, pageSize: this.testPages.pageSize }
-        const res = await reportdelivertestList(data)
+        const res = await reportdelivertestGetByTaskId(data)
         if (res.code === 200) {
           this.testData = res.data.list
           this.testPages.total = res.data.total
@@ -306,10 +306,10 @@ export default {
       val === 10011 ? this.dailyDataStatus = !this.dailyDataStatus : ''
       if (this.dailyDataStatus) {
         const indexPage = { taskId: this.taskId, bizId: localStorage.getItem('bizId'), curIndex: this.clientPages.curIndex, pageSize: this.clientPages.pageSize }
-        const res = await dailyReportListV2(indexPage)
+        const res = await dailyReportGetByTaskIdV2(indexPage)
         if (res.code === 200) {
-          this.dailyData = res.data
-          this.dailyPages.total = res.total
+          this.dailyData = res.data.list
+          this.dailyPages.total = res.data.total
         }
       } else {
         const params = { taskId: this.taskId, curIndex: this.dailyPages.curIndex, pageSize: this.dailyPages.pageSize }
@@ -324,7 +324,7 @@ export default {
       val === 10000 ? this.releaseDataStatus = !this.releaseDataStatus : ''
       if (this.releaseDataStatus) {
         const indexPage = { taskId: this.taskId, bizId: localStorage.getItem('bizId'), curIndex: this.clientPages.curIndex, pageSize: this.clientPages.pageSize }
-        const res = await reportreleaseList(indexPage)
+        const res = await reportreleaseGetByTaskId(indexPage)
         if (res.code === 200) {
           this.clientData = res.data.list
           this.clientPages.total = res.data.total
@@ -364,30 +364,38 @@ export default {
     },
     async passOrBackSend() { // 提测打回
       this.dialog_testData = false
-      const launchTestInfo = { status: this.CallBackStatus, id: this.CallBackId, launchRepulseInfo: this.launchRepulseInfo }
-      const userData = { id: '', ename: this.userInformation, name: this.userNames }
-      const objData = { launchTestInfo: launchTestInfo, user: userData }
+      // const userData = { id: '', ename: this.userInformation, name: this.userNames }
       if (this.Str === '通过' || this.Str === '打回') {
-        const res = await launchTestUpdate(objData)
+        const data = {
+          id: this.reportData.id,
+          moduleId: this.reportData.moduleId,
+          bizId: this.reportData.bizId,
+          taskIds: [this.taskId],
+          reportName: this.reportData.reportName,
+          returnReason: this.reportData.reason,
+          status: this.Str === '打回' ? 2 : this.Str === '通过' ? 1 : ''
+        }
+        const res = await reportdelivertestUpdate(data)
         if (res.code === 200) {
           this.getTest()
           this.$message({ message: res.msg, type: 'success', offset: 150 })
-        } else {
-          this.$message({ message: res.msg, type: 'error', offset: 150 })
         }
       } else if (this.Str === '删除') {
-        const res = await launchTestDelete(userData, this.CallBackId)
+        const res = await launchTestDelete(this.reportData.id)
         if (res.code === 200) {
           this.$message({ type: 'success', message: '删除成功' })
         }
       }
     },
-    async dailySend() { // 测试日报删除
-      const res = await dailyReportDelete(this.CallBackId)
+
+    async dailySend(e) { // 测试日报删除
+      console.log(e)
+      const res = await dailyReportDelete(e)
       if (res.code === 200) {
         this.$message({ type: 'success', message: '删除成功' })
       }
     },
+
     async clientSend() { // 准出报告删除
       const res = await projectTestReportDelete(this.CallBackId)
       if (res.code === 200) {
@@ -398,29 +406,22 @@ export default {
       this.dialog_testData = false
       this.$message({ type: 'warning', message: '已取消' })
     },
+
     toReportView(ele, index) { // 进入报告详情页
       switch (index) {
         case 0:
-          this.dialogDaily = true
-          this.$nextTick(() => {
-            this.$refs.DailyReport.init(3, ele)
-          })
+          this.$router.push({ name: '日报详情', query: { id: ele.id }})
           break
         case 1:
-          this.dialogClient = true
-          this.$nextTick(() => {
-            this.$refs.ClientReport.init(3, ele)
-          })
+          this.$router.push({ name: '准出详情', query: { id: ele.id }})
           break
         case 2:
-          this.dialogTest = true
-          this.$nextTick(() => {
-            this.$refs.TestReport.init(3, ele)
-          })
+          this.$router.push({ name: '提测详情', query: { id: ele.id }})
           break
       }
     },
     back(e, ele, data) { // 提测报告
+      this.reportData = data
       this.dataStatus ? this.requireName = data.reportName : this.requireName = data.name
       this.CallBackStatus = e
       this.CallBackId = ele

+ 99 - 49
src/views/reportManagement/ReleaseReport/components/iconDisplay.vue

@@ -17,7 +17,7 @@
       <div id="lineShow" class="backTop" />
       <div id="barShow" class="backTop" />
     </div>
-    <div class="backStyle">遗留缺陷</div>
+    <div class="title">遗留缺陷</div>
     <el-table
       :data="tableData"
       border
@@ -31,12 +31,12 @@
           <span class="didi-hover" @click.stop="click_bugName(scope.row.id)">{{ scope.row.bugName }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="priorityLevel" label="缺陷状态" align="center" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="priorityName" label="缺陷等级" align="center" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="bugStatusName" label="缺陷状态" align="center" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="priorityLevel" label="缺陷等级" align="center" min-width="100" show-overflow-tooltip />
       <el-table-column prop="creatorList" label="提报人" align="center" min-width="90" show-overflow-tooltip />
       <el-table-column prop="assignerList" label="责任人" align="center" min-width="90" show-overflow-tooltip />
       <el-table-column prop="currentHandlerList" label="修复人" align="center" min-width="90" show-overflow-tooltip />
-      <el-table-column prop="date" label="备注(Hole原因等)" align="center" min-width="150" />
+      <el-table-column prop="date" label="备注(hold原因等)" align="center" min-width="150" />
     </el-table>
   </div>
 </template>
@@ -46,12 +46,14 @@ import echarts from 'echarts'
 import { bugGetReportOutSumData, bugGetReportNotResolveData, bugGetReportDisDataByMember, bugGetReportDisDataByPri, bugGetReportDisDataByDate } from '@/api/reportTemplate' // 模版添删改查
 export default {
   props: {
-    taskIds: { type: [Array, Object], default: null }
+    taskIds: { type: [Array, Object], default: null },
+    releaseType: { type: Boolean, default: false }
   },
   data() {
     return {
       bugTableData: [],
       tableData: [],
+      types: false,
       taskId: [] // 创建准出的任务
     }
   },
@@ -69,6 +71,12 @@ export default {
         }
       },
       immediate: true
+    },
+    releaseType: {
+      handler(newV) {
+        this.types = newV
+      },
+      immediate: true
     }
   },
   methods: {
@@ -86,7 +94,7 @@ export default {
           title: { text: '新增缺陷趋势图', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
           tooltip: { axisPointer: { type: 'shadow' }},
           grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
-          xAxis: [{ type: 'category', data: res.bugDisByDate.xAxis ? res.bugDisByDate.xAxis : ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期七'], axisTick: { alignWithLabel: true }}],
+          xAxis: [{ type: 'category', data: res.bugDisByDate.xAxis ? res.bugDisByDate.xAxis : ['未知', '未知', '未知', '未知', '未知', '未知', '未知'], axisTick: { alignWithLabel: true }}],
           yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
           series: res.bugDisByDate.yAxis[0].data <= 0 ? [{ name: '直接访问', type: 'line', smooth: true, data: [0, 0, 0, 0, 0, 0, 0] }] : data
         })
@@ -103,7 +111,7 @@ export default {
           title: { text: '缺陷责任人分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
           tooltip: { axisPointer: { type: 'shadow' }},
           grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
-          xAxis: [{ type: 'category', data: res.bugDisByMember.xAxis[0] ? res.bugDisByMember.xAxis : ['P0', 'P1', 'P2', 'P3'], axisTick: { alignWithLabel: true }}],
+          xAxis: [{ type: 'category', data: res.bugDisByMember.xAxis[0] ? res.bugDisByMember.xAxis : ['未知', '未知', '未知', '未知'], axisTick: { alignWithLabel: true }}],
           yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
           series: res.bugDisByMember.yAxis[0].data <= 0 ? [{ name: '无数据', type: 'bar', barWidth: '20px', data: [0, 0, 0, 0] }] : lineShow
         })
@@ -128,70 +136,103 @@ export default {
     },
 
     async getRouterData(val) {
-      const res = await bugGetReportOutSumData({ taskIds: val })
-      if (res.code === 200) {
-        this.bugTableData = [res.data]
-      }
-      const res1 = await bugGetReportNotResolveData({ taskIds: val })
-      if (res1.code === 200) {
-        this.tableData = res1.dada
-      }
-      const res6 = await bugGetReportDisDataByDate({ taskIds: val })
-      if (res6.code === 200) {
-        const data = res6.data.yaxis.map(item => ({
-          ...item,
-          type: 'line',
-          smooth: true
-        }))
+      if (this.types) {
+        const res = await bugGetReportOutSumData({ taskIds: val })
+        if (res.code === 200) {
+          this.bugTableData = [res.data]
+        }
+        const res1 = await bugGetReportNotResolveData({ taskIds: val })
+        if (res1.code === 200) {
+          this.tableData = res1.dada
+        }
+        const res6 = await bugGetReportDisDataByDate({ taskIds: val })
+        if (res6.code === 200) {
+          const data = res6.data.yaxis.map(item => ({
+            ...item,
+            type: 'line',
+            smooth: true
+          }))
+          setTimeout(() => {
+            echarts.init(document.getElementById('line-echarts')).setOption({
+              color: ['#409EFF'],
+              title: { text: '新增缺陷趋势图', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
+              tooltip: { axisPointer: { type: 'shadow' }},
+              grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
+              xAxis: [{ type: 'category', data: res6.data.xaxis === null ? ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期七'] : res6.data.xaxis, axisTick: { alignWithLabel: true }}],
+              yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
+              series: res6.data.yaxis[0].data <= 0 ? [{ name: '直接访问', type: 'line', smooth: true, data: [0, 0, 0, 0, 0, 0, 0] }] : data
+
+            })
+          }, 200)
+        }
+        const res2 = await bugGetReportDisDataByMember({ taskIds: val })
+        if (res2.code === 200) {
+          const data = res2.data.yaxis.map(item => ({
+            ...item,
+            type: 'bar',
+            barWidth: '20px'
+          }))
+          setTimeout(() => {
+            echarts.init(document.getElementById('lineShow')).setOption({
+              color: ['#409EFF'],
+              title: { text: '缺陷责任人分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
+              tooltip: { axisPointer: { type: 'shadow' }},
+              grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
+              xAxis: [{ type: 'category', data: res2.data.xaxis[0] ? res2.data.xaxis : ['P0', 'P1', 'P2', 'P3'], axisTick: { alignWithLabel: true }}],
+              yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
+              series: res2.data.yaxis[0].data <= 0 ? [{ name: '无数据', type: 'bar', barWidth: '20px', data: [0, 0, 0, 0] }] : data
+            })
+          }, 200)
+        }
+        const res3 = await bugGetReportDisDataByPri({ taskIds: val })
+        if (res3.code === 200) {
+          const data = res3.data.yaxis.map(item => ({
+            ...item,
+            type: 'bar',
+            barWidth: '20px'
+          }))
+          setTimeout(() => {
+            echarts.init(document.getElementById('barShow')).setOption({
+              backgroundColor: '#FFF',
+              color: ['#409EFF'],
+              title: { text: '缺陷等级分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
+              tooltip: { axisPointer: { type: 'shadow' }},
+              grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
+              xAxis: [{ type: 'category', data: res3.data.xaxis, axisTick: { alignWithLabel: true }}],
+              yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
+              series: res3.data.yaxis[0].data <= 0 ? [{ name: '无数据', type: 'bar', barWidth: '20px', data: [0, 0, 0, 0] }] : data
+            })
+          }, 200)
+        }
+      } else {
         setTimeout(() => {
           echarts.init(document.getElementById('line-echarts')).setOption({
             color: ['#409EFF'],
             title: { text: '新增缺陷趋势图', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
             tooltip: { axisPointer: { type: 'shadow' }},
             grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
-            xAxis: [{ type: 'category', data: res6.data.xaxis === null ? ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期七'] : res6.data.xaxis, axisTick: { alignWithLabel: true }}],
+            xAxis: [{ type: 'category', data: ['未知', '未知', '未知', '未知', '未知', '未知', '未知'], axisTick: { alignWithLabel: true }}],
             yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
-            series: res6.data.yaxis[0].data <= 0 ? [{ name: '直接访问', type: 'line', smooth: true, data: [0, 0, 0, 0, 0, 0, 0] }] : data
-
+            series: [{ name: '直接访问', type: 'line', smooth: true, data: [0, 0, 0, 0, 0, 0, 0] }]
           })
-        }, 200)
-      }
-      const res2 = await bugGetReportDisDataByMember({ taskIds: val })
-      if (res2.code === 200) {
-        const data = res2.data.yaxis.map(item => ({
-          ...item,
-          type: 'bar',
-          barWidth: '20px'
-        }))
-        setTimeout(() => {
           echarts.init(document.getElementById('lineShow')).setOption({
             color: ['#409EFF'],
             title: { text: '缺陷责任人分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
             tooltip: { axisPointer: { type: 'shadow' }},
             grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
-            xAxis: [{ type: 'category', data: res2.data.xaxis[0] ? res2.data.xaxis : ['P0', 'P1', 'P2', 'P3'], axisTick: { alignWithLabel: true }}],
+            xAxis: [{ type: 'category', data: ['未知', '未知', '未知', '未知'], axisTick: { alignWithLabel: true }}],
             yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
-            series: res2.data.yaxis[0].data <= 0 ? [{ name: '无数据', type: 'bar', barWidth: '20px', data: [0, 0, 0, 0] }] : data
+            series: [{ name: '无数据', type: 'bar', barWidth: '20px', data: [0, 0, 0, 0] }]
           })
-        }, 200)
-      }
-      const res3 = await bugGetReportDisDataByPri({ taskIds: val })
-      if (res3.code === 200) {
-        const data = res3.data.yaxis.map(item => ({
-          ...item,
-          type: 'bar',
-          barWidth: '20px'
-        }))
-        setTimeout(() => {
           echarts.init(document.getElementById('barShow')).setOption({
             backgroundColor: '#FFF',
             color: ['#409EFF'],
             title: { text: '缺陷等级分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
             tooltip: { axisPointer: { type: 'shadow' }},
             grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
-            xAxis: [{ type: 'category', data: res3.data.xaxis, axisTick: { alignWithLabel: true }}],
+            xAxis: [{ type: 'category', data: ['未知', '未知', '未知', '未知'], axisTick: { alignWithLabel: true }}],
             yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
-            series: res3.data.yaxis[0].data <= 0 ? [{ name: '无数据', type: 'bar', barWidth: '20px', data: [0, 0, 0, 0] }] : data
+            series: [{ name: '无数据', type: 'bar', barWidth: '20px', data: [0, 0, 0, 0] }]
           })
         }, 200)
       }
@@ -214,4 +255,13 @@ export default {
     width: 400px;
     height:400px;
   }
+
+  .title {
+  font-size:16px;
+  font-family:PingFangSC-Medium;
+  line-height:35px;
+  margin-bottom: 10px;
+  color:rgba(51,59,74,1);
+  opacity:1;
+}
 </style>

+ 21 - 24
src/views/reportManagement/ReleaseReport/components/releaseDetails.vue

@@ -3,10 +3,7 @@
     <el-header class="public_header setLine">
       <div class="Layout_space_between">
         <div class="Layout_flex_start">
-          <div>
-            <span class="details-id">{{ 'report-' + details.id }}</span><br>
-            <span class="report-title">{{ details.reportName }}</span>
-          </div>
+          <span class="report-title">{{ details.reportName }}</span>
           <div class="details-statusString">{{ details.statusString }}</div>
         </div>
         <div v-if="details.status === 3 ? false : true">
@@ -22,49 +19,49 @@
         <el-row>
           <el-col :span="24" class="task-bot">
             <span class="from-names">测试结果: </span>
-            <span class="from-value">通过</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">计划准出时间:{{ 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"> 实际准出时间:{{ 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-col :span="24" class="Layout_space_between task-bot">
-            <span class="from-namea">准出延期原因 : {{ details.moduleName }}</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">计划开发周期:{{ details.testPlanTimeStart }}</span>
+            <span class="from-name"><span class="test-details">计划开发周期:</span>{{ details.testPlanTimeStart }}</span>
           </el-col>
           <el-col :span="12" class="Layout_space_between">
-            <span class="from-namer"> 实际开发周期:{{ details.testPlanTimeEnd }}</span>
+            <span class="from-namer"><span class="test-details">实际开发周期:</span>{{ details.testPlanTimeEnd }}</span>
           </el-col>
         </el-row>
 
         <el-row>
           <el-col :span="12" class="Layout_space_between task-bot">
-            <span class="from-name">计划测试周期:{{ details.testActualTimeStart }} </span>
+            <span class="from-name"><span class="test-details">计划测试周期:</span>{{ details.testActualTimeStart }} </span>
           </el-col>
           <el-col :span="12" class="Layout_space_between task-bot">
-            <span class="from-namer">实际测试周期:{{ details.testActualTimeEnd }}</span>
+            <span class="from-namer"><span class="test-details">实际测试周期:</span>{{ details.testActualTimeEnd }}</span>
           </el-col>
         </el-row>
 
         <el-row>
           <el-col :span="12" class="Layout_space_between task-bot">
-            <span class="from-name">开发人员:{{ details.developer }}</span>
+            <span class="from-name"><span class="test-details">开发人员:</span>{{ details.developer }}</span>
           </el-col>
           <el-col :span="12" class="Layout_space_between task-bot">
-            <span class="from-namer"> 测试人员:{{ details.tester }}</span>
+            <span class="from-namer"><span class="test-details">测试人员:</span>{{ details.tester }}</span>
           </el-col>
         </el-row>
         <div v-html="details.content" />
@@ -74,26 +71,26 @@
         <el-container>
           <el-header class="report-mains">
             <div class="title"><div class="blur-column" /> 用户信息</div>
-            <div class="Layout_flex_start">
+            <div class="Layout_flex_start task-bot">
               <div class="title-name">报告人 : </div>
               <div class="task-name">{{ details.reportorObject ? details.reportorObject.name : '' }}</div>
             </div>
-            <div class="Layout_flex_start">
+            <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>
-            <div class="Layout_flex_start">
+            <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>
           </el-header>
           <el-main class="report-mains">
             <div class="title"><div class="blur-column" /> 时间</div>
-            <div class="Layout_flex_start">
+            <div class="Layout_flex_start task-bot">
               <div class="title-name">创建时间 : </div>
               <div class="task-name">{{ details.gmtCreate }}</div>
             </div>
-            <div class="Layout_flex_start">
+            <div class="Layout_flex_start task-bot">
               <div class="title-name">发送时间 : </div>
               <div class="task-name">{{ details.reportTime }}</div>
             </div>
@@ -189,7 +186,7 @@ export default {
     font-family:Microsoft Sans Serif;
     font-weight:400;
     line-height:22px;
-    color:#666666;
+    color:#333;
     opacity:1;
     .from-name {
       width: 140px !important;
@@ -210,7 +207,6 @@ export default {
     }
     .from-value {
       margin-left: 30px;
-      color:rgba(126,211,33,1);
     }
   .report-taskList{
     font-size:14px;
@@ -258,7 +254,7 @@ export default {
 }
 .report-mains {
   min-height: 200px;
-  padding: 20px ;
+  padding: 20px 30PX;
   margin: 10px 10px 0 0;
   background: #FFF;
   border-radius:4px;
@@ -266,7 +262,6 @@ export default {
 .title {
   font-size:16px;
   font-family:PingFangSC-Medium;
-  line-height:35px;
   margin-bottom: 10px;
   color:rgba(51,59,74,1);
   opacity:1;
@@ -275,7 +270,6 @@ export default {
 .title-name {
   width:100px;
   font-size:14px;
-  margin-bottom: 10px;
   font-family:PingFangSC-Regular;
   line-height:20px;
   color:rgba(102,102,102,1);
@@ -315,4 +309,7 @@ export default {
 .setLine {
   padding: 10px 20px;
 }
+.test-details {
+  color: #666666;
+}
 </style>

+ 38 - 33
src/views/reportManagement/ReleaseReport/newReleaeTemplate.vue

@@ -5,11 +5,11 @@
       <el-form-item v-if="releaseType" label="模版名称" prop="moduleName" :rules="[{ required: true, message: '模版名称不能为空', trigger: 'change'}]"><br>
         <el-input v-model="from.moduleName" size="small" style="width:100%;" placeholder="请输入模版名称(不可与现有模版重名)" />
       </el-form-item>
-      <el-form-item v-if="!releaseType" label="报告名称" prop="reportName" :rules="[{ required: true, message: '模版名称不能为空', trigger: 'change'}]"><br>
-        <el-input v-model="from.reportName" size="small" type="text" maxlength="50" style="width:100%;" placeholder="请输入模版名称(不可与现有模版重名)" />
+      <el-form-item v-if="!releaseType" label="报告名称" prop="reportName" :rules="[{ required: true, message: '报告名称不能为空', trigger: 'change'}]"><br>
+        <el-input v-model="from.reportName" size="small" type="text" maxlength="50" style="width:100%;" placeholder="请输入报告名称" />
       </el-form-item>
 
-      <div class="backStyle">{{ !releaseType ? '报告模版' : '模版内容' }}</div>
+      <div class="backStyle">{{ !releaseType ? '报告内容' : '模版内容' }}</div>
 
       <el-row class="from-margin">
         <el-col :span="24">
@@ -71,7 +71,7 @@
       <normal-area id="report-template" :value.sync="fromData.content" :height="500" />
     </el-form>
     <div class="backStyle">缺陷统计</div>
-    <iconDisplay :task-ids="taskId" />
+    <iconDisplay :task-ids="taskId" :release-type="releaseType" />
   </div>
 </template>
 
@@ -139,41 +139,46 @@ export default {
         this.$nextTick(() => {
           this.taskId = res.data.taskIds
         })
-        const from = res.data
-        this.$set(this.from, 'reportName', from.reportName) // 报告名称
-        this.$set(this.from, 'releasePlanTime', from.releasePlanTime) // 计划准出时间
-        this.$set(this.from, 'releaseActualTime', from.releaseActualTime) // 实际准出时间
-        this.$set(this.from, 'isDelay', from.isDelay) // 准出是否延期 1 延期,0未延期
-        this.$set(this.from, 'delayReason', from.delayReason) // 是否延期
-        this.$set(this.from, 'content', from.content) // 富文本
-        this.$set(this.from, 'delayReason', from.delayReason) // 延期原因
-        this.fromData.content = from.content // 富文本
-        if (from.devPlanTimeStart) {
-          this.$set(this.from, 'devPlanTimeStart', [from.devPlanTimeStart, from.devPlanTimeEnd]) // 计划开发开始时间-计划开发结束时间
-        }
-        if (from.devActualTimeStart) {
-          this.$set(this.from, 'devActualTimeStart', [from.devActualTimeStart, from.devActualTimeEnd]) // 实际开发开始时间-实际开发结束时间
-        }
-        if (from.testPlanTimeStart) {
-          this.$set(this.from, 'testPlanTimeStart', [from.testPlanTimeStart, from.testPlanTimeEnd]) // 计划测试开始时间-计划测试结束时间
-        }
-        if (from.testActualTimeStart) {
-          this.$set(this.from, 'testActualTimeStart', [from.testActualTimeStart, from.testActualTimeEnd]) // 实际测试开始时间-实际测试结束时间
-        }
-        this.from.taskIds = from.taskId // 关联任务
-        this.from.bizId = from.bizId // 业务线
-        this.from.moduleId = from.moduleId // 模块id
-        this.from.developer = from.developer ? from.developer.split() : null // 开发人员
-        this.from.tester = from.tester ? from.tester.split() : null // 测试人员
-        console.log(this.from, 'bianji')
+        this.setDefaultData(res.data)
       }
     },
 
     async reportreleaseInitReportRelease() { // 获取表单数据
       const res = await reportreleaseInitReportRelease({ taskIds: this.taskId })
       if (res.code === 200) {
-        this.from = res.data
+        this.setDefaultData(res.data)
+      }
+    },
+
+    setDefaultData(dav) {
+      const from = dav
+      if (dav.reportName !== null) {
+        this.$set(this.from, 'reportName', from.reportName) // 报告名称
+      }
+      this.$set(this.from, 'releasePlanTime', from.releasePlanTime) // 计划准出时间
+      this.$set(this.from, 'releaseActualTime', from.releaseActualTime) // 实际准出时间
+      this.$set(this.from, 'isDelay', from.isDelay) // 准出是否延期 1 延期,0未延期
+      this.$set(this.from, 'delayReason', from.delayReason) // 是否延期
+      this.$set(this.from, 'content', from.content) // 富文本
+      this.$set(this.from, 'delayReason', from.delayReason) // 延期原因
+      this.fromData.content = from.content // 富文本
+      if (from.devPlanTimeStart) {
+        this.$set(this.from, 'devPlanTimeStart', [from.devPlanTimeStart, from.devPlanTimeEnd]) // 计划开发开始时间-计划开发结束时间
+      }
+      if (from.devActualTimeStart) {
+        this.$set(this.from, 'devActualTimeStart', [from.devActualTimeStart, from.devActualTimeEnd]) // 实际开发开始时间-实际开发结束时间
+      }
+      if (from.testPlanTimeStart) {
+        this.$set(this.from, 'testPlanTimeStart', [from.testPlanTimeStart, from.testPlanTimeEnd]) // 计划测试开始时间-计划测试结束时间
+      }
+      if (from.testActualTimeStart) {
+        this.$set(this.from, 'testActualTimeStart', [from.testActualTimeStart, from.testActualTimeEnd]) // 实际测试开始时间-实际测试结束时间
       }
+      this.from.taskIds = from.taskId // 关联任务
+      this.from.bizId = from.bizId // 业务线
+      this.from.moduleId = from.moduleId // 模块id
+      this.from.developer = from.developer ? from.developer.split() : null // 开发人员
+      this.from.tester = from.tester ? from.tester.split() : null // 测试人员
     },
 
     async settingGetReportModuleById(val) { // 获取富文本内容
@@ -280,7 +285,7 @@ export default {
         if (valid) {
           const data = {}
           data.bizId = localStorage.getItem('bizId')
-          data.content = this.content
+          data.content = this.fromData.content
           data.moduleName = this.from.moduleName
           data.type = 4 // 准出报告 4
           if (this.tpltId) {

+ 5 - 1
src/views/reportManagement/ReleaseReport/releaePreview.vue

@@ -11,7 +11,10 @@
       <searchTeam :value.sync="form.names" :clearable="true" :multiple="true" style="width:100%" />
     </div>
     <div id="repot-list">
-      <div class="reportName">{{ fromCreateData.reportName }}</div>
+      <div class="Layout_space_between">
+        <div class="reportName">{{ fromCreateData.reportName }}</div>
+        <div>报告人:{{ userNames }}</div>
+      </div>
 
       <el-row>
         <el-col :span="24">
@@ -87,6 +90,7 @@ export default {
   data() {
     return {
       form: {}, // 发送报告content
+      userNames: localStorage.getItem('realname'),
       fromCreateData: {}, // listAll
       tasksOptions: [], // 任务下拉选项
       tasksDetailList: [], // 已有任务项目

+ 5 - 1
src/views/reportManagement/Testing/TestingPreview.vue

@@ -11,7 +11,10 @@
       <searchTeam :value.sync="form.names" :clearable="true" :multiple="true" style="width:100%" />
     </div>
     <div id="repot-list">
-      <div class="report-tit">{{ fromCreateData.reportName }}</div>
+      <div class="Layout_space_between">
+        <div class="report-tit">{{ fromCreateData.reportName }}</div>
+        <div>报告人:{{ userNames }}</div>
+      </div>
 
       <el-row>
         <el-col :span="12" class="Layout_space_between">
@@ -97,6 +100,7 @@ export default {
   data() {
     return {
       form: {}, // 发送报告content
+      userNames: localStorage.getItem('realname'),
       fromCreateData: {}, // listAll
       tasksOptions: [], // 任务下拉选项
       tasksDetailList: [], // 已有任务项目

+ 29 - 22
src/views/reportManagement/Testing/components/deliverDetails.vue

@@ -3,10 +3,7 @@
     <el-header class="public_header setLine">
       <div class="Layout_space_between">
         <div class="Layout_flex_start">
-          <div>
-            <span class="details-id">{{ 'report-' + details.id }}</span><br>
-            <span class="report-title">{{ details.reportName }}</span>
-          </div>
+          <span class="report-title">{{ details.reportName }}</span>
           <div class="details-statusString">{{ details.statusString }}</div>
         </div>
         <div v-if="details.status === 1 ? false : true">
@@ -25,34 +22,34 @@
 
         <el-row>
           <el-col :span="12" class="Layout_space_between task-bot">
-            <span class="from-name">计划提测时间:{{ details.deliverTestPlanTime }}</span>
+            <span class="from-name"><span class="test-details">计划提测时间:</span>{{ details.deliverTestPlanTime }}</span>
           </el-col>
           <el-col :span="12">
-            <span class="from-namev">实际提测时间:{{ details.deliverTestActualTime }}</span>
+            <span class="from-namev"><span class="test-details">实际提测时间:</span>{{ details.deliverTestActualTime }}</span>
           </el-col>
         </el-row>
 
         <el-row v-show="details.isDelay === 1">
           <el-col :span="24" class="Layout_space_between task-bot">
-            <span class="from-namea">提测延期原因 : {{ 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">计划开发时间:{{ details.devPlanTimeStart + '至' + details.devPlanTimeEnd }}</span>
+            <span class="from-name"><span class="test-details">计划开发时间:</span>{{ details.devPlanTimeStart !== null ? details.devPlanTimeStart + '至' + details.devPlanTimeEnd : '' }}</span>
           </el-col>
           <el-col :span="12" class="Layout_space_between task-bot">
-            <span class="from-namer">实际开发时间:{{ details.devActualTimeStart + '至' + details.devActualTimeEnd }}</span>
+            <span class="from-namer"><span class="test-details">实际开发时间:</span>{{ details.devActualTimeStart !== null ? 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">是否跟版:{{ details.followVersion === 2 ? '否' : '是' }} </span>
+            <span class="from-name"><span class="test-details">是否跟版:</span>{{ details.followVersion === 2 ? '否' : '是' }} </span>
           </el-col>
           <el-col v-show="details.followVersion === 1" :span="12" class="Layout_space_between task-bot">
-            <span class="from-namer">跟版客户端:{{ details.involveAppString }}</span>
+            <span class="from-namer"><span class="test-details">跟版客户端:</span>{{ details.involveAppString }}</span>
           </el-col>
         </el-row>
 
@@ -61,10 +58,10 @@
             <span class="from-name">CodeReview:{{ details.isCodeReview === 0 ? '否' : '是' }}</span>
           </el-col>
           <el-col v-show="details.isCodeReview === 1" :span="12" class="Layout_space_between task-bot">
-            <span class="from-namer">执行人:{{ details.codeReviewExecutor }}</span>
+            <span class="from-namer"><span class="test-details">执行人:</span>{{ details.codeReviewExecutor }}</span>
           </el-col>
         </el-row>
-        <div class="backStyle">需求列表</div>
+        <div class="title">需求列表</div>
 
         <el-table
           :data="tableData"
@@ -91,26 +88,26 @@
         <el-container>
           <el-header class="report-mains">
             <div class="title"><div class="blur-column" /> 用户信息</div>
-            <div class="Layout_flex_start">
+            <div class="Layout_flex_start task-bot">
               <div class="title-name">报告人 : </div>
               <div class="task-name">{{ details.reportorObject ? details.reportorObject.name : '' }}</div>
             </div>
             <div class="Layout_flex_start">
-              <div class="title-name">收件人 : </div>
+              <div class="title-name task-bot">收件人 : </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">
+            <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>
           </el-header>
           <el-main class="report-mains">
             <div class="title"><div class="blur-column" /> 时间</div>
-            <div class="Layout_flex_start">
+            <div class="Layout_flex_start task-bot">
               <div class="title-name">创建时间 : </div>
               <div class="task-name">{{ details.gmtCreate }}</div>
             </div>
-            <div class="Layout_flex_start">
+            <div class="Layout_flex_start task-bot">
               <div class="title-name">发送时间 : </div>
               <div class="task-name">{{ details.reportTime }}</div>
             </div>
@@ -236,7 +233,7 @@ export default {
     font-family:Microsoft Sans Serif;
     font-weight:400;
     line-height:22px;
-    color:#666666;
+    color:#333;
     opacity:1;
     .from-name {
       width: 140px !important;
@@ -305,7 +302,7 @@ export default {
 }
 .report-mains {
   min-height: 200px;
-  padding: 20px ;
+  padding: 20px 30px;
   margin: 10px 10px 0 0;
   background: #FFF;
   border-radius:4px;
@@ -313,7 +310,6 @@ export default {
 .title {
   font-size:16px;
   font-family:PingFangSC-Medium;
-  line-height:35px;
   margin-bottom: 10px;
   color:rgba(51,59,74,1);
   opacity:1;
@@ -322,7 +318,6 @@ export default {
 .title-name {
   width:100px;
   font-size:14px;
-  margin-bottom: 10px;
   font-family:PingFangSC-Regular;
   line-height:20px;
   color:rgba(102,102,102,1);
@@ -362,4 +357,16 @@ export default {
 .setLine {
   padding: 10px 20px;
 }
+.test-details {
+  color: #666666;
+}
+
+.title {
+  font-size:16px;
+  font-family:PingFangSC-Medium;
+  line-height:35px;
+  margin-bottom: 10px;
+  color:rgba(51,59,74,1);
+  opacity:1;
+}
 </style>

+ 19 - 10
src/views/reportManagement/Testing/newTestingTemplate.vue

@@ -3,7 +3,7 @@
   <div class="report-container">
     <el-form ref="fromCreateData" :model="from">
       <el-form-item v-if="releaseType" label="模版名称" prop="moduleName" :rules="[{ required: true, message: '模版名称不能为空', trigger: 'change'}]"><br>
-        <el-input v-model="fromCreateData.moduleName" size="small" style="width:100%;" placeholder="请输入模版名称(不可与现有模版重名)" />
+        <el-input v-model="from.moduleName" size="small" style="width:100%;" placeholder="请输入模版名称(不可与现有模版重名)" />
       </el-form-item>
       <el-form-item v-if="!releaseType" label="报告名称" prop="reportName" :rules="[{ required: true, message: '报告名称不能为空', trigger: 'change'}]"><br>
         <el-input v-model="from.reportName" size="small" type="text" maxlength="50" style="width:100%;" placeholder="请输入报告名称名称" />
@@ -59,7 +59,7 @@
         </el-col>
         <el-col v-if="from.followVersion === 1" :span="12" class="Layout_flex_start">
           <span class="from-namer">跟版客户端</span>
-          <el-select v-model="from.involveAppString" filterable remote size="small" :disabled="releaseType" clearable placeholder="请选择" style="width: -webkit-fill-available;">
+          <el-select v-model="from.involveApp" filterable remote size="small" :disabled="releaseType" clearable placeholder="请选择" style="width: -webkit-fill-available;">
             <el-option v-for="item in appClient" :key="item.code" :label="item.msg" :value="item.code" />
           </el-select>
         </el-col>
@@ -145,7 +145,6 @@ export default {
             this.tpltId = newV.moduleId
             this.reportdelivertestGetReportById(newV.id)
           } else {
-            console.log(newV, 'tmepId')
             this.tpltId = newV
             this.tpltId ? this.settingGetReportModuleById(newV) : ''
           }
@@ -178,9 +177,9 @@ export default {
         this.$set(this.from, 'devPlanTimeStart', [from.devPlanTimeStart, from.devPlanTimeEnd]) // 计划开发时间
         this.$set(this.from, 'devActualTimeStart', [from.devActualTimeStart, from.devActualTimeEnd]) // 实际开发时间
         this.from.deliverTestActualTime = from.deliverTestActualTime // 实际提测时间
-        this.from.involveAppString = from.involveAppString // 跟版客户端
-        this.from.followVersion = from.followVersion // 是否跟版1 跟版 2 不跟版
-        this.from.isCodeReview = from.isCodeReview // 是否code review 0:否 1:是
+        this.$set(this.from, 'involveApp', from.involveApp) // 跟版客户端
+        this.$set(this.from, 'followVersion', from.followVersion) // 是否跟版1 跟版 2 不跟版
+        this.$set(this.from, 'isCodeReview', from.isCodeReview) // 是否code review 0:否 1:是
         this.from.codeReviewExecutor = from.codeReviewExecutor ? from.codeReviewExecutor.split() : '' // 执行人
       }
     },
@@ -188,14 +187,23 @@ export default {
     async reportdelivertestInitReportRelease(val) { // 报告时间
       const res = await reportdelivertestInitReportRelease({ taskIds: val })
       if (res.code === 200) {
-        console.log(res, 'xsaxabu')
-        this.from = res.data
+        const from = res.data
+        this.$set(this.fromCreateData, 'content', from.content) // 报告名称
+        this.$set(this.from, 'deliverTestPlanTime', from.deliverTestPlanTime) // 计划提测时间
+        this.$set(this.from, 'devPlanTimeStart', [from.devPlanTimeStart, from.devPlanTimeEnd]) // 计划开发时间
+        this.$set(this.from, 'devActualTimeStart', [from.devActualTimeStart, from.devActualTimeEnd]) // 实际开发时间
+        this.from.deliverTestActualTime = from.deliverTestActualTime // 实际提测时间
+        this.$set(this.from, 'involveApp', from.involveApp) // 跟版客户端
+        this.$set(this.from, 'followVersion', from.followVersion) // 是否跟版1 跟版 2 不跟版
+        this.$set(this.from, 'isCodeReview', from.isCodeReview) // 是否code review 0:否 1:是
+        this.from.codeReviewExecutor = from.codeReviewExecutor ? from.codeReviewExecutor.split() : '' // 执行人
       }
       const res2 = await reportdelivertestGetRequiresByTaskIds({ taskIds: val })
       if (res2.code === 200) {
         this.tableData = res.data.list
       }
     },
+
     async configShowTaskEnum() {
       const res = await configShowTaskEnum()
       if (res.code === 200) {
@@ -231,7 +239,7 @@ export default {
               data.devActualTimeStart = this.from.devActualTimeStart[0] // 实际开发开始时间
               data.devActualTimeEnd = this.from.devActualTimeStart[1] // 实际开发结束时间
             }
-            data.involveAppString = this.from.involveAppString // 跟版客户端
+            data.involveApp = this.from.involveApp // 跟版客户端
             data.followVersion = this.from.followVersion // 是否跟版1 跟版 2 不跟版
             data.isCodeReview = this.from.isCodeReview // 是否code review 0:否 1:是
             data.codeReviewExecutor = this.from.codeReviewExecutor ? this.from.codeReviewExecutor.toString() : '' // 执行人
@@ -258,7 +266,7 @@ export default {
               data.devActualTimeStart = this.from.devActualTimeStart[0] // 实际开发开始时间
               data.devActualTimeEnd = this.from.devActualTimeStart[1] // 实际开发结束时间
             }
-            data.involveAppString = this.from.involveAppString // 跟版客户端
+            data.involveApp = this.from.involveApp // 跟版客户端
             data.followVersion = this.from.followVersion // 是否跟版1 跟版 2 不跟版
             data.isCodeReview = this.from.isCodeReview // 是否code review 0:否 1:是
             data.codeReviewExecutor = this.from.codeReviewExecutor ? this.from.codeReviewExecutor.toString() : '' // 执行人
@@ -278,6 +286,7 @@ export default {
       this.$refs.fromCreateData.validate((valid) => {
         if (valid) {
           this.fromCreateData.bizId = localStorage.getItem('bizId')
+          this.fromCreateData.moduleName = this.from.moduleName
           this.fromCreateData.type = e
           if (this.tpltId) {
             settingUpdateReportModule(this.fromCreateData).then(res => {

+ 13 - 7
src/views/reportManagement/components/DailyReport.vue

@@ -153,14 +153,14 @@ export default {
           dailyReportGetV2(newData.id).then(res => {
             if (res.code === 200) {
               const data = res.data
-              this.daily_taskIds = data.taskIds // 关联任务
+              this.daily_taskIds = res.data.taskIds // 关联任务
               data.updateDaily = false
               this.fromData.radio = data // 选择的模块
               this.reportHome = true // 步骤条
-              this.active = 2 // 步骤条状态第
+              this.active = 2 // 步骤条状态第2
               this.showOne = false // 隐藏第一步
-              this.newDailyTemplate = true // 隐藏第二步
-              this.dailyPreview = false // 展示第三部
+              this.newDailyTemplate = true // 第二步
+              this.dailyPreview = false // 第三部
               this.updateDaily = false // 新建
             }
           })
@@ -194,13 +194,19 @@ export default {
     },
 
     open_new_template(val) { // 点击新建模版
-      if (val.creator === localStorage.getItem('username')) {
-        val ? this.templateId = val.id : this.templateId = null
+      val ? this.templateId = val.id : this.templateId = null
+      if (this.templateId === null) {
         this.reportTamplate = true // 编辑区域
         this.reportHome = false // 步骤条
         this.showOne = false // 模版选择
       } else {
-        this.$message({ message: '没有权限,请联系创建人执行操作!', type: 'warning', duration: 1000, offset: 150 })
+        if (val.creator === localStorage.getItem('username')) {
+          this.reportTamplate = true // 编辑区域
+          this.reportHome = false // 步骤条
+          this.showOne = false // 模版选择
+        } else {
+          this.$message({ message: '没有权限,请联系创建人执行操作!', type: 'warning', duration: 1000, offset: 150 })
+        }
       }
     },
 

+ 9 - 3
src/views/reportManagement/components/ReleaseReport.vue

@@ -188,13 +188,19 @@ export default {
     },
 
     open_new_template(val) { // 点击新建模版
-      if (val.creator === localStorage.getItem('username')) {
-        val ? this.templateId = val.id : this.templateId = '新建模版'
+      val ? this.templateId = val.id : this.templateId = '新建模版'
+      if (this.templateId === '新建模版') {
         this.reportTamplate = true // 编辑区域
         this.reportHome = false // 步骤条
         this.showOne = false // 模版选择
       } else {
-        this.$message({ message: '没有权限,请联系创建人执行操作!', type: 'warning', duration: 1000, offset: 150 })
+        if (val.creator === localStorage.getItem('username')) {
+          this.reportTamplate = true // 编辑区域
+          this.reportHome = false // 步骤条
+          this.showOne = false // 模版选择
+        } else {
+          this.$message({ message: '没有权限,请联系创建人执行操作!', type: 'warning', duration: 1000, offset: 150 })
+        }
       }
     },
 

+ 13 - 3
src/views/reportManagement/components/TestingReport.vue

@@ -192,13 +192,19 @@ export default {
     },
 
     open_new_template(val) { // 点击新建模版
-      if (val.creator === localStorage.getItem('username')) {
-        val ? this.templateId = val.id : this.templateId = '新建模版'
+      val ? this.templateId = val.id : this.templateId = '新建模版'
+      if (this.templateId === '新建模版') {
         this.reportTamplate = true // 编辑区域
         this.reportHome = false // 步骤条
         this.showOne = false // 模版选择
       } else {
-        this.$message({ message: '没有权限,请联系创建人执行操作!', type: 'warning', duration: 1000, offset: 150 })
+        if (val.creator === localStorage.getItem('username')) {
+          this.reportTamplate = true // 编辑区域
+          this.reportHome = false // 步骤条
+          this.showOne = false // 模版选择
+        } else {
+          this.$message({ message: '没有权限,请联系创建人执行操作!', type: 'warning', duration: 1000, offset: 150 })
+        }
       }
     },
 
@@ -261,6 +267,10 @@ export default {
 
     handleClose() {
       this.dialogDaliy = false
+      this.reportTamplate = false
+      this.showOne = false // 隐藏第一步
+      this.newDailyTemplate = false // 隐藏第二步
+      this.dailyPreview = false // 展示第三部
       this.$emit('getList')
     }
   }

+ 15 - 33
src/views/reportManagement/daily/components/dailyDetails.vue

@@ -3,17 +3,14 @@
     <el-header class="public_header setLine">
       <div class="Layout_space_between">
         <div class="Layout_flex_start">
-          <div>
-            <span class="details-id">{{ 'report-' + details.id }}</span><br>
-            <span class="report-title">{{ details.reportName }}</span>
-          </div>
+          <div class="report-title">{{ details.reportName }}</div>
           <div class="details-statusString">{{ details.statusString }}</div>
         </div>
         <div>
-          <span v-if="details.status === 0 ? true : false" class="didi-hover" @click="dailyButtom(5,details)">发送</span>
-          <span v-if="details.status === 0 ? true : false" style="margin: 0 30px;" class="didi-hover" @click="dailyButtom(6,details)">编辑</span>
+          <span v-if="details.status === 0 ? true : false" class="didi-hover" @click="dailyButtom(3)">发送</span>
+          <span v-if="details.status === 0 ? true : false" style="margin: 0 30px;" class="didi-hover" @click="dailyButtom(2)">编辑</span>
           <span v-if="details.status === 0 ? true : false" class="didi-hover" @click="dialog_testData = true">删除</span>
-          <span v-if="details.status === 3 ? true : false" class="didi-hover" @click="dailyButtom(3,details)">复制</span>
+          <span v-if="details.status === 3 ? true : false" class="didi-hover" @click="dailyButtom(4)">复制</span>
         </div>
       </div>
     </el-header>
@@ -98,40 +95,26 @@ export default {
     this.getReportContent(this.reportId)
   },
   methods: {
-    async getReportContent(e) { // 获取日报data
+    // 获取日报data
+    async getReportContent(e) {
       const res = await dailyReportGetV2(e)
       if (res.code === 200) {
         this.details = res.data
       }
     },
-    dailyButtom(e, data) { // 测试报告
-      switch (e) {
-        case 3: // 复制 第二步
-          this.dialogDaily = true
-          this.$nextTick(() => {
-            this.$refs.DailyReport.init(4, data)
-          })
-          break
-        case 5: // 日报第三步
-          this.dialogDaily = true
-          this.$nextTick(() => {
-            this.$refs.DailyReport.init(3, data)
-          })
-          break
-        case 6: // 日报第二步
-          this.dialogDaily = true
-          this.$nextTick(() => {
-            this.$refs.DailyReport.init(2, data)
-          })
-          break
-      }
+    // 测试报告
+    dailyButtom(e) {
+      this.dialogDaily = true
+      this.$nextTick(() => {
+        this.$refs.DailyReport.init(e, this.details)
+      })
     },
 
     goTaskDetails(id) {
       this.$router.push({ name: '任务详情', query: { id: id }})
     },
-
-    async deleteDaily() { // 删除日报‘
+    // 删除日报‘
+    async deleteDaily() {
       const res = await dailyReportDelete(this.details.id)
       if (res.code === 200) {
         this.dialog_testData = false
@@ -187,7 +170,7 @@ export default {
 }
 .report-mains {
   min-height: 200px;
-  padding: 20px ;
+  padding: 20px 30PX;
   margin: 10px 10px 0 0;
   background: #FFF;
   border-radius:4px;
@@ -195,7 +178,6 @@ export default {
 .title {
   font-size:16px;
   font-family:PingFangSC-Medium;
-  line-height:35px;
   margin-bottom: 10px;
   color:rgba(51,59,74,1);
   opacity:1;

+ 15 - 14
src/views/reportManagement/daily/components/iconDisplay.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="backStyle">缺陷统计</div>
-    <el-table :data="tableList" border size="mini" style="width: 100%">
+    <el-table :data="tableList" border size="mini" style="width: 100%" :header-cell-style="{ backgroundColor: 'rgba(241,241,241,1)', color: 'rgba(51,59,74,1)', fontSize: '14px', fontWeight: '400'}">
       <el-table-column prop="缺陷总数" label="缺陷总数" align="center" min-width="100" />
       <el-table-column prop="待修复" label="待修复" align="center" min-width="100" />
       <el-table-column prop="待测试" label="待测试" align="center" min-width="100" />
@@ -10,13 +10,13 @@
       <el-table-column prop="Hold" label="Hold" align="center" min-width="100" />
     </el-table>
     <div class="backStyle">今日新增缺陷(-个)</div>
-    <div id="line-echarts" class="line-echarts" />
+    <div :id="'line-echarts' + randomId" class="line-echarts" />
     <div class="Layout_space_between">
-      <div id="lineShow" class="backTop" />
-      <div id="barShow" class="backTop" />
+      <div :id="'lineShow' + randomId" class="backTop" />
+      <div :id="'barShow' + randomId" class="backTop" />
     </div>
     <div class="backStyle">P0&P1缺陷列表(-个)</div>
-    <el-table :data="report_bugList" border size="mini" style="width: 100%" show-overflow-tooltip="true">
+    <el-table :data="report_bugList" border size="mini" style="width: 100%" show-overflow-tooltip="true" :header-cell-style="{ backgroundColor: 'rgba(241,241,241,1)', color: 'rgba(51,59,74,1)', fontSize: '14px', fontWeight: '400'}">
       <el-table-column prop="bugId" label="缺陷ID" align="center" min-width="80" show-overflow-tooltip />
       <el-table-column prop="bugName" label="缺陷标题" align="center" min-width="100" show-overflow-tooltip>
         <template slot-scope="scope">
@@ -45,12 +45,14 @@ export default {
     return {
       tableList: [], // 缺陷统计
       report_bugList: [], // P0&P1缺陷列表
-      taskid_arr: []
+      taskid_arr: [],
+      randomId: Math.floor(Math.random() * 10)
     }
   },
   watch: {
     details: {
       handler(newV) {
+        console.log(newV, 'newV')
         if (newV.statusString) {
           if (newV.taskIds) {
             this.taskid_arr = newV.taskIds
@@ -97,7 +99,7 @@ export default {
         smooth: true
       }))
       setTimeout(() => {
-        echarts.init(document.getElementById('line-echarts')).setOption({
+        echarts.init(document.getElementById('line-echarts' + this.randomId)).setOption({
           color: ['#409EFF'],
           title: { text: '新增缺陷趋势图', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
           tooltip: { axisPointer: { type: 'shadow' }},
@@ -115,7 +117,7 @@ export default {
         barWidth: '20px'
       }))
       setTimeout(() => {
-        echarts.init(document.getElementById('lineShow')).setOption({
+        echarts.init(document.getElementById('lineShow' + this.randomId)).setOption({
           backgroundColor: '#FFF',
           color: ['#409EFF'],
           title: { text: '缺陷责任人分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
@@ -133,7 +135,7 @@ export default {
         barWidth: '20px'
       }))
       setTimeout(() => {
-        echarts.init(document.getElementById('barShow')).setOption({
+        echarts.init(document.getElementById('barShow' + this.randomId)).setOption({
           backgroundColor: '#FFF',
           color: ['#409EFF'],
           title: { text: '缺陷等级分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
@@ -163,7 +165,7 @@ export default {
         this.report_bugList = res1.data
       }
 
-      const res6 = await bugGetReportDisDataByDate(data)
+      const res6 = await bugGetReportDisDataByDate({ taskIds: this.taskid_arr })
       if (res6.code === 200) {
         const data = res6.data.yaxis.map(item => ({
           ...item,
@@ -171,7 +173,7 @@ export default {
           smooth: true
         }))
         setTimeout(() => {
-          echarts.init(document.getElementById('line-echarts')).setOption({
+          echarts.init(document.getElementById('line-echarts' + this.randomId)).setOption({
             color: ['#409EFF'],
             title: { text: '新增缺陷趋势图', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
             tooltip: { axisPointer: { type: 'shadow' }},
@@ -179,7 +181,6 @@ export default {
             xAxis: [{ type: 'category', data: res6.data.xaxis === null ? ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期七'] : res6.data.xaxis, axisTick: { alignWithLabel: true }}],
             yAxis: [{ type: 'value', axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: true, lineStyle: { type: 'dashed' }}}],
             series: res6.data.yaxis[0].data <= 0 ? [{ name: '直接访问', type: 'line', smooth: true, data: [0, 0, 0, 0, 0, 0, 0] }] : data
-
           })
         }, 200)
       }
@@ -192,7 +193,7 @@ export default {
           barWidth: '20px'
         }))
         setTimeout(() => {
-          echarts.init(document.getElementById('lineShow')).setOption({
+          echarts.init(document.getElementById('lineShow' + this.randomId)).setOption({
             backgroundColor: '#FFF',
             color: ['#409EFF'],
             title: { text: '缺陷责任人分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},
@@ -212,7 +213,7 @@ export default {
           barWidth: '20px'
         }))
         setTimeout(() => {
-          echarts.init(document.getElementById('barShow')).setOption({
+          echarts.init(document.getElementById('barShow' + this.randomId)).setOption({
             backgroundColor: '#FFF',
             color: ['#409EFF'],
             title: { text: '缺陷等级分布', x: 'center', textStyle: { fontSize: 14, fontStyle: 'normal', fontWeight: 'normal' }},

+ 30 - 26
src/views/reportManagement/daily/dailyTemplate.vue

@@ -2,16 +2,18 @@
   <!-- 新增测试日报 -->
   <div class="parent-style">
     <el-form ref="fromCreateData" class="dailyFrom" :model="fromCreateData" :rules="serviceDataRules">
-      <div class="report-Padding">
-        <span style="color: #f56b6c">*</span>
-        <span class="backStyle"> 关联任务</span>
-      </div>
+      <div class="Layout_space_between">
+        <div>
+          <span style="color: #f56b6c">*</span>
+          <span class="backStyle"> 关联任务</span>
+        </div>
 
-      <el-select v-model="fromCreateData.taskIds" filterable remote reserve-keyword placeholder="请输入任务名称或ID" :remote-method="remoteMethod" style="width: 100%" size="small" @change="colseSelect">
-        <el-option v-for="item in tasksOptions" :key="item.id" :label="item.name" :value="item.id" :disabled="item.isScheduleLocked === 1" @click.native="tasksChange(item)">
-          <div class="Layout_space_between"><span>{{ item.name }}</span></div>
-        </el-option>
-      </el-select>
+        <el-select v-model="fromCreateData.taskIds" filterable remote reserve-keyword placeholder="请输入任务名称或ID" :remote-method="remoteMethod" style="width: 30%" size="small" @change="colseSelect">
+          <el-option v-for="item in tasksOptions" :key="item.id" :label="item.name" :value="item.id" @click.native="tasksChange(item)">
+            <div class="Layout_space_between"><span>{{ item.name }}</span></div>
+          </el-option>
+        </el-select>
+      </div>
       <div v-if="selectTask" class="taskError">任务名称不能为空</div>
 
       <div v-for="(item, index) in tasksDetailList" :key="index" class="Layout_space_between report-taskList">
@@ -24,7 +26,7 @@
         <el-input v-model="fromCreateData.reportName" type="text" maxlength="50" size="small" style="width: 100%;" placeholder="请输入报告名称" />
       </el-form-item>
 
-      <el-form-item label="报告内容" prop="content"><br>
+      <el-form-item label="报告内容"><br>
         <normal-area id="report-template" :value.sync="fromCreateData.content" :height="500" />
       </el-form-item>
     </el-form>
@@ -53,15 +55,13 @@ export default {
   data() {
     return {
       serviceDataRules: {
-        reportName: [{ required: true, message: '标题不能为空', trigger: 'change' }],
-        content: [{ required: true, message: '模版内容不能为空', trigger: 'change' }]
+        reportName: [{ required: true, message: '标题不能为空', trigger: 'change' }]
       },
       fromCreateData: {}, // listAll
       tasksOptions: [], // 任务下拉选项
       tasksDetailList: [], // 已有任务项目
       taskid_arr: [], // taskIds
       moduleId: '', // 模块id
-      allTaskListShow: false,
       selectTask: false // 选择的任务id
     }
   },
@@ -72,7 +72,7 @@ export default {
         if (newV.id) {
           this.fromCreateData = newV
           if (this.fromCreateData.updateDaily === false) {
-            this.$set(this.fromCreateData, 'reportName', '')
+            this.$set(this.fromCreateData, 'reportName', ' ')
           }
           this.$set(this.fromCreateData, 'taskIds', null)
           this.moduleId = this.fromCreateData.moduleId
@@ -88,9 +88,8 @@ export default {
         if (newV[0]) {
           this.taskid_arr = newV
           this.tasksDetailList = []
-          this.allTaskListShow = true
           newV.map(item => {
-            this.remoteMethod(item)
+            this.remoteMethods(item)
           })
         }
       },
@@ -105,16 +104,21 @@ export default {
       }
     },
 
+    async remoteMethods(query) { // 远程搜索任务
+      const res = await allTaskList({ bizId: Number(localStorage.getItem('bizId')), name: query })
+      if (res.code === 200) {
+        this.tasksOptions = res.data
+        this.tasksDetailList.push(res.data[0]) // 展示关联任务
+      }
+    },
+
     async remoteMethod(query) { // 远程搜索任务
       const res = await allTaskList({ bizId: Number(localStorage.getItem('bizId')), name: query })
       if (res.code === 200) {
         this.tasksOptions = res.data
-        if (this.allTaskListShow) {
-          this.tasksDetailList.push(res.data[0]) // 展示关联任务
-          this.allTaskListShow = false
-        }
       }
     },
+
     tasksChange(data) { // 任务列表变动
       const isEx = this.tasksDetailList.find(item => item.id === data.id)
       if (isEx) {
@@ -140,8 +144,13 @@ export default {
       this.tasksDetailList.length <= 0 ? this.selectTask = true : this.selectTask = false
     },
 
-    // 新建模版
+    // 新建
     getCreateData(val) {
+      if (this.selectTask) {
+        this.$set(this.fromCreateData, 'taskIds', null)
+        this.taskid_arr = []
+        return false
+      }
       this.$refs.fromCreateData.validate((valid) => {
         if (valid) {
           this.fromCreateData.bizId = localStorage.getItem('bizId')
@@ -186,11 +195,6 @@ export default {
     opacity:1;
   }
 }
-
-  .report-Padding {
-    margin-bottom: 12px;
-  }
-
   .backStyle {
     font-size: 14px;
     font-weight: bold;

+ 2 - 3
src/views/reportManagement/daily/newReportTemplate.vue

@@ -5,7 +5,7 @@
       <el-form-item label="模版名称" prop="moduleName" label-width="80px">
         <el-input v-model="fromCreateData.moduleName" size="small" style="width:100%;" placeholder="请输入模版名称(不可与现有模版重名)" />
       </el-form-item>
-      <el-form-item label="模版内容" prop="content"><br>
+      <el-form-item label="模版内容"><br>
         <normal-area id="report-template" :value.sync="fromCreateData.content" :height="500" />
       </el-form-item>
     </el-form>
@@ -68,8 +68,7 @@ export default {
       tpltId: '', // 模版id
       bugP0P1: [], // bugP0P1数据
       serviceDataRules: {
-        moduleName: [{ required: true, message: '模版名称不能为空', trigger: 'change' }],
-        content: [{ required: true, message: '模版内容不能为空', trigger: 'change' }]
+        moduleName: [{ required: true, message: '模版名称不能为空', trigger: 'change' }]
       },
       fromCreateData: {},
       TLstatus: false // 模版状态

+ 1 - 1
src/views/reportManagement/testPresentation.vue

@@ -22,7 +22,7 @@
             <el-button v-if="history" type="primary" size="medium" @click="getQueryData">新建{{ title }}</el-button>
           </div>
         </div>
-        <el-table v-loading="loading" :data="tableData" size="mini" :header-cell-style="{ background: '#F2F3F6' }" border style="width: 100%" :show-overflow-tooltip="true">
+        <el-table v-loading="loading" :data="tableData" size="medium" :header-cell-style="{ background: '#F2F3F6', color: '#333' }" border style="width: 100%" :show-overflow-tooltip="true">
           <el-table-column label="报告名称" min-width="280" show-overflow-tooltip>
             <template slot-scope="scope">
               <a v-if="title === '测试日报' || title === '准出报告'" href="javascript:void(0)" style="color:#20a0ff" @click="history ? toReportView(scope.row) : OldDaily(scope.row)">{{ scope.row.reportName }}</a>