Browse Source

任务审核直接放到详情里面去,满足审核条件的就启用审核按钮

yanshichao 1 year ago
parent
commit
a7b5624a82
2 changed files with 121 additions and 20 deletions
  1. 103 6
      src/views/task/projectView.vue
  2. 18 14
      src/views/task/task.vue

+ 103 - 6
src/views/task/projectView.vue

@@ -170,6 +170,7 @@
       </el-table-column>
       </el-table-column>
     </el-table>
     </el-table>
 
 
+    <!-- 添加评论对话框 -->
     <el-dialog title="添加评论" :visible.sync="open" width="680px" class="feed-dialog" append-to-body @close="cancel">
     <el-dialog title="添加评论" :visible.sync="open" width="680px" class="feed-dialog" append-to-body @close="cancel">
       <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="100px">
       <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="100px">
         <el-form-item label="任务名称">
         <el-form-item label="任务名称">
@@ -203,11 +204,43 @@
       </div>
       </div>
     </el-dialog>
     </el-dialog>
 
 
+    <!-- 任务详情对话框 -->
     <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="openDetail" width="900px"
     <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="openDetail" width="900px"
                class="feed-dialog" :close-on-click-modal="true" append-to-body>
                class="feed-dialog" :close-on-click-modal="true" append-to-body>
       <task-detail :detailForm="detailForm"></task-detail>
       <task-detail :detailForm="detailForm"></task-detail>
     </el-dialog>
     </el-dialog>
 
 
+    <!-- 审核任务对话框 -->
+    <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="auditOpen" width="900px" class="add-dialog"
+               append-to-body @close="auditCancel">
+      <task-detail :detail-form="detailForm"></task-detail>
+      <el-form ref="auditForm" :model="auditForm" :rules="auditRules" size="mini" label-width="100px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="审核意见" prop="auditResult">
+              <el-radio-group v-model="auditForm.auditResult">
+                <el-radio label="1">确认完成</el-radio>
+                <el-radio label="0">驳回</el-radio>
+                <el-radio label="9">评论</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="auditForm.auditResult==='0'" label="进度(%)" prop="value">
+              <el-input-number v-model="auditForm.value" :min="1" :max="99"></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="审核备注" prop="auditOpinion">
+          <el-input v-model="auditForm.auditOpinion" type="textarea"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="mini" @click="submitAudit">确 定</el-button>
+        <el-button size="mini" @click="auditCancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
   </div>
   </div>
 </template>
 </template>
 
 
@@ -219,7 +252,7 @@ import {
   getFeedbackList,
   getFeedbackList,
   confirmComment,
   confirmComment,
   listProjectView,
   listProjectView,
-  childrenTask
+  childrenTask, auditTask
 } from "@/api/task/task";
 } from "@/api/task/task";
 import {getProjectList, getProjectTree} from "@/api/task/project";
 import {getProjectList, getProjectTree} from "@/api/task/project";
 import DateUtil from "@/utils/date"
 import DateUtil from "@/utils/date"
@@ -230,6 +263,7 @@ import RichTextEditor from "@/components/RichTextEditor"
 import {getDeptUserTree} from "@/api/system/user";
 import {getDeptUserTree} from "@/api/system/user";
 import task from "@/views/mixins/task";
 import task from "@/views/mixins/task";
 import elTableInfiniteScroll from 'el-table-infinite-scroll'
 import elTableInfiniteScroll from 'el-table-infinite-scroll'
+import {mapGetters} from "vuex";
 
 
 export default {
 export default {
   components: {TaskDetail, FileUpload, DeptUserTree, RichTextEditor},
   components: {TaskDetail, FileUpload, DeptUserTree, RichTextEditor},
@@ -238,6 +272,9 @@ export default {
     'el-table-infinite-scroll': elTableInfiniteScroll
     'el-table-infinite-scroll': elTableInfiniteScroll
   },
   },
   mixins: [task],
   mixins: [task],
+  computed: {
+    ...mapGetters(['userId'])
+  },
   data() {
   data() {
     return {
     return {
       queryParams: {
       queryParams: {
@@ -266,6 +303,16 @@ export default {
       },
       },
       openDetail: false,
       openDetail: false,
       detailForm: {},
       detailForm: {},
+      auditOpen: false,
+      auditForm: {},
+      auditRules: {
+        auditResult: [
+          {required: true, message: "审核意见不能为空", trigger: "change"}
+        ],
+        value: [
+          {required: true, message: "进度不能为空", trigger: "blur"}
+        ]
+      }
     }
     }
   },
   },
   watch: {
   watch: {
@@ -390,10 +437,23 @@ export default {
       if (column.property != "taskName") {
       if (column.property != "taskName") {
         return
         return
       }
       }
-      getTask(row.id).then(res => {
-        this.detailForm = res.data
-        this.openDetail = true
-      })
+      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
+          }
+          this.auditOpen = true;
+        })
+      } else {
+        getTask(row.id).then(res => {
+          this.detailForm = res.data
+          this.openDetail = true
+        })
+      }
     },
     },
     feedbackTypeChange(val) {
     feedbackTypeChange(val) {
       if (val === '2') {
       if (val === '2') {
@@ -484,7 +544,44 @@ export default {
       childrenTask(params).then(res => {
       childrenTask(params).then(res => {
         resolve(res.data)
         resolve(res.data)
       })
       })
-    }
+    },
+    /** 审核任务提交按钮 */
+    submitAudit() {
+      this.$refs["auditForm"].validate(valid => {
+        if (valid) {
+          if (this.auditForm.auditResult != '9') {
+            auditTask(this.auditForm).then(res => {
+              this.$message.success("操作成功");
+              this.getList()
+              this.auditCancel()
+            })
+          } else {
+            let data = {
+              taskId: this.auditForm.taskId,
+              feedbackDate: DateUtil.day(),
+              feedbackType: '4',
+              description: this.auditForm.auditOpinion
+            }
+            addTaskFeedback(data).then(res => {
+              this.$message.success("评论成功");
+              this.auditCancel()
+            });
+          }
+        }
+      });
+    },
+    // 审核取消按钮
+    auditCancel() {
+      this.detailForm = {};
+      this.auditForm = {
+        taskId: undefined,
+        auditResult: undefined,
+        value: undefined,
+        auditOpinion: undefined
+      }
+      this.resetForm("auditForm");
+      this.auditOpen = false;
+    },
   }
   }
 }
 }
 </script>
 </script>

