Bläddra i källkod

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

ggooalice 2 år sedan
förälder
incheckning
2429cec36a
20 ändrade filer med 1223 tillägg och 925 borttagningar
  1. 12 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java
  3. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  4. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  5. 117 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  6. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties
  7. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties
  8. 57 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  9. 6 1
      fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json
  10. 6 1
      fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json
  11. 4 0
      fhKeeper/formulahousekeeper/timesheet/src/permissions.js
  12. 6 4
      fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue
  13. 72 9
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  14. 8 4
      fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue
  15. 2 2
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  16. 327 327
      fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue
  17. 7 3
      fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue
  18. 163 161
      fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue
  19. 84 82
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue
  20. 331 329
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -1093,5 +1093,17 @@ public class ProjectController {
     public HttpRespMsg synchronizationProject(@RequestBody String dataJson){
         return projectService.synchronizationProject(dataJson);
     }
+
+    //部门参与项目情况表
+    @RequestMapping("/deptPartInProjects")
+    public HttpRespMsg deptPartInProjects(@RequestParam Integer pageIndex, @RequestParam Integer pageSize,String startDate,String endDate,Integer departmentId,HttpServletRequest request){
+        return projectService.deptPartInProjects(pageIndex,pageSize,startDate,endDate,departmentId,request);
+    }
+
+    //导出部门参与项目情况表
+    @RequestMapping("/exportDeptPartInProjects")
+    public HttpRespMsg exportDeptPartInProjects(String startDate,String endDate,Integer departmentId,HttpServletRequest request){
+        return projectService.exportDeptPartInProjects(startDate,endDate,departmentId,request);
+    }
 }
 

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java

@@ -257,4 +257,8 @@ public class User extends Model<User> {
         return this.id;
     }
 
+//    public LocalDateTime getCreateTime() {
+//        if ()
+//        return createTime;
+//    }
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -132,4 +132,6 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getEmpMonthHours(Integer companyId, String startDate, String endDate, Integer start, Integer size, String userId, List<Integer> branchDepartment, List<Integer> deptIds);
 
     long findCountWithEmpMonthHours(Integer companyId, String startDate, String endDate, Integer start, Integer size, String userId, List<Integer> branchDepartment, List<Integer> deptIds);
+
+    List<Map<String,Object>> selectDeptPartInProjects(Integer size, Integer start, String startDate, String endDate,Integer companyId, List<Integer> branchDepartment, List<Integer> deptIds);
 }

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -204,4 +204,9 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getEmpMonthHours(Integer pageIndex, Integer pageSize, String month,Integer departmentId,String userId,Integer whether,HttpServletRequest request);
 
     HttpRespMsg exportEmpMonthHours(String month, HttpServletRequest request, String userId, Integer departmentId,Integer whether);
+
+    HttpRespMsg deptPartInProjects(Integer pageIndex, Integer pageSize, String startDate,String endDate, Integer departmentId, HttpServletRequest request);
+
+    HttpRespMsg exportDeptPartInProjects(String startDate,String endDate, Integer departmentId, HttpServletRequest request);
+
 }

+ 117 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1707,8 +1707,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<Project> projectList = projectMapper.selectList(queryWrapper);
         List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
         List<ProjectVO> list = new ArrayList<>();
-        //String[] statusNames = {"-","进行中","已完成","已撤销"};
-        String[] statusNames = {"-",MessageUtils.message("excel.onGoing"),MessageUtils.message("excel.complete"),MessageUtils.message("excel.revoke")};
+        //String[] statusNames = {"-","进行中","已完成","已撤销","暂停"};
+        String[] statusNames = {"-",MessageUtils.message("excel.onGoing"),MessageUtils.message("excel.complete"),MessageUtils.message("excel.revoke"),MessageUtils.message("excel.pause")};
         List<List<String>> exportList = new ArrayList<>();
         //String[] titles = {"项目编号", "项目名称", "负责人", "项目金额(元)", "状态","计划开始时间", "计划结束时间", "完成度"};
         String[] titles = {MessageUtils.message("entry.projectId"), MessageUtils.message("entry.projectName"), MessageUtils.message("excel.charge"), MessageUtils.message("excel.projectAmount")+"(元)", MessageUtils.message("leave.status"),MessageUtils.message("excel.planStart"), MessageUtils.message("excel.planEnd"), MessageUtils.message("excel.degree")};
@@ -7502,4 +7502,119 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return msg;
     }
 
+    //部门参与项目情况表
+    @Override
+    public HttpRespMsg deptPartInProjects(Integer pageIndex, Integer pageSize, String startDate,String endDate, Integer departmentId, HttpServletRequest request){
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(),"全部部门参与项目情况表");
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门参与项目情况表");
+        List<Integer> deptIds=null;
+        //查询公司所有部门
+        List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
+        //查询所管理的部门
+        List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
+        List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
+        //判断查看权限
+        if(functionAllList.size()==0){
+            deptIds=new ArrayList<>();
+            deptIds.add(-1);
+            if(functionDeptList.size()>0){
+                //获取管理的部门id
+                List<Integer> collect = userDepartmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
+                List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
+                collect.addAll(otherCollect);
+                //将该用户管理的所有部门以及部门的子部门id添加到deptIds集合中
+                for (Integer integer : collect) {
+                    List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
+                    deptIds.addAll(branchDepartment);
+                }
+            }
+        }
+        long total  = 0;
+        List<Map<String,Object>> resultList = null;
+        List<Integer> branchDepartment =null;
+        //若用户传入departmentId参数,则查询该部门所有子部门,添加到branchDepartment集合中
+        if(departmentId!=null){
+            branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
+        }
+        //分页查询数据
+        if(pageIndex!=null&&pageSize!=null){
+            Integer size=pageSize;
+            Integer start=(pageIndex-1)*size;
+            resultList = projectMapper.selectDeptPartInProjects(size, start, startDate, endDate, user.getCompanyId(), branchDepartment, deptIds);
+            List<Map<String, Object>> maps = projectMapper.selectDeptPartInProjects(null, null, startDate, endDate, user.getCompanyId(), branchDepartment, deptIds);
+            total = maps.size();
+        }else{
+            resultList = projectMapper.selectDeptPartInProjects(null, null, startDate, endDate, user.getCompanyId(), branchDepartment, deptIds);
+            List<Map<String, Object>> maps = projectMapper.selectDeptPartInProjects(null,null,startDate,endDate,user.getCompanyId(),branchDepartment,deptIds);
+            total = maps.size();
+        }
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        if (resultList.size() > 0){
+            for (Map<String, Object> stringObjectMap : resultList) {
+                Department department = departmentMapper.selectById(stringObjectMap.get("departmentId").toString());
+                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                    stringObjectMap.put("deptName",getWxDepartment(department));
+                }else {
+                    stringObjectMap.put("deptName",getSupDepartment(department));
+                }
+                if (stringObjectMap.get("projectCount")==null){
+                    stringObjectMap.put("projectCount",0);
+                }
+                if (stringObjectMap.get("tripCount")==null){
+                    stringObjectMap.put("tripCount",0);
+                }
+                if (stringObjectMap.get("peopleCount")==null){
+                    stringObjectMap.put("peopleCount",0);
+                }
+            }
+        }
+        HashMap<String, Object> result = new HashMap<>();
+        result.put("resultList",resultList);
+        result.put("total",total);
+        httpRespMsg.data = result;
+        return  httpRespMsg;
+    }
+
+    //导出员工月度工时表
+    @Override
+    public HttpRespMsg exportDeptPartInProjects(String startDate,String endDate, Integer departmentId, HttpServletRequest request){
+        HttpRespMsg msg=new HttpRespMsg();
+        String token = request.getHeader("token");
+        User user = userMapper.selectById(token);
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        HttpRespMsg httpRespMsg = deptPartInProjects(null, null, startDate, endDate, departmentId, request);
+        Map<String, Object> data = (Map<String, Object>) (Map<String, Object>) httpRespMsg.data;
+        List<Map<String, Object>> resultList = (List<Map<String, Object>>) data.get("resultList");
+        List<String> titleList=new ArrayList<>();
+        List<List<String>> dataList = new ArrayList<>();
+//        titleList.add("部门名称");
+//        titleList.add("参与的项目的数量");
+//        titleList.add("参与人次");
+//        titleList.add("出差的天数");
+        titleList.add(MessageUtils.message("excel.deptName"));
+        titleList.add(MessageUtils.message("excel.joinProCount"));
+        titleList.add(MessageUtils.message("excel.joinPeopleCount"));
+        titleList.add(MessageUtils.message("excel.tripDays"));
+        dataList.add(titleList);
+        for (Map<String, Object> map : resultList) {
+            List<String> item=new ArrayList<>();
+            item.add(map.get("deptName").toString());
+            item.add(map.get("projectCount").toString());
+            item.add(map.get("peopleCount").toString());
+            item.add(map.get("tripCount").toString());
+            dataList.add(item);
+        }
+        //生成excel文件导出
+        //String fileName = "部门参与项目情况表"+System.currentTimeMillis();
+        String fileName = MessageUtils.message("fileName.deptJoinPro")+System.currentTimeMillis();
+        try {
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName , dataList, path);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return msg;
+    }
+
 }

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -525,6 +525,7 @@ fileName.dailyManHour=人员每日工时统计_{0}至{1}
 fileName.perNoFill=未填人员统计_
 fileName.laborHour=工时对比
 fileName.monthWork=月度工时表
+fileName.deptJoinPro=部门参与项目情况表
 #excel
 excel.publicProject=是否为公共项目
 excel.projectName=项目名称必填
@@ -671,6 +672,10 @@ excel.standard=标准工时
 excel.actual=实际工时
 excel.leave=请假工时
 excel.workWeather=是否满足工时
+excel.joinProCount = 参与的项目的数量
+excel.deptName = 部门名称
+excel.joinPeopleCount= 参与人次
+excel.tripDays = 出差的天数
 #推送
 push.fillIn=您今天的工时填报还未完成
 push.name=屈跃庭

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -525,6 +525,7 @@ fileName.dailyManHour=Daily man hour statistics_ {0} to {1}
 fileName.perNoFill=Personnel statistics not filled_
 fileName.laborHour=Labor hour comparison
 fileName.monthWork=Monthly man hour table
+fileName.deptJoinPro=Department Participation in Projects
 #excel
 excel.publicProject=Whether it is a public project
 excel.projectName=Project name is required
@@ -671,6 +672,10 @@ excel.standard=Standard working hours
 excel.actual=Actual working time
 excel.leave=Time of leave
 excel.workWeather=Whether the working hours are met
+excel.joinProCount = Number of projects involved
+excel.deptName = Department name
+excel.joinPeopleCount= Number of participants
+excel.tripDays = Days of business trip
 #推送
 push.fillIn=Your work hour report for today has not been completed.
 push.name=Qu Yue ting

+ 57 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -1276,4 +1276,61 @@
         group by us.id
         order  by us.department_id)as total
     </select>
+
+    <!--    分页查询部门参与项目情况-->
+    <select id="selectDeptPartInProjects" resultType="java.util.Map">
+        SELECT department.department_id AS departmentId,
+        department.department_name AS deptName,
+        u.projectCount,
+        u.peopleCount,
+        u.tripCount
+        from department
+        left JOIN (
+        SELECT `user`.department_id AS departmentId,
+        project.create_date,
+        COUNT(DISTINCT(project.id)) AS projectCount,
+        COUNT(`user`.id) AS peopleCount,
+        (select COUNT(DISTINCT(business_trip.id)) from business_trip where owner_id = user.id) AS tripCount
+        from  `user`
+        LEFT JOIN participation ON `user`.id = participation.user_id
+        LEFT JOIN project ON project.id = participation.project_id
+        WHERE user.company_id = #{companyId}
+        <if test="branchDepartment!=null and branchDepartment.size()>0">
+            and user.department_id in
+            <foreach collection="branchDepartment" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="deptIds!=null and deptIds.size()>0">
+            and user.department_id in
+            <foreach collection="deptIds" open="(" item="item" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="startDate!= null and startDate!= ''" >
+            and project.create_date &gt;= #{startDate}
+        </if>
+        <if test="endDate!= null and endDate!= ''">
+            and project.create_date &lt;= #{endDate}
+        </if>
+        GROUP BY `user`.department_id
+        ) u ON department.department_id = u.departmentId
+        WHERE department.company_id = #{companyId}
+        <if test="branchDepartment!=null and branchDepartment.size()>0">
+            and department.department_id in
+            <foreach collection="branchDepartment" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="deptIds!=null and deptIds.size()>0">
+            and department.department_id in
+            <foreach collection="deptIds" open="(" item="item" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        ORDER BY u.projectCount,u.peopleCount
+        <if test="size!=null and start!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
 </mapper>

+ 6 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json

@@ -1440,5 +1440,10 @@
   "chu-cha": "evection",
   "xuan-xiang-1": "Option 1",
   "xuan-xiang-2": "Option 2",
-  "zi-yuan-xu-qiu-dao-chu": "Exporting Resource Requirements"
+  "zi-yuan-xu-qiu-dao-chu": "Exporting Resource Requirements",
+  "bumenchanyuqingkuang": "Project information of the departments involved",
+  "can-yu-de-xiang-mu-de-shu-liang": "number of projects involved",
+  "can-yu-ren-ci": "Number of participants",
+  "chu-cha-de-tian-shu": "Days of business trip",
+  "xiang-mu-chuang-jian-shi-jian-duan": "Project Creation Period"
 }

+ 6 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json

@@ -1440,5 +1440,10 @@
   "xuan-xiang-1": "选项1",
   "xuan-xiang-2": "选项2",
   "zi-yuan-xu-qiu-dao-chu": "资源需求导出",
-  "chu-cha": "出差"
+  "chu-cha": "出差",
+  "bumenchanyuqingkuang": "部门参与项目情况表",
+  "can-yu-de-xiang-mu-de-shu-liang": "参与的项目的数量",
+  "can-yu-ren-ci": "参与人次",
+  "chu-cha-de-tian-shu": "出差的天数",
+  "xiang-mu-chuang-jian-shi-jian-duan": "项目创建时间段"
 }

+ 4 - 0
fhKeeper/formulahousekeeper/timesheet/src/permissions.js

