|
@@ -114,19 +114,47 @@
|
|
<div class="el-main-title">
|
|
<div class="el-main-title">
|
|
<div class="title-left-icon" />
|
|
<div class="title-left-icon" />
|
|
<div class="title-left-name">
|
|
<div class="title-left-name">
|
|
- <div class="require-plan">
|
|
|
|
- 任务计划
|
|
|
|
- <span><i class="el-icon-warning-outline" />每个任务仅支持一次提测和一次准出,请合理拆解后任务再排期</span>
|
|
|
|
|
|
+ <div>任务计划
|
|
|
|
+ <el-tooltip class="item" effect="dark" :content="isScheduleLocked === 1? '点击解锁排期' : '点击锁定排期'" placement="top">
|
|
|
|
+ <span class="titleStatus" @click="changeSchedule"><img :src="isScheduleLocked === 1 ? lock: Unlock" style="width: 12.31px;display: inline-block; vertical-align: text-top;"> {{ isScheduleLocked === 1 ? '已锁定' : '未锁定' }}</span>
|
|
|
|
+ </el-tooltip>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div>
|
|
|
|
- <schedule-list
|
|
|
|
- :id="taskId"
|
|
|
|
- :type-list="taskScheduleEvent"
|
|
|
|
- class-name="white"
|
|
|
|
- />
|
|
|
|
- </div>
|
|
|
|
|
|
+ <section class="main-section">
|
|
|
|
+ <div class="allTips">
|
|
|
|
+ <div class="tips">
|
|
|
|
+ <i class="el-icon-warning-outline" />每个任务仅支持一次提测和一次准出,请合理拆解后任务再排期<br>
|
|
|
|
+ 每个任务仅支持一次提测和一次准出,请合理拆解后任务再排期
|
|
|
|
+ </div>
|
|
|
|
+ <div class="Layout_space_between">
|
|
|
|
+ <div v-show="BackToTheLatest === false" class="Scheduling" style="margin-right: 160px;"><img :src="scheduling"> 回到最新</div>
|
|
|
|
+ <div v-show="BackToTheLatest === true" class="Scheduling" style="margin-right: 160px;" @click="clickAddScheduling()"><i class="el-icon-circle-plus-outline" />添加排期</div>
|
|
|
|
+ <div align="left" class="Scheduling" @click="scheduleHiHide"><img :src="scheduling"> 排期变更记录</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </section>
|
|
|
|
+ <el-container>
|
|
|
|
+ <el-main style="padding: 0;">
|
|
|
|
+ <schedule-list :id="taskId" ref="taskSchedule" :type-list="taskScheduleEvent" class-name="white" />
|
|
|
|
+ </el-main>
|
|
|
|
+ <el-aside v-if="lockHide" class="SchedulingAside">
|
|
|
|
+ <div v-for="(item, index) in SchedulingContent" :key="index" class="SchedulingDiv" @click="clickScheduling(item)">
|
|
|
|
+ <div class="SchedulingTow">
|
|
|
|
+ <img v-if="item.type === 2" :src="lock" class="image">
|
|
|
|
+ <img v-if="item.type === 1" :src="Unlock" class="image">
|
|
|
|
+ </div>
|
|
|
|
+ <i v-show="index < SchedulingContent.length - 1" />
|
|
|
|
+ <div class="timeline">
|
|
|
|
+ <div class="modifyTime">{{ item.modifyTime }}</div>
|
|
|
|
+ <div>{{ item.operatorObject.name !== null ? item.operatorObject.name : '' }} <span class="btn">{{ item.operation }}</span></div>
|
|
|
|
+ <div v-if="item.remarkTypeName"><span class="modifyTime">{{ '解锁原因 : ' }}</span>{{ item.remarkTypeName }}</div>
|
|
|
|
+ <div v-if="item.remark"><span class="modifyTime">{{ '具体描述 : ' }}</span>{{ item.remark }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="SchedulingContent.length === 0" style="width: 270px; text-align: center;"> 暂无排期变更记录!</div>
|
|
|
|
+ </el-aside>
|
|
|
|
+ </el-container>
|
|
</section>
|
|
</section>
|
|
<section class="main-section">
|
|
<section class="main-section">
|
|
<div class="el-main-title">
|
|
<div class="el-main-title">
|
|
@@ -204,6 +232,9 @@
|
|
</el-dialog>
|
|
</el-dialog>
|
|
<!-- 删除 -->
|
|
<!-- 删除 -->
|
|
<task-dialog v-if="showTaskDialog" :show.sync="showTaskDialog" :task-id="taskIds.id" :status-name="taskIds.statusString" @getList="taskGet" />
|
|
<task-dialog v-if="showTaskDialog" :show.sync="showTaskDialog" :task-id="taskIds.id" :status-name="taskIds.statusString" @getList="taskGet" />
|
|
|
|
+ <!-- 排期锁定 -->
|
|
|
|
+ <schedule :visible.sync="scheduleVisble" :name="'任务'" :is-schedule-locked="isScheduleLocked" :require-id="taskId" @updataData="getScheduleGetTaskScheduleHistory" />
|
|
|
|
+ <!-- 排期锁定 -->
|
|
<drawer
|
|
<drawer
|
|
ref="drawer"
|
|
ref="drawer"
|
|
title="任务成员"
|
|
title="任务成员"
|
|
@@ -229,9 +260,11 @@ import {
|
|
taskUpdate,
|
|
taskUpdate,
|
|
commentCreate,
|
|
commentCreate,
|
|
commentList,
|
|
commentList,
|
|
- configShowRequirementVersionEnum
|
|
|
|
|
|
+ configShowRequirementVersionEnum,
|
|
|
|
+ scheduleGetTaskScheduleHistory
|
|
} from '@/api/taskIndex'
|
|
} from '@/api/taskIndex'
|
|
-import { projectListProject } from '@/api/requirement.js'
|
|
|
|
|
|
+import { listByTask } from '@/api/projectViewDetails'
|
|
|
|
+import { projectListProject, scheduleGetHistoryScheduleById } from '@/api/requirement.js'
|
|
import searchPeople from '@/components/select/searchPeople'
|
|
import searchPeople from '@/components/select/searchPeople'
|
|
import textArea from '@/components/input/textArea'
|
|
import textArea from '@/components/input/textArea'
|
|
import drawer from '@/views/projectManage/Drawer'
|
|
import drawer from '@/views/projectManage/Drawer'
|
|
@@ -250,6 +283,11 @@ import stage1 from '@/assets/detailPage/正常状态.png'
|
|
import stage2 from '@/assets/detailPage/延期状态.png'
|
|
import stage2 from '@/assets/detailPage/延期状态.png'
|
|
import taskDialog from '@/views/projectManage/taskList/dialog/taskDialog' // 任务状态修改(已上线/已提测/已准出)
|
|
import taskDialog from '@/views/projectManage/taskList/dialog/taskDialog' // 任务状态修改(已上线/已提测/已准出)
|
|
import bugTableDialog from '@/views/projectManage/bugList/details/bugTableDialog' // 缺陷表格
|
|
import bugTableDialog from '@/views/projectManage/bugList/details/bugTableDialog' // 缺陷表格
|
|
|
|
+import scheduling from '@/assets/scheduling.png'
|
|
|
|
+import lock from '@/assets/lock.png' // 排期锁定图标
|
|
|
|
+import Unlock from '@/assets/Unlock.png' // 排期锁定图标
|
|
|
|
+import '@/styles/PublicStyle/index.scss'
|
|
|
|
+import schedule from '@/views/projectManage/schedule' // 排期锁定弹窗
|
|
export default {
|
|
export default {
|
|
components: {
|
|
components: {
|
|
searchPeople,
|
|
searchPeople,
|
|
@@ -265,7 +303,8 @@ export default {
|
|
DailyReport,
|
|
DailyReport,
|
|
ClientReport,
|
|
ClientReport,
|
|
taskDialog,
|
|
taskDialog,
|
|
- bugTableDialog
|
|
|
|
|
|
+ bugTableDialog,
|
|
|
|
+ schedule
|
|
},
|
|
},
|
|
filters: {
|
|
filters: {
|
|
ellipsis(value, num) {
|
|
ellipsis(value, num) {
|
|
@@ -278,6 +317,14 @@ export default {
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ LockState: {}, // 锁定状态
|
|
|
|
+ Unlock: Unlock, // 解锁排期
|
|
|
|
+ lock: lock, // 锁定排期
|
|
|
|
+ scheduleVisble: false, // 排期锁定
|
|
|
|
+ BackToTheLatest: true, // 显示添加排期按钮
|
|
|
|
+ scheduling: scheduling, // 排期变更记录图标
|
|
|
|
+ lockHide: false, // 隐藏排期变更记录
|
|
|
|
+ SchedulingContent: [], // 排期历史变更记录
|
|
stageImg: stage,
|
|
stageImg: stage,
|
|
normalImg: stage1,
|
|
normalImg: stage1,
|
|
warningImg: stage2,
|
|
warningImg: stage2,
|
|
@@ -295,6 +342,7 @@ export default {
|
|
dependList: [{ msg: '否', code: 2 }, { msg: '是', code: 1 }], // 是否跟版
|
|
dependList: [{ msg: '否', code: 2 }, { msg: '是', code: 1 }], // 是否跟版
|
|
form_query: {},
|
|
form_query: {},
|
|
display: false, // 设置成员弹框
|
|
display: false, // 设置成员弹框
|
|
|
|
+ isScheduleLocked: '', // 锁定状态1锁定0未锁定
|
|
num: 0, // 成员数量
|
|
num: 0, // 成员数量
|
|
image_url: image_url, // 成员icon
|
|
image_url: image_url, // 成员icon
|
|
updateVisible: false, // 编辑任务弹框
|
|
updateVisible: false, // 编辑任务弹框
|
|
@@ -320,6 +368,7 @@ export default {
|
|
this.getBelongProject()
|
|
this.getBelongProject()
|
|
this.getRequireList()
|
|
this.getRequireList()
|
|
this.getCommentList()
|
|
this.getCommentList()
|
|
|
|
+ this.getScheduleGetTaskScheduleHistory()
|
|
this.$store.state.data.status = true
|
|
this.$store.state.data.status = true
|
|
this.$store.state.data.bizId = true
|
|
this.$store.state.data.bizId = true
|
|
},
|
|
},
|
|
@@ -328,6 +377,21 @@ export default {
|
|
this.$store.state.data.bizId = false
|
|
this.$store.state.data.bizId = false
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ async getScheduleGetTaskScheduleHistory() {
|
|
|
|
+ this.scheduleVisble = false
|
|
|
|
+ const res = await scheduleGetTaskScheduleHistory(this.taskId)
|
|
|
|
+ this.SchedulingContent = res.data
|
|
|
|
+ const res1 = await listByTask(this.taskId)
|
|
|
|
+ this.isScheduleLocked = res1.data.isScheduleLocked
|
|
|
|
+ },
|
|
|
|
+ async clickScheduling(ele) {
|
|
|
|
+ const res = await scheduleGetHistoryScheduleById(ele.id)
|
|
|
|
+ this.taskScheduleEvent = res.data.schedulDetailResponses
|
|
|
|
+ this.BackToTheLatest = false
|
|
|
|
+ },
|
|
|
|
+ changeSchedule() { // 修改锁定状态
|
|
|
|
+ this.scheduleVisble = true
|
|
|
|
+ },
|
|
async changeArea(e) { // area修改
|
|
async changeArea(e) { // area修改
|
|
const taskInfoDO = _.cloneDeep(this.form_query)
|
|
const taskInfoDO = _.cloneDeep(this.form_query)
|
|
const user = {
|
|
const user = {
|
|
@@ -424,6 +488,13 @@ export default {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ clickAddScheduling() { // 模拟调用自组件方法
|
|
|
|
+ this.$refs.taskSchedule.addSchedule()
|
|
|
|
+ },
|
|
|
|
+ scheduleHiHide() { // 排期变更显示隐藏
|
|
|
|
+ this.lockHide = !this.lockHide
|
|
|
|
+ this.BackToTheLatest = true
|
|
|
|
+ },
|
|
childVal(val) {
|
|
childVal(val) {
|
|
this.num = val
|
|
this.num = val
|
|
},
|
|
},
|