Jelajahi Sumber

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

wangziqian 5 tahun lalu
induk
melakukan
b37d375d26
28 mengubah file dengan 238 tambahan dan 2862 penghapusan
  1. TEMPAT SAMPAH
      src/assets/clientF.png
  2. TEMPAT SAMPAH
      src/assets/clientK.png
  3. TEMPAT SAMPAH
      src/assets/daily.png
  4. TEMPAT SAMPAH
      src/assets/testF.png
  5. TEMPAT SAMPAH
      src/assets/testK.png
  6. 0 35
      src/router/index.js
  7. 0 681
      src/views/Platform/presentation/Acceptance.vue
  8. 0 499
      src/views/Platform/presentation/ClientAcceptance.vue
  9. 0 225
      src/views/Platform/presentation/DailyNewsAdded.vue
  10. 0 402
      src/views/Platform/presentation/PresentReport.vue
  11. 0 284
      src/views/Platform/presentation/Templates/ClientReport.vue
  12. 0 324
      src/views/Platform/presentation/Templates/TestReport.vue
  13. 0 355
      src/views/Platform/presentation/presentationReport.vue
  14. 11 0
      src/views/mock/httprule.vue
  15. 1 1
      src/views/projectManage/iteration/components/requiredTable.vue
  16. 1 1
      src/views/projectManage/projectList/components/scheduleList.vue
  17. 48 10
      src/views/projectManage/projectList/components/taskList.vue
  18. 1 1
      src/views/projectManage/requirement/components/scheduleList.vue
  19. 54 11
      src/views/projectManage/requirement/components/taskList.vue
  20. 10 2
      src/views/projectManage/requirement/requirementDetail.vue
  21. 4 4
      src/views/projectManage/taskList/components/reportList.vue
  22. 1 1
      src/views/projectManage/taskList/components/scheduleList.vue
  23. 1 0
      src/views/projectManage/taskList/dialog/taskDialog.vue
  24. 2 1
      src/views/projectManage/taskList/taskIndex.vue
  25. 1 1
      src/views/projectManage/version/components/scheduleList.vue
  26. 54 14
      src/views/projectManage/version/components/taskList.vue
  27. 3 0
      src/views/reportManagement/testPresentation.vue
  28. 46 10
      src/views/workbench/team/components/taskList.vue

TEMPAT SAMPAH
src/assets/clientF.png


TEMPAT SAMPAH
src/assets/clientK.png


TEMPAT SAMPAH
src/assets/daily.png


TEMPAT SAMPAH
src/assets/testF.png


TEMPAT SAMPAH
src/assets/testK.png


+ 0 - 35
src/router/index.js

