Bläddra i källkod

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

seyason 2 år sedan
förälder
incheckning
ae2f651e03
19 ändrade filer med 336 tillägg och 42 borttagningar
  1. 40 17
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java
  3. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  4. 4 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java
  5. 9 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WXController.java
  6. 98 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties
  7. 101 4
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties
  8. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee project allocation proportion import Template.xlsx
  9. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours import Template.xlsx
  10. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours statistics Template.xlsx
  11. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Expense Reimbursement import Template.xlsx
  12. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/New customer import Template.xlsx
  13. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Personnel import Template.xlsx
  14. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project import Template.xlsx
  15. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project task import Template.xlsx
  16. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Research center import Template.xlsx
  17. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Resource demand import Template.xlsx
  18. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Supplier import Template.xlsx
  19. 80 11
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 40 - 17
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -320,8 +320,9 @@ public class ProjectController {
         operationRecord.setProjectName(project1.getProjectName());
         operationRecord.setOperationTime(LocalDateTime.now());
         //operationRecord.setModuleName("项目管理");
-        operationRecord.setModuleName("项目管理");
-        operationRecord.setContent("完成了项目");
+        operationRecord.setModuleName(MessageUtils.message("Template.projectManage"));
+        //operationRecord.setContent("完成了项目");
+        operationRecord.setContent(MessageUtils.message("Template.finishProject"));
         operationRecord.setOperatorName(user.getName());
         operationRecord.setCompanyId(user.getCompanyId());
         operationRecordService.save(operationRecord);
@@ -345,8 +346,10 @@ public class ProjectController {
             OperationRecord operationRecord=new OperationRecord();
             operationRecord.setProjectName(project1.getProjectName());
             operationRecord.setOperationTime(LocalDateTime.now());
-            operationRecord.setContent("撤销了项目");
-            operationRecord.setModuleName("项目管理");
+            //operationRecord.setContent("撤销了项目");
+            operationRecord.setContent(MessageUtils.message("Template.revokeProject"));
+            //operationRecord.setModuleName("项目管理");
+            operationRecord.setModuleName(MessageUtils.message("Template.projectManage"));
             operationRecord.setOperatorName(user.getName());
             operationRecord.setCompanyId(user.getCompanyId());
             operationRecordService.save(operationRecord);
@@ -832,8 +835,10 @@ public class ProjectController {
                             HSSFDataValidation data_validation_list =null;
                             switch (rowList.get(i)){
                                 case "是否为公共项目":
+                                case "Whether it is a public project":
                                     // 加载下拉列表内容
-                                    textList= new String[]{"是", "否"};
+                                    //textList= new String[]{"是", "否"};
+                                    textList= new String[]{MessageUtils.message("excel.yes"), MessageUtils.message("excel.no")};
                                     constraint = DVConstraint
                                             .createExplicitListConstraint(textList);
                                     // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
@@ -845,12 +850,16 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("是否为公共项目\n" +
-                                            "是:公共项目\n" +
-                                            "否:普通项目"));
+                                    //comment.setString(new HSSFRichTextString("是否为公共项目\n" +
+                                            //"是:公共项目\n" +
+                                            //"否:普通项目"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.publicProject")+"\n" +
+                                            MessageUtils.message("excel.yesPublic")+"\n" +
+                                            MessageUtils.message("excel.noPublic")));
                                     cell.setCellComment(comment);
                                     break;
                                 case "级别":
+                                case "level":
                                     // 加载下拉列表内容
                                     if(timeType.getProjectLevelState()==1){
                                         List<String> list = projectLevelList.stream().map(pl -> pl.getProjectLevelName()).collect(Collectors.toList());
@@ -860,7 +869,8 @@ public class ProjectController {
                                             textList[i1]=array[i1].toString();
                                         }
                                     }else {
-                                        textList= new String[]{"正常", "紧急","重要","重要且紧急"};
+                                        //textList= new String[]{"正常", "紧急","重要","重要且紧急"};
+                                        textList= new String[]{MessageUtils.message("excel.normal"), MessageUtils.message("excel.urgent"),MessageUtils.message("excel.important"),MessageUtils.message("excel.impAndUrg")};
                                     }
                                     constraint = DVConstraint
                                             .createExplicitListConstraint(textList);
@@ -873,35 +883,45 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     break;
                                 case "项目名称":
+                                case "project name":
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("项目名称必填"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.projectName")));
                                     cell.setCellComment(comment);
                                     break;
                                 case "参与人":
+                                case "Participants":
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("多个参与人使用中文逗号(,)隔开"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.manyPeople")));
                                     cell.setCellComment(comment);
                                     break;
                                 case "项目经理":
+                                case "project manager":
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("项目经理需存在于参与人中"));
+                                    //comment.setString(new HSSFRichTextString("项目经理需存在于参与人中"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.projectManager")));
                                     cell.setCellComment(comment);
                                     break;
                                 case "开始日期":
+                                case "Start Date":
                                 case "截止日期":
+                                case "end date":
                                     // 输入批注信息
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("日期格式:yyyy-MM-dd\n" +
-                                            "例如: 2021-01-01"));
+                                    //comment.setString(new HSSFRichTextString("日期格式:yyyy-MM-dd\n" +
+                                    //        "例如: 2021-01-01"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.dateFormat")+"\n" +
+                                            MessageUtils.message("excel.forExample")));
                                     cell.setCellComment(comment);
                                     break;
                                 case "项目状态":