@@ -72,6 +72,8 @@ const StringUtil = {
         reportOutputValue: false, // 负责项目成本基线表 //
         reportMonthlyPersonnel: false, // 全部人员月度工时表 //
         reportResponsiblePersonnel: false, // 负责部门月度工时表   //
+        reportAllDepartmentParticipation: false, // 全部部门参与项目情况表 //
+        reportResponsibleDepartmentParticipation: false, // 负责部门参与项目情况表 //
 
         // 请假模块
         leaveFil : false, // 请假填报 // 
@@ -193,6 +195,8 @@ const StringUtil = {
         arr[i] == '删除出差' ? obj.awayOfficeDelete = true : ''
         arr[i] == '全部人员月度工时表' ? obj.reportMonthlyPersonnel = true : ''
         arr[i] == '负责部门月度工时表' ? obj.reportResponsiblePersonnel = true : ''
+        arr[i] == '全部部门参与项目情况表' ? obj.reportAllDepartmentParticipation = true : ''
+        arr[i] == '负责部门参与项目情况表' ? obj.reportResponsibleDepartmentParticipation = true : ''
     }
 
     return obj

+ 6 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue

@@ -547,10 +547,12 @@
                                                 console.log(result, '请求微信成功')
                                                 console.log(window, 'window')
                                                 //  wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
-                                                window.WWOpenData.bind(document.querySelector('ww-open-data'))
-                                                if (WWOpenData.initCanvas) {
-                                                    WWOpenData.initCanvas()
-                                                    console.log('我企业微信 canvas 应该执行了吧')
+                                                if(window.WWOpenData) {
+                                                    window.WWOpenData.bind(document.querySelector('ww-open-data'))
+                                                    if (WWOpenData.initCanvas) {
+                                                        WWOpenData.initCanvas()
+                                                        console.log('我企业微信 canvas 应该执行了吧')
+                                                    }
                                                 }
                                             },
                                             fail: function (res) {

+ 72 - 9
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -35,6 +35,7 @@
                   <el-menu-item index="1-11" v-if="permissions.reportAuditRate"><p @click="ssl(10)">{{ $t('dailyreporttobereviewedstatistics') }}</p></el-menu-item>
                   <el-menu-item index="1-12" v-if="permissions.reportPersonnel || permissions.reportResponsible"><p @click="ssl(11)">{{ $t('statisticsofpersonnelhours') }}</p></el-menu-item>
                   <el-menu-item index="1-15" v-if="permissions.reportMonthlyPersonnel || permissions.reportResponsiblePersonnel"><p @click="ssl(14)">{{ $t('ren-yuan-yue-du-gong-shi-biao') }}</p></el-menu-item>
+                  <el-menu-item index="1-16" v-if="permissions.reportAllDepartmentParticipation || permissions.reportResponsibleDepartmentParticipation"><p @click="ssl(15)">{{ $t('bumenchanyuqingkuang') }}</p></el-menu-item>
                   <!-- <el-menu-item index="1-12"><p @click="ssl(11)">人员工时统计表</p></el-menu-item> -->
                 </el-submenu>
               </el-menu>
@@ -68,9 +69,13 @@
           </el-select>
         </template>
         <!-- 时间段筛选 -->
-          <template v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 12">
-            <span class="demonstration" style="color:#999;padding:0 10px">{{ $t('message.period') }}</span>
-            <el-date-picker v-model="rangeDatas" type="daterange" value-format="yyyy-MM-dd" :placeholder="$t('selectstartdate')" @change="picks()" :range-separator="$t('other.to')" :start-placeholder="$t('time.startDate')" :end-placeholder="$t('time.endDate')" style="width:300px" :clearable="false" size="small"> </el-date-picker>
+          <template v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 12 || ins == 15">
+            <span>
+              <span class="demonstration" style="color:#999;padding:0 10px">
+                {{ ins == 15 ? $t('xiang-mu-chuang-jian-shi-jian-duan') : $t('message.period') }}
+              </span>
+              <el-date-picker v-model="rangeDatas" type="daterange" value-format="yyyy-MM-dd" :placeholder="$t('selectstartdate')" @change="picks()" :range-separator="$t('other.to')" :start-placeholder="$t('time.startDate')" :end-placeholder="$t('time.endDate')" style="width:300px" :clearable="ins == 15" size="small"> </el-date-picker>
+            </span>
           </template>
 
         <!-- 按部门/项目筛选 -->
@@ -79,7 +84,7 @@
           <el-option label="查看部门审核人" :value="0"></el-option>
         </el-select> -->
         <!-- 项目筛选 -->
-        <el-select v-if="ins != 4 && ins != 8 && ins != 9 && ins != 10 && ins != 11 && ins != 14" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
+        <el-select v-if="ins != 4 && ins != 8 && ins != 9 && ins != 10 && ins != 11 && ins != 14 && ins != 15" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
           <el-option v-for="(item) in proListOvertime" :key="item.id" :label="item.projectName + (item.projectCode ? item.projectCode : '')" :value="item.id">
             <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
             <span style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
@@ -89,13 +94,13 @@
         <el-date-picker v-if="ins == 14" value-format="yyyy-MM" v-model="monthPersonnel" type="month" :placeholder="$t('Selectmonth')" :clearable="false" @change="selcts()" size="small"></el-date-picker>
           
           <!-- 部门筛选 -->
-          <el-cascader v-if="((ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate != 1" v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
+          <el-cascader v-if="(ins == 15 || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate != 1" v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
             :props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false" clearable
             @change="selcts(9)" size="small" style="margin-left:10px"
           ></el-cascader>
 
           <!-- 部门筛选 -->
-          <vueCascader :size="'small'" :widthStr="'125'" :clearable="true" :subject="departmentList" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="(((ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate == 1)" :selectNameChuan="$t('qing-xuan-ze-bu-men')"></vueCascader>
+          <vueCascader :size="'small'" :widthStr="'125'" :clearable="true" :subject="departmentList" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="((ins == 15 || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate == 1)" :selectNameChuan="$t('qing-xuan-ze-bu-men')"></vueCascader>
 
           <!-- 任务筛选 -->
           <el-select v-if="ins == 1" v-model="taskTypeId" :placeholder="$t('pleaseselecttype')" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
@@ -716,6 +721,15 @@
                   </template>
                 </el-table-column>
             </el-table>
+
+            <!-- 部门参与项目情况表 -->
+            <el-table v-if="ins == 15"  key="15" border :data="tableList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+                <el-table-column align="center" prop="deptName" :label="$t('departmentname')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="projectCount" :label="$t('can-yu-de-xiang-mu-de-shu-liang')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="peopleCount" :label="$t('can-yu-ren-ci')" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="tripCount" :label="$t('chu-cha-de-tian-shu')" min-width="150"></el-table-column>
+            </el-table>
+
         <!--工具条-->
         <el-col :span="24" class="toolbar" v-if="ins != 6">
           <el-pagination
@@ -957,7 +971,7 @@ export default {
       this.$t('pojectbalancesheetincomestatement'),this.$t('customerprojectprofitstatement'),this.$t('projectphasetimesheet'),
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('statisticsofstafffillingintimerate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
-      this.$t('ren-yuan-yue-du-gong-shi-biao')],
+      this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang')],
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
       overTimeList: [], // 项目加班情况统计列表
@@ -1008,7 +1022,9 @@ export default {
       timelyDetailDialog: false,
 
       monthlyPersonnelList: [],
-      monthPersonnel: ''
+      monthPersonnel: '',
+
+      tableList: []
     };
   },
   computed: {},
@@ -1063,7 +1079,7 @@ export default {
         if (rs < 0) {  
             rs = s.length;  
             s += '.';  
-        }  
+        }  15
         while (s.length <= rs + 1) {  
             s += '0';  
         }  
@@ -1087,6 +1103,7 @@ export default {
       if(this.permissions.reportAuditRate) {this.ssl(10);this.defaultActive = '1-11';return} else 
       if(this.permissions.reportPersonnel || this.permissions.reportResponsible) {this.ssl(11);this.defaultActive = '1-12';return}
       if(this.permissions.reportMonthlyPersonnel || this.permissions.reportResponsiblePersonnel) {this.ssl(14);this.defaultActive = '1-15';return}
+      if(this.permissions.reportAllDepartmentParticipation || this.permissions.reportResponsibleDepartmentParticipation) {this.ssl(15);this.defaultActive = '1-16';return}
       {this.allWrong = false}
     },
     rowspan(spanArr,position,spanName){
@@ -1283,6 +1300,11 @@ export default {
                 this.getGroupWorktimeAll()
             },
             getList() {
+              if(this.ins == 15) {
+                this.rangeDatas = null
+              } else {
+                this.rangeDatas = this.getCurrentRangeTime()
+              }
                 if (this.ins == 0) {
                     this.getProjectList();
                 } else if (this.ins == 1) {
@@ -1318,6 +1340,8 @@ export default {
                   this.getOutputValueList()
                 } else if(this.ins == 14) {
                   this.getMonthlyPersonnel()
+                } else if(this.ins == 15) {
+                  this.getDepartmentsInvolved()
                 }
             },
       exportExcel() {
@@ -1407,6 +1431,12 @@ export default {
           sl.departmentId = this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : '',
           sl.month = this.monthPersonnel + '-01',
           sl.whether = this.whether
+        } else if(this.ins == 15) {
+          fName = this.$t('bumenchanyuqingkuang') + '.xls'
+          url += "/exportDeptPartInProjects"
+          sl.startDate= this.rangeDatas ? this.rangeDatas[0] : '',
+          sl.endDate = this.rangeDatas ? this.rangeDatas[1] : '',
+          sl.departmentId = this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : ''
         }
           this.http.post(url, sl,
             res => {
@@ -1609,6 +1639,36 @@ export default {
         })
       })
     },
+    // 部门参与项目情况表
+    getDepartmentsInvolved() {
+      let parameter = {
+        pageIndex: this.page,
+        pageSize: this.size,
+        startDate: this.rangeDatas ? this.rangeDatas[0] : '',
+        endDate: this.rangeDatas ? this.rangeDatas[1] : '',
+        departmentId: this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : '',
+      }
+      this.listLoading = true
+      this.http.post('/project/deptPartInProjects',parameter,
+      res => {
+      this.listLoading = false
+        if(res.code == 'ok'){
+          this.tableList = res.data.resultList
+          this.total = res.data.total
+        }else {
+          this.$message({
+            message: res.msg,
+            type: 'error'
+          })
+        }
+      },err => {
+        this.listLoading = false
+        this.$message({
+          message: err,
+          type: 'error'
+        })
+      })
+    },
     overTime() {
       this.listLoading = true;
       var obj = {
@@ -2144,6 +2204,9 @@ export default {
         this.proJuctId = ''
         this.getList()
       }
+      if(this.ins == 15) {
+        this.getDepartmentsInvolved()
+      }
     },
     // 日期
     getCurrentRangeTime() {

+ 8 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -112,7 +112,7 @@
                         </span> 
                     </el-select>
 
-                    <selectCat v-if="user.userNameNeedTranslate == 1" :size="'small'" :subject="users" :subjectId="addForm.ownerId" :distinction="'1'" :disabled="true" @selectCal="selectCal"></selectCat>
+                    <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :widthStr="'240'" :subject="users" :subjectId="addForm.ownerId" :distinction="'1'" :disabled="true" @selectCal="selectCal"></selectCat>
 
                 </el-form-item>
                 <!-- 电话 -->
@@ -128,7 +128,7 @@
                 </el-form-item>
                 <!-- 选择审批人 -->
                 <el-form-item :label="$t('approver')" style="width:300px" prop="projectAuditorJson">
-                    <el-select style="display:inline-block;width:250px;" multiple v-model="addForm.projectAuditorJson" :placeholder="$t('defaultText.pleaseChoose')">
+                    <el-select style="display:inline-block;width:250px;" multiple v-model="addForm.projectAuditorJson" :placeholder="$t('defaultText.pleaseChoose')" v-if="user.userNameNeedTranslate != 1">
                       <el-option
                       v-for="item in approverList"
                       :key="item.id"
@@ -137,7 +137,7 @@
                       ></el-option>
                     </el-select>
 
-                    <!-- <selectCat v-if="user.userNameNeedTranslate != 1" :size="'small'" :subject="users" :subjectId="addForm.ownerId" :distinction="'1'" :disabled="false" @selectCal="selectCal"></selectCat> -->
+                     <selectCat v-if="user.userNameNeedTranslate == 1" :size="'medium'" :multiSelect="true" :widthStr="'250'" :subject="users" :subjectId="addForm.ownerId" :distinction="'2'" @selectCal="selectCal"></selectCat>
                 </el-form-item>
                 <!-- 时间选择 -->
                 <el-form-item :label="flg ? $t('optiondate') : $t('other.timeSelection')" style="width: 100%;">
@@ -1913,7 +1913,11 @@ export default {
         this.addForm.ownerId = obj.id
         this.txselts(obj.other, obj.id)
       } else if(obj.distinction == '2') {
-
+        let arr = []
+        for(let i in obj.arrUserList) {
+          arr.push(obj.arrUserList[i].id)
+        }
+        this.addForm.projectAuditorJson = arr
       } else if(obj.distinction == '3') {
         this.ownerIds = obj.id
         this.chufas()

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -400,8 +400,8 @@
         </el-col>
 
         <!--新增界面-->
-        <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" width="960px">
-            <el-form ref="form1" :model="addForm" :rules="rules" label-width="120px">
+        <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" width="960px" :top="'6vh'">
+            <el-form ref="form1" :model="addForm" :rules="rules" label-width="120px" style="height: 72vh;overflow: auto;">
                 <el-form-item :label="$t('Itemno')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
                     <!-- <el-input v-model="addForm.code" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目编号" clearable></el-input> -->
                     <el-input v-model="addForm.code" :placeholder="$t('peaseenterthe')" clearable></el-input>

+ 327 - 327
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -359,365 +359,365 @@
 
         <!--新增任务界面-->
         <el-dialog :class="addForm.id==null?'':'jm'" :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" 
-        :close-on-click-modal="false" customClass="customWidth" width="800px" ref="addDialog">
+        :close-on-click-modal="false" customClass="customWidth" width="800px" ref="addDialog" :top="'6vh'">
         <!-- <div style="width: 200%;height:80%;position: absolute;right:-100%;top:0;background:#000;opacity: 0;" @click="sss"></div> -->
-
-            <el-form ref="form1" :model="addForm" :rules="taskRules" label-width="100px">
-                <!--子任务需要选择任务列表 -->
-                <el-form-item :label="$t('tasklist')" prop="stages" v-if="addForm.parentTid != null">
-                    <el-select v-model="addForm.stagesId" style="width:100%;" >
-                        <el-option v-for="item in stageList" :key="item.id" :label="item.stagesName" :value="item.id"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item :label="$t('types')">
-                    <!-- <el-button @click="test">test</el-button> -->
-                    <!-- 0011 -->
-                    <!-- {{groupResponsibleId == user.id}} -->
-                    <el-select v-model="addForm.taskType" style="width:100%;" :disabled="((this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement) && !(groupResponsibleId == user.id)" @change="selchg()">
-                        <el-option v-for="item in taskTypeList" :key="item.id" :label="item.name" :value="item.id">
-                            <i :class="item.icon" ></i>
-                            <span>{{item.name}}</span>
-                        </el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item :label="$t('taskdefinition')" prop="name">
-                    <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" :placeholder="$t('enterthetaskcontent')" clearable></el-input>
-                </el-form-item>
-                <!-- {{timelabel}}{{mileageCup}} -->
-                <el-form-item :label="!timelabel ? $t('starttimes') : $t('jie-zhi-shi-jian')" prop="startDate">
-                    <el-date-picker v-model="addForm.startDate" type="date" style="width:40%;" value-format="yyyy-MM-dd"  
-                    :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" @change="DateChange()" v-if="!timelabel"></el-date-picker>
-                    <span style="margin-left:30px;margin-right:10px;" v-if="!timelabel">{{ $t('deadline') }}</span>
-                    <el-date-picker style="width:40%;" v-model="addForm.endDate" type="date" value-format="yyyy-MM-dd"  
-                    :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
-
-                    <span style="margin-left:30px;margin-right:10px;" v-if="timelabel && mileageCup">{{ $t('wan-cheng-shi-jian') }}</span>
-                    <el-date-picker style="width:40%;" v-if="timelabel && mileageCup" v-model="addForm.finishDate" type="date" value-format="yyyy-MM-dd"  
-                    :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
+            <div style="height: 72vh;overflow: auto;">
+                <el-form ref="form1" :model="addForm" :rules="taskRules" label-width="100px">
+                    <!--子任务需要选择任务列表 -->
+                    <el-form-item :label="$t('tasklist')" prop="stages" v-if="addForm.parentTid != null">
+                        <el-select v-model="addForm.stagesId" style="width:100%;" >
+                            <el-option v-for="item in stageList" :key="item.id" :label="item.stagesName" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item :label="$t('types')">
+                        <!-- <el-button @click="test">test</el-button> -->
+                        <!-- 0011 -->
+                        <!-- {{groupResponsibleId == user.id}} -->
+                        <el-select v-model="addForm.taskType" style="width:100%;" :disabled="((this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement) && !(groupResponsibleId == user.id)" @change="selchg()">
+                            <el-option v-for="item in taskTypeList" :key="item.id" :label="item.name" :value="item.id">
+                                <i :class="item.icon" ></i>
+                                <span>{{item.name}}</span>
+                            </el-option>
+                        </el-select>
                     </el-form-item>
+                    <el-form-item :label="$t('taskdefinition')" prop="name">
+                        <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" :placeholder="$t('enterthetaskcontent')" clearable></el-input>
+                    </el-form-item>
+                    <!-- {{timelabel}}{{mileageCup}} -->
+                    <el-form-item :label="!timelabel ? $t('starttimes') : $t('jie-zhi-shi-jian')" prop="startDate">
+                        <el-date-picker v-model="addForm.startDate" type="date" style="width:40%;" value-format="yyyy-MM-dd"  
+                        :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" @change="DateChange()" v-if="!timelabel"></el-date-picker>
+                        <span style="margin-left:30px;margin-right:10px;" v-if="!timelabel">{{ $t('deadline') }}</span>
+                        <el-date-picker style="width:40%;" v-model="addForm.endDate" type="date" value-format="yyyy-MM-dd"  
+                        :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
+
+                        <span style="margin-left:30px;margin-right:10px;" v-if="timelabel && mileageCup">{{ $t('wan-cheng-shi-jian') }}</span>
+                        <el-date-picker style="width:40%;" v-if="timelabel && mileageCup" v-model="addForm.finishDate" type="date" value-format="yyyy-MM-dd"  
+                        :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" @change="DateChange()"></el-date-picker>
+                        </el-form-item>
 
-                <div style="border: 1px solid #ddd;margin:5px 0;padding:5px 0;">
-                <el-form-item :label="$t('zhi-hang-ren') + (index+1)" v-for="(executorItem, index) in addForm.executorListFront" :key="index">
+                    <div style="border: 1px solid #ddd;margin:5px 0;padding:5px 0;">
+                    <el-form-item :label="$t('zhi-hang-ren') + (index+1)" v-for="(executorItem, index) in addForm.executorListFront" :key="index">
 
-                    <el-select v-if="user.userNameNeedTranslate != 1" v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" size="small" filterable clearable :placeholder="$t('pleaseselectanexecutor')" style="width:40%;" @change="$forceUpdate()">
-                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
-                             <span style="float: left">{{ item.name }}</span>
-                             <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
-                        </el-option>
-                    </el-select>
+                        <el-select v-if="user.userNameNeedTranslate != 1" v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" size="small" filterable clearable :placeholder="$t('pleaseselectanexecutor')" style="width:40%;" @change="$forceUpdate()">
+                            <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
+                                <span style="float: left">{{ item.name }}</span>
+                                <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
+                            </el-option>
+                        </el-select>
 
-                    <selectCat v-if="user.userNameNeedTranslate == 1" :size="'mini'" :subject="users" :subjectId="executorItem.executorId" :distinction="'1'" @selectCal="selectCal" :index="index" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)"></selectCat>
+                        <selectCat v-if="user.userNameNeedTranslate == 1" :size="'mini'" :subject="users" :subjectId="executorItem.executorId" :distinction="'1'" @selectCal="selectCal" :index="index" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)"></selectCat>
 
 
-                    <span style="margin-left:30px;margin-right:10px;">{{ $t('plantime') }}</span>
-                    <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" v-model="gstimday[index]" style="width:16%;" :min="1" :max="100"  :placeholder="$t('danweitian')" @change="chggstim(0,index)"></el-input-number ><span style="margin-left:5px;">{{ $t('time.day') }}</span>
-                    <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" v-model="gstimhour[index]" style="width:16%;" :min="1" :max="100"  :placeholder="$t('pleaseentertheplannedworking')" @change="chggstim(1,index)"></el-input-number ><span style="margin-left:5px;">{{ $t('time.hour') }}</span>
-                    <!--移除执行人 -->
-                    <i class="el-icon-delete" v-if="index>0 && (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id|| permissions.projectManagement || groupResponsibleId == user.id)" style="margin-left:5px" @click="removeExecutorLine(index)"></i>
-                </el-form-item>
-                <el-link type="primary" v-if="(((addForm.executorListFront == null || addForm.executorListFront.length<10) && 
-                (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id || permissions.projectManagement)) || 
-                groupResponsibleId == user.id)" 
-                style="margin-left:35px;" @click="addExecutorLine">{{ $t('addinganexecutor') }}</el-link>
-                </div>
-                <el-form-item :label="$t('priority')">
-                    <el-select v-model="addForm.taskLevel" style="width:100%;" >
-                        <el-option v-for="item in importanceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                    </el-select>
-                </el-form-item>
-                <!-- 富文本 -->
-                <el-form-item :label="$t('detaileddescription')" style="height: 200px">
-                    <!-- <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit"></Editor> -->
-                    <!-- <el-input type="textarea" v-model="addForm.taskDesc" :rows="3"></el-input> -->
-                      <!-- <quill-edito v-model="addForm.taskDesc"></quill-edito> -->
-                      <quill-editor style="height: 150px" ref="text" v-model="addForm.taskDesc" class="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"/>
-                </el-form-item>
-                <!-- 富文本 -->
-                <div v-if="addForm.id != null">
-                    <el-divider ></el-divider>
-                    <!-- 任务进展 -->
-                    <template v-if="!timelabel || isRelationItem">
-                    
-                    <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('taskprogress') }}</i>
-                        <span ref="addPro" style="display: block; float:right;"><el-link @click="addprogress">{{ $t('addtaskprogress') }}</el-link></span>
-                    </p>
-                    <!-- 任务进展展示 -->
-                    <div style="display: none;" ref="proBox" class="progress">
-                        <!-- <el-form :model="> -->
-                        <el-radio-group v-model="radio">
-                            <el-radio :label="0" class="rala1">{{ $t('normals') }}</el-radio>
-                            <el-radio :label="1" class="rala2">{{ $t('atrisk') }}</el-radio>
-                            <el-radio :label="2" class="rala3">{{ $t('withinthetimelimit') }}</el-radio>
-                        </el-radio-group>
-
-                        <el-input
-                        type="textarea"
-                        border="0"
-                        :autosize="{ minRows: 2, maxRows: 6}"
-                        :placeholder="$t('detailedprogressdescription')"
-                        v-model.trim="text2"
-                        style="margin:10px 0 0 0">
-                        </el-input>
-
-                        <h4 style="font-weight: normal;">{{ $t('tixiang') }}{{checkLists.length}}</h4>
-
-                        <i class="el-icon-circle-plus pron_i" style="font-size: 28px;color: #409EFF;" @click="addI(0)"></i>
-
-                        <div class="remind" ref="addRem" style="display: none">
-                            <el-checkbox-group v-model="checkboxGrounp" v-for="item in users" :key="item.id">
-                                <p>
-                                    <el-checkbox :label="item.name" @change="kkk(item)">
-                                        <span>
-                                            <span v-if="user.userNameNeedTranslate != '1'">
-                                                {{item.name}}
-                                            </span>
-                                            <span v-if="user.userNameNeedTranslate == '1'">
-                                                <ww-open-data type='userName' :openid='item.name'></ww-open-data>
-                                            </span>
-                                        </span>
-                                    </el-checkbox>
-                                </p>
-                            </el-checkbox-group>
-                        </div>
-                        <div class="ssp" @click="sss"></div>
-                        <!-- </el-form> -->
-                        <div class="pro_btn">
-                            <el-button size="mini" @click="shutPro">{{ $t('btn.cancel') }}</el-button>
-                            <el-button size="mini" type="primary" @click="addTaskProgress">{{ $t('fa-bu') }}</el-button>
-                        </div>
-
+                        <span style="margin-left:30px;margin-right:10px;">{{ $t('plantime') }}</span>
+                        <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" v-model="gstimday[index]" style="width:16%;" :min="1" :max="100"  :placeholder="$t('danweitian')" @change="chggstim(0,index)"></el-input-number ><span style="margin-left:5px;">{{ $t('time.day') }}</span>
+                        <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" v-model="gstimhour[index]" style="width:16%;" :min="1" :max="100"  :placeholder="$t('pleaseentertheplannedworking')" @change="chggstim(1,index)"></el-input-number ><span style="margin-left:5px;">{{ $t('time.hour') }}</span>
+                        <!--移除执行人 -->
+                        <i class="el-icon-delete" v-if="index>0 && (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id|| permissions.projectManagement || groupResponsibleId == user.id)" style="margin-left:5px" @click="removeExecutorLine(index)"></i>
+                    </el-form-item>
+                    <el-link type="primary" v-if="(((addForm.executorListFront == null || addForm.executorListFront.length<10) && 
+                    (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id || permissions.projectManagement)) || 
+                    groupResponsibleId == user.id)" 
+                    style="margin-left:35px;" @click="addExecutorLine">{{ $t('addinganexecutor') }}</el-link>
                     </div>
