qinzhipeng_v@didiglobal.com 4 роки тому
батько
коміт
fe9845479f

+ 8 - 0
src/api/projectIndex.js

@@ -155,3 +155,11 @@ export function getPersonBizList() {
     method: 'get'
   })
 }
+
+// 获取项目变更记录
+export function operationLogProject(id) {
+  return request({
+    url: TeamManagement + `/operationLog/project?projectId=${id}`,
+    method: 'get'
+  })
+}

+ 9 - 0
src/api/taskIndex.js

@@ -364,3 +364,12 @@ export function taskDownload(data) {
     responseType: 'blob' // 表明返回服务器返回的数据类型
   })
 }
+
+// 任务关闭更新
+export function taskOpenOrClose(data) {
+  return request({
+    url: TeamManagement + `/task/openOrClose`,
+    method: 'post',
+    data
+  })
+}

+ 13 - 22
src/components/commentsAndChanges/index.vue

@@ -1,36 +1,28 @@
 <template>
-  <el-tabs v-model="tabPosition">
-    <el-tab-pane label="评论" name="first">
-      <ul class="comment-main">
-        <li v-for="(item,index) in comments" :key="index">
-          <span>{{ item.commentInfo.name }}</span>
-          <span class="comment-gmtCreater">{{ item.commentInfo.gmtCreater }}</span><br>
-          <span>{{ item.commentInfo.content }}</span>
-        </li>
-      </ul>
-      <el-input v-model="commentContent" type="textarea" placeholder="请输入评论内容" maxlength="300" show-word-limit :autosize="{ minRows: 3, maxRows: 5}" />
-      <div class="comment-btn">
-        <el-button type="primary" size="small" @click="addComment">发表评论</el-button>
-      </div>
-    </el-tab-pane>
-    <el-tab-pane label="变更记录" name="second">
-      <record :id="commentData.id" ref="record" :name="commentData.type" />
-    </el-tab-pane>
-  </el-tabs>
+  <div>
+    <ul class="comment-main">
+      <li v-for="(item,index) in comments" :key="index">
+        <span>{{ item.commentInfo.name }}</span>
+        <span class="comment-gmtCreater">{{ item.commentInfo.gmtCreater }}</span><br>
+        <span>{{ item.commentInfo.content }}</span>
+      </li>
+    </ul>
+    <el-input v-model="commentContent" type="textarea" placeholder="请输入评论内容" maxlength="300" show-word-limit :autosize="{ minRows: 3, maxRows: 5}" />
+    <div class="comment-btn">
+      <el-button type="primary" size="small" @click="addComment">发表评论</el-button>
+    </div>
+  </div>
 </template>
 <!-- 项目、需求、任务下评论 -->
 <script>
