qinzhipeng_v@didiglobal.com 4 ani în urmă
părinte
comite
3d5c65cab1

+ 8 - 0
src/api/requirement.js

@@ -346,3 +346,11 @@ export function unlockScheduleCheck(id) {
     method: 'get'
   })
 }
+
+// 更新需求预计上线版本
+export function requirementUpdatePreOnlineVersion(id) {
+  return request({
+    url: requestIp + `/requirement/updatePreOnlineVersion?requirementId=${id}`,
+    method: 'get'
+  })
+}

+ 8 - 0
src/api/taskIndex.js

@@ -283,3 +283,11 @@ export function listRequireAndTask(data) {
     data
   })
 }
+
+// 更新任务下预计上线版本
+export function taskUpdatePreOnlineVersion(id) {
+  return request({
+    url: TeamManagement + `/task/updatePreOnlineVersion?taskId=${id}`,
+    method: 'get'
+  })
+}

+ 3 - 0
src/components/select/searchTeam.vue

@@ -132,4 +132,7 @@ export default {
     overflow:hidden
   }
 }
+>>>.el-tag.el-tag--info {
+    margin: 2px 0 2px 15px !important;
+}
 </style>

+ 8 - 0
src/icons/svg/problem.svg

@@ -0,0 +1,8 @@
+
+<svg xmlns="http://www.w3.org/2000/svg" width="8.272" height="9.613" viewBox="0 0 8.272 9.613">
+  <g id="问题" transform="translate(-160.5 -103.5)">
+    <path id="路径_432" data-name="路径 432" d="M306.689,370.171h-3.354a.335.335,0,0,1,0-.671h3.354a.335.335,0,0,1,0,.671Zm-2.236,1.341h-1.118a.335.335,0,0,1,0-.671h1.118a.335.335,0,1,1,0,.671Z" transform="translate(-140.823 -262.87)" fill="#666"/>
+    <path id="路径_433" data-name="路径 433" d="M165.2,112.347h-3.692a1.008,1.008,0,0,1-1.006-1.006v-6.835a1.008,1.008,0,0,1,1.006-1.006h6.26a1.008,1.008,0,0,1,1.006,1.006v3.8a.335.335,0,1,1-.671,0v-3.8a.336.336,0,0,0-.335-.335h-6.26a.336.336,0,0,0-.335.335v6.835a.336.336,0,0,0,.335.335H165.2a.335.335,0,1,1,0,.671Z" fill="#666"/>
+    <path id="路径_434" data-name="路径 434" d="M646.23,572.333a.333.333,0,0,1-.335-.332,1.675,1.675,0,0,1,.688-1.32.518.518,0,0,0,.192-.539.538.538,0,0,0-.406-.388.589.589,0,0,0-.5.109.521.521,0,0,0-.2.406.335.335,0,1,1-.671,0,1.186,1.186,0,0,1,.449-.928,1.256,1.256,0,0,1,1.064-.241,1.2,1.2,0,0,1,.913.89,1.188,1.188,0,0,1-.433,1.224,1.014,1.014,0,0,0-.427.784A.34.34,0,0,1,646.23,572.333Zm0,.87a.335.335,0,0,1,0-.671h0a.335.335,0,1,1,0,.671Z" transform="translate(-478.799 -460.089)" fill="#666"/>
+  </g>
+</svg>

+ 7 - 0
src/icons/svg/problem1.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="8.272" height="9.613" viewBox="0 0 8.272 9.613">
+  <g id="问题" transform="translate(-160.5 -103.5)">
+    <path id="路径_432" data-name="路径 432" d="M306.689,370.171h-3.354a.335.335,0,0,1,0-.671h3.354a.335.335,0,0,1,0,.671Zm-2.236,1.341h-1.118a.335.335,0,0,1,0-.671h1.118a.335.335,0,1,1,0,.671Z" transform="translate(-140.823 -262.87)" fill="#409eff"/>
+    <path id="路径_433" data-name="路径 433" d="M165.2,112.347h-3.692a1.008,1.008,0,0,1-1.006-1.006v-6.835a1.008,1.008,0,0,1,1.006-1.006h6.26a1.008,1.008,0,0,1,1.006,1.006v3.8a.335.335,0,1,1-.671,0v-3.8a.336.336,0,0,0-.335-.335h-6.26a.336.336,0,0,0-.335.335v6.835a.336.336,0,0,0,.335.335H165.2a.335.335,0,1,1,0,.671Z" fill="#409eff"/>
+    <path id="路径_434" data-name="路径 434" d="M646.23,572.333a.333.333,0,0,1-.335-.332,1.675,1.675,0,0,1,.688-1.32.518.518,0,0,0,.192-.539.538.538,0,0,0-.406-.388.589.589,0,0,0-.5.109.521.521,0,0,0-.2.406.335.335,0,1,1-.671,0,1.186,1.186,0,0,1,.449-.928,1.256,1.256,0,0,1,1.064-.241,1.2,1.2,0,0,1,.913.89,1.188,1.188,0,0,1-.433,1.224,1.014,1.014,0,0,0-.427.784A.34.34,0,0,1,646.23,572.333Zm0,.87a.335.335,0,0,1,0-.671h0a.335.335,0,1,1,0,.671Z" transform="translate(-478.799 -460.089)" fill="#409eff"/>
+  </g>
+</svg>