+                    <el-form-item :label="$t('priority')">
+                        <el-select v-model="addForm.taskLevel" style="width:100%;" >
+                            <el-option v-for="item in importanceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    <!-- 富文本 -->
+                    <el-form-item :label="$t('detaileddescription')" style="height: 200px">
+                        <!-- <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit"></Editor> -->
+                        <!-- <el-input type="textarea" v-model="addForm.taskDesc" :rows="3"></el-input> -->
+                        <!-- <quill-edito v-model="addForm.taskDesc"></quill-edito> -->
+                        <quill-editor style="height: 150px" ref="text" v-model="addForm.taskDesc" class="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"/>
+                    </el-form-item>
+                    <!-- 富文本 -->
+                    <div v-if="addForm.id != null">
+                        <el-divider ></el-divider>
+                        <!-- 任务进展 -->
+                        <template v-if="!timelabel || isRelationItem">
+                        
+                        <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('taskprogress') }}</i>
+                            <span ref="addPro" style="display: block; float:right;"><el-link @click="addprogress">{{ $t('addtaskprogress') }}</el-link></span>
+                        </p>
+                        <!-- 任务进展展示 -->
+                        <div style="display: none;" ref="proBox" class="progress">
+                            <!-- <el-form :model="> -->
+                            <el-radio-group v-model="radio">
+                                <el-radio :label="0" class="rala1">{{ $t('normals') }}</el-radio>
+                                <el-radio :label="1" class="rala2">{{ $t('atrisk') }}</el-radio>
+                                <el-radio :label="2" class="rala3">{{ $t('withinthetimelimit') }}</el-radio>
+                            </el-radio-group>
+
+                            <el-input
+                            type="textarea"
+                            border="0"
+                            :autosize="{ minRows: 2, maxRows: 6}"
+                            :placeholder="$t('detailedprogressdescription')"
+                            v-model.trim="text2"
+                            style="margin:10px 0 0 0">
+                            </el-input>
+
+                            <h4 style="font-weight: normal;">{{ $t('tixiang') }}{{checkLists.length}}</h4>
+
+                            <i class="el-icon-circle-plus pron_i" style="font-size: 28px;color: #409EFF;" @click="addI(0)"></i>
+
+                            <div class="remind" ref="addRem" style="display: none">
+                                <el-checkbox-group v-model="checkboxGrounp" v-for="item in users" :key="item.id">
+                                    <p>
+                                        <el-checkbox :label="item.name" @change="kkk(item)">
+                                            <span>
+                                                <span v-if="user.userNameNeedTranslate != '1'">
+                                                    {{item.name}}
+                                                </span>
+                                                <span v-if="user.userNameNeedTranslate == '1'">
+                                                    <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                                                </span>
+                                            </span>
+                                        </el-checkbox>
+                                    </p>
+                                </el-checkbox-group>
+                            </div>
+                            <div class="ssp" @click="sss"></div>
+                            <!-- </el-form> -->
+                            <div class="pro_btn">
+                                <el-button size="mini" @click="shutPro">{{ $t('btn.cancel') }}</el-button>
+                                <el-button size="mini" type="primary" @click="addTaskProgress">{{ $t('fa-bu') }}</el-button>
+                            </div>
 
-                    
+                        </div>
 
-                    <div class="ddl" v-if="recentProgressInfo != null && recentProgressInfo.id != null">
-                        <div class="elCard" style="margin-bottom: 10px; height:" >
-                            <i class="el-icon-success" style="color: #43d14f;" v-if="recentProgressInfo.status == 0"></i>
-                            <i class="el-icon-success" style="color: #fd7624;" v-else-if="recentProgressInfo.status == 1"></i>
-                            <i class="el-icon-success" style="color: #fd4d47;" v-else></i>
-                            <span v-if="recentProgressInfo.status == 0">{{ $t('normals') }}</span>
-                            <span v-else-if="recentProgressInfo.status == 1">{{ $t('normals') }}</span>
-                            <span v-else>{{ $t('withinthetimelimit') }}</span>
-
-                            <el-dropdown trigger="click" style="float:right;cursor:pointer; float: right;">
-                                    <i class="el-icon-more" ></i>
-                                    <el-dropdown-menu slot="dropdown">
+                        
 
-                                        <el-dropdown-item divided>
-                                            <span @click="deleteTaskProgress(recentProgressInfo.id)"><i class="el-icon-delete"></i>{{ $t('deleteList ') }}</span></el-dropdown-item>
-                                    </el-dropdown-menu>
-                            </el-dropdown>
-                            <div class="elCard_qu">{{recentProgressInfo.creatorName}}{{ $t('geng-xin-yu') }}{{recentProgressInfo.indate | relativeTime}}</div>
-                            <p style="padding-left: 20px;">{{recentProgressInfo.content}}</p>
-                            <div class="examine"><el-button type="text" @click="innerVisibless = true" style="color: #8F87A3;">{{ $t('viewingHistory') }}</el-button></div>
+                        <div class="ddl" v-if="recentProgressInfo != null && recentProgressInfo.id != null">
+                            <div class="elCard" style="margin-bottom: 10px; height:" >
+                                <i class="el-icon-success" style="color: #43d14f;" v-if="recentProgressInfo.status == 0"></i>
+                                <i class="el-icon-success" style="color: #fd7624;" v-else-if="recentProgressInfo.status == 1"></i>
+                                <i class="el-icon-success" style="color: #fd4d47;" v-else></i>
+                                <span v-if="recentProgressInfo.status == 0">{{ $t('normals') }}</span>
+                                <span v-else-if="recentProgressInfo.status == 1">{{ $t('normals') }}</span>
+                                <span v-else>{{ $t('withinthetimelimit') }}</span>
+
+                                <el-dropdown trigger="click" style="float:right;cursor:pointer; float: right;">
+                                        <i class="el-icon-more" ></i>
+                                        <el-dropdown-menu slot="dropdown">
+
+                                            <el-dropdown-item divided>
+                                                <span @click="deleteTaskProgress(recentProgressInfo.id)"><i class="el-icon-delete"></i>{{ $t('deleteList ') }}</span></el-dropdown-item>
+                                        </el-dropdown-menu>
+                                </el-dropdown>
+                                <div class="elCard_qu">{{recentProgressInfo.creatorName}}{{ $t('geng-xin-yu') }}{{recentProgressInfo.indate | relativeTime}}</div>
+                                <p style="padding-left: 20px;">{{recentProgressInfo.content}}</p>
+                                <div class="examine"><el-button type="text" @click="innerVisibless = true" style="color: #8F87A3;">{{ $t('viewingHistory') }}</el-button></div>
+                            </div>
                         </div>
-                    </div>
 
-                    <!-- 任务列表没有数据的时候展示 -->
-                    <div class="nones" v-if="ProgressList.length <= 0">
-                        {{ $t('nodata') }} 
-                    </div>
+                        <!-- 任务列表没有数据的时候展示 -->
+                        <div class="nones" v-if="ProgressList.length <= 0">
+                            {{ $t('nodata') }} 
+                        </div>
 
-                    <!-- 任务进展完整状态 -->
-                    <el-dialog :title="$t('other.prompts')" :visible.sync="innerVisibless" append-to-body width="500px">
-                    <div class="integrity">
-                        <h3 style="font-weight: normal;display: inline-block;margin: 0 0 20px 0;">{{ $t('taskprogress') }} :{{ProgressList.length}}</h3>
-                        <!-- <span class="write"><i class="el-icon-circle-plus"></i>填写进展</span> -->
-                         <el-divider></el-divider>
-
-                         <!--  -->
-                            <div class="block" style="height: 200px;">
-                                <el-timeline style="padding:20px 0 0 0;">
-                                    <el-timeline-item
-                                    v-for="(activity, index) in ProgressList"
-                                    :key="index">
-                                    <div class="tb">
-                                        <span v-if="activity.status == 0" style="color: #43D14F" class="icon"></span>
-                                        <span v-if="activity.status == 1" style="color: #FD7624" class="icon"></span>
-                                        <span v-if="activity.status == 2" style="color: red" class="icon"></span>
-                                        <div>
-                                            <span v-if="activity.status == 0" style="color: #43D14F">{{ $t('normals') }}</span>
-                                            <span v-if="activity.status == 1" style="color: #FD7624">{{ $t('atrisk') }}</span>
-                                            <span v-if="activity.status == 2" style="color: red">{{ $t('withinthetimelimit') }}</span>
-                                            <span style="display: inline-block; float: right; color: #8C8C8C">{{activity.indate | relativeTime}}</span>
+                        <!-- 任务进展完整状态 -->
+                        <el-dialog :title="$t('other.prompts')" :visible.sync="innerVisibless" append-to-body width="500px">
+                        <div class="integrity">
+                            <h3 style="font-weight: normal;display: inline-block;margin: 0 0 20px 0;">{{ $t('taskprogress') }} :{{ProgressList.length}}</h3>
+                            <!-- <span class="write"><i class="el-icon-circle-plus"></i>填写进展</span> -->
+                            <el-divider></el-divider>
+
+                            <!--  -->
+                                <div class="block" style="height: 200px;">
+                                    <el-timeline style="padding:20px 0 0 0;">
+                                        <el-timeline-item
+                                        v-for="(activity, index) in ProgressList"
+                                        :key="index">
+                                        <div class="tb">
+                                            <span v-if="activity.status == 0" style="color: #43D14F" class="icon"></span>
+                                            <span v-if="activity.status == 1" style="color: #FD7624" class="icon"></span>
+                                            <span v-if="activity.status == 2" style="color: red" class="icon"></span>
+                                            <div>
+                                                <span v-if="activity.status == 0" style="color: #43D14F">{{ $t('normals') }}</span>
+                                                <span v-if="activity.status == 1" style="color: #FD7624">{{ $t('atrisk') }}</span>
+                                                <span v-if="activity.status == 2" style="color: red">{{ $t('withinthetimelimit') }}</span>
+                                                <span style="display: inline-block; float: right; color: #8C8C8C">{{activity.indate | relativeTime}}</span>
+                                            </div>
+                                            <p style="color: #8C8C8C">{{activity.content}}</p>
+                                            
                                         </div>
-                                        <p style="color: #8C8C8C">{{activity.content}}</p>
-                                        
-                                    </div>
-                                    </el-timeline-item>
-                                </el-timeline>
-                            </div>
-                         <!--  -->
-                    </div>
-                    <span slot="footer" class="dialog-footer">
-                        <el-button type="primary" @click="innerVisibless = false">{{ $t('Shutdown') }}</el-button>
-                    </span>
-                    </el-dialog>
+                                        </el-timeline-item>
+                                    </el-timeline>
+                                </div>
+                            <!--  -->
+                        </div>
+                        <span slot="footer" class="dialog-footer">
+                            <el-button type="primary" @click="innerVisibless = false">{{ $t('Shutdown') }}</el-button>
+                        </span>
+                        </el-dialog>
 
-                    </template>
+                        </template>
 
-                    <!-- 子任务/关联任务 -->
-                    <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{timelabel && !isRelationItem ? $t('guanlian') : $t('zirwu')}}</i>
-                        <el-link style="float:right;" @click="addRelation" v-if="timelabel && !isRelationItem">{{ $t('associatedTask') }}</el-link>
-                        <el-link style="float:right;" @click="addSubTask" v-else>{{ $t('addingsubtask') }}</el-link>
-                    </p>
-                    <!-- 关联任务列表 -->
-                    <el-table key="guanlian" :data="relationSubTaskList" v-if="timelabel && !isRelationItem"
-                    :header-cell-style="{'font-weight':'normal'}"
-                    highlight-current-row
-                    v-loading="listLoading"
-                    style="width: 100%;margin-top:10px;"
-                    @row-click="relationTaskClick">
-                        <el-table-column prop="taskStatus" :label="$t('wan-cheng')" width="50" >
-                            <template slot-scope="scope">
-                                <el-checkbox :disabled="scope.row.taskStatus==2" :checked="scope.row.taskStatus==1?true:false" size="large" class="cb" @change="relationFinishTask(scope.row)" @click.stop.native=""></el-checkbox>
-                            </template>
-                        </el-table-column>
-                        <el-table-column prop="taskName" :label="$t('biao-ti')" >
-                            <template slot-scope="scope">
-                                <el-tooltip class="item" effect="dark" :content="scope.row.taskName" placement="top" style="cursor:pointer;color:#409eff;">
-                                    <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.taskName}}</span>
-                                </el-tooltip>
-                            </template>
-                        </el-table-column>
-                        <el-table-column :label="$t('operation')" width="130" align="left">
-                            <template slot-scope="scope">
-                                <el-button @click.stop.native="deleteRelationItem(scope.row.id)" size="mini">{{ $t('dissociated') }}</el-button>
-                            </template>
-                        </el-table-column>
-                    </el-table>
-                    <!--子任务列表 -->
-                    <el-table key="zi" :data="addForm.subTaskList" v-else
-                            :header-cell-style="{'font-weight':'normal'}"
-                            highlight-current-row v-loading="listLoading" style="width: 100%;margin-top:10px;" @row-click="taskLineClick">
-                                <el-table-column prop="taskStatus" :label="$t('wan-cheng')" width="50" >
+                        <!-- 子任务/关联任务 -->
+                        <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{timelabel && !isRelationItem ? $t('guanlian') : $t('zirwu')}}</i>
+                            <el-link style="float:right;" @click="addRelation" v-if="timelabel && !isRelationItem">{{ $t('associatedTask') }}</el-link>
+                            <el-link style="float:right;" @click="addSubTask" v-else>{{ $t('addingsubtask') }}</el-link>
+                        </p>
+                        <!-- 关联任务列表 -->
+                        <el-table key="guanlian" :data="relationSubTaskList" v-if="timelabel && !isRelationItem"
+                        :header-cell-style="{'font-weight':'normal'}"
+                        highlight-current-row
+                        v-loading="listLoading"
+                        style="width: 100%;margin-top:10px;"
+                        @row-click="relationTaskClick">
+                            <el-table-column prop="taskStatus" :label="$t('wan-cheng')" width="50" >
                                 <template slot-scope="scope">
-                                   <el-checkbox :disabled="scope.row.taskStatus==2" :checked="scope.row.taskStatus==1?true:false" size="large" class="cb"  
-                                                @click.stop.native=""
-                                                @change="finishTask(scope.row)"
-                                                ></el-checkbox>
+                                    <el-checkbox :disabled="scope.row.taskStatus==2" :checked="scope.row.taskStatus==1?true:false" size="large" class="cb" @change="relationFinishTask(scope.row)" @click.stop.native=""></el-checkbox>
                                 </template>
                             </el-table-column>
-                            <el-table-column prop="name" :label="$t('biao-ti')" >
+                            <el-table-column prop="taskName" :label="$t('biao-ti')" >
                                 <template slot-scope="scope">
-                                    <el-tooltip class="item" effect="dark" :content="scope.row.name" placement="top">
-                                    <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.name}}</span>
+                                    <el-tooltip class="item" effect="dark" :content="scope.row.taskName" placement="top" style="cursor:pointer;color:#409eff;">
+                                        <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.taskName}}</span>
                                     </el-tooltip>
                                 </template>
                             </el-table-column>
-                            <el-table-column prop="executorName" :label="$t('zhi-hang-ren')" width="100" >
+                            <el-table-column :label="$t('operation')" width="130" align="left">
                                 <template slot-scope="scope">