@@ -216,20 +216,6 @@ export const constantRoutes = [{
       component: (resolve) => require(['@/views/reportManagement/Testing/components/deliverDetails'], resolve),
       meta: { title: '报告详情' }
     },
-    {
-      path: 'DailyNewsAdded',
-      name: '新增测试日报',
-      hidden: true,
-      component: (resolve) => require(['@/views/Platform/presentation/DailyNewsAdded'], resolve),
-      meta: { title: '新增测试日报' }
-    },
-    {
-      path: 'presentationReport',
-      name: '新增服务器提测报告',
-      hidden: true,
-      component: (resolve) => require(['@/views/Platform/presentation/presentationReport'], resolve),
-      meta: { title: '新增服务器提测报告' }
-    },
     {
       path: 'acceptTheReport',
       name: '提测预览',
@@ -250,27 +236,6 @@ export const constantRoutes = [{
       hidden: true,
       component: (resolve) => require(['@/views/Platform/presentation/ResultPageyL'], resolve),
       meta: { title: '准出预览' }
-    },
-    {
-      path: 'Acceptance',
-      name: '新增服务器端准出报告',
-      hidden: true,
-      component: (resolve) => require(['@/views/Platform/presentation/Acceptance'], resolve),
-      meta: { title: '新增服务器端准出报告' }
-    },
-    {
-      path: 'ClientAcceptance',
-      name: '新增客户端准出报告',
-      hidden: true,
-      component: (resolve) => require(['@/views/Platform/presentation/ClientAcceptance'], resolve),
-      meta: { title: '新增客户端准出报告' }
-    },
-    {
-      path: 'PresentReport',
-      name: '新增客户端提测报告',
-      hidden: true,
-      component: (resolve) => require(['@/views/Platform/presentation/PresentReport'], resolve),
-      meta: { title: '新增客户端提测报告' }
     }
     ]
   }

+ 0 - 681
src/views/Platform/presentation/Acceptance.vue

@@ -1,681 +0,0 @@
-<template>
-  <!-- 准出报告,新增服务端报告 -->
-  <div class="eleStyle">
-    <el-form ref="ClientData" :inline="true" :model="ClientData" :rules="serviceDataRules" style="margin: 0% 3%;">
-      <div style="display: flex;white-space: nowrap;">
-        <el-form-item label="标题" style="flex: 1;" prop="reportName">
-          <el-input v-model="ClientData.reportName" size="small" style="width:15vw;" placeholder="报告标题(xxx项目准出报告)" />
-        </el-form-item>
-        <el-form-item label="by" prop="ownner" style="flex: 1;text-align:right;">
-          <el-input v-model="ClientData.ownner" size="small" placeholder="who" />
-        </el-form-item>
-      </div>
-      <div class="backStyle" style="margin-bottom: 2% ;">一. 项目概述</div>
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="* 测试结果" style="flex: 1;" prop="status">
-          <el-button :type="tagBtn" size="small" style="margin: 0 2vw;" class="tag" @click="changeStatus(1)"> 通过 </el-button>
-          <el-button :type="tagBtn1" size="small" class="tag" @click="changeStatus(2)"> 不通过 </el-button>
-        </el-form-item>
-        <el-form-item label="准入结果" prop="smokeTestResult" style="flex: 2;text-align:right;"><el-input v-model="ClientData.smokeTestResult" style="width: 25vw;" size="small" placeholder="准入次数/通过次数/失败次数" /></el-form-item>
-      </div>
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="* 准出延期" style="flex: 1;" prop="taskLateStatus">
-          <el-button :type="tagChange" size="small" style="margin: 0 2vw;" class="tag" @click="lateStatusChange(1)"> 否 </el-button>
-          <el-button :type="tagChange1" size="small" class="tag" @click="lateStatusChange(2)"> 是 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showDelay" label="延期原因" prop="taskLateReason" style="flex: 2;text-align:right;"><el-input v-model="ClientData.taskLateReason" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <div style="display: flex;white-space: nowrap;">
-        <el-form-item label="* 涉及安全项" style="flex: 1;">
-          <el-button :type="getInfoBtn" size="small" style="margin: 0 1vw" class="tag" @click="showStatusData(2)"> 是 </el-button>
-          <el-button :type="getInfoBtn1" size="small" style="margin-left: 1.7vw;" class="tag" @click="showStatusData(1)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showData" label="完成结果" prop="safeInfo" style="flex: 2;text-align:right;"><el-input v-model="ClientData.safeInfo" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <el-form-item label="SDL链接 : " style="white-space: nowrap;"><el-link href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" type="primary" target="_blank"> 普惠SDL准入标准</el-link></el-form-item>
-
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="开发人员" style="flex: 1;" prop="developer"><el-input v-model="ClientData.developer" size="small" style="width:15vw;" /></el-form-item>
-        <el-form-item label="开发周期" style="flex: 1;text-align:right;">
-          <el-date-picker v-model="ClientData.devTimeEnd" size="small" type="date" placeholder="请选择开始日期" style=" width: 12.5vw;" />
-          <el-date-picker v-model="ClientData.devTimeStart" size="small" type="date" placeholder="请选择开始日期" style="margin-left:1.3vw; width: 12.5vw;" />
-        </el-form-item>
-      </div>
-
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="测试人员" style="flex: 1;" prop="tester"><el-input v-model="ClientData.tester" style="width: 15vw;" /></el-form-item>
-        <el-form-item label="测试周期" style="flex: 1;text-align:right;">
-          <el-date-picker v-model="ClientData.testTimeEnd" size="small" type="date" placeholder="请选择开始日期" style=" width: 12.5vw;" />
-          <el-date-picker v-model="ClientData.testTimeStart" size="small" type="date" placeholder="请选择开始日期" style="margin-left: 1.3vw; width: 12.5vw;" />
-        </el-form-item>
-      </div>
-
-      <div class="backStyle" style="margin-bottom:2%;">二. 项目背景</div>
-      <normal-area id="clients-children-projectBackground" :value.sync="clienEdit.projectBackground" :height="200" />
-
-      <div class="backStyle">三. 模块信息</div>
-      <div class="titStyle" style="margin: 20px 0;">1、模块信息</div>
-
-      <normal-area id="clients-children-moduleInfo" :value.sync="clienEdit.moduleInfo" :height="200" />
-
-      <div class="titStyle" style="margin: 20px 0;">2、本期功能</div>
-
-      <normal-area id="clients-children-functionInfo" :value.sync="clienEdit.functionInfo" :height="200" />
-
-      <div class="titStyle" style="margin: 20px 0;">3、风险点</div>
-
-      <normal-area id="clients-children-onlineRisk" :value.sync="clienEdit.onlineRisk" :height="200" />
-
-      <div class="titStyle" style="margin: 20px 0;">4、缺陷分析</div>
-
-      <el-table :data="tableData" border>
-        <el-table-column prop="totalBug" label="bug总数" min-width="200" align="center" edit="false">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.totalBug.edit" ref="totalBug" v-model="scope.row.totalBug.value" style="width: 100%" @blur="scope.row.totalBug.edit = false" />
-            <span v-else>{{ scope.row.totalBug.value }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="fixBug" min-width="200" align="center" label="已解决bug数">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.fixBug.edit" ref="fixBug" v-model="scope.row.fixBug.value" style="width: 100%" @blur="scope.row.fixBug.edit = false" />
-            <span v-else>{{ scope.row.fixBug.value }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="remainBug" min-width="200" align="center" label="遗留bug数">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.remainBug.edit" ref="remainBug" v-model="scope.row.remainBug.value" style="width: 100%" @blur="scope.row.remainBug.edit = false" />
-            <span v-else>{{ scope.row.remainBug.value }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="rateOfReopen" min-width="200" align="center" label="reopen率">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.rateOfReopen.edit" ref="rateOfReopen" v-model="scope.row.rateOfReopen.value" style="width: 100%" @blur="scope.row.rateOfReopen.edit = false" />
-            <span v-else>{{ scope.row.rateOfReopen.value }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="invalidBug" min-width="200" align="center" label="无效bug数">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.invalidBug.edit" ref="invalidBug" v-model="scope.row.invalidBug.value" style="width: 100%" @blur="scope.row.invalidBug.edit = false" />
-            <span v-else>{{ scope.row.invalidBug.value }}</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <el-row>
-        <el-col :span="24"><div class="titStyle" style="margin: 20px 0;">5、遗留问题</div><el-input v-model="ClientData.bugInfo" type="textarea" placeholder="请填写内容" /></el-col>
-      </el-row>
-
-      <div class="backStyle">四. 测试项</div>
-
-      <div class="titStyle BJIsize">
-        <el-form-item>1、功能测试</el-form-item>
-        <div class="BJIsize">
-          <el-tag :type="fctResultChange" size="small" effect="dark" class="tag" @click="fctResultradio(3)"> 未执行 </el-tag>
-          <el-tag :type="fctResultChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="fctResultradio(1)"> 测试通过 </el-tag>
-          <el-tag :type="fctResultChange2" size="small" effect="dark" class="tag" @click="fctResultradio(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-
-      <normal-area id="clients-children-fctInfo" :value.sync="clienEdit.fctInfo" :height="200" />
-
-      <div class="titStyle BJIsize">
-        <el-form-item style="flex:1; ">2、可靠性测试</el-form-item>
-        <div class="BJIsize">
-          <el-tag :type="rqtResultChange" size="small" effect="dark" class="tag" @click="rqtResultradio(3)"> 未执行 </el-tag>
-          <el-tag :type="rqtResultChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="rqtResultradio(1)"> 测试通过 </el-tag>
-          <el-tag :type="rqtResultChange2" size="small" effect="dark" class="f" @click="rqtResultradio(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-
-      <normal-area id="clients-children-rqtInfo" :value.sync="clienEdit.rqtInfo" :height="200" />
-
-      <div class="titStyle BJIsize">
-        <el-form-item style="flex:1; ">3、稳定性测试</el-form-item>
-        <div class="BJIsize">
-          <el-tag :type="pftResultChange" size="small" effect="dark" class="tag" @click="pftResultradio(3)"> 未执行 </el-tag>
-          <el-tag :type="pftResultChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="pftResultradio(1)"> 测试通过 </el-tag>
-          <el-tag :type="pftResultChange2" size="small" effect="dark" class="tag" @click="pftResultradio(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-
-      <normal-area id="clients-children-pftInfo" :value.sync="clienEdit.pftInfo" :height="200" />
-
-      <div class="titStyle BJIsize">
-        <el-form-item style="flex:1; ">4、安全性测试</el-form-item>
-        <div class="BJIsize">
-          <el-tag :type="safeResultChange" size="small" effect="dark" class="tag" @click="safeResultradio(3)"> 未执行 </el-tag>
-          <el-tag :type="safeResultChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="safeResultradio(1)"> 测试通过 </el-tag>
-          <el-tag :type="safeResultChange2" size="small" effect="dark" class="tag" @click="safeResultradio(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-      <normal-area id="clients-children-safeResultInfo" :value.sync="clienEdit.safeResultInfo" :height="200" />
-
-      <div class="titStyle BJIsize">
-        <el-form-item style="flex:1; ">5、线上监控</el-form-item>
-        <div class="BJIsize">
-          <el-tag :type="moniterResultChange" size="small" effect="dark" class="tag" @click="moniterResultradio(3)"> 未执行 </el-tag>
-          <el-tag :type="moniterResultChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="moniterResultradio(1)"> 测试通过 </el-tag>
-          <el-tag :type="moniterResultChange2" size="small" effect="dark" class="tag" @click="moniterResultradio(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-      <normal-area id="clients-children-moniterResultInfo" :value.sync="clienEdit.moniterResultInfo" :height="200" />
-    </el-form>
-  </div>
-</template>
-
-<script>
-import { projectTestReportUpdate, projectTestReportCreate, bugFinishList } from '@/api/ResultPage'
-import normalArea from '@/components/input/normalArea'
-export default {
-  name: 'Acceptance',
-  components: {
-    normalArea
-  },
-  props: {
-    clienData: {
-      type: Object,
-      required: true
-    }
-  },
-  data() {
-    return {
-      userData: '',
-      objData: '',
-      tagBtn: 'info',
-      tagBtn1: 'info',
-      tagChange: 'info',
-      tagChange1: 'info',
-      moniterResultChange: 'info',
-      moniterResultChange1: 'info',
-      moniterResultChange2: 'info',
-      safeResultChange: 'info',
-      safeResultChange1: 'info',
-      safeResultChange2: 'info',
-      rqtResultChange: 'info',
-      rqtResultChange1: 'info',
-      rqtResultChange2: 'info',
-      pftResultChange: 'info',
-      pftResultChange1: 'info',
-      pftResultChange2: 'info',
-      fctResultChange: 'info',
-      fctResultChange1: 'info',
-      fctResultChange2: 'info',
-      getInfoBtn: 'info',
-      getInfoBtn1: 'info',
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      serviceDataRules: {
-        reportName: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
-        ownner: [{ required: true, message: 'by不能为空', trigger: 'change' }],
-        safeInfo: [{ required: true, message: '完成结果不能为空', trigger: 'change' }],
-        status: [{ required: false, message: '测试结果不能为空', trigger: 'change' }],
-        taskLateStatus: [{ required: false, message: '准出延期不能为空', trigger: 'change' }],
-        taskLateReason: [{ required: true, message: '延期原因不能为空', trigger: 'change' }],
-        smokeTestResult: [{ required: true, message: '准入结果不能为空', trigger: 'change' }],
-        developer: [{ required: true, message: '开发人员不能为空', trigger: 'change' }],
-        tester: [{ required: true, message: '测试人员不能为空', trigger: 'change' }]
-      },
-      showData: false,
-      showDelay: false,
-      content: null,
-      editorContent: '',
-      taskLateStatus: 0,
-      value: '',
-      status: '',
-      ClientData: {},
-      clienEdit: {
-        projectBackground: '',
-        moduleInfo: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"></colgroup><thead><tr><th>提测模块</th><th>提测分支</th></tr></thead><tbody><tr><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td></tr></tbody></table>`,
-        functionInfo: '',
-        onlineRisk: '',
-        fctInfo: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>测试功能点</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>`,
-        rqtInfo: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>`,
-        pftInfo: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>`,
-        safeResultInfo: `<p></p><table border="1" style="border: 1px solid #DEE2E7"  width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>`,
-        moniterResultInfo: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>`
-      },
-      tableData: [],
-      fctResult: '',
-      rqtResult: '',
-      pftResult: '',
-      safeResult: '',
-      Tsk: [],
-      moniterResult: '',
-      accpId: ''
-    }
-  },
-  created() {
-    this.getRouterData()
-  },
-  methods: {
-    getRouterData() {
-      this.getBugData(this.clienData)
-      console.log(this.clienData, '准出服务端')
-      this.ClientData = this.clienData
-      this.$nextTick(() => {
-        this.clienEdit.projectBackground = this.ClientData.projectBackground || this.clienEdit.projectBackground
-        this.clienEdit.moduleInfo = this.ClientData.moduleInfo || this.clienEdit.moduleInfo
-        this.clienEdit.functionInfo = this.ClientData.functionInfo || this.clienEdit.functionInfo
-        this.clienEdit.onlineRisk = this.ClientData.onlineRisk || this.clienEdit.onlineRisk
-        this.clienEdit.fctInfo = this.ClientData.fctInfo || this.clienEdit.fctInfo
-        this.clienEdit.rqtInfo = this.ClientData.rqtInfo || this.clienEdit.rqtInfo
-        this.clienEdit.pftInfo = this.ClientData.pftInfo || this.clienEdit.pftInfo
-        this.clienEdit.safeResultInfo = this.ClientData.safeResultInfo || this.clienEdit.safeResultInfo
-        this.clienEdit.moniterResultInfo = this.ClientData.moniterResultInfo || this.clienEdit.moniterResultInfo
-      })
-      if (this.ClientData.status === 1) {
-        this.tagBtn = 'success'
-        this.status = '1'
-      } else {
-        this.tagBtn1 = 'danger'
-        this.status = '2'
-      }
-      if (this.ClientData.taskLateStatus === 1) {
-        this.tagChange = 'success'
-        this.taskLateStatus = '1'
-        this.showDelay = false
-      } else {
-        this.tagChange1 = 'danger'
-        this.taskLateStatus = '2'
-        this.showDelay = true
-      }
-
-      if (this.ClientData.safeInfo !== '') {
-        this.getInfoBtn1 = 'info'
-        this.getInfoBtn = 'danger'
-        this.lateStatus = 2
-        this.showData = true
-      } else {
-        this.getInfoBtn1 = 'success'
-        this.getInfoBtn = 'info'
-        this.lateStatus = 1
-        this.showData = false
-        this.$set(this.ClientData, 'safeInfo', '')
-      }
-
-      if (this.ClientData.fctResult) { // 功能测试
-        switch (this.ClientData.fctResult) {
-          case 1:
-            this.fctResultChange1 = 'success'
-            this.fctResult = 1
-            break
-          case 2:
-            this.fctResultChange2 = 'danger'
-            this.fctResult = 2
-            break
-          case 3:
-            this.fctResultChange = 'warning'
-            this.fctResult = 3
-            break
-        }
-      }
-
-      if (this.ClientData.rqtResult) { // 可靠性测试
-        switch (this.ClientData.rqtResult) {
-          case 1:
-            this.rqtResultChange1 = 'success'
-            this.rqtResult = 1
-            break
-          case 2:
-            this.rqtResultChange2 = 'danger'
-            this.rqtResult = 2
-            break
-          case 3:
-            this.rqtResultChange = 'warning'
-            this.rqtResult = 3
-            break
-        }
-      }
-
-      if (this.ClientData.pftResult) { // 稳定性测试
-        switch (this.ClientData.pftResult) {
-          case 1:
-            this.pftResultChange1 = 'success'
-            this.pftResult = 1
-            break
-          case 2:
-            this.pftResultChange2 = 'danger'
-            this.pftResult = 2
-            break
-          case 3:
-            this.pftResultChange = 'warning'
-            this.pftResult = 3
-            break
-        }
-      }
-
-      if (this.ClientData.safeResult) { // 安全性测试
-        switch (this.ClientData.safeResult) {
-          case 1:
-            this.safeResultChange1 = 'success'
-            this.safeResult = 1
-            break
-          case 2:
-            this.safeResultChange2 = 'danger'
-            this.safeResult = 2
-            break
-          case 3:
-            this.safeResultChange = 'warning'
-            this.safeResult = 3
-            break
-        }
-      }
-
-      if (this.ClientData.moniterResult) { // 线上监控
-        switch (this.ClientData.moniterResult) {
-          case 1:
-            this.moniterResultChange1 = 'success'
-            this.moniterResult = 1
-            break
-          case 2:
-            this.moniterResultChange2 = 'danger'
-            this.moniterResult = 2
-            break
-          case 3:
-            this.moniterResultChange = 'warning'
-            this.moniterResult = 3
-            break
-        }
-      }
-    },
-
-    getBugData(vel) {
-      var url = location.href // 获取url中"?"符后的字串
-      var arr = url.split('=')
-      let task_s = ''
-      vel.taskIds ? task_s = vel.taskIds : task_s = [Number(arr[1])]
-      bugFinishList({ type: 1, taskIds: task_s }).then(res => {
-        res.data.launchInfo !== null ? this.$set(this.ClientData, 'smokeTestResult', res.data.launchInfo) : ''
-        this.tableData = [res.data]
-        this.formatData()
-      })
-    },
-
-    formatData() {
-      this.tableData.forEach(item => {
-        for (var key in item) {
-          item[key] = {
-            value: item[key],
-            edit: false
-          }
-        }
-      })
-    },
-    // 更新准出报告
-    getQueryData(ele, vel) {
-      this.$refs['ClientData'].validate((valid) => {
-        if (valid) {
-          this.ClientData = ele
-          this.ClientData.projectBackground = this.clienEdit.projectBackground
-          this.ClientData.moduleInfo = this.clienEdit.moduleInfo
-          this.ClientData.functionInfo = this.clienEdit.functionInfo
-          this.ClientData.onlineRisk = this.clienEdit.onlineRisk
-          this.ClientData.fctInfo = this.clienEdit.fctInfo
-          this.ClientData.rqtInfo = this.clienEdit.rqtInfo
-          this.ClientData.pftInfo = this.clienEdit.pftInfo
-          this.ClientData.safeResultInfo = this.clienEdit.safeResultInfo
-          this.ClientData.moniterResultInfo = this.clienEdit.moniterResultInfo
-          this.ClientData.fctResult = this.fctResult
-          this.ClientData.rqtResult = this.rqtResult
-          this.ClientData.pftResult = this.pftResult
-          this.ClientData.safeResult = this.safeResult
-          this.ClientData.moniterResult = this.moniterResult
-          this.ClientData.status = this.status
-          this.ClientData.id === undefined ? this.ClientData.id = this.accpId : ''
-          this.ClientData.taskLateStatus = this.taskLateStatus
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { projectTestReport: this.ClientData, user: this.userData }
-          projectTestReportUpdate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message({ type: 'success', message: '更新成功' })
-              this.$emit('QuasiReport', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-    parentHandleclick(e, task, id) {
-      if (e === 1) {
-        this.Tsk = task
-        this.getCreateData(this.ClientData, this.tableData)
-      } else {
-        this.accpId = id
-        this.getQueryData(this.ClientData, this.tableData)
-      }
-    },
-
-    // 新建准出提交
-    getCreateData(ele, vel) {
-      this.$refs['ClientData'].validate((valid) => {
-        if (valid) {
-          this.ClientData = ele
-          this.ClientData.projectBackground = this.clienEdit.projectBackground
-          this.ClientData.moduleInfo = this.clienEdit.moduleInfo
-          this.ClientData.functionInfo = this.clienEdit.functionInfo
-          this.ClientData.onlineRisk = this.clienEdit.onlineRisk
-          this.ClientData.fctInfo = this.clienEdit.fctInfo
-          this.ClientData.rqtInfo = this.clienEdit.rqtInfo
-          this.ClientData.pftInfo = this.clienEdit.pftInfo
-          this.ClientData.safeResultInfo = this.clienEdit.safeResultInfo
-          this.ClientData.moniterResultInfo = this.clienEdit.moniterResultInfo
-          this.$route.query.id ? this.ClientData.taskId = this.$route.query.id : ''
-          this.ClientData.bizId = Number(localStorage.getItem('bizId'))
-          this.ClientData.taskIds = this.Tsk
-          this.ClientData.fctResult = this.fctResult
-          this.ClientData.rqtResult = this.rqtResult
-          this.ClientData.pftResult = this.pftResult
-          this.ClientData.safeResult = this.safeResult
-          this.ClientData.moniterResult = this.moniterResult
-          this.ClientData.status = this.status
-          this.ClientData.taskLateStatus = this.taskLateStatus
-          this.ClientData.type = 2
-          this.ClientData.lateStatus === 1 ? this.ClientData.lateReason = ele.lateReason : this.ClientData.lateReason = ''
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { projectTestReport: this.ClientData, user: this.userData }
-          projectTestReportCreate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message.success(res.msg)
-              this.$emit('QuasiReport', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-    // 准出延期
-    lateStatusChange(e) {
-      if (e === 1) {
-        this.tagChange = 'success'
-        this.tagChange1 = 'info'
-        this.showDelay = false
-        this.taskLateStatus = 1
-        this.$set(this.ClientData, 'taskLateReason', '')
-      } else {
-        this.tagChange = 'info'
-        this.tagChange1 = 'danger'
-        this.showDelay = true
-        this.taskLateStatus = 2
-      }
-    },
-
-    // 涉及安全项
-    showStatusData(e) {
-      if (e === 1) {
-        this.getInfoBtn1 = 'success'
-        this.getInfoBtn = 'info'
-        this.showData = false
-        this.$set(this.ClientData, 'safeInfo', '')
-      } else {
-        this.getInfoBtn1 = 'info'
-        this.getInfoBtn = 'danger'
-        this.showData = true
-      }
-    },
-
-    // 测试结果
-    changeStatus(e) {
-      if (e === 1) {
-        this.ClientData.status = 1
-        this.tagBtn = 'success'
-        this.tagBtn1 = 'info'
-        this.status = 1
-      } else {
-        this.ClientData.status = 2
-        this.tagBtn = 'info'
-        this.tagBtn1 = 'danger'
-        this.status = 2
-      }
-    },
-
-    // 1、功能测试
-    fctResultradio(e) {
-      this.fctResultChange = 'info'
-      this.fctResultChange1 = 'info'
-      this.fctResultChange2 = 'info'
-      switch (e) {
-        case 1:
-          this.fctResultChange1 = 'success'
-          this.fctResult = 1
-          break
-        case 2:
-          this.fctResultChange2 = 'danger'
-          this.fctResult = 2
-          break
-        case 3:
-          this.fctResultChange = 'warning'
-          this.fctResult = 3
-          break
-      }
-    },
-
-    // 可靠性测试
-    rqtResultradio(e) {
-      this.rqtResultChange = 'info'
-      this.rqtResultChange1 = 'info'
-      this.rqtResultChange2 = 'info'
-      switch (e) {
-        case 1:
-          this.rqtResultChange1 = 'success'
-          this.rqtResult = 1
-          break
-        case 2:
-          this.rqtResultChange2 = 'danger'
-          this.rqtResult = 2
-          break
-        case 3:
-          this.rqtResultChange = 'warning'
-          this.rqtResult = 3
-          break
-      }
-    },
-    // 稳定性测试
-    pftResultradio(e) {
-      this.pftResultChange = 'info'
-      this.pftResultChange1 = 'info'
-      this.pftResultChange2 = 'info'
-      switch (e) {
-        case 1:
-          this.pftResultChange1 = 'success'
-          this.pftResult = 1
-          break
-        case 2:
-          this.pftResultChange2 = 'danger'
-          this.pftResult = 2
-          break
-        case 3:
-          this.pftResultChange = 'warning'
-          this.pftResult = 3
-          break
-      }
-    },
-
-    // 安全性测试
-    safeResultradio(e) {
-      this.safeResultChange = 'info'
-      this.safeResultChange1 = 'info'
-      this.safeResultChange2 = 'info'
-      switch (e) {
-        case 1:
-          this.safeResultChange1 = 'success'
-          this.safeResult = 1
-          break
-        case 2:
-          this.safeResultChange2 = 'danger'
-          this.safeResult = 2
-          break
-        case 3:
-          this.safeResultChange = 'warning'
-          this.safeResult = 3
-          break
-      }
-    },
-
-    // 线上监控
-    moniterResultradio(e) {
-      this.moniterResultChange = 'info'
-      this.moniterResultChange1 = 'info'
-      this.moniterResultChange2 = 'info'
-      switch (e) {
-        case 1:
-          this.moniterResultChange1 = 'success'
-          this.moniterResult = 1
-          break
-        case 2:
-          this.moniterResultChange2 = 'danger'
-          this.moniterResult = 2
-          break
-        case 3:
-          this.moniterResultChange = 'warning'
-          this.moniterResult = 3
-          break
-      }
-    }
-  }
-}
-</script>
-
-<style scoped>
-  .tag {
-     width:80px;
-     text-align: center;
-     cursor:pointer
-  }
-  .backStyle {
-    font-size: 17px;
-    font-weight: bold;
-    border-radius: 4px;
-    margin-top: 2%;
-  }
-  .eleStyle {
-    width: 100%;
-    height:100%;
-    display: inline-block;
-  }
-  .titStyle {
-    font-size: 15px;
-    color:#606266;
-  }
-  .toolbar {
-    border: 1px solid #DEE2E7;
-  }
-  .text {
-    text-align: left;
-    min-height: 100px;
-    font-size: 15px;
-    color: #606266;
-    border: 1px solid #DEE2E7;
-    height: auto;
-  }
-  .BJIsize {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-  }
-  .eleStyle >>> .el-col {
-    white-space: pre-line;
-  }
-</style>

+ 0 - 499
src/views/Platform/presentation/ClientAcceptance.vue

@@ -1,499 +0,0 @@
-<template>
-  <!-- 准出报告,新增客户端报告 -->
-  <div class="eleStyle">
-    <el-form ref="ClientData" :inline="true" :model="ClientData" :rules="serviceDataRules" style="margin:0% 3%;">
-      <div style="display:flex; white-space: nowrap;">
-        <el-form-item label="标题" class="backStyle" style="flex:1;" prop="reportName">
-          <el-input v-model="ClientData.reportName" size="small" style="width:15vw;" placeholder="报告标题(xxx项目准出报告)" />
-        </el-form-item>
-        <el-form-item label="by" prop="ownner" class="backStyle" style="flex:1; text-align: right;">
-          <el-input v-model="ClientData.ownner" size="small" placeholder="who" />
-        </el-form-item>
-      </div>
-      <div style="margin-bottom: 1%;" class="backStyle">一. 项目概述</div>
-
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="* 测试结果" style="flex: 1;" prop="status">
-          <el-tag :type="tagBtn" effect="dark" size="small" style="margin: 0 1vw;" class="tag" @click="changeStatus(1)"> 通过 </el-tag>
-          <el-tag :type="tagBtn1" effect="dark" size="small" class="tag" @click="changeStatus(2)"> 不通过 </el-tag>
-        </el-form-item>
-        <el-form-item label="准入结果" prop="smokeTestResult" style="flex: 2;text-align:right;"><el-input v-model="ClientData.smokeTestResult" style="width: 25vw;" size="small" placeholder="准入次数/通过次数/失败次数" /></el-form-item>
-      </div>
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="* 准出延期" style="flex: 1;" prop="taskLateStatus">
-          <el-tag :type="tagChange" effect="dark" size="small" style="margin: 0 1vw;" class="tag" @click="lateStatusChange(1)"> 否 </el-tag>
-          <el-tag :type="tagChange1" effect="dark" size="small" class="tag" @click="lateStatusChange(2)"> 是 </el-tag>
-        </el-form-item>
-        <el-form-item v-if="showDelay" label="延期原因" prop="taskLateReason" style="flex: 2;text-align:right;"><el-input v-model="ClientData.taskLateReason" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="开发人员" style="flex: 1;" prop="developer"><el-input v-model="ClientData.developer" size="small" style="width:15vw;" /></el-form-item>
-        <el-form-item label="开发周期" style="flex: 1;text-align:right;">
-          <el-date-picker v-model="ClientData.devTimeEnd" type="date" size="small" placeholder="请选择开始日期" style=" width: 12.5vw;" />
-          <el-date-picker v-model="ClientData.devTimeStart" type="date" size="small" placeholder="请选择开始日期" style="margin-left:1.3vw; width: 12.5vw;" />
-        </el-form-item>
-      </div>
-
-      <div style="display: flex; white-space: nowrap;">
-        <el-form-item label="测试人员" style="flex: 1;" prop="tester"><el-input v-model="ClientData.tester" size="small" style="width: 15vw;" /></el-form-item>
-        <el-form-item label="测试周期" style="flex: 1;text-align:right;">
-          <el-date-picker v-model="ClientData.testTimeEnd" type="date" placeholder="请选择开始日期" size="small" style="width: 12.5vw;" />
-          <el-date-picker v-model="ClientData.testTimeStart" type="date" placeholder="请选择开始日期" size="small" style="margin-left: 1.3vw; width: 12.5vw;" />
-        </el-form-item>
-      </div>
-
-      <div style="margin-bottom: 1%;" class="backStyle">二. 项目背景</div>
-
-      <normal-area id="bug-children-projectBackground" :value.sync="clienEdit.projectBackground" :height="150" />
-
-      <div style="margin: 1% 0;" class="backStyle">三. 测试项</div>
-
-      <div class="BJIsize">
-        <el-form-item>1.功能测试</el-form-item>
-        <div class="BJIsize">
-          <el-tag :type="pftChange" size="small" effect="dark" class="tag" @click="changePftResult(3)"> 未执行 </el-tag>
-          <el-tag :type="pftChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="changePftResult(1)"> 测试通过 </el-tag>
-          <el-tag :type="pftChange2" size="small" effect="dark" class="tag" @click="changePftResult(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-
-      <normal-area id="bug-children-fctInfo" :value.sync="clienEdit.fctInfo" :height="150" />
-
-      <div class="BJIsize">
-        <el-form-item>2.兼容测试</el-form-item>
-        <div class="BJIsize">
-          <el-tag :type="sctChange" size="small" effect="dark" class="tag" @click="changeSctResult(3)"> 未执行 </el-tag>
-          <el-tag :type="sctChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="changeSctResult(1)"> 测试通过 </el-tag>
-          <el-tag :type="sctChange2" size="small" effect="dark" class="tag" @click="changeSctResult(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-
-      <normal-area id="bug-children-sctInfo" :value.sync="clienEdit.sctInfo" :height="400" />
-
-      <div style="margin: 2% 0 0% 0;" class="backStyle">四. 产品验收</div>
-      <div class="BJIsize">
-        <p>验收结果</p>
-        <div class="BJIsize">
-          <el-tag :type="acceptanceResultChange" size="small" effect="dark" class="tag" @click="changeAcceptanceResult(3)"> 未执行 </el-tag>
-          <el-tag :type="acceptanceResultChange1" size="small" style="margin: 0 5%;" effect="dark" class="tag" @click="changeAcceptanceResult(1)"> 测试通过 </el-tag>
-          <el-tag :type="acceptanceResultChange2" size="small" effect="dark" class="tag" @click="changeAcceptanceResult(2)"> 测试未通过 </el-tag>
-        </div>
-      </div>
-      <normal-area id="bug-children-acceptanceResultInfo" :value.sync="clienEdit.acceptanceResultInfo" :height="150" />
-
-      <div style="margin: 2% 0 2% 0;" class="backStyle">五. bug指标</div>
-      <el-table :data="tableData" border>
-        <el-table-column prop="totalBug" label="bug总数" min-width="200" align="center" edit="false">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.totalBug.edit" ref="totalBug" v-model="scope.row.totalBug.value" style="width: 100%" @blur="scope.row.totalBug.edit = false" />
-            <span v-else>{{ scope.row.totalBug.value }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="fixBug" min-width="200" align="center" label="已解决bug数">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.fixBug.edit" ref="fixBug" v-model="scope.row.fixBug.value" style="width: 100%" @blur="scope.row.fixBug.edit = false" />
-            <span v-else>{{ scope.row.fixBug.value }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="remainBug" min-width="200" align="center" label="遗留bug数">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.remainBug.edit" ref="remainBug" v-model="scope.row.remainBug.value" style="width: 100%" @blur="scope.row.remainBug.edit = false" />
-            <span v-else>{{ scope.row.remainBug.value }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="rateOfFix" min-width="200" align="center" label="bug解决率">
-          <template slot-scope="scope">
-            <el-input v-if="scope.row.rateOfFix.edit" ref="rateOfFix" v-model="scope.row.rateOfFix.value" style="width: 100%" @blur="scope.row.rateOfFix.edit = false" />
-            <span v-else>{{ scope.row.rateOfFix.value }}</span>
-          </template>
-        </el-table-column>
-      </el-table>
-
-      <el-row class="pre-line">
-        <el-col :span="24" style="margin:1% 0;">遗留问题<el-input v-model="ClientData.bugInfo" type="textarea" size="small" placeholder="请填写内容" style="margin-top:1%;" /></el-col>
-      </el-row>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import { projectTestReportUpdate, projectTestReportCreate, bugFinishList } from '@/api/ResultPage'
-import normalArea from '@/components/input/normalArea'
-
-export default {
-  name: 'ClientAcceptance',
-  components: {
-    normalArea
-  },
-  props: {
-    clienData: {
-      type: Object,
-      required: true
-    }
-  },
-  data() {
-    return {
-      userData: '',
-      objData: '',
-      tagBtn: 'info',
-      tagBtn1: 'info',
-      tagChange: 'info',
-      tagChange1: 'info',
-      sctChange: 'info',
-      sctChange1: 'info',
-      sctChange2: 'info',
-      pftChange: 'info',
-      pftChange1: 'info',
-      pftChange2: 'info',
-      acceptanceResultChange: 'info',
-      acceptanceResultChange1: 'info',
-      acceptanceResultChange2: 'info',
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      serviceDataRules: {
-        reportName: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
-        ownner: [{ required: true, message: 'by不能为空', trigger: 'change' }],
-        status: [{ required: false, message: '测试结果不能为空', trigger: 'change' }],
-        taskLateStatus: [{ required: false, message: '准出延期不能为空', trigger: 'change' }],
-        taskLateReason: [{ required: true, message: '延期原因不能为空', trigger: 'change' }],
-        smokeTestResult: [{ required: true, message: '准入结果不能为空', trigger: 'change' }],
-        developer: [{ required: true, message: '开发人员不能为空', trigger: 'change' }],
-        tester: [{ required: true, message: '测试人员不能为空', trigger: 'change' }]
-      },
-      showDelay: false,
-      status: '',
-      taskLateStatus: '',
-      pftResult: '',
-      sctResult: '',
-      acceptanceResult: '',
-      clienEdit: {
-        projectBackground: '',
-        sctInfo: `<p>1、机型兼容</p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>手机型号</th><th>操作系统</th><th>分辨率</th><th>(微信版本号)</tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p>2、网络兼容</p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>WIFI</th><th>4G</th><th>5G</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td></tr></tbody></table><p>3、容器兼容</p><br>`,
-        acceptanceResultInfo: `<table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>验收项</th><th>验收点</th><th>验收人</th><th>验收结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>`,
-        fctInfo: `<table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>页面</th><th>模块</th><th>接口</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>`
-      },
-      ClientData: {},
-      bugNum: '',
-      Ts: [],
-      clienId: '',
-      tableData: []
-    }
-  },
-  watch: {
-    clienData: {
-      handler(newV, old) {
-        if (newV.id) {
-          this.getRouterData()
-        }
-        this.bugNum = { type: 2, taskIds: newV.taskIds }
-        this.getBugData()
-      },
-      immediate: true
-    }
-  },
-  methods: {
-    getRouterData() {
-      this.ClientData = this.clienData
-      if (this.ClientData.status === 1) {
-        this.tagBtn = 'success'
-        this.tagBtn1 = 'info'
-        this.status = 1
-      } else {
-        this.tagBtn1 = 'danger'
-        this.tagBtn = 'info'
-        this.status = 2
-      }
-      if (this.ClientData.taskLateStatus === 1) {
-        this.tagChange = 'success'
-        this.tagChange1 = 'info'
-        this.taskLateStatus = 1
-        this.showDelay = false
-      } else {
-        this.tagChange1 = 'danger'
-        this.tagChange = 'info'
-        this.taskLateStatus = 2
-        this.showDelay = true
-      }
-      if (this.ClientData.sctResult) {
-        switch (this.ClientData.sctResult) {
-          case 1:
-            this.sctChange = 'info'
-            this.sctChange1 = 'success'
-            this.sctChange2 = 'info'
-            this.sctResult = 1
-            break
-          case 2:
-            this.sctChange = 'info'
-            this.sctChange1 = 'info'
-            this.sctChange2 = 'danger'
-            this.sctResult = 2
-            break
-          case 3:
-            this.sctChange = 'warning'
-            this.sctChange1 = 'info'
-            this.sctChange2 = 'info'
-            this.sctResult = 3
-        }
-      }
-      if (this.ClientData.pftResult) {
-        switch (this.ClientData.pftResult) {
-          case 1:
-            this.pftChange = 'info'
-            this.pftChange1 = 'success'
-            this.pftChange2 = 'info'
-            this.pftResult = 1
-            break
-          case 2:
-            this.pftChange = 'info'
-            this.pftChange1 = 'info'
-            this.pftChange2 = 'danger'
-            this.pftResult = 2
-            break
-          case 3:
-            this.pftChange = 'warning'
-            this.pftChange1 = 'info'
-            this.pftChange2 = 'info'
-            this.pftResult = 3
-        }
-      }
-      if (this.ClientData.acceptanceResult) {
-        switch (this.ClientData.acceptanceResult) {
-          case 1:
-            this.acceptanceResultChange = 'info'
-            this.acceptanceResultChange1 = 'success'
-            this.acceptanceResultChange2 = 'info'
-            this.acceptanceResult = 1
-            break
-          case 2:
-            this.acceptanceResultChange = 'info'
-            this.acceptanceResultChange1 = 'info'
-            this.acceptanceResultChange2 = 'danger'
-            this.acceptanceResult = 2
-            break
-          case 3:
-            this.acceptanceResultChange = 'warning'
-            this.acceptanceResultChange1 = 'info'
-            this.acceptanceResultChange2 = 'info'
-            this.acceptanceResult = 3
-        }
-      }
-      this.$nextTick(() => {
-        this.clienEdit.projectBackground = this.ClientData.projectBackground || this.clienEdit.projectBackground
-        this.clienEdit.fctInfo = this.ClientData.fctInfo || this.clienEdit.fctInfo
-        this.clienEdit.sctInfo = this.ClientData.sctInfo || this.clienEdit.sctInfo
-        this.clienEdit.acceptanceResultInfo = this.ClientData.acceptanceResultInfo || this.clienEdit.acceptanceResultInfo
-      })
-    },
-    async getBugData() {
-      const res = await bugFinishList(this.bugNum)
-      res.data.launchInfo !== null ? this.$set(this.ClientData, 'smokeTestResult', res.data.launchInfo) : ''
-      this.tableData = [res.data]
-      this.formatData()
-    },
-    parentHandleclick(e, task, id) {
-      if (e === 1) {
-        this.Ts = task
-        this.getCreateData(this.ClientData, this.tableData)
-      } else {
-        this.clienId = id
-        this.getQueryData(this.ClientData, this.tableData)
-      }
-    },
-    getCreateData(ele, vel) {
-      this.$refs['ClientData'].validate((valid) => {
-        if (valid) {
-          this.ClientData = ele
-          this.ClientData.projectBackground = this.clienEdit.projectBackground
-          this.ClientData.fctInfo = this.clienEdit.fctInfo
-          this.ClientData.sctInfo = this.clienEdit.sctInfo
-          this.ClientData.acceptanceResultInfo = this.clienEdit.acceptanceResultInfo
-          this.ClientData.pftResult = this.pftResult
-          this.ClientData.sctResult = this.sctResult
-          this.ClientData.acceptanceResult = this.acceptanceResult
-          this.ClientData.bizId = Number(localStorage.getItem('bizId'))
-          this.ClientData.taskIds = this.Ts
-          this.ClientData.status = this.status
-          this.ClientData.taskLateStatus = this.taskLateStatus
-          this.ClientData.type = 1
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { projectTestReport: this.ClientData, user: this.userData }
-          projectTestReportCreate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message({ type: 'success', message: '保存成功' })
-              this.$emit('QuasiReport', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-    getQueryData(ele, vel) {
-      this.$refs['ClientData'].validate((valid) => {
-        if (valid) {
-          this.ClientData = ele
-          this.ClientData.projectBackground = this.clienEdit.projectBackground
-          this.ClientData.fctInfo = this.clienEdit.fctInfo
-          this.ClientData.sctInfo = this.clienEdit.sctInfo
-          this.ClientData.acceptanceResultInfo = this.clienEdit.acceptanceResultInfo
-          this.ClientData.pftResult = this.pftResult
-          this.ClientData.sctResult = this.sctResult
-          this.ClientData.acceptanceResult = this.acceptanceResult
-          this.ClientData.status = this.status
-          this.ClientData.id === undefined ? this.ClientData.id = this.clienId : ''
-          this.ClientData.taskLateStatus = this.taskLateStatus
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { projectTestReport: this.ClientData, user: this.userData }
-          projectTestReportUpdate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message({ type: 'success', message: '更新成功' })
-              this.$emit('QuasiReport', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-
-    formatData() {
-      this.tableData.forEach(item => {
-        for (var key in item) {
-          item[key] = {
-            value: item[key],
-            edit: false
-          }
-        }
-      })
-    },
-
-    // 准出延期
-    lateStatusChange(e) {
-      if (e === 1) {
-        this.tagChange = 'success'
-        this.tagChange1 = 'info'
-        this.showDelay = false
-        this.taskLateStatus = 1
-        this.$set(this.ClientData, 'taskLateReason', '')
-      } else {
-        this.tagChange = 'info'
-        this.tagChange1 = 'danger'
-        this.showDelay = true
-        this.taskLateStatus = 2
-      }
-    },
-
-    // 测试结果
-    changeStatus(e) {
-      if (e === 1) {
-        this.tagBtn = 'success'
-        this.tagBtn1 = 'info'
-        this.status = 1
-      } else {
-        this.tagBtn = 'info'
-        this.tagBtn1 = 'danger'
-        this.status = 2
-      }
-    },
-
-    // 兼容测试
-    changeSctResult(e) {
-      this.sctChange = 'info'
-      this.sctChange1 = 'info'
-      this.sctChange2 = 'info'
-      switch (e) {
-        case 1:
-          this.sctChange1 = 'success'
-          this.sctResult = 1
-          break
-        case 2:
-          this.sctChange2 = 'danger'
-          this.sctResult = 2
-          break
-        case 3:
-          this.sctChange = 'warning'
-          this.sctResult = 3
-      }
-    },
-
-    // 功能测试
-    changePftResult(e) {
-      switch (e) {
-        case 1:
-          this.pftChange = 'info'
-          this.pftChange1 = 'success'
-          this.pftChange2 = 'info'
-          this.pftResult = 1
-          break
-        case 2:
-          this.pftChange = 'info'
-          this.pftChange1 = 'info'
-          this.pftChange2 = 'danger'
-          this.pftResult = 2
-          break
-        case 3:
-          this.pftChange = 'warning'
-          this.pftChange1 = 'info'
-          this.pftChange2 = 'info'
-          this.pftResult = 3
-      }
-    },
-
-    // 验收结果
-    changeAcceptanceResult(e) {
-      switch (e) {
-        case 1:
-          this.acceptanceResultChange = 'info'
-          this.acceptanceResultChange1 = 'success'
-          this.acceptanceResultChange2 = 'info'
-          this.acceptanceResult = 1
-          break
-        case 2:
-          this.acceptanceResultChange = 'info'
-          this.acceptanceResultChange1 = 'info'
-          this.acceptanceResultChange2 = 'danger'
-          this.acceptanceResult = 2
-          break
-        case 3:
-          this.acceptanceResultChange = 'warning'
-          this.acceptanceResultChange1 = 'info'
-          this.acceptanceResultChange2 = 'info'
-          this.acceptanceResult = 3
-      }
-    }
-  }
-}
-</script>
-
-<style scoped>
-.tag {
-     width:80px;
-     text-align: center;
-     cursor:pointer
-  }
-  .backStyle {
-    font-size: 17px;
-    font-weight: bold;
-    border-radius: 4px;
-  }
-  .eleStyle {
-    width: 100%;
-    height:100%;
-    display: inline-block;
-  }
-  .BJIsize {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-  }
-  .pre-line >>> .el-col{
-    white-space: pre-line
-  }
-</style>
-<style lang="stylus" scoped>
-  .double
-    display flex
-    justify-content space-between
-  .double >>> .el-form-item__content
-    display flex
-</style>

+ 0 - 225
src/views/Platform/presentation/DailyNewsAdded.vue

@@ -1,225 +0,0 @@
-<template>
-  <!-- 新增测试日报 -->
-  <div class="eleStyle">
-    <el-form ref="fromCreateData" :inline="true" :model="fromCreateData" :rules="serviceDataRules" style="margin:0% 2%;">
-      <div style="display: flex;white-space: nowrap;">
-        <el-form-item label="标题" style="flex: 1;" prop="reportName">
-          <el-input v-model="fromCreateData.reportName" size="small" style="width:15vw;" placeholder="报告标题(xxx项目测试日报)" />
-        </el-form-item>
-        <el-form-item label="by" prop="ownner" style="flex: 1; text-align:right;">
-          <el-input v-model="fromCreateData.ownner" size="small" placeholder="who" />
-        </el-form-item>
-      </div>
-      <!-- 富文本 -->
-      <myTinymce ref="myTinymce" :tinymce-html="content" :tinymce-height="setHeight" />
-      <div class="backStyle" style="margin-top: 10px;">三. bug情况</div>
-      <div style="border: 1px,solid #ccc;">
-        <div style="color: #606266">1、bug统计</div>
-        <div :class="{'space-between' : xaxisTotal < 8} ">
-          <div id="lineShow" :class="{'backTop' : xaxisTotal < 8,'backLeft' : xaxisTotal > 7}" />
-          <div id="barShow" :class="{'backTop' : xaxisTotal < 8, 'backLeft' : xaxisTotal > 7}" />
-        </div>
-        <div style="color: #606266; margin: 1% 0;">2、bug说明</div>
-        <el-row>
-          <el-col :span="24"><el-input v-model="fromCreateData.bugExplain" size="small" type="textarea" /></el-col>
-        </el-row>
-      </div>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import myTinymce from '@/views/Platform/MyTinymce/MyTinymce.vue'
-import echarts from 'echarts'
-import { dailyReportCreate, dailyReportUpdate, bugDailyList } from '@/api/testPresentetion'
-
-export default {
-  name: 'DailyNewsAdded',
-  components: {
-    myTinymce
-  },
-  props: {
-    message: {
-      type: Object,
-      required: true
-    }
-  },
-  data() {
-    return {
-      content: this.message.creatask === '编辑' ? this.message.testExplain : '<div style="color: #606266"><h3>一. 进度和风险</h3><p>1、项目整体进度</p><p>2、项目风险与问题</p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="8%"><col width="8%"><col width="8%"><col width="8%"></colgroup><thead><tr><th>风险等级</th><th>风险项</th><th>当前状态</th><th>跟进人</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><h3>二. 测试情况</h3><p>1、测试进展</p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"></colgroup><thead><tr><th>标题1</th><th>标题2</th><th>标题3</th><th>标题4</th><th>标题5</th><th>标题6</th><th>标题7</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p>2、测试说明</p></div>',
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      serviceDataRules: {
-        reportName: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
-        ownner: [{ required: true, message: 'by不能为空', trigger: 'change' }]
-      },
-      fromCreateData: {
-        id: '',
-        bizId: '',
-        taskId: '',
-        status: '',
-        reportName: '',
-        ownner: '',
-        progressExplain: '', //  项目节点
-        testExplain: '', // 测试情况
-        bugNumCount: '', // bug统计
-        bugExplain: '', //  bug说明
-        problemRisks: ''// 进度和风险
-      },
-      userData: '',
-      objData: '',
-      dateList: [],
-      numList: [],
-      bugName: [],
-      statusMap: [],
-      statusList: [],
-      dailys: '',
-      xaxisTotal: 0,
-      setHeight: 500
-    }
-  },
-  created() {
-    this.getRouterData()
-  },
-  mounted() {
-    const myChart = echarts.init(document.getElementById('lineShow'))
-    const myChartA = echarts.init(document.getElementById('barShow'))
-    window.addEventListener('resize', () => {
-      if (myChart) {
-        myChart.resize()
-        myChartA.resize()
-      }
-    })
-  },
-  methods: {
-    getRouterData() {
-      var url = location.href // 获取url中"?"符后的字串
-      var arr = url.split('=')
-      this.fromCreateData = this.message
-      var Ts_Ids = ''
-      this.fromCreateData.taskIds ? Ts_Ids = this.fromCreateData.taskIds : Ts_Ids = [Number(arr[1])]
-      bugDailyList({ taskIds: Ts_Ids }).then(res => {
-        this.dateList = res.data.dateList
-        this.statusMap = res.data.statusMap
-        this.statusList = res.data.statusList
-        this.numList = res.data.bugMap
-        if (this.dateList.length >= 7 || this.statusList.length >= 7) {
-          this.xaxisTotal = 8
-        } else {
-          this.xaxisTotal = 1
-        }
-        for (var ele of this.numList) {
-          this.bugName.push(ele.name)
-        }
-        setTimeout(item => {
-          echarts.init(document.getElementById('lineShow')).setOption({
-            title: { left: 'center', text: 'bug数量汇总' },
-            color: ['#2F54EB', '#13C2C2', '#F78B16', '#9254DE'],
-            tooltip: { trigger: 'axis' },
-            legend: { top: 30, data: this.bugName },
-            grid: { left: '5%', right: '5%', bottom: '12%', containLabel: true },
-            xAxis: { type: 'category', boundaryGap: true, data: this.dateList, axisLabel: { interval: 0, rotate: 30 }},
-            yAxis: { type: 'value' },
-            series: this.numList
-          })
-          echarts.init(document.getElementById('lineShow')).resize()
-        }, 1000)
-        setTimeout(item => {
-          echarts.init(document.getElementById('barShow')).setOption({
-            title: { text: 'bug状态汇总', x: 'center' },
-            color: ['#2F54EB', '#13C2C2', '#F78B16', '#9254DE'],
-            tooltip: { trigger: 'axis' },
-            legend: { top: 30, data: this.statusMap },
-            grid: { left: '5%', right: '5%', bottom: '12%', containLabel: true },
-            xAxis: [{ data: this.statusList, axisLabel: { interval: 0, rotate: 45 }}],
-            yAxis: [{}],
-            series: this.statusMap
-          })
-          echarts.init(document.getElementById('barShow')).resize()
-        }, 500)
-      })
-    },
-    parentHandleclick(e, task, id) {
-      console.log(this.fromCreateData, 'cdcdscdcd')
-      if (e === 1) {
-        this.ids = task
-        delete this.fromCreateData.id
-        this.getCreateData(this.fromCreateData)
-      } else {
-        this.dailys = id
-        this.getQueryData(this.fromCreateData)
-      }
-    },
-
-    // 新建bug提交
-    getCreateData(ele) {
-      this.$refs['fromCreateData'].validate((valid) => {
-        if (valid) {
-          this.fromCreateData = ele
-          this.fromCreateData.testExplain = this.$store.state.data.RichText
-          this.fromCreateData.bizId = Number(localStorage.getItem('bizId'))
-          this.fromCreateData.taskIds = this.ids
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { dailyTestReport: this.fromCreateData, user: this.userData }
-          dailyReportCreate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message.success(res.msg)
-              this.$emit('daily', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-
-    // 更新bug提交
-    getQueryData(ele) {
-      this.fromCreateData = ele
-      this.fromCreateData.testExplain = this.$store.state.data.RichText
-      this.fromCreateData.id === undefined ? this.fromCreateData.id = this.dailys : ''
-      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { dailyTestReport: this.fromCreateData, user: this.userData }
-      dailyReportUpdate(this.objData).then(res => {
-        if (res.code === 200) {
-          this.$message({ type: 'success', message: '更新成功' })
-          this.$emit('daily', res.data)
-        } else {
-          this.$message.error('更新失败')
-        }
-      })
-    }
-  }
-}
-</script>
-
-<style scoped>
-  .eleStyle {
-    width: 100%;
-    height:100%;
-    display: inline-block;
-  }
-  .backStyle {
-    font-size: 19px;
-    font-weight: bold;
-    border-radius: 4px;
-    margin: 1% 0;
-  }
-
-  .space-between {
-    display:flex;
-    align-items: center;
-    justify-content: space-between;
-  }
-
-  .backTop {
-    flex:1.5;
-    width: 400px;
-    height:400px;
-  }
-
-  .backLeft {
-    width: 100%;
-    height:400px;
-  }
-</style>

+ 0 - 402
src/views/Platform/presentation/PresentReport.vue

@@ -1,402 +0,0 @@
-<template>
-  <!-- 提测报告,新增客户端报告 -->
-  <div class="eleStyle">
-    <el-form ref="dataChange" :model="dataChange" :rules="serviceDataRules" style="margin:2% 0%;">
-      <div class="double">
-        <el-form-item label="标题" prop="name">
-          <el-input v-model="dataChange.name" size="small" style="width: 20vw" placeholder="报告标题(端-版本-需求提测报告)" />
-        </el-form-item>
-        <el-form-item label="by" prop="submitter">
-          <el-input v-model="dataChange.submitter" size="small" placeholder="who" />
-        </el-form-item>
-      </div>
-
-      <div class="backStyle">一. 提测详情</div>
-
-      <div class="double" style="display: flex; justify-content: space-between; white-space: nowrap;">
-        <el-form-item label="* 是否延期" style="text-align:right;">
-          <el-button :type="lateStatusBtn" style="margin: 0 20px;" size="small" class="tag" @click="lateStatusChange(2)"> 是 </el-button>
-          <el-button :type="lateStatusBtn1" class="tag" size="small" @click="lateStatusChange(1)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showDelay" label="延期原因" prop="lateReason"><el-input v-model="dataChange.lateReason" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <div class="double" style="display: flex; justify-content: space-between; white-space: nowrap;">
-        <el-form-item label="* 新增Apollo" style="text-align:right;">
-          <el-button :type="configInBtn" style="margin: 0 6px" size="small" class="tag" @click="changeApollo(1)"> 是 </el-button>
-          <el-button :type="configInBtn1" style="margin-left: 24px" size="small" class="tag" @click="changeApollo(2)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showApollo" label="Apollo名称" prop="configInfo"><el-input v-model="dataChange.configInfo" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <div class="double" style="display: flex; justify-content: space-between; white-space: nowrap;">
-        <el-form-item label="* 依赖组件" style="text-align:right;">
-          <el-button :type="dependentBtn" style="margin: 0 20px;" size="small" class="tag" @click="changeRelyOn(1)"> 是 </el-button>
-          <el-button :type="dependentBtn1" class="tag" size="small" @click="changeRelyOn(2)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showRelyOn" label="组件名称" prop="dependentComponents"><el-input v-model="dataChange.dependentComponents" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <div class="CodeReview" style="display: flex; justify-content: space-between; white-space: nowrap;">
-        <el-form-item label="* CodeReview">
-          <el-button :type="CodeReview" style="margin: 0 17px 0 8px;" size="small" class="tag" @click="changeCodeReview(1)"> 是 </el-button>
-          <el-button :type="CodeReview1" class="tag" size="small" @click="changeCodeReview(0)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showCodeReview" class="double" label="执行人" prop="crBy"><el-input v-model="dataChange.crBy" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <div class="double">
-        <el-form-item label="测试地址" prop="packageUrl"><el-input v-model="dataChange.packageUrl" size="small" style="width:15vw;" /></el-form-item>
-        <el-form-item label="打包分支" prop="packageBranch"><el-input v-model="dataChange.packageBranch" size="small" style="width:25vw;" /></el-form-item>
-      </div>
-
-      <div class="double">
-        <el-form-item label=" 优 先 级" prop="priority">
-          <el-select v-model="dataChange.priority" size="small" style="width:15vw;" placeholder="请选择优先级">
-            <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.name" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="提测环境" prop="env"><el-input v-model="dataChange.env" size="small" style="width:25vw;" /></el-form-item>
-      </div>
-
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="PM & UI" prop="pmUi"><el-input v-model="dataChange.pmUi" size="small" style="width:100%;" /></el-form-item>
-        </el-col>
-      </div>
-
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="自测结果" prop="selfTestInfo"><el-input v-model="dataChange.selfTestInfo" size="small" style="width:100%;" /></el-form-item>
-        </el-col>
-      </div>
-
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="需求list" prop="functionInfo"><el-input v-model="dataChange.functionInfo" size="small" style="width:85vw;margin-left:9px;" /></el-form-item>
-        </el-col>
-      </div>
-
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="涉及接口"><el-input v-model="dataChange.interfaceInfo" size="small" style="width:85vw;margin-left:9px;" type="textarea" :rows="5" /></el-form-item>
-        </el-col>
-      </div>
-
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="测试建议"><el-input v-model="dataChange.testSuggest" size="small" style="width:85vw;margin-left:9px;" type="textarea" :rows="5" /></el-form-item>
-        </el-col>
-      </div>
-
-      <div class="backStyle">二. 联调详情</div>
-
-      <normal-area id="presen-children-joinTest" :value.sync="clienEdit.joinTest" :height="200" />
-
-      <div class="backStyle">三. 其他</div>
-
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="其他"><el-input v-model="dataChange.others" size="small" style="width:85vw;margin-left:13px;" type="textarea" :rows="5" /></el-form-item>
-        </el-col>
-      </div>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import { launchTestUpdate, launchTestCreate } from '@/api/InterfaceReport'
-import normalArea from '@/components/input/normalArea'
-
-export default {
-  name: 'PresentReport',
-  components: {
-    normalArea
-  },
-  props: {
-    clienData: {
-      type: Object,
-      required: true
-    }
-  },
-  data() {
-    return {
-      priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
-      serviceDataRules: {
-        selfTestInfo: [{ required: true, message: '自测结果不能为空', trigger: 'change' }],
-        name: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
-        submitter: [{ required: true, message: 'by不能为空', trigger: 'change' }],
-        pmUi: [{ required: true, message: 'PM & UI不能为空', trigger: 'change' }],
-        lateStatus: [{ required: false, message: '是否延期不能为空', trigger: 'change' }],
-        lateReason: [{ required: true, message: '延期原因不能为空', trigger: 'change' }],
-        dependent: [{ required: false, message: '依赖组建不能为空', trigger: 'change' }],
-        configIn: [{ required: false, message: '新增Apollo不能为空', trigger: 'change' }],
-        priority: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
-        packageUrl: [{ required: true, message: '测试地址不能为空', trigger: 'change' }],
-        packageBranch: [{ required: true, message: '打包分支不能为空', trigger: 'change' }],
-        functionInfo: [{ required: true, message: '需求list不能为空', trigger: 'change' }],
-        env: [{ required: true, message: '提测环境不能为空', trigger: 'change' }],
-        configInfo: [{ required: true, message: 'Apollo名称不能为空', trigger: 'change' }],
-        dependentComponents: [{ required: true, message: '组件名称不能为空', trigger: 'change' }],
-        crBy: [{ required: true, message: '执行人不能为空', trigger: 'change' }]
-      },
-      lateStatusBtn: 'info',
-      lateStatusBtn1: 'success',
-      configInBtn: 'info',
-      configInBtn1: 'danger',
-      dependentBtn: 'info',
-      dependentBtn1: 'danger',
-      CodeReview: 'info',
-      CodeReview1: 'danger',
-      showDelay: false,
-      showApollo: false,
-      showRelyOn: false,
-      showCodeReview: false, // 执行人
-      userData: '',
-      objData: '',
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      id: '',
-      name: '',
-      dataChange: {
-        cr: 0
-      },
-      clienEdit: {
-        joinTest: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="30%"><col width="30%"><col width="30%"></colgroup><thead><tr><th>端类型</th><th>联调RD</th><th>联调结果</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td></tr></tbody></table>`
-      },
-      lateStatus: '',
-      bizIdCode: '',
-      projectIdCode: '',
-      ids: [],
-      configIn: 2,
-      dependent: 2,
-      clien: '',
-      cr: ''
-    }
-  },
-  created() {
-    this.getRouterData()
-  },
-  mounted() {
-    this.$nextTick(function() {
-      this.$on('getRouterData', function() {
-        this.getRouterData()
-      })
-    })
-  },
-  methods: {
-    getRouterData() {
-      console.log(this.clienData, '提测客户端')
-      this.dataChange = this.clienData
-      this.dataChange.cr = 0
-      this.dataChange.configIn = 2
-      this.dataChange.lateStatus = 1
-      if (this.dataChange.id) {
-        if (this.dataChange.lateStatus === 1) {
-          this.lateStatusBtn1 = 'success'
-          this.lateStatusBtn = 'info'
-          this.lateStatus = 1
-          this.showDelay = false
-        } else {
-          this.lateStatusBtn1 = 'info'
-          this.lateStatusBtn = 'danger'
-          this.lateStatus = 2
-          this.showDelay = true
-        }
-        if (this.dataChange.configInfo !== '') {
-          this.configInBtn = 'success'
-          this.configInBtn1 = 'info'
-          this.confidgIn = 1
-          this.showApollo = true
-        } else {
-          this.configInBtn = 'info'
-          this.configInBtn1 = 'danger'
-          this.configIn = 2
-          this.showApollo = false
-        }
-        if (this.dataChange.dependentComponents !== '') {
-          this.dependentBtn = 'success'
-          this.dependentBtn1 = 'info'
-          this.dependent = 1
-          this.showRelyOn = true
-        } else {
-          this.dependentBtn = 'info'
-          this.dependentBtn1 = 'danger'
-          this.dependent = 2
-          this.showRelyOn = false
-        }
-        if (this.dataChange.crBy !== '' && this.dataChange.crBy !== null) { // 执行人
-          this.CodeReview = 'success'
-          this.CodeReview1 = 'info'
-          this.dataChange.cr = 1
-          this.showCodeReview = true
-        } else {
-          this.CodeReview = 'info'
-          this.CodeReview1 = 'danger'
-          this.dataChange.cr = 0
-          this.$set(this.dataChange, 'crBy', '')
-          this.showCodeReview = false
-        }
-        this.$nextTick(() => {
-          this.clienEdit.joinTest = this.dataChange.joinTest || this.clienEdit.joinTest
-        })
-      }
-      if (!this.clienData[0] === undefined) {
-        Object.assign(this.$data, this.$options.data())
-      }
-    },
-    getQueryData(ele) {
-      this.$refs['dataChange'].validate((valid) => {
-        if (valid) {
-          this.dataChange = ele
-          this.dataChange.lateStatus = this.lateStatus
-          this.dataChange.id === undefined ? this.dataChange.id = this.clien : ''
-          this.ClientData.joinTest = this.clienEdit.joinTest
-          this.userData = { ename: this.userInformation, name: this.userNames }
-          this.objData = { launchTestInfo: this.dataChange, user: this.userData }
-          launchTestUpdate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message({ type: 'success', message: '更新成功' })
-              this.$emit('fatherMethod', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-    parentHandleclick(e, task, id) { // 判断新建还是编辑
-      if (e === 1) {
-        this.ids = task
-        this.getCreateData(this.dataChange)
-      } else {
-        this.clien = id
-        this.getQueryData(this.dataChange)
-      }
-    },
-    getCreateData(ele) {
-      console.log(ele, '提测客户端吧')
-      this.$refs['dataChange'].validate((valid) => {
-        if (valid) {
-          this.dataChange = ele
-          this.dataChange.configInfo ? '' : this.dataChange.configInfo = ''
-          this.dataChange.dependentComponents ? '' : this.dataChange.dependentComponents = ''
-          this.dataChange.joinTest = this.clienEdit.joinTest
-          this.dataChange.bizId = Number(localStorage.getItem('bizId'))
-          this.dataChange.taskIds = this.ids
-          this.dataChange.type = 1
-          this.userData = { ename: this.userInformation, name: this.userNames }
-          this.objData = { launchTestInfo: this.dataChange, user: this.userData }
-          launchTestCreate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message.success(res.msg)
-              this.$emit('fatherMethod', res.data)
-            }
-          })
-        } else {
-          this.$message.error('必填项不能为空')
-          return false
-        }
-      })
-    },
-
-    // 是否延期
-    lateStatusChange(e) {
-      if (e === 2) {
-        this.lateStatusBtn = 'danger'
-        this.lateStatusBtn1 = 'info'
-        this.lateStatus = 2
-        this.showDelay = true
-      } else {
-        this.lateStatusBtn = 'info'
-        this.lateStatusBtn1 = 'success'
-        this.lateStatus = 1
-        this.showDelay = false
-        this.$set(this.dataChange, 'lateReason', '')
-      }
-    },
-
-    // 新增Apollo
-    changeApollo(e) {
-      if (e === 1) {
-        this.configInBtn = 'success'
-        this.configInBtn1 = 'info'
-        this.configIn = 1
-        this.showApollo = true
-      } else {
-        this.$set(this.dataChange, 'configInfo', '')
-        this.configInBtn = 'info'
-        this.configInBtn1 = 'danger'
-        this.configIn = 2
-        this.showApollo = false
-      }
-    },
-
-    // 依赖组件
-    changeRelyOn(e) {
-      if (e === 1) {
-        this.dependentBtn = 'success'
-        this.dependentBtn1 = 'info'
-        this.dependent = 1
-        this.showRelyOn = true
-      } else {
-        this.$set(this.dataChange, 'dependentComponents', '')
-        this.dependentBtn = 'info'
-        this.dependentBtn1 = 'danger'
-        this.dependent = 2
-        this.showRelyOn = false
-      }
-    },
-
-    // CodeReview
-    changeCodeReview(e) {
-      if (e === 1) {
-        this.CodeReview = 'success'
-        this.CodeReview1 = 'info'
-        this.dataChange.cr = 1
-        this.showCodeReview = true
-      } else {
-        this.CodeReview = 'info'
-        this.CodeReview1 = 'danger'
-        this.dataChange.cr = 0
-        this.$set(this.dataChange, 'crBy', '')
-        this.showCodeReview = false
-      }
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-  .eleStyle {
-    width: 100%;
-    height:100%;
-    display: inline-block;
-  }
-  .backStyle {
-    font-size: 17px;
-    font-weight: bold;
-    border-radius: 4px;
-    margin: 1% 0;
-  }
-  .tag {
-     width:80px;
-     text-align: center;
-     cursor:pointer
-  }
-  .CodeReview {
-    /deep/ .el-form-item__label {
-      width: 106px;
-    }
-  }
-
-</style>
-<style lang="stylus" scoped>
-  .double
-    display flex
-    justify-content space-between
-  .double >>> .el-form-item__content
-    display flex
-  .double >>> .el-form-item__label
-    margin-right 14.19px
-</style>

+ 0 - 284
src/views/Platform/presentation/Templates/ClientReport.vue

@@ -1,284 +0,0 @@
-<template>
-  <el-dialog :visible.sync="dialogDaliy" width="70vw" class="public_task" title="准出报告" :close-on-click-modal="false" :before-close="handleClose">
-    <div class="blueStripe" />
-    <div style="margin: 2% 0%; font-size: 16pt; color: #333B4A;">
-      <el-steps :active="active" align-center finish-status="success">
-        <el-step style="font-size: 16pt; color: #333B4A;" title="选择模版" />
-        <el-step title="填写报告" />
-        <el-step style="font-size: 16pt; color: #333B4A;" title="发送报告" />
-      </el-steps>
-    </div>
-    <div v-if="showOne" style="margin: 0 4% 2%;">
-      <div style="margin: 0% 14%;  height: 430px;" class="Layout">
-        <div style="margin-right:10%;">
-          <el-radio v-model="radio" class="_radio" label="1">客户端模版</el-radio><br>
-          <el-image style="display: inline-block; width: 85%;" :src="src1" />
-        </div>
-        <div style="margin-left:10%;">
-          <el-radio v-model="radio" class="_radio" label="2">服务端模版</el-radio><br>
-          <el-image style="display: inline-block; width: 65%;" :src="src" />
-        </div>
-      </div>
-      <div align="center">
-        <el-button size="small" type="primary" @click="NextStep()">下一步</el-button>
-      </div>
-    </div>
-    <div v-if="showTow" style="margin: 0% 5%;">
-      <div class="descr" style=" margin-bottom: 2%; height: 435px; overflow:scroll; overflow-x: hidden">
-        <ClientAcceptance v-if="ClientAcceptance1" ref="ClientAcceptance" :clien-data="clienData" @QuasiReport="QuasiReport" />
-        <Acceptance v-if="Acceptance1" ref="Acceptance" :clien-data="clienData" @QuasiReport="QuasiReport" />
-      </div>
-      <div align="center">
-        <el-button size="small" type="primary" @click="handleClose1()">上一步</el-button>
-        <el-button size="small" type="primary" @click="created_out()">保存,下一步</el-button>
-      </div>
-    </div>
-    <div v-if="showThree" style="margin: 0% 5%;">
-      <div style="font-size:18px; font-family:PingFangSC-Medium,PingFang SC; font-weight:500; color:rgba(51,59,74,1); line-height:29px;">
-        邮件列表
-      </div>
-      <div style="margin: 1% 0% 3%;">
-        <div class="Layout" style="margin-bottom: 10px;"><div style="width: 60px;" class="div1">收件人 </div><searchTeam :value.sync="form.name" :clearable="true" :multiple="true" style="width:100%" /></div>
-        <div class="Layout"><div style="width: 60px;" class="div1">抄送 </div><searchTeam :value.sync="form.names" :clearable="true" :multiple="true" style="width:100%" /></div>
-      </div>
-      <div style="font-size:18px; font-family:PingFangSC-Medium,PingFang SC; font-weight:500; color:rgba(51,59,74,1); line-height:29px;">
-        报告预览
-      </div>
-      <div class="descr" style="height: 330px; overflow:scroll; overflow-x: hidden">
-        <ResultPageyL id="resumeId1" :message="report" />
-      </div>
-      <div align="center">
-        <el-button size="small" type="primary" @click="gou_out()">上一步</el-button>
-        <el-button :disabled="send" :loading="send" size="small" type="primary" @click="sendReport(form)">发送</el-button>
-      </div>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-import '@/styles/PublicStyle/index.scss'
-import '@/views/projectManage/publicCss/index.css'
-import ClientAcceptance from '@/views/Platform/presentation/ClientAcceptance.vue'
-import Acceptance from '@/views/Platform/presentation/Acceptance.vue'
-import ResultPageyL from '@/views/Platform/presentation/ResultPageyL.vue'
-import { projectTestReportSendmail } from '@/api/ResultPage'
-import html2canvas from 'html2canvas'
-import clientF from '@/assets/clientF.png'
-import clientK from '@/assets/clientK.png'
-import searchTeam from '@/components/select/searchTeam'
-
-export default {
-  components: {
-    ClientAcceptance,
-    Acceptance,
-    ResultPageyL,
-    searchTeam
-  },
-  data() {
-    return {
-      dialogDaliy: false,
-      Acceptance1: false,
-      ClientAcceptance1: false,
-      showTow: false,
-      send: false,
-      showThree: false,
-      Client: false,
-      clienData: {},
-      showOne: true,
-      radio: '1',
-      newNum: '',
-      form: {},
-      report: {},
-      active: 1,
-      client_task: [],
-      src: clientF,
-      src1: clientK,
-      keys: ''
-    }
-  },
-  methods: {
-    init(index, newData) {
-      console.log(newData, '准出dialog')
-      this.dialogDaliy = true
-      const url = location.href // 获取url中"?"符后的字串
-      const arr = url.split('=')
-      switch (index) {
-        case 1: // 新建
-          this.client_task = [Number(arr[1])]
-          this.showOne = true
-          this.showThree = false
-          this.showTow = false
-          this.active = 1
-          this.radio = '1'
-          break
-        case 2: // 编辑
-          this.clienData = newData
-          this.showOne = false
-          this.showThree = false
-          this.showTow = true
-          this.active = 2
-          this.newNum = 2
-          if (newData.type === 1) {
-            this.radio = '1'
-            this.$nextTick(() => {
-              this.ClientAcceptance1 = true
-              this.Acceptance1 = false
-            })
-          }
-          if (newData.type === 2) {
-            this.radio = '2'
-            this.$nextTick(() => {
-              this.ClientAcceptance1 = false
-              this.Acceptance1 = true
-            })
-          }
-          break
-        case 3: // 详情
-          this.clienData = newData
-          this.showOne = false
-          this.showThree = true
-          this.form = {}
-          this.showTow = false
-          this.report = newData
-          this.active = 3
-          break
-        case 7: // 新建
-          this.client_task = newData
-          this.clienData.taskIds = newData
-          this.showOne = true
-          this.showThree = false
-          this.showTow = false
-          this.active = 1
-          this.radio = '1'
-          break
-      }
-    },
-    handleClose() {
-      this.dialogDaliy = false
-      this.radio = '1'
-      this.showOne = false
-      this.showThree = false
-      this.showTow = false
-    },
-    handleClose1() {
-      this.showOne = true
-      this.showTow = false
-      this.active = 1
-    },
-    created_out() {
-      if (this.radio === '1') {
-        this.$refs.ClientAcceptance.parentHandleclick(this.newNum, this.client_task, this.keys)
-      }
-      if (this.radio === '2') {
-        this.$refs.Acceptance.parentHandleclick(this.newNum, this.client_task, this.keys)
-      }
-    },
-    QuasiReport(e) {
-      this.report = e
-      this.keys = e.id
-      this.active = 3
-      this.showThree = true
-      this.form = {}
-      this.showTow = false
-    },
-    gou_out() {
-      this.showOne = false
-      this.showThree = false
-      this.showTow = true
-      this.active = 2
-      this.newNum = 2
-      if (this.clienData.type === 1) {
-        this.radio = '1'
-        this.$nextTick(() => {
-          this.ClientAcceptance1 = true
-          this.Acceptance1 = false
-        })
-      }
-      if (this.clienData.type === 2) {
-        this.radio = '2'
-        this.$nextTick(() => {
-          this.ClientAcceptance1 = false
-          this.Acceptance1 = true
-        })
-      }
-    },
-    NextStep() {
-      this.active = 2
-      this.newNum = 1
-      switch (Number(this.radio)) {
-        case 1:
-          this.clienData = {}
-          this.clienData.taskIds = this.client_task
-          this.showOne = false
-          this.showTow = true
-          this.showThree = false
-          this.ClientAcceptance1 = true
-          this.Acceptance1 = false
-          break
-        case 2:
-          this.clienData = {}
-          this.clienData.taskIds = this.client_task
-          this.showOne = false
-          this.showTow = true
-          this.showThree = false
-          this.ClientAcceptance1 = false
-          this.Acceptance1 = true
-          break
-        case 3:
-          this.$message({ message: '请选择要创建的‘模版’', type: 'error', duration: 1000, offset: 150 })
-          break
-      }
-    },
-    sendReport(e) {
-      if (e.name !== undefined) {
-        const ele = this.report
-        this.send = true
-        const targetDom = document.getElementById('resumeId1')
-        const copyDom = targetDom.cloneNode(true)
-        document.querySelector('body').appendChild(copyDom)
-        setTimeout(() => {
-          html2canvas(document.getElementsByClassName('reportContent')[1], { useCORS: true }).then(canvas => {
-            const imgData = canvas.toDataURL('image/png')
-            const sendImgData = imgData.substring(imgData.indexOf(',') + 1)
-            const postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e.name ? e.name.join(',') : null, 'copyTo': e.names ? e.names.join(',') : null }
-            projectTestReportSendmail(postData).then(res => {
-              res.code === 200 ? this.$message.success('报告发送中,请稍后进行邮件查收!') : this.$message.error('发送测试日报失败,请联系管理员!')
-              this.handleClose()
-              this.send = false
-              document.querySelector('body').removeChild(copyDom)
-            })
-          })
-        }, 500)
-      } else {
-        this.$message({ message: '请填写邮箱', type: 'error', offset: 150 })
-      }
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-._radio {
-  margin: 3% 0;
-  color: #333B4A;
-  font-size: 16pt
-}
-/* 全局dialog上下左右剧中 */
-.el-dialog{
-  display: flex;
-  flex-direction: column;
-  margin:0 !important;
-  position:absolute;
-  top:50%;
-  left:50%;
-  transform:translate(-50%,-50%);
-}
-.el-dialog .el-dialog__body{
-  flex:1;
-  overflow: auto;
-}
-.descr{
-  display: flex;
-  justify-content: center;
-}
-</style>

+ 0 - 324
src/views/Platform/presentation/Templates/TestReport.vue

@@ -1,324 +0,0 @@
-<template>
-  <el-dialog :visible.sync="dialogVisible1" width="70vw" class="public_task" title="提测报告" :close-on-click-modal="false" :before-close="handleClose1">
-    <div class="blueStripe" />
-    <div style="margin: 2% 0%; font-size: 16pt; color: #333B4A;">
-      <el-steps :active="active" align-center finish-status="success">
-        <el-step style="font-size: 16pt; color: #333B4A;" title="选择模版" />
-        <el-step title="填写报告" />
-        <el-step style="font-size: 16pt; color: #333B4A;" title="发送报告" />
-      </el-steps>
-    </div>
-    <div v-if="showOne" style="margin: 0 4% 2%;">
-      <div style="margin: 0% 14%;  height: 435px;" class="Layout">
-        <div style="margin-right:2%;">
-          <el-radio v-model="radio" class="_radio" label="1">客户端模版</el-radio><br>
-          <el-image style="display: inline-block; width: 80%;" :src="src1" />
-        </div>
-        <div style="margin-left:2%;">
-          <el-radio v-model="radio" class="_radio" label="2">服务端模版</el-radio><br>
-          <el-image style="display: inline-block; width: 77%;" :src="src" />
-        </div>
-      </div>
-      <div align="center">
-        <el-button size="small" type="primary" @click="NextStep()">下一步</el-button>
-      </div>
-    </div>
-    <div v-if="showTow" style="margin: 0 5%;">
-      <div class="descr" style=" margin-bottom: 2%; height: 440px; overflow:scroll; overflow-x: hidden">
-        <Present v-if="Present1" ref="Present" :clien-data="clienData" @fatherMethod="fatherMethod" />
-        <presentation v-if="presentation1" ref="presentationRef" :clien-data="clienData" @fatherMethod="fatherMethod" />
-      </div>
-      <div align="center">
-        <el-button size="small" type="primary" @click="PreviousStep()">上一步</el-button>
-        <el-button size="small" type="primary" @click="created_out()">保存,下一步</el-button>
-      </div>
-    </div>
-    <div v-if="showThree">
-      <div style="margin: 2% 5%; font-size: 16pt; color: #333B4A;">
-        <div style="margin: 1% 2%;font-size:18px; font-family:PingFangSC-Medium,PingFang SC; font-weight:500; color:rgba(51,59,74,1); line-height:29px;">
-          邮件列表
-        </div>
-        <div style="margin: 1% 2% 3%;">
-          <div class="Layout" style="margin-bottom: 10px;"><div class="div1">收件人</div><searchTeam :value.sync="form.name" :clearable="true" :multiple="true" style="width:100%" /></div>
-          <div class="Layout"><div class="div1">抄送</div><searchTeam :value.sync="form.names" :clearable="true" :multiple="true" style="width:100%" /></div>
-        </div>
-        <div style="margin: 0 2%; font-size:18px; font-family:PingFangSC-Medium,PingFang SC; font-weight:500; color:rgba(51,59,74,1); line-height:29px;">
-          报告预览
-        </div>
-        <div class="descr" style=" margin-bottom: 2%; height:310px; overflow:scroll; overflow-x: hidden">
-          <acceptthe id="resumeId" ref="acceptthe" :message="preview" />
-        </div>
-      </div>
-      <div align="center">
-        <el-button size="small" type="primary" @click="gou_out()">上一步</el-button>
-        <el-button size="small" :disabled="send" :loading="send" type="primary" @click="sendReport(form)">发送</el-button>
-      </div>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-import '@/views/projectManage/publicCss/index.css'
-import '@/styles/PublicStyle/index.scss'
-import Present from '@/views/Platform/presentation/PresentReport'
-import acceptthe from '@/views/Platform/presentation/acceptTheReport'
-import presentation from '@/views/Platform/presentation/presentationReport.vue'
-import { launchTestSendmail } from '@/api/ResultPage'
-import html2canvas from 'html2canvas'
-import testF from '@/assets/testF.png'
-import testK from '@/assets/testK.png'
-import searchTeam from '@/components/select/searchTeam'
-
-export default {
-  components: {
-    Present,
-    acceptthe,
-    presentation,
-    searchTeam
-  },
-  data() {
-    return {
-      form: {},
-      Present1: false,
-      presentation1: false,
-      showOne: true,
-      showTow: false,
-      showThree: false,
-      showClient: false,
-      showClientYL: false,
-      active: 1,
-      radio: '1',
-      clienData: {},
-      newNum: '',
-      present_task: [],
-      send: false,
-      preview: '',
-      src: testF,
-      src1: testK,
-      dialogVisible1: false,
-      clien: ''
-    }
-  },
-  methods: {
-    init(index, newData) {
-      console.log(newData, '提测tan窗')
-      this.dialogVisible1 = true
-      const url = location.href // 获取url中"?"符后的字串
-      const arr = url.split('=')
-      switch (index) {
-        case 1:
-          this.present_task = [Number(arr[1])]
-          this.showOne = true
-          this.showTow = false
-          this.showThree = false
-          this.active = 1
-          break
-        case 2:
-          this.clienData = newData
-          this.showOne = false
-          this.showThree = false
-          this.showTow = true
-          this.active = 2
-          this.newNum = 2
-          if (newData.type === 1) {
-            this.radio = '1'
-            this.Present1 = true
-            this.presentation1 = false
-          }
-          if (newData.type === 2) {
-            this.radio = '2'
-            this.Present1 = false
-            this.presentation1 = true
-          }
-          break
-        case 3:
-          this.clienData = newData
-          this.showOne = false
-          this.showTow = false
-          this.showThree = true
-          this.form = {}
-          this.preview = newData
-          this.active = 3
-          break
-        case 4:
-          this.clienData = newData
-          this.present_task = newData.taskIds
-          this.showOne = false
-          this.showThree = false
-          this.showTow = true
-          this.active = 2
-          this.newNum = 1
-          if (newData.type === 1) {
-            this.radio = '1'
-            this.Present1 = true
-            this.presentation1 = false
-          }
-          if (newData.type === 2) {
-            this.radio = '2'
-            this.Present1 = false
-            this.presentation1 = true
-          }
-          break
-        case 7:
-          this.present_task = newData
-          this.clienData.taskIds = newData
-          this.showOne = true
-          this.showTow = false
-          this.showThree = false
-          this.active = 1
-          break
-      }
-    },
-    PreviousStep() {
-      this.showTow = false
-      this.showOne = true
-      this.active = 1
-    },
-    gou_out() {
-      this.$emit('getRouterData')
-      this.clienData = this.preview
-      this.showOne = false
-      this.showThree = false
-      this.showTow = true
-      this.active = 2
-      this.newNum = 2
-      if (this.clienData.type === 1) {
-        this.radio = '1'
-        this.Present1 = true
-        this.presentation1 = false
-      }
-      if (this.clienData.type === 2) {
-        this.radio = '2'
-        this.Present1 = false
-        this.presentation1 = true
-      }
-    },
-    created_out() {
-      if (this.radio === '2') { // 服务端
-        this.$refs.presentationRef.parentHandleclick(this.newNum, this.present_task, this.clien)
-      }
-      if (this.radio === '1') { // 客户端
-        this.$refs.Present.parentHandleclick(this.newNum, this.present_task, this.clien)
-      }
-    },
-    NextStep() {
-      switch (Number(this.radio)) {
-        case 1:
-          this.clienData = {}
-          this.showOne = false
-          this.showTow = true
-          this.Present1 = true
-          this.presentation1 = false
-          this.active = 2
-          this.newNum = 1
-          break
-        case 2:
-          this.clienData = {}
-          this.showOne = false
-          this.showTow = true
-          this.Present1 = false
-          this.presentation1 = true
-          this.active = 2
-          this.newNum = 1
-          break
-        case 3:
-          this.$message({ message: '请选择要创建的‘模版’', type: 'error', duration: 1000, offset: 150 })
-          break
-      }
-    },
-    handleClose1() {
-      this.dialogVisible1 = false
-      this.radio = '1'
-      this.showOne = false
-      this.showThree = false
-      this.showTow = false
-    },
-    fatherMethod(e) {
-      console.log(e, '新建返回')
-      this.clien = e.id
-      this.preview = e
-      this.showThree = true
-      this.form = {}
-      this.showTow = false
-      this.active = 3
-    },
-    sendReport(e) {
-      if (e.name !== undefined) {
-        this.send = true
-        const ele = this.preview
-        const targetDom = document.getElementById('resumeId')
-        const copyDom = targetDom.cloneNode(true)
-        document.querySelector('body').appendChild(copyDom)
-        setTimeout(() => {
-          html2canvas(document.getElementsByClassName('reportContent')[1], { useCORS: true }).then(canvas => {
-            const imgData = canvas.toDataURL('image/png')
-            const sendImgData = imgData.substring(imgData.indexOf(',') + 1)
-            const postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e.name ? e.name.join(',') : null, 'copyTo': e.names ? e.names.join(',') : null }
-            launchTestSendmail(postData).then(res => {
-              res.code === 200 ? this.$message.success('报告发送中,请稍后进行邮件查收!') : this.$message.error('发送测试日报失败,请联系管理员!')
-              this.handleClose1()
-              this.send = false
-              document.querySelector('body').removeChild(copyDom)
-            })
-          })
-        }, 500)
-      } else {
-        this.$message({ message: '请填写邮箱', type: 'error', offset: 150 })
-      }
-    }
-  }
-}
-</script>
-
-<style>
-/* 全局dialog上下左右剧中 */
-.el-dialog{
-  display: flex;
-  flex-direction: column;
-  margin:0 !important;
-  position:absolute;
-  top:50%;
-  left:50%;
-  transform:translate(-50%,-50%);
-}
-.el-dialog .el-dialog__body{
-  flex:1;
-  overflow: auto;
-}
-.descr{
-  display: flex;
-  justify-content: center;
-}
-</style>
-
-<style lang="scss" scoped>
-._radio {
-  margin: 3% 0;
-  color: #333B4A;
-  font-size: 16pt
-}
-.flex_start {
-  display: flex;
-  align-items: center;
-  justify-content: flex-start;
-}
-.Layout {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-.div1 {
-  width: 60px;
-  font-size: 14px;
-  font-family: MicrosoftYaHei;
-  color: rgba(51,51,51,1);
-  line-height: 19px;
-}
-.descr{
-  display: flex;
-  justify-content: center;
-}
-.descr::-webkit-scrollbar{
-  width:0;
-}
-</style>

+ 0 - 355
src/views/Platform/presentation/presentationReport.vue

@@ -1,355 +0,0 @@
-<template>
-  <!-- 提测报告,新增服务端报告 -->
-  <div class="eleStyle">
-    <el-form ref="fromDev" :model="fromDev" :rules="serviceDataRules" style="margin:2% 0%;">
-      <div class="double">
-        <el-form-item label="标题" prop="name">
-          <el-input v-model="fromDev.name" size="small" style="width:20vw;" placeholder="报告标题(端-版本-需求提测报告)" />
-        </el-form-item>
-        <el-form-item label="by" prop="submitter">
-          <el-input v-model="fromDev.submitter" size="small" placeholder="who" />
-        </el-form-item>
-      </div>
-
-      <div class="backStyle">一. 提测详情</div>
-
-      <div class="double" style="white-space: nowrap;">
-        <el-form-item label="* 是否延期" style="margin-left: 15px;">
-          <el-button :type="lateStatusBtn" size="small" style="margin: 0 10px;" class="tag" @click="lateStatusChange(2)"> 是 </el-button>
-          <el-button :type="lateStatusBtn1" size="small" class="tag" @click="lateStatusChange(1)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showDelay" label="延期原因" prop="lateReason"><el-input v-model="fromDev.lateReason" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <div class="double" style="white-space: nowrap;">
-        <el-form-item label="* 涉及安全项">
-          <el-button :type="getInfoBtn" style="margin: 0 10px;" size="small" class="tag" @click="showStatusData(2)"> 是 </el-button>
-          <el-button :type="getInfoBtn1" style="margin-left: 14px;" size="small" class="tag" @click="showStatusData(1)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showData" label="完成结果" prop="safeInfo"><el-input v-model="fromDev.safeInfo" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <div class="CodeReview" style="display: flex; justify-content: space-between; white-space: nowrap;">
-        <el-form-item label="* CodeReview">
-          <el-button :type="CodeReview" style="margin: 0 9px 0 12px;" size="small" class="tag" @click="showCodeReviews(1)"> 是 </el-button>
-          <el-button :type="CodeReview1" class="tag" size="small" @click="showCodeReviews(0)"> 否 </el-button>
-        </el-form-item>
-        <el-form-item v-if="showCodeReview" class="double" label="执行人" prop="crBy"><el-input v-model="fromDev.crBy" size="small" style="width: 25vw;" /></el-form-item>
-      </div>
-
-      <el-form-item label="SDL链接 : "><el-link href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" type="primary" target="_blank"> 普惠SDL准入标准</el-link></el-form-item>
-
-      <div class="double">
-        <el-form-item label="是否跟版" prop="isEdition"><el-input v-model="fromDev.isEdition" size="small" style="width:15vw;" placeholder="请填写" /></el-form-item>
-        <el-form-item label="开发时间" prop="devTimeStart">
-          <el-date-picker v-model="fromDev.devTimeStart" value-format="yyyy-MM-dd" type="date" size="small" style="width:12.5vw; margin-right:2%;" placeholder="选择日期" />
-          <el-date-picker v-model="fromDev.devTimeEnd" value-format="yyyy-MM-dd" type="date" size="small" style="width:12.5vw;" placeholder="选择日期" />
-        </el-form-item>
-      </div>
-
-      <div class="double">
-        <el-form-item label=" 优 先 级" prop="priority">
-          <el-select v-model="fromDev.priority" size="small" style="width:15vw;" placeholder="请选择优先级">
-            <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.name" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="计划提测时间" prop="planLaunchTime">
-          <el-date-picker v-model="fromDev.planLaunchTime" value-format="yyyy-MM-dd" size="small" type="date" style="width:25vw;" placeholder="选择日期" />
-        </el-form-item>
-      </div>
-
-      <div class="double">
-        <el-form-item label=" prd地址 " prop="prdUrl"><el-input v-model="fromDev.prdUrl" size="small" style="width:15vw;" placeholder="请提供wiki链接" /></el-form-item>
-        <el-form-item label="实际提测时间" prop="launchTime">
-          <el-date-picker v-model="fromDev.launchTime" value-format="yyyy-MM-dd" type="date" size="small" style="width:25vw;" placeholder="选择日期" />
-        </el-form-item>
-      </div>
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="设计方案" prop="devUrl"><el-input v-model="fromDev.devUrl" size="small" style="width:85vw;" placeholder="请提供wiki链接,包含接口定义,数据库改动,依赖关系" /></el-form-item>
-        </el-col>
-      </div>
-
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="自测结果" prop="selfTestInfo"><el-input v-model="fromDev.selfTestInfo" size="small" style="width:85vw;" placeholder="请提供wiki链接(提测前QA需提供准人case)" /></el-form-item>
-        </el-col>
-      </div>
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="测试建议" prop="testSuggest"><el-input v-model="fromDev.testSuggest" size="small" style="width:83.5vw;" type="textarea" :rows="5" placeholder="改动点影响分析:是否影响老功能,那些老功能需要回归接口是否影响上下游系统,有没有通知相关人性能,安全" /></el-form-item>
-        </el-col>
-      </div>
-      <el-form-item label="提测模块" style="margin: 2px 0;" />
-
-      <normal-area id="presens-children-moduleInfo" :value.sync="clienEdit.moduleInfo" :height="200" />
-
-      <div class="backStyle">二. 联调详情</div>
-
-      <normal-area id="presens-children-joinTest" :value.sync="clienEdit.joinTest" :height="200" />
-
-      <div class="backStyle">三. 其他</div>
-      <div class="double">
-        <el-col :span="24">
-          <el-form-item label="新增配置"><el-input v-model="fromDev.configInfo" style="width:85vw;" size="small" type="textarea" :rows="2" placeholder="全局变量、kdiamond配置、降级点、新增topic等,disconf配置,apollo配置说明用途" /></el-form-item>
-        </el-col>
-      </div>
-      <div class="double" align="right">
-        <el-col :span="24">
-          <el-form-item label="其他"><el-input v-model="fromDev.others" style="padding-left: 25px; text-align: right; width: 85vw;" size="small" type="textarea" :rows="5" placeholder="请输入其他内容…" /></el-form-item>
-        </el-col>
-      </div>
-    </el-form>
-  </div>
-</template>
-
-<script>
-const _ = require('lodash')
-import moment from 'moment'
-import { launchTestUpdate, launchTestCreate } from '@/api/InterfaceReport'
-import normalArea from '@/components/input/normalArea'
-
-export default {
-  name: 'PresentationReport',
-  components: {
-    normalArea
-  },
-  props: {
-    clienData: {
-      type: Object,
-      required: true
-    }
-  },
-  data() {
-    return {
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
-      serviceDataRules: {
-        name: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
-        submitter: [{ required: true, message: 'by不能为空', trigger: 'change' }],
-        devTimeStart: [{ required: true, message: '开发时间不能为空', trigger: 'change' }],
-        // safeInfo: [{ required: false, message: '涉及安全项不能为空', trigger: 'change' }],
-        lateStatus: [{ required: false, message: '是否延期不能为空', trigger: 'change' }],
-        lateReason: [{ required: true, message: '延期原因不能为空', trigger: 'change' }],
-        planLaunchTime: [{ required: true, message: '计划提测时间不能为空', trigger: 'change' }],
-        launchTime: [{ required: true, message: '实际提测时间不能为空', trigger: 'change' }],
-        priority: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
-        prdUrl: [{ required: true, message: 'prd地址不能为空', trigger: 'change' }],
-        devUrl: [{ required: true, message: '设计方案不能为空', trigger: 'change' }],
-        selfTestInfo: [{ required: true, message: '自测结果不能为空', trigger: 'change' }],
-        testSuggest: [{ required: true, message: '测试建议不能为空', trigger: 'change' }],
-        isEdition: [{ required: true, message: '是否跟版不能为空', trigger: 'change' }],
-        getInfo: [{ required: true, message: '涉及安全项不能为空', trigger: 'change' }],
-        safeInfo: [{ required: true, message: '完成结果不能为空', trigger: 'change' }],
-        crBy: [{ required: true, message: '执行人不能为空', trigger: 'change' }]
-      },
-      objData: '',
-      lateStatusBtn: 'info',
-      lateStatusBtn1: 'success',
-      getInfoBtn: 'info',
-      getInfoBtn1: 'success',
-      CodeReview: 'info',
-      CodeReview1: 'danger',
-      userData: '',
-      showDelay: false,
-      labelWidth: '60px',
-      lateStatus: 1,
-      getInfo: '',
-      fromDev: {},
-      clienEdit: {
-        moduleInfo: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="30%"><col width="30%"><col width="30%"></colgroup><thead><tr><th>提测模块</th><th>提测分支</th><th>对应RD</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td></tr></tbody></table>`,
-        joinTest: `<p></p><table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="30%"><col width="30%"><col width="30%"></colgroup><thead><tr><th>联调模块</th><th>联调RD</th><th>联调结果</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td></tr></tbody></table>`
-      },
-      ids: [],
-      showData: false,
-      showCodeReview: false,
-      projectIdCode: ''
-    }
-  },
-  created() {
-    this.getRouterData()
-  },
-  methods: {
-    getRouterData() {
-      console.log(this.clienData, '提测服务端')
-      this.fromDev = this.clienData
-      if (this.fromDev.id) {
-        if (this.fromDev.lateReason !== '') {
-          this.lateStatusBtn1 = 'info'
-          this.lateStatusBtn = 'danger'
-          this.lateStatus = 2
-          this.showDelay = true
-        } else {
-          this.lateStatusBtn1 = 'success'
-          this.lateStatusBtn = 'info'
-          this.lateStatus = 1
-          this.showDelay = false
-        }
-        if (this.fromDev.safeInfo !== '') {
-          this.getInfoBtn1 = 'info'
-          this.getInfoBtn = 'danger'
-          this.lateStatus = 2
-          this.showData = true
-        } else {
-          this.getInfoBtn1 = 'success'
-          this.getInfoBtn = 'info'
-          this.lateStatus = 1
-          this.showData = false
-          this.$set(this.fromDev, 'safeInfo', '')
-        }
-        if (this.fromDev.crBy !== '' && this.fromDev.crBy !== null) { // CodeReview
-          this.CodeReview = 'success'
-          this.CodeReview1 = 'info'
-          this.fromDev.cr = 1
-          this.showCodeReview = true
-        } else {
-          this.CodeReview = 'info'
-          this.CodeReview1 = 'danger'
-          this.fromDev.cr = 0
-          this.showCodeReview = false
-          this.$set(this.fromDev, 'crBy', '')
-        }
-        this.$nextTick(() => {
-          this.clienEdit.moduleInfo = this.fromDev.moduleInfo || this.clienEdit.moduleInfo
-          this.clienEdit.joinTest = this.fromDev.joinTest || this.clienEdit.joinTest
-        })
-      }
-    },
-    getQueryData(ele) {
-      this.$refs['fromDev'].validate((valid) => {
-        if (valid) {
-          const params = _.cloneDeep(this.fromDev)
-          params.moduleInfo = this.clienEdit.moduleInfo
-          params.joinTest = this.clienEdit.joinTest
-          params.lateStatus = this.lateStatus
-          params.devTimeStart = moment(params.devTimeStart).format('YYYY.MM.DD')
-          params.devTimeEnd = moment(params.devTimeEnd).format('YYYY.MM.DD')
-          params.planLaunchTime = moment(params.planLaunchTime).format('YYYY.MM.DD')
-          params.launchTime = moment(params.launchTime).format('YYYY.MM.DD')
-          params.id === undefined ? params.id = this.clien : ''
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { launchTestInfo: params, user: this.userData }
-          launchTestUpdate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message({ type: 'success', message: '更新成功' })
-              this.$emit('fatherMethod', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-    parentHandleclick(e, task, id) { // 判断创建还是编辑
-      if (e === 1) {
-        this.ids = task
-        this.getCreateData(this.fromDev)
-      } else {
-        this.clien = id
-        this.getQueryData(this.fromDev)
-      }
-    },
-    getCreateData(ele) {
-      this.$refs['fromDev'].validate((valid) => {
-        if (valid) {
-          this.fromDev = ele
-          typeof (this.editorContent) === 'string' ? this.fromDev.joinTest = this.editorContent : ''
-          this.fromDev.moduleInfo = this.clienEdit.moduleInfo
-          this.fromDev.joinTest = this.clienEdit.joinTest
-          this.fromDev.lateReason = ele.lateReason
-          this.fromDev.lateStatus = this.lateStatus
-          this.fromDev.bizId = Number(localStorage.getItem('bizId'))
-          this.fromDev.taskIds = this.ids
-          this.fromDev.type = 2
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { launchTestInfo: this.fromDev, user: this.userData }
-          launchTestCreate(this.objData).then(res => {
-            if (res.code === 200) {
-              this.$message.success(res.msg)
-              this.$emit('fatherMethod', res.data)
-            }
-          })
-        } else {
-          return false
-        }
-      })
-    },
-    lateStatusChange(e) {
-      if (e === 1) {
-        this.lateStatusBtn1 = 'success'
-        this.lateStatusBtn = 'info'
-        this.lateStatus = 1
-        this.showDelay = false
-        this.$set(this.fromDev, 'lateReason', '')
-      } else {
-        this.lateStatusBtn1 = 'info'
-        this.lateStatusBtn = 'danger'
-        this.lateStatus = 2
-        this.showDelay = true
-      }
-    },
-    showStatusData(e) {
-      if (e === 1) {
-        this.getInfoBtn1 = 'success'
-        this.getInfoBtn = 'info'
-        this.showData = false
-        this.$set(this.fromDev, 'safeInfo', '')
-      } else {
-        this.getInfoBtn1 = 'info'
-        this.getInfoBtn = 'danger'
-        this.showData = true
-      }
-    },
-
-    showCodeReviews(e) { // CodeReview
-      if (e === 1) {
-        this.CodeReview = 'success'
-        this.CodeReview1 = 'info'
-        this.fromDev.cr = 1
-        this.showCodeReview = true
-      }
-      if (e === 0) {
-        this.CodeReview1 = 'danger'
-        this.CodeReview = 'info'
-        this.fromDev.cr = 0
-        this.showCodeReview = false
-      }
-      this.$set(this.fromDev, 'crBy', '')
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.eleStyle {
-    width: 100%;
-    height:100%;
-    display: inline-block;
-  }
-  .tag {
-     width:60px;
-     text-align: center;
-     cursor:pointer
-  }
-  .backStyle {
-    font-size: 17px;
-    font-weight: bold;
-    border-radius: 4px;
-    margin: 1% 0;
-  }
-  .CodeReview {
-    /deep/ .el-form-item__label {
-      width: 106px;
-    }
-  }
-</style>
-<style lang="stylus" scoped>
-  .double
-    display flex
-    justify-content space-between
-  .double >>> .el-form-item__content
-    display flex
-  .double >>> .el-form-item__label
-    margin-right 14.19px
-</style>

+ 11 - 0
src/views/mock/httprule.vue

@@ -343,6 +343,17 @@ export default {
       bodyObj: null // body配置对象
     }
   },
+  watch: {
+    dialogFormVisible: {
+      handler(newV) {
+        if (!newV) {
+          this.headerList = []
+          this.paramsList = []
+          this.bodyObj = null
+        }
+      }
+    }
+  },
   created() {
     this.getList()
     this.getFormatJsonStrFromStringRule(this.jsonTit)

+ 1 - 1
src/views/projectManage/iteration/components/requiredTable.vue

@@ -160,7 +160,7 @@
         </template>
       </el-table-column>
       <el-table-column label="交付日期" min-width="200" align="center">
-        <template slot-scope="scope">{{ scope.row.optionsObject === null? '' :scope.row.optionsObject.endTime }}</template>
+        <template slot-scope="scope">{{ scope.row.optionsObject ? scope.row.optionsObject.endTime: '' }}</template>
       </el-table-column>
       <el-table-column label="任务数量" min-width="100" align="center">
         <template slot-scope="scope">{{ scope.row.taskCount }}</template>

+ 1 - 1
src/views/projectManage/projectList/components/scheduleList.vue

@@ -67,7 +67,7 @@
 
     </el-table>
     <div class="bottom-detail">
-      <el-row>交付日期:{{ scheduleDetail.options.endTime }}</el-row>
+      <el-row>交付日期:{{ scheduleDetail.endTime }}</el-row>
       <el-row>排期:{{ scheduleDetail.startTime | handlerDate }} ~ {{ scheduleDetail.endTime | handlerDate }}</el-row>
       <el-row v-if="scheduleDetail.preOnlineVersion && scheduleDetail.preOnlineVersion.length>0">
         <el-col :span="2">预计上线版本:</el-col>

+ 48 - 10
src/views/projectManage/projectList/components/taskList.vue

@@ -94,7 +94,7 @@
         <template slot-scope="scope">{{ scope.row.involveAppString || '无' }}</template>
       </el-table-column>
       <el-table-column label="交付日期" width="250" align="center" show-overflow-tooltip>
-        <template slot-scope="scope">{{ scope.row.options ? scope.row.options.endTime : '' }}</template>
+        <template slot-scope="scope">{{ scope.row.optionsObject ? scope.row.optionsObject.endTime : '' }}</template>
       </el-table-column>
       <el-table-column label="缺陷数量" width="250" align="center" show-overflow-tooltip>
         <template slot-scope="scope">{{ scope.row.bugCount }}</template>
@@ -275,23 +275,61 @@ export default {
       this.selectTaskList = this.curcentList
     },
     filtrateTest() { // 提测筛选
-      this.dialogTestReport = true
-      this.$nextTick(() => {
-        this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '开发中') {
+          res.push(item.id)
+        }
       })
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【开发中】,无法批量提测,,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogTestReport = true
+        this.$nextTick(() => {
+          this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
+
     filtrateAllow() { // 准出筛选
-      this.dialogClientReport = true
-      this.$nextTick(() => {
-        this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      console.log(data, '查看1')
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      console.log(res, '查看')
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量准出,,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogClientReport = true
+        this.$nextTick(() => {
+          this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
+
     filtrateDaily() { // 建立日报
-      this.dialogDailyReport = true
-      this.$nextTick(() => {
-        this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量建立测试日报,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogDailyReport = true
+        this.$nextTick(() => {
+          this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
+
     link_task(id) { // 跳转到任务详情页
       this.$router.push({ name: '任务详情', query: { id: id }})
     }

+ 1 - 1
src/views/projectManage/requirement/components/scheduleList.vue

@@ -41,7 +41,7 @@
 
     </el-table>
     <div class="bottom-detail">
-      <el-row>交付日期:{{ scheduleDetail.options.endTime }}</el-row>
+      <el-row>交付日期:{{ scheduleDetail.endTime }}</el-row>
       <el-row>排期:{{ scheduleDetail.startTime | handlerDate }} ~ {{ scheduleDetail.endTime | handlerDate }}</el-row>
       <el-row v-if="scheduleDetail.preOnlineVersion && scheduleDetail.preOnlineVersion.length>0">
         <el-col :span="2" style="width: 100px">预计上线版本:</el-col>

+ 54 - 11
src/views/projectManage/requirement/components/taskList.vue

@@ -95,7 +95,7 @@
         <template slot-scope="scope">{{ scope.row.involveAppString || '无' }}</template>
       </el-table-column>
       <el-table-column label="交付日期" width="250" align="center" show-overflow-tooltip>
-        <template slot-scope="scope">{{ scope.row.options ? scope.row.options.endTime : '' }}</template>
+        <template slot-scope="scope">{{ scope.row.optionsObject ? scope.row.optionsObject.endTime : '' }}</template>
       </el-table-column>
       <el-table-column label="缺陷数量" width="250" align="center" show-overflow-tooltip>
         <template slot-scope="scope">{{ scope.row.bugCount }}</template>
@@ -109,7 +109,7 @@
     <TestReport v-if="dialogTestReport" ref="TestReport" />
     <DailyReport v-if="dialogDailyReport" ref="DailyReport" />
     <ReleaseReport v-if="dialogClientReport" ref="ClientReport" />
-    <task-dialog v-if="showTaskDialog" :show.sync="showTaskDialog" :task-id="taskId.id" :status-name="taskId.statusString" @getList="get_allTask" />
+    <task-dialog v-if="showTaskDialog" :show.sync="showTaskDialog" :task-id="taskId.id" :status-name="taskId.statusString" @getList="get_allTask" @changeStatusAll="changeStatusAll" />
     <!-- 批量排期 -->
     <modify-schedule
       v-if="visibleSchedule"
@@ -220,10 +220,14 @@ export default {
         const taskInfoDO = e
         const resTask = await taskUpdate({ taskInfoDO, user })
         if (resTask.code === 200) {
+          this.$emit('update')
           this.$message({ message: '修改成功', type: 'success', offset: 150 })
         }
       }
     },
+    changeStatusAll() {
+      this.$emit('update')
+    },
     async confirmStatus() { // 确认更改状态
       const user = {
         name: localStorage.getItem('username'),
@@ -279,22 +283,61 @@ export default {
       this.selectTaskList = this.curcentList
     },
     filtrateTest() { // 提测筛选
-      this.dialogTestReport = true
-      this.$nextTick(() => {
-        this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      console.log(data, '查看1')
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '开发中') {
+          res.push(item.id)
+        }
       })
+      console.log(res, '查看')
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【开发中】,无法批量提测,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogTestReport = true
+        this.$nextTick(() => {
+          this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
     filtrateAllow() { // 准出筛选
-      this.dialogClientReport = true
-      this.$nextTick(() => {
-        this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      console.log(data, '查看1')
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      console.log(res, '查看')
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量准出,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogClientReport = true
+        this.$nextTick(() => {
+          this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
     filtrateDaily() { // 建立日报
-      this.dialogDailyReport = true
-      this.$nextTick(() => {
-        this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      console.log(data, '查看1')
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      console.log(res, '查看')
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量建立测试日报,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogDailyReport = true
+        this.$nextTick(() => {
+          this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
     link_task(id) { // 跳转到任务详情页
       this.$router.push({ name: '任务详情', query: { id: id }})

+ 10 - 2
src/views/projectManage/requirement/requirementDetail.vue

@@ -241,7 +241,7 @@
       <!-- 任务 -->
       <el-container v-if="activeName === '2'" class="is-vertical">
         <section class="main-section contain">
-          <tasks-list ref="tasks-list" />
+          <tasks-list ref="tasks-list" @update="getRequirementById" />
         </section>
       </el-container>
       <!-- 任务 -->
@@ -464,7 +464,15 @@ export default {
       this.BackToTheLatest = true
     },
     changeSchedule() { // 修改锁定状态
-      this.scheduleVisble = true
+      if (this.isScheduleLocked === 1) {
+        if (this.form_query.pmMemberInfoResponse.idap === localStorage.getItem('username')) {
+          this.scheduleVisble = true
+        } else {
+          this.$message({ message: '没有权限,请联系PM执行解锁!', type: 'error', duration: 1000, offset: 150 })
+        }
+      } else {
+        this.scheduleVisble = true
+      }
     },
     // clickBackToTheLatest() {
     //   this.$refs.ScheduleEvent.rowDrop()

+ 4 - 4
src/views/projectManage/taskList/components/reportList.vue

@@ -192,7 +192,7 @@
     <!-- 弹框 -->
     <Test-report v-if="dialogTest" ref="TestReport" />
     <Daily-report v-if="dialogDaily" ref="DailyReport" />
-    <Client-report v-if="dialogClient" ref="ClientReport" />
+    <ReleaseReport v-if="dialogClient" ref="ClientReport" />
   </div>
 </template>
 <script>
@@ -202,16 +202,16 @@ import {
   launchTest,
   launchTestDelete
 } from '@/api/taskIndex' // ajax
-import TestReport from '@/views/Platform/presentation/Templates/TestReport' // 提测
+import TestReport from '@/views/reportManagement/components/TestingReport' // 提测
 import DailyReport from '@/views/reportManagement/components/DailyReport' // 日报
-import ClientReport from '@/views/Platform/presentation/Templates/ClientReport' // 准出
+import ReleaseReport from '@/views/reportManagement/components/ReleaseReport' // 准出
 import { dailyReportDelete, projectTestReportDelete } from '@/api/testPresentetion' // 日报
 import { launchTestUpdate } from '@/api/InterfaceReport'
 export default {
   components: {
     TestReport,
     DailyReport,
-    ClientReport
+    ReleaseReport
   },
   data() {
     return {

+ 1 - 1
src/views/projectManage/taskList/components/scheduleList.vue

@@ -72,7 +72,7 @@
 
     </el-table>
     <div class="bottom-detail">
-      <el-row>交付日期:{{ scheduleDetail.options ? scheduleDetail.options.endTime : '' }}</el-row>
+      <el-row>交付日期:{{ scheduleDetail.endTime }}</el-row>
       <el-row>排期:{{ scheduleDetail.startTime | handlerDate }} ~ {{ scheduleDetail.endTime | handlerDate }}</el-row>
       <el-row v-if="scheduleDetail.preOnlineVersion && scheduleDetail.preOnlineVersion.length>0">
         <el-col :span="2">预计上线版本:</el-col>

+ 1 - 0
src/views/projectManage/taskList/dialog/taskDialog.vue

@@ -111,6 +111,7 @@ export default {
         if (res.code === 200) {
           this.$emit('update:show', false)
           this.$emit('getList')
+          this.$emit('changeStatusAll')
           this.$message({ message: res.msg, type: 'success' })
         }
       })

+ 2 - 1
src/views/projectManage/taskList/taskIndex.vue

@@ -139,7 +139,7 @@
             <span style="font-size: 12px;color: rgba(167,174,188,1);">
               {{ scope.row.taskIdSting }}
               <span
-                v-if="scope.row.tagNotification !== null"
+                v-if="scope.row.tagNotification !== null && scope.row.status !== -2"
                 :class="{
                   'tagNotification': scope.row.tagType === 0,
                   'tagNotification1': scope.row.tagType === 1
@@ -147,6 +147,7 @@
               >
                 {{ scope.row.tagNotification }}
               </span>
+              <span v-if="scope.row.status === -2" class="tagNotification1"> {{ 'hold' }} </span>
             </span><br>
             <span class="stylus-hover" @click="link_task(scope.row.id)">{{ scope.row.name }}</span>
           </template>

+ 1 - 1
src/views/projectManage/version/components/scheduleList.vue

@@ -70,7 +70,7 @@
 
     </el-table>
     <div class="bottom-detail">
-      <el-row>交付日期:{{ scheduleDetail.options.endTime }}</el-row>
+      <el-row>交付日期:{{ scheduleDetail.endTime }}</el-row>
       <el-row>排期:{{ scheduleDetail.startTime | handlerDate }} ~ {{ scheduleDetail.endTime | handlerDate }}</el-row>
       <el-row v-if="scheduleDetail.preOnlineVersion && scheduleDetail.preOnlineVersion.length>0">
         <el-col :span="2">预计上线版本:</el-col>

+ 54 - 14
src/views/projectManage/version/components/taskList.vue

@@ -84,7 +84,7 @@
         <template slot-scope="scope">{{ scope.row.involveAppString || '无' }}</template>
       </el-table-column>
       <el-table-column label="交付日期" width="250" align="center" show-overflow-tooltip>
-        <template slot-scope="scope">{{ scope.row.options ? scope.row.options.endTime : '' }}</template>
+        <template slot-scope="scope">{{ scope.row.optionsObject ? scope.row.optionsObject.endTime : '' }}</template>
       </el-table-column>
       <el-table-column label="缺陷数量" width="250" align="center" show-overflow-tooltip>
         <template slot-scope="scope">{{ scope.row.bugCount }}</template>
@@ -109,7 +109,7 @@
     </div>
     <TestReport v-if="dialogTestReport" ref="TestReport" />
     <DailyReport v-if="dialogDailyReport" ref="DailyReport" />
-    <ClientReport v-if="dialogClientReport" ref="ClientReport" />
+    <ReleaseReport v-if="dialogClientReport" ref="ClientReport" />
     <taskDialog v-if="showTaskDialog" :show.sync="showTaskDialog" :task-id="taskId.id" :status-name="taskId.statusString" @getList="get_allTask" />
     <!-- 批量排期 -->
     <modify-schedule
@@ -124,9 +124,9 @@
 <script>
 import imgUrl from '@/assets/建立档案@2x.png'
 import '@/styles/PublicStyle/index.scss'
-import TestReport from '@/views/Platform/presentation/Templates/TestReport' // 提测
+import TestReport from '@/views/reportManagement/components/TestingReport' // 提测
 import DailyReport from '@/views/reportManagement/components/DailyReport' // 日报
-import ClientReport from '@/views/Platform/presentation/Templates/ClientReport' // 准出
+import ReleaseReport from '@/views/reportManagement/components/ReleaseReport' // 准出
 import { taskUpdate } from '@/api/projectViewDetails'
 import { configShowTaskEnum, configShowTaskStatusEnum } from '@/api/taskIndex'
 import scheduleList from './scheduleList'
@@ -137,7 +137,7 @@ export default {
   components: {
     TestReport,
     DailyReport,
-    ClientReport,
+    ReleaseReport,
     scheduleList,
     taskDialog,
     modifySchedule
@@ -246,6 +246,7 @@ export default {
         const taskInfoDO = e
         const resTask = await taskUpdate({ taskInfoDO, user })
         if (resTask.code === 200) {
+          this.get_allTask()
           this.$message({ message: '修改成功', type: 'success', offset: 150 })
         }
       }
@@ -301,22 +302,61 @@ export default {
       this.selectTaskList = this.curcentList
     },
     filtrateTest() { // 提测筛选
-      this.dialogTestReport = true
-      this.$nextTick(() => {
-        this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      console.log(data, '查看1')
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '开发中') {
+          res.push(item.id)
+        }
       })
+      console.log(res, '查看')
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【开发中】,无法批量提测,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogTestReport = true
+        this.$nextTick(() => {
+          this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
     filtrateAllow() { // 准出筛选
-      this.dialogClientReport = true
-      this.$nextTick(() => {
-        this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      console.log(data, '查看1')
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      console.log(res, '查看')
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量准出,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogClientReport = true
+        this.$nextTick(() => {
+          this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
     filtrateDaily() { // 建立日报
-      this.dialogDailyReport = true
-      this.$nextTick(() => {
-        this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      console.log(data, '查看1')
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      console.log(res, '查看')
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量建立测试日报,请检查!`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogDailyReport = true
+        this.$nextTick(() => {
+          this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
     link_task(id) { // 跳转到任务详情页
       this.$router.push({ name: '任务详情', query: { id: id }})

+ 3 - 0
src/views/reportManagement/testPresentation.vue

@@ -400,6 +400,9 @@ export default {
     },
 
     createPresentation(vel) {
+      console.log(vel, '查看报告')
+      const data = this.restaurants.filter(item => { return item.id === vel })
+      console.log(data, '查看报告2')
       if (vel !== '') {
         if (this.title === '测试日报') {
           this.dialogDaily = true

+ 46 - 10
src/views/workbench/team/components/taskList.vue

@@ -90,7 +90,7 @@
         <template slot-scope="scope">{{ scope.row.involveAppString || '无' }}</template>
       </el-table-column>
       <el-table-column label="交付日期" width="250" align="center" show-overflow-tooltip>
-        <template slot-scope="scope">{{ scope.row.options ? scope.row.options.endTime : '' }}</template>
+        <template slot-scope="scope">{{ scope.row.optionsObject ? scope.row.optionsObject.endTime : '' }}</template>
       </el-table-column>
       <el-table-column label="缺陷数量" width="250" align="center" show-overflow-tooltip>
         <template slot-scope="scope">{{ scope.row.bugCount }}</template>
@@ -332,23 +332,59 @@ export default {
       this.visibleSchedule = true
       this.selectTaskList = this.curcentList
     },
+
     filtrateTest() { // 提测筛选
-      this.dialogTestReport = true
-      this.$nextTick(() => {
-        this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '开发中') {
+          res.push(item.id)
+        }
       })
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【开发中】,无法批量提测,请检查!”`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogTestReport = true
+        this.$nextTick(() => {
+          this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
+
     filtrateAllow() { // 准出筛选
-      this.dialogClientReport = true
-      this.$nextTick(() => {
-        this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量准出,请检查!”`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogClientReport = true
+        this.$nextTick(() => {
+          this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
+
     filtrateDaily() { // 建立日报
-      this.dialogDailyReport = true
-      this.$nextTick(() => {
-        this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+      const data = this.curcentList.filter(item => { return item.id })
+      const res = []
+      data.map(item => {
+        if (item.statusString !== '测试中') {
+          res.push(item.id)
+        }
       })
+      if (res.length > 0) {
+        this.$message({ message: `任务${res}的状态不是【测试中】,无法批量建立测试日报,请检查!”`, type: 'warning', offset: 150 })
+      } else {
+        this.dialogDailyReport = true
+        this.$nextTick(() => {
+          this.$refs.DailyReport.init(7, this.curcentList.map(item => { return item.id }))
+        })
+      }
     },
     link_task(id) { // 跳转到任务详情页
       this.$router.push({ name: '任务详情', query: { id: id }})