+                                case "Project Status":
                                     // 加载下拉列表内容
-                                    textList= new String[]{"全部", "进行中", "已完成", "已撤销", "暂停"};
+                                    //textList= new String[]{"全部", "进行中", "已完成", "已撤销", "暂停"};
+                                    textList= new String[]{MessageUtils.message("excel.whole"), MessageUtils.message("excel.onGoing"), MessageUtils.message("excel.complete"), MessageUtils.message("excel.revoke"), MessageUtils.message("excel.pause")};
                                     constraint = DVConstraint
                                             .createExplicitListConstraint(textList);
                                     // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
@@ -913,6 +933,7 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     break;
                                 case "项目阶段":
+                                case "Project Phase":
                                     // 加载下拉列表内容
                                     List<String> list = projectStageList.stream().map(pc -> pc.getProjectStageName()).collect(Collectors.toList());
                                     textList= new String[list.size()];
@@ -930,9 +951,11 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     break;
                             }
-                            if(rowList.get(i).contains("节点状态")){
+                            //if(rowList.get(i).contains("节点状态")){
+                            if(rowList.get(i).contains(MessageUtils.message("excel.nodeStatus"))){
                                 // 加载下拉列表内容
-                                textList= new String[]{"正常", "延期", "完成"};
+                                //textList= new String[]{"正常", "延期", "完成"};
+                                textList= new String[]{MessageUtils.message("excel.normal"), MessageUtils.message("excel.postpone"), MessageUtils.message("excel.finish")};
                                 constraint = DVConstraint
                                         .createExplicitListConstraint(textList);
                                 // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java

@@ -177,7 +177,8 @@ public class StagesController {
             stage.setGroupId(item.getGroupId());
             stage.setSequence(1);
             stage.setProjectId(item.getProjectId());
-            stage.setStagesName("工作开展");
+            //stage.setStagesName("工作开展");
+            stage.setStagesName(MessageUtils.message("excel.WorkUnfolds"));
             stagesService.save(stage);
         }
         List<Stages> list = stagesService.list(stagesQueryWrapper);

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -221,7 +221,8 @@ public class TaskController {
         comment.setUserId(user.getId());
         comment.setUserName(user.getName());
         comment.setType(isNew?1:2);
-        comment.setContent(user.getName()+(isNew?"创建":"编辑")+"了任务");
+        //comment.setContent(user.getName()+(isNew?"创建":"编辑")+"了任务");
+        comment.setContent(user.getName()+(isNew?MessageUtils.message("entry.create"):MessageUtils.message("entry.editedTask"))+MessageUtils.message("entry.task"));
         taskCommentMapper.insert(comment);
 
         //新增任务,需要重新计算项目进度

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -139,7 +139,8 @@ public class TaskGroupController {
             //创建默认分组
             TaskGroup group = new TaskGroup();
             group.setProjectId(item.getProjectId());
-            group.setName("项目阶段");
+            //group.setName("项目阶段");
+            group.setName(MessageUtils.message("entry.projectStage"));
             taskGroupService.save(group);
         }
         msg.data = taskGroupService.list(queryWrapper);
@@ -203,7 +204,8 @@ public class TaskGroupController {
         List<Stages> stagesList = stagesService.list(new QueryWrapper<Stages>().eq("group_id", id).orderByAsc("sequence"));
         TaskGroup copyItem = new TaskGroup();
         copyItem.setProjectId(taskGroup.getProjectId());
-        copyItem.setName(taskGroup.getName()+"-复制");
+        //copyItem.setName(taskGroup.getName()+"-复制");
+        copyItem.setName(taskGroup.getName()+MessageUtils.message("entry.copy"));
         taskGroupService.save(copyItem);
         if (stagesList.size() > 0) {
             for (Stages stages : stagesList) {

+ 9 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WXController.java

@@ -2,6 +2,7 @@ package com.management.platform.controller;
 
 import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
+import com.management.platform.util.MessageUtils;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
@@ -55,10 +56,14 @@ public class WXController {
                 .url("http://mob.ttkuaiban.com/")//点击模版消息要访问的网址
                 .build();
         //3,如果是正式版发送模版消息,这里需要配置你的信息
-                templateMessage.addData(new WxMpTemplateData("first", "您今天的工时填报还未完成", "#FF00FF"));
-                templateMessage.addData(new WxMpTemplateData("keyword1", "屈跃庭", "#000000"));
-                templateMessage.addData(new WxMpTemplateData("keyword2", "市场部", "#000000"));
-                templateMessage.addData(new WxMpTemplateData("remark", "请尽快填报", "#000000"));
+                //templateMessage.addData(new WxMpTemplateData("first", "您今天的工时填报还未完成", "#FF00FF"));
+                templateMessage.addData(new WxMpTemplateData("first", MessageUtils.message("push.fillIn"), "#FF00FF"));
+                //templateMessage.addData(new WxMpTemplateData("keyword1", "屈跃庭", "#000000"));
+                templateMessage.addData(new WxMpTemplateData("keyword1", MessageUtils.message("push.name"), "#000000"));
+                //templateMessage.addData(new WxMpTemplateData("keyword2", "市场部", "#000000"));
+                templateMessage.addData(new WxMpTemplateData("keyword2", MessageUtils.message("push.Dep"), "#000000"));
+                //templateMessage.addData(new WxMpTemplateData("remark", "请尽快填报", "#000000"));
+                templateMessage.addData(new WxMpTemplateData("remark", MessageUtils.message("push.ASAP"), "#000000"));
         //                templateMessage.addData(new WxMpTemplateData(name2, value2, color2));
         try {
             wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);

+ 98 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -231,7 +231,7 @@ wx.AssCompletedByParam=处理完毕。本次自动关联了:{0}位人员:{1}
 leave.businessRepeat=该时间段已有出差申请,不能重复提交
 leave.repeatedLeave=该时间段已有请假申请,不能重复请假
 #报销相关
-Reimbursement.nameNull=报销人名称不能fa为空
+Reimbursement.nameNull=报销人名称不能为空
 Reimbursement.costTypeNull=费用类型不能为空
 Reimbursement.dataNull=填报日期不能为空
 Reimbursement.PeopleNull=报销人["{0}"]不存在
@@ -254,6 +254,9 @@ Template.lackSonProject=缺少子项目列,请下载最新模板
 Template.lackMasterRow=缺少主项目列,请下载最新模板
 Template.lackDepartment=缺少部门列,请下载最新模板进行导入
 Template.lackJobNumber=缺少工号列,请下载最新模板导入
+Template.projectManage=项目管理
+Template.finishProject=完成了项目
+Template.revokeProject=撤销了项目
 #角色相关
 role.noExist=该角色不存在
 role.deleteRootError=不可删除超级管理员
@@ -347,9 +350,102 @@ entry.goWorkTime=上班时间
 entry.offWorkTime=下班时间
 entry.actualWorkTime=实际工作时长
 entry.unknown=未知
+entry.create=创建
+entry.editedTask=编辑
+entry.task=了任务
+entry.copy=-复制
 #文件名
 fileName.financialCost={0}_财务人员成本模板
 fileName.projectImport={0}_项目导入模板
 fileName.resourceDemand=资源需求统计报表_{0}
 fileName.workHour=_人员工时统计模板{0}至{1}
-
+fileName.reimburse=费用报销导入模板
+fileName.supplier=供应商导入模板
+fileName.people=人员导入模板
+fileName.projectTask=项目任务导入模板
+fileName.customer=新增客户导入模板
+fileName.researchCenter=研究中心导入模板
+fileName.allocation=员工项目分摊比例导入模板
+fileName.resImport=资源需求导入模板
+#excel
+excel.publicProject=是否为公共项目
+excel.projectName=项目名称必填
+excel.manyPeople=多个参与人使用中文逗号(,)隔开
+excel.projectManager=项目经理需存在于参与人中
+excel.projectCharge=负责人需存在于参与人中
+excel.dateFormat=日期格式:yyyy-MM-dd
+excel.forExample=例如: 2021-01-01
+excel.yesPublic=是:公共项目
+excel.noPublic=否:普通项目
+excel.yes=是
+excel.no=否
+excel.normal=正常
+excel.urgent=紧急
+excel.important=重要
+excel.impAndUrg=重要且紧急
+excel.whole=全部
+excel.onGoing=进行中
+excel.complete=已完成
+excel.revoke=已撤销
+excel.pause=暂停
+excel.nodeStatus=节点状态
+excel.postpone=延期
+excel.finish=完成
+excel.mainPeople=主要负责人
+excel.WorkUnfolds=工作开展
+excel.receipt=报销单据
+excel.reiPer=报销人
+excel.fillDate=填报日期
+excel.expenseType=费用类型
+excel.remark=备注
+excel.general=一般
+excel.trip=差旅
+excel.outsource=外包
+excel.BelongProject=所属项目
+excel.expenseDate=费用日期
+excel.invoiceType=发票种类
+excel.VAT=增值税普通发票
+excel.VATS=增值税专用发票
+excel.expenseAmount=费用金额(含税)
+excel.invoiceNo=发票号
+excel.taxRate=税率%
+excel.supplierNo=供应商编号
+excel.supplierName=供应商名称
+excel.contacts=联系人
+excel.phone=联系电话
+excel.email=邮箱
+excel.address=地址
+excel.phoneNumber=手机号码
+excel.department=部门
+excel.taskListP=任务列表(阶段)
+excel.taskContent=任务内容
+excel.type=类型
+excel.executor=执行人
+excel.task=任务
+excel.taskLevel=任务级别
+excel.milepost=里程碑
+excel.risk=风险
+excel.integer=整数不带单位
+excel.plannedWork=计划工时(h)
+excel.description=详细描述
+excel.customerNo=客户编号
+excel.customerName=客户名称
+excel.centerName=中心名称
+excel.date=日期
+excel.staff=员工
+excel.leYou=乐优商城系统
+excel.enterpriseOffice=企业办公自动化系统
+excel.projectFormat=修改为自己的项目.如需指定子项目,请用 / 隔开。范例: 主项目/子项目
+excel.moreProject=可以增加更多项目
+excel.employeeHours=员工工时导入模板
+excel.post=岗位
+excel.development=开发
+excel.market=市场
+excel.technology=技术部
+excel.Marketing=市场部
+excel.empStatistics=员工工时统计模板
+#推送
+push.fillIn=您今天的工时填报还未完成
+push.name=屈跃庭
+push.Dep=市场部
+push.ASAP=请尽快填报

+ 101 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -254,6 +254,9 @@ Template.lackSonProject=The sub item column is missing. Please download the late
 Template.lackMasterRow=The main item column is missing. Please download the latest template.
 Template.lackDepartment=The department column is missing. Please download the latest template to import.
 Template.lackJobNumber=The job number column is missing. Please download the latest template to import.
+Template.projectManage=project management
+Template.finishProject=completed the project
+Template.revokeProject=cancelled the project
 #角色相关
 role.noExist=The role does not exist
 role.deleteRootError=Cannot delete super administrator
@@ -318,7 +321,7 @@ entry.level=level
 entry.department=Department
 entry.customer=customer
 entry.startData=Start Date
-entry.endDate=closing date
+entry.endDate=end date
 entry.contract=Contract amount
 entry.warrantyST=Warranty start time
 entry.warrantyET=Warranty deadline
@@ -336,7 +339,7 @@ entry.contractDemand=Contract requirements
 entry.depSpeed=Progress of participating departments
 entry.mileSpeed=Milestone Progress
 entry.startTime=start time
-entry.endTime=End time
+entry.endTime=end time
 entry.finishTime={0} - Completion time: {1}
 entry.completeTask=Completed the task
 entry.restartTask=Restart the task
@@ -347,8 +350,102 @@ entry.goWorkTime=work shift
 entry.offWorkTime=closing time
 entry.actualWorkTime=Actual working hours
 entry.unknown=unknown
+entry.create=create
+entry.editedTask=editedTask
+entry.task=the Task
+entry.copy=-copy
 #文件名
 fileName.financialCost={0}_ Financial Staff Cost Template
-fileName.projectImport={0}_ Project import template
+fileName.projectImport={0}_ Project import Template
 fileName.resourceDemand=Resource demand statistics report_ {0}
-fileName.workHour=_ Personnel Hours Statistics Template {0} to {1}
+fileName.workHour=_ Personnel Hours Statistics Template {0} to {1}
+fileName.reimburse=Expense Reimbursement import Template
+fileName.supplier=Supplier import Template
+fileName.people=Personnel import Template
+fileName.projectTask=Project task import Template
+fileName.customer=New customer import Template
+fileName.researchCenter=Research center import Template
+fileName.resImport=Resource demand import Template
+#excel
+excel.publicProject=Whether it is a public project
+excel.projectName=Project name is required
+excel.manyPeople=Multiple participants are separated by commas (,)
+excel.projectManager=The project manager must exist in the participants
+excel.projectCharge=The person in charge must exist in the participants
+excel.dateFormat=Date Format:yyyy-MM-dd
+excel.forExample=for example: 2021-01-01
+excel.yesPublic=yes:public project
+excel.noPublic=no:average project
+excel.yes=yes
+excel.no=no
+excel.normal=normal
+excel.urgent=urgent
+excel.important=important
+excel.impAndUrg=important And urgent
+excel.whole=whole
+excel.onGoing=on going
+excel.complete=Completed
+excel.revoke=rescinded
+excel.pause=pause
+excel.nodeStatus=node status
+excel.postpone=postpone
+excel.finish=Finish
+excel.mainPeople=main in-charge
+excel.WorkUnfolds=Work unfolds
+excel.receipt=Receipt
+excel.reiPer=Reimbursement applicant
+excel.fillDate=Fill in the date
+excel.expenseType=Expense type
+excel.remark=Remark
+excel.general=general
+excel.trip=travel on business
+excel.outsource=outsource
+excel.BelongProject=Project
+excel.expenseDate=Expense Date
+excel.invoiceType=Invoice type
+excel.VAT=VAT ordinary invoice
+excel.VATS=VAT special invoice
+excel.expenseAmount=Expense amount (tax included)
+excel.invoiceNo=Invoice No
+excel.taxRate=Tax rate%
+excel.supplierNo=Supplier No
+excel.supplierName=Supplier name
+excel.contacts=contact name
+excel.phone=contact number
+excel.email=email
+excel.address=address
+excel.phoneNumber=phone number
+excel.department=Department
+excel.taskListP=Task List (Phase)
+excel.taskContent=Task content
+excel.type=type
+excel.executor=Executor
+excel.task=task
+excel.taskLevel=Task level
+excel.milepost=milepost
+excel.risk=risk
+excel.integer=Integer without unit
+excel.plannedWork=Planned working hours (h)
+excel.description=Detailed description
+excel.customerNo=Customer No
+excel.customerName=Customer Name
+excel.centerName=Center name
+excel.date=Data
+excel.staff=staff
+excel.leYou=Leyou Mall System
+excel.enterpriseOffice=Enterprise office automation system
+excel.projectFormat=Modify to your own project To specify sub items, separate them with /. Example: Main project/sub project.
+excel.moreProject=More items can be added
+excel.employeeHours=Employee hours import Template
+excel.post=post
+excel.development=development
+excel.market=market
+excel.technology=Technology Department
+excel.Marketing=Marketing Department
+excel.empStatistics=Employee hours statistics Template
+fileName.allocation=Employee  project allocation proportion import Template
+#推送
+push.fillIn=Your work hour report for today has not been completed.
+push.name=Qu Yue ting
+push.Dep=Marketing Department
+push.ASAP=Please fill in as soon as possible.

BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee project allocation proportion import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours statistics Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Expense Reimbursement import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/New customer import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Personnel import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project task import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Research center import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Resource demand import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Supplier import Template.xlsx


+ 80 - 11
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -41,7 +41,19 @@
                                     <span class="custom-tree-node"  style="position: relative;box-sizing: border-box;width: 10%;" slot-scope="{ node, data}">
                                         <!-- <span>{{ node.label }}</span> -->
                                         <span style="padding-right: 50px;box-sizing: border-box;overflow:hidden;text-overflow:ellipsis;line-height: 36px; display: inline-block;">
-                                            {{ node.label }}<span v-if="data.membCount != null && data.isUser == null">({{data.membCount}})</span>
+                                            <span v-if="user.userNameNeedTranslate == '1'">
+                                                <span v-if="node.data.children">
+                                                    <ww-open-data type='departmentName' :openid='node.label'></ww-open-data>
+                                                </span>
+                                                <span v-else>
+                                                    <ww-open-data type='userName' :openid='node.label'></ww-open-data>
+                                                </span>
+                                            </span>
+                                            <span v-if="user.userNameNeedTranslate != '1'">
+                                                {{ node.label }}
+                                            </span>
+                                            
+                                            <span v-if="data.membCount != null && data.isUser == null">({{data.membCount}})</span>
                                         </span>
                                         
                                         <div style="position: absolute;right: 15px;">
@@ -91,7 +103,12 @@
                             <div class="report_title" style="display:flex;justify-content: space-between;">
                                 <span>
                                     <span>{{$t('other.dailyWork')}} ({{curDate}})</span>
-                                    <span v-if="permissions.reportsCompany||user.manageDeptId != 0 || permissions.reportsDept">| {{depData != null ?depData.label:""}}
+                                    <span v-if="permissions.reportsCompany||user.manageDeptId != 0 || permissions.reportsDept"> | 
+                                        <!-- {{depData != null ?depData.label:""}} -->
+                                        <span v-if="translation == '1' && user.userNameNeedTranslate == '1'">{{depData != null ?depData.label:""}}</span>
+                                        <span v-if="translation == '2' && user.userNameNeedTranslate == '1'"><ww-open-data type='departmentName' :openid='depData.label'></ww-open-data></span>
+                                        <span v-if="translation == '3' && user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='depData.label'></ww-open-data></span>
+                                        <span v-if="user.userNameNeedTranslate != '1'">{{depData != null ?depData.label:""}}</span>
                                     <span v-if="targetUid == null">
                                     <!-- - 已提交 -->
                                     -{{$t('state.hasBeenSubmitted')}}
@@ -118,7 +135,14 @@
                             </div>
                             <div :style="'height:'+(tableHeight-50)+'px;overflow:scroll;padding-top:10px;'">
                                 <div class="one_daily" v-for="(item1,index1) in reportList" :key="index1">
-                                    <i class="fa fa-circle"></i>{{item1.name}}
+                                    <i class="fa fa-circle"></i>
+                                    <!-- {{item1.name}} -->
+                                    <span v-if="user.userNameNeedTranslate == '1'">
+                                        <ww-open-data type='userName' :openid='item1.name'></ww-open-data>
+                                    </span>
+                                    <span v-if="user.userNameNeedTranslate != '1'">
+                                        {{item1.name}}
+                                    </span>
                                     <span style="margin-left:30px;">
                                         <span style="margin-right:20px;">
                                             <!-- <i v-if="parseFloat(item1.reportTime)>parseFloat(item1.calculateTime)+0.5" style="color:red;margin-right:8px;" class="fa fa-exclamation-triangle"></i> -->
@@ -150,17 +174,29 @@
                                                         <span v-if="item2.isDeptAudit==0">
                                                             <span v-if="item2.projectAuditState==0">
                                                                 <!-- 待项目审核人 --> {{$t('other.waitForTheProjectReviewer')}}
-                                                                <span v-if="item2.projectAuditorName != null">({{item2.projectAuditorName}})</span> 
+                                                                <span v-if="item2.projectAuditorName != null">(
+                                                                    <!-- {{item2.projectAuditorName}} -->
+                                                                    <span v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='item2.projectAuditorName'></ww-open-data></span>
+                                                                    <span v-if="user.userNameNeedTranslate != '1'">{{item2.projectAuditorName}}</span>
+                                                                    )</span> 
                                                                 <!-- 审核 --> {{$t('other.audit')}}
                                                             </span>
                                                             <span style="color:#32CD32;" v-else-if="item2.projectAuditState==1">
                                                                 <!-- 项目审核人 --> {{$t('other.projectAuditor')}}
-                                                                <span v-if="item2.projectAuditorName != null">({{item2.projectAuditorName}})</span>
+                                                                <span v-if="item2.projectAuditorName != null">(
+                                                                    <!-- {{item2.projectAuditorName}} -->
+                                                                    <span v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='item2.projectAuditorName'></ww-open-data></span>
+                                                                    <span v-if="user.userNameNeedTranslate != '1'">{{item2.projectAuditorName}}</span>
+                                                                    )</span>
                                                                 <!-- 审核通过 --> {{$t('state.approved')}}
                                                             </span>
                                                         </span>
                                                         <span v-else-if="item2.isDeptAudit==1">
-                                                            {{($t('other.await') +' '+ item2.auditDeptName +' '+ $t('other.audit'))}}
+                                                            <!-- {{($t('other.await') +' '+ item2.auditDeptName +' '+ $t('other.audit'))}} -->
+                                                            ({{$t('other.await')}}
+                                                            <span v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='departmentName' :openid='item2.auditDeptName'></ww-open-data></span>
+                                                            <span v-if="user.userNameNeedTranslate != '1'">{{item2.auditDeptName}}</span>
+                                                            {{$t('other.audit')}})
                                                         </span>
                                                         ]</span> 
                                                     <span style="margin-left:15px;color:#DAA520;" v-else-if="item2.state == -1">[ {{$t('other.importWaitingForReview')}} ]</span>
@@ -403,7 +439,11 @@
                     </el-form-item>
                     <el-form-item :label="user.companyId==781? $t('other.reviewer') : $t('other.projectAuditor')">
                         <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()">
-                            <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id"></el-option>
+                            <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id">
+                                <!-- <span style="float: left">{{ item.auditorName }}</span> -->
+                                <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>
                     </el-form-item>
                     <!-- 相关维度/自定义维度 -->
@@ -516,7 +556,11 @@
                         </el-form-item>
                         <el-form-item :label="$t('other.projectAuditor')" >
                             <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()">
-                                <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id"></el-option>
+                                <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id">
+                                    <!-- <span style="float: left">{{ item.auditorName }}</span> -->
+                                    <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>
                         </el-form-item>
                         <!--工程专业版本模式下, 各个专业的进度填报 -->
@@ -1005,11 +1049,18 @@
 
             <el-table-column width="105" prop="name" fixed="left" :label="$t('lable.name')">
                 <template slot-scope="scope">
-                    <span :style="scope.row.worktimeList.length==0?'color:red':''">{{scope.row.name}}</span>
+                    <span :style="scope.row.worktimeList.length==0?'color:red':''">
+                        <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='scope.row.name'></ww-open-data></span>
+                        <span v-if="user.userNameNeedTranslate != 1">{{scope.row.name}}</span>
+                        <!-- {{scope.row.name}} -->
+                    </span>
                 </template>
             </el-table-column>
             <el-table-column prop="departmentName" fixed="left" :label="$t('lable.department')">
-                
+                <template slot-scope="scope">
+                    <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='departmentName' :openid='scope.row.departmentName'></ww-open-data></span>
+                    <span v-if="user.userNameNeedTranslate != 1">{{scope.row.departmentName}}</span>
+                </template>
             </el-table-column>
             <el-table-column
               min-width="105"
@@ -1161,8 +1212,16 @@
             lazy
           >
             <el-table-column min-width="150" :label="$t('lable.department')" prop="department">
+                <template slot-scope="scope">
+                    <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='departmentName' :openid='scope.row.department'></ww-open-data></span>
+                    <span v-if="user.userNameNeedTranslate != 1">{{scope.row.department}}</span>
+                </template>
             </el-table-column>
             <el-table-column min-width="150" prop="name" :label="$t('lable.name')" >
+                <template slot-scope="scope">
+                    <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='scope.row.name'></ww-open-data></span>
+                    <span v-if="user.userNameNeedTranslate != 1">{{scope.row.name}}</span>
+                </template>
             </el-table-column>
             <el-table-column
               min-width="200"
@@ -1319,7 +1378,7 @@
                 type="primary" @click="downloadCheckInExcel">{{$t('template.DownloadEmployeeHourStatisticsTemplate')}}.xlsx</el-link>
             <el-button @click="pre" v-if="active!=0">{{$t('btn.previousstep')}}</el-button>
             
-            <el-button @click="next" :disabled="importWxParam.date==null" v-if="active<2">{{$t('btn.nextstep')}}</el-button>
+            <el-button @click="next" :disabled="importWxParam.date==null" v-if="active<2">{{$t('btn.nextStep')}}</el-button>
             
             </span>
         </el-dialog>
@@ -1395,6 +1454,7 @@
         mixins: [dragMixin],
         data() {
             return {
+                translation: '1', // 1、文字, 2、部门, 3、人员
                 exportLoad: false,
                 getPickerOptions: {
                      disabledDate: (time) => {
@@ -3304,6 +3364,15 @@
                 for(var i in item) {
                     if(item[i].id == id) {
                         this.depData = item[i]
+                        if(id == '-1') {
+                            this.translation = '1'
+                        } else {
+                            if(item[i].children) {
+                                this.translation = '2'
+                            } else {
+                                this.translation = '3'
+                            }
+                        }
                         return
                     } else {
                         if(item[i].children) {