-                                    <span v-if="user.userNameNeedTranslate != 1">
-                                        {{scope.row.executorName == null?$t('dai-fen-pei'):scope.row.executorName}}
-                                    </span>
-                                    <span v-if="user.userNameNeedTranslate == 1">
-                                        <span v-if="scope.row.executorName == null">
-                                            {{$t('dai-fen-pei')}}
+                                    <el-button @click.stop.native="deleteRelationItem(scope.row.id)" size="mini">{{ $t('dissociated') }}</el-button>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                        <!--子任务列表 -->
+                        <el-table key="zi" :data="addForm.subTaskList" v-else
+                                :header-cell-style="{'font-weight':'normal'}"
+                                highlight-current-row v-loading="listLoading" style="width: 100%;margin-top:10px;" @row-click="taskLineClick">
+                                    <el-table-column prop="taskStatus" :label="$t('wan-cheng')" width="50" >
+                                    <template slot-scope="scope">
+                                    <el-checkbox :disabled="scope.row.taskStatus==2" :checked="scope.row.taskStatus==1?true:false" size="large" class="cb"  
+                                                    @click.stop.native=""
+                                                    @change="finishTask(scope.row)"
+                                                    ></el-checkbox>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="name" :label="$t('biao-ti')" >
+                                    <template slot-scope="scope">
+                                        <el-tooltip class="item" effect="dark" :content="scope.row.name" placement="top">
+                                        <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.name}}</span>
+                                        </el-tooltip>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="executorName" :label="$t('zhi-hang-ren')" width="100" >
+                                    <template slot-scope="scope">
+                                        <span v-if="user.userNameNeedTranslate != 1">
+                                            {{scope.row.executorName == null?$t('dai-fen-pei'):scope.row.executorName}}
                                         </span>
-                                        <span v-else>
-                                            <ww-open-data type='userName' :openid='scope.row.executorName'></ww-open-data>
+                                        <span v-if="user.userNameNeedTranslate == 1">
+                                            <span v-if="scope.row.executorName == null">
+                                                {{$t('dai-fen-pei')}}
+                                            </span>
+                                            <span v-else>
+                                                <ww-open-data type='userName' :openid='scope.row.executorName'></ww-open-data>
+                                            </span>
                                         </span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="endDate" :label="$t('deadline')" width="100" >
+                                    <template slot-scope="scope">
+                                        <p v-if="scope.row.endDate >= times">{{scope.row.endDate}}</p>
+                                        <p v-else style="background: #e62412; color: #fff;text-align: center; border-radius: 3px;">{{scope.row.endDate}}</p>
+                                    </template>
+                                </el-table-column>
+                        </el-table>
+                    </div>
+                </el-form>
+
+                <!-- 关联文件列表 -->
+                <template v-if="isEditFile">
+                    <div style="width:100%;margin:1em 0;">
+                        <i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('jiafuchengguo') }}</i>
+                        <el-link @click="relationFileClick()" style="float:right;margin-left:10px">{{ $t('associatedfiles') }}</el-link>
+                        <el-upload style="float:right;" action="#" :http-request="uploadFileClick" :show-file-list="false" :multiple="false">
+                            <el-link>{{ $t('uoloadFiles') }}</el-link>
+                        </el-upload>
+                        
+                    </div>
+                    <el-table
+                        v-loading="fileListLoading"
+                        ref="filetable"
+                        :data="taskFileList"
+                        :header-cell-style="{'font-weight':'normal'}"
+                        highlight-current-row
+                        max-height="240"
+                        style="width: 100%;margin-top:10px;margin-bottom:15px">
+                        <el-table-column :label="$t('headerTop.serialNumber')" prop="documentType" min-width="40" align="center">
+                            <template slot-scope="scope">
+                                <div>
+                                    {{scope.$index + 1}}
+                                </div>
+                            </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('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">
+                                        <ww-open-data type='userName' :openid='scope.row.creatorName'></ww-open-data>
                                     </span>
-                                </template>
-                            </el-table-column>
-                            <el-table-column prop="endDate" :label="$t('deadline')" width="100" >
-                                <template slot-scope="scope">
-                                    <p v-if="scope.row.endDate >= times">{{scope.row.endDate}}</p>
-                                    <p v-else style="background: #e62412; color: #fff;text-align: center; border-radius: 3px;">{{scope.row.endDate}}</p>
-                                </template>
-                            </el-table-column>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column :label="$t('creationtime')" prop="indate" min-width="120" 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">
+                            <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>
-                </div>
-            </el-form>
-
-            <!-- 关联文件列表 -->
-            <template v-if="isEditFile">
-                <div style="width:100%;margin:1em 0;">
-                    <i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('jiafuchengguo') }}</i>
-                    <el-link @click="relationFileClick()" style="float:right;margin-left:10px">{{ $t('associatedfiles') }}</el-link>
-                    <el-upload style="float:right;" action="#" :http-request="uploadFileClick" :show-file-list="false" :multiple="false">
-                        <el-link>{{ $t('uoloadFiles') }}</el-link>
-                    </el-upload>
-                    
-                </div>
-                <el-table
-                    v-loading="fileListLoading"
-                    ref="filetable"
-                    :data="taskFileList"
-                    :header-cell-style="{'font-weight':'normal'}"
-                    highlight-current-row
-                    max-height="240"
-                    style="width: 100%;margin-top:10px;margin-bottom:15px">
-                    <el-table-column :label="$t('headerTop.serialNumber')" prop="documentType" min-width="40" align="center">
-                        <template slot-scope="scope">
-                            <div>
-                                {{scope.$index + 1}}
-                            </div>
-                        </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('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">
-                                    <ww-open-data type='userName' :openid='scope.row.creatorName'></ww-open-data>
-                                </span>
-                            </div>
-                        </template>
-                    </el-table-column>
-                    <el-table-column :label="$t('creationtime')" prop="indate" min-width="120" 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">
-                        <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>
-            </template>
-
-            <!-- 关联文件dialog -->
-            <el-dialog v-if="relationFileDialog" :visible.sync="relationFileDialog" :title="$t('associatedfiles')" append-to-body>
-                <span>{{ $t('wenjian1guanli') }}</span>
-                <div>
-                    <span>{{ $t('xuanzwenjian') }}</span>
-                    <el-select v-model="addFileId">
-                        <el-option
-                            v-for="item in projectFileList"
-                            :key="item.id"
-                            :label="item.documentName"
-                            :value="item.id"
-                        ></el-option>
-                    </el-select>
-                    <el-button @click="addTaskFile()">{{ $t('btn.determine') }}</el-button>
-                    <!-- <el-button @click="relationFileDialog = false">取消</el-button> -->
-                </div>
-            </el-dialog>
+                </template>
 
-            <el-dialog v-if="isRelationTab" :visible.sync="isRelationTab" :title="$t('associatedTask')" width="800px" append-to-body>
-                <el-form ref="relationItemForm" label-width="100px">
-                    <el-form-item :label="$t('selecttask')" prop="taskType">
-                        <el-select v-model="relationvalue" multiple style="width:80%">
+                <!-- 关联文件dialog -->
+                <el-dialog v-if="relationFileDialog" :visible.sync="relationFileDialog" :title="$t('associatedfiles')" append-to-body>
+                    <span>{{ $t('wenjian1guanli') }}</span>
+                    <div>
+                        <span>{{ $t('xuanzwenjian') }}</span>
+                        <el-select v-model="addFileId">
                             <el-option
-                            v-for="item in relationdata"
-                            :key="item.id"
-                            :label="item.name"
-                            :value="item.id"
+                                v-for="item in projectFileList"
+                                :key="item.id"
+                                :label="item.documentName"
+                                :value="item.id"
                             ></el-option>
                         </el-select>
-                    </el-form-item>
-                </el-form>
-                <div slot="footer" class="dialog-footer">
-                    <el-button @click="isRelationTab = false">{{ $t('btn.cancel') }}</el-button>
-                    <el-button type="primary" @click="addRelationTask()">{{ $t('btn.determine') }}</el-button>
-                </div>
-            </el-dialog>
-
+                        <el-button @click="addTaskFile()">{{ $t('btn.determine') }}</el-button>
+                        <!-- <el-button @click="relationFileDialog = false">取消</el-button> -->
+                    </div>
+                </el-dialog>
+
+                <el-dialog v-if="isRelationTab" :visible.sync="isRelationTab" :title="$t('associatedTask')" width="800px" append-to-body>
+                    <el-form ref="relationItemForm" label-width="100px">
+                        <el-form-item :label="$t('selecttask')" prop="taskType">
+                            <el-select v-model="relationvalue" multiple style="width:80%">
+                                <el-option
+                                v-for="item in relationdata"
+                                :key="item.id"
+                                :label="item.name"
+                                :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-form>
+                    <div slot="footer" class="dialog-footer">
+                        <el-button @click="isRelationTab = false">{{ $t('btn.cancel') }}</el-button>
+                        <el-button type="primary" @click="addRelationTask()">{{ $t('btn.determine') }}</el-button>
+                    </div>
+                </el-dialog>
+            </div>
 
             <div slot="footer" class="dialog-footer">
                 <el-button v-if="(user.id == addForm.createrId || currentProject.inchargerId == user.id || currentProject.creatorId == user.id || permissions.projectManagement) && canAddTask" @click.native="deleteTask()" style="float:left;">{{ $t('btn.delete') }}</el-button>
@@ -3531,7 +3531,7 @@ overflow: auto;
 }
 .sub-details {
     width: 100%;
-    height: 87%;
+    height: 38vh;
     padding-right: 15px;
     box-sizing: border-box;
     overflow: hidden;

+ 7 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue

@@ -20,7 +20,7 @@
           </el-form>
       </el-col>
       <!-- 表格 -->
-      <el-table :data="tableData" style="width: 100%" height="615">
+      <el-table :data="tableData" style="width: 100%" :height="tableHeight"> 
         <el-table-column prop="rolename" :label="$t('jiao-se')" align="center">
             <template slot-scope="scope">
               {{scope.row.rolename}} <span v-if="scope.row.isDefault == 1" style="color: #909399;"> {{ $t('mo-ren-jiao-se') }}</span>
@@ -158,7 +158,8 @@ export default {
           rolename: [{
             required: true, message: this.$t('peaseenterthe'), trigger: 'blur'
           }]
-        }
+        },
+        tableHeight: 0
     };
   },
   computed: {},
@@ -172,7 +173,10 @@ export default {
         }
       }
   },
-  created() {},
+  created() {
+    let height = window.innerHeight;
+    this.tableHeight = height - 125;
+  },
   mounted() {
     this.getRole()
     // this.shisha()

+ 163 - 161
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -216,185 +216,187 @@
 
         <!-- 任务详情信息弹出框 -->
         <el-dialog :class="addForm.id==null?'':'jm'" :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" 
-        :close-on-click-modal="false" customClass="customWidth" width="800px">
+        :close-on-click-modal="false" customClass="customWidth" width="800px" :top="'6vh'">
         <!-- <div style="width: 200%;height:80%;position: absolute;right:-100%;top:0;background:#000;opacity: 0;" @click="sss"></div> -->
-            <el-form ref="form1" :model="addForm" :rules="taskRules" label-width="100px">
-                <!--子任务需要选择任务列表 -->
-                <el-form-item :label="$t('tasklist')" prop="stages" v-if="addForm.parentTid != null">
-                    <el-select v-model="addForm.stagesId" style="width:100%;" >
-                        <el-option v-for="item in stageList" :key="item.id" :label="item.stagesName" :value="item.id"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item :label="$t('types')">
-                    <el-select v-model="addForm.taskType" style="width:100%;" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement">
-                        <el-option v-for="item in taskTypeList" :key="item.id" :label="item.name" :value="item.id">
-                            <i :class="item.icon" ></i>
-                            <span>{{item.name}}</span>
-                        </el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item :label="$t('taskdefinition')" prop="name">
-                    <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" :placeholder="$t('enterthetaskcontent')" clearable></el-input>
-                </el-form-item>
-                
-                <el-form-item :label="addForm.taskType == 1 ? $t('deadline') : $t('starttimes')" :prop="addForm.taskType == 1 ? 'endDate' : 'startDate'">
-                    <el-date-picker v-model="addForm.startDate" type="date" style="width:40%;" value-format="yyyy-MM-dd"  
-                    :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-if="addForm.taskType != 1"></el-date-picker>
-                    <span style="margin-left:30px;margin-right:10px;" v-if="addForm.taskType != 1">{{ $t('deadline') }}</span>
-                    <el-date-picker v-model="addForm.endDate" type="date" value-format="yyyy-MM-dd"  
-                    :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement"></el-date-picker>
+            <div style="height: 72vh;overflow: auto;">
+                <el-form ref="form1" :model="addForm" :rules="taskRules" label-width="100px">
+                    <!--子任务需要选择任务列表 -->
+                    <el-form-item :label="$t('tasklist')" prop="stages" v-if="addForm.parentTid != null">
+                        <el-select v-model="addForm.stagesId" style="width:100%;" >
+                            <el-option v-for="item in stageList" :key="item.id" :label="item.stagesName" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item :label="$t('types')">
+                        <el-select v-model="addForm.taskType" style="width:100%;" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement">
+                            <el-option v-for="item in taskTypeList" :key="item.id" :label="item.name" :value="item.id">
+                                <i :class="item.icon" ></i>
+                                <span>{{item.name}}</span>
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item :label="$t('taskdefinition')" prop="name">
+                        <el-input v-model="addForm.name" :maxlength="40" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" :placeholder="$t('enterthetaskcontent')" clearable></el-input>
                     </el-form-item>
-                <div style="border: 1px solid #ddd;margin:5px 0;padding:5px 0;">
-                <el-form-item :label="$t('zhi-hang-ren')+(index+1)" v-for="(executorItem, index) in addForm.executorListFront" :key="index">
-
-                    <el-select v-if="user.userNameNeedTranslate != '1'" v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" size="small" filterable clearable :placeholder="$t('pleaseselectanexecutor')" style="width:40%;" @change="$forceUpdate()">
-                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
-                            <span style="float: left">{{ item.name }}</span>
-                            <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
-                        </el-option>
-                    </el-select>
                     
-                    <selectCat :subject="users" :subjectId="executorItem.executorId" :index="index" @selectCal="selectCal" :size="'mini'" v-if="user.userNameNeedTranslate == '1'"></selectCat>
+                    <el-form-item :label="addForm.taskType == 1 ? $t('deadline') : $t('starttimes')" :prop="addForm.taskType == 1 ? 'endDate' : 'startDate'">
+                        <el-date-picker v-model="addForm.startDate" type="date" style="width:40%;" value-format="yyyy-MM-dd"  
+                        :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-if="addForm.taskType != 1"></el-date-picker>
+                        <span style="margin-left:30px;margin-right:10px;" v-if="addForm.taskType != 1">{{ $t('deadline') }}</span>
+                        <el-date-picker v-model="addForm.endDate" type="date" value-format="yyyy-MM-dd"  
+                        :placeholder="$t('pleaseselectadate')" :disabled="(this.addForm.id != null && user.id != this.addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement"></el-date-picker>
+                        </el-form-item>
+                    <div style="border: 1px solid #ddd;margin:5px 0;padding:5px 0;">
+                    <el-form-item :label="$t('zhi-hang-ren')+(index+1)" v-for="(executorItem, index) in addForm.executorListFront" :key="index">
 
-                    <span style="margin-left:30px;margin-right:10px;">{{ $t('plantime') }}</span>
-                    <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-model="executorItem.planHours" style="width:30%;" :min="1" :max="100"  :placeholder="$t('pleaseentertheplannedworking')" ></el-input-number ><span style="margin-left:10px;">{{ $t('time.hour') }}</span>
-                    <!--移除执行人 -->
-                    <i class="el-icon-delete" v-if="index>0 && (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id|| permissions.projectManagement)" style="margin-left:5px" @click="removeExecutorLine(index)"></i>
-                </el-form-item>
-                <el-link type="primary" v-if="(addForm.executorListFront == null || addForm.executorListFront.length<10)&& (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id || permissions.projectManagement)" style="margin-left:35px;" @click="addExecutorLine">{{ $t('addinganexecutor') }}</el-link>
-                </div>
-                
-                <el-form-item :label="$t('priority')">
-                    <el-select v-model="addForm.taskLevel" style="width:100%;" >
-                        <el-option v-for="item in importanceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                    </el-select>
-                </el-form-item>
-                <!-- 富文本 -->
-                <el-form-item :label="$t('detaileddescription')" style="height: 200px">
-                    <!-- <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit"></Editor> -->
-                    <!-- <el-input type="textarea" v-model="addForm.taskDesc" :rows="3"></el-input> -->
-                      <!-- <quill-edito v-model="addForm.taskDesc"></quill-edito> -->
-                      <quill-editor style="height: 150px" ref="text" v-model="addForm.taskDesc" class="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"/>
-                </el-form-item>
-                <!-- 富文本 -->
-                <div v-if="addForm.id != null">
-                    <el-divider ></el-divider>
-                    <!-- 任务进展 -->
-                    <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('taskprogress') }}</i>
-                        <span ref="addPro" style="display: block; float:right;"><el-link @click="addprogress">{{ $t('addtaskprogress') }}</el-link></span>
-                    </p>
-                    <!-- 任务进展展示 -->
-                    <div style="display: none;" ref="proBox" class="progress">
-                        <!-- <el-form :model="> -->
-                        <el-radio-group v-model="radio">
-                            <el-radio :label="0" class="rala1">{{ $t('normals') }}</el-radio>
-                            <el-radio :label="1" class="rala2">{{ $t('atrisk') }}</el-radio>
-                            <el-radio :label="2" class="rala3">{{ $t('withinthetimelimit') }}</el-radio>
-                        </el-radio-group>
+                        <el-select v-if="user.userNameNeedTranslate != '1'" v-model="executorItem.executorId" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" size="small" filterable clearable :placeholder="$t('pleaseselectanexecutor')" style="width:40%;" @change="$forceUpdate()">
+                            <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
+                                <span style="float: left">{{ item.name }}</span>
+                                <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
+                            </el-option>
+                        </el-select>
+                        
+                        <selectCat :subject="users" :subjectId="executorItem.executorId" :index="index" @selectCal="selectCal" :size="'mini'" v-if="user.userNameNeedTranslate == '1'"></selectCat>
+
+                        <span style="margin-left:30px;margin-right:10px;">{{ $t('plantime') }}</span>
+                        <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement" v-model="executorItem.planHours" style="width:30%;" :min="1" :max="100"  :placeholder="$t('pleaseentertheplannedworking')" ></el-input-number ><span style="margin-left:10px;">{{ $t('time.hour') }}</span>
+                        <!--移除执行人 -->
+                        <i class="el-icon-delete" v-if="index>0 && (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id|| permissions.projectManagement)" style="margin-left:5px" @click="removeExecutorLine(index)"></i>
+                    </el-form-item>
+                    <el-link type="primary" v-if="(addForm.executorListFront == null || addForm.executorListFront.length<10)&& (addForm.id == null|| user.id == addForm.createrId || currentProject.inchargerId == user.id || permissions.projectManagement)" style="margin-left:35px;" @click="addExecutorLine">{{ $t('addinganexecutor') }}</el-link>
+                    </div>
+                    
+                    <el-form-item :label="$t('priority')">
+                        <el-select v-model="addForm.taskLevel" style="width:100%;" >
+                            <el-option v-for="item in importanceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    <!-- 富文本 -->
+                    <el-form-item :label="$t('detaileddescription')" style="height: 200px">
+                        <!-- <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit"></Editor> -->
+                        <!-- <el-input type="textarea" v-model="addForm.taskDesc" :rows="3"></el-input> -->
+                        <!-- <quill-edito v-model="addForm.taskDesc"></quill-edito> -->
+                        <quill-editor style="height: 150px" ref="text" v-model="addForm.taskDesc" class="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"/>
+                    </el-form-item>
+                    <!-- 富文本 -->
+                    <div v-if="addForm.id != null">
+                        <el-divider ></el-divider>
+                        <!-- 任务进展 -->
+                        <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('taskprogress') }}</i>
+                            <span ref="addPro" style="display: block; float:right;"><el-link @click="addprogress">{{ $t('addtaskprogress') }}</el-link></span>
+                        </p>
+                        <!-- 任务进展展示 -->
+                        <div style="display: none;" ref="proBox" class="progress">
+                            <!-- <el-form :model="> -->
+                            <el-radio-group v-model="radio">
+                                <el-radio :label="0" class="rala1">{{ $t('normals') }}</el-radio>
+                                <el-radio :label="1" class="rala2">{{ $t('atrisk') }}</el-radio>
+                                <el-radio :label="2" class="rala3">{{ $t('withinthetimelimit') }}</el-radio>
+                            </el-radio-group>
 
