Min 1 year ago
parent
commit
4d9b716cf3
12 changed files with 349 additions and 10 deletions
  1. 63 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectApprovalController.java
  2. 38 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectApprovalLogController.java
  3. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java
  4. 55 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectApprovalLog.java
  5. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectApprovalLogMapper.java
  6. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectApprovalLogService.java
  7. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectApprovalService.java
  8. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectApprovalLogServiceImpl.java
  9. 52 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectApprovalServiceImpl.java
  10. 19 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectApprovalLogMapper.xml
  11. 3 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  12. 59 4
      fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue

+ 63 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectApprovalController.java

@@ -15,10 +15,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDate;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Optional;
 import java.util.Optional;
@@ -64,6 +66,10 @@ public class ProjectApprovalController {
     private ParticipationService participationService;
     private ParticipationService participationService;
     @Resource
     @Resource
     private SysFunctionService sysFunctionService;
     private SysFunctionService sysFunctionService;
+    @Resource
+    private ProjectApprovalLogService projectApprovalLogService;
+    @Resource
+    private ReportService reportService;
 
 
     /**
     /**
      * 分页获取项目列表
      * 分页获取项目列表
@@ -148,6 +154,18 @@ public class ProjectApprovalController {
             }
             }
             projectApprovalCheckService.saveOrUpdateBatch(projectApprovalCheckList);
             projectApprovalCheckService.saveOrUpdateBatch(projectApprovalCheckList);
         }
         }
+        //新增操作记录数据
+        ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
+        projectApprovalLog.setCreateTime(LocalDateTime.now());
+        projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+        if(projectApproval.getId()==null){
+            //提交
+            projectApprovalLog.setType(0);
+        }else {
+            //编辑
+            projectApprovalLog.setType(1);
+        }
+        projectApprovalLogService.save(projectApprovalLog);
         return msg;
         return msg;
     }
     }
 
 
@@ -203,12 +221,15 @@ public class ProjectApprovalController {
         Optional<ProjectApprovalCheck> first = projectApprovalChecks.stream().filter(p -> p.getUserId().equals(user.getId())&&p.getStatus()==0).findFirst();
         Optional<ProjectApprovalCheck> first = projectApprovalChecks.stream().filter(p -> p.getUserId().equals(user.getId())&&p.getStatus()==0).findFirst();
 //        boolean hasAllPriviledge = sysFunctionService.hasPriviledge(user.getRoleId(), "管理全部立项申请");
 //        boolean hasAllPriviledge = sysFunctionService.hasPriviledge(user.getRoleId(), "管理全部立项申请");
 //        boolean hasCheckPriviledge = sysFunctionService.hasPriviledge(user.getRoleId(), "审核立项申请");
 //        boolean hasCheckPriviledge = sysFunctionService.hasPriviledge(user.getRoleId(), "审核立项申请");
-        if(projectApprovalChecks.size()>0){
-            if(!first.isPresent()){
-                msg.setError("审核人验证失败,请按照审核人顺序审核");
-                return msg;
+        if(checkType!=3){
+            if(projectApprovalChecks.size()>0){
+                if(!first.isPresent()){
+                    msg.setError("审核人验证失败,请按照审核人顺序审核");
+                    return msg;
+                }
             }
             }
         }
         }
+        ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
         switch (checkType){
         switch (checkType){
             /*审核通过*/
             /*审核通过*/
             case 1:
             case 1:
@@ -257,18 +278,56 @@ public class ProjectApprovalController {
                     projectBasecostService.saveBatch(projectBasecostList);
                     projectBasecostService.saveBatch(projectBasecostList);
                     participationService.saveBatch(participationList);
                     participationService.saveBatch(participationList);
                     projectAuditorService.saveBatch(projectAuditorList);
                     projectAuditorService.saveBatch(projectAuditorList);
+                    //新增操作记录数据
+                    projectApprovalLog.setCreateTime(LocalDateTime.now());
+                    projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+                    //通过
+                    projectApprovalLog.setType(2);
+                    projectApprovalLogService.save(projectApprovalLog);
                 }
                 }
                 break;
                 break;
             /*驳回*/
             /*驳回*/
             case 2:
             case 2:
                 projectApproval.setStatus(2);
                 projectApproval.setStatus(2);
                 projectApprovalService.updateById(projectApproval);
                 projectApprovalService.updateById(projectApproval);
