Parcourir la source

任务修改:1可以将某个任务设置为主任务,2可以将某个子任务或者主任务迁移到另外一个任务下面

yanshichao il y a 10 mois
Parent
commit
506ad26895

+ 14 - 6
src/api/task/task.js

@@ -108,11 +108,11 @@ export function splitTask(data) {
 }
 
 //确认评论
-export function confirmComment(parmas) {
+export function confirmComment(params) {
   return request({
     url: '/task/task/confirmComment',
     method: 'get',
-    params: parmas
+    params: params
   })
 }
 
@@ -134,19 +134,19 @@ export function toDoTaskList() {
   })
 }
 
-export function projectAuditConfigs(parmas) {
+export function projectAuditConfigs(params) {
   return request({
     url: '/task/audit/projectAuditConfigs',
     method: 'get',
-    params: parmas
+    params: params
   })
 }
 
-export function taskAuditConfigs(parmas) {
+export function taskAuditConfigs(params) {
   return request({
     url: '/task/audit/taskAuditConfigs',
     method: 'get',
-    params: parmas
+    params: params
   })
 }
 
@@ -157,3 +157,11 @@ export function getDeleteTasks(data) {
     data: data
   })
 }
+
+export function getTasksByProjectId(params) {
+  return request({
+    url: '/task/task/projectTask',
+    method: 'get',
+    params: params
+  })
+}

+ 1 - 0
src/views/mixins/task.js