-                        <el-input
-                        type="textarea"
-                        border="0"
-                        :autosize="{ minRows: 2, maxRows: 6}"
-                        :placeholder="$t('detailedprogressdescription')"
-                        v-model.trim="text2"
-                        style="margin:10px 0 0 0">
-                        </el-input>
+                            <el-input
+                            type="textarea"
+                            border="0"
+                            :autosize="{ minRows: 2, maxRows: 6}"
+                            :placeholder="$t('detailedprogressdescription')"
+                            v-model.trim="text2"
+                            style="margin:10px 0 0 0">
+                            </el-input>
 
-                        <h4 style="font-weight: normal;">{{ $t('whotoremindtocheck') +':'}}{{checkLists.length}}</h4>
+                            <h4 style="font-weight: normal;">{{ $t('whotoremindtocheck') +':'}}{{checkLists.length}}</h4>
 
-                        <i class="el-icon-circle-plus pron_i" style="font-size: 28px;color: #409EFF;" @click="addI(0)"></i>
+                            <i class="el-icon-circle-plus pron_i" style="font-size: 28px;color: #409EFF;" @click="addI(0)"></i>
 
-                        <div class="remind" ref="addRem" style="display: none">
-                            <el-checkbox-group v-model="checkboxGrounp" v-for="item in users" :key="item.id">
-                                <p>
-                                    <el-checkbox :label="item.name" @change="kkk(item)">
-                                        <span>
-                                            <span v-if="user.userNameNeedTranslate != '1'">
-                                                {{item.name}}
-                                            </span>
-                                            <span v-if="user.userNameNeedTranslate == '1'">
-                                                <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                            <div class="remind" ref="addRem" style="display: none">
+                                <el-checkbox-group v-model="checkboxGrounp" v-for="item in users" :key="item.id">
+                                    <p>
+                                        <el-checkbox :label="item.name" @change="kkk(item)">
+                                            <span>
+                                                <span v-if="user.userNameNeedTranslate != '1'">
+                                                    {{item.name}}
+                                                </span>
+                                                <span v-if="user.userNameNeedTranslate == '1'">
+                                                    <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                                                </span>
                                             </span>
-                                        </span>
-                                    </el-checkbox>
-                                </p>
-                            </el-checkbox-group>
-                        </div>
-                        <div class="ssp" @click="sss"></div>
-                        <!-- </el-form> -->
-                        <div class="pro_btn">
-                            <el-button size="mini" @click="shutPro">{{ $t('btn.cancel') }}</el-button>
-                            <el-button size="mini" type="primary" @click="addTaskProgress">{{ $t('fa-bu') }}</el-button>
-                        </div>
+                                        </el-checkbox>
+                                    </p>
+                                </el-checkbox-group>
+                            </div>
+                            <div class="ssp" @click="sss"></div>
+                            <!-- </el-form> -->
+                            <div class="pro_btn">
+                                <el-button size="mini" @click="shutPro">{{ $t('btn.cancel') }}</el-button>
+                                <el-button size="mini" type="primary" @click="addTaskProgress">{{ $t('fa-bu') }}</el-button>
+                            </div>
 
-                    </div>
+                        </div>
 
-                    <div class="ddl" v-if="recentProgressInfo != null && recentProgressInfo.id != null">
-                        <div class="elCard" style="margin-bottom: 10px; height:" >
-                            <i class="el-icon-success" style="color: #43d14f;" v-if="recentProgressInfo.status == 0"></i>
-                            <i class="el-icon-success" style="color: #fd7624;" v-else-if="recentProgressInfo.status == 1"></i>
-                            <i class="el-icon-success" style="color: #fd4d47;" v-else></i>
-                            <span v-if="recentProgressInfo.status == 0">{{ $t('normals') }}</span>
-                            <span v-else-if="recentProgressInfo.status == 1">{{ $t('normals') }}</span>
-                            <span v-else>{{ $t('withinthetimelimit') }}</span>
+                        <div class="ddl" v-if="recentProgressInfo != null && recentProgressInfo.id != null">
+                            <div class="elCard" style="margin-bottom: 10px; height:" >
+                                <i class="el-icon-success" style="color: #43d14f;" v-if="recentProgressInfo.status == 0"></i>
+                                <i class="el-icon-success" style="color: #fd7624;" v-else-if="recentProgressInfo.status == 1"></i>
+                                <i class="el-icon-success" style="color: #fd4d47;" v-else></i>
+                                <span v-if="recentProgressInfo.status == 0">{{ $t('normals') }}</span>
+                                <span v-else-if="recentProgressInfo.status == 1">{{ $t('normals') }}</span>
+                                <span v-else>{{ $t('withinthetimelimit') }}</span>
 
-                            <el-dropdown trigger="click" style="float:right;cursor:pointer; float: right;">
-                                    <i class="el-icon-more" ></i>
-                                    <el-dropdown-menu slot="dropdown">
+                                <el-dropdown trigger="click" style="float:right;cursor:pointer; float: right;">
+                                        <i class="el-icon-more" ></i>
+                                        <el-dropdown-menu slot="dropdown">
 
-                                        <el-dropdown-item divided>
-                                            <span @click="deleteTaskProgress(recentProgressInfo.id)"><i class="el-icon-delete"></i>{{ $t('deleteList ') }}</span></el-dropdown-item>
-                                    </el-dropdown-menu>
-                            </el-dropdown>
-                            <div class="elCard_qu">{{recentProgressInfo.creatorName}}{{ $t('geng-xin-yu') }}{{recentProgressInfo.indate | relativeTime}}</div>
-                            <p style="padding-left: 20px;">{{recentProgressInfo.content}}</p>
-                            <div class="examine"><el-button type="text" @click="innerVisibless = true" style="color: #8F87A3;">{{ $t('viewingHistory') }}</el-button></div>
+                                            <el-dropdown-item divided>
+                                                <span @click="deleteTaskProgress(recentProgressInfo.id)"><i class="el-icon-delete"></i>{{ $t('deleteList ') }}</span></el-dropdown-item>
+                                        </el-dropdown-menu>
+                                </el-dropdown>
+                                <div class="elCard_qu">{{recentProgressInfo.creatorName}}{{ $t('geng-xin-yu') }}{{recentProgressInfo.indate | relativeTime}}</div>
+                                <p style="padding-left: 20px;">{{recentProgressInfo.content}}</p>
+                                <div class="examine"><el-button type="text" @click="innerVisibless = true" style="color: #8F87A3;">{{ $t('viewingHistory') }}</el-button></div>
+                            </div>
                         </div>
-                    </div>
 
-                    <!-- 任务列表没有数据的时候展示 -->
-                    <div class="nones" v-if="ProgressList.length <= 0">
-                        {{ $t('nodata') }} 
-                    </div>
+                        <!-- 任务列表没有数据的时候展示 -->
+                        <div class="nones" v-if="ProgressList.length <= 0">
+                            {{ $t('nodata') }} 
+                        </div>
 
-                    <!-- 任务进展完整状态 -->
-                    <el-dialog :title="$t('other.prompts')" :visible.sync="innerVisibless" append-to-body width="500px">
-                    <div class="integrity">
-                        <h3 style="font-weight: normal;display: inline-block;margin: 0 0 20px 0;">{{ $t('taskprogress') }}:{{ProgressList.length}}</h3>
-                        <!-- <span class="write"><i class="el-icon-circle-plus"></i>填写进展</span> -->
-                         <el-divider></el-divider>
+                        <!-- 任务进展完整状态 -->
+                        <el-dialog :title="$t('other.prompts')" :visible.sync="innerVisibless" append-to-body width="500px">
+                        <div class="integrity">
+                            <h3 style="font-weight: normal;display: inline-block;margin: 0 0 20px 0;">{{ $t('taskprogress') }}:{{ProgressList.length}}</h3>
+                            <!-- <span class="write"><i class="el-icon-circle-plus"></i>填写进展</span> -->
+                            <el-divider></el-divider>
 
-                         <!--  -->
-                            <div class="block" style="height: 200px;">
-                                <el-timeline style="padding:20px 0 0 0;">
-                                    <el-timeline-item
-                                    v-for="(activity, index) in ProgressList"
-                                    :key="index">
-                                    <div class="tb">
-                                        <span v-if="activity.status == 0" style="color: #43D14F" class="icon"></span>
-                                        <span v-if="activity.status == 1" style="color: #FD7624" class="icon"></span>
-                                        <span v-if="activity.status == 2" style="color: red" class="icon"></span>
-                                        <div>
-                                            <span v-if="activity.status == 0" style="color: #43D14F">{{ $t('normals') }}</span>
-                                            <span v-if="activity.status == 1" style="color: #FD7624">{{ $t('atrisk') }}</span>
-                                            <span v-if="activity.status == 2" style="color: red">{{ $t('withinthetimelimit') }}</span>
-                                            <span style="display: inline-block; float: right; color: #8C8C8C">{{activity.indate | relativeTime}}</span>
+                            <!--  -->
+                                <div class="block" style="height: 200px;">
+                                    <el-timeline style="padding:20px 0 0 0;">
+                                        <el-timeline-item
+                                        v-for="(activity, index) in ProgressList"
+                                        :key="index">
+                                        <div class="tb">
+                                            <span v-if="activity.status == 0" style="color: #43D14F" class="icon"></span>
+                                            <span v-if="activity.status == 1" style="color: #FD7624" class="icon"></span>
+                                            <span v-if="activity.status == 2" style="color: red" class="icon"></span>
+                                            <div>
+                                                <span v-if="activity.status == 0" style="color: #43D14F">{{ $t('normals') }}</span>
+                                                <span v-if="activity.status == 1" style="color: #FD7624">{{ $t('atrisk') }}</span>
+                                                <span v-if="activity.status == 2" style="color: red">{{ $t('withinthetimelimit') }}</span>
+                                                <span style="display: inline-block; float: right; color: #8C8C8C">{{activity.indate | relativeTime}}</span>
+                                            </div>
+                                            <p style="color: #8C8C8C">{{activity.content}}</p>
+                                            
                                         </div>
-                                        <p style="color: #8C8C8C">{{activity.content}}</p>
-                                        
-                                    </div>
-                                    </el-timeline-item>
-                                </el-timeline>
-                            </div>
-                         <!--  -->
-                    </div>
-                    <span slot="footer" class="dialog-footer">
-                        <el-button type="primary" @click="innerVisibless = false">{{ $t('Shutdown') }}</el-button>
-                    </span>
-                    </el-dialog>
-                    </div>
-            </el-form>
+                                        </el-timeline-item>
+                                    </el-timeline>
+                                </div>
+                            <!--  -->
+                        </div>
+                        <span slot="footer" class="dialog-footer">
+                            <el-button type="primary" @click="innerVisibless = false">{{ $t('Shutdown') }}</el-button>
+                        </span>
+                        </el-dialog>
+                        </div>
+                </el-form>
+            </div>
             <div slot="footer" class="dialog-footer">
                 <el-button v-if="user.id == addForm.createrId || currentProject.inchargerId == user.id || currentProject.creatorId == user.id || permissions.projectManagement" @click.native="deleteTask" style="float:left;">{{ $t('btn.delete') }}</el-button>
                 <el-button @click.native="addFormVisible = false">{{ $t('btn.cancel') }}</el-button>

+ 84 - 82
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -324,89 +324,91 @@
         </el-dialog>
 
         <!-- 新增/编辑人员的Dialog -->