+                //新增操作记录数据
+                projectApprovalLog.setCreateTime(LocalDateTime.now());
+                projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+                //驳回
+                projectApprovalLog.setType(3);
+                projectApprovalLogService.save(projectApprovalLog);
                 break;
                 break;
             /*撤销*/
             /*撤销*/
             case 3:
             case 3:
+                Project project = projectService.getOne(new LambdaQueryWrapper<Project>().eq(Project::getApproveId,projectApproval.getId()));
+                if(project!=null){
+                    int count = reportService.count(new LambdaQueryWrapper<Report>().eq(Report::getProjectId, project.getId()));
+                    if(count>0){
+                        msg.setError("已存在填报数据无法撤销立项");
+                        return msg;
+                    }
+                    projectAuditorService.remove(new LambdaQueryWrapper<ProjectAuditor>().eq(ProjectAuditor::getProjectId,project.getId()));
+                    projectBasecostService.remove(new LambdaQueryWrapper<ProjectBasecost>().eq(ProjectBasecost::getProjectId,project.getId()));
+                    participationService.remove(new LambdaQueryWrapper<Participation>().eq(Participation::getProjectId,project.getId()));
+                    project.deleteById(project.getId());
+                }
+                projectApproval.setStatus(3);
+                projectApprovalService.updateById(projectApproval);
+                //新增操作记录数据
+                projectApprovalLog.setCreateTime(LocalDateTime.now());
+                projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+                //驳回
+                projectApprovalLog.setType(4);
+                projectApprovalLogService.save(projectApprovalLog);
                 break;
                 break;
         }
         }
         return msg;
         return msg;
     }
     }
+
+
+    @RequestMapping("/importData")
+    public HttpRespMsg importData(MultipartFile multipartFile){
+        return projectApprovalService.importData(multipartFile);
+    }
 }
 }
 
 

+ 38 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectApprovalLogController.java

@@ -0,0 +1,38 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.ProjectApprovalLog;
+import com.management.platform.service.ProjectApprovalLogService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-21
+ */
+@RestController
+@RequestMapping("/project-approval-log")
+public class ProjectApprovalLogController {
+    @Resource
+    private ProjectApprovalLogService projectApprovalLogService;
+
+    @RequestMapping("/listById")
+    public HttpRespMsg listById(Integer id){
+        HttpRespMsg msg=new HttpRespMsg();
+        List<ProjectApprovalLog> list = projectApprovalLogService.list(new LambdaQueryWrapper<ProjectApprovalLog>().eq(ProjectApprovalLog::getProjectApprovalId, id).orderByAsc(ProjectApprovalLog::getCreateTime));
+        msg.setData(list);
+        return msg;
+    }
+
+}
+

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -459,6 +459,12 @@ public class Project extends Model<Project> {
     @TableField("from_outside")
     @TableField("from_outside")
     private Integer fromOutside;
     private Integer fromOutside;
 
 
+    /**
+     * 立项id
+     */
+    @TableField("approve_id")
+    private Integer approveId;
+
     /**
     /**
      * 预估工时表:任务分组
      * 预估工时表:任务分组
      */
      */

+ 55 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectApprovalLog.java

@@ -0,0 +1,55 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProjectApprovalLog extends Model<ProjectApprovalLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 操作人姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 操作类型 0-提交 1-编辑 2-通过 3-驳回 4-撤销
+     */
+    @TableField("type")
+    private Integer type;
+
+    @TableField("project_approval_id")
+    private Integer projectApprovalId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectApprovalLogMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProjectApprovalLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-21
+ */
+public interface ProjectApprovalLogMapper extends BaseMapper<ProjectApprovalLog> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectApprovalLogService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProjectApprovalLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-21
+ */
+public interface ProjectApprovalLogService extends IService<ProjectApprovalLog> {
+
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectApprovalService.java

@@ -4,6 +4,7 @@ import com.management.platform.entity.ProjectApproval;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
 
@@ -19,4 +20,5 @@ public interface ProjectApprovalService extends IService<ProjectApproval> {
 
 
     HttpRespMsg listByPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField, String statuses, Integer category,Integer viewId, HttpServletRequest request);
     HttpRespMsg listByPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField, String statuses, Integer category,Integer viewId, HttpServletRequest request);
 
 
+    HttpRespMsg importData(MultipartFile multipartFile);
 }
 }

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectApprovalLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ProjectApprovalLog;
+import com.management.platform.mapper.ProjectApprovalLogMapper;
+import com.management.platform.service.ProjectApprovalLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-21
+ */
+@Service
+public class ProjectApprovalLogServiceImpl extends ServiceImpl<ProjectApprovalLogMapper, ProjectApprovalLog> implements ProjectApprovalLogService {
+
+}

