|
@@ -25,18 +25,19 @@
|
|
|
>{{ form_query.name }}</span>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
- <el-dropdown placement="bottom" @command="updateStatus">
|
|
|
+ <el-button v-show="form_query.status === -2" disabled plain size="mini">Hold</el-button>
|
|
|
+ <el-dropdown v-show="form_query.status !== -2" placement="bottom" @command="updateStatus">
|
|
|
<el-button size="mini" plainclass="el-dropdown-link drop_down">
|
|
|
- {{ getStatus.msg }}
|
|
|
+ {{ getStatus.name }}
|
|
|
<i class="el-icon-arrow-down el-icon--right" />
|
|
|
</el-button>
|
|
|
<el-dropdown-menu slot="dropdown" align="center">
|
|
|
<el-dropdown-item
|
|
|
v-for="item in allStatus"
|
|
|
- :key="item.msg"
|
|
|
- :command="{status:item.code,label:item.msg}"
|
|
|
- :disabled="form_query.status === item.code? true: false"
|
|
|
- >{{ item.msg }}</el-dropdown-item>
|
|
|
+ :key="item.name"
|
|
|
+ :command="{status:item.code,label:item.name}"
|
|
|
+ :disabled="form_query.status === item.code ? true : false"
|
|
|
+ >{{ item.name }}</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</el-dropdown>
|
|
|
</div>
|
|
@@ -68,6 +69,37 @@
|
|
|
<i class="el-icon-delete icon-delete" @click="deleteVisible = true" />
|
|
|
</div>
|
|
|
</el-header>
|
|
|
+ <el-container v-show="activeName === '1'">
|
|
|
+ <section class="main-section">
|
|
|
+ <div class="Layout_space_between">
|
|
|
+ <div class="el-main-title">
|
|
|
+ <div class="title-left-icon" />
|
|
|
+ <div class="title-left-name">工作流</div>
|
|
|
+ </div>
|
|
|
+ <el-popover
|
|
|
+ v-model="visible"
|
|
|
+ placement="bottom-end"
|
|
|
+ width="300px"
|
|
|
+ :visible-arrow="false"
|
|
|
+ trigger="manual"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="textarea2"
|
|
|
+ type="textarea"
|
|
|
+ rows="5"
|
|
|
+ style="width:300px"
|
|
|
+ placeholder="请输入Hold原因(选填)"
|
|
|
+ />
|
|
|
+ <div style="text-align: right; margin-top: 10px;">
|
|
|
+ <el-button size="mini" type="text" @click="visible = false">取消</el-button>
|
|
|
+ <el-button type="primary" size="mini" @click="taskHold(textarea2)">确定</el-button>
|
|
|
+ </div>
|
|
|
+ <el-button slot="reference" class="el-btn-size" size="mini" @click="changeBtn">{{ form_query.status === -2 ? HoldTask = '解除 Hold' : HoldTask = 'Hold 任务' }}</el-button>
|
|
|
+ </el-popover>
|
|
|
+ </div>
|
|
|
+ <timeLine :id="taskId" ref="timeLine" :name="'任务'" />
|
|
|
+ </section>
|
|
|
+ </el-container>
|
|
|
<!-- 概览 -->
|
|
|
<el-container v-show="activeName === '1'" class="is-vertical">
|
|
|
<section class="main-section">
|
|
@@ -183,29 +215,37 @@
|
|
|
<section class="main-section">
|
|
|
<div class="el-main-title">
|
|
|
<div class="title-left-icon" />
|
|
|
- <div class="title-left-name">评论</div>
|
|
|
- </div>
|
|
|
- <div class="detail-info">
|
|
|
- <ul class="comment-main">
|
|
|
- <li v-for="(item,index) in comments" :key="'comment'+index">
|
|
|
- <span class="comment-name">{{ item.commentInfo.name }}</span>
|
|
|
- <span class="comment-gmtCreater">{{ item.commentInfo.gmtCreater }}</span><br>
|
|
|
- <span class="comment-content">{{ item.commentInfo.content }}</span>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <el-input
|
|
|
- v-model="commentContent"
|
|
|
- type="textarea"
|
|
|
- placeholder="请输入评论内容"
|
|
|
- maxlength="300"
|
|
|
- show-word-limit
|
|
|
- :autosize="{ minRows: 3, maxRows: 5}"
|
|
|
- style="margin-bottom: 20px"
|
|
|
- />
|
|
|
- <el-row>
|
|
|
- <el-col :span="2" :offset="22"><el-button type="primary" size="small" @click="addComment">发表评论</el-button></el-col>
|
|
|
- </el-row>
|
|
|
+ <div class="title-left-name">动态</div>
|
|
|
</div>
|
|
|
+ <el-tabs v-model="tabPosition" class="sign-tabs" @tab-click="handleClick">
|
|
|
+ <el-tab-pane label="评论" name="first">
|
|
|
+ <div class="detail-info">
|
|
|
+ <ul class="comment-main">
|
|
|
+ <li v-for="(item,index) in comments" :key="'comment'+index">
|
|
|
+ <span class="comment-name">{{ item.commentInfo.name }}</span>
|
|
|
+ <span class="comment-gmtCreater">{{ item.commentInfo.gmtCreater }}</span><br>
|
|
|
+ <span class="comment-content">{{ item.commentInfo.content }}</span>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <el-input
|
|
|
+ v-model="commentContent"
|
|
|
+ type="textarea"
|
|
|
+ placeholder="请输入评论内容"
|
|
|
+ maxlength="300"
|
|
|
+ show-word-limit
|
|
|
+ :autosize="{ minRows: 3, maxRows: 5}"
|
|
|
+ style="margin-bottom: 20px"
|
|
|
+ />
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="2" :offset="22"><el-button type="primary" size="small" @click="addComment">发表评论</el-button></el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="变更记录" name="second">
|
|
|
+ <record :id="taskId" :name="'任务'" />
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+
|
|
|
</section>
|
|
|
</el-container>
|
|
|
<!-- 概览 -->
|
|
@@ -287,6 +327,8 @@ import {
|
|
|
taskUpdate,
|
|
|
commentCreate,
|
|
|
commentList,
|
|
|
+ taskHold,
|
|
|
+ taskUnhold,
|
|
|
configShowRequirementVersionEnum,
|
|
|
scheduleGetTaskScheduleHistory
|
|
|
} from '@/api/taskIndex'
|
|
@@ -298,7 +340,6 @@ import textArea from '@/components/input/textArea'
|
|
|
import drawer from '@/views/projectManage/Drawer'
|
|
|
import image_url from '@/assets/home_images/home_u.png'
|
|
|
import createdBug from '@/views/projectManage/bugList/file/createdBug'
|
|
|
-// import normalDialog from '@/components/dialog/normalDialog'
|
|
|
import openDialog from '@/views/projectManage/dialog_vue'
|
|
|
import createChildren from './childrenTask/createChildren'
|
|
|
import childrenList from './childrenTask/childrenList'
|
|
@@ -316,10 +357,11 @@ import bugTableDialog from '@/views/projectManage/bugList/details/bugTableDialog
|
|
|
import '@/styles/PublicStyle/index.scss'
|
|
|
import schedule from '@/views/projectManage/schedule' // 排期锁定弹窗
|
|
|
import download from '@/views/projectManage/components/export.vue'
|
|
|
+import record from '@/views/projectManage/components/record.vue'
|
|
|
+import timeLine from '@/views/projectManage/components/timeLine.vue'
|
|
|
export default {
|
|
|
components: {
|
|
|
searchPeople,
|
|
|
- // normalDialog,
|
|
|
textArea,
|
|
|
drawer,
|
|
|
createdBug,
|
|
@@ -335,7 +377,9 @@ export default {
|
|
|
taskDialog,
|
|
|
bugTableDialog,
|
|
|
schedule,
|
|
|
- download
|
|
|
+ download,
|
|
|
+ record,
|
|
|
+ timeLine
|
|
|
},
|
|
|
filters: {
|
|
|
ellipsis(value, num) {
|
|
@@ -348,6 +392,10 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ tabPosition: 'first',
|
|
|
+ textarea2: '',
|
|
|
+ HoldTask: '',
|
|
|
+ visible: false, // Hold任务
|
|
|
showunlock: true,
|
|
|
ScheduId: '', // 排期ID
|
|
|
LockState: {}, // 锁定状态
|
|
@@ -392,7 +440,7 @@ export default {
|
|
|
},
|
|
|
computed: {
|
|
|
getStatus() {
|
|
|
- return this.allStatus.find(item => item.code === this.form_query.status) || { msg: null }
|
|
|
+ return this.allStatus.find(item => item.code === this.form_query.status) || { name: null }
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
@@ -410,6 +458,9 @@ export default {
|
|
|
this.$store.state.data.bizId = false
|
|
|
},
|
|
|
methods: {
|
|
|
+ handleClick(tab, event) {
|
|
|
+ console.log(tab, event)
|
|
|
+ },
|
|
|
async getScheduleGetTaskScheduleHistory() {
|
|
|
this.scheduleVisble = false
|
|
|
const res = await scheduleGetTaskScheduleHistory(this.taskId)
|
|
@@ -450,6 +501,38 @@ export default {
|
|
|
this.scheduleVisble = true
|
|
|
}
|
|
|
},
|
|
|
+
|
|
|
+ changeBtn() {
|
|
|
+ if (this.HoldTask === 'Hold 任务') {
|
|
|
+ this.visible = !this.visible
|
|
|
+ this.textarea2 = ''
|
|
|
+ }
|
|
|
+ if (this.HoldTask === '解除 Hold') {
|
|
|
+ this.taskHold()
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ async taskHold(val) { // 锁定Hold
|
|
|
+ if (this.HoldTask === 'Hold 任务') {
|
|
|
+ const res = await taskHold(this.taskId, { 'remark': val })
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.taskGet()
|
|
|
+ this.$refs.timeLine.taskGetWorkFlow()
|
|
|
+ this.visible = false
|
|
|
+ this.$message({ message: '已修改状态为 Hold', type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (this.HoldTask === '解除 Hold') {
|
|
|
+ const res = await taskUnhold(this.taskId)
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.taskGet()
|
|
|
+ this.allStatus = []
|
|
|
+ this.allStatus.push({ code: -2, msg: 'Hold' })
|
|
|
+ this.$refs.timeLine.taskGetWorkFlow()
|
|
|
+ this.$message({ message: 'Hold 状态已解除', type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
async changeArea(e) { // area修改
|
|
|
const taskInfoDO = _.cloneDeep(this.form_query)
|
|
|
const user = {
|
|
@@ -478,7 +561,6 @@ export default {
|
|
|
async getTaskStatus() { // 获取任务状态列表,跟版客户端列表
|
|
|
const res = await configShowTaskEnum()
|
|
|
if (res.code === 200) {
|
|
|
- this.allStatus = res.data.taskStatus
|
|
|
this.taskScheduleEvent = res.data.taskScheduleEvent || []
|
|
|
this.appClient = res.data.appClient.map(item => {
|
|
|
return {
|
|
@@ -492,6 +574,7 @@ export default {
|
|
|
const res = await taskGet(this.$route.query.id)
|
|
|
if (res.code === 200) {
|
|
|
this.form_query = res.data
|
|
|
+ this.allStatus = res.data.availableStatusList
|
|
|
}
|
|
|
},
|
|
|
async getCommentList() { // 获取任务评论
|
|
@@ -773,4 +856,17 @@ export default {
|
|
|
border:1px solid #409EFF !important;
|
|
|
color:#409EFF !important;
|
|
|
}
|
|
|
+.sign-tabs {
|
|
|
+ padding: 0 30px;
|
|
|
+}
|
|
|
+.el-btn-size {
|
|
|
+ margin: 10px 30px;
|
|
|
+}
|
|
|
+</style>
|
|
|
+
|
|
|
+<style>
|
|
|
+ .el-main-title .el-popper[x-placement^=bottom] {
|
|
|
+ margin: 12px 10px 0 0;
|
|
|
+ width: 300px;
|
|
|
+}
|
|
|
</style>
|