-        <el-dialog :title="title" :visible.sync="dialogVisible" width="550px" >
-            <el-form ref="form12" :model="insertForm" :rules="rules" label-width="80px">
-                <el-form-item :label="$t('lable.name')" prop="name">
-                    <el-input v-model="insertForm.name" :placeholder="$t('peaseenterthe')" clearable :disabled="user.userNameNeedTranslate == '1'"></el-input>
-                </el-form-item>
-                <el-form-item :label="$t('phone')" prop="phone">
-                    <el-input v-model="insertForm.phone" :placeholder="$t('peaseenterthe')" clearable></el-input>
-                </el-form-item>
-                <el-form-item :label="$t('Worknumber')" prop="jobNumber">
-                    <el-input v-model="insertForm.jobNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
-                </el-form-item>
-                <el-form-item :label="$t('payway')" prop="salaryType" v-if="permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
-                    <el-radio-group v-model="insertForm.salaryType" @change="onSalaryTypeChange">
-                    <el-radio  :label="0" >{{ $t('fixedmonthlycost') }}</el-radio>
-                    <el-radio  :label="1">{{ $t('hourlywages') }}</el-radio>
-                    </el-radio-group>
-                </el-form-item>
-                <el-form-item :label="$t('monthcost')" prop="monthCost" v-if="insertForm.salaryType == 0 && permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
-                    <el-input v-model="insertForm.monthCost" id="mc" @input="oninput" :placeholder="$t('yuechengben')" clearable @keyup.native="restrictNumber('mc')"></el-input>
-                    <span style="color:orange;font-size:12px;">{{ $t('yuegongzuoo') }}{{timeType.monthDays}}{{ $t('time.day') }},{{$t('meitian')}}{{timeType.allday}}{{ $t('xiaoshi') }}</span>
-                    <el-link :underline="false" style="color:blue;font-size:12px;margin-left:7px;" href="#/timetype">{{ $t('modifyworkinghours') }}</el-link>
-                </el-form-item>
-                <el-form-item :label="$t('hourlywage')" prop="cost" v-if="permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
-                    <el-input v-model="insertForm.cost" :disabled="insertForm.salaryType == 0" id="cc" style="width:120px;" @keyup.native="restrictNumber4('cc')"
-                     :placeholder="$t('yuechengbenxiaoshi')" clearable></el-input>
-                    <span style="margin-left:25px;">{{ $t('effectivedate') }}</span>
-                    <el-date-picker v-model="insertForm.costApplyDate" value-format="yyyy-MM-dd"></el-date-picker>
-                </el-form-item>
-                <el-form-item :label="$t('lable.department')" prop="departmentId">
-                    <!-- <el-cascader v-model="insertForm.departmentId" placeholder="请选择部门" style="width: 100%"
-                    :options="option" :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable></el-cascader> -->
-                    <el-cascader v-model="insertForm.departmentId" :placeholder="$t('qing-xuan-ze-bu-men')" style="width: 100%"
-                    :options="option" :props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false"  clearable v-if="user.userNameNeedTranslate != 1"></el-cascader>
-
-                    <vueCascader :size="'medium'" :widthStr="'430'" :clearable="true" :subject="option" :subjectId="insertForm.departmentId" :radios="true" :distinction="'2'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
-
-                </el-form-item>
-                <!-- <el-form-item :label="$t('immediatesuperior')">
-                    <el-select v-model="insertForm.superiorId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" filterable clearable>
-                        <el-option v-for="item in users" :label="item.name" :value="item.id" :key="item.id" :disabled="item.id == insertForm.id">
-                            <span style="float: left">{{item.name}}</span>
-                            <span style="float: right; color: #8492a6; font-size: 13px">{{item.departmentName}}</span>
-                        </el-option>
-                    </el-select>
-                </el-form-item> -->
-                <el-form-item :label="$t('jiao-se')" prop="roleId">
-                    <el-select v-model="insertForm.roleId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%">
-                        <el-option v-for="item in acquireRoleList" :label="item.rolename" :value="item.id" :key="item.name">
-                            <span style="float: left">{{item.rolename}}</span>
-                            <span style="float: right; color: #8492a6; font-size: 13px">{{item.roleDescribe}}</span>
-                        </el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item :label="item.name" v-for="item,index in userCustomConfig" :key="item.id">
-                    <el-select v-if="item.type == 0" v-model="insertForm[suoying[index]]" :placeholder="$t('defaultText.pleaseChoose')" clearable style="width: 100%">
-                        <el-option v-for="option in item.itemList" :label="option.name" :value="option.name" :key="option.id">
-                        </el-option>
-                    </el-select>
-                    <el-input v-else v-model="insertForm[suoying[index]]" :placeholder="$t('peaseenterthe')" clearable></el-input>
-                </el-form-item>
-                <el-form-item :label="$t('entrytime')" prop="phone">
-                    <el-date-picker v-model="insertForm.inductionDate" value-format="yyyy-MM-dd"></el-date-picker>
-                </el-form-item>
-                <el-form-item :label="$t('postrank')" prop="phone">
-                    <el-input v-model="insertForm.position" :placeholder="$t('joblevel')" clearable></el-input>
-                </el-form-item>
-
-                <div class="zhaunye"><p>{{ $t('professionalcertificate') }}</p><p><el-link type="primary" @click="addCertificateList()">{{ $t('addprofessionalcertificate') }}</el-link><el-link v-if="permissions.structureCertificate" type="primary" @click="managementDiolog = true" style="margin-left: 20px">{{ $t('professionalCertificate inManagement') }}</el-link></p></div>
-                <div class="certificateList">
-                    <div class="moreList">
-                        <div class="moreLiList" v-for="(item,index) in insertForm.certJson" :key="index">
-                            <div style="margin-right: 10px;width: 160px;">
-                                <el-select v-model="item.certId" :placeholder="$t('defaultText.pleaseChoose')" size="mini" @change="changeManagement(index)">
-                                    <el-option v-for="item in managementTableData" :key="item.id" :label="item.name" :value="item.id"> </el-option>
-                                </el-select>
-                            </div>
-                            <div><span>{{ $t('certificate') }}</span><el-date-picker size="mini" v-model="item.certDate" type="date" value-format="yyyy-MM-dd" :placeholder="$t('certificatedate')" style="width: 180px"></el-date-picker></div>
-                            <div style="color: red;margin-left: 15px;cursor:pointer;" @click="deteFrames(index)"><i class="el-icon-delete"></i></div>
-                        </div>
-                    </div>
-                </div>
+        <el-dialog :title="title" :visible.sync="dialogVisible" width="550px" :top="'7.5vh'">
+            <div style="height: 62vh;overflow: auto;">
+              <el-form ref="form12" :model="insertForm" :rules="rules" label-width="80px">
+                  <el-form-item :label="$t('lable.name')" prop="name">
+                      <el-input v-model="insertForm.name" :placeholder="$t('peaseenterthe')" clearable :disabled="user.userNameNeedTranslate == '1'"></el-input>
+                  </el-form-item>
+                  <el-form-item :label="$t('phone')" prop="phone">
+                      <el-input v-model="insertForm.phone" :placeholder="$t('peaseenterthe')" clearable></el-input>
+                  </el-form-item>
+                  <el-form-item :label="$t('Worknumber')" prop="jobNumber">
+                      <el-input v-model="insertForm.jobNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
+                  </el-form-item>
+                  <el-form-item :label="$t('payway')" prop="salaryType" v-if="permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
+                      <el-radio-group v-model="insertForm.salaryType" @change="onSalaryTypeChange">
+                      <el-radio  :label="0" >{{ $t('fixedmonthlycost') }}</el-radio>
+                      <el-radio  :label="1">{{ $t('hourlywages') }}</el-radio>
+                      </el-radio-group>
+                  </el-form-item>
+                  <el-form-item :label="$t('monthcost')" prop="monthCost" v-if="insertForm.salaryType == 0 && permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
+                      <el-input v-model="insertForm.monthCost" id="mc" @input="oninput" :placeholder="$t('yuechengben')" clearable @keyup.native="restrictNumber('mc')"></el-input>
+                      <span style="color:orange;font-size:12px;">{{ $t('yuegongzuoo') }}{{timeType.monthDays}}{{ $t('time.day') }},{{$t('meitian')}}{{timeType.allday}}{{ $t('xiaoshi') }}</span>
+                      <el-link :underline="false" style="color:blue;font-size:12px;margin-left:7px;" href="#/timetype">{{ $t('modifyworkinghours') }}</el-link>
+                  </el-form-item>
+                  <el-form-item :label="$t('hourlywage')" prop="cost" v-if="permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
+                      <el-input v-model="insertForm.cost" :disabled="insertForm.salaryType == 0" id="cc" style="width:120px;" @keyup.native="restrictNumber4('cc')"
+                      :placeholder="$t('yuechengbenxiaoshi')" clearable></el-input>
+                      <span style="margin-left:25px;">{{ $t('effectivedate') }}</span>
+                      <el-date-picker v-model="insertForm.costApplyDate" value-format="yyyy-MM-dd"></el-date-picker>
+                  </el-form-item>
+                  <el-form-item :label="$t('lable.department')" prop="departmentId">
+                      <!-- <el-cascader v-model="insertForm.departmentId" placeholder="请选择部门" style="width: 100%"
+                      :options="option" :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable></el-cascader> -->
+                      <el-cascader v-model="insertForm.departmentId" :placeholder="$t('qing-xuan-ze-bu-men')" style="width: 100%"
+                      :options="option" :props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false"  clearable v-if="user.userNameNeedTranslate != 1"></el-cascader>
+
+                      <vueCascader :size="'medium'" :widthStr="'430'" :clearable="true" :subject="option" :subjectId="insertForm.departmentId" :radios="true" :distinction="'2'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
+
+                  </el-form-item>
+                  <!-- <el-form-item :label="$t('immediatesuperior')">
+                      <el-select v-model="insertForm.superiorId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" filterable clearable>
+                          <el-option v-for="item in users" :label="item.name" :value="item.id" :key="item.id" :disabled="item.id == insertForm.id">
+                              <span style="float: left">{{item.name}}</span>
+                              <span style="float: right; color: #8492a6; font-size: 13px">{{item.departmentName}}</span>
+                          </el-option>
+                      </el-select>
+                  </el-form-item> -->
+                  <el-form-item :label="$t('jiao-se')" prop="roleId">
+                      <el-select v-model="insertForm.roleId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%">
+                          <el-option v-for="item in acquireRoleList" :label="item.rolename" :value="item.id" :key="item.name">
+                              <span style="float: left">{{item.rolename}}</span>
+                              <span style="float: right; color: #8492a6; font-size: 13px">{{item.roleDescribe}}</span>
+                          </el-option>
+                      </el-select>
+                  </el-form-item>
+                  <el-form-item :label="item.name" v-for="item,index in userCustomConfig" :key="item.id">
+                      <el-select v-if="item.type == 0" v-model="insertForm[suoying[index]]" :placeholder="$t('defaultText.pleaseChoose')" clearable style="width: 100%">
+                          <el-option v-for="option in item.itemList" :label="option.name" :value="option.name" :key="option.id">
+                          </el-option>
+                      </el-select>
+                      <el-input v-else v-model="insertForm[suoying[index]]" :placeholder="$t('peaseenterthe')" clearable></el-input>
+                  </el-form-item>
+                  <el-form-item :label="$t('entrytime')" prop="phone">
+                      <el-date-picker v-model="insertForm.inductionDate" value-format="yyyy-MM-dd"></el-date-picker>
+                  </el-form-item>
+                  <el-form-item :label="$t('postrank')" prop="phone">
+                      <el-input v-model="insertForm.position" :placeholder="$t('joblevel')" clearable></el-input>
+                  </el-form-item>
+
+                  <div class="zhaunye"><p>{{ $t('professionalcertificate') }}</p><p><el-link type="primary" @click="addCertificateList()">{{ $t('addprofessionalcertificate') }}</el-link><el-link v-if="permissions.structureCertificate" type="primary" @click="managementDiolog = true" style="margin-left: 20px">{{ $t('professionalCertificate inManagement') }}</el-link></p></div>
+                  <div class="certificateList">
+                      <div class="moreList">
+                          <div class="moreLiList" v-for="(item,index) in insertForm.certJson" :key="index">
+                              <div style="margin-right: 10px;width: 160px;">
+                                  <el-select v-model="item.certId" :placeholder="$t('defaultText.pleaseChoose')" size="mini" @change="changeManagement(index)">
+                                      <el-option v-for="item in managementTableData" :key="item.id" :label="item.name" :value="item.id"> </el-option>
+                                  </el-select>
+                              </div>
+                              <div><span>{{ $t('certificate') }}</span><el-date-picker size="mini" v-model="item.certDate" type="date" value-format="yyyy-MM-dd" :placeholder="$t('certificatedate')" style="width: 180px"></el-date-picker></div>
+                              <div style="color: red;margin-left: 15px;cursor:pointer;" @click="deteFrames(index)"><i class="el-icon-delete"></i></div>
+                          </div>
+                      </div>
+                  </div>
 
-            </el-form>
+              </el-form>
+            </div>
             <span slot="footer" class="dialog-footer">
                 <el-button type="danger" @click="deleteUser(insertForm)" style="float:left;">{{ $t('btn.delete') }}</el-button>
                 <el-button @click="dialogVisible=false">{{ $t('btn.cancel') }}</el-button>

+ 331 - 329
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -323,285 +323,140 @@
         </div>
 
         <!-- 填写日报的dialog -->
-        <el-dialog :title="editTitle[isBatch]" :visible.sync="dialogVisible" width="60%" style="height:95%" :close-on-click-modal="false" @closed="guanbi()" custom-class="editReportDialog" ref="editReportDialog">
-            <el-form ref="workForm" :model="workForm" :rules="workRules" label-width="120px">
-                <el-form-item :label="$t('screening.selectPeople')" v-if="isSubstitude">
-                    <el-input v-if="user.userNameNeedTranslate != 1" @focus="showChooseMembTree" v-model="workForm.userNames"
-                    :placeholder="$t('defaultText.pleaseSelectAsubstitute')" ></el-input>
-                    <div class="daitianrbao"  @click="showChooseMembTree" v-if="user.userNameNeedTranslate == 1">
-                        <span class="spnn" v-if="workForm.userNames">
-                            <span v-for="(item, index) in workForm.userNames" :key="index">
-                                <span><ww-open-data type='userName' :openid='item'></ww-open-data></span>
-                                <span v-if="index < workForm.userNames.length - 1">,</span>
+        <el-dialog :title="editTitle[isBatch]" :visible.sync="dialogVisible" width="60%" :close-on-click-modal="false" @closed="guanbi()" :top="'5.5vh'" custom-class="editReportDialog" ref="editReportDialog">
+            <div style="height: 65vh;overflow: auto;">
+                <el-form ref="workForm" :model="workForm" :rules="workRules" label-width="120px">
+                    <el-form-item :label="$t('screening.selectPeople')" v-if="isSubstitude">
+                        <el-input v-if="user.userNameNeedTranslate != 1" @focus="showChooseMembTree" v-model="workForm.userNames"
+                        :placeholder="$t('defaultText.pleaseSelectAsubstitute')" ></el-input>
+                        <div class="daitianrbao"  @click="showChooseMembTree" v-if="user.userNameNeedTranslate == 1">
+                            <span class="spnn" v-if="workForm.userNames">
+                                <span v-for="(item, index) in workForm.userNames" :key="index">
+                                    <span><ww-open-data type='userName' :openid='item'></ww-open-data></span>
+                                    <span v-if="index < workForm.userNames.length - 1">,</span>
+                                </span>
+                            </span>
+                            <span class="spnn hover" v-else>
+                                {{$t('defaultText.pleaseSelectAsubstitute')}}
                             </span>
-                        </span>
-                        <span class="spnn hover" v-else>
-                            {{$t('defaultText.pleaseSelectAsubstitute')}}
-                        </span>
-                    </div>
-                </el-form-item>
-                <el-form-item :label="$t('screening.workingDate')" prop="createDate">
-                    <el-date-picker v-model="workForm.createDate" :editable="false" format="yyyy-MM-dd" value-format="yyyy-MM-dd" 
-                    :style="'width:'+(isBatch==0?'200':'280')+'px;'" :type="isBatch==0?'date':'daterange'"
-                    @change="changeMonth()" @blur="iptBlur(reportTimeType.type)" :clearable="false" :placeholder="$t('defaultText.selectWorkDate')" :disabled="isDisable"></el-date-picker>
-                    <div v-if="falsss" style="display: inline-block;margin-left:10px">{{jsDay}} {{$t('time.day')}}, {{jsTime}} {{$t('time.hour')}}</div>
-                    <div v-if="isBatch!=0" style="display: inline-block;margin-left:10px">{{jsDay}} {{$t('time.day')}}, {{$t('other.fillInTheTotal')}} {{jsTime}} {{$t('time.hour')}}</div>
-                    <span v-if="reportTimeType.type == 3" style="margin-left:30px;">{{isBatch==0? $t('other.total'):$t('weekDay.daily')}}{{$t('time.duration')}}:</span>
-                    <el-input-number :disabled="(!canEdit || user.timeType.lockWorktime) && !isWeekend" v-if="reportTimeType.type == 3" style="margin-left:10px;" @change="changeAllTime"
-                        v-model="reportTimeType.allday" :precision="1" :step="0.5" :max="12" :min="0.5"></el-input-number>
-                    <span v-if="reportTimeType.type == 3">{{$t('time.hour')}}</span>
-
-                    <span v-if="workForm.time">{{$t('other.attendancePunch')}}: {{workForm.time.startTime}}-{{workForm.time.endTime}}, {{workForm.time.workHours}}{{$t('time.hour')}}</span>
-                    <!--批量填报和批量代填不显示考勤记录-->
-                    <span v-if="!isBatch && (user.timeType.syncDingding==1 || user.timeType.syncCorpwxTime==1)&&!workForm.time" >{{$t('other.noAttendanceRecord')}}</span>
-                    <el-button type="default" style="margin-left:5px;" size="mini" :loading="syncTimeLoading" 
-                    v-if="!isBatch && user.timeType.syncCorpwxTime==1 && (workForm.createDate == today || !workForm.time || workForm.time.workHours == 0)" icon="el-icon-refresh" 
-                            @click="refreshWXCardTime(workForm.createDate)"></el-button>
-                </el-form-item>
-                <!-- 000000 -->
-                <div v-for="(domain, index) in workForm.domains" :key="domain.id" :style="index>0?'margin-top:10px;':''">
-                    <div v-if="reportTimeType.multiWorktime==0">
-                    <el-form-item v-if="reportTimeType.type != 3" :label="reportTimeType.type ==2?$t('screening.workHours'):$t('screening.workTime')" :prop="'domains.' + index + '.'+timeFields[reportTimeType.type]"
-                        :rules="{ required: true, message: $t('defaultText.pleaseSelectWorkingHours'), trigger: 'blur' }">
-                        <el-select v-model="domain.timeType" style="width:200px;"
-                            v-if="reportTimeType.type == 0"
-                            :placeholder="$t('defaultText.pleaseSelectWorkingHours')" 
-                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
-                            @change="onTimeTypeChange(domain.timeType)">
-                            <el-option
-                                v-for="item in timeType"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                            </el-option>
-                        </el-select>
-                        <!-- 数字时长选择 -->
-                        <el-select v-model="domain.workingTime" style="width:200px;"
-                        v-if="reportTimeType.type == 1"
-                        :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
-                        :placeholder="$t('defaultText.pleaseSelectWorkingHours') + domain.workingTime"
-                        @change="seleChn(0,domain)">
-                        <el-option v-for="item in timeRange" :key="item" :value="item.toFixed(1)">{{item.toFixed(1)}}</el-option>
-                        </el-select>
-                        <span v-if="reportTimeType.type == 1">{{$t('time.hour')}}</span>
-
-                        <span v-if="reportTimeType.type == 2">
-                        <!--时间范围选择 -->
-                        <el-time-picker 
-                        :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
-                            v-model="domain.startTime"
-                            :placeholder="$t('time.startTime')"
-                            style="width:120px;"
-                            format="HH:mm"
-                            value-format="HH:mm"
-                            :picker-options="{
-                            start: '08:00',
-                            end: '23:30'
-                            }"
-                            @change="iptChang()">
-                        </el-time-picker> - <el-time-picker 
-                        :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
-                            v-model="domain.endTime"
-                            :placeholder="$t('time.endTime')"
-                            style="width:120px;"
-                            format="HH:mm"
-                            value-format="HH:mm"
-                            :picker-options="{
-                            start: '08:00',
-                            end: '23:30',
-                            minTime: domain.startTime
-                            }"
-                            @change="iptChang()">
-                        </el-time-picker>
-                        </span>
-                        <div class="overtime" v-if="user.timeType.fillOvertime || (isWeekend && user.timeType.lockWorktime != 1)">
-                            <el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.IncludingOvertime')}}</el-checkbox>
-                            <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
                         </div>
                     </el-form-item>
-                    
-                    <el-form-item :label="user.companyId==781? $t('screening.workTasks') : $t('screening.inputProject')" :prop="'domains.' + index + '.projectId'"
-                        :rules="{ required: true, message: user.companyId==781? $t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem'), trigger: ['change','blur'] }">
-                        <el-select v-model="domain.projectId" :placeholder="user.companyId==781?$t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem')" 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)" popper-class="projectSelectPopperClass">
-                            <!-- <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!=1 && item.status!=4" :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;">{{ item.projectName }}</span>
-                            </el-option>
-                        </el-select>
-                        <template v-if="user.timeType.mainProjectState != 1">
-                        <span v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
-                            style="margin-left:45px;">{{$t('lable.subproject')}}</span>
-
-                        <!--子项目 -->
-                        <el-select v-model="domain.subProjectId" :placeholder="$t('defaultText.PleaseSelectaSub-item')" style="width:200px;margin-left:10px;" clearable="true"
-                            v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
-                        :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)" @change="updateSubProject">
-                            <el-option v-for="item in domain.subProjectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                        </el-select>
-                        </template>
-                        
-                        <el-link v-if="index >= 1&&domain.canEdit" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
-                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
-                            <i class="fa fa-trash" style="color: red;;font-size:18px;"></i>
-                        </el-link>
-                        <!-- <el-link type="primary" v-if="canEdit"
-                            :underline="false" style="margin-left:10px;" @click="copyProject(index)">复制</el-link> -->
-                    </el-form-item>
-                    <el-form-item :label="user.companyId==781? $t('other.describe'):$t('other.projectDescription')" v-if="user.company.packageProject==0&&domain.projectId&&projectList.filter(p=>p.id == domain.projectId)[0].projectDesc">
-                        <span>{{projectList.filter(p=>p.id == domain.projectId)[0].projectDesc}}</span>
-                    </el-form-item>
-                    <!--如果设置了工时成本预警的预算成本项-->
-                    <el-form-item :label="$t('lable.budgetSource')" v-if="user.company.packageProject==1&&timeBasecostList &&timeBasecostList.length>0">
-                        <el-select v-model="domain.basecostId" :disabled="!domain.canEdit" @change="$forceUpdate()" style="width:200px;">
-                            <el-option v-for="item in timeBasecostList" :label="item.name" :value="item.id" :key="item.id"></el-option>
-                        </el-select>
+                    <el-form-item :label="$t('screening.workingDate')" prop="createDate">
+                        <el-date-picker v-model="workForm.createDate" :editable="false" format="yyyy-MM-dd" value-format="yyyy-MM-dd" 
+                        :style="'width:'+(isBatch==0?'200':'280')+'px;'" :type="isBatch==0?'date':'daterange'"
+                        @change="changeMonth()" @blur="iptBlur(reportTimeType.type)" :clearable="false" :placeholder="$t('defaultText.selectWorkDate')" :disabled="isDisable"></el-date-picker>
+                        <div v-if="falsss" style="display: inline-block;margin-left:10px">{{jsDay}} {{$t('time.day')}}, {{jsTime}} {{$t('time.hour')}}</div>
+                        <div v-if="isBatch!=0" style="display: inline-block;margin-left:10px">{{jsDay}} {{$t('time.day')}}, {{$t('other.fillInTheTotal')}} {{jsTime}} {{$t('time.hour')}}</div>
+                        <span v-if="reportTimeType.type == 3" style="margin-left:30px;">{{isBatch==0? $t('other.total'):$t('weekDay.daily')}}{{$t('time.duration')}}:</span>
+                        <el-input-number :disabled="(!canEdit || user.timeType.lockWorktime) && !isWeekend" v-if="reportTimeType.type == 3" style="margin-left:10px;" @change="changeAllTime"
+                            v-model="reportTimeType.allday" :precision="1" :step="0.5" :max="12" :min="0.5"></el-input-number>
+                        <span v-if="reportTimeType.type == 3">{{$t('time.hour')}}</span>
+
+                        <span v-if="workForm.time">{{$t('other.attendancePunch')}}: {{workForm.time.startTime}}-{{workForm.time.endTime}}, {{workForm.time.workHours}}{{$t('time.hour')}}</span>
+                        <!--批量填报和批量代填不显示考勤记录-->
+                        <span v-if="!isBatch && (user.timeType.syncDingding==1 || user.timeType.syncCorpwxTime==1)&&!workForm.time" >{{$t('other.noAttendanceRecord')}}</span>
+                        <el-button type="default" style="margin-left:5px;" size="mini" :loading="syncTimeLoading" 
+                        v-if="!isBatch && user.timeType.syncCorpwxTime==1 && (workForm.createDate == today || !workForm.time || workForm.time.workHours == 0)" icon="el-icon-refresh" 
+                                @click="refreshWXCardTime(workForm.createDate)"></el-button>
                     </el-form-item>