+ 52 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectApprovalServiceImpl.java

@@ -9,13 +9,19 @@ import com.management.platform.mapper.ProjectMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.*;
 import com.management.platform.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import java.io.*;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -99,14 +105,21 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
             List<ProjectApprovalCheck> checkList = approvalCheckList.stream().filter(a -> a.getProjectApprovalId().equals(r.getId())).collect(Collectors.toList());
             List<ProjectApprovalCheck> checkList = approvalCheckList.stream().filter(a -> a.getProjectApprovalId().equals(r.getId())).collect(Collectors.toList());
             Optional<ProjectApprovalCheck> first = checkList.stream().filter(c -> c.getUserId().equals(user.getId())&&c.getStatus()==0).findFirst();
             Optional<ProjectApprovalCheck> first = checkList.stream().filter(c -> c.getUserId().equals(user.getId())&&c.getStatus()==0).findFirst();
             if(first.isPresent()){
             if(first.isPresent()){
+                //针对当前登录人员 作为审核人检查是否有审核权限
                 boolean anyMatch = checkList.stream().anyMatch(c -> c.getSeq() < first.get().getSeq() && c.getStatus() == 0);
                 boolean anyMatch = checkList.stream().anyMatch(c -> c.getSeq() < first.get().getSeq() && c.getStatus() == 0);
                 if(!anyMatch){
                 if(!anyMatch){
                     canCheck=1;
                     canCheck=1;
                 }
                 }
             }
             }
+            //有权限可编辑
             if(hasAllPriviledge||hasCheckPriviledge){
             if(hasAllPriviledge||hasCheckPriviledge){
                 canCheck=1;
                 canCheck=1;
             }
             }
+            //全部审核通过的情况不可编辑
+            boolean b = checkList.stream().allMatch(c -> c.getStatus().equals(1));
+            if(b){
+                canCheck=0;
+            }
             r.setCanChecked(canCheck);
             r.setCanChecked(canCheck);
         });
         });
         result.put("records",records);
         result.put("records",records);
@@ -114,4 +127,43 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
         msg.setData(result);
         msg.setData(result);
         return msg;
         return msg;
     }
     }
