Explorar o código

Merge remote-tracking branch 'origin/master'

yusm hai 1 día
pai
achega
9298d1cc59

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet_mld/src/components/taskComponent.vue

@@ -67,7 +67,8 @@
                     <el-checkbox v-model="addForm.attachFileRequired" >是否必须上传成果文件</el-checkbox>
                 </el-form-item>
                 <el-form-item  :label="$t('taskdefinition')" prop="name">
-                    <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" :placeholder="$t('enterthetaskcontent')" clearable></el-input>
+                    <!-- <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" :placeholder="$t('enterthetaskcontent')" clearable></el-input> -->
+                    <el-input type="textarea" :rows="4" placeholder="请输入内容" v-model="addForm.name" :maxlength="500" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" clearable show-word-limit></el-input>
                 </el-form-item>
                 <el-form-item  :label="$t('planCost')" prop="planCost" v-if="user.timeType.taskPlanCost">
                     <el-input v-model.number="addForm.planCost" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !permissions.editAnyTask && !(groupResponsibleId == user.id)" :placeholder="$t('planCostHint')" clearable></el-input>
@@ -1195,7 +1196,7 @@ export default {
             this.mileageCup = false
             this.addFormVisible = true;
             this.curProjectId = obj.stage.projectId;
-            const startDates = obj.addForm.startDate ? obj.addForm.startDate + ' 08:00:00' : ''
+            const startDates = obj.addForm.startDate ? obj.addForm.startDate + ' 09:00:00' : ''
             this.addForm = {
                 projectId: obj.stage.projectId, 
                 groupId: obj.stage.groupId, 

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet_mld/src/permissions.js

@@ -114,6 +114,7 @@ const StringUtil = {
         reportProjectConsumptionTwo: false, // 项目耗用进度表 //
         reportStaffTaskAccomplished: false, // 员工任务完成表 //
         reportMonthlyFinancialWorkSchedule: false, // 月度财务工时表 //
+        reportAllWorkPlansAwaitingReviewAndStatistics: false, // 全部工作计划待审核统计 //
 
         // 请假模块
         leaveFil : false, // 请假填报 // 
@@ -305,6 +306,8 @@ const StringUtil = {
 
         arr[i] == '审核任务文件' ? obj.tasksReviewTaskFile = true : ''
         arr[i] == '查看他人审核文件' ? obj.viewFilesReviewedByOthers = true : ''
+
+        arr[i] == '全部工作计划待审核统计' ? obj.reportAllWorkPlansAwaitingReviewAndStatistics = true : ''
     }
     return obj
   }

+ 43 - 5
fhKeeper/formulahousekeeper/timesheet_mld/src/views/corpreport/list.vue

@@ -52,6 +52,7 @@
                   <el-menu-item index="1-30" v-if="permissions.taskPlanCost" @click="ssl(29)"><p>{{ $t('taskPlanCostReport') }}</p></el-menu-item>
                   <el-menu-item index="1-31" v-if="permissions.reportFTEPlanAll || permissions.reportFTEPlanPart" @click="ssl(30)"><p>FTE计划报表</p></el-menu-item>
                   <el-menu-item index="1-32" v-if="permissions.reportMonthlyFinancialWorkSchedule" @click="ssl(31)"><p>月度财务工时表</p></el-menu-item>
+                  <el-menu-item index="1-33" v-if="permissions.reportAllWorkPlansAwaitingReviewAndStatistics" @click="ssl(32)"><p>日报待审核统计</p></el-menu-item>
                 </el-submenu>
               </el-menu>
           </el-col>
@@ -1617,6 +1618,14 @@
             </el-table-column>
             <el-table-column prop="totalTime" align="center" label="工时合计(h)" width="120px"></el-table-column>
           </el-table>
+
+          <!-- 日报待审核统计 -->
+          <el-table v-if="ins == 32"  key="32" border :data="planPendingReviewList" highlight-current-row v-loading="planPendingReviewLoading" :height="+tableHeight - 1" style="width: 100%;">
+            <el-table-column align="name" prop="planHours" label="审核人" ></el-table-column>
+            <el-table-column align="department_name" prop="planHours" label="所属部门" ></el-table-column>
+            <el-table-column align="total" prop="planHours" label="待审核条数" ></el-table-column>
+          </el-table>
+
         <!--工具条-->
         <el-col :span="24" class="toolbar" v-if="ins != 6 && ins != 20 && ins != 21 && tabPosition==0 && tabsType == 'all' && ins != 31">
           <el-pagination
@@ -2018,10 +2027,10 @@ export default {
     return {
       themeColor: getThemeColor(),
       screeningCondition: { // 筛选条件的判断
-        project: [4, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22, 28, 30, 31], // 项目筛选条件 (不等于)
+        project: [4, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22, 28, 30, 31, 32], // 项目筛选条件 (不等于)
         months: [14, 15], // 月份筛选条件 (等于)
-        monthRange: [19, 30], // 月份区间筛选条件 (等于)
-        staff: [6, 8, 9, 19, 11, 14, 18, 23, 25, 26,28, 30], // 人员筛选条件 (等于)
+        monthRange: [19, 30, 32], // 月份区间筛选条件 (等于)
+        staff: [6, 8, 9, 19, 11, 14, 18, 23, 25, 26,28, 30, 32], // 人员筛选条件 (等于)
         departments: [14, 15, 23,21,26,28,19, 30], // 部门筛选条件 (等于)
         timePeriod: [5, 6, 8, 9, 10, 11, 12, 16, 17, 18, 20, 21, 22, 24, 25, 26,28], // 时间段筛选条件 (等于)
       },
@@ -2082,14 +2091,14 @@ export default {
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('statisticsofstafffillingintimerate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
       this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), this.$t('ziXiangMuGongShiChengBenBiao'), this.$t('renWuZhongQiBiao'), this.$t('fteBaoBiao'), this.$t('youXiaoGongShiShuaiBiao'), this.$t('xiangMuFenLeiGongShiZhanBiBiao'), this.$t('fenLeiGongShiMingXiBiao'),
-      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表', '月度财务工时表'],
+      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表', '月度财务工时表', '日报待审核统计'],
 
       shuzArr: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
       this.$t('projectbalancesheet'),this.$t('customerprojectincomestatement'),this.$t('projectphasetimesheet'),
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('employeereporttimelinessrate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
       this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), this.$t('ziXiangMuGongShiChengBenBiao'), this.$t('renWuZhongQiBiao'), this.$t('fteBaoBiao'),this.$t('youXiaoGongShiShuaiBiao'), this.$t('xiangMuFenLeiGongShiZhanBiBiao'), this.$t('fenLeiGongShiMingXiBiao'),
-      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表', '月度财务工时表'],
+      this.$t('yuanGongXiangMuJinDuBiao'), this.$t('fenZuHaoYongJinDuBiao'), this.$t('xiangMuHaoYongJinDuBiao'), this.$t('yuanGongRenWuJinDuBiao'), this.$t('xiangMuYuGuGongShiBiao'),this.$t('yuanGongRenWuWanChengQingKuangBiao'), this.$t('taskPlanCostReport'), 'FTE计划报表', '月度财务工时表', '日报待审核统计'],
 
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
@@ -2273,6 +2282,9 @@ export default {
       adjustWorkingHoursVisable: false,
       immediateVisable: false,
       immediateDateValue: '',
+
+      planPendingReviewList: [],
+      planPendingReviewLoading: false
     };
   },
   computed: {},
@@ -2444,6 +2456,7 @@ export default {
       if(this.permissions.taskPlanCost) {this.ssl(29);this.takCompletedStatus = '1-30';return} else
       if(this.permissions.reportFTEPlanAll || this.permissions.reportFTEPlanPart) {this.ssl(30);this.takCompletedStatus = '1-31';return} else
       if(this.permissions.reportMonthlyFinancialWorkSchedule) {this.ssl(31);this.takCompletedStatus = '1-32';return} else
+      if(this.permissions.reportAllWorkPlansAwaitingReviewAndStatistics) {this.ssl(32);this.takCompletedStatus = '1-33';return} else
       {this.allWrong = false}
     },
     rowspan(spanArr,position,spanName,dataItem = [],fields=false){
@@ -2851,6 +2864,9 @@ export default {
                 if (this.ins == 31) {
                   this.getObtainMonthlyFinancialStatements();
                 }
+                if (this.ins == 32) {
+                  this.getPlanPendingReview();
+                }
             },
       exportExcel() {
         var url = "/project";
@@ -3096,6 +3112,12 @@ export default {
             sl.taskType = this.taskTypeId
           }
           sl.projectId = this.proJuctId
+        } else if (this.ins == 32) {
+          fName = '日报待审核统计' + '.xlsx';
+          url = "/report/exportTaskPlanNeedCheckStatistics";
+          sl.userId = this.userId
+          sl.startDate = this.rangeDatas[0]
+          sl.endDate = this.rangeDatas[1]
         } 
         this.exportReportLoading = true
           this.http.post(url, sl,
@@ -5100,6 +5122,22 @@ export default {
         })
       })
     },
+    getPlanPendingReview() {
+      this.planPendingReviewLoading = true
+      this.postData(`/report/getTaskPlanNeedCheckStatistics`, {
+        userId: this.userId,
+        startDate: this.rangeDatas[0],
+        endDate: this.rangeDatas[1],
+        pageIndex: this.page,
+        pageSize: this.size,
+      }).then(res => {
+        const { total, result } = res.data
+        this.planPendingReviewList = result || []
+        this.total = total
+      }).finally(() => {
+        this.planPendingReviewLoading = false
+      })
+    },
     // 单独封装请求
     async postData(urls, param) {
       return new Promise((resolve, reject) => {

+ 9 - 5
fhKeeper/formulahousekeeper/timesheet_mld/src/views/project/gantt.vue

@@ -383,12 +383,16 @@ export default {
     const that = this
     // 设置任务条内容显示
     gantt.templates.task_text = function (start, end, task) {
-      const { leaderOrManager, taskPlan, taskStatus, checkFirstId, checkSecondId } = task
+      const { leaderOrManager, taskPlan, taskStatus, checkFirstId, checkSecondId, startDateStr, endDateStr, time, text } = task
       const userIds = that.user.id
+
+      const d1 = that.dayjs(task.start_date);
+      const d2 = that.dayjs(task.end_date);
+      const texts = `${startDateStr.split(' ')[0].split('-').join('')} - ${endDateStr.split(' ')[0].split('-').join('')}  ${time}h(${ d2.diff(d1, 'day')}天) ${text}`
       // 都审核通过
       if(taskPlan == 1 && taskStatus == 0 && task.text == '请假') {
         return `<div class="task_text">
-            <div style="background: '#ff5757'">${task.text}</div>
+            <div style="background: '#ff5757'">${texts}</div>
           </div>`
       }
 
@@ -396,7 +400,7 @@ export default {
         return `<div class="task_text">
             <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'}">V</div>
-            <div>${task.text}</div>
+            <div>${texts}</div>
           </div>`
       }
 
@@ -407,12 +411,12 @@ export default {
             ${task.taskStatus == 4 ? `<div class="exclamation-circle circle" style="color: #8ecaf8">V</div> <div class="circle"></div>` : ''}
             ${task.taskStatus == 5 ? `<div class="exclamation-circle circle" style="color: #f56c6c">!</div> <div class="circle"></div>` : ''}
             ${task.taskStatus == 6 ? `<div class="exclamation-circle circle" style="color: #8ecaf8">V</div> <div class="exclamation-circle circle" style="color: #f56c6c">!</div>` : ''}
-            <div>${task.text}</div>
+            <div>${texts}</div>
           </div>`;
       }
 
       // 正常人
-      return `<div class="task_text">
+      return `<div class="task_text" style="justify-content: center;">
           <div>${task.text}</div>
         </div>`;
     };

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

@@ -1729,7 +1729,7 @@
         <el-dialog :title="$t('wdorkplanimport')" v-if="importTaskDialog" :visible.sync="importTaskDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <el-form ref="form4" >
                 <el-form-item :label="'1. '+$t('qing-xian-xia-zai-mo-ban-bing-tian-xie-hou-shang-chuan')" >
-                    <el-link type="primary" :underline="false" href="./upload/多项目任务导入模板.xlsx" download="多项目任务模板.xlsx'">{{ $t('xiaZaiDuoXiangMuRenWuMoBan') }}</el-link>
+                    <el-link type="primary" :underline="false" href="./upload/多项目任务导入模板.xlsx" download="多项目任务模板.xlsx">{{ $t('xiaZaiDuoXiangMuRenWuMoBan') }}</el-link>
                 </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">

+ 3 - 4
fhKeeper/formulahousekeeper/timesheet_mld/src/views/task/list.vue

@@ -176,11 +176,11 @@
                     </el-table-column>
                     
                     <el-table-column prop="startDate" :label="$t('starttimes')" sortable width="180"></el-table-column>
-                    <el-table-column prop="endDate" :label="$t('deadline')" width="310" fixed="right" sortable>
+                    <el-table-column prop="endDate" :label="$t('deadline')" width="380" fixed="right" sortable>
                         <template slot-scope="scope">
                             <div style="display: flex;justify-content: space-between;padding-right: 40px">
                             <span style="display: inline-block;margin-right: 55px">
-                                <span  :class="judgedate(scope.row.endDate) && searchField == '0' && scope.row.taskStatus == 0 ? 'redwarningspan autodatespan' : 'autodatespan'">{{scope.row.endDate}}</span>
+                                <span :class="judgedate(scope.row.endDate) && searchField == '0' && scope.row.taskStatus == 0 ? 'redwarningspan autodatespan' : 'autodatespan'">{{scope.row.endDate}}</span>
                             </span>
                             <!--我创建的,对于创建人在待第一审核状态下,可以进行撤回操作-->
                             <el-button v-if="(scope.row.taskStatus == 0 && ((scope.row.secondAuditorId && scope.row.secondAuditorId.indexOf(user.id) != -1) || user.roleName.indexOf('管理员') >= 0)) 
@@ -434,7 +434,7 @@
         <el-dialog :title="$t('wdorkplanimport')" v-if="importTaskDialog" :visible.sync="importTaskDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <el-form ref="form4" >
                 <el-form-item :label="'1. '+$t('qing-xian-xia-zai-mo-ban-bing-tian-xie-hou-shang-chuan')" >
-                    <el-link type="primary" :underline="false" href="./upload/多项目任务导入模板.xlsx" download="多项目任务模板.xlsx'">{{ $t('xiaZaiDuoXiangMuRenWuMoBan') }}</el-link>
+                    <el-link type="primary" :underline="false" href="./upload/多项目任务导入模板.xlsx" download="多项目任务模板.xlsx">{{ $t('xiaZaiDuoXiangMuRenWuMoBan') }}</el-link>
                 </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">
@@ -501,7 +501,6 @@
 }
 .autodatespan{
     padding: 1.5px 2.5px;
-    width: 90px;
     height: 16px;
     line-height: 16px;
     text-align: center;