-                    <el-form-item :label="$t('lable.taskGrouping')" v-if="user.company.packageProject == 1">
-                        <!-- 任务分组 -->
-                        <el-select v-model="domain.groupId" :placeholder="$t('defaultText.pleaseSelectaTaskGroup')" style="width:200px;" clearable="true" 
-                        :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)" @change="getGroupStages(domain, index)">
-                            <el-option v-for="item in domain.taskGroups" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                        </el-select>
-                        <!-- 项目的阶段 -->
-                        <span v-if="domain.stages != null && domain.stages.length> 0" 
-                            style="margin-left:30px;">{{$t('other.inputStage')}}</span>
-                        <el-select v-model="domain.stage" :placeholder="$t('defaultText.pleaseChoose')" style="width:200px;margin-left:10px;" 
-                        clearable="true" v-if="domain.stages != null && domain.stages.length> 0"
-                        @change="changeStages(domain, index)"
-                        :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
-                            <el-option v-for="item in domain.stages" :key="item.id" :label="item.stagesName" :value="item.stagesName"></el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item :label="user.companyId==781? $t('other.reviewer') : $t('other.projectAuditor')" v-if="user.timeType.reportAuditType != 3">
-
-                        <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()" v-if="user.userNameNeedTranslate != '1'" style="width:200px;">
-                            <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id">
-                                <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='item.auditorName'></ww-open-data></span>
-                                <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.auditorName}}</span>
-                            </el-option>
-                        </el-select>
-
-                        <selectCat v-if="user.userNameNeedTranslate == '1'" :size="'medium'" :subject="domain.auditUserList" :idx="index" :subjectId="domain.projectAuditorId" ref="selectCat" :flg="domain.projectAuditorId ? true : false" :flgs="true" @selectCatCli="selectCatCli"></selectCat>
-
-                    </el-form-item>
-                    <!-- 111111 -->
-                    <el-form-item :label="$t('other.reviewer')" v-if="user.timeType.reportAuditType == 3">
-                        <el-select v-model="domain.auditorFirst" :placeholder="$t('di-yi-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
-                            <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                        </el-select>
-
-                        <template v-if="user.timeType.auditLevel > 1">
-                            <i class="el-icon-right"></i>
-                            <el-select v-model="domain.auditorSec" :placeholder="$t('di-er-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
-                                <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                    <!-- 000000 -->
+                    <div v-for="(domain, index) in workForm.domains" :key="domain.id" :style="index>0?'margin-top:10px;':''">
+                        <div v-if="reportTimeType.multiWorktime==0">
+                        <el-form-item v-if="reportTimeType.type != 3" :label="reportTimeType.type ==2?$t('screening.workHours'):$t('screening.workTime')" :prop="'domains.' + index + '.'+timeFields[reportTimeType.type]"
+                            :rules="{ required: true, message: $t('defaultText.pleaseSelectWorkingHours'), trigger: 'blur' }">
+                            <el-select v-model="domain.timeType" style="width:200px;"
+                                v-if="reportTimeType.type == 0"
+                                :placeholder="$t('defaultText.pleaseSelectWorkingHours')" 
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
+                                @change="onTimeTypeChange(domain.timeType)">
+                                <el-option
+                                    v-for="item in timeType"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                                </el-option>
                             </el-select>
-                        </template>
-
-                        <template v-if="user.timeType.auditLevel > 2">
-                            <i class="el-icon-right"></i>
-                            <el-select v-model="domain.auditorThird" :placeholder="$t('di-san-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
-                                <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                            <!-- 数字时长选择 -->
+                            <el-select v-model="domain.workingTime" style="width:200px;"
+                            v-if="reportTimeType.type == 1"
+                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
+                            :placeholder="$t('defaultText.pleaseSelectWorkingHours') + domain.workingTime"
+                            @change="seleChn(0,domain)">
+                            <el-option v-for="item in timeRange" :key="item" :value="item.toFixed(1)">{{item.toFixed(1)}}</el-option>
                             </el-select>
-                        </template>
-                    </el-form-item>
-                    <el-form-item :label="$t('chao-song-ren')" v-if="user.timeType.reportAuditType == 3">
-                        <el-select v-model="domain.ccUserid" clearable :disabled="!domain.canEdit" style="width:200px;">
-                            <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                        </el-select>
-                    </el-form-item>
+                            <span v-if="reportTimeType.type == 1">{{$t('time.hour')}}</span>
 
-                    <!-- 相关维度/自定义维度 -->
-                    <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList != undefined && domain.wuduList.length != 0 ? { required: true, message: $t('defaultText.pleaseChoose') + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
-                        <el-select v-model="domain.degreeId" clearable :placeholder="$t('defaultText.pleaseChoose')" :disabled="!domain.canEdit" style="width:200px;">
-                            <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <!-- 相关数值 -->
-                    <el-form-item :label="yonghuUser.customDataName" v-if="yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
-                        <el-input-number :id="'numberData_'+index" :disabled="!domain.canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
-                    </el-form-item>
-                    <!-- 自定义文本 -->
-                    <el-form-item :label="yonghuUser.customTextName" v-if="yonghuUser.customTextActive == 1" :prop="'domains.' + index + '.customText'" :rules="user.timeType.customTextStatus == 1 ? { required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customTextName, trigger: ['change','blur'] } : null">
-                        <el-input :disabled="!domain.canEdit" v-model="domain.customText" type="textarea" :rows="1" style="width:75%;margin-right:7%" maxlength="1000" show-word-limit></el-input>
-                    </el-form-item>
-                    <el-form-item v-if="reportTimeType.type == 3" :label="$t('lable.percentageOfTime')" :prop="'domains.' + index + '.'+timeFields[reportTimeType.type]"
-                        :rules="{ required: true, message: $t('defaultText.pleaseSetTheTimeRatio'), trigger: 'blur' }">
-                        <div style="width:300px;">
-                            <el-col span="14"><el-slider :disabled="!domain.canEdit" v-model="domain.progress" :min="5" :show-tooltip="false" :step="5" style="width:180px;" @input="domain.workingTime = (reportTimeType.allday*domain.progress/100).toFixed(1)" @change="seleChn(0)"></el-slider></el-col>
-                            <el-col span="10"><span style="margin-left:10px;float:right;"><span style="margin-right:10px;">{{domain.progress}}%</span>{{domain.workingTime}}{{$t('time.hour')}}</span></el-col>
-                        </div>
-                        <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend"><el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.WorkOvertime')}}</el-checkbox>
-                        <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours"  @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
-                        </div>
-                    </el-form-item>
-                    <!--工程专业版本模式下, 各个专业的进度填报 -->
-                    <el-form-item :label="$t('other.professionalProgress')" :prop="'domains.' + index + '.professionProgress'" v-if="user.company.packageEngineering==1">
-                        <span v-for="item in domain.professionProgress" :key="item.professionId" style="margin-right:10px;">
-                            <span>{{item.professionName}}</span> / {{$t('other.schedule')}}:
-                            <el-input size="mini" style="width:60px;" v-model="item.progress"
-                            @keyup.native="onProgressChange" 
-                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"></el-input>%
-                        </span>
-                    </el-form-item>
-                    <!--项目管理专业版模式下,项目下的近期执行的任务 -->
-                    <el-form-item :label="$t('other.task')+' / '+$t('other.milestone')" :prop="'domains.' + index + '.taskId'" v-if="user.company.packageProject==1" >
-                        <el-select v-model="domain.taskId" :placeholder="$t('defaultText.pleaseChoose')" style="width:75%;margin-right:7%" filterable="true" 
-                        :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
-                            <el-option v-for="item in domain.taskList" :key="item.taskId" :label="item.taskName" :value="item.taskId"></el-option>
-                        </el-select>
-                        <el-checkbox v-model="domain.taskFinish" v-if="domain.taskId != undefined">{{$t('state.completed')}}</el-checkbox>
-                    </el-form-item>
-                    <el-form-item :label="user.companyId==781? $t('other.specificContentAndResults') : $t('other.workMatters') " :prop="'domains.' + index + '.content'" 
-                    :rules="user.timeType.workContentState == 1 ? { required: true, message: user.companyId==781? $t('other.tianspecificContentAndResults'):$t('other.tianworkMatters'), trigger: 'blur' } : null">
-                        <el-input v-model="domain.content" type="textarea" :rows="4" :placeholder="$t('defaultText.pleaseFillOut')" clearable
-                         :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"></el-input>
-                    </el-form-item>
-                    </div>
-                    <!--多个工作事项填报的情况 -->
-                    <div v-if="reportTimeType.multiWorktime==1">
-                        <el-form-item :label="$t('screening.inputProject')" :prop="'domains.' + index + '.projectId'"
-                            :rules="{ required: true, message: $t('defaultText.pleaseSelectSnItem'), trigger: ['change','blur'] }">
-                            <el-select v-model="domain.projectId" :placeholder="$t('defaultText.pleaseSelectSnItem')" style="width:200px;" clearable="true"  filterable="true" value-key="id"
+                            <span v-if="reportTimeType.type == 2">
+                            <!--时间范围选择 -->
+                            <el-time-picker 
+                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
+                                v-model="domain.startTime"
+                                :placeholder="$t('time.startTime')"
+                                style="width:120px;"
+                                format="HH:mm"
+                                value-format="HH:mm"
+                                :picker-options="{
+                                start: '08:00',
+                                end: '23:30'
+                                }"
+                                @change="iptChang()">
+                            </el-time-picker> - <el-time-picker 
+                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
+                                v-model="domain.endTime"
+                                :placeholder="$t('time.endTime')"
+                                style="width:120px;"
+                                format="HH:mm"
+                                value-format="HH:mm"
+                                :picker-options="{
+                                start: '08:00',
+                                end: '23:30',
+                                minTime: domain.startTime
+                                }"
+                                @change="iptChang()">
+                            </el-time-picker>
+                            </span>
+                            <div class="overtime" v-if="user.timeType.fillOvertime || (isWeekend && user.timeType.lockWorktime != 1)">
+                                <el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.IncludingOvertime')}}</el-checkbox>
+                                <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
+                            </div>
+                        </el-form-item>
+                        
+                        <el-form-item :label="user.companyId==781? $t('screening.workTasks') : $t('screening.inputProject')" :prop="'domains.' + index + '.projectId'"
+                            :rules="{ required: true, message: user.companyId==781? $t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem'), trigger: ['change','blur'] }">
+                            <el-select v-model="domain.projectId" :placeholder="user.companyId==781?$t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem')" 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)" popper-class="projectSelectPopperClass">
+                                <!-- <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!=1 && item.status!=4" :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;">{{ item.projectName }}</span>
                                 </el-option>
                             </el-select>
                             <template v-if="user.timeType.mainProjectState != 1">
-                            <span  v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
+                            <span v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
                                 style="margin-left:45px;">{{$t('lable.subproject')}}</span>
+
                             <!--子项目 -->
                             <el-select v-model="domain.subProjectId" :placeholder="$t('defaultText.PleaseSelectaSub-item')" style="width:200px;margin-left:10px;" clearable="true"
-                            v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
+                                v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)" @change="updateSubProject">
                                 <el-option v-for="item in domain.subProjectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                             </el-select>
                             </template>
-
+                            
                             <el-link v-if="index >= 1&&domain.canEdit" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
                                 :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                                 <i class="fa fa-trash" style="color: red;;font-size:18px;"></i>
                             </el-link>
-
-                            <div class="overtime" v-if="user.timeType.fillOvertime"><el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.IncludingOvertime')}}</el-checkbox>
-                            <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
-                            </div>
-                            
                             <!-- <el-link type="primary" v-if="canEdit"
                                 :underline="false" style="margin-left:10px;" @click="copyProject(index)">复制</el-link> -->
                         </el-form-item>
-                        <el-form-item :label="user.companyId==781?$t('other.describe'):$t('other.projectDescription')" v-if="user.company.packageProject==0&&domain.projectId&&projectList.filter(p=>p.id == domain.projectId)[0].projectDesc">
+                        <el-form-item :label="user.companyId==781? $t('other.describe'):$t('other.projectDescription')" v-if="user.company.packageProject==0&&domain.projectId&&projectList.filter(p=>p.id == domain.projectId)[0].projectDesc">
                             <span>{{projectList.filter(p=>p.id == domain.projectId)[0].projectDesc}}</span>
                         </el-form-item>
                         <!--如果设置了工时成本预警的预算成本项-->
                         <el-form-item :label="$t('lable.budgetSource')" v-if="user.company.packageProject==1&&timeBasecostList &&timeBasecostList.length>0">
-                            <el-select v-model="domain.basecostId" :disabled="!domain.canEdit" @change="$forceUpdate()">
+                            <el-select v-model="domain.basecostId" :disabled="!domain.canEdit" @change="$forceUpdate()" style="width:200px;">
                                 <el-option v-for="item in timeBasecostList" :label="item.name" :value="item.id" :key="item.id"></el-option>
                             </el-select>
                         </el-form-item>
@@ -621,41 +476,77 @@
                                 <el-option v-for="item in domain.stages" :key="item.id" :label="item.stagesName" :value="item.stagesName"></el-option>
                             </el-select>
                         </el-form-item>
-                        <el-form-item :label="$t('other.projectAuditor')" >
-                            <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()" v-if="user.userNameNeedTranslate != '1'">
+                        <el-form-item :label="user.companyId==781? $t('other.reviewer') : $t('other.projectAuditor')" v-if="user.timeType.reportAuditType != 3">
+
+                            <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()" v-if="user.userNameNeedTranslate != '1'" style="width:200px;">
                                 <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id">
                                     <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='item.auditorName'></ww-open-data></span>
                                     <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.auditorName}}</span>
                                 </el-option>
                             </el-select>
 
-                            <selectCat v-if="user.userNameNeedTranslate == '1'" :size="'small'" :subject="domain.auditUserList" :idx="index" :subjectId="domain.projectAuditorId" ref="selectCat" :flg="true" :flgs="true" @selectCatCli="selectCatCli"></selectCat>
+                            <selectCat v-if="user.userNameNeedTranslate == '1'" :size="'medium'" :subject="domain.auditUserList" :idx="index" :subjectId="domain.projectAuditorId" ref="selectCat" :flg="domain.projectAuditorId ? true : false" :flgs="true" @selectCatCli="selectCatCli"></selectCat>
+
                         </el-form-item>
-                        
+                        <!-- 111111 -->
+                        <el-form-item :label="$t('other.reviewer')" v-if="user.timeType.reportAuditType == 3">
+                            <el-select v-model="domain.auditorFirst" :placeholder="$t('di-yi-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
+                                <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                            </el-select>
 
-                        <!--工程专业版本模式下, 各个专业的进度填报 -->
-                        <el-form-item :label="$t('other.professionalProgress')" :prop="'domains.' + index + '.professionProgress'" v-if="user.company.packageEngineering==1">
-                            <span v-for="item in domain.professionProgress" :key="item.professionId" style="margin-right:10px;">
-                                <span>{{item.professionName}}</span> / {{$t('other.schedule')}}:
-                                <el-input size="mini" style="width:60px;" v-model="item.progress"
-                                @keyup.native="onProgressChange" 
-                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"></el-input>%
-                            </span>
+                            <template v-if="user.timeType.auditLevel > 1">
+                                <i class="el-icon-right"></i>
+                                <el-select v-model="domain.auditorSec" :placeholder="$t('di-er-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
+                                    <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                </el-select>
+                            </template>
+
+                            <template v-if="user.timeType.auditLevel > 2">
+                                <i class="el-icon-right"></i>
+                                <el-select v-model="domain.auditorThird" :placeholder="$t('di-san-shen-he-ren')" :disabled="!domain.canEdit" style="width:200px;">
+                                    <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                </el-select>
+                            </template>
                         </el-form-item>
