Переглянути джерело

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

QuYueTing 1 день тому
батько
коміт
52487e1b0a

+ 79 - 11
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -13591,13 +13591,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("token"));
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
         CompanyDingding dingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", user.getCompanyId()));
-        List<UserCustom> userCustoms = userCustomMapper.selectList(new QueryWrapper<UserCustom>().eq("company_id", user.getCompanyId()).orderByAsc("id"));
         List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部部门FTE计划报表");
         List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门FTE计划报表");
         List<Integer> deptIds=null;
         List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
         List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
         //判断查看权限
         if(functionAllList.size()==0){
             deptIds=new ArrayList<>();
@@ -13630,24 +13630,64 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<Map<String, Object>> list = projectMapper.getFTETaskPlanData(user.getCompanyId(), startDate, endDate, null, null, area, userId, null, null, null, deptIds, departmentId);
         List<List<String>> dataList=new ArrayList<>();
         List<String> titleList=new ArrayList<>();
-        List<String> subtitle=new ArrayList<>();
 
         titleList.add("序号");
-        titleList.add("岗位");
-        titleList.add("项目编号");
-        titleList.add("项目名称");
-        titleList.add("姓名");
+        titleList.add("项目分类");
+        titleList.add("项目经理");
+        titleList.add("研究中心");
+        titleList.add("任务分组");
+        titleList.add("投入阶段");
+        titleList.add("工作内容");
+        titleList.add("一级审核人");
+        titleList.add("二级审核人");
         titleList.add("计划工时(H)");
         titleList.add("FTE(计划工时/当月计划工时基数)");
+        titleList.add("审核状态");
         dataList.add(titleList);
 
         for (int i = 0; i < list.size(); i++) {
             List<String> item=new ArrayList<>();
             item.add((i+1)+"");
-            item.add(list.get(i).get("area")==null?"":list.get(i).get("area").toString());
-            item.add(list.get(i).get("projectCode")==null?"":list.get(i).get("projectCode").toString());
-            item.add(list.get(i).get("projectName")==null?"":list.get(i).get("projectName").toString());
-            item.add(list.get(i).get("userName")==null?"":list.get(i).get("userName").toString());
+            item.add(list.get(i).get("categoryName")==null?"":list.get(i).get("categoryName").toString());
+            String inchargerId = list.get(i).get("inchargerId") != null ? list.get(i).get("inchargerId").toString() : "";
+            if (!StringUtils.isEmpty(inchargerId)){
+                Optional<User> first = userList.stream().filter(u -> u.getId().equals(inchargerId)).findFirst();
+                if (first.isPresent()){
+                    item.add(first.get().getName());
+                }else {
+                    item.add("");
+                }
+            }else {
+                item.add("");
+            }
+            item.add(list.get(i).get("associateDegreeNames")==null?"":list.get(i).get("associateDegreeNames").toString());
+            item.add(list.get(i).get("groupName")==null?"":list.get(i).get("groupName").toString());
+            item.add(list.get(i).get("stagesName")==null?"":list.get(i).get("stagesName").toString());
+            item.add(list.get(i).get("taskName")==null?"":list.get(i).get("taskName").toString());
+
+            String firstAuditorId = list.get(i).get("firstAuditorId") != null ? list.get(i).get("firstAuditorId").toString() : "";
+            if (!StringUtils.isEmpty(firstAuditorId)){
+                Optional<User> first = userList.stream().filter(u -> u.getId().equals(firstAuditorId)).findFirst();
+                if (first.isPresent()){
+                    item.add(first.get().getName());
+                }else {
+                    item.add("");
+                }
+            }else {
+                item.add("");
+            }
+
+            String secondAuditorId = list.get(i).get("secondAuditorId") != null ? list.get(i).get("secondAuditorId").toString() : "";
+            if (!StringUtils.isEmpty(secondAuditorId)){
+                Optional<User> first = userList.stream().filter(u -> u.getId().equals(secondAuditorId)).findFirst();
+                if (first.isPresent()){
+                    item.add(first.get().getName());
+                }else {
+                    item.add("");
+                }
+            }else {
+                item.add("");
+            }
             item.add(list.get(i).get("planHours")==null?"": String.valueOf(new BigDecimal(list.get(i).get("planHours").toString()).setScale(2,BigDecimal.ROUND_HALF_UP)));
             item.add(
                     list.get(i).get("planHours") == null ? "" :
@@ -13659,9 +13699,37 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                     )
                                     .toString()
             );
+
+            String auditStatus = list.get(i).get("auditStatus") != null ? list.get(i).get("auditStatus").toString() : "";
+            if (StringUtils.isEmpty(auditStatus)) {
+                item.add("");
+            }else {
+                switch (auditStatus) {
+                    case "0":
+                        item.add("进行中");
+                        break;
+                    case "1":
+                        item.add("已完成");
+                        break;
+                    case "2":
+                        item.add("已撤销");
+                        break;
+                    case "3":
+                        item.add("待第一审核人审核");
+                        break;
+                    case "4":
+                        item.add("待第二审核人审核");
+                        break;
+                    case "5":
+                        item.add("第一审核人驳回");
+                        break;
+                    case "6":
+                        item.add("第二审核人驳回");
+                        break;
+                }
+            }
             dataList.add(item);
         }
-
         String fileName = "FTE计划报表"+System.currentTimeMillis();
         try {
             return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName, dataList, path);

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -806,6 +806,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                 task.setCreatorColor(creator.getColor());
                 task.setCreateDate(LocalDate.now());
                 task.setIndate(LocalDateTime.now());
+                task.setTaskStatus(TaskController.STATUS_FIRST_CHECK);
                 taskMapper.insert(task);
 
 

+ 7 - 2
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/ProjectMapper.xml

@@ -2882,11 +2882,16 @@
         ORDER BY project.id, task.start_date
     </select>
     <select id="getFTETaskPlanData" resultType="java.util.Map">
-        select t.id,  u.plate1 area, p.project_code projectCode,p.project_name projectName,u.name userName, t.plan_hours planHours   from task t
+        select t.id,  u.plate1 area, p.project_code projectCode,p.project_name projectName,u.name userName, t.plan_hours planHours
+        ,p.category_name categoryName,p.incharger_id inchargerId,p.associate_degree_names associateDegreeNames,tg.name groupName,
+        stages.stages_name stagesName,t.name taskName,te.first_auditor_id firstAuditorId, te.second_auditor_id secondAuditorId,t.task_status auditStatus
+        from task t
+          left join stages on stages.id = t.stages_id
+          left join task_group tg on tg.id=t.group_id
           left join project p on t.project_id=p.id
           LEFT JOIN task_executor te on t.id=te.task_id
           INNER JOIN user u on u.id=te.executor_id
-        WHERE u.company_id=#{companyId} and t.task_plan=1 and t.task_status &lt;3 and t.task_plan_type !=3
+        WHERE u.company_id=#{companyId} and ( t.task_status = 3 OR t.task_status = 4 )
         <if test="area!=null and area != '' ">
             and u.plate1 = #{area}
         </if>

BIN
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/upload/多项目任务模板.xlsx


+ 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;