Przeglądaj źródła

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

cs 2 lat temu
rodzic
commit
ffa7ee0fbc

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/TimelinessRateVO.java

@@ -14,5 +14,6 @@ public class TimelinessRateVO {
     private String userName;
     private String departmentName;
     private String timelinessRate;
+    private String jobNumber;
     private List<Map<String,Object>> dataList;
 }

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

@@ -2698,6 +2698,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             headList.add("项目名称");
             headList.add(timeType.getCustomDegreeName());
             headList.add("姓名");
+            headList.add("工号");
             headList.add("部门");
             headList.add("工作日期");
             headList.add("工作时长(h)");
@@ -2721,6 +2722,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 rowData.add((String)map.get("projectName"));
                 rowData.add((String)map.get("degreeName"));
                 rowData.add((String)map.get("username"));
+                rowData.add(String.valueOf(StringUtils.isEmpty(map.get("jobNumber"))?"":map.get("jobNumber")));
                 rowData.add((String)map.get("departmentName"));
                 rowData.add((String)map.get("createDate"));
                 rowData.add(((Double)map.get("workingTime")).toString());
@@ -2742,6 +2744,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             sumRow.add("");
             sumRow.add("");
             sumRow.add("");
+            sumRow.add("");
             sumRow.add(""+df.format(totalWorkTime));
             sumRow.add(""+df.format(totalCostTime));
             if (hasViewSalary) {
@@ -5241,7 +5244,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }
         }
         List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
-        String[] string={"人员","普通项目工时","公共项目工时","总工时","公共项目工时占比"};
+        String[] string={"人员","工号","普通项目工时","公共项目工时","总工时","公共项目工时占比"};
         List<List<String>> dataList=new ArrayList<>();
         dataList.add(Arrays.asList(string));
         for(Map<String,Object> item:list){
@@ -5252,6 +5255,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             BigDecimal divide = bdIsPublic.divide(BigDecimal.valueOf(workingTime),2,BigDecimal.ROUND_HALF_UP);
             NumberFormat nf = NumberFormat.getPercentInstance();
             subList.add(String.valueOf(item.get("username")));
+            subList.add(String.valueOf(StringUtils.isEmpty(item.get("jobNumber"))?"":item.get("jobNumber")));
             subList.add(String.valueOf(item.get("unPublic")));
             subList.add(String.valueOf(item.get("isPublic")));
             subList.add(String.valueOf(item.get("workingTime")));
@@ -5334,6 +5338,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     &&(ls.getEndDate().isBefore(ChronoLocalDate.from(eDate))||ls.getEndDate().isEqual(ChronoLocalDate.from(eDate)))).collect(Collectors.toList());
             TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
             timelinessRateVO.setUserName(user.getName());