+
+    @Override
+    public HttpRespMsg importData(MultipartFile multipartFile) {
+        String fileName = multipartFile.getOriginalFilename();
+        File file = new File(fileName == null ? "file" : fileName);
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        try {
+            //读取文件输入流
+            inputStream = multipartFile.getInputStream();
+            outputStream = new FileOutputStream(file);
+            byte[] buffer = new byte[4096];
+            int temp = 0;
+            while ((temp = inputStream.read(buffer, 0, 4096)) != -1) {
+                //输入流数据写到输出流
+                outputStream.write(buffer, 0, temp);
+            }
+            inputStream.close();
+            outputStream.close();
+            //然后解析表格
+            XSSFWorkbook workbook = new XSSFWorkbook(file);
+            XSSFSheet sheet = workbook.getSheetAt(0);
+            //由于第一行需要指明列对应的标题
+            int rowNum = sheet.getLastRowNum();
+            for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
+                XSSFRow row = sheet.getRow(rowIndex);
+                if (row == null) {
+                    continue;
+                }
+                //跳过空行
+                if (ExcelUtil.isRowEmpty(row)) {
+                    continue;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 }
 }

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectApprovalLogMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ProjectApprovalLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProjectApprovalLog">
+        <id column="id" property="id" />
+        <result column="user_name" property="userName" />
+        <result column="create_time" property="createTime" />
+        <result column="type" property="type" />
+        <result column="project_approval_id" property="projectApprovalId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, user_name, create_time, type, project_approval_id
+    </sql>
+
+</mapper>

File diff suppressed because it is too large
+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml


+ 59 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue

@@ -40,7 +40,14 @@
                         <el-table-column type="selection" width="60" :selectable="isSelectable">
                         <el-table-column type="selection" width="60" :selectable="isSelectable">
                         </el-table-column>
                         </el-table-column>
                         <el-table-column prop="projectCode" :label="$t('Itemno')"  width="150"></el-table-column>
                         <el-table-column prop="projectCode" :label="$t('Itemno')"  width="150"></el-table-column>
-                        <el-table-column prop="projectName" :label="$t('headerTop.projectName')" min-width="250" ></el-table-column>
+                        <el-table-column prop="projectName" :label="$t('headerTop.projectName')" min-width="250" sortable="custom">
+                        <template slot-scope="scope">
+                            <div> 
+                                <el-button type="text" v-if="scope.row.isPublic==0" @click="showProjectApprovalDeatil(scope.row)">{{scope.row.projectName}}</el-button>
+                                <span v-else>{{scope.row.projectName}}</span>
+                            </div>
+                        </template>
+                    </el-table-column>
                         <el-table-column prop="categoryName" :label="$t('projectclassification')"  width="140"></el-table-column>
                         <el-table-column prop="categoryName" :label="$t('projectclassification')"  width="140"></el-table-column>
                         <el-table-column prop="isPublic" :label="'项目类型'"  width="140">
                         <el-table-column prop="isPublic" :label="'项目类型'"  width="140">
                             <template slot-scope="scope">{{scope.row.isPublic==0?"正式项目":"非项目"}}</template>
                             <template slot-scope="scope">{{scope.row.isPublic==0?"正式项目":"非项目"}}</template>
@@ -71,10 +78,10 @@
                         </el-table-column>
                         </el-table-column>
                         <el-table-column :label="$t('operation')" :width="300" align="left" fixed="right">
                         <el-table-column :label="$t('operation')" :width="300" align="left" fixed="right">
                             <template slot-scope="scope">
                             <template slot-scope="scope">
-                                <el-button size="mini" type="primary" @click="handleAdd(scope.$index, scope.row)">{{'编辑'}}</el-button>
+                                <el-button size="mini" type="primary" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck)&&scope.row.status==2&&scope.row.canChecked==1" @click="handleAdd(scope.$index, scope.row)">{{'编辑'}}</el-button>
                                 <el-button size="mini" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0 &&scope.row.canChecked==1 "  @click="check(scope.row,1)">{{'通过'}}</el-button>
                                 <el-button size="mini" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0 &&scope.row.canChecked==1 "  @click="check(scope.row,1)">{{'通过'}}</el-button>
-                                <el-button size="mini" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status!=2 &&scope.row.canChecked==1" @click="check(scope.row,2)">{{'驳回'}}</el-button>
-                                <el-button size="mini" v-if="(permissions.projectApprovalEdit ||permissions.projectApprovalCheck)&&scope.row.canChecked==1 && scope.row.status==1" @click="check(scope.row,3)">{{'撤销'}}</el-button>
+                                <el-button size="mini" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0 &&scope.row.canChecked==1" @click="check(scope.row,2)">{{'驳回'}}</el-button>
+                                <el-button size="mini" v-if="(permissions.projectApprovalEdit ||permissions.projectApprovalCheck) && scope.row.status==1" @click="check(scope.row)">{{'撤销'}}</el-button>
                             </template>
                             </template>
                         </el-table-column>
                         </el-table-column>
                     </el-table>
                     </el-table>