+ 11 - 3
src/views/projectManage/components/demand.vue

@@ -160,9 +160,9 @@
     </el-row>
     <el-row>
       <span class="demandLayout">预计上线版本:</span>
-      <span v-for="item in preOnlineVersion" :key="item" class="demandeta">{{ item }}</span>
+      <span v-for="item in preOnlineVersion" :key="item" class="demandeta"> {{ item }} </span>
       <el-tooltip class="item" effect="dark" content="版本有问题?点击触发重新计算!" placement="right">
-        <svg-icon icon-class="float_反馈_icon_close" />
+        <svg-icon :icon-class="icon_problem ? 'problem1' : 'problem'" class="cursorPo" @mouseenter="icon_problem = true" @mouseleave="icon_problem = false" @click="requirementUpdatePreOnlineVersion" />
       </el-tooltip>
     </el-row>
     <!-- 日期详情 -->
@@ -178,7 +178,7 @@
 import { EncryptId, analysisBizId_id } from '@/utils/crypto-js.js'
 import { mapGetters } from 'vuex'
 import _ from 'lodash'
-import { listByRequire, taskListAvailableDpmTask, taskSetTaskRelated, taskDeleteRelationship, taskShowRelatedDpmTask, taskSyncScheduleToDpm } from '@/api/requirement.js'
+import { listByRequire, taskListAvailableDpmTask, taskSetTaskRelated, taskDeleteRelationship, taskShowRelatedDpmTask, taskSyncScheduleToDpm, requirementUpdatePreOnlineVersion } from '@/api/requirement.js'
 import scheduleList from '@/views/projectManage/components/scheduleList.vue'
 import '@/styles/PublicStyle/index.scss' // 通用css
 import { configShowTaskStatusEnum } from '@/api/taskIndex'
