瀏覽代碼

只审核父任务,任务详情修改

yanshichao 1 年之前
父節點
當前提交
ee58b09dae
共有 5 個文件被更改,包括 96 次插入37 次删除
  1. 9 0
      src/api/task/task.js
  2. 17 7
      src/views/task/components/taskDetail.vue
  3. 12 7
      src/views/task/projectView.vue
  4. 56 20
      src/views/task/task.vue
  5. 2 3
      src/views/task/view.vue

+ 9 - 0
src/api/task/task.js

@@ -44,6 +44,15 @@ export function delTask(TaskId) {
   })
 }
 
+// 删除任务
+export function delTaskWithReason(data) {
+  return request({
+    url: '/task/task/removeWithReason',
+    method: 'post',
+    data:data
+  })
+}
+
 // 查询任务视图列表
 export function listView(data) {
   return request({

+ 17 - 7
src/views/task/components/taskDetail.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="task-detail">
-    <el-descriptions class="margin-top" :column="7" direction="vertical">
+    <el-descriptions class="margin-top" :column="8" direction="vertical">
       <el-descriptions-item label="负责人">
         <div class="desc-item-content">{{ form.executorName }}</div>
       </el-descriptions-item>
@@ -16,6 +16,9 @@
                        :color="cellColorMap[form.status]"></el-progress>
         </div>
       </el-descriptions-item>
+      <el-descriptions-item label="反馈工时">
+        <div class="desc-item-content">{{ form.feedbackHours }}<span class="desc-item-content-unit">小时</span></div>
+      </el-descriptions-item>
       <el-descriptions-item label="优先级">
         <el-tag :color="priorityColorMap[form.priority]" effect="dark" :hit="false">
           {{ getTaskPriority(form.priority) }}
@@ -140,13 +143,14 @@
                   @cell-click="cellClick">
           <el-table-column width="70" prop="id" label="编号"></el-table-column>
           <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
-          <el-table-column label="执行(负责)人" prop="executorName" width="100"/>
-          <el-table-column label="进度" prop="progressValue" width="70">
+          <el-table-column label="负责人" prop="executorName" align="center" width="80"/>
+          <el-table-column label="进度" prop="progressValue" align="center" width="60">
             <template slot-scope="scope">
               <span>{{ (scope.row.progressValue ? scope.row.progressValue : 0) + '%' }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="状态" align="center" width="80">
+          <el-table-column label="反馈工时(h)" prop="useHours" align="center" width="100"/>
+          <el-table-column label="状态" align="center" width="70">
             <template slot-scope="scope">
               <el-tag size="mini" :type="statusMap[scope.row.status].type">{{
                   statusMap[scope.row.status].name
@@ -154,7 +158,7 @@
               </el-tag>
             </template>
           </el-table-column>
-          <el-table-column label="优先级" prop="priority" align="center" width="80">
+          <el-table-column label="优先级" prop="priority" align="center" width="70">
             <template slot-scope="scope">
               <el-tag v-if="scope.row.priority==='1'" color="#fa8888" effect="dark" :hit="false">
                 {{ getTaskPriority(scope.row.priority) }}
@@ -171,8 +175,8 @@
               </el-tag>
             </template>
           </el-table-column>
-          <el-table-column label="开始时间" prop="beginDate" width="100"/>
-          <el-table-column label="结束时间" prop="endDate" width="100"/>
+          <el-table-column label="开始时间" prop="beginDate" width="90"/>
+          <el-table-column label="结束时间" prop="endDate" width="90"/>
         </el-table>
       </el-tab-pane>
       <el-tab-pane label="修改日志" name="four">
@@ -292,6 +296,12 @@ export default {
   font-weight: bold;
 }
 
+.desc-item-content-unit {
+  margin-left: 5px;
+  font-weight: lighter;
+  font-size: 12px;
+}
+
 .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
   margin-bottom: 10px;
 }

+ 12 - 7
src/views/task/projectView.vue

@@ -439,14 +439,19 @@ export default {
       }
       if (row.status === '6' && row.auditUserId === this.userId) {
         getTask(row.id).then(res => {
-          this.detailForm = res.data;
-          this.auditForm = {
-            taskId: row.id,
-            auditResult: undefined,
-            value: undefined,
-            auditOpinion: undefined
+          if (res.data.ancestorsTask && res.data.ancestorsTask.length === 0) {
+            this.detailForm = res.data;
+            this.auditForm = {
+              taskId: row.id,
+              auditResult: undefined,
+              value: undefined,
+              auditOpinion: undefined
+            }
+            this.auditOpen = true;
+          } else {
+            this.detailForm = res.data
+            this.openDetail = true
           }
-          this.auditOpen = true;
         })
       } else {
         getTask(row.id).then(res => {

+ 56 - 20
src/views/task/task.vue

@@ -349,10 +349,10 @@ import {
   updateTask,
   auditTask,
   splitTask,
-  projectAuditConfigs, taskAuditConfigs, addTaskFeedback
+  projectAuditConfigs, taskAuditConfigs, addTaskFeedback, delTaskWithReason
 } from "@/api/task/task";
 import {getProjectTree, listProject} from "@/api/task/project";
-import {getDeptUserTree, getAuditUsers} from "@/api/system/user";
+import {getDeptUserTree, getAuditUsers, resetUserPwd} from "@/api/system/user";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import DeptUserTree from "@/components/DeptUserTree"
@@ -662,14 +662,20 @@ export default {
     /** 审核按钮操作 */
     handleAudit(row) {
       getTask(row.id).then(res => {
-        this.detailForm = res.data;
-        this.auditForm = {
-          taskId: row.id,
-          auditResult: undefined,
-          value: undefined,
-          auditOpinion: undefined
+        if (res.data.ancestorsTask && res.data.ancestorsTask.length === 0) {
+          this.detailForm = res.data;
+          this.auditForm = {
+            taskId: row.id,
+            auditResult: undefined,
+            value: undefined,
+            auditOpinion: undefined
+          }
+          this.auditOpen = true;
+        } else {
+          this.detailForm = res.data;
+          this.detailOpen = true;
+          this.detailTitle = "任务详情";
         }
-        this.auditOpen = true;
       })
     },
     /** 分解按钮操作 */
@@ -823,24 +829,54 @@ export default {
 
     /** 终止按钮操作 */
     handleUpdate(row) {
-      this.$confirm('是否确认终止任务编号为"' + row.id + '"的任务?').then(() => {
-        return updateTask({id: row.id, status: '5'});
-      }).then(() => {
-        this.getList();
-        this.$message.success("终止成功");
+      let title = '您将终止任务编号为' + row.id + '的数据项'
+      this.$prompt("请输入终止原因", title, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        closeOnClickModal: false,
+        inputType: 'textarea',
+        inputValidator: (val) => {
+          if (!val) {
+            return "终止原因不能为空"
+          }
+          if (val.length > 500) {
+            return "终止原因不能超过500字符"
+          }
+        },
+        inputErrorMessage: "终止原因不能为空"
+      }).then(({value}) => {
+        updateTask({id: row.id, status: '5', remark: value}).then(response => {
+          this.$message.success("终止成功");
+          this.getList()
+        });
       }).catch(() => {
       });
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      this.$confirm('是否确认删除任务编号为"' + row.id + '"的数据项?').then(() => {
-        return delTask(row.id);
-      }).then(() => {
-        this.getList();
-        this.$message.success("删除成功");
+      let title = '您将删除任务编号为' + row.id + '的数据项'
+      this.$prompt("请输入删除原因", title, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        closeOnClickModal: false,
+        inputType: 'textarea',
+        inputValidator: (val) => {
+          if (!val) {
+            return "删除原因不能为空"
+          }
+          if (val.length > 500) {
+            return "删除原因不能超过500字符"
+          }
+        },
+        inputErrorMessage: "删除原因不能为空"
+      }).then(({value}) => {
+        delTaskWithReason({id: row.id, remark: value}).then(response => {
+          this.$message.success("删除成功");
+          this.getList()
+        });
       }).catch(() => {
       });
-    }
+    },
 
   }
 };

+ 2 - 3
src/views/task/view.vue

@@ -247,9 +247,8 @@
       </div>
     </el-dialog>
 
-    <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="openDetail" width="900px" class="feed-dialog"
-               :close-on-click-modal="true"
-               append-to-body>
+    <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="openDetail" width="900px"
+               class="feed-dialog" :close-on-click-modal="true" append-to-body>
       <task-detail :detailForm="detailForm"></task-detail>
     </el-dialog>