-                        <!-- 相关维度 -->
-                        <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList.length != 0 ? { required: true, message: $t('defaultText.pleaseChoose') + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
-                            <el-select v-model="domain.degreeId" :disabled="!domain.canEdit" clearable :placeholder="$t('defaultText.pleaseChoose')">
+                        <el-form-item :label="$t('chao-song-ren')" v-if="user.timeType.reportAuditType == 3">
+                            <el-select v-model="domain.ccUserid" clearable :disabled="!domain.canEdit" style="width:200px;">
+                                <el-option v-for="item in allUsersList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                            </el-select>
+                        </el-form-item>
+
+                        <!-- 相关维度/自定义维度 -->
+                        <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList != undefined && domain.wuduList.length != 0 ? { required: true, message: $t('defaultText.pleaseChoose') + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
+                            <el-select v-model="domain.degreeId" clearable :placeholder="$t('defaultText.pleaseChoose')" :disabled="!domain.canEdit" style="width:200px;">
                                 <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <!-- 相关数值 -->
-                        <el-form-item :label="yonghuUser.customDataName" v-if="domain.projectId && yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
+                        <el-form-item :label="yonghuUser.customDataName" v-if="yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
                             <el-input-number :id="'numberData_'+index" :disabled="!domain.canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
                         </el-form-item>
                         <!-- 自定义文本 -->
                         <el-form-item :label="yonghuUser.customTextName" v-if="yonghuUser.customTextActive == 1" :prop="'domains.' + index + '.customText'" :rules="user.timeType.customTextStatus == 1 ? { required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customTextName, trigger: ['change','blur'] } : null">
-                            <el-input :disabled="!domain.canEdit" v-model="domain.customText" style="width:75%;margin-right:7%" type="textarea" :rows="1" maxlength="1000"></el-input>
+                            <el-input :disabled="!domain.canEdit" v-model="domain.customText" type="textarea" :rows="1" style="width:75%;margin-right:7%" maxlength="1000" show-word-limit></el-input>
+                        </el-form-item>
+                        <el-form-item v-if="reportTimeType.type == 3" :label="$t('lable.percentageOfTime')" :prop="'domains.' + index + '.'+timeFields[reportTimeType.type]"
+                            :rules="{ required: true, message: $t('defaultText.pleaseSetTheTimeRatio'), trigger: 'blur' }">
+                            <div style="width:300px;">
+                                <el-col span="14"><el-slider :disabled="!domain.canEdit" v-model="domain.progress" :min="5" :show-tooltip="false" :step="5" style="width:180px;" @input="domain.workingTime = (reportTimeType.allday*domain.progress/100).toFixed(1)" @change="seleChn(0)"></el-slider></el-col>
+                                <el-col span="10"><span style="margin-left:10px;float:right;"><span style="margin-right:10px;">{{domain.progress}}%</span>{{domain.workingTime}}{{$t('time.hour')}}</span></el-col>
+                            </div>
+                            <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend"><el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.WorkOvertime')}}</el-checkbox>
+                            <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours"  @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
+                            </div>
+                        </el-form-item>
+                        <!--工程专业版本模式下, 各个专业的进度填报 -->
+                        <el-form-item :label="$t('other.professionalProgress')" :prop="'domains.' + index + '.professionProgress'" v-if="user.company.packageEngineering==1">
+                            <span v-for="item in domain.professionProgress" :key="item.professionId" style="margin-right:10px;">
+                                <span>{{item.professionName}}</span> / {{$t('other.schedule')}}:
+                                <el-input size="mini" style="width:60px;" v-model="item.progress"
+                                @keyup.native="onProgressChange" 
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"></el-input>%
+                            </span>
                         </el-form-item>
                         <!--项目管理专业版模式下,项目下的近期执行的任务 -->
                         <el-form-item :label="$t('other.task')+' / '+$t('other.milestone')" :prop="'domains.' + index + '.taskId'" v-if="user.company.packageProject==1" >
@@ -665,66 +556,177 @@
                             </el-select>
                             <el-checkbox v-model="domain.taskFinish" v-if="domain.taskId != undefined">{{$t('state.completed')}}</el-checkbox>
                         </el-form-item>
-                        <div v-for="(timeItem,tIndex) in domain.worktimeList" :key="tIndex" 
-                            style="border: 0.5px #ddd solid;padding:5px;margin-bottom:15px;position:relative;">
-                        <i v-if="tIndex>0&&workForm.domains[index].state>=2" @click="removeTimeItem(domain,tIndex)"  class="el-icon-delete" style="position:absolute;right:-7px;top:-7px;font-size:16px;"></i>
-                        <el-form-item :label="$t('screening.workHours')" :prop="'domains.' + index + '.worktimeList.'+tIndex+'.'+timeFields[reportTimeType.type]"
-                            :rules="{ required: true, message: $t('defaultText.pleaseSelectWorkingHourss'), trigger: 'blur' }">
-                            
-                            <span v-if="reportTimeType.type == 2">
-                            <!-- <span> -->
-                            <!--时间范围选择 -->
-                            <el-time-picker 
-                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
-                                v-model="timeItem.startTime"
-                                :placeholder="$t('time.startTime')"
-                                style="width:120px;"
-                                format="HH:mm"
-                                value-format="HH:mm"
-                                :picker-options="{
-                                start: '00:00',
-                                end: '23:59',
-                                }"
-                                @change="iptChangs()">
-                            </el-time-picker> - <el-time-picker 
-                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
-                                v-model="timeItem.endTime"
-                                :placeholder="$t('time.endTime')"
-                                style="width:120px;"
-                                format="HH:mm"
-                                value-format="HH:mm"
-                                :picker-options="{
-                                start: '00:00',
-                                end: '23:59',
-                                minTime: timeItem.startTime
-                                }"
-                                @change="iptChangs()">
-                            </el-time-picker>
-                            </span>
-                        </el-form-item>
-                        <el-form-item :label="$t('other.workMatters')" :prop="'domains.' + index + '.worktimeList.'+tIndex+'.content'" 
-                        :rules="user.timeType.workContentState == 1 ? { required: true, message: $t('other.tianworkMatters'), trigger: 'blur' } : null">
-                            <el-input v-model="timeItem.content" type="textarea" :rows="2" :placeholder="$t('other.tianworkMatters')" clearable
-                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
-                            ></el-input>
+                        <el-form-item :label="user.companyId==781? $t('other.specificContentAndResults') : $t('other.workMatters') " :prop="'domains.' + index + '.content'" 
+                        :rules="user.timeType.workContentState == 1 ? { required: true, message: user.companyId==781? $t('other.tianspecificContentAndResults'):$t('other.tianworkMatters'), trigger: 'blur' } : null">
+                            <el-input v-model="domain.content" type="textarea" :rows="4" :placeholder="$t('defaultText.pleaseFillOut')" clearable
+                            :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"></el-input>
                         </el-form-item>
                         </div>
-                        <el-link size="small" @click="addNewWorktime(index, domain)" style="margin-left:15px;margin-top:5px;margin-bottom:5px;">{{$t('other.AddWorkTime')}}</el-link>
-                    </div>
+                        <!--多个工作事项填报的情况 -->
+                        <div v-if="reportTimeType.multiWorktime==1">
+                            <el-form-item :label="$t('screening.inputProject')" :prop="'domains.' + index + '.projectId'"
+                                :rules="{ required: true, message: $t('defaultText.pleaseSelectSnItem'), trigger: ['change','blur'] }">
+                                <el-select v-model="domain.projectId" :placeholder="$t('defaultText.pleaseSelectSnItem')" 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)" popper-class="projectSelectPopperClass">
+                                    <el-option v-for="item in fillProjectList" :disabled="item.status!=1 && item.status!=4" :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;">{{ item.projectName }}</span>
+                                    </el-option>
+                                </el-select>
+                                <template v-if="user.timeType.mainProjectState != 1">
+                                <span  v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
+                                    style="margin-left:45px;">{{$t('lable.subproject')}}</span>
+                                <!--子项目 -->
+                                <el-select v-model="domain.subProjectId" :placeholder="$t('defaultText.PleaseSelectaSub-item')" style="width:200px;margin-left:10px;" clearable="true"
+                                v-if="domain.subProjectList != null && domain.subProjectList.length> 0 && domain.projectId != ''"
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)" @change="updateSubProject">
+                                    <el-option v-for="item in domain.subProjectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                </el-select>
+                                </template>
 
-                    <!--照片的显示 -->
-                    <p v-if="domain.pics != null && domain.pics.length > 0" style="text-align:center;"> 
-                        <el-image v-for="(pic, index) in domain.pics" :key="index"
-                            style="width: 100px; height: 100px; margin-right:10px;"
-                            :src="pic" 
-                            :preview-src-list="domain.pics">
-                        </el-image>
-                    </p>
-                    <el-divider v-if="workForm.domains.length>1" style="margin-bottom:10px;"></el-divider>
-                </div>
-                <span id="workFormsItemBottom"></span>
-                <el-link v-if="showAddMore" type="primary" :underline="false" @click="addDomain(reportTimeType.type)" style="margin-left:40px;position:sticky;bottom:70px;background:#fff;z-index:1010">{{$t('other.addMore')}}</el-link>
-            </el-form>
+                                <el-link v-if="index >= 1&&domain.canEdit" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
+                                    :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
+                                    <i class="fa fa-trash" style="color: red;;font-size:18px;"></i>
+                                </el-link>
+
+                                <div class="overtime" v-if="user.timeType.fillOvertime"><el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.IncludingOvertime')}}</el-checkbox>
+                                <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
+                                </div>
+                                
+                                <!-- <el-link type="primary" v-if="canEdit"
+                                    :underline="false" style="margin-left:10px;" @click="copyProject(index)">复制</el-link> -->
+                            </el-form-item>
+                            <el-form-item :label="user.companyId==781?$t('other.describe'):$t('other.projectDescription')" v-if="user.company.packageProject==0&&domain.projectId&&projectList.filter(p=>p.id == domain.projectId)[0].projectDesc">
+                                <span>{{projectList.filter(p=>p.id == domain.projectId)[0].projectDesc}}</span>
+                            </el-form-item>
+                            <!--如果设置了工时成本预警的预算成本项-->
+                            <el-form-item :label="$t('lable.budgetSource')" v-if="user.company.packageProject==1&&timeBasecostList &&timeBasecostList.length>0">
+                                <el-select v-model="domain.basecostId" :disabled="!domain.canEdit" @change="$forceUpdate()">
+                                    <el-option v-for="item in timeBasecostList" :label="item.name" :value="item.id" :key="item.id"></el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item :label="$t('lable.taskGrouping')" v-if="user.company.packageProject == 1">
+                                <!-- 任务分组 -->
+                                <el-select v-model="domain.groupId" :placeholder="$t('defaultText.pleaseSelectaTaskGroup')" style="width:200px;" clearable="true" 
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)" @change="getGroupStages(domain, index)">
+                                    <el-option v-for="item in domain.taskGroups" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                </el-select>
+                                <!-- 项目的阶段 -->
+                                <span v-if="domain.stages != null && domain.stages.length> 0" 
+                                    style="margin-left:30px;">{{$t('other.inputStage')}}</span>
+                                <el-select v-model="domain.stage" :placeholder="$t('defaultText.pleaseChoose')" style="width:200px;margin-left:10px;" 
+                                clearable="true" v-if="domain.stages != null && domain.stages.length> 0"
+                                @change="changeStages(domain, index)"
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
+                                    <el-option v-for="item in domain.stages" :key="item.id" :label="item.stagesName" :value="item.stagesName"></el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item :label="$t('other.projectAuditor')" >
+                                <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()" v-if="user.userNameNeedTranslate != '1'">
+                                    <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id">
+                                        <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='item.auditorName'></ww-open-data></span>
+                                        <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.auditorName}}</span>
+                                    </el-option>
+                                </el-select>
+
+                                <selectCat v-if="user.userNameNeedTranslate == '1'" :size="'small'" :subject="domain.auditUserList" :idx="index" :subjectId="domain.projectAuditorId" ref="selectCat" :flg="true" :flgs="true" @selectCatCli="selectCatCli"></selectCat>
+                            </el-form-item>
+                            
+
+                            <!--工程专业版本模式下, 各个专业的进度填报 -->
+                            <el-form-item :label="$t('other.professionalProgress')" :prop="'domains.' + index + '.professionProgress'" v-if="user.company.packageEngineering==1">
+                                <span v-for="item in domain.professionProgress" :key="item.professionId" style="margin-right:10px;">
+                                    <span>{{item.professionName}}</span> / {{$t('other.schedule')}}:
+                                    <el-input size="mini" style="width:60px;" v-model="item.progress"
+                                    @keyup.native="onProgressChange" 
+                                    :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"></el-input>%
+                                </span>
+                            </el-form-item>
+                            <!-- 相关维度 -->
+                            <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList.length != 0 ? { required: true, message: $t('defaultText.pleaseChoose') + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
+                                <el-select v-model="domain.degreeId" :disabled="!domain.canEdit" clearable :placeholder="$t('defaultText.pleaseChoose')">
+                                    <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <!-- 相关数值 -->
+                            <el-form-item :label="yonghuUser.customDataName" v-if="domain.projectId && yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
+                                <el-input-number :id="'numberData_'+index" :disabled="!domain.canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
+                            </el-form-item>
+                            <!-- 自定义文本 -->
+                            <el-form-item :label="yonghuUser.customTextName" v-if="yonghuUser.customTextActive == 1" :prop="'domains.' + index + '.customText'" :rules="user.timeType.customTextStatus == 1 ? { required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customTextName, trigger: ['change','blur'] } : null">
+                                <el-input :disabled="!domain.canEdit" v-model="domain.customText" style="width:75%;margin-right:7%" type="textarea" :rows="1" maxlength="1000"></el-input>
+                            </el-form-item>
+                            <!--项目管理专业版模式下,项目下的近期执行的任务 -->
+                            <el-form-item :label="$t('other.task')+' / '+$t('other.milestone')" :prop="'domains.' + index + '.taskId'" v-if="user.company.packageProject==1" >
+                                <el-select v-model="domain.taskId" :placeholder="$t('defaultText.pleaseChoose')" style="width:75%;margin-right:7%" filterable="true" 
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
+                                    <el-option v-for="item in domain.taskList" :key="item.taskId" :label="item.taskName" :value="item.taskId"></el-option>
+                                </el-select>
+                                <el-checkbox v-model="domain.taskFinish" v-if="domain.taskId != undefined">{{$t('state.completed')}}</el-checkbox>
+                            </el-form-item>
+                            <div v-for="(timeItem,tIndex) in domain.worktimeList" :key="tIndex" 
+                                style="border: 0.5px #ddd solid;padding:5px;margin-bottom:15px;position:relative;">
+                            <i v-if="tIndex>0&&workForm.domains[index].state>=2" @click="removeTimeItem(domain,tIndex)"  class="el-icon-delete" style="position:absolute;right:-7px;top:-7px;font-size:16px;"></i>
+                            <el-form-item :label="$t('screening.workHours')" :prop="'domains.' + index + '.worktimeList.'+tIndex+'.'+timeFields[reportTimeType.type]"
+                                :rules="{ required: true, message: $t('defaultText.pleaseSelectWorkingHourss'), trigger: 'blur' }">
+                                
+                                <span v-if="reportTimeType.type == 2">
+                                <!-- <span> -->
+                                <!--时间范围选择 -->
+                                <el-time-picker 
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
+                                    v-model="timeItem.startTime"
+                                    :placeholder="$t('time.startTime')"
+                                    style="width:120px;"
+                                    format="HH:mm"
+                                    value-format="HH:mm"
+                                    :picker-options="{
+                                    start: '00:00',
+                                    end: '23:59',
+                                    }"
+                                    @change="iptChangs()">
+                                </el-time-picker> - <el-time-picker 
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
+                                    v-model="timeItem.endTime"
+                                    :placeholder="$t('time.endTime')"
+                                    style="width:120px;"
+                                    format="HH:mm"
+                                    value-format="HH:mm"
+                                    :picker-options="{
+                                    start: '00:00',
+                                    end: '23:59',
+                                    minTime: timeItem.startTime
+                                    }"
+                                    @change="iptChangs()">
+                                </el-time-picker>
+                                </span>
+                            </el-form-item>
+                            <el-form-item :label="$t('other.workMatters')" :prop="'domains.' + index + '.worktimeList.'+tIndex+'.content'" 
+                            :rules="user.timeType.workContentState == 1 ? { required: true, message: $t('other.tianworkMatters'), trigger: 'blur' } : null">
+                                <el-input v-model="timeItem.content" type="textarea" :rows="2" :placeholder="$t('other.tianworkMatters')" clearable
+                                :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)"
+                                ></el-input>
+                            </el-form-item>
+                            </div>
+                            <el-link size="small" @click="addNewWorktime(index, domain)" style="margin-left:15px;margin-top:5px;margin-bottom:5px;">{{$t('other.AddWorkTime')}}</el-link>
+                        </div>
+
+                        <!--照片的显示 -->
+                        <p v-if="domain.pics != null && domain.pics.length > 0" style="text-align:center;"> 
+                            <el-image v-for="(pic, index) in domain.pics" :key="index"
+                                style="width: 100px; height: 100px; margin-right:10px;"
+                                :src="pic" 
+                                :preview-src-list="domain.pics">
+                            </el-image>
+                        </p>
+                        <el-divider v-if="workForm.domains.length>1" style="margin-bottom:10px;"></el-divider>
+                    </div>
+                    <span id="workFormsItemBottom"></span>
+                    <el-link v-if="showAddMore" type="primary" :underline="false" @click="addDomain(reportTimeType.type)" style="margin-left:40px;">{{$t('other.addMore')}}</el-link>
+                </el-form>
+            </div>
             <span slot="footer" class="dialog-footer">
                 <el-button @click="cancel(workForm.domains,true)" v-if="canCancelInDialog" style="float:left;">{{$t('btn.withdraw')}}</el-button>
                 <el-button @click="deleteReport"  v-if="workForm.domains[0].id != null && canEdit && reportCanDelete">{{$t('btn.delete')}}</el-button>
@@ -763,7 +765,7 @@
                      <el-button @click="getCurrentWeek()">{{$t('time.thisWeek')}}</el-button>
                      <el-button @click="newDates()">{{$t('time.addedDate')}}</el-button>
                 </el-form-item>
-                <el-table :data="zhoData" style="width: 100%" v-loading="zhoLoading">
+                <el-table :data="zhoData" style="width: 100%" v-loading="zhoLoading" max-height="400">
                     <el-table-column fixed="left" prop="zhoDataTime" :label="$t('weekDay.date')" width="160">
                         <template slot-scope="scope">
                             {{scope.row.zhoDataTime}}({{scope.row.zhoDataTime | zhoData(weekDay)}})
@@ -1090,7 +1092,7 @@
             <el-table-column prop="label" :label="$t('lable.name')" >
                 <template slot-scope="scope">
                     <div>
-                        <span v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='departmentName' :openid='scope.row.label'></ww-open-data></span>
+                        <span v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='scope.row.label'></ww-open-data></span>
                         <span v-if="user.userNameNeedTranslate != '1'">{{scope.row.label}}</span>
                     </div>
                 </template>
@@ -6359,13 +6361,13 @@
             padding-top: 10px;
         }
     }
-    .editReportDialog .el-dialog__footer{
-        position: sticky;
-        bottom: 0;
-        background: #fff;
-        height: 70px;
-        z-index: 1010;
-    }
+    // .editReportDialog .el-dialog__footer{
+    //     position: sticky;
+    //     bottom: 0;
+    //     background: #fff;
+    //     height: 70px;
+    //     z-index: 1010;
+    // }
     .touruxiangmu{
         max-width: 1000px;
     }