Bladeren bron

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

QuYueTing 4 maanden geleden
bovenliggende
commit
492680dcdd

+ 202 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectApprovalController.java

@@ -185,6 +185,7 @@ public class ProjectApprovalController {
             List<ProjectApprovalCheck> projectApprovalCheckList = projectApproval.getProjectApprovalCheckList();
             projectApprovalCheckList.forEach(p->{
                 p.setProjectApprovalId(projectApproval.getId());
+                p.setStatus(0);
             });
             projectApprovalCheckList=projectApprovalCheckList.stream().filter(p-> !StringUtils.isEmpty(p.getUserId())).collect(Collectors.toList());
             for (int i = 0; i < projectApprovalCheckList.size(); i++) {
@@ -279,6 +280,207 @@ public class ProjectApprovalController {
         return msg;
     }
 
+    @RequestMapping("/tempSave")
+    @Transactional(rollbackFor = Exception.class)
+    public HttpRespMsg tempSave(@RequestBody ProjectApproval projectApproval) throws Exception{
+        HttpRespMsg msg=new HttpRespMsg();
+        String[] arr=new String[]{"正常","紧急","重要","重要且紧急","低风险","中风险","高风险"};
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = user.getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
+        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
+        List<ProjectCategory> categoryList = projectCategoryService.list(new LambdaQueryWrapper<ProjectCategory>().eq(ProjectCategory::getCompanyId, companyId));
+        //编辑重新提交修改状态为待提交
+        projectApproval.setStatus(-1);
+        if(projectApproval.getId()==null){
+            projectApproval.setCompanyId(companyId);
+            projectApproval.setCreateDate(LocalDate.now());
+            projectApproval.setCreatorId(user.getId());
+        }
+        //新增操作记录数据
+        ProjectApprovalLog projectApprovalLog=new ProjectApprovalLog();
+        projectApprovalLog.setCreateTime(LocalDateTime.now());
+        projectApprovalLog.setUserName(user.getName());
+        if(projectApproval.getId()==null){
+            //暂存
+            projectApprovalLog.setType(-1);
+        }else {
+            //提交
+            projectApprovalLog.setType(0);
+        }
+        Optional<ProjectCategory> category = categoryList.stream().filter(c -> c.getId().equals(projectApproval.getCategory())).findFirst();
+        if(category.isPresent()){
+            projectApproval.setCategoryName(category.get().getName());
+        }
+        if(projectApproval.getInchargerId()!=null){
+            User id = userMapper.selectById(projectApproval.getInchargerId());
+            projectApproval.setInchargerName(id.getName());
+        }
+        if (projectApproval.getId() != null) {
+            if (org.apache.commons.lang3.StringUtils.isNotEmpty(projectApproval.getProjectCode())){
+                //编辑
+                Integer count=projectMapper.selectCount(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, companyId)
+                        .eq( Project::getProjectCode, projectApproval.getProjectCode())
+                        .ne(Project::getApproveId,projectApproval.getId()));
+                Integer count1=projectApprovalService.count(new LambdaQueryWrapper<ProjectApproval>().eq(ProjectApproval::getCompanyId, companyId).eq(ProjectApproval::getProjectCode, projectApproval.getProjectCode()).ne(ProjectApproval::getId,projectApproval.getId()));
+                if(count>0||count1>0){
+                    msg.setError("已存在项目编号为["+projectApproval.getProjectCode()+"]的项目/立项");
+                    return msg;
+                }
+            }
+        } else {
+            //新增
+            if(!StringUtils.isEmpty(projectApproval.getProjectCode())){
+                Integer count=projectMapper.selectCount(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, companyId).eq(Project::getProjectCode, projectApproval.getProjectCode()));
+                Integer count1=projectApprovalService.count(new LambdaQueryWrapper<ProjectApproval>().eq(ProjectApproval::getCompanyId, companyId).eq(ProjectApproval::getProjectCode, projectApproval.getProjectCode()));
+                if(count>0||count1>0){
+                    msg.setError("已存在项目编号为["+projectApproval.getProjectCode()+"]的项目/立项");
+                    return msg;
+                }
+            }
+        }
+
+        if(!projectApprovalService.saveOrUpdate(projectApproval)){
+            msg.setError("验证失败");
+            return msg;
+        }
+        projectApprovalLog.setProjectApprovalId(projectApproval.getId());
+        projectApprovalLogService.save(projectApprovalLog);
+        participationApprovalService.remove(new LambdaQueryWrapper<ParticipationApproval>().eq(ParticipationApproval::getProjectApprovalId,projectApproval.getId()));
+        projectApprovalBasecostService.remove(new LambdaQueryWrapper<ProjectApprovalBasecost>().eq(ProjectApprovalBasecost::getProjectApprovalId,projectApproval.getId()));
+        projectApprovalAuditorService.remove(new LambdaQueryWrapper<ProjectApprovalAuditor>().eq(ProjectApprovalAuditor::getProjectApprovalId,projectApproval.getId()));
+        projectApprovalCheckService.remove(new LambdaQueryWrapper<ProjectApprovalCheck>().eq(ProjectApprovalCheck::getProjectApprovalId,projectApproval.getId()).eq(ProjectApprovalCheck::getStatus,0));
+        if(projectApproval.getParticipationApprovalList()!=null&&projectApproval.getParticipationApprovalList().size()>0){
+            List<ParticipationApproval> participationApprovalList = projectApproval.getParticipationApprovalList();
+            participationApprovalList.forEach(p->{
+                p.setProjectApprovalId(projectApproval.getId());
+                Optional<User> first = userList.stream().filter(u -> u.getId().equals(p.getUserId())).findFirst();
+                if(first.isPresent()){
+                    p.setUserName(first.get().getName());
+                }
+            });
+            if(participationApprovalList.size()>0){
+                participationApprovalService.saveBatch(participationApprovalList);
+            }
+        }
+        if(projectApproval.getProjectApprovalBasecostList()!=null&&projectApproval.getProjectApprovalBasecostList().size()>0){
+            List<ProjectApprovalBasecost> projectApprovalBasecostList = projectApproval.getProjectApprovalBasecostList();
+            projectApprovalBasecostList.forEach(p->{
+                p.setProjectApprovalId(projectApproval.getId());
+            });
+            projectApprovalBasecostService.saveBatch(projectApprovalBasecostList);
+        }
+        if(projectApproval.getProjectApprovalAuditorList()!=null&&projectApproval.getProjectApprovalAuditorList().size()>0){
+            List<ProjectApprovalAuditor> projectApprovalAuditorList = projectApproval.getProjectApprovalAuditorList();
+            projectApprovalAuditorList.forEach(p->{
+                p.setProjectApprovalId(projectApproval.getId());
+                Optional<User> first = userList.stream().filter(u -> u.getId().equals(p.getAuditorId())).findFirst();
+                if(first.isPresent()){
+                    p.setAuditorName(first.get().getName());
+                }
+            });
+            if(projectApprovalAuditorList.size()>0){
+                projectApprovalAuditorService.saveBatch(projectApprovalAuditorList);
+            }
+        }
+        if(projectApproval.getProjectApprovalCheckList()!=null&&projectApproval.getProjectApprovalCheckList().size()>0){
+            List<ProjectApprovalCheck> projectApprovalCheckList = projectApproval.getProjectApprovalCheckList();
+            projectApprovalCheckList.forEach(p->{
+                p.setProjectApprovalId(projectApproval.getId());
+            });
+            projectApprovalCheckList=projectApprovalCheckList.stream().filter(p-> !StringUtils.isEmpty(p.getUserId())).collect(Collectors.toList());
+            for (int i = 0; i < projectApprovalCheckList.size(); i++) {
+                projectApprovalCheckList.get(i).setSeq(i+1);
+            }
+            if(projectApprovalCheckList.size()>0){
+                projectApprovalCheckService.saveOrUpdateBatch(projectApprovalCheckList);
+            }
+        }
+
+        if(projectApproval.getStatus()==-1){
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                //更新审核人 发送到企业微信完成审核动作
+                String detail = wxCorpInfoService.getTemplateDetail(companyId);
+                if(detail!=null&&!StringUtils.isEmpty(detail)){
+                    DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                    JSONObject resultOb = JSONObject.parseObject(detail);
+                    JSONObject template_content = resultOb.getJSONObject("template_content");
+                    JSONArray controls = template_content.getJSONArray("controls");
+                    Map<String,Object> templateMap=new HashMap<>();
+                    WxCorpTemplate template = wxCorpTemplateService.getById(companyId);
+                    JSONObject requestData=new JSONObject();
+                    requestData.put("template_id",template.getTemplateId());
+                    requestData.put("creator_userid",user.getCorpwxUserid());
+                    //审核模式  0-通过接口指定审批人、抄送人(此时approver、notifyer等参数可用);1-使用此模板在管理后台设置的审批流程(需要保证审批流程中没有“申请人自选”节点),支持条件审批
+                    requestData.put("use_template_approver",1);
+                    JSONObject apply_data=new JSONObject();
+                    JSONArray contents=new JSONArray();
+                    for (int i = 0; i < controls.size(); i++) {
+                        JSONObject item = controls.getJSONObject(i);
+                        JSONObject property = item.getJSONObject("property");
+                        //控件id指定到指定控件
+                        String templateId = property.getString("id");
+                        //控件名称 这里为了统一工时管家格式 限制企业需要用到我们提供的名称(项目编号 项目名称 项目分类 项目类型 项目经理 级别 合同金额 计划开始日期 计划结束日期)
+                        JSONArray titleArray = property.getJSONArray("title");
+                        //控件类型 在这里统一用Text  Text-文本;Textarea-多行文本;Number-数字;Money-金额;Date-日期/日期+时间;Selector-单选/多选;Contact-成员/部门;Tips-说明文字;File-附件;Table-明细;Attendance-假勤控件;Vacation-请假控件;Location-位置;RelatedApproval-关联审批单;Formula-公式;DateRange-时长;BankAccount-收款账户
+                        String control = property.getString("control");
+                        //是否必填
+                        String require = property.getString("require");
+                        //是否打印
+                        String un_print = property.getString("un_print");
+                        JSONObject content=new JSONObject();
+                        content.put("control",control);
+                        content.put("id",templateId);
+                        JSONObject value=new JSONObject();
+                        JSONObject titleOb = titleArray.getJSONObject(0);
+                        switch (titleOb.getString("text")){
+                            case "项目编号":
+                                value.put("text",projectApproval.getProjectCode()==null?"":projectApproval.getProjectCode());
+                                break;
+                            case "项目名称":
+                                value.put("text",projectApproval.getProjectName());
+                                break;
+                            case "项目分类":
+                                value.put("text",projectApproval.getCategoryName()==null?"":projectApproval.getCategoryName());
+                                break;
+                            case "项目类型":
+                                value.put("text",projectApproval.getIsPublic()==0?"正式项目":"非项目");
+                                break;
+                            case "项目经理":
+                                value.put("text",projectApproval.getInchargerName()==null?"":("$userName="+projectApproval.getInchargerName()+"$"));
+                                break;
+                            case "级别":
+                                value.put("text",arr[projectApproval.getLevel()-1]);
+                                break;
+                            case "合同金额":
+                                value.put("text",projectApproval.getContractAmount()==null?String.valueOf(0):String.valueOf(projectApproval.getContractAmount()));
+                                break;
+                            case "计划开始日期":
+                                value.put("text",projectApproval.getPlanStartDate()==null?"":df.format(projectApproval.getPlanStartDate()));
+                                break;
+                            case "计划结束日期":
+                                value.put("text",projectApproval.getPlanEndDate()==null?"":df.format(projectApproval.getPlanEndDate()));
+                                break;
+                        }
+                        content.put("value",value);
+                        contents.add(content);
+                    }
+                    apply_data.put("contents",contents);
+                    requestData.put("apply_data",apply_data);
+                    requestData.put("approver",new JSONArray());
+                    requestData.put("summary_list",new JSONArray());
+                    System.out.println("===============>发送到企业微信的数据"+requestData);
+                    //发送到企业微信
+                    String sp_no = wxCorpInfoService.applyEvent(request, requestData);
+                    projectApproval.setWxCorpSpNo(sp_no);
+                    projectApprovalService.updateById(projectApproval);
+                }else {
+                    throw  new Exception("企业暂未同步服务商审批模板,推送企业微信审批失败,请联系服务商!");
+                }
+            }
+        }
+        return msg;
+    }
 
     @RequestMapping("/getDetail")
     public HttpRespMsg getDetail(Integer id){

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectApproval.java

@@ -88,7 +88,7 @@ public class ProjectApproval extends Model<ProjectApproval> {
     private Integer level;
 
     /**
-     * 立项状态 0-待审核 1-已通过 2-已驳回
+     * 立项状态 -1-待提交 0-待审核 1-已通过 2-已驳回
      */
     @TableField("status")
     private Integer status;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectApprovalCheck.java

@@ -37,7 +37,7 @@ public class ProjectApprovalCheck extends Model<ProjectApprovalCheck> {
     private String userId;
 
     /**
-     * 审核状态 0-待审核 1-审核通过 2-已驳回
+     * 审核状态 -1待提交 0-待审核 1-审核通过 2-已驳回
      */
     @TableField("status")
     private Integer status;

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

@@ -43,7 +43,7 @@ public class ProjectApprovalLog extends Model<ProjectApprovalLog> {
     private LocalDateTime createTime;
 
     /**
-     * 操作类型 0-提交 1-编辑 2-通过 3-驳回 4-撤销
+     * 操作类型 -1 暂存 0-提交 1-编辑 2-通过 3-驳回 4-撤销
      */
     @TableField("type")
     private Integer type;

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

@@ -150,6 +150,7 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
                 }
             }
         }
+        queryWrapper.orderByDesc(ProjectApproval::getId);
         IPage<ProjectApproval> iPage = projectApprovalMapper.selectPage(new Page<>(pageIndex, pageSize), queryWrapper);
         Map<String,Object> result=new HashMap<>();
         List<ProjectApproval> records = iPage.getRecords();
@@ -890,9 +891,8 @@ public class ProjectApprovalServiceImpl extends ServiceImpl<ProjectApprovalMappe
                 break;
             /*驳回*/
             case 2:
-                ProjectApprovalCheck check = first.get();
-                check.setStatus(2);
-                projectApprovalCheckService.updateById(check);
+                projectApprovalChecks.forEach(p->p.setStatus(-1));
+                projectApprovalCheckService.saveOrUpdateBatch(projectApprovalChecks);
                 projectApproval.setStatus(2);
                 projectApproval.setRejectInfo(rejectInfo);
                 projectApprovalService.updateById(projectApproval);

+ 61 - 7
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -332,6 +332,7 @@
                 </el-upload>
                 
             </div>
+
             <el-table
                 v-loading="fileListLoading"
                 ref="filetable"
@@ -339,8 +340,9 @@
                 :header-cell-style="{'font-weight':'normal'}"
                 highlight-current-row
                 max-height="240"
+                :span-method="objectSpanMethod"
                 style="width: 100%;margin-top:10px;margin-bottom:15px">
-                <el-table-column :label="$t('headerTop.serialNumber')" prop="documentType" min-width="40" align="center">
+                <el-table-column :label="$t('headerTop.serialNumber')" prop="documentType" min-width="60" align="center">
                     <template slot-scope="scope">
                         <div>
                             {{scope.$index + 1}}
@@ -348,7 +350,7 @@
                     </template>
                 </el-table-column>
                 <el-table-column :label="$t('filenames')" prop="documentName" min-width="180"></el-table-column>
-                <el-table-column :label="$t('filesize')" prop="size" min-width="60" align="center"></el-table-column>
+                <el-table-column :label="$t('filesize')" prop="size" min-width="80" align="center"></el-table-column>
                 <el-table-column :label="$t('founder')" prop="creatorName" min-width="60" align="center">
                     <template slot-scope="scope">
                         <div>
@@ -359,17 +361,41 @@
                         </div>
                     </template>
                 </el-table-column>
-                <el-table-column :label="$t('creationtime')" prop="indate" min-width="120" align="center">
+                <el-table-column :label="$t('creationtime')" prop="indate" min-width="140" align="center">
                     <template slot-scope="scope">
                         <span>{{scope.row.indate[0] + '-' + scope.row.indate[1] + '-' + scope.row.indate[2] + '\u0020\u0020' + scope.row.indate[3] + ':' + scope.row.indate[4] + ':' + scope.row.indate[5]}}</span>
                     </template>
                 </el-table-column>
-                <el-table-column :label="$t('operation')" min-width="90">
+                <el-table-column :label="$t('operation')" min-width="90" fixed="right">
                     <template slot-scope="scope">
                         <el-link :href="scope.row.url" :download="scope.row.documentName" type="primary" style="margin-right:7px">{{ $t('other.download') }}</el-link>
                         <el-link @click="taskFileDelete(scope.row.id)">{{ $t('btn.delete') }}</el-link>
                     </template>
                 </el-table-column>
+                <el-table-column label="状态" min-width="140" v-if="user.timeType.taskFileCharge == 1" fixed="right">
+                    <template slot-scope="scope">
+                        <template v-if="scope.row.fileChargeStatus != 2">
+                            <el-link :type="{'0': 'warning', '1': 'info', '2': 'danger'}[scope.row.fileChargeStatus]" :underline="false">
+                                {{ scope.row.fileChargeStatusTextList[0] || '' }}
+                                <template v-if="(scope.row.fileChargeStatusTextList || []).length > 1">
+                                    <TranslationOpenDataText :openid='scope.row.fileChargeStatusTextList[1]'></TranslationOpenDataText>
+                                    {{ scope.row.fileChargeStatusTextList[2] || '' }}
+                                </template>
+                            </el-link>
+                        </template>
+                        <template v-else>
+                            <el-tooltip class="item" effect="dark" content="点击查看" placement="top">
+                                <el-link :type="'danger'" :underline="false" @click="showReasonForRejection(scope.row)">
+                                    {{ scope.row.fileChargeStatusTextList[0] || '' }}
+                                    <template v-if="(scope.row.fileChargeStatusTextList || []).length > 1">
+                                        <TranslationOpenDataText :openid='scope.row.fileChargeStatusTextList[1]'></TranslationOpenDataText>
+                                        {{ scope.row.fileChargeStatusTextList[2] || '' }}
+                                    </template>
+                                </el-link>
+                            </el-tooltip>
+                        </template>
+                    </template>
+                </el-table-column>
             </el-table>
         </template>
         <!-- 关联文件dialog -->
@@ -875,7 +901,7 @@ export default {
         dailyList: [],
         meetingId: '',
         integrationProjectList: [],
-        sapServiceList:[]
+        sapServiceList:[],
     };
   },
   computed: {
@@ -1351,6 +1377,13 @@ export default {
             });
         });
     },
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+        const { timeType } = this.user
+        if (columnIndex === 6 && timeType.taskFileCharge == 1) {
+            return [this.taskFileList.length, 1];
+        }
+        return [1, 1];
+    },
     // 获取任务下的文档列表
     getTaskFileList(e,eid){
         let etaskId
@@ -1362,8 +1395,15 @@ export default {
         },res => {
             if(res.code == 'ok'){
                 this.fileListLoading = false
-                this.taskFileList = res.data
-                console.log('taskFileList',res.data);
+                this.taskFileList = res.data.map(item => {
+                    let str = item.fileChargeStatusText || ''
+                    let arr = str.split(/\$|=/).filter(item => item && item !== 'userName');
+                    return {
+                        ...item,
+                        fileChargeStatusTextList: arr || []
+                    }
+                })
+                console.log(this.taskFileList, '<+======this.taskFileList')
             }else {
                 this.fileListLoading = false
                 this.$message({
@@ -1944,6 +1984,7 @@ export default {
                         type: 'success'
                     })
                     this.getTaskFileList()
+                    this.gain({ taskId: this.taskId }, 1)
                 }else {
                     this.$message({
                         message: res.msg,
@@ -1963,6 +2004,18 @@ export default {
             })
         })
     },
+    showReasonForRejection(item) {
+        const taskId = this.taskId
+        this.http.post('/task/getFileRejectReason',{
+            taskId
+        },res => {
+            if(res.code == 'ok'){
+                this.$alert(res.data, '驳回原因');
+            }else {
+                this.$message.error(res.msg)
+            }
+        },error => { this.$message.error(error) })
+    },
     // 确认关联文件
     addTaskFile(){
         if(this.addFileId == null){
@@ -2151,6 +2204,7 @@ export default {
                     message: this.$t('yi-shang-chuan'),
                     type: 'success'
                 })
+                this.gain({ taskId: this.taskId }, 1)
                 this.getTaskFileList()
             }else {
                 this.$message({

+ 128 - 15
fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue

@@ -82,18 +82,18 @@
                                 <span v-else>{{importanceListLable[scope.row.level - 1]}}</span>
                             </template>
                         </el-table-column>
-                        <el-table-column prop="status" :label="$t('other.approvalStatus')" min-width="100" >
+                        <el-table-column prop="status" :label="$t('state.states')" min-width="100" >
                             <template slot-scope="scope">
-                                {{scope.row.status == null?"-":approvalStatusStr[scope.row.status]}}
+                                {{scope.row.status == null?"-":approvalStatusStr[scope.row.status+1]}}
                             </template>
                         </el-table-column>
                         <el-table-column prop="rejectInfo" :label="$t('dismissreason')" min-width="250" ></el-table-column>
                         <el-table-column :label="$t('operation')" :width="300" align="left" fixed="right">
                             <template slot-scope="scope">
-                                <el-button size="mini" type="primary" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck)&&scope.row.status!=1" @click="handleAdd(scope.$index, scope.row)">{{'编辑'}}</el-button>
+                                <el-button size="mini" type="primary" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck)&&scope.row.status!=1" :disabled="scope.row.status!==-1&& scope.row.status!==2 "  @click="handleAdd(scope.$index, scope.row)">{{'编辑'}}</el-button>
                                 <el-button size="mini" type="success" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0" :disabled="!scope.row.isFirstCheckUser"  @click="check(scope.row,1)" >{{'通过'}}</el-button>
                                 <el-button size="mini" v-if="(permissions.projectApprovalEdit||permissions.projectApprovalCheck) && scope.row.status==0" :disabled="!scope.row.isFirstCheckUser"  @click="showDenyDialog(scope.row,2)">{{'驳回'}}</el-button>
-                                <el-button size="mini" v-if="(permissions.projectApprovalEdit ||permissions.projectApprovalCheck) && scope.row.status==1" @click="check(scope.row,3)">{{'撤销'}}</el-button>
+                                <!-- <el-button size="mini" v-if="(permissions.projectApprovalEdit ||permissions.projectApprovalCheck) && scope.row.status==-1" @click="check(scope.row,3)">{{'撤销'}}</el-button> -->
                             </template>
                         </el-table-column>
                     </el-table>
@@ -257,15 +257,15 @@
                                     <div>
                                         <div v-for="(item, index) in pointList" :key="index" style="margin-bottom: 10px; padding: 10px; border: 1px solid #e0e0e0; border-radius: 5px;">
                                             第{{index + 1}}审核人:
-                                            <el-select v-if="user.userNameNeedTranslate != 1" :disabled="item.status != 0" v-model="item.userId" style="width: 140px; margin-left: 10px;" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="manageSelect" size="small" filterable popper-class="managePopperClass">
+                                            <el-select v-if="user.userNameNeedTranslate != 1" :disabled="item.status != -1" v-model="item.userId" style="width: 140px; margin-left: 10px;" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="manageSelect" size="small" filterable popper-class="managePopperClass">
                                                 <el-option v-for="participatorItem in participator" :key="participatorItem.id" :label="participatorItem.name" :value="participatorItem.id">
                                                     <span style="float: left">{{ participatorItem.name }}</span>
                                                 </el-option>
                                             </el-select>
                                             <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :subject="participator" :subjectId="item.userId" :distinction="'12'" @selectCal="selectCal" :disabled="canOnlyModParticipator || projectManagerEdit || isShowProjectName"></selectCat>
                                             <i class="el-icon-circle-plus-outline" @click="addInput(index)" v-if="index == pointList.length - 1" style="margin-left: 10px;"></i>
-                                            <i class="el-icon-remove-outline" v-if="pointList.length > 1 && item.status == 0" @click="deleteInput(index)" style="margin-left: 10px;"></i>
-                                            <span style="margin-left: 10px;">{{ item.status == 0 ? '待审核' : item.status == 1 ? "已审核" : "已驳回" }}</span>
+                                            <i class="el-icon-remove-outline" v-if="pointList.length > 1 && item.status == -1" @click="deleteInput(index)" style="margin-left: 10px;"></i>
+                                            <span style="margin-left: 10px;">{{ item.status == -1 ? '待提交' : item.status == 0 ? "待审核" : item.status == 1 ? "已审核" : "已驳回" }}</span>
                                         </div>
                                     </div>
                                 </template>
@@ -274,6 +274,7 @@
                         <div slot="footer" class="dialog-footer;">
                             <el-button @click.native="deletePro(1, addForm)" v-if="(permissions.projectApprovalEdit) && addForm.id" style="float:left">{{ $t('btn.delete') }}</el-button>
                             <el-button @click.native="addFormVisible = false">{{ $t('btn.cancel') }}</el-button>
+                            <el-button type="primary" :disabled="addForm.status != -1" @click="tempSave" :loading="addLoading">{{ $t('btn.temporaryStorage') }}</el-button>
                             <el-button type="primary" @click="submitInsert" :loading="addLoading">{{ $t('btn.submit') }}</el-button>
                         </div>
                     </el-dialog>
@@ -465,7 +466,7 @@ return {
     page: 1,
     size: localStorage.getItem("projectPageSize")==null?20:parseInt(localStorage.getItem("projectPageSize")),
     listLoading:false,
-    approvalStatusStr:[this.$t('state.WaitingAudit'),this.$t('state.alreadyPassed'),this.$t('state.rejected'),this.$t('state.undone')],
+    approvalStatusStr:[this.$t('state.waitingsubmit'),this.$t('state.WaitingAudit'),this.$t('state.alreadyPassed'),this.$t('state.rejected'),this.$t('state.undone')],
     importanceList:[{id:1,label:this.$t('zheng-chang')},{id:2,label:this.$t('jin-ji')},{id:3,label:this.$t('zhong-yao')},{id:4,label:this.$t('zhong-yao-qie-jin-ji')}],
     importanceListLable:[this.$t('zheng-chang'), this.$t('jin-ji'), this.$t('zhong-yao'), this.$t('zhong-yao-qie-jin-ji'), this.$t('di-feng-xian'), this.$t('zhong-feng-xian'), this.$t('gao-feng-xian')],
     addFormVisible:false,
@@ -509,9 +510,9 @@ return {
     pointList:[{
         userId:"",
         seq:1,
-        status:0
+        status:-1
     }],
-    idx: 1,
+    idx: 0,
     tableHeight: 0,
     projectApprovalDetailVisible:false,
     projectApprocalDetail:{},
@@ -564,6 +565,7 @@ methods: {
                 });
                 this.addFormVisible=false
                 this.denyReasonDialog=false
+                this.denyReasonRReason='',
                 this.getList();
             } else {
                 this.$message({
@@ -705,6 +707,117 @@ methods: {
             }
         });
     },
+    tempSave() {
+        this.$refs.form1.validate(valid => {
+            if (valid) {
+                this.addLoading = true;
+                let targetData = {};
+                targetData.projectName= this.addForm.name
+                if(this.addForm.projectDesc != null) {
+                    targetData.projectDesc=this.addForm.projectDesc
+                }
+                if(this.addForm.id != null) {
+                    targetData.id=this.addForm.id
+                }
+                if(this.addForm.isPublic != null) {
+                    targetData.isPublic=this.addForm.isPublic
+                }
+                if(this.addForm.userId.length != 0 && this.addForm.isPublic == 0) {
+                    let userArray=[]
+                    for(let i in this.addForm.userId){
+                        userArray.push({
+                            "userId":this.addForm.userId[i]
+                        })
+                    }
+                    targetData.participationApprovalList=userArray
+                }
+                if(this.addForm.inchargerId != null) {
+                    targetData.inchargerId=this.addForm.inchargerId
+                }
+                if(this.addForm.code != null) {
+                    targetData.projectCode=this.addForm.code
+                }
+                if(this.addForm.planStartDate != null) {
+                    targetData.planStartDate=this.addForm.planStartDate
+                }
+                if(this.addForm.planEndDate != null) {
+                    targetData.planEndDate=this.addForm.planEndDate
+                }
+                if(this.addForm.level != null) {
+                    targetData.level=this.addForm.level
+                }
+                if(this.addForm.contractAmount != null) {
+                    targetData.contractAmount=this.addForm.contractAmount
+                }
+                if (this.projectBaseCostData != null) {
+                    targetData.projectApprovalBasecostList=this.projectBaseCostData
+                    //计算总预算成本
+                    if (this.addForm.budget == null) {
+                        this.addForm.budget = 0;
+                    }
+                    targetData.budget=this.addForm.budget
+                }
+                if (this.addForm.contractAmount) {
+                    targetData.contractAmount=this.addForm.contractAmount
+                } else {
+                    targetData.contractAmount=0
+                }
+                if (this.user.timeType.outputValueStatus == 1){
+                    targetData.outputValue=this.addForm.outputValue ? this.addForm.outputValue : 0
+                }
+                //日报审核人
+                if (this.addForm.auditUserIds) {
+                    targetData.auditUserIds=this.addForm.auditUserIds
+                }
+                if(this.addForm.auditUserIds&&this.addForm.auditUserIds.length != 0) {
+                    let userArray=[]
+                    for(let i in this.addForm.auditUserIds){
+                        userArray.push({
+                            "auditorId":this.addForm.auditUserIds[i]
+                        })
+                    }
+                    targetData.projectApprovalAuditorList=userArray
+                }
+                if(this.addForm.category != null) {
+                    targetData.category=this.addForm.category
+                }
+                if(this.addForm.status != null) {
+                    targetData.status=this.addForm.status
+                }
+                //审核人
+                if (this.pointList) {
+                    targetData.projectApprovalCheckList=this.pointList
+                }
+                this.http.JSONPost("/project-approval/tempSave",targetData,
+                res => {
+                    this.addLoading = false;
+                    if (res.code == "ok") {
+                        this.$message({
+                            message: (this.addForm.id!=null?this.$t('xiu-gai'):this.$t('create'))+this.$t('other.successful'),
+                            type: "success"
+                        });
+                        this.addFormVisible = false;
+                        this.getList();
+                        if (this.user.company.packageEngineering == 1) {
+                            this.saveProjectProfessions(res.data);
+                        }
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.addLoading = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            }
+        });
+    },
     // 获取分类条目
     getClfConfigList() {
         this.http.get('/project-category/list',
@@ -784,7 +897,7 @@ methods: {
                 bu: [],
                 manDay:0,
                 fromOutside: 0,
-                status:0,
+                status:-1,
             }
             this.projectBaseCostData = [];
             this.addFormUserNames = [];
@@ -794,7 +907,7 @@ methods: {
             }
             this.pointList=[{
                 "userId":"",
-                "status":0
+                "status":-1
             }]
         } else {
             this.http.post('/project-approval/getDetail', {id: item.id},
@@ -1192,7 +1305,7 @@ methods: {
         } else if(obj.distinction == '12') {
             this.pointList.push({
                 "userId":obj.id,
-                "status":0
+                "status":-1
             })
             this.pointList=this.pointList.filter(i=>i.userId!="")
         }
@@ -1235,7 +1348,7 @@ methods: {
                         }else{
                             this.pointList=[{
                                 "userId":"",
-                                "status":0
+                                "status":-1
                             }]
                         }
                     } else {
@@ -1304,7 +1417,7 @@ methods: {
         this.pointList.push({
             userId:"",
             seq:index+2,
-            status:0
+            status:-1
         })
     },
     deleteInput(index){

+ 284 - 11
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -6,7 +6,7 @@
                 <el-form-item :label="$t('tasklist')">
                     <div style="margin-left: 8px">
                     <!-- <el-input style="float:left;" v-model="keyword" class="input-with-select" placeholder="请输入项目名称关键字" clearable="true"> -->
-                        <el-select v-model="searchField" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')">
+                        <el-select v-model="searchField" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" v-if="idx != 3">
                             <el-option :label="$t('ongoing')" value="0" @click.native="hiddens()"></el-option>
                             <el-option :label="$t('state.completed')" value="1" @click.native="hiddens()"></el-option>
                         </el-select>
@@ -14,8 +14,13 @@
                     <!-- </el-input> -->
                     </div>
                 </el-form-item>
+                <el-form-item v-if="idx == 3">
+                    <el-input placeholder="请输入任务名称" v-model="auditFileTaskName" size="small" style="margin-top: 6px">
+                        <el-button slot="append" icon="el-icon-search" @click="getFilesAwaitingReview()"></el-button>
+                    </el-input>
+                </el-form-item>
 
-                <el-form-item :label="$t('subordinatedepartments')" v-if="user.timeType.projectWithDept">
+                <el-form-item :label="$t('subordinatedepartments')" v-if="user.timeType.projectWithDept && idx != 3">
                     <el-cascader v-model="deptId" :options="departmentList" size="small" :placeholder="$t('qing-xuan-ze-bu-men')"
                         :props="{ checkStrictly: true, expandTrigger: 'hover' }" :show-all-levels="false" clearable filterable @change="hiddens"
                     ></el-cascader>
@@ -31,7 +36,7 @@
                     </div>
                 </el-form-item>
 
-                <el-form-item :label="$t('types')">
+                <el-form-item :label="$t('types')" v-if="idx != 3">
                     <div style="margin-left: 8px">
                         <el-select v-model="typeField" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="hiddens()">
                             <el-option :label="$t('other.task')" value="0"></el-option>
@@ -49,7 +54,7 @@
                     </div>
                 </el-form-item>
 
-                <el-form-item :label="$t('lable.taskGrouping')">
+                <el-form-item :label="$t('lable.taskGrouping')" v-if="idx != 3">
                     <div style="margin-left: 8px">
                         <el-select v-model="screenTaskGroupingId" style="width:150px;" size="small" :disabled="!screenProjectId" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="hiddens()">
                             <el-option v-for="item in taskGroupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
@@ -57,7 +62,7 @@
                     </div>
                 </el-form-item>
 
-                <el-form-item :label="$t('ren-yuan')">
+                <el-form-item :label="$t('ren-yuan')" v-if="idx != 3">
                     <div style="margin-left: 8px">
                         <el-select v-model="screenPersonnelId" filterable style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="hiddens()" v-if="user.userNameNeedTranslate != '1'">
                             <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option>
@@ -67,7 +72,7 @@
                     </div>
                 </el-form-item>
 
-                <el-form-item>
+                <el-form-item v-if="idx != 3">
                     <div style="display: flex;">
                         <div style="margin-left: 20px">
                             <el-select v-model="dateType" style="width:120px;" size="small" slot="prepend" :placeholder="$t('defaultText.pleaseChoose')">
@@ -102,11 +107,12 @@
                     <p :class="idx == 0 ? 'on' : ''" @click="switchs(0)" v-if="permissions.projectView || permissions.projectManagement || permissions.projectViewAllTasks">{{ $t('alltaskss') }}</p>
                     <p :class="idx == 1 ? 'on' : ''" @click="switchs(1)">{{ $t('perform') }}</p>
                     <p :class="idx == 2 ? 'on' : ''" @click="switchs(2)">{{ $t('created') }}</p>
+                    <p :class="idx == 3 ? 'on' : ''" @click="switchs(3)" v-if="user.timeType.taskFileCharge == 1">待审核文件</p>
                 </div>
             </div>
             <div style="max-width: 94%;min-width: 90%">
                 <!--列表-->
-                <el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+                <el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;" v-if="[0, 1, 2].includes(idx)" :key="tablesKey">
                     <el-table-column type="index" width="60">
                         <template slot-scope="scope" >
                             {{scope.$index+1+(page-1)*size}} 
@@ -118,6 +124,9 @@
                         </template>
                     </el-table-column>
                     <el-table-column prop="stagesName" :label="$t('taskstage')" sortable width="180" @mouseover="mouseOver">
+                        <template slot-scope="scope">
+                            {{ scope.row.stagesName }}
+                        </template>
                     </el-table-column>
                     <el-table-column prop="taskLevel" :label="$t('priority')" sortable width="100">
                         <template slot-scope="scope">
@@ -147,6 +156,30 @@
                             </div>
                         </template>
                     </el-table-column>
+                    <el-table-column prop="finalChargeStatusText" label="文件审核状态" width="210" sortable v-if="user.timeType.taskFileCharge == 1 && [0, 2].includes(idx)">
+                        <template slot-scope="scope">
+                            <template v-if="scope.row.finalChargeStatus != 2">
+                                <el-link :type="{'0': 'warning', '1': 'info', '2': 'danger'}[scope.row.fileChargeStatus]" :underline="false">
+                                    {{ scope.row.finalChargeStatusTextList[0] || '' }}
+                                    <template v-if="(scope.row.finalChargeStatusTextList || []).length > 1">
+                                        <TranslationOpenDataText :openid='scope.row.finalChargeStatusTextList[1]'></TranslationOpenDataText>
+                                        {{ scope.row.finalChargeStatusTextList[2] || '' }}
+                                    </template>
+                                </el-link>
+                            </template>
+                            <template v-else>
+                                <el-tooltip class="item" effect="dark" content="点击查看" placement="top">
+                                    <el-link :type="'danger'" :underline="false" @click="showReasonForRejection(scope.row)">
+                                        {{ scope.row.finalChargeStatusTextList[0] || '' }}
+                                        <template v-if="(scope.row.finalChargeStatusTextList || []).length > 1">
+                                            <TranslationOpenDataText :openid='scope.row.finalChargeStatusTextList[1]'></TranslationOpenDataText>
+                                            {{ scope.row.finalChargeStatusTextList[2] || '' }}
+                                        </template>
+                                    </el-link>
+                                </el-tooltip>
+                            </template>
+                        </template>
+                    </el-table-column>
                     <!-- <el-table-column prop="projectCategorySub" label="项目分组" sortable width="300" v-if="user.companyId == '428'"></el-table-column> -->
                     <el-table-column prop="departmentName" :label="$t('subordinatedepartments')" sortable width="300" v-if="user.timeType.projectWithDept">
                         <template slot-scope="scope">
@@ -183,6 +216,51 @@
                     </el-table-column>
                 </el-table>
 
+                <el-table v-if="[3].includes(idx)" :data="documentReview"  highlight-current-row v-loading="documentReviewLoading" :height="tableHeight" style="width: 100%;" :key="tablesTwoKey">
+                    <el-table-column prop="projectName" :label="$t('headerTop.projectName')" sortable width="260" show-overflow-tooltip>
+                        <template slot-scope="scope">
+                            <el-link type="primary" :href="'#/projectInside/'+scope.row.projectId">{{scope.row.projectName}}</el-link>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="name" :label="$t('nameofthetask')" sortable>
+                        <template slot-scope="scope">
+                            <div v-if="scope.row.taskName.length > 20">
+                                <el-popover trigger="hover" placement="top" width="330" v-if="scope.row.taskName">
+                                    <p id="caseContent">{{scope.row.taskName}}</p>
+                                    <div slot="reference" class="name-wrapper">
+                                        <div class="cal" >
+                                            <el-link type="primary" @click="editTask(scope.row)">{{scope.row.taskName}}</el-link>
+                                        </div>
+                                    </div>
+                                </el-popover>
+                            </div>
+                            <div v-else>
+                                <div class="cal">
+                                    <el-link type="primary" @click="editTask(scope.row)">{{scope.row.taskName}}</el-link>
+                                </div>
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="executorName" :label="$t('zhi-hang-ren')" sortable>
+                        <template slot-scope="scope">
+                            <span v-for="(item, index) in scope.row.executorList" :key="index">
+                                <template v-if="user.userNameNeedTranslate == 1">
+                                    <TranslationOpenDataText type='userName' :openid='item.executorName'></TranslationOpenDataText>
+                                </template>
+                                <template v-if="user.userNameNeedTranslate != 1">
+                                    {{ item.executorName }}
+                                </template>
+                                <span v-if="index < scope.row.executorList.length - 1">,</span>
+                            </span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="文件审核" width="140">
+                        <template slot-scope="scope">
+                            <el-button type="primary" size="mini" @click="viewFilesAndReviewThem(scope.row)">查看文件并审核</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+
                 <!-- 重启时输入原因 -->
                 <el-dialog :title="$t('zhongQiRenWu')" :visible.sync="causeRejectionDialog" width="600px" :before-close="handleClose">
                     <div>
@@ -307,6 +385,49 @@
                 </span>
             </el-dialog>
 
+        <!-- 文件审核 -->
+        <el-dialog title="文件审核" :visible.sync="viewFilesAndReviewThemVisable" width="800px">
+            <el-table :data="viewFilesAndReviewThemRejectList" style="width: 100%" height="500px">
+                <el-table-column :label="$t('headerTop.serialNumber')" prop="documentType" min-width="60" align="center">
+                    <template slot-scope="scope">
+                        {{scope.$index + 1}}
+                    </template>
+                </el-table-column>
+                <el-table-column :label="$t('filenames')" prop="documentName" min-width="180"></el-table-column>
+                <el-table-column :label="$t('filesize')" prop="size" min-width="80" align="center"></el-table-column>
+                <el-table-column :label="$t('founder')" prop="creatorName" min-width="60" align="center">
+                    <template slot-scope="scope">
+                        <div>
+                            <span v-if="user.userNameNeedTranslate != 1">{{scope.row.creatorName}}</span>
+                            <span v-if="user.userNameNeedTranslate == 1">
+                                <TranslationOpenDataText type='userName' :openid='scope.row.creatorName'></TranslationOpenDataText>
+                            </span>
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column :label="$t('creationtime')" prop="indate" min-width="140" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.indate[0] + '-' + scope.row.indate[1] + '-' + scope.row.indate[2] + '\u0020\u0020' + scope.row.indate[3] + ':' + scope.row.indate[4] + ':' + scope.row.indate[5]}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column :label="$t('operation')" min-width="90" fixed="right">
+                    <template slot-scope="scope">
+                        <el-link :href="scope.row.url" :download="scope.row.documentName" type="primary" style="margin-right:7px">{{ $t('other.download') }}</el-link>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" size="small" :loading="viewFilesAndReviewThemAdoptLoading" @click="viewFilesAndReviewThemRejectCli(1)">通过</el-button>
+                <el-button type="danger" size="small" @click="viewFilesAndReviewThemReject()">驳回</el-button>
+            </div>
+        </el-dialog>
+        <el-dialog title="文件驳回" :visible.sync="viewFilesAndReviewThemRejectVisable" width="800px">
+            <el-input type="textarea" :rows="5" placeholder="请输入驳回原因" v-model.trim="viewFilesAndReviewThemRejectVal">
+            </el-input>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" size="small" @click="viewFilesAndReviewThemRejectCli(2)" :loading="viewFilesAndReviewThemRejectValLoading">确定</el-button>
+            </div>
+        </el-dialog>
     </section>
 </template>
 <style scoped>
@@ -658,9 +779,77 @@ import { error } from 'dingtalk-jsapi';
                 allProjectList: [],
                 exportTaskLoading: false,
                 screenDeptId: [],
+
+                // 待审核文件
+                documentReview: [],
+                documentReviewLoading: false,
+                auditFileTaskName: '',
+                viewFilesAndReviewThemVisable: false,
+                viewFilesAndReviewThemList: [],
+                viewFilesAndReviewThemTableLoading: false,
+                viewFilesAndReviewThemRejectVisable: false,
+                viewFilesAndReviewThemRejectList: [],
+                viewFilesAndReviewThemRejectVal: '',
+                viewFilesAndReviewThemRejectValLoading: false,
+                viewFilesAndReviewThemRejectRow: {},
+                viewFilesAndReviewThemAdoptLoading: false,
+
+                tablesKey: 1,
+                tablesTwoKey: 300
             };
         },
         methods: {
+            showReasonForRejection(item) {
+                const taskId = item.id
+                this.http.post('/task/getFileRejectReason',{
+                    taskId
+                },res => {
+                    if(res.code == 'ok'){
+                        this.$alert(res.data, '驳回原因');
+                    }else {
+                        this.$message.error(res.msg)
+                    }
+                },error => { this.$message.error(error) })
+            },
+            viewFilesAndReviewThemRejectCli(auditStatus = 1) {
+                if(!this.viewFilesAndReviewThemRejectVal && auditStatus == 2) {
+                    this.$message.error('请输入驳回原因')
+                    return
+                }
+                this.viewFilesAndReviewThemRejectValLoading = true
+                const { id, projectId } = this.viewFilesAndReviewThemRejectRow
+                this.http.post('/task/auditFile',{
+                    taskId: id, projectId,
+                    auditStatus,
+                    reason: auditStatus == 1 ? '' : this.viewFilesAndReviewThemRejectVal
+                },
+                res => {
+                    if (res.code == "ok") {
+                        this.viewFilesAndReviewThemRejectList = res.data || []
+                        this.viewFilesAndReviewThemRejectVisable = false
+                        this.viewFilesAndReviewThemVisable = false
+                        this.$message.success('操作成功')
+                        this.getFilesAwaitingReview()
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                    this.viewFilesAndReviewThemRejectValLoading=false
+                },
+                error => {
+                    this.viewFilesAndReviewThemRejectValLoading=false
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
+            viewFilesAndReviewThemReject() {
+                this.viewFilesAndReviewThemRejectVal = ''
+                this.viewFilesAndReviewThemRejectVisable = true
+            },
             parentMeetingCli(id) {
                 this.meeting = true
                 if(id) {
@@ -668,6 +857,28 @@ import { error } from 'dingtalk-jsapi';
                 }
                 console.log(id)
             },
+            getViewFilesAndReviewThemList() {
+                this.viewFilesAndReviewThemTableLoading = false
+                this.http.post('/task-files/getTaskFiles',{taskId:this.viewFilesAndReviewThemRejectRow.id},
+                res => {
+                    if (res.code == "ok") {
+                        this.viewFilesAndReviewThemRejectList = res.data || []
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                    this.viewFilesAndReviewThemTableLoading=false
+                },
+                error => {
+                    this.viewFilesAndReviewThemTableLoading=false
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
             confirmMeeting() {
                 var date = new Date();
                 let startTime = this.meetingStartValue
@@ -1016,7 +1227,15 @@ import { error } from 'dingtalk-jsapi';
                                 res.data.records[i].executorNameList = arr
                             }
                         }
-                        this.list = res.data.records
+                        // this.tablesKey++
+                        this.list = (res.data.records || []).map(item => {
+                            let str = item.finalChargeStatusText || ''
+                            let arr = str.split(/\$|=/).filter(item => item && item !== 'userName');
+                            return {
+                                ...item,
+                                finalChargeStatusTextList: arr || []
+                            }
+                        })
                         this.total = res.data.total
                     } else {
                         this.$message({
@@ -1024,7 +1243,6 @@ import { error } from 'dingtalk-jsapi';
                             type: "error"
                         });
                     }
-                    // console.log(res)
                 },
                 error => {
                     this.listLoading = false;
@@ -1035,6 +1253,48 @@ import { error } from 'dingtalk-jsapi';
                 })
             },
 
+            getFilesAwaitingReview() {
+                this.documentReviewLoading = true;
+                let parameter = {
+                    pageIndex: this.page,
+                    pageSize: this.size,
+                    projectId: this.screenProjectId,
+                    taskName: this.auditFileTaskName
+                }
+
+                if(this.deptId.length > 0) {
+                    parameter.deptId = this.deptId[this.deptId.length - 1]
+                } else {
+                    parameter.deptId = ''
+                }
+
+                this.http.post('/task/getTaskChargePage', parameter,
+                res => {
+                    this.documentReviewLoading = false;
+                    if(res.code == 'ok') {
+                        this.documentReview = (res.data.records || []).map((item) => {
+                            return {
+                                ...item,
+                                id: item.taskId
+                            }
+                        })
+                        // this.tablesTwoKey++
+                        this.total = res.data.total
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.documentReviewLoading = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                })
+            },
             // 导出任务
             exportTask() {
                 // console.log('执行代码')
@@ -1247,7 +1507,16 @@ import { error } from 'dingtalk-jsapi';
                 this.idx = e
                 this.page = 1
                 // console.log(this.searchField)
-                this.getList()
+                if([3].includes(e)) {
+                    this.getFilesAwaitingReview()
+                } else {
+                    this.getList()
+                }
+            },
+            viewFilesAndReviewThem(item) {
+                this.viewFilesAndReviewThemRejectRow = item
+                this.viewFilesAndReviewThemVisable = true
+                this.getViewFilesAndReviewThemList()
             },
             // 下拉框选择
             hiddens(e) {
@@ -1256,7 +1525,11 @@ import { error } from 'dingtalk-jsapi';
                 }
                 // console.log(this.searchField)
                 this.page = 1
-                this.getList()
+                if([3].includes(this.idx)) {
+                    this.getFilesAwaitingReview()
+                } else {
+                    this.getList()
+                }
             },
             // 完成
             completes(e, el, obj) {