|
@@ -18,9 +18,23 @@
|
|
|
<div class="header-title">
|
|
|
<span class="title-id">
|
|
|
TASK-{{ form_query.id }}
|
|
|
- <el-tooltip v-if="form_query.relatedDpmTaskInfo" class="item" effect="dark" :content="`【${form_query.relatedDpmTaskInfo.taskId}】【${form_query.relatedDpmTaskInfo.name}】`" placement="top">
|
|
|
- <img src="@/assets/home_images/WX20200914-141851@2x.png" @click="dpmUrl(form_query.dpmUrl)">
|
|
|
+ <el-tooltip v-if="form_query.isDirectlyFromDpm === 0 || form_query.isDirectlyFromDpm === 1" class="item" effect="dark" :content="`【${form_query.relatedDpmTaskInfo.taskId}】【${form_query.relatedDpmTaskInfo.name}】`" placement="top">
|
|
|
+ <span class="synchronize-icon">
|
|
|
+ <img src="@/assets/home_images/WX20200914-141851@2x.png" @click="dpmUrl(form_query.dpmUrl)">
|
|
|
+ <i v-if="form_query.isDirectlyFromDpm === 0" class="el-icon-circle-close sty-icon" @click="deleteDpl()" />
|
|
|
+ </span>
|
|
|
</el-tooltip>
|
|
|
+ <el-popover v-if="form_query.isDirectlyFromDpm === -1" placement="bottom" title="关联望岳任务" width="400" trigger="click" popper-class="synchronize">
|
|
|
+ <div class="blueStr" />
|
|
|
+ <div class="task-object-list">
|
|
|
+ <div v-for="(item, index) in dplOption" :key="index" class="task-item" @click="synchronize(item.id)">
|
|
|
+ <span>{{ item.moduleInfoName }}</span>
|
|
|
+ <span class="item-name">{{ item.name }}</span>
|
|
|
+ <span class="item-id">{{ item.taskId }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-button v-if="form_query.isDirectlyFromDpm === -1" slot="reference" size="mini" type="text" @click.once="getDplList(taskId)">关联望岳</el-button>
|
|
|
+ </el-popover>
|
|
|
</span>
|
|
|
<el-tooltip class="item" effect="dark" :content="form_query.name" placement="bottom">
|
|
|
<span
|
|
@@ -329,6 +343,7 @@
|
|
|
:id="taskId"
|
|
|
:data="form_query.relatedDpmTaskInfo"
|
|
|
:visible.sync="synchronizeDialog"
|
|
|
+ @change="taskGet()"
|
|
|
/>
|
|
|
<!-- 同步望月 -->
|
|
|
<drawer
|
|
@@ -365,7 +380,7 @@ import {
|
|
|
scheduleGetTaskScheduleHistory
|
|
|
} from '@/api/taskIndex'
|
|
|
import { listByTask } from '@/api/projectViewDetails'
|
|
|
-import { projectListProject, scheduleGetHistoryScheduleById } from '@/api/requirement.js'
|
|
|
+import { projectListProject, scheduleGetHistoryScheduleById, taskListAvailableDpmTask, taskSetTaskRelated, taskDeleteRelationship } from '@/api/requirement.js'
|
|
|
import searchPeople from '@/components/select/searchPeople'
|
|
|
import textArea from '@/components/input/textArea'
|
|
|
import drawer from '@/views/projectManage/Drawer'
|
|
@@ -470,7 +485,8 @@ export default {
|
|
|
commentContent: null, // 评论内容
|
|
|
comments: [], // 评论列表
|
|
|
taskIds: '', // 将要修改状态的任务id
|
|
|
- synchronizeDialog: false // 同步任务至望月弹框
|
|
|
+ synchronizeDialog: false, // 同步任务至望月弹框
|
|
|
+ dplOption: [] // 关联的望岳任务
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -773,6 +789,26 @@ export default {
|
|
|
},
|
|
|
dpmUrl(url) {
|
|
|
window.open(url, '_blank')
|
|
|
+ },
|
|
|
+ async getDplList(taskId) { // 获取关联望岳任务
|
|
|
+ const res = await taskListAvailableDpmTask(taskId)
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.dplOption = res.data
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async synchronize(id) { // 关联至望岳
|
|
|
+ const res = await taskSetTaskRelated(this.taskId, id)
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.taskGet()
|
|
|
+ this.$message({ message: '关联成功', type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async deleteDpl() { // 取消关联
|
|
|
+ const res = await taskDeleteRelationship(this.taskId)
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.taskGet()
|
|
|
+ this.$message({ message: '已取消关联', type: 'success', offset: 150 })
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -791,6 +827,16 @@ export default {
|
|
|
.title-name {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+ .synchronize-icon {
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .sty-icon {
|
|
|
+ position: absolute;
|
|
|
+ right: -5px;
|
|
|
+ top: -5px;
|
|
|
+ background: #eee;
|
|
|
+ border-radius: 50%;
|
|
|
+ }
|
|
|
}
|
|
|
.main-header::after {
|
|
|
@include main-header-after;
|
|
@@ -965,11 +1011,47 @@ export default {
|
|
|
.el-btn-size {
|
|
|
margin: 10px 30px;
|
|
|
}
|
|
|
+.blueStr {
|
|
|
+ width:4px;
|
|
|
+ height:17px;
|
|
|
+ background:#409EFF;
|
|
|
+ border-radius:1px;
|
|
|
+ position: absolute;
|
|
|
+ top: 22px;
|
|
|
+ left: 15px;
|
|
|
+}
|
|
|
</style>
|
|
|
|
|
|
-<style>
|
|
|
- .el-main-title .el-popper[x-placement^=bottom] {
|
|
|
- margin: 12px 10px 0 0;
|
|
|
- width: 300px;
|
|
|
+<style lang="scss">
|
|
|
+.synchronize {
|
|
|
+ .el-popover__title {
|
|
|
+ color: #333333;
|
|
|
+ padding: 10px 20px;
|
|
|
+ }
|
|
|
+ .task-object-list {
|
|
|
+ width: 100%;
|
|
|
+ overflow: scroll;
|
|
|
+ cursor: pointer;
|
|
|
+ .task-item {
|
|
|
+ width: 100%;
|
|
|
+ white-space: nowrap;
|
|
|
+ color: #999999;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ .item-id {
|
|
|
+ padding-right: 20px;
|
|
|
+ }
|
|
|
+ .item-name {
|
|
|
+ color: #333333;
|
|
|
+ padding-right: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .task-object-list::-webkit-scrollbar {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+}
|
|
|
+.el-main-title .el-popper[x-placement^=bottom] {
|
|
|
+ margin: 12px 10px 0 0;
|
|
|
+ width: 300px;
|
|
|
}
|
|
|
</style>
|