@@ -12,6 +12,7 @@ const statusMap = {
 
 const fieldMap = {
   'taskName': '任务名称',
+  'parentTaskId': '父任务',
   'projectId': '所属项目',
   'beginDate': '开始日期',
   'endDate': '结束日期',

+ 6 - 2
src/views/task/components/taskSplit.vue

@@ -113,7 +113,7 @@
             </el-col>
           </el-row>
           <el-form-item label="任务附件" label-width="80px">
-            <file-upload @getFileUrl="(val)=>getChildFileUrl(child,val)"
+            <file-upload ref="fileUpload" @getFileUrl="(val)=>getChildFileUrl(child,val)"
                          @removeFile="(val)=>removeChildFile(child,val)"></file-upload>
           </el-form-item>
           <el-form-item label="任务描述" prop="description" label-width="80px">
@@ -195,7 +195,7 @@ export default {
     }
   },
   computed: {
-    startPickerOptions(){
+    startPickerOptions() {
       let self = this
       return {
         disabledDate(time) {
@@ -265,6 +265,10 @@ export default {
       return this.form
     },
     reset() {
+      let fileUpload = this.$refs.fileUpload;
+      for (let key in fileUpload) {
+        fileUpload[key].clear()
+      }
       let splitChild = this.$refs.splitChild;
       for (let key in splitChild) {
         splitChild[key].clearValidate()

+ 0 - 1
src/views/task/projectView.vue

@@ -245,7 +245,6 @@
 <script>
 import {
   getTask,
-  listView,
   addTaskFeedback,
   getFeedbackList,
   confirmComment,

+ 50 - 4
src/views/task/task.vue

@@ -214,6 +214,20 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row>
+          <el-form-item label="父任务" prop="parentTaskId" class="mini-treeselect">
+            <treeselect v-model="form.parentTaskId" :options="taskOptions"
+                        :open-on-click="true"
+                        :normalizer="taskNormalizer"
+                        :disabled="form.status==='4'||form.status==='5'||form.status==='6'"
+                        placeholder="请选择">
+              <label slot="option-label"
+                     slot-scope="{ node, shouldShowCount, count, labelClassName, countClassName }">
+                <span style="font-weight: normal">{{ node.id + '、' + node.label }}</span>
+              </label>
+            </treeselect>
+          </el-form-item>
+        </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="开始时间" prop="beginDate">
@@ -350,12 +364,14 @@
 import {
   listTask,
   getTask,
-  delTask,
   addTask,
   updateTask,
   auditTask,
   splitTask,
-  projectAuditConfigs, taskAuditConfigs, addTaskFeedback, delTaskWithReason
+  taskAuditConfigs,
+  addTaskFeedback,
+  delTaskWithReason,
+  getTasksByProjectId
 } from "@/api/task/task";
 import {getProjectTree, getProject} from "@/api/task/project";
 import {getDeptUserTree, getAuditUsers, resetUserPwd} from "@/api/system/user";
@@ -449,7 +465,8 @@ export default {
         ]
       },
       confirmOpen: false,
-      conflictTasks: []
+      conflictTasks: [],
+      taskOptions: []
     };
   },
   created() {
@@ -538,8 +555,8 @@ export default {
     // 取消按钮(分解任务)
     async splitCancel() {
       await this.$refs.split.reset();
-      // this.splitForm = {}
       this.splitOpen = false;
+      this.auditForm = {}
     },
 
     /** 查看任务详情*/
@@ -579,8 +596,34 @@ export default {
       };
       return newVar;
     },
+    taskNormalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      let newVar = {
+        id: node.id,
+        label: node.taskName || node.name,
+        children: node.children,
+      };
+      return newVar;
+    },
+
     treeProjectChange(node) {
+      if (node.id != this.form.projectId) {
+        this.form.parentTaskId = undefined
+      }
       this.getTaskAuditData(node.id)
+      this.getTaskTree(node.id)
+    },
+
+    getTaskTree(projectId, currentId = null) {
+      getTasksByProjectId({projectId: projectId}).then(res => {
+        let data = res.data
+        if (currentId) {
+          data = res.data.filter(item => item.id != currentId)
+        }
+        this.taskOptions = this.handleTree(data, 'id', 'parentTaskId');
+      })
     },
 
     async getTaskAuditData(projectId) {
@@ -618,6 +661,7 @@ export default {
           if (ids.indexOf(this.selectProjectId) < 0) {
             this.form.projectId = this.selectProjectId
             this.getTaskAuditData(this.form.projectId)
+            this.getTaskTree(this.form.projectId)
           }
         }
         this.$set(this.form, 'priority', '4')
@@ -630,6 +674,7 @@ export default {
         this.projectAuditConfigs = res.data
       })
       this.getTaskAuditData(row.projectId)
+      this.getTaskTree(row.projectId, row.id)
       let arr = []
       arr.push(getTask(row.id).then(res => {
           this.form = res.data;
@@ -714,6 +759,7 @@ export default {
           beginDate: row.beginDate,
           endDate: row.endDate,
           planHours: undefined,
+          files: undefined,
           description: undefined
         }
         this.splitForm.children.push(child)

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

@@ -98,7 +98,7 @@
         <template slot="header">
           <el-popover placement="top" trigger="hover">
             <div>{{ header.day }}已反馈工时:
-              <span style="font-size: 16px;font-weight: bold; margin-right: 5px">{{ header.dayHours }}</span>
+              <span style="font-size: 16px;font-weight: bold; margin-right: 5px">{{ header.hours || 0 }}</span>
               小时
             </div>
             <div slot="reference" style="width:40px;text-align: center;cursor: pointer">
@@ -107,6 +107,7 @@
               <div v-else-if="header.week=='周日'" class="view-cell" style="color: #1c84c6">{{ header.week }}</div>
               <div v-else-if="header.week=='今日'" class="view-cell" style="color: #00E704">{{ header.week }}</div>
               <div v-else class="view-cell">{{ header.week }}</div>
+              <span>{{header.hours || 0}}</span>
             </div>
           </el-popover>
         </template>
@@ -472,21 +473,7 @@ export default {
       }
       this.queryParams.userId = this.userId
       listView(this.queryParams).then(res => {
-        let data = res.data.data || []
-        if (data.length > 0) {
-          this.tableHeaders = res.data.headers.map(header => {
-            let dayHours = 0;
-            data.forEach(item => {
-              if (item[header.day].hours) {
-                dayHours += item[header.day].hours
-              }
-            })
-            header['dayHours'] = dayHours
-            return header;
-          })
-        } else {
-          this.tableHeaders = res.data.headers
-        }
+        this.tableHeaders = res.data.headers
         this.tableData = res.data.data
       })
     },