@@ -283,6 +290,43 @@
                             <el-button type="primary" @click="userDetailVisible = false" >{{ $t('btn.determine') }}</el-button>
                             <el-button type="primary" @click="userDetailVisible = false" >{{ $t('btn.determine') }}</el-button>
                         </div>
                         </div>
                     </el-dialog>
                     </el-dialog>
+
+                    <!--查看立项-->
+                    <el-dialog :title="$t('Checkthedetails')" v-if="projectApprovalDetailVisible" :visible.sync="projectApprovalDetailVisible" :close-on-click-modal="false" customClass="customWidth" width="400px">
+                        <div class="line"><span>{{'项目编号:'}}</span><span>{{projectApprocalDetail.projectCode}}</span></div>
+                        <div class="line"><span>{{'项目名称:'}}</span><span>{{projectApprocalDetail.projectName}}</span></div>
+                        <div class="line"><span>{{'项目分类:'}}</span><span>{{projectApprocalDetail.categoryName}}</span></div>
+                        <div class="line"><span>{{'项目类型:'}}</span><span>{{projectApprocalDetail.isPublic==0?"正式项目":"非项目"}}</span></div>
+                        <div class="line"><span>{{'项目描述:'}}</span><span>{{projectApprocalDetail.projectDesc}}</span></div>
+                        <div class="line"><span>{{'全部参与人:'}}</span>
+                            <span v-if="user.userNameNeedTranslate != 1">{{projectApprocalDetail.participationApprovalList.map(v=>v.userName).join(",")}}</span>
+                            <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='projectApprocalDetail.participationApprovalList.map(v=>v.userName).join(",")'></ww-open-data></span>
+                        </div>
+                        <div class="line"><span>{{'项目经理:'}}</span>
+                            <span v-if="user.userNameNeedTranslate != 1">{{projectApprocalDetail.inchargerName}}</span>
+                            <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='projectApprocalDetail.inchargerName'></ww-open-data></span>
+                        </div>
+                        <div class="line"><span>{{'日报审核人:'}}</span>
+                            <span v-if="user.userNameNeedTranslate != 1">{{projectApprocalDetail.projectApprovalAuditorList.map(v=>v.auditorName).join(",")}}</span>
+                            <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='projectApprocalDetail.projectApprovalAuditorList.map(v=>v.auditorName).join(",")'></ww-open-data></span>
+                        </div>
+                        <div class="line"><span>{{'级别:'}}</span><span>{{importanceListLable[projectApprocalDetail.level-1]}}</span></div>
+                        <div class="line"><span>{{'合同金额:'}}</span><span>{{projectApprocalDetail.contractAmount}}</span></div>
+                        <el-divider></el-divider>
+                        <div class="line">
+                            <span>成本基线</span>
+                        </div>
+                        <div class="line">
+                            <span>{{'计划开始日期:'}}</span><span>{{projectApprocalDetail.planStartDate}}</span>
+                            <span>{{'计划结束日期:'}}</span><span>{{projectApprocalDetail.planEndDate}}</span>
+                        </div>
+                        <div class="line" v-for="(item,index) in projectApprocalDetail.projectApprovalBasecostList">
+                            <span>{{item.baseName+":"}}</span><span>{{item.baseAmount}}</span>
+                        </div>
+                        <div slot="footer" class="dialog-footer">
+                            <el-button type="primary" @click="projectApprovalDetailVisible = false" >{{'关闭'}}</el-button>
+                        </div>
+                    </el-dialog>
             </div>
             </div>
         </div>
         </div>
     </section>
     </section>
@@ -350,6 +394,8 @@ return {
     }],
     }],
     idx: 1,
     idx: 1,
     tableHeight: 0,
     tableHeight: 0,
+    projectApprovalDetailVisible:false,
+    projectApprocalDetail:{},
 }
 }
 },
 },
 computed: {},
 computed: {},
@@ -1133,6 +1179,15 @@ methods: {
             });
             });
             }
             }
         );
         );
+    },
+    showProjectApprovalDeatil(item){
+        this.projectApprovalDetailVisible=true
+        this.http.post('/project-approval/getDetail', {id: item.id},
+        res => {
+        if (res.code == "ok") {
+            this.projectApprocalDetail=res.data
+        }
+        });
     }
     }
 },
 },
 }
 }