فهرست منبع

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

ggooalice 2 سال پیش
والد
کامیت
96a76e4737

+ 1 - 1
fhKeeper/formulahousekeeper/inva_4_tivo/index.html

@@ -5,7 +5,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta name="keywords" content="工时管理,项目成本管理,工时统计,项目成本统计,工时记录表,工时统计表," />
     <meta name="description" content="工时管家是专业的工时管理软件,提供专业的工时填报,审核和统计功能。引进现代工时管理和项目管理的理念,核算项目投入成本准确便捷,企业IPO利器"/>
-    <title>工时管理|工时记录表|项目成本管理-工时管家是专业便捷的工时管理系统。支持员工工时统计表上传汇总。 手机移动填报|核算项目成本|企业IPO利器!</title>
+    <title>工时管理|工时记录表|项目成本管理-工时管家是强大易用的工时管理系统。工时填报|工时统计|手机移动填报|核算项目成本|企业IPO利器!</title>
 	<link href="css/styles.css" rel="stylesheet">
     <!-- <link href="css/bootstrap.css" rel="stylesheet"> -->
     <link rel="stylesheet" href="./css/reset.css">

+ 110 - 88
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -17,6 +17,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.*;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 
@@ -680,6 +681,16 @@ public class WeiXinCorpController {
     private JSONArray getDeptUserSimple(String accessToken, int deptId) {
         String url = GET_DEPARTMENT_USER_SIMPLE_URL.replace("ACCESS_TOKEN", accessToken).replace("DEPARTMENT_ID", ""+deptId);
         String result = restTemplate.getForObject(url, String.class);
+        System.out.println("部门人员概要:"+result);
+        JSONObject obj = JSONObject.parseObject(result);
+        JSONArray userlist = obj.getJSONArray("userlist");
+
+        return userlist;
+    }
+
+    private JSONArray getDeptUserInfo(String accessToken, int deptId) {
+        String url = GET_DEPARTMENT_USER_DETAIL_URL.replace("ACCESS_TOKEN", accessToken).replace("DEPARTMENT_ID", ""+deptId);
+        String result = restTemplate.getForObject(url, String.class);
         System.out.println("部门人员详情:"+result);
         JSONObject obj = JSONObject.parseObject(result);
         JSONArray userlist = obj.getJSONArray("userlist");
@@ -968,8 +979,8 @@ public class WeiXinCorpController {
     @RequestMapping("/getCorpMembs")
     public HttpRespMsg getCorpMembs(String corpId) {
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
+        HttpRespMsg msg = new HttpRespMsg();
         if (wxCorpInfo.getContactSecret() == null) {
-            HttpRespMsg msg = new HttpRespMsg();
             msg.setError("请先设置企业通讯录同步Secret");
             return msg;
         }
@@ -979,18 +990,25 @@ public class WeiXinCorpController {
             curCorpAccessToken = getCorpConcactAccessToken(wxCorpInfo);
         } catch (Exception exception) {
             exception.printStackTrace();
+            msg.setError("同步失败:"+exception.getMessage());
+            return msg;
         }
         int companyId = company.getId();
         //获取公司根部门人员,也就是没有分配部门的人员
         int companyRootDeptId = 1;
-        JSONArray unAssignedUserList = getDeptUserSimple(curCorpAccessToken, companyRootDeptId);
+        JSONArray unAssignedUserList = getDeptUserInfo(curCorpAccessToken, companyRootDeptId);
         SysRole defaultRole = sysRoleMapper.selectOne(
                 new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
-
+        List<JSONObject> hasDirectLdMembs = new ArrayList<>();
         for (int m=0;m<unAssignedUserList.size(); m++) {
             JSONObject userJson = unAssignedUserList.getJSONObject(m);
             String curUserid = userJson.getString("userid");
-            System.out.println("userid="+curUserid+", name=" + userJson.getString("name")+", mobile="+userJson.getString("mobile"));
+            //跳过非激活状态的员工
+            if (userJson.getInteger("status") != 1) continue;
+            System.out.println("userid="+curUserid+", name=" + userJson.getString("name")+", department="+userJson.getJSONArray("department"));
+            if (userJson.getJSONArray("direct_leader").size() > 0) {
+                hasDirectLdMembs.add(userJson);
+            }
             //不存在的人员, 进行插入
             User user = new User();
 
@@ -999,6 +1017,7 @@ public class WeiXinCorpController {
                     .setRoleName(defaultRole.getRolename())
                     .setCompanyId(companyId)
                     .setName(userJson.getString("name"))
+                    .setPhone(userJson.getString("mobile"))
                     .setCorpwxUserid(curUserid)
                     .setColor(ColorUtil.randomColor());
 
@@ -1011,22 +1030,32 @@ public class WeiXinCorpController {
                     userMapper.insert(user);
                 } else {
                     //姓名已经存在,更新wxcorpid
-                    List<User> updateUser = new ArrayList<User>();
-                    userList.forEach(u-> {
-                        if (u.getCorpwxUserid() == null) {
-                            u.setCorpwxUserid(user.getCorpwxUserid());
-                            updateUser.add(u);
-                        }
-                    });
-                    if (updateUser.size() > 0) {
-                        userService.updateBatchById(updateUser);
+                    User updateUser = userList.get(0);
+                    if (updateUser.getCorpwxUserid() == null) {
+                        updateUser.setCorpwxUserid(user.getCorpwxUserid());
+                        userMapper.updateById(updateUser);
                     }
                 }
+            }else {
+//              //更新信息
+                User oldUser = userMapper.selectList(new QueryWrapper<User>().eq("corpwx_userid", curUserid).eq("company_id", companyId).orderByDesc("create_time")).get(0);
+                boolean shouldUpdate = false;
+                if (!oldUser.getName().equals(userJson.getString("name"))) {
+                    oldUser.setName(userJson.getString("name"));
+                    shouldUpdate = true;
+                }
+                if ((oldUser.getPhone() == null && !StringUtils.isEmpty(userJson.getString("mobile")) && !oldUser.getPhone().equals(userJson.getString("mobile")))) {
+                    oldUser.setPhone(userJson.getString("mobile"));
+                    shouldUpdate = true;
+                }
+                if (shouldUpdate) {
+                    userMapper.updateById(oldUser);
+                }
             }
         }
 
-        //获取部门
-        JSONObject deptObj = getDepartments(curCorpAccessToken);
+        //获取公司全部部门,不需要递归
+        JSONObject deptObj = getAllDepartments(curCorpAccessToken);
         JSONArray deptObjJSONArray = deptObj.getJSONArray("department");
 
         List<Department> sysDeptList = new ArrayList<>();
@@ -1049,11 +1078,15 @@ public class WeiXinCorpController {
             sysDeptList.add(department);
             deptObjJSONArray.getJSONObject(i).put("sys_dept_id", department.getDepartmentId());
             Integer departmentId = department.getDepartmentId();
-            JSONArray userList = getDeptUserSimple(curCorpAccessToken, deptId);
+            JSONArray userList = getDeptUserInfo(curCorpAccessToken, deptId);
             for (int m=0;m<userList.size(); m++) {
                 JSONObject userJson = userList.getJSONObject(m);
                 String curUserid = userJson.getString("userid");
+                if (userJson.getInteger("status") != 1) continue;
                 log.info("userid="+curUserid+", name=" + userJson.getString("name")+", mobile="+userJson.getString("mobile"));
+                if (userJson.getJSONArray("direct_leader").size() > 0) {
+                    hasDirectLdMembs.add(userJson);
+                }
                 //不存在的人员, 进行插入
                 User user = new User();
 
@@ -1061,6 +1094,7 @@ public class WeiXinCorpController {
                         .setRole(0)//默认普通员工
                         .setCompanyId(companyId)
                         .setDepartmentId(departmentId)
+                        .setPhone(userJson.getString("mobile"))
                         .setName(userJson.getString("name"))
                         .setCorpwxUserid(curUserid)
                         .setColor(ColorUtil.randomColor());
@@ -1074,23 +1108,27 @@ public class WeiXinCorpController {
                         userMapper.insert(user);
                     } else {
                         //姓名已经存在,更新wxcorpid
-                        List<User> updateUser = new ArrayList<User>();
-                        userList2.forEach(u-> {
-                            if (u.getCorpwxUserid() == null) {
-                                u.setCorpwxUserid(user.getCorpwxUserid());
-                                updateUser.add(u);
-                            }
-                        });
-                        if (updateUser.size() > 0) {
-                            userService.updateBatchById(updateUser);
+                        User updateUser2 = userList2.get(0);
+                        if (updateUser2.getCorpwxUserid() == null) {
+                            updateUser2.setCorpwxUserid(user.getCorpwxUserid());
+                            userMapper.updateById(updateUser2);
                         }
                     }
                 } else {
-//                    //更新信息
-//                    User oldUser = userMapper.selectList(new QueryWrapper<User>().eq("corpwx_userid", curUserid).eq("company_id", companyId).orderByDesc("create_time")).get(0);
-//                    oldUser.setName(userJson.getString("name"));
-//                    oldUser.setDepartmentId(departmentId);
-//                    userMapper.updateById(oldUser);
+//                  //更新信息
+                    User oldUser = userMapper.selectList(new QueryWrapper<User>().eq("corpwx_userid", curUserid).eq("company_id", companyId).orderByDesc("create_time")).get(0);
+                    boolean shouldUpdate = false;
+                    if (!oldUser.getName().equals(userJson.getString("name"))) {
+                        oldUser.setName(userJson.getString("name"));
+                        shouldUpdate = true;
+                    }
+                    if (oldUser.getPhone() == null || (!StringUtils.isEmpty(userJson.getString("mobile")) && !oldUser.getPhone().equals(userJson.getString("mobile")))) {
+                        oldUser.setPhone(userJson.getString("mobile"));
+                        shouldUpdate = true;
+                    }
+                    if (shouldUpdate) {
+                        userMapper.updateById(oldUser);
+                    }
                 }
             }
         }
@@ -1103,71 +1141,55 @@ public class WeiXinCorpController {
             if (pid != 1) {
                 //根部门Id = 1
                 Integer sysDeptId = deptJson.getInteger("sys_dept_id");
-                Department department = sysDeptList.stream().filter(d -> d.getDepartmentId().equals(sysDeptId)).findFirst().get();
-                //从deptjson数组中寻找parent item
-                for (int m=0;m<deptObjJSONArray.size(); m++) {
-                    JSONObject item = deptObjJSONArray.getJSONObject(m);
-                    if (item.getInteger("id").equals(pid)) {
-                        department.setSuperiorId(item.getInteger("sys_dept_id"));
-                        break;
+                if (sysDeptId != null) {
+                    Department department = sysDeptList.stream().filter(d -> d.getDepartmentId() != null && d.getDepartmentId().equals(sysDeptId)).findFirst().get();
+                    //从deptjson数组中寻找parent item
+                    for (int m=0;m<deptObjJSONArray.size(); m++) {
+                        JSONObject item = deptObjJSONArray.getJSONObject(m);
+                        if (item.getInteger("id").equals(pid)) {
+                            department.setSuperiorId(item.getInteger("sys_dept_id"));
+                            break;
+                        }
                     }
+                    needUpdateDepts.add(department);
                 }
-                needUpdateDepts.add(department);
             }
         }
         if (needUpdateDepts.size() > 0) {
             departmentService.updateBatchById(needUpdateDepts);
         }
-
-//        //获取部门
-//        JSONObject deptObj = getAllDepartments(curCorpAccessToken);
-//        JSONArray deptObjJSONArray = deptObj.getJSONArray("department");
-//
-//        for (int i=0;i<deptObjJSONArray.size(); i++) {
-//            int deptId = deptObjJSONArray.getJSONObject(i).getIntValue("id");
-//
-//            JSONArray userList = getDeptUserSimple(curCorpAccessToken, deptId);
-//            for (int m=0;m<userList.size(); m++) {
-//                JSONObject userJson = userList.getJSONObject(m);
-//                System.out.println(userJson);
-//                String curUserid = userJson.getString("userid");
-//                System.out.println("userid="+curUserid+", name=" + userJson.getString("name")+", mobile="+userJson.getString("mobile"));
-//                //不存在的人员, 进行插入
-//                User user = new User();
-//
-//                user.setId(SnowFlake.nextId()+"")
-//                        .setRoleId(defaultRole.getId())//默认普通员工
-//                        .setRoleName(defaultRole.getRolename())
-//                        .setCompanyId(companyId)
-//                        .setDepartmentId(0)
-//                        .setName(userJson.getString("name"))
-//                        .setCorpwxUserid(curUserid)
-//                        .setColor(ColorUtil.randomColor());
-//
-//                //检查用户是否已经存在
-//                if (userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", curUserid)) == 0) {
-//                    //检查姓名,该公司下面这个员工的姓名是否已经存在
-//                    List<User> userList2 = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("name", user.getName()));
-//                    if (userList2.size() == 0) {
-//                        //姓名也没有存在,就插入,检查人员是否已经超过上限
-//                        userMapper.insert(user);
-//                    } else {
-//                        //姓名已经存在,更新wxcorpid
-//                        List<User> updateUser = new ArrayList<User>();
-//                        userList2.forEach(u-> {
-//                            if (u.getCorpwxUserid() == null) {
-//                                u.setCorpwxUserid(user.getCorpwxUserid());
-//                                updateUser.add(u);
-//                            }
-//                        });
-//                        if (updateUser.size() > 0) {
-//                            userService.updateBatchById(updateUser);
-//                        }
-//                    }
-//                }
-//            }
-//        }
-
+        //更新人员的直属上级
+        if (hasDirectLdMembs.size() > 0) {
+            List<String> corpwxUids = new ArrayList<>();
+            for (JSONObject userJson : hasDirectLdMembs) {
+                String curUserid = userJson.getString("userid");
+                //取第一个leaderId
+                JSONArray directLeader = userJson.getJSONArray("direct_leader");
+                String string = directLeader.getString(0);
+                corpwxUids.add(curUserid);
+                if (!corpwxUids.contains(string)) {
+                    corpwxUids.add(string);
+                }
+            }
+            List<User> userList = userMapper.selectList(new QueryWrapper<User>().select("id, corpwx_userid, superior_id").in("corpwx_userid", corpwxUids));
+            List<User> updateUserList = new ArrayList<>();
+            for (JSONObject userJson : hasDirectLdMembs) {
+                String curUserid = userJson.getString("userid");
+                User user = userList.stream().filter(u -> u.getCorpwxUserid().equals(curUserid)).findFirst().get();
+                JSONArray directLeader = userJson.getJSONArray("direct_leader");
+                String leaderCorpWxuid = directLeader.getString(0);
+                //查找leader
+                User leader = userList.stream().filter(u -> u.getCorpwxUserid().equals(leaderCorpWxuid)).findFirst().get();
+                if (!leader.getId().equals(user.getSuperiorId())) {
+                    user.setSuperiorId(leader.getId());
+                    updateUserList.add(user);
+                }
+            }
+            if (updateUserList.size() > 0) {
+                //批量更新上级领导
+                userService.updateBatchById(updateUserList);
+            }
+        }
         return new HttpRespMsg();
     }
 

+ 11 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CompanyDingding.java

@@ -1,22 +1,21 @@
 package com.management.platform.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 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;
 
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2022-06-24
+ * @since 2022-06-29
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -97,6 +96,12 @@ public class CompanyDingding extends Model<CompanyDingding> {
     @TableField("pc_web_url")
     private String pcWebUrl;
 
+    /**
+     * 具有OA审批权限的管理员钉钉id
+     */
+    @TableField("oa_manager_dingid")
+    private String oaManagerDingid;
+
 
     @Override
     protected Serializable pkVal() {

+ 5 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -288,11 +288,14 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             QueryWrapper<Department> queryWrapper = new QueryWrapper<Department>()
                     .eq("company_id", companyId);
             if (parentDeptId == null) {
-                queryWrapper.isNull("superior_id");
+                if (deptIds == null) {
+                    //查看全公司的
+                    queryWrapper.isNull("superior_id");
+                }
             } else {
                 queryWrapper.eq("superior_id", parentDeptId);
             }
-            if(deptIds!=null){
+            if(deptIds != null){
                 queryWrapper.in("department_id",deptIds);
             }
             //获取第一级部门

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

@@ -1477,11 +1477,9 @@ public class DingDingServiceImpl implements DingDingService {
     public HttpRespMsg syncLeaveQuotaData(Integer companyId) {
         CompanyDingding dingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
         HttpRespMsg msg = new HttpRespMsg();
-        HashMap resultMap = new HashMap();
         DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/vacation/type/list");
         OapiAttendanceVacationTypeListRequest req = new OapiAttendanceVacationTypeListRequest();
-        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("role_name", "超级管理员"));
-        String oaManagerDid = userList.get(0).getDingdingUserid();
+        String oaManagerDid = dingding.getOaManagerDingid();
         req.setOpUserid(oaManagerDid);
         req.setVacationSource("all");
         OapiAttendanceVacationTypeListResponse rsp = null;

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -728,7 +728,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             fTask.setTaskStatus(1);
             LocalDate createDate = reportList.get(0).getCreateDate();
             fTask.setFinishDate(createDate);
-            taskMapper.update(fTask, new QueryWrapper<Task>().in("id", finishedTaskIds));
+            //不能用Mapper更新,使用mapper更新会导致下面的taskService获取数据不是最新的,没有finshDate
+            taskService.update(fTask, new QueryWrapper<Task>().in("id", finishedTaskIds));
             taskService.notifyMileStoneFinish(companyId, finishedTaskIds);
         }
 

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyDingdingMapper.xml

@@ -18,11 +18,12 @@
         <result column="inner_expire_time" property="innerExpireTime" />
         <result column="web_url" property="webUrl" />
         <result column="pc_web_url" property="pcWebUrl" />
+        <result column="oa_manager_dingid" property="oaManagerDingid" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        corpid, corp_name, auth_user_id, indate, company_id, access_token, expire_time, agent_id, inner_appkey, inner_appsecret, inner_token, inner_expire_time, web_url, pc_web_url
+        corpid, corp_name, auth_user_id, indate, company_id, access_token, expire_time, agent_id, inner_appkey, inner_appsecret, inner_token, inner_expire_time, web_url, pc_web_url, oa_manager_dingid
     </sql>
 
 </mapper>

+ 5 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -548,7 +548,7 @@
                 </el-popover>
             </p>
             <p>
-            <el-input v-model="contactSecret" style="width:380px;"/><el-button @click="saveContactSecret" >保存</el-button>
+            <el-input v-model="contactSecret" style="width:380px;" :disabled="!editSecret"/><el-button @click="editSecret?saveContactSecret():editSecret=true;" >{{editSecret?'保存':'修改'}}</el-button>
             </p>
             <p style="display: flex;justify-content: center;padding-bottom:1em;">
                 <el-button type="primary" :underline="false" :loading="importingData" :disabled="!canSync" @click="startCorpWxImport">开始同步</el-button>
@@ -563,6 +563,7 @@
     export default {
         data() {
             return {
+                editSecret: false,
                 canSync: false,
                 corpid:null,
                 contactSecret:null,
@@ -810,6 +811,7 @@
             //从企业微信同步通讯录
             syncWithCorpWx() {
                 this.showSyncCWDialog = true;
+                this.editSecret = false;
                 this.http.post('/wx-corp-info/get',{
                     companyId: this.user.companyId
                 },res => {
@@ -817,6 +819,8 @@
                         this.contactSecret = res.data.contactSecret;
                         if (this.contactSecret) {
                             this.canSync = true;
+                        } else {
+                            this.editSecret = true;
                         }
                         this.corpid = res.data.corpid;
                     }else {

+ 23 - 16
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1,5 +1,5 @@
 <template>
-    <section v-loading="zhoLoading">
+    <section >
         <!--列表-->
         <div>
             <el-card class="box-card daily" shadow="never">
@@ -322,11 +322,11 @@
                     
                     <el-form-item :label="user.companyId==781?'工作任务':'投入项目'" :prop="'domains.' + index + '.projectId'"
                         :rules="{ required: true, message: user.companyId==781?'请选择工作任务':'请选择投入项目', trigger: ['change','blur'] }">
-                        <el-select v-model="domain.projectItem" :placeholder="user.companyId==781?'请选择工作任务':'请选择项目'" style="width:200px;" clearable="true"  filterable="true" value-key="id"
+                        <el-select v-model="domain.projectId" :placeholder="user.companyId==781?'请选择工作任务':'请选择项目'" style="width:200px;" clearable="true"  filterable="true" value-key="id"
                         @change="selectProject(domain, index)"
                         :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                             <!-- <el-option v-for="item in projectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName" :value="item.id"></el-option> -->
-                            <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item">
+                            <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item.id">
                                 <span style="float: left; color: #8492a6; font-size: 13px;">{{ item.projectCode }}</span>
                                 <span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
                             </el-option>
@@ -430,10 +430,10 @@
                     <div v-if="reportTimeType.multiWorktime==1">
                         <el-form-item label="投入项目" :prop="'domains.' + index + '.projectId'"
                             :rules="{ required: true, message: '请选择投入项目', trigger: ['change','blur'] }">
-                            <el-select v-model="domain.projectItem" placeholder="请选择项目" style="width:200px;" clearable="true"  filterable="true" value-key="id"
+                            <el-select v-model="domain.projectId" placeholder="请选择项目" style="width:200px;" clearable="true"  filterable="true" value-key="id"
                             @change="selectProject(domain, index)"
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
-                                <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item">
+                                <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item.id">
                                     <span style="float: left; color: #8492a6; font-size: 13px;">{{ item.projectCode }}</span>
                                     <span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
                                 </el-option>
@@ -699,7 +699,7 @@
                             <el-option v-for="item in zhoBao.stages" :key="item.id" :label="item.stagesName" :value="item.stagesName"></el-option>
                     </el-select>
                 </div>
-                <div class="zhoFel" v-if="zhoBao.auditUserList != null && zhoBao.auditUserList.length > 0">
+                <div class="zhoFel" >
                     <p>审核人</p>
                     <el-select v-model="zhoBao.projectAuditorId" placeholder="请选择" clearable="true" style="width: 355px">
                         <el-option v-for="item in zhoBao.auditUserList" :key="item.id" :label="item.auditorName" :value="item.auditorId"></el-option>
@@ -2606,10 +2606,11 @@
             },
             //项目选中了, 加载子项目
             selectProject(domain, index) {
-                if(domain.projectItem){
-                    domain.projectId = domain.projectItem.id
-                    domain.projectName = domain.projectItem.projectName
+                if(!domain.projectId){
+                    return;
                 }
+                console.log('projectId===',domain.projectId);
+                domain.projectName = this.fillProjectList.filter(p=>p.id == domain.projectId)[0].projectName;
                 this.http.post('/sub-project/list',{
                     projectId: domain.projectId
                 },
@@ -2690,7 +2691,12 @@
                 res => {
                     if (res.code == "ok") {
                         domainItem.auditUserList = res.data;
-                        if (res.data.length==1) {
+                        if (res.data.length==0) {
+                            this.$message({
+                                message: '日报审核人尚未设置,请联系该项目管理人员',
+                                type: "error"
+                            });
+                        } else if (res.data.length==1) {
                             domainItem.projectAuditorId = domainItem.auditUserList[0].auditorId;
                             domainItem.projectAuditorName = domainItem.auditUserList[0].auditorName;
                         }
@@ -3930,7 +3936,7 @@
                 this.zhoRqi = [stat, end]
                 console.log('date',currentDate,this.zhoRqi);
                 this.zhoRqis()
-                this.jiazai()
+                // this.jiazai()
             },
             // 获取上周
             handleGetPrevWeek() {
@@ -3962,7 +3968,7 @@
                 var end = this.dateChange(-2, ends)
                 this.zhoRqi = [stat, end]
                 this.zhoRqis()
-                this.jiazai()
+                // this.jiazai()
             },
             // 获取下周
             handleGetNextvWeek() {
@@ -3998,7 +4004,7 @@
                 var end = this.dateChange(-2, ends)
                 this.zhoRqi = [stat, end]
                 this.zhoRqis()
-                this.jiazai()
+                // this.jiazai()
             },
             // 新增日期
             newDates() {
@@ -4073,7 +4079,7 @@
             // 按周填报
             fillInReportss() {
                 window.addEventListener('scroll', this.handleScroll, true)
-                this.jiazai()
+                // this.jiazai()
                 this.diasZho = true
                 this.getCurrentWeek()
                 // 项目数量判断 <=5
@@ -4472,10 +4478,11 @@
                     }
                     
                     // 自定义维度
-
+                    this.submitingReport = true;
                     this.http.uploadFile( this.port.report.editPort, formData,
                         res => {
                             // this.listLoading = false;
+                            this.submitingReport = false;
                             if (res.code == "ok") {
                                 this.$message({
                                     message: "填报成功",
@@ -4498,7 +4505,7 @@
                             }
                         },
                         error => {
-                            this.listLoading = false;
+                            this.submitingReport = false;
                             this.$message({
                                 message: error,
                                 type: "error"