@@ -211,6 +211,7 @@ export default {
   },
   data() {
     return {
+      icon_problem: false,
       requirementId: -1,
       allStatus: [], // task状态
       taskDataList: [], // 同步排期到望岳的任务
@@ -484,6 +485,13 @@ export default {
       this.tableHeader = false
       this.taskList = []
     },
+    async requirementUpdatePreOnlineVersion() {
+      const res = await requirementUpdatePreOnlineVersion(this.requirementId)
+      if (res.code === 200) {
+        this.listByTask(this.requirementId)
+        this.$message({ message: '预计上线版本重新计算中,请稍后刷新页面查看!', type: 'success', offset: 150 })
+      }
+    },
     handleSelectionChange(val) {
       this.taskList = val
       this.taskList.length === this.tableData.length ? this.checkAlls = true : this.checkAlls = false

+ 16 - 10
src/views/projectManage/taskList/components/scheduleList.vue

@@ -100,18 +100,12 @@
     <div class="bottom-detail">
       <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>
-        <el-col :span="6">
+      <el-row>预计上线版本:
+        <span v-if="scheduleDetail.preOnlineVersion && scheduleDetail.preOnlineVersion.length > 0">
           <span v-for="item in scheduleDetail.preOnlineVersion" :key="item">{{ item }}</span>
-          <el-tooltip class="item" effect="dark" content="版本有问题?点击触发重新计算!" placement="right">
-            <svg-icon icon-class="float_反馈_icon_close" />
-          </el-tooltip>
-        </el-col>
-      </el-row>
-      <el-row v-else>预计上线版本:
+        </span>
         <el-tooltip class="item" effect="dark" content="版本有问题?点击触发重新计算!" placement="right">
-          <svg-icon icon-class="float_反馈_icon_close" />
+          <svg-icon :icon-class="icon_problem ? 'problem1' : 'problem'" style="cursor: pointer;" @mouseenter="icon_problem = true" @mouseleave="icon_problem = false" @click="taskUpdatePreOnlineVersion" />
         </el-tooltip>
       </el-row>
     </div>
@@ -127,6 +121,7 @@
   </div>
 </template>
 <script>
+import { taskUpdatePreOnlineVersion } from '@/api/taskIndex.js'
 import { EncryptId } from '@/utils/crypto-js.js'
 import { mapGetters } from 'vuex'
 import Sortable from 'sortablejs'
@@ -168,7 +163,9 @@ export default {
   },
   data() {
     return {
+      taskId: '',
       move: move,
+      icon_problem: false,
       scheduleList: [],
       scheduleDetail: {},
       visibleSchedule: false,
@@ -220,11 +217,20 @@ export default {
         this.$message({ message: '移动成功', type: 'success', duration: 1000, offset: 150 })
       }
     },
+    async taskUpdatePreOnlineVersion() {
+      console.log(this.taskId, 'csdcds')
+      const res = await taskUpdatePreOnlineVersion(this.taskId)
+      if (res.code === 200) {
+        this.listByTask(this.taskId)
+        this.$message({ message: '预计上线版本重新计算中,请稍后刷新页面查看!', type: 'success', offset: 150 })
+      }
+    },
     // getType(value) {
     //   const res = this.taskScheduleEvent.find(item => item.code === value) || {}
     //   return res.msg
     // },
     async listByTask(id) { // 获取排期列表
+      this.taskId = id
       const res = await listByTask(id)
       if (res.code === 200) {
         this.scheduleList = res.data.scheduleDetailRespons || []

+ 34 - 0
src/views/quality/components/requireDrawer.vue

@@ -0,0 +1,34 @@
+<template>
+  <el-drawer
+    title="我是标题"
+    :visible.sync="drawer"
+    :direction="direction"
+    :before-close="handleClose"
+  >
+    <span>我来啦!</span>
+  </el-drawer>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      drawer: TextTrackCue,
+      direction: 'rtl'
+    }
+  },
+  methods: {
+    handleClose(done) {
+      this.$confirm('确认关闭?')
+        .then(_ => {
+          done()
+        })
+        .catch(_ => {})
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>

+ 8 - 2
src/views/quality/requireStatistics.vue

@@ -91,7 +91,7 @@
                 <i class="el-icon-info" />
               </el-tooltip>
             </div>
-            <div class="item-title">{{ item.total }}</div>
+            <div class="item-title" @click="getRequiredNum(item)">{{ item.total }}</div>
             <div class="item-line" />
             <div v-show="Number(item.relativeRatio)>=0" class="item-up">环比:<i class="el-icon-caret-top" />{{ item.relativeRatio }}%</div>
             <div v-show="Number(item.relativeRatio)<0" class="item-down">环比:<i class="el-icon-caret-bottom" />{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</div>
@@ -166,6 +166,7 @@
         <bug-list :chart-data="bugListData" />
       </div>
     </el-main>
+    <require-drawer />
   </el-container>
 </template>
 <script>
@@ -187,6 +188,7 @@ import {
   getReqUnlockData,
   getBugStatisticData
 } from '@/api/statisticsApi/requireStatistics'
+import requireDrawer from './components/requireDrawer'
 import statusChart from './components/statusChart'
 import tendencyChart from './components/tendencyChart'
 import cycleStatistic from './components/cycleStatistic'
@@ -206,7 +208,8 @@ export default {
     statusStayChart,
     belongChart,
     changeRequireChart,
-    bugList
+    bugList,
+    requireDrawer
   },
   data() {
     return {
@@ -474,6 +477,9 @@ export default {
       }
       const res = await getBugStatisticData(params)
       if (res.code === 200) this.bugListData = res.data
+    },
+    getRequiredNum(value) {
+      console.log(value)
     }
   }
 }

+ 5 - 3
src/views/workbench/team/index.vue

@@ -554,14 +554,16 @@ export default {
           const colorObj = this.mapMemberColor.get(item.peopleObject.idap)
           const title = item.origin ? '日程:' : '排期:'
           let require = ''
+          let task = ''
           if (item.requireList && item.requireList.length > 0) {
             require = `所属需求:${item.requireList.map(item => item.name).join(',')}`
-          } else if (item.taskList && item.taskList.length > 0) {
-            require = `所属任务:${item.taskList.map(item => item.name).join(',')}`
+          }
+          if (item.taskList && item.taskList.length > 0) {
+            task = `所属任务:${item.taskList.map(item => item.name).join(',')}`
           }
           return {
             id: item.id,
-            title: `${title}【${item.peopleObject.name}】${item.name} ${item.desc ? ':' + item.desc : ''}; ${item.origin ? '' : require}`,
+            title: `${title}【${item.peopleObject.name}】${item.name} ${item.desc ? ':' + item.desc : ''}; ${item.origin ? '' : require + ';'} ${task}`,
             start: moment(item.startTime).toDate(),
             end: moment(item.endTime).add(1, 'day').toDate(),
             detailData: item,