+            timelinessRateVO.setJobNumber(user.getJobNumber());
             timelinessRateVO.setTimelinessRate(String.valueOf(dft.format(0)));
             Optional<Department> first = departmentList.stream().filter(dp -> dp.getDepartmentId().equals(user.getDepartmentId())).findFirst();
             if(first.isPresent()){
@@ -5449,13 +5454,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg msg = getUserReportTimelinessRate(request, startDate, endDate, null, null, null, null);
         HashMap map= (HashMap) msg.data;
         List<TimelinessRateVO> list = (List<TimelinessRateVO>) map.get("list");
-        String[] s={"人员","部门","填报及时率"};
+        String[] s={"人员","工号","部门","填报及时率"};
         List<String> titleString = Arrays.asList(s);
         List<List<String>> dataList=new ArrayList<>();
         dataList.add(titleString);
         for (TimelinessRateVO timelinessRateVO : list) {
             List<String> item=new ArrayList<>();
             item.add(timelinessRateVO.getUserName());
+            item.add(timelinessRateVO.getJobNumber());
             item.add(timelinessRateVO.getDepartmentName());
             item.add(timelinessRateVO.getTimelinessRate());
             dataList.add(item);
@@ -5632,6 +5638,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<List<String>> dataList=new ArrayList<>();
         List<String> titleList=new ArrayList<>();
         titleList.add("姓名");
+        titleList.add("工号");
         titleList.add("部门");
         titleList.add("计划工时");
         titleList.add("实际工时");
@@ -5640,6 +5647,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         for (Map<String, Object> map : resultList) {
             List<String> item=new ArrayList<>();
             item.add((String) map.get("name"));
+            item.add(String.valueOf(StringUtils.isEmpty(map.get("jobNumber"))?"":map.get("jobNumber")));
             item.add((String) map.get("departmentName")==null?"":(String) map.get("departmentName"));
             item.add(String.valueOf(map.get("planHours")).equals("null")?"":String.valueOf(map.get("planHours")));
             item.add(String.valueOf(map.get("workingTime")).equals("null")?"":String.valueOf(map.get("workingTime")));

+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -139,6 +139,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private DepartmentOtherManagerMapper departmentOtherManagerMapper;
     @Resource
     private LocaleInformationMapper localeInformationMapper;
+    @Resource
+    private CompanyReportMapper companyReportMapper;
     //登录网页端
     @Override
     public HttpRespMsg loginAdmin(String username, String password) {
@@ -622,6 +624,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 setting.setCompanyId(company.getId());
                 projectBasecostSettingMapper.insert(setting);
             }
+            //生成项目报表服务默认条目
+            Integer[] arrayInteger=new Integer[]{1,2,3,4,7};
+            for (Integer integerItem : arrayInteger) {
+                CompanyReport companyReport=new CompanyReport();
+                companyReport.setCompanyId(company.getId());
+                companyReport.setReportFormId(integerItem);
+                companyReportMapper.insert(companyReport);
+            }
             //生成费用报销默认条目
             String[] expenseTypes = Constant.EXPENSE_TYPES;
             List<String> commonly = new ArrayList<>();

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

@@ -643,7 +643,7 @@
     <!-- 获取某个员工的某时间段内的加班详情 -->
     <select id="getOvertimeDetail" resultType="java.util.Map">
         SELECT date_format(report.`create_date`, '%Y-%m-%d') AS createDate,
-        report.`creator_id` AS userId, user.`name` AS username, report.`working_time` AS workingTime,
+        report.`creator_id` AS userId, user.`name` AS username,user.job_number as jobNumber, report.`working_time` AS workingTime,
         IFNULL(report.`overtime_hours`, 0) AS overtimeHours,project.id as projectId,
         project.project_name as projectName,project.project_code as projectCode,
         IFNULL(report.overtime_cost, 0) AS cost,
@@ -678,7 +678,7 @@
 
     <!--获取人员工时-->
     <select id="getUserWorkingTimeList" resultType="java.util.Map">
-        SELECT  report.`creator_id` AS userId, user.`name` AS username,
+        SELECT  report.`creator_id` AS userId, user.`name` AS username,user.job_number as jobNumber,
         ifnull(SUM(if(project.is_public=0,report.working_time,null)),0) as unPublic,
         ifnull(SUM(if(project.is_public=1,report.working_time,null)),0) as isPublic,
         ifnull(SUM(report.`working_time`),0) AS workingTime
@@ -987,7 +987,7 @@
     </select>
 
     <select id="getUserWorkingTimeStatic" resultType="java.util.Map">
-        select us.name,dp.department_name as departmentName,
+        select us.name,us.job_number as jobNumber,dp.department_name as departmentName,
         (select SUM(te.plan_hours) from task_executor te
         left join task on task.id=te.task_id
         where te.executor_id=us.id

+ 37 - 22
fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json

@@ -5,8 +5,8 @@
     "projectManagement": "project management",
     "professionalAudit": "Professional audit",
     "departmentAudit": "Department audit",
-    "projectReportReview": "Project report review",
-    "ImportDailyReview": "Import daily review",
+    "projectReportReview": "Report review",
+    "ImportDailyReview": "Imported  report review",
     "laborCostStatistics": "Labor cost statistics",
     "customizeNumericalStatistics": "Customize numerical statistics",
     "financialAccountingCost": "Financial accounting cost",
@@ -52,7 +52,7 @@
     "completed": "completed",
     "tried": "tried",
     "untrial": "untrial",
-    "undone": "undone",
+    "undone": "canceled",
     "yes": "yes",
     "no": "no",
     "alreadyPassedAndWaitingAudit": "already passed and Waiting audit"
@@ -92,7 +92,7 @@
     "day": "day"
   },
   "headerTop": {
-    "projectName": "projectName",
+    "projectName": "project name",
     "serialNumber": "serial number"
   },
   "defaultText": {
@@ -158,9 +158,9 @@
     "determine": "determine",
     "editWorkReport": "Edit work report",
     "delete": "delete",
-    "through": "through",
-    "rejected": "rejected",
-    "undo": "undo",
+    "through": "pass",
+    "rejected": "reject",
+    "undo": "cannel",
     "withdraw": "withdraw",
     "temporaryStorage": "temporary storage",
     "nextStep": "Next step",
@@ -198,7 +198,7 @@
     "approvalProcess": "Approval process",
     "project": "project",
     "waitForTheProjectReviewer": "Waiting for project reviewers",
-    "audit": "audit",
+    "audit": "review",
     "projectAuditor": "project reviewer",
     "reviewer": "Reviewer",
     "await": "await",
@@ -265,7 +265,7 @@
     "startImporting": "Start importing",
     "viewLaborImportRecords": "View labor import records",
     "ImportTime": "Import time",
-    "operator": "Operator",
+    "operator": "reviewer",
     "document": "document",
     "selectadaterangetoimporthours": "Select a date range to import hours",
     "downloadTemplateithattendancedata": "Download template with attendance data",
@@ -284,7 +284,7 @@
     "specificcontentandresults": "specific content and results",
     "pleaseYes": "please yes",
     "tofillin": "to fill in",
-    "Tobereviewedbytheprojectreviewer": "To be reviewed by the project reviewer"
+    "Tobereviewedbytheprojectreviewer": "await project reviewer review"
   },
   "export": {
     "dailyExport": "daily export",
@@ -353,15 +353,15 @@
   },
   "qing-xuan-ze-bu-men": "Please select a department",
   "ren-yuan": "personnel",
-  "Auditrecords": "Audit records",
+  "Auditrecords": "review records",
   "Batchrejected": "Bulk rejection",
   "Batchthrough": "batch pass",
   "workAttendance": "Attendance time",
-  "operation": "operate",
+  "operation": "operation",
   "reasonforyourdecisiontoreject": "Please enter the reason for your decision to reject",
-  "AuditTime": "Review time",
+  "AuditTime": "review time",
   "EmployeeDate": "employee/date",
-  "Reviewtheresults": "Audit results",
+  "Reviewtheresults": "review results",
   "details": "Details",
   "yourdecisiontorevoke": "Please enter the reason for your decision to withdraw",
   "enterapassrating": "Please enter a pass rating",
@@ -390,8 +390,8 @@
   "Apportionmentofpersonnelcosts": "Allocate staff costs for hours filled",
   "Spreadallpersonnelcosts": "Allocate all personnel costs",
   "ExportingtheAllocationData": "Export apportionment data",
-  "Itemno": "Item Number",
-  "Pleaseentertheprojectnumber": "Please enter item number",
+  "Itemno": "project number",
+  "Pleaseentertheprojectnumber": "Please enter project number",
   "Pleaseenteraprojectname": "Please enter a project name",
   "Allparticipants": "all participants",
   "Pleaseselectparticipants": "Please select a participant",
@@ -721,7 +721,7 @@
   "customersdata": "pieces of customer data",
   "makesuretodeletethisone": "Are you sure you want to delete this",
   "peaseselectmonth": "Please select a month",
-  "throughwithoneclick": "Pass all by one key",
+  "throughwithoneclick": "Pass all",
   "monany": "month",
   "confirmapprovalofpendingdataforalldepartmentsanddates": "Are you confirmed to pass pending data for all departments and dates?",
   "classificationmanagement": "Classification management",
@@ -812,7 +812,7 @@
   "chartY": "Chart Y axis:",
   "accordingtothecost": "show cost",
   "accordingtoworkinghours": "Show hours",
-  "projectclassification": "Types of section",
+  "projectclassification": "classification",
   "zhu-xiang-mu": "main project",
   "returnsuperior": "Return to the upper level",
   "timeReportExport": "Time report export",
@@ -1099,7 +1099,7 @@
   "newsuccess": "added successfully",
   "subdepartment": "Add a sub-department",
   "deletionofprofessionalcertificate": "Remove Professional Certificate",
-  "itemnumberkeyword": "Please enter item number keyword",
+  "itemnumberkeyword": "Please enter project number keyword",
   "listofitems": "project list",
   "paused": "Paused",
   "projectnamekeyword": "Please enter project name keyword",
@@ -1159,7 +1159,7 @@
   "head": "principal",
   "personnelproportion": "Relevant personnel and proportion",
   "professionalparticipants": "Set up professional participants",
-  "subprojectno": "sub-item number",
+  "subprojectno": "sub-project number",
   "baselinecostitemmanagement": "Project Baseline Cost Item Management",
   "modifysubproject": "Add/Modify sub-items",
   "hourscostwarning": "Labor cost warning",
@@ -1180,7 +1180,7 @@
   "mainProjectName": "main project name",
   "modifythemainproject": "Add/Modify Main Item",
   "projectLevelName": "Project level name",
-  "mainProjectNo": "main item number",
+  "mainProjectNo": "main project number",
   "modificationcostitem": "Add/Modify Cost Items",
   "modifyingtheprojectphase": "Add/Modify Project Phase",
   "projectStageName": "Project stage name",
@@ -1374,5 +1374,20 @@
   "xiabo": "dial time",
   "xiabochenggong": "dial down successfully",
   "yi": "already",
-  "yu": "Remain"
+  "yu": "Remain",
+  "bai-fen-bi": "percentage",
+  "baselinecost": "Baseline cost",
+  "calibrationdate": "Calibration date",
+  "contractamounttotalcost": "Profit = (Contract Amount - Total Cost)",
+  "contractamounttotalcostabd": "Profit Margin = (Contract Amount - Total Cost)/Contract Amount",
+  "deletethisrecord": "Are you sure you want to delete this record?",
+  "kuaizao": "Project Profit Snapshot",
+  "li-run-shuai": "Profit margin (%)",
+  "marginsB": "Profit margin B",
+  "profitratetrendchart": "Profit margin trend graph",
+  "quer": "confirm deletion",
+  "quxiao": "Cancel the operation",
+  "shan-chu-ji-lu": "Delete Record",
+  "wanttodeletefirst": "Please select the record to delete first",
+  "xuan-ze": "choose"
 }

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

@@ -1374,5 +1374,20 @@
   "xiabo": "下拨时间",
   "caozuo": "操作人员",
   "saoyixiang": "下拨成本至少一项不能为0",
-  "xiabochenggong": "下拨成功"
+  "xiabochenggong": "下拨成功",
+  "kuaizao": "项目利润快照",
+  "quxiao": "取消操作",
+  "quer": "确认删除",
+  "calibrationdate": "校准日期",
+  "contractamounttotalcost": "利润 = (合同金额 - 总成本)",
+  "contractamounttotalcostabd": "利润率 = (合同金额 - 总成本)/合同金额",
+  "marginsB": "利润率B",
+  "baselinecost": "基线成本",
+  "xuan-ze": "选择",
+  "shan-chu-ji-lu": "删除记录",
+  "wanttodeletefirst": "请先选择要删除的记录",
+  "deletethisrecord": "确定要删除该记录吗?",
+  "profitratetrendchart": "利润率趋势图",
+  "li-run-shuai": "利润率(%)",
+  "bai-fen-bi": "百分比"
 }

+ 4 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -400,6 +400,7 @@
                 <el-table-column prop="projectName" :label="$t('headerTop.projectName')" width="220"></el-table-column>
                 <el-table-column prop="degreeName" :label="user.timeType.customDegreeName" width="180" v-if="user.timeType.customDegreeActive == 1"></el-table-column>
                 <el-table-column prop="username" :label="$t('lable.name')" width="120"></el-table-column>
+                <el-table-column prop="jobNumber" :label="$t('Worknumber')" width="120"></el-table-column>
                 <el-table-column prop="departmentName" :label="$t('lable.department')" width="140"></el-table-column>
                 <el-table-column prop="createDate" :label="$t('screening.workingDate')" width="120"></el-table-column>
                 <el-table-column prop="workingTime" :label="$t('screening.workTime')+ '(h)'" width="100" align="right">
@@ -422,6 +423,7 @@
               <!-- 人员工时分配表 -->
             <el-table v-if="ins == 8" key="8" border :data="userWorkHoursList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
               <el-table-column prop="username" :label="$t('ren-yuan')" width="150"></el-table-column>
+              <el-table-column prop="jobNumber" :label="$t('Worknumber')" width="150"></el-table-column>
               <el-table-column prop="unPublic" :label="$t('ordinaryprojecthours')" min-width="160" align="right">
                 <template slot-scope="scope">
                   <span>{{scope.row.unPublic == null? 0 + 'h' : scope.row.unPublic.toFixed(1) + 'h'}}</span>
@@ -493,6 +495,7 @@
             <!-- 员工填报及时率 -->
             <el-table v-if="ins == 9" key="9" border :data="reportTimelyList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
                 <el-table-column prop="userName" :label="$t('ren-yuan')" min-width="200" align="center"></el-table-column>
+                <el-table-column prop="jobNumber" :label="$t('Worknumber')" min-width="200" align="center"></el-table-column>
                 <el-table-column prop="departmentName" :label="$t('subordinatedepartments')" min-width="200" align="center"></el-table-column>
                 <el-table-column prop="timelinessRate" :label="$t('timelyreportingrate')" min-width="200" align="center">
                   <template slot-scope="scope">
@@ -517,6 +520,7 @@
             <!-- 人员工时统计表 -->
             <el-table v-if="ins == 11" key="11" border :data="personnelList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
                 <el-table-column prop="name" :label="$t('lable.name')" min-width="200" align="center"></el-table-column>
+                <el-table-column prop="jobNumber" :label="$t('Worknumber')" min-width="200" align="center"></el-table-column>
                 <el-table-column prop="departmentName" :label="$t('lable.department')" min-width="200" align="center"></el-table-column>
                 <el-table-column prop="planHours" :label="$t('plantime')" min-width="200" align="center">
                   <template slot-scope="scope">

+ 41 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -208,6 +208,9 @@
                 <span style="color: #606266">{{ $t('message.period') }}</span>
                 <el-date-picker v-model="createDate" type="daterange" :range-separator="$t('other.to')" :start-placeholder="$t('time.startDate')" :end-placeholder="$t('time.endDate')" @change="chufas()" value-format="yyyy-MM-dd" :placeholder="$t('optiondate')" size="small" clearable style="width:280px"></el-date-picker>
             </div>
+            <div>
+              <el-button type="primary" size="small" style="margin-left:20px" @click="exportLeave()">导出请假单</el-button>
+            </div>
           </div>
             <el-table v-loading="loading" :data="tableData" style="width: 100%" height="94%">
                 <el-table-column prop="ownerName" :label="$t('leavepeople')" min-width="120" fixed="left"></el-table-column>
@@ -838,6 +841,44 @@ export default {
   },
   filters: {},
   methods: {
+    // 导出请假单
+    exportLeave(){
+      let param = {}
+      if(this.code !== ''){
+        param.status = this.code
+      }
+      if(this.type !== ''){
+        param.leaveType = this.type
+      }
+      if(this.createDate && this.createDate.length){
+        param.startTime = this.createDate[0]
+        param.endTime = this.createDate[1]
+      }
+      // console.log(this.code,this.type,param);
+      // return
+      this.http.post('/leave-sheet/exportLeave',param,
+      res => {
+        if(res.code == 'ok'){
+          var filePath = res.data;
+          const a = document.createElement('a'); // 创建a标签
+          a.setAttribute('download', '请假单');// download属性
+          a.setAttribute('href', filePath);// href链接
+          a.click(); //自执行点击事件
+          a.remove();
+        }else{
+          this.$message({
+            message: res.msg,
+            type: 'error'
+          })
+        }
+      },err => {
+        this.$message({
+          message: err,
+          type: 'error'
+        })
+      })
+    },
+
     // 从钉钉同步假期剩余表
     listSynchronize(){
       this.synchronizeLoading = true

+ 27 - 27
fhKeeper/formulahousekeeper/timesheet/src/views/project/earning.vue

@@ -5,15 +5,15 @@
             <el-col :span="24">    
             <div class="box" style="height:650px;">
                 <div >
-                    <div class="lableTxt">项目利润快照<el-button type="default" size="small" style="float:right;margin-left:10px;" @click="cancelDelete" v-if="deleteTxt == '确认删除'">取消操作</el-button><el-button type="default" size="small" style="float:right;" @click="showDeleteBox">{{deleteTxt}}</el-button></div>
+                    <div class="lableTxt">{{ $t('kuaizao') }}<el-button type="default" size="small" style="float:right;margin-left:10px;" @click="cancelDelete" v-if="deleteTxt == $t('quer')">{{ $t('quxiao') }}</el-button><el-button type="default" size="small" style="float:right;" @click="showDeleteBox">{{deleteTxt}}</el-button></div>
                     <el-divider></el-divider>
                     <!--利润率列表-->
                     <el-table :data="list" highlight-current-row v-loading="listLoading" max-height="300" :height="300" style="width: 100%;" @selection-change="handleSelectionChange">
-                        <el-table-column prop="indate" label="校准日期"  ></el-table-column>
+                        <el-table-column prop="indate" :label="$t('calibrationdate')"  ></el-table-column>
                         <el-table-column prop="profit" align="right" >
                             <template slot="header">
-                               <span>利润</span>
-                               <el-popover placement="top" width="200" trigger="hover" content="利润 = (合同金额 - 总成本)">
+                               <span>{{ $t('profits') }}</span>
+                               <el-popover placement="top" width="200" trigger="hover" :content="$t('contractamounttotalcost')">
                                    <i class="el-icon-question" slot="reference" />
                                </el-popover>
                             </template>
@@ -21,10 +21,10 @@
                                ¥{{scope.row.profit | numberToCurrency}}
                             </template>
                         </el-table-column>
-                        <el-table-column prop="profitPercent" label="利润率B"  align="right">
+                        <el-table-column prop="profitPercent" :label="$t('marginsB')"  align="right">
                             <template slot="header">
-                               <span>利润率</span>
-                               <el-popover placement="top" width="350" trigger="hover" content="利润率 = (合同金额 - 总成本)/合同金额">
+                               <span>{{ $t('profitmargin') }}</span>
+                               <el-popover placement="top" width="350" trigger="hover" :content="$t('contractamounttotalcostabd')">
                                    <i class="el-icon-question" slot="reference" />
                                </el-popover>
                             </template>
@@ -33,12 +33,12 @@
                             </template>
                         </el-table-column>
                         
-                        <el-table-column prop="contractAmount" label="合同金额" width="150" align="right">
+                        <el-table-column prop="contractAmount" :label="$t('contractamount')" width="150" align="right">
                             <template slot-scope="scope">
                                <span >¥{{scope.row.contractAmount | numberToCurrency}}</span>
                             </template>
                         </el-table-column>
-                        <el-table-column label="基线成本" align="center">
+                        <el-table-column :label="$t('baselinecost')" align="center">
                             <el-table-column v-for="item in costFields" :prop="contractAmount" :label="item.baseName" :key="item.id" align="right">
                                 <template slot-scope="scope">
                                     <span v-if="scope.row.costList.filter(c=>c.baseId == item.baseId)[0]">
@@ -76,7 +76,7 @@
                             
                             
                         </el-table-column>
-                        <el-table-column  label="备注"  prop="remark">
+                        <el-table-column  :label="$t('bei-zhu')"  prop="remark">
                             <template slot-scope="scope">
                                 
                                     <div style="font-size:10px;overflow:hidden;width:100px;height:25px;">
@@ -87,7 +87,7 @@
                                 
                             </template>
                         </el-table-column>
-                        <el-table-column  label="选择" width="55" type="selection" v-if="deleteTxt == '确认删除'">
+                        <el-table-column  :label="$t('xuan-ze')" width="55" type="selection" v-if="deleteTxt == $t('quer')">
                                 
                         </el-table-column>
                     </el-table>
@@ -138,7 +138,7 @@
             return {
                 costFields:[],
                 selectionArray:[],
-                deleteTxt:"删除记录",
+                deleteTxt:this.$t('shan-chu-ji-lu'),
                 yList3:[],
                 yList2:[],
                 yList1:[],
@@ -148,11 +148,11 @@
                 pVisible:false,
                 taskSum:{},
                 users:[],
-                importanceList:[{id:1,label:'一般'},{id:2,label:'紧急'},{id:3,label:'重要'},{id:4,label:'重要且紧急'}],
+                importanceList:[{id:1,label:this.$t('yi-ban')},{id:2,label:this.$t('jin-ji')},{id:3,label:this.$t('zhong-yao')},{id:4,label:this.$t('zhong-yao-qie-jin-ji')}],
                 //1-一般,2-紧急,3-重要,4-重要且紧急
-                levelTxt:["全部","一般","紧急","重要","重要且紧急"],
+                levelTxt:[this.$t('all'),this.$t('yi-ban'),this.$t('jin-ji'),this.$t('zhong-yao'),this.$t('zhong-yao-qie-jin-ji')],
                 //1-进行中,2-已完成,3-已撤销
-                statusTxt: ["全部","进行中","已完成","已撤销"],
+                statusTxt: [this.$t('all'),this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone')],
                 addFolderDialog: false,
                 upLoading:false,
                 user: JSON.parse(sessionStorage.getItem("user")),
@@ -184,30 +184,30 @@
                 console.log(this.selectionArray);
             },
             cancelDelete() {
-                this.deleteTxt = "删除记录";
+                this.deleteTxt = this.$t('shan-chu-ji-lu');
             },
             showDeleteBox() {
-                if (this.deleteTxt == '删除记录') {
-                    this.deleteTxt = "确认删除";
+                if (this.deleteTxt == this.$t('shan-chu-ji-lu')) {
+                    this.deleteTxt = this.$t('quer');
                 } else {
                     if (this.selectionArray.length == 0) {
                         this.$message({
-                            message: '请先选择要删除的记录',
+                            message: this.$t('wanttodeletefirst'),
                             type: "error"
                         });
                         return;
                     }
                     
-                    this.$confirm("确定要删除该记录吗吗?","删除记录", {
-                        confirmButtonText: "确定",
-                        cancelButtonText: "取消",
+                    this.$confirm(this.$t('deletethisrecord'),this.$t('shan-chu-ji-lu'), {
+                        confirmButtonText: this.$t('btn.determine'),
+                        cancelButtonText: this.$t('btn.cancel'),
                         type: "warning"
                     })
                     .then(() => {
                         //调接口删除
                         this.listLoading = true;
                         var ids = '';
-                        this.deleteTxt = "删除记录";
+                        this.deleteTxt = this.$t('shan-chu-ji-lu');
                         for (var i=0;i<this.selectionArray.length; i++) {
                             ids += this.selectionArray[i].id+',';
                         }
@@ -265,7 +265,7 @@
                                     fontSize: 18,
                                     fontWeight: 'normal',
                                  },
-                              text: list.length == 0?"暂无数据":"利润率趋势图",
+                              text: list.length == 0?this.$t('nodata'):this.$t('profitratetrendchart'),
                               left: list.length == 0?"center":"left",
                               top: list.length == 0?"center":"left"
                             },
@@ -281,7 +281,7 @@
                                trigger: 'axis'
                             },
                             legend: {
-                                data: ['利润率(%)']
+                                data: [this.$t('li-run-shuai')]
                             },
                             grid: {
                                 left: '3%',
@@ -299,9 +299,9 @@
                             },
                             series : [
                                 {
-                                    name: '利润率(%)',
+                                    name: this.$t('li-run-shuai'),
                                     type: 'line',
-                                    stack: '百分比',
+                                    stack: this.$t('bai-fen-bi'),
                                     data: this.yList1
                                 },
                                 

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

@@ -9,7 +9,7 @@
                 <el-form-item >
                     <!-- <div style="display: flex;align-items: center;height: 40px;"> -->
                     <div v-if="true" style="display: flex;align-items: center;height: 40px;">
-                    <el-input v-model="keyword" class="input-with-select" :placeholder="searchField == '1' ? $t('projectnamekeyword') : $t('itemnumberkeyword')" clearable="true" size="small">
+                    <el-input v-model="keyword" class="input-with-select" :placeholder="searchField == '1' ? $t('peaseenterthe') : $t('peaseenterthe')" clearable="true" size="small">
                         <el-select v-model="searchField" style="width:120px;"  slot="prepend" :placeholder="$t('defaultText.pleaseChoose')">
                             <el-option :label="$t('headerTop.projectName')" value=1 ></el-option>
                             <el-option :label="$t('Itemno')" value=2 ></el-option>
@@ -21,7 +21,7 @@
 
                 <el-form-item >
                     <span style="margin-left:5px;margin-right:5px;color:#606266;">{{ $t('state.states') }}</span>
-                    <el-select v-model="status" style="width:110px;" :placeholder="$t('defaultText.pleaseChoose')" @change="searchList" size="small">
+                    <el-select v-model="status" style="width:120px;" :placeholder="$t('defaultText.pleaseChoose')" @change="searchList" size="small">
                         <el-option :label="$t('all')" value=0 ></el-option>
                         <el-option :label="$t('ongoing')" value=1 ></el-option>
                         <el-option :label="$t('state.completed')" value=2 ></el-option>
@@ -39,7 +39,7 @@
                 <!-- 分类筛选 -->
                 <el-form-item >
                     <span style="margin-left:5px;margin-right:5px;color:#606266;">{{ $t('fen-lei') }}</span>
-                    <el-select v-model="statusClf" style="width:110px;"  :placeholder="$t('defaultText.pleaseChoose')" clearable @change="searchClfList" size="small">
+                    <el-select v-model="statusClf" style="width:140px;"  :placeholder="$t('defaultText.pleaseChoose')" clearable @change="searchClfList" size="small">
                         <el-option v-for="item in baseClfList" :key="item.id" :label="item.name" :value="item.id" ></el-option>
                     </el-select>
                 </el-form-item>
@@ -183,7 +183,7 @@
                      </div>
                 </template>
             </el-table-column> -->
-            <el-table-column prop="categoryName" :label="$t('projectclassification')" sortable="custom" width="120"></el-table-column>
+            <el-table-column prop="categoryName" :label="$t('projectclassification')" sortable="custom" width="140"></el-table-column>
             <el-table-column prop="projectName" :label="$t('headerTop.projectName')" width="250" sortable="custom">
                  <template slot-scope="scope">
                      <el-popover placement="top" width="400" trigger="hover" v-if="scope.row.projectName.length > 15">

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

@@ -1832,7 +1832,7 @@
                 domain.groupId=null;
                 this.http.post('/task-group/listMyJoinGroup',{ 
                     projectId: domain.projectId,
-                    isSubstitude: this.isBatch == 2 ? 1 : 0
+                    isSubstitude: this.isSubstitude ? 1 : 0
                 },
                 res => {
                     if (res.code == "ok") {

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/list.vue

@@ -4,7 +4,7 @@
         <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
             <el-form :inline="true">
                 <el-form-item :label="$t('lable.department')" style="width: 165px">
-                    <el-cascader v-model="search.departmentIdArray" :placeholder="$t('qing-xuan-ze-bu-men')" style="width: 125px"
+                    <el-cascader v-model="search.departmentIdArray" :placeholder="$t('defaultText.pleaseChoose')" style="width: 125px"
                     :options="option" :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable
                     @change="getList(1)" size="mini"
                     ></el-cascader>

+ 6 - 2
fhKeeper/formulahousekeeper/timesheet_h5/public/index.html

@@ -5,7 +5,8 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> -->
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico"> -->
+    <link rel="shortcut icon" type="image/x-icon" href="./favicon.ico"/>
     <title>工时管家</title>
     <link rel="stylesheet" href="https://at.alicdn.com/t/font_1456778_1mgn5degp7t.css">
     <!-- <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js"></script> -->
@@ -15,7 +16,8 @@
     <script src="./axios.min.js"></script> 
     <script>
         console.log('我被触发了')
-        window.onerror = function() {
+        window.onerror = function(err) {
+            console.log('触发了没',err)
             console.log('出现脚本错误')
             return true
         }
@@ -28,6 +30,7 @@
     if (isProductEnv) {    !(function(c,i,e,b){var h=i.createElement("script");var f=i.getElementsByTagName("script")[0];h.type="text/javascript";h.crossorigin=true;h.onload=function(){c[b]||(c[b]=new c.wpkReporter({bid:"dta_2_71020"}));c[b].installAll()};f.parentNode.insertBefore(h,f);h.src=e})(window,document,"https://g.alicdn.com/woodpeckerx/jssdk??wpkReporter.js","__wpk"); }</script>
 
     <script>
+        window.onload = function(){
         function IsPC() { 
             var userAgentInfo = navigator.userAgent;
             var Agents = ["Android", "iPhone",
@@ -60,6 +63,7 @@
                 location.href = 'http://mldworktime.ttkuaiban.com:9097/';
             }
         }
+        }
     </script>
 </head>