浏览代码

提交代码

Lijy 1 月之前
父节点
当前提交
1c5b95a6b5

+ 84 - 31
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -491,19 +491,37 @@
     <div slot="footer" class="dialog-footer foooot">
         <template v-if="!showMmeiLaiDe">
             <el-button v-if="(user.id == addForm.createrId || currentProject.inchargerId == user.id || currentProject.creatorId == user.id || permissions.projectManagement) && canAddTask" @click.native="deleteTask()" style="float:left;">{{ $t('btn.delete') }}</el-button>
+            <el-button type="primary" v-if="user.userNameNeedTranslate == 1 && !meetingId && !integrationTask.stage && addForm.executorListFront[0].executorId" @click="meetingCli()">{{ $t('faQiHuiYi') }}</el-button>
+            <el-button @click.native="closeBounceds()">{{ $t('btn.cancel') }}</el-button>
+            <el-button type="primary" @click="submitInsert" :loading="addLoading">{{ $t('btn.submit') }}</el-button>
         </template>
+        
         <template v-if="showMmeiLaiDe">
-            <el-button v-if="[0, 1, 2, 3, 5, 6].includes(showMmeiLaiDeData.taskStatus)" @click.native="deleteTask()" style="float:left;">{{ $t('btn.delete') }}</el-button>
-        </template>
-        <el-button type="primary" v-if="user.userNameNeedTranslate == 1 && !meetingId && !integrationTask.stage && addForm.executorListFront[0].executorId" @click="meetingCli()">{{ $t('faQiHuiYi') }}</el-button>
-        <el-button @click.native="closeBounceds()">{{ $t('btn.cancel') }}</el-button>
-        <template v-if="showMmeiLaiDe && addForm.id && millerSReviewer.includes(user.id) && [3, 4].includes(showMmeiLaiDeData.taskStatus) && showMmeiLaiDeData.leaderOrManager == 2">
-            <template v-if="(showMmeiLaiDeData.taskStatus == 3 && user.id == showMmeiLaiDeData.checkFirstId) || (showMmeiLaiDeData.taskStatus == 4 && user.id == showMmeiLaiDeData.checkSecondId)">
-                <el-button type="danger" @click="planOperation(false)" :loading="addLoading">驳回</el-button>
-                <el-button type="success" @click="planOperation(true)" :loading="addLoading">通过</el-button>
+            <el-button v-if="(user.id == showMmeiLaiDeData.checkFirstId && showMmeiLaiDeData.taskStatus == 3) || (user.id == showMmeiLaiDeData.checkSecondId && [4, '4', '1', 1].includes(showMmeiLaiDeData.taskStatus))" @click.native="deleteTask()" style="float:left;">{{ $t('btn.delete') }}</el-button>
+            <el-button v-if="showMmeiLaiDeData.taskPlan && showMmeiLaiDeData.taskStatus == 2" @click.native="deleteTask()" style="float:left;">删除</el-button>
+
+            <el-button @click.native="closeBounceds()">{{ $t('btn.cancel') }}</el-button>
+
+            <template v-if="(showMmeiLaiDeData.leaderIdList || []).includes(user.id) && showMmeiLaiDeData.taskStatus == 3">
+                <el-button @click.native="planToWithdraw()">撤回</el-button>
+            </template>
+
+            <template v-if="addForm.id && millerSReviewer.includes(user.id) && [3, 4].includes(showMmeiLaiDeData.taskStatus)">
+                <template v-if="(showMmeiLaiDeData.taskStatus == 3 && user.id == showMmeiLaiDeData.checkFirstId) || (showMmeiLaiDeData.taskStatus == 4 && user.id == showMmeiLaiDeData.checkSecondId)">
+                    <el-button type="danger" @click="planOperation(false)" :loading="addLoading">驳回</el-button>
+                    <el-button type="success" @click="planOperation(true)" :loading="addLoading">通过</el-button>
+                </template>
+            </template>
+            
+            <template>
+                <el-button type="primary" @click="submitInsert" :loading="addLoading">
+                    {{ showMmeiLaiDeData.taskPlan == 1 && showMmeiLaiDeData.taskStatus == 2 ? '重新提交' : '提交' }}
+                </el-button>
             </template>
         </template>
-        <el-button type="primary" @click="submitInsert" :loading="addLoading">{{ $t('btn.submit') }}</el-button>
+        
+        
+        
     </div>
     
     <!-- <div slot="title" v-if="addForm.parentTid != null || isRelationItem" >