+ 18 - 14
src/views/task/task.vue

@@ -94,10 +94,10 @@
                   row-key="id"
                   row-key="id"
                   :indent="10"
                   :indent="10"
                   :tree-props="{children: 'children'}">
                   :tree-props="{children: 'children'}">
-          <el-table-column label="任务编号" prop="id"/>
+          <el-table-column label="任务编号" prop="id" width="120"/>
           <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
           <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" width="95"/>
+          <el-table-column label="进度" prop="progressValue" width="60">
             <template slot-scope="scope">
             <template slot-scope="scope">
               <span>{{ (scope.row.progressValue ? scope.row.progressValue : 0) + '%' }}</span>
               <span>{{ (scope.row.progressValue ? scope.row.progressValue : 0) + '%' }}</span>
             </template>
             </template>
@@ -110,7 +110,7 @@
               </el-tag>
               </el-tag>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column label="优先级" prop="priority" align="center" width="80">
+          <el-table-column label="优先级" prop="priority" align="center" width="60">
             <template slot-scope="scope">
             <template slot-scope="scope">
               <el-tag v-if="scope.row.priority==='1'" color="#fa8888" effect="dark" :hit="false">
               <el-tag v-if="scope.row.priority==='1'" color="#fa8888" effect="dark" :hit="false">
                 {{ getTaskPriority(scope.row.priority) }}
                 {{ getTaskPriority(scope.row.priority) }}
@@ -129,19 +129,19 @@
           </el-table-column>
           </el-table-column>
           <el-table-column label="开始时间" prop="beginDate" sortable="custom" width="100"/>
           <el-table-column label="开始时间" prop="beginDate" sortable="custom" width="100"/>
           <el-table-column label="结束时间" prop="endDate" sortable="custom" width="100"/>
           <el-table-column label="结束时间" prop="endDate" sortable="custom" width="100"/>
-          <el-table-column label="操作" width="120">
+          <el-table-column label="操作" width="66">
             <template slot-scope="scope">
             <template slot-scope="scope">
-              <el-button size="mini"
-                         type="text"
-                         icon="el-icon-coordinate"
-                         @click="handleAudit(scope.row)"
-                         :disabled="scope.row.status!='6'||scope.row.auditUserId!=userId"
-                         v-hasPermi="['task:task:audit']"
-              >审核
-              </el-button>
+              <!--              <el-button size="mini"-->
+              <!--                         type="text"-->
+              <!--                         icon="el-icon-coordinate"-->
+              <!--                         @click="handleAudit(scope.row)"-->
+              <!--                         :disabled="scope.row.status!='6'||scope.row.auditUserId!=userId"-->
+              <!--                         v-hasPermi="['task:task:audit']"-->
+              <!--              >审核-->
+              <!--              </el-button>-->
               <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
               <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
                            v-hasPermi="['task:task:edit','task:task:split', 'task:task:delete']">
                            v-hasPermi="['task:task:edit','task:task:split', 'task:task:delete']">
-                <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
+                <el-button size="mini" type="text">更多<i class="el-icon-d-arrow-right"/></el-button>
                 <el-dropdown-menu slot="dropdown">
                 <el-dropdown-menu slot="dropdown">
                   <el-dropdown-item command="handleSplit" icon="el-icon-tickets"
                   <el-dropdown-item command="handleSplit" icon="el-icon-tickets"
                                     v-hasPermi="['task:task:split']"
                                     v-hasPermi="['task:task:split']"
@@ -541,6 +541,10 @@ export default {
       if (!column.property || column.property != 'taskName') {
       if (!column.property || column.property != 'taskName') {
         return
         return
       }
       }
+      if (row.status === '6' && row.auditUserId === this.userId) {
+        this.handleAudit(row)
+        return;
+      }
       getTask(row.id).then(res => {
       getTask(row.id).then(res => {
         this.detailForm = res.data;
         this.detailForm = res.data;
         this.detailOpen = true;
         this.detailOpen = true;