-import record from '@/components/commentsAndChanges/record.vue'
 import { commentCreate, commentList } from '@/api/taskIndex'
 export default {
-  components: { record },
   props: {
     data: { type: Object, required: true }
   },
   data() {
     return {
       commentData: {}, // 父组件的props
-      tabPosition: 'first',
       commentContent: null, // 评论内容
       comments: [] // 评论列表
     }
@@ -38,7 +30,6 @@ export default {
   watch: {
     data: {
       handler(newV) {
-        console.log(newV, '进来了')
         this.commentData = newV
         this.getCommentList()
       },

+ 3 - 1
src/components/commentsAndChanges/record.vue

@@ -14,6 +14,8 @@
 import '@/styles/PublicStyle/index.scss'
 import { operationLogTask } from '@/api/taskIndex'
 import { operationLogRequire } from '@/api/requirement.js'
+import { operationLogProject } from '@/api/projectIndex'
+
 export default {
   props: {
     id: { type: [Number, String], default: null },
@@ -36,7 +38,7 @@ export default {
         const res = await operationLogRequire(this.id)
         this.changeRecord = res.data
       } else if (this.name === 7) { // 7 = 项目
-        const res = await operationLogRequire(this.id)
+        const res = await operationLogProject(this.id)
         this.changeRecord = res.data
       }
     }

+ 12 - 1
src/views/projectManage/projectList/projectViewDetails.vue

@@ -126,7 +126,14 @@
             <div class="title-left-name">动态</div>
           </div>
           <div class="comments-margin">
-            <comments-and-changes v-if="form_query.id" :data="{type: 7, id: form_query.id}" />
+            <el-tabs v-model="tabPosition">
+              <el-tab-pane label="评论" name="first">
+                <comments-and-changes v-if="form_query.id" :data="{type: 7, id: form_query.id}" />
+              </el-tab-pane>
+              <el-tab-pane label="变更记录" name="second">
+                <record v-if="form_query.id" :id="form_query.id" ref="record" :name="7" />
+              </el-tab-pane>
+            </el-tabs>
           </div>
         </section>
 
@@ -209,6 +216,7 @@ import {
   mileStoneList,
   projectDelete
 } from '@/api/projectIndex'
+import record from '@/components/commentsAndChanges/record.vue'
 import commentsAndChanges from '@/components/commentsAndChanges/index.vue'
 import searchPeople from '@/components/select/searchPeople'
 import textArea from '@/components/input/textArea'
@@ -227,6 +235,7 @@ import bugTableDialog from '@/views/projectManage/bugList/details/bugTableDialog
 import '@/styles/PublicStyle/index.scss'
 export default {
   components: {
+    record,
     openDialog,
     RequirementCreate,
     createdBug,
@@ -252,6 +261,7 @@ export default {
   },
   data() {
     return {
+      tabPosition: 'first',
       projectId: -1, // 项目id
       activeName: '1', // 顶部tab切换
       num: '',
@@ -324,6 +334,7 @@ export default {
       // projectInfo.bizType = this.form_query.projectTypeStr
       const res = await projectUpdate({ projectInfo, user: this.user })
       if (res.code === 200) {
+        this.$refs.record.operationLogTask() // 从新获取变更记录
         this.$message({ message: '修改成功', type: 'success', duration: 1000, offset: 150 })
       }
     },

+ 47 - 18
src/views/projectManage/taskList/taskViewDetail.vue

@@ -45,7 +45,8 @@
             </el-tooltip>
           </div>
           <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 v-show="form_query.status === -4" disabled plain size="mini">已关闭</el-button>
+          <el-dropdown v-show="form_query.status !== -2 && form_query.status !== -4" placement="bottom" @command="updateStatus">
             <el-button size="mini" plainclass="el-dropdown-link drop_down">
               {{ getStatus.name }}
               <i class="el-icon-arrow-down el-icon--right" />
@@ -96,22 +97,20 @@
               <div class="title-left-icon" />
               <div class="title-left-name">工作流</div>
             </div>
-            <div>
-              <el-button v-if="form_query.isDirectlyFromDpm === 0 || form_query.isDirectlyFromDpm === 1" size="mini" @click="dialogVisible = true">{{ '拉取望岳状态及工作流' }}</el-button>
-              <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 class="Layout_space_between">
+              <el-button v-if="form_query.isDirectlyFromDpm === 0 || form_query.isDirectlyFromDpm === 1" class="el-btn-size" size="mini" @click="dialogVisible = true">{{ '拉取望岳状态及工作流' }}</el-button>
+              <div v-if="form_query.status !== -2">
+                <el-popover v-model="taskVisible" placement="bottom-end" width="300px" :visible-arrow="false" trigger="manual">
+                  <el-input v-model="textarea1" type="textarea" rows="5" style="width:300px" placeholder="请输入关闭原因(选填)" />
+                  <div style="text-align: right; margin-top: 10px;">
+                    <el-button size="mini" type="text" @click="taskVisible = false">取消</el-button>
+                    <el-button type="primary" size="mini" @click="taskOpenOrClose(textarea1)">确定</el-button>
+                  </div>
+                  <el-button slot="reference" class="el-btn-size" size="mini" @click="changeTaskClose">{{ form_query.status === -4 ? closeTask = '解除关闭任务' : closeTask = '关闭任务' }}</el-button>
+                </el-popover>
+              </div>
+              <el-popover v-if="form_query.status !== -4" 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>
@@ -427,6 +426,7 @@ import {
   commentList,
   taskHold,
   taskUnhold,
+  taskOpenOrClose,
   configShowRequirementVersionEnum,
   scheduleGetTaskScheduleHistory
 } from '@/api/taskIndex'
@@ -504,8 +504,11 @@ export default {
       isShowLockedTime: false, // 是否显示解锁倒计时
       tabPosition: 'first',
       textarea2: '',
+      textarea1: '',
       HoldTask: '',
+      closeTask: '',
       visible: false, // Hold任务
+      taskVisible: false, // 关闭任务
       dialogVisible: false,
       showunlock: true,
       toilp: '',
@@ -656,6 +659,32 @@ export default {
         this.scheduleVisble = true
       }
     },
+    changeTaskClose() {
+      console.log(this.closeTask)
+      if (this.closeTask === '关闭任务') {
+        this.taskVisible = !this.taskVisible
+        this.textarea1 = ''
+      }
+      if (this.closeTask === '解除关闭任务') {
+        this.taskOpenOrClose()
+      }
+    },
+    async taskOpenOrClose(val) {
+      const data = { id: this.taskId, remark: val, closeStatus: -3 }
+      if (this.closeTask === '关闭任务') {
+        data.remark = val
+        data.closeStatus = -4
+      } else if (this.closeTask === '解除关闭任务') {
+        data.closeStatus = -3
+      }
+      const res = await taskOpenOrClose(data)
+      if (res.code === 200) {
+        this.taskGet()
+        this.$refs.timeLine.taskGetWorkFlow()
+        this.visible = false
+        this.$message({ message: '已修改任务状态', type: 'success', duration: 1000, offset: 150 })
+      }
+    },
 
     changeBtn() {
       if (this.HoldTask === 'Hold 任务') {
@@ -1159,7 +1188,7 @@ export default {
   padding: 0 30px;
 }
 .el-btn-size {
-   margin: 10px 30px;
+   margin: 10px 30px 10px 0;
 }
 .blueStr {
   width:4px;