@@ -1065,6 +1083,37 @@ export default {
     }
   },
   methods: {
+    planToWithdraw() {
+        this.$confirm(`确定撤回该计划吗?`, {
+            type: 'warning'
+        }).then(() => {
+            this.http.post('/task/withdrawalTaskPlan',{taskId: this.addForm.id},
+            res => {
+                if (res.code == "ok") {
+                    this.$message({
+                        message: '撤回成功',
+                        type: 'success'
+                    });
+                    let obj = {
+                        submitInsert: true,
+                        showOrNot: this.showOrNot
+                    }
+                    this.$emit('closeBounced', obj)
+                } else {
+                    this.$message({
+                    message: res.msg,
+                    type: "error"
+                    });
+                }
+            },
+            error => {
+                this.$message({
+                    message: error,
+                    type: "error"
+                });
+            });
+        })
+    },
     setDisabledPermission() {
         const { taskStatus } = this.showMmeiLaiDeData
         this.doYouWantToDisableAll = taskStatus == 3 || taskStatus == 4
@@ -1142,33 +1191,37 @@ export default {
         });
     },
     planOperation(type) {
-        this.http.post('/task/taskPlanPassOrReject', {
-            taskId: this.addForm.id, type
-        },
-        res => {
-            if (res.code == "ok") {
-                this.$message({
-                    message: '操作成功',
-                    type: "success"
-                });
-                let obj = {
-                    submitInsert: true,
-                    showOrNot: this.showOrNot
+        this.$confirm(`确定${type ? '通过' : '驳回'}该计划吗?`, {
+            type: 'warning'
+        }).then(() => {
+            this.http.post('/task/taskPlanPassOrReject', {
+                taskId: this.addForm.id, type
+            },
+            res => {
+                if (res.code == "ok") {
+                    this.$message({
+                        message: '操作成功',
+                        type: "success"
+                    });
+                    let obj = {
+                        submitInsert: true,
+                        showOrNot: this.showOrNot
+                    }
+                    this.$emit('closeBounced', obj)
+                } else {
+                    this.$message({
+                        message: res.msg,
+                        type: "error"
+                    });
                 }
-                this.$emit('closeBounced', obj)
-            } else {
+            },
+            error => {
                 this.$message({
-                    message: res.msg,
+                    message: error,
                     type: "error"
                 });
-            }
-        },
-        error => {
-            this.$message({
-                message: error,
-                type: "error"
             });
-        });
+        })
     },
     // 触发外层的会议
     meetingCli() {

+ 47 - 8
fhKeeper/formulahousekeeper/timesheet/src/views/project/gantt.vue

@@ -258,12 +258,24 @@ export default {
 
     //设置任务条样式
     gantt.templates.task_class = function (start, end, item) {
+      const { taskPlan, taskStatus } = item
+      if(taskStatus == 5 || taskStatus == 6) {
+        return "reject_line"
+      }
+      if(taskPlan == 1 && taskStatus == 0) {
+        return "success_line"
+      }
+      if(taskPlan == 1 && taskStatus == 2) {
+        return "draft_line"
+      }
       return item.taskPlanType == 3 ? "error_line" : "person_line"
     };
 
+    const that = this
     // 设置任务条内容显示
     gantt.templates.task_text = function (start, end, task) {
-      const { leaderOrManager, taskPlan, taskStatus } = task
+      const { leaderOrManager, taskPlan, taskStatus, checkFirstId, checkSecondId } = task
+      const userIds = that.user.id
       // 都审核通过
       if(taskPlan == 1 && taskStatus == 0 && task.text == '请假') {
         return `<div class="task_text">
@@ -294,12 +306,21 @@ export default {
       // 审核人
       // if (userInfo.projectLeaderType == 2) {
       if (leaderOrManager == 2) {
-        return `<div class="task_text statuss">
+        const oneRight = `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div> <div class="circle"></div>`
+        const twoPairs = `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div> <div class="circle exclamation-circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div>`
+        const toExamine = `<div class="task_text statuss">
             ${task.taskStatus == 3 || task.taskStatus == 4 ? `<div class="circle">
               <div class="pendingReviewOfCornerMarkers">!</div>
-            </div>` : ''}
-            <div>${task.text}</div>
-          </div>`
+            </div>` : ''}`
+        const twoEmptyCircles = `<div class="circle"></div><div class="circle"></div>`
+        return `<div class="task_text">
+          ${(userIds == checkFirstId && task.taskStatus == 3) ? toExamine : (userIds == checkFirstId && task.taskStatus == 4) ? oneRight : ''}
+          ${(userIds == checkSecondId && task.taskStatus == 4) ? toExamine : (userIds == checkSecondId && task.taskStatus == 3) ? twoEmptyCircles : ''}
+          ${task.taskStatus == 5 ? `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">!</div> <div class="circle"></div>` : ''}
+          ${task.taskStatus == 6 ? `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div> <div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">!</div>` : ''}
+          <div>${task.text}</div>
+          <div>${task.text}</div>
+        </div>`
       }
 
       // 正常人
@@ -336,7 +357,7 @@ export default {
     // 双击事件
     this.$refs.ganttContainer.addEventListener('dblclick', (event) => {
       const taskIdStr = gantt.locate(event);
-      if(userInfo.projectLeaderType != 1 && userInfo.projectLeaderType != 2) {
+      if(userInfo.projectLeaderType != 1 && userInfo.projectLeaderType != 2 && userInfo.projectLeaderType != 3) {
         return
       }
       this.showMmeiLaiDeData = {}
@@ -350,7 +371,7 @@ export default {
           this.handleEmptyClick({ taskId })
         }
       } else {
-        if(userInfo.projectLeaderType != 1) {
+        if(userInfo.projectLeaderType == 2) {
           return
         }
         // 获取 gantt_grid_data 容器
@@ -429,7 +450,25 @@ export default {
 .error_line {
   background: #ff5757;
   border: 1px solid;
-  border: #ff5757;
+  border-color: #ff5757;
+}
+
+.success_line {
+  background: #5cb87a;
+  border: 1px solid;
+  border-color: #5cb87a;
+}
+
+.draft_line {
+  background: #909399;
+  border: 1px solid;
+  border-color: #909399;
+}
+
+.reject_line {
+  background: #FFBD4D;
+  border: 1px solid;
+  border-color: #FFBD4D;
 }
 
 .task_text {

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -5081,6 +5081,7 @@ a {
                 this.projectManagerEdit = false
                 this.contractAmountReasonShow = false
                 if(i == -1) {
+                    this.chosenMembCount = 0
                     if(this.user.companyId == '936') {
                         this.isShowProjectName = false
                     }

+ 19 - 10
fhKeeper/formulahousekeeper/timesheet/src/views/project/project_gantt.vue

@@ -2,19 +2,20 @@
   <div class="container">
     <div class="gantt_head">
       <div class="head_RorX">
-        
-      <el-radio-group v-model="radio1" @change="selChange()" size="small" style="margin-right:9px;width:280px">
-        <el-radio-button :label="$t('an-ren-yuan-cha-kan')" value="renyuan"></el-radio-button>
-        <el-radio-button :label="$t('an-xiang-mu-cha-kan')" value="xiangmu"></el-radio-button>
-        <el-radio-button :label="$t('zi-yuan-xu-qiu')" value="demand"></el-radio-button>
-      </el-radio-group>
-      
+        <div class="filter-lefts">
+          <el-radio-group v-model="radio1" @change="selChange()" size="small">
+            <el-radio-button :label="$t('an-ren-yuan-cha-kan')" value="renyuan"></el-radio-button>
+            <el-radio-button :label="$t('an-xiang-mu-cha-kan')" value="xiangmu"></el-radio-button>
+            <el-radio-button :label="$t('zi-yuan-xu-qiu')" value="demand"></el-radio-button>
+          </el-radio-group>
+          <el-checkbox v-if="radio1 != $t('zi-yuan-xu-qiu') && user.companyId == 876" v-model="justWaitForMe" style="margin-left: 14px;" @change="selChange()">待我审核</el-checkbox>
+        </div>
       </div>
       <!-- 时间段筛选  -->
       <div class="head_date" v-if="isDataLoaded">
       <span>{{ $t('message.period') }}</span>
       <el-date-picker
-        style="margin-left:9px;width:17vw"
+        style="margin-left:9px;width:15vw"
         size="small"
         v-model="valueDate"
         type="daterange"
@@ -220,6 +221,7 @@ export default {
       valuex2: '',
 
       user: JSON.parse(sessionStorage.getItem("user")),
+      justWaitForMe: false
     };
   },
   computed: {},
@@ -515,13 +517,16 @@ export default {
             getlistcs.userId = this.valuex
           }
         }
+        if(this.justWaitForMe) {
+          getlistcs.justWaitForMe = 1
+        }
         var urls = ''
         if(this.user.userNameNeedTranslate == '1') {
           urls = '/project/getGanttDataNew'
         } else {
           urls = '/project/getGanttData'
         }
-        this.http.post(urls, getlistcs ,
+        this.http.post(urls, getlistcs,
         // this.http.post('/project/getGanttDataNew', getlistcs,
                         res => {
                             if (res.code == "ok") {
@@ -638,6 +643,10 @@ export default {
     height: 100%;
     width: 100%;
   }
+  .filter-lefts {
+    display: flex;
+    align-items: center;
+  }
   .left-container {
     overflow: hidden;
     position: relative;
@@ -656,7 +665,7 @@ export default {
     align-items: center;
   }
   .gantt_head .head_RorX{
-    width: 280px;
+    width: 380px;
   }
   .gantt_head .head_